Skip to content

Commit 779ac24

Browse files
committed
feat: rename package and streamline docs
1 parent 817f92e commit 779ac24

File tree

8 files changed

+393
-643
lines changed

8 files changed

+393
-643
lines changed

README.md

Lines changed: 21 additions & 328 deletions
Large diffs are not rendered by default.

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Supported versions
44

5-
At this stage, only the latest published version of `@formforge/client` is considered supported for security fixes.
5+
At this stage, only the latest published version of `@evanschleret/formforgeclient` is considered supported for security fixes.
66

77
## Reporting a vulnerability
88

bun.lock

Lines changed: 322 additions & 306 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "@formforge/client",
2+
"name": "@evanschleret/formforgeclient",
33
"version": "0.1.0",
44
"description": "Nuxt module and runtime client for FormForge",
55
"license": "MIT",
@@ -31,7 +31,7 @@
3131
"test": "vitest run"
3232
},
3333
"peerDependencies": {
34-
"@nuxt/ui": "^4.0.0",
34+
"@nuxt/ui": "^4.6.0",
3535
"nuxt": "^4.0.0"
3636
},
3737
"dependencies": {

src/module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export interface ModuleOptions {
2323

2424
export default defineNuxtModule<ModuleOptions>({
2525
meta: {
26-
name: '@formforge/client',
26+
name: '@evanschleret/formforgeclient',
2727
configKey: 'formforgeClient',
2828
compatibility: {
2929
nuxt: '>=4.0.0'
@@ -107,7 +107,7 @@ export default defineNuxtModule<ModuleOptions>({
107107
const typeTemplate = addTypeTemplate({
108108
filename: 'types/formforge-client.d.ts',
109109
getContents: () => `
110-
import type { FormForgeBeforeRequestContext, FormForgeClient } from '@formforge/client/runtime'
110+
import type { FormForgeBeforeRequestContext, FormForgeClient } from '@evanschleret/formforgeclient/runtime'
111111
112112
declare module '#app' {
113113
interface NuxtApp {

src/runtime/api/management.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ export interface FormForgeMutationOptions extends FormForgeRequestOptions {
1616
idempotencyKey?: string
1717
}
1818

19-
export type FormForgeManagementRequestOptions = FormForgeRequestOptions
19+
export type FormForgeManagementFilterValue = string | number | boolean | undefined
20+
export type FormForgeManagementFilters = Record<string, FormForgeManagementFilterValue>
21+
22+
export interface FormForgeManagementRequestOptions extends FormForgeRequestOptions {
23+
filters?: FormForgeManagementFilters
24+
}
2025

2126
function normalizeManagementForm(value: unknown): FormForgeManagementForm | null {
2227
if (!isFormForgeJsonObject(value as FormForgeJsonValue | null | undefined)) {
@@ -119,10 +124,13 @@ export async function fetchFormForgeForms(
119124
includeDeleted: boolean = false,
120125
options: FormForgeManagementRequestOptions = {}
121126
): Promise<FormForgeManagementForm[]> {
127+
const filters: FormForgeManagementFilters = options.filters ?? {}
128+
122129
const response = await http<FormForgeJsonObject>({
123130
path: resolveEndpointPath(options.endpoint, '/forms', {}, options.scope),
124131
method: 'GET',
125132
query: {
133+
...filters,
126134
include_deleted: includeDeleted ? 1 : 0
127135
}
128136
})

src/runtime/composables/useFormForgeManagement.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { computed, ref } from '#imports'
22
import { useFormForgeClient } from './useFormForgeClient'
3-
import type { FormForgeManagementRequestOptions, FormForgeMutationOptions } from '../api/management'
3+
import type { FormForgeManagementFilters, FormForgeManagementRequestOptions, FormForgeMutationOptions } from '../api/management'
44
import type {
55
FormForgeBusinessErrorCode,
66
FormForgeClient,
@@ -47,6 +47,7 @@ export function useFormForgeManagement(options: UseFormForgeManagementOptions =
4747
const lastListIncludeDeleted = ref<boolean>(false)
4848
const lastListEndpoint = ref<string | undefined>(options.endpoint)
4949
const lastListScope = ref<FormForgeScope | undefined>(options.scope)
50+
const lastListFilters = ref<FormForgeManagementFilters>({})
5051
const fieldErrors = computed<Record<string, string[]>>(() => clientError.value?.fieldErrors ?? {})
5152
const businessErrorCode = computed<FormForgeBusinessErrorCode | undefined>(() => clientError.value?.businessCode)
5253
const hasCategoryValidationError = computed<boolean>(() => {
@@ -113,22 +114,26 @@ export function useFormForgeManagement(options: UseFormForgeManagementOptions =
113114
return withLoading(async () => {
114115
const endpoint = resolveRequestEndpoint(options.endpoint)
115116
const scope = resolveRequestScope(options.scope)
117+
const filters = options.filters ?? {}
116118
const response = await client.listForms(includeDeleted, {
117119
endpoint,
118-
scope
120+
scope,
121+
filters
119122
})
120123
forms.value = response
121124
lastListIncludeDeleted.value = includeDeleted
122125
lastListEndpoint.value = endpoint
123126
lastListScope.value = scope
127+
lastListFilters.value = filters
124128
return response
125129
})
126130
}
127131

128132
async function refreshForms(): Promise<FormForgeManagementForm[]> {
129133
return listForms(lastListIncludeDeleted.value, {
130134
endpoint: lastListEndpoint.value,
131-
scope: lastListScope.value
135+
scope: lastListScope.value,
136+
filters: lastListFilters.value
132137
})
133138
}
134139

@@ -199,6 +204,7 @@ export function useFormForgeManagement(options: UseFormForgeManagementOptions =
199204
lastListIncludeDeleted,
200205
lastListEndpoint,
201206
lastListScope,
207+
lastListFilters,
202208
listForms,
203209
refreshForms,
204210
refresh: refreshForms,

test/management-api.spec.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,33 @@ describe('fetchFormForgeForms', () => {
9696
expect(forms[0]?.category).toBe('events')
9797
expect(forms[0]?.category_item?.name).toBe('Events')
9898
})
99+
100+
it('forwards filters as query params', async () => {
101+
const requests: FormForgeHttpRequest[] = []
102+
103+
const http: FormForgeHttpAdapter = async <TData>(request: FormForgeHttpRequest) => {
104+
requests.push(request)
105+
106+
return {
107+
status: 200,
108+
headers: new Headers(),
109+
data: {
110+
data: []
111+
} as TData
112+
}
113+
}
114+
115+
await fetchFormForgeForms(http, false, {
116+
filters: {
117+
category: 'survey',
118+
search: 'contact'
119+
}
120+
})
121+
122+
expect(requests[0]?.query?.category).toBe('survey')
123+
expect(requests[0]?.query?.search).toBe('contact')
124+
expect(requests[0]?.query?.include_deleted).toBe(0)
125+
})
99126
})
100127

101128
describe('form create/patch category support', () => {

0 commit comments

Comments
 (0)