diff --git a/.changeset/smooth-planes-hammer.md b/.changeset/smooth-planes-hammer.md new file mode 100644 index 000000000..d06f9099c --- /dev/null +++ b/.changeset/smooth-planes-hammer.md @@ -0,0 +1,5 @@ +--- +'vite-plugin-kit-routes': patch +--- + +add array type for search params diff --git a/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts b/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts index 8ea028eca..2a05e079d 100644 --- a/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts +++ b/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts @@ -84,6 +84,9 @@ const PAGES = { '/sp': (sp?: Record) => { return `/sp${appendSp(sp)}` }, + '/spArray': (params: { ids: number[] }) => { + return `/spArray${appendSp({ ids: params.ids })}` + }, } /** @@ -179,7 +182,10 @@ const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = ( + sp?: Record, + prefix: '?' | '&' = '?', +) => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -275,6 +281,7 @@ export type KIT_ROUTES = { '/lay/root-layout': never '/lay/skip': never '/sp': never + '/spArray': never } SERVERS: { 'GET /server_func_get': never @@ -304,6 +311,7 @@ export type KIT_ROUTES = { siteId: never contractId: never rest: never + ids: never locale: never redirectTo: never extra: never diff --git a/packages/vite-plugin-kit-routes/src/lib/format.ts b/packages/vite-plugin-kit-routes/src/lib/format.ts index 8d5d4db13..f60893eb8 100644 --- a/packages/vite-plugin-kit-routes/src/lib/format.ts +++ b/packages/vite-plugin-kit-routes/src/lib/format.ts @@ -22,7 +22,7 @@ export const format = (margin: { left?: number; top?: number; bottom?: number }, export const appendSp = `/** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) diff --git a/packages/vite-plugin-kit-routes/src/lib/plugins.spec.ts b/packages/vite-plugin-kit-routes/src/lib/plugins.spec.ts index cca33a519..c2d26ca1b 100644 --- a/packages/vite-plugin-kit-routes/src/lib/plugins.spec.ts +++ b/packages/vite-plugin-kit-routes/src/lib/plugins.spec.ts @@ -349,6 +349,11 @@ describe('run()', async () => { site_contract_siteId_contractId: { explicit_search_params: { limit: { type: 'number' } }, }, + spArray: { + explicit_search_params: { + ids: { type: 'number[]', required: true }, + }, + }, }, SERVERS: {}, ACTIONS: { @@ -824,6 +829,7 @@ describe('rmv Helper', () => { "lay/+layout.svelte", "page_server_woAction/+page.server.ts", "sp/+page.svelte", + "spArray/+page.svelte", ] `) }) @@ -870,6 +876,7 @@ describe('rmv Helper', () => { "lay/+layout.svelte", "page_server_woAction/+page.server.ts", "sp/+page.svelte", + "spArray/+page.svelte", ] `) @@ -909,6 +916,7 @@ describe('rmv Helper', () => { "lay/+layout.svelte", "page_server_woAction/+page.server.ts", "sp/+page.svelte", + "spArray/+page.svelte", ] `) }) @@ -951,6 +959,7 @@ describe('rmv Helper', () => { "lay/+layout.svelte", "page_server_woAction/+page.server.ts", "sp/+page.svelte", + "spArray/+page.svelte", ] `) }) diff --git a/packages/vite-plugin-kit-routes/src/routes/+layout.svelte b/packages/vite-plugin-kit-routes/src/routes/+layout.svelte index 3d1579c52..19123b180 100644 --- a/packages/vite-plugin-kit-routes/src/routes/+layout.svelte +++ b/packages/vite-plugin-kit-routes/src/routes/+layout.svelte @@ -82,7 +82,8 @@ Layout Skip
  • - Search Params + Search Params | + Search Params (Array)
  • diff --git a/packages/vite-plugin-kit-routes/src/routes/spArray/+page.svelte b/packages/vite-plugin-kit-routes/src/routes/spArray/+page.svelte new file mode 100644 index 000000000..915f78ceb --- /dev/null +++ b/packages/vite-plugin-kit-routes/src/routes/spArray/+page.svelte @@ -0,0 +1,13 @@ + + +

    Search Params (Array)

    + +
    {ids}
    diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_base.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_base.ts index 039335ff3..2dc60732c 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_base.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_base.ts @@ -50,7 +50,8 @@ const PAGES = { "/lay/normal": `${base}/lay/normal`, "/lay/root-layout": `${base}/lay/root-layout`, "/lay/skip": `${base}/lay/skip`, - "/sp": `${base}/sp` + "/sp": `${base}/sp`, + "/spArray": `${base}/spArray` } /** @@ -109,7 +110,7 @@ const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -182,7 +183,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'id' | 'lang', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never } + PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'id' | 'lang', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never } SERVERS: { 'GET /server_func_get': never, 'POST /server_func_post': never, 'GET /contract': 'lang', 'POST /contract': 'lang', 'GET /site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /contract/[id]': 'id' | 'lang', 'create /site': 'lang', 'update /site/[id]': 'id' | 'lang', 'delete /site/[id]': 'id' | 'lang', 'noSatisfies /site_contract': 'lang', 'send /site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang' } LINKS: Record diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-path.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-path.ts index ed6588f00..b7375bf3e 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-path.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-path.ts @@ -54,7 +54,8 @@ export const PAGES = { "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, - "/sp": `/sp` + "/sp": `/sp`, + "/spArray": `/spArray` } /** @@ -122,7 +123,7 @@ export const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -168,7 +169,7 @@ export const currentSp = () => { * ``` */ export type KIT_ROUTES = { - PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never } + PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never } SERVERS: { 'GET /server_func_get': never, 'POST /server_func_post': never, 'GET /contract': 'lang', 'POST /contract': 'lang', 'GET /site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /contract/[id]': 'id' | 'lang', 'create /site': 'lang', 'update /site/[id]': 'id' | 'lang', 'delete /site/[id]': 'id' | 'lang', 'noSatisfies /site_contract': 'lang', 'send /site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-path_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-path_shortened.ts index 543ce5aec..65dcdb8bd 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-path_shortened.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-path_shortened.ts @@ -54,7 +54,8 @@ export const PAGES = { "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, - "/sp": `/sp` + "/sp": `/sp`, + "/spArray": `/spArray` } /** @@ -123,7 +124,7 @@ export const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -169,7 +170,7 @@ export const currentSp = () => { * ``` */ export type KIT_ROUTES = { - PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'lang' | 'id', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'lang' | 'id', '/match/[id=int]': 'lang' | 'id', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never } + PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'lang' | 'id', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'lang' | 'id', '/match/[id=int]': 'lang' | 'id', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never } SERVERS: { 'GET /server_func_get': never, 'POST /server_func_post': never, 'GET /contract': 'lang', 'POST /contract': 'lang', 'GET /site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /contract/[id]': 'lang' | 'id', 'create /site': 'lang', 'update /site/[id]': 'lang' | 'id', 'delete /site/[id]': 'lang' | 'id', 'noSatisfies /site_contract': 'lang', 'send /site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-symbol.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-symbol.ts index 93bd9d370..d2ab016d2 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-symbol.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-symbol.ts @@ -54,7 +54,10 @@ export const PAGES = { "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, - "sp": `/sp` + "sp": `/sp`, + "spArray": (params: { ids: (number[]) }) => { + return `/spArray${appendSp({ ids: params.ids })}` + } } /** @@ -122,7 +125,7 @@ export const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -168,9 +171,9 @@ export const currentSp = () => { * ``` */ export type KIT_ROUTES = { - PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'id' | 'lang', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'id' | 'lang', 'match_id_int': 'id' | 'lang', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never } + PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'id' | 'lang', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'id' | 'lang', 'match_id_int': 'id' | 'lang', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never } SERVERS: { 'GET_server_func_get': never, 'POST_server_func_post': never, 'GET_contract': 'lang', 'POST_contract': 'lang', 'GET_site': 'lang', 'GET_api_graphql': never, 'POST_api_graphql': never, 'GET_data_errors_locale_json': 'locale' } ACTIONS: { 'default_contract_id': 'id' | 'lang', 'create_site': 'lang', 'update_site_id': 'id' | 'lang', 'delete_site_id': 'id' | 'lang', 'noSatisfies_site_contract': 'lang', 'send_site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } - Params: { first: never, lang: never, id: never, limit: never, demo: never, siteId: never, contractId: never, rest: never, locale: never, extra: never, name: never, str: never, s: never, d: never } + Params: { first: never, lang: never, id: never, limit: never, demo: never, siteId: never, contractId: never, rest: never, ids: never, locale: never, extra: never, name: never, str: never, s: never, d: never } } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-symbol_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-symbol_shortened.ts index c3b80c1c0..65356d1e7 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-symbol_shortened.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-symbol_shortened.ts @@ -54,7 +54,10 @@ export const PAGES = { "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, - "sp": `/sp` + "sp": `/sp`, + "spArray": (ids: (number[]), params?: { }) => { + return `/spArray${appendSp({ ids })}` + } } /** @@ -123,7 +126,7 @@ export const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -169,9 +172,9 @@ export const currentSp = () => { * ``` */ export type KIT_ROUTES = { - PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'lang' | 'id', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'lang' | 'id', 'match_id_int': 'lang' | 'id', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never } + PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'lang' | 'id', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'lang' | 'id', 'match_id_int': 'lang' | 'id', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never } SERVERS: { 'GET_server_func_get': never, 'POST_server_func_post': never, 'GET_contract': 'lang', 'POST_contract': 'lang', 'GET_site': 'lang', 'GET_api_graphql': never, 'POST_api_graphql': never, 'GET_data_errors_locale_json': 'locale' } ACTIONS: { 'default_contract_id': 'lang' | 'id', 'create_site': 'lang', 'update_site_id': 'lang' | 'id', 'delete_site_id': 'lang' | 'id', 'noSatisfies_site_contract': 'lang', 'send_site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } - Params: { first: never, lang: never, id: never, limit: never, demo: never, siteId: never, contractId: never, rest: never, locale: never, extra: never, name: never, str: never, s: never, d: never } + Params: { first: never, lang: never, id: never, limit: never, demo: never, siteId: never, contractId: never, rest: never, ids: never, locale: never, extra: never, name: never, str: never, s: never, d: never } } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-path.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-path.ts index 412598de2..8b8c7d291 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-path.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-path.ts @@ -54,7 +54,8 @@ export const PAGES = { "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, - "/sp": `/sp` + "/sp": `/sp`, + "/spArray": `/spArray` } /** @@ -122,7 +123,7 @@ export const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -195,7 +196,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never } + PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never } SERVERS: { 'GET /server_func_get': never, 'POST /server_func_post': never, 'GET /contract': 'lang', 'POST /contract': 'lang', 'GET /site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /contract/[id]': 'id' | 'lang', 'create /site': 'lang', 'update /site/[id]': 'id' | 'lang', 'delete /site/[id]': 'id' | 'lang', 'noSatisfies /site_contract': 'lang', 'send /site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-path_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-path_shortened.ts index 8e937489b..adac676f2 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-path_shortened.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-path_shortened.ts @@ -54,7 +54,8 @@ export const PAGES = { "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, - "/sp": `/sp` + "/sp": `/sp`, + "/spArray": `/spArray` } /** @@ -123,7 +124,7 @@ export const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -196,7 +197,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'lang' | 'id', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'lang' | 'id', '/match/[id=int]': 'lang' | 'id', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never } + PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'lang' | 'id', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'lang' | 'id', '/match/[id=int]': 'lang' | 'id', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never } SERVERS: { 'GET /server_func_get': never, 'POST /server_func_post': never, 'GET /contract': 'lang', 'POST /contract': 'lang', 'GET /site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /contract/[id]': 'lang' | 'id', 'create /site': 'lang', 'update /site/[id]': 'lang' | 'id', 'delete /site/[id]': 'lang' | 'id', 'noSatisfies /site_contract': 'lang', 'send /site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-symbol.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-symbol.ts index b03bbe9d2..1cc57fc47 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-symbol.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-symbol.ts @@ -54,7 +54,8 @@ export const PAGES = { "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, - "sp": `/sp` + "sp": `/sp`, + "spArray": `/spArray` } /** @@ -122,7 +123,7 @@ export const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -195,7 +196,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'id' | 'lang', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'id' | 'lang', 'match_id_int': 'id' | 'lang', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never } + PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'id' | 'lang', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'id' | 'lang', 'match_id_int': 'id' | 'lang', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never } SERVERS: { 'GET server_func_get': never, 'POST server_func_post': never, 'GET contract': 'lang', 'POST contract': 'lang', 'GET site': 'lang', 'GET api_graphql': never, 'POST api_graphql': never, 'GET data_errors_locale_json': 'locale' } ACTIONS: { 'default contract_id': 'id' | 'lang', 'create site': 'lang', 'update site_id': 'id' | 'lang', 'delete site_id': 'id' | 'lang', 'noSatisfies site_contract': 'lang', 'send site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-symbol_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-symbol_shortened.ts index 7b5c8e54e..1c6f8b45a 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-symbol_shortened.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-symbol_shortened.ts @@ -54,7 +54,8 @@ export const PAGES = { "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, - "sp": `/sp` + "sp": `/sp`, + "spArray": `/spArray` } /** @@ -123,7 +124,7 @@ export const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -196,7 +197,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'lang' | 'id', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'lang' | 'id', 'match_id_int': 'lang' | 'id', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never } + PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'lang' | 'id', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'lang' | 'id', 'match_id_int': 'lang' | 'id', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never } SERVERS: { 'GET server_func_get': never, 'POST server_func_post': never, 'GET contract': 'lang', 'POST contract': 'lang', 'GET site': 'lang', 'GET api_graphql': never, 'POST api_graphql': never, 'GET data_errors_locale_json': 'locale' } ACTIONS: { 'default contract_id': 'lang' | 'id', 'create site': 'lang', 'update site_id': 'lang' | 'id', 'delete site_id': 'lang' | 'id', 'noSatisfies site_contract': 'lang', 'send site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path.ts index 71ee9f44b..fdb40486e 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path.ts @@ -54,7 +54,8 @@ const PAGES = { "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, - "/sp": `/sp` + "/sp": `/sp`, + "/spArray": `/spArray` } /** @@ -122,7 +123,7 @@ const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -195,7 +196,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never } + PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never } SERVERS: { 'GET /server_func_get': never, 'POST /server_func_post': never, 'GET /contract': 'lang', 'POST /contract': 'lang', 'GET /site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /contract/[id]': 'id' | 'lang', 'create /site': 'lang', 'update /site/[id]': 'id' | 'lang', 'delete /site/[id]': 'id' | 'lang', 'noSatisfies /site_contract': 'lang', 'send /site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path_shortened.ts index 1e1cedc4f..ec5719c22 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path_shortened.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path_shortened.ts @@ -54,7 +54,8 @@ const PAGES = { "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, - "/sp": `/sp` + "/sp": `/sp`, + "/spArray": `/spArray` } /** @@ -123,7 +124,7 @@ const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -196,7 +197,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'lang' | 'id', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'lang' | 'id', '/match/[id=int]': 'lang' | 'id', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never } + PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'lang' | 'id', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'lang' | 'id', '/match/[id=int]': 'lang' | 'id', '/site': 'lang', '/site/[id]': 'lang' | 'id', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never } SERVERS: { 'GET /server_func_get': never, 'POST /server_func_post': never, 'GET /contract': 'lang', 'POST /contract': 'lang', 'GET /site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /contract/[id]': 'lang' | 'id', 'create /site': 'lang', 'update /site/[id]': 'lang' | 'id', 'delete /site/[id]': 'lang' | 'id', 'noSatisfies /site_contract': 'lang', 'send /site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-symbol.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-symbol.ts index b7660fc74..ab4a48cf9 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-symbol.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-symbol.ts @@ -54,7 +54,8 @@ const PAGES = { "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, - "sp": `/sp` + "sp": `/sp`, + "spArray": `/spArray` } /** @@ -122,7 +123,7 @@ const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -195,7 +196,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'id' | 'lang', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'id' | 'lang', 'match_id_int': 'id' | 'lang', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never } + PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'id' | 'lang', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'id' | 'lang', 'match_id_int': 'id' | 'lang', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never } SERVERS: { 'GET server_func_get': never, 'POST server_func_post': never, 'GET contract': 'lang', 'POST contract': 'lang', 'GET site': 'lang', 'GET api_graphql': never, 'POST api_graphql': never, 'GET data_errors_locale_json': 'locale' } ACTIONS: { 'default contract_id': 'id' | 'lang', 'create site': 'lang', 'update site_id': 'id' | 'lang', 'delete site_id': 'id' | 'lang', 'noSatisfies site_contract': 'lang', 'send site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-symbol_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-symbol_shortened.ts index 8edea5969..a0057bc54 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-symbol_shortened.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-symbol_shortened.ts @@ -54,7 +54,8 @@ const PAGES = { "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, - "sp": `/sp` + "sp": `/sp`, + "spArray": `/spArray` } /** @@ -123,7 +124,7 @@ const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -196,7 +197,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'lang' | 'id', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'lang' | 'id', 'match_id_int': 'lang' | 'id', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never } + PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'lang' | 'id', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'lang' | 'id', 'match_id_int': 'lang' | 'id', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never } SERVERS: { 'GET server_func_get': never, 'POST server_func_post': never, 'GET contract': 'lang', 'POST contract': 'lang', 'GET site': 'lang', 'GET api_graphql': never, 'POST api_graphql': never, 'GET data_errors_locale_json': 'locale' } ACTIONS: { 'default contract_id': 'lang' | 'id', 'create site': 'lang', 'update site_id': 'lang' | 'id', 'delete site_id': 'lang' | 'id', 'noSatisfies site_contract': 'lang', 'send site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables.ts index cfbd831db..9f86fb6d8 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables.ts @@ -54,6 +54,9 @@ export const PAGE_lay_normal = `/lay/normal` export const PAGE_lay_root_layout = `/lay/root-layout` export const PAGE_lay_skip = `/lay/skip` export const PAGE_sp = `/sp` +export const PAGE_spArray = (params: { ids: (number[]) }) => { + return `/spArray${appendSp({ ids: params.ids })}` +} /** * SERVERS @@ -114,7 +117,7 @@ export const LINK_gravatar = (params: { str: (string | number), s?: (number), d? /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -160,9 +163,9 @@ export const currentSp = () => { * ``` */ export type KIT_ROUTES = { - PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'id' | 'lang', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'id' | 'lang', 'match_id_int': 'id' | 'lang', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never } + PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'id' | 'lang', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'id' | 'lang', 'match_id_int': 'id' | 'lang', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never } SERVERS: { 'GET_server_func_get': never, 'POST_server_func_post': never, 'GET_contract': 'lang', 'POST_contract': 'lang', 'GET_site': 'lang', 'GET_api_graphql': never, 'POST_api_graphql': never, 'GET_data_errors_locale_json': 'locale' } ACTIONS: { 'default_contract_id': 'id' | 'lang', 'create_site': 'lang', 'update_site_id': 'id' | 'lang', 'delete_site_id': 'id' | 'lang', 'noSatisfies_site_contract': 'lang', 'send_site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } - Params: { first: never, lang: never, id: never, limit: never, demo: never, siteId: never, contractId: never, rest: never, locale: never, extra: never, name: never, str: never, s: never, d: never } + Params: { first: never, lang: never, id: never, limit: never, demo: never, siteId: never, contractId: never, rest: never, ids: never, locale: never, extra: never, name: never, str: never, s: never, d: never } } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables_shortened.ts index 3993886b7..6153d4ece 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables_shortened.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables_shortened.ts @@ -54,6 +54,9 @@ export const PAGE_lay_normal = `/lay/normal` export const PAGE_lay_root_layout = `/lay/root-layout` export const PAGE_lay_skip = `/lay/skip` export const PAGE_sp = `/sp` +export const PAGE_spArray = (ids: (number[]), params?: { }) => { + return `/spArray${appendSp({ ids })}` +} /** * SERVERS @@ -115,7 +118,7 @@ export const LINK_gravatar = (str: (string | number), params?: { s?: (number), d /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -161,9 +164,9 @@ export const currentSp = () => { * ``` */ export type KIT_ROUTES = { - PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'lang' | 'id', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'lang' | 'id', 'match_id_int': 'lang' | 'id', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never } + PAGES: { '_ROOT': never, 'subGroup': never, 'subGroup_user': never, 'subGroup2': never, 'contract': 'lang', 'contract_id': 'lang' | 'id', 'gp_one': 'lang', 'gp_two': 'lang', 'main': 'lang', 'match_id_ab': 'lang' | 'id', 'match_id_int': 'lang' | 'id', 'site': 'lang', 'site_id': 'lang' | 'id', 'site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang', 'a_rest_z': 'rest', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never } SERVERS: { 'GET_server_func_get': never, 'POST_server_func_post': never, 'GET_contract': 'lang', 'POST_contract': 'lang', 'GET_site': 'lang', 'GET_api_graphql': never, 'POST_api_graphql': never, 'GET_data_errors_locale_json': 'locale' } ACTIONS: { 'default_contract_id': 'lang' | 'id', 'create_site': 'lang', 'update_site_id': 'lang' | 'id', 'delete_site_id': 'lang' | 'id', 'noSatisfies_site_contract': 'lang', 'send_site_contract_siteId_contractId': 'siteId' | 'contractId' | 'lang' } LINKS: { 'twitter': never, 'twitter_post': 'name' | 'id', 'gravatar': 'str' } - Params: { first: never, lang: never, id: never, limit: never, demo: never, siteId: never, contractId: never, rest: never, locale: never, extra: never, name: never, str: never, s: never, d: never } + Params: { first: never, lang: never, id: never, limit: never, demo: never, siteId: never, contractId: never, rest: never, ids: never, locale: never, extra: never, name: never, str: never, s: never, d: never } } diff --git a/packages/vite-plugin-kit-routes/src/test/ROUTES_post-update.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_post-update.ts index eac6b94ea..cd3037993 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_post-update.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_post-update.ts @@ -49,7 +49,8 @@ const PAGES = { "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, - "/sp": `/sp` + "/sp": `/sp`, + "/spArray": `/spArray` } /** @@ -108,7 +109,7 @@ const LINKS = { /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { +const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { if (sp === undefined) return '' const mapping = Object.entries(sp) .filter(c => c[1] !== undefined) @@ -181,7 +182,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'id' | 'lang', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never } + PAGES: { '/': never, '/subGroup': never, '/subGroup/user': never, '/subGroup2': never, '/contract': 'lang', '/contract/[id]': 'id' | 'lang', '/gp/one': 'lang', '/gp/two': 'lang', '/main': 'lang', '/match/[id=ab]': 'id' | 'lang', '/match/[id=int]': 'id' | 'lang', '/site': 'lang', '/site/[id]': 'id' | 'lang', '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never } SERVERS: { 'GET /server_func_get': never, 'POST /server_func_post': never, 'GET /contract': 'lang', 'POST /contract': 'lang', 'GET /site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /contract/[id]': 'id' | 'lang', 'create /site': 'lang', 'update /site/[id]': 'id' | 'lang', 'delete /site/[id]': 'id' | 'lang', 'noSatisfies /site_contract': 'lang', 'send /site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang' } LINKS: Record diff --git a/packages/vite-plugin-kit-routes/vite.config.ts b/packages/vite-plugin-kit-routes/vite.config.ts index 930942597..05a370462 100644 --- a/packages/vite-plugin-kit-routes/vite.config.ts +++ b/packages/vite-plugin-kit-routes/vite.config.ts @@ -59,6 +59,11 @@ export default defineConfig({ '/site_contract/[siteId]-[contractId]': { explicit_search_params: { limit: { type: 'number' } }, }, + '/spArray': { + explicit_search_params: { + ids: { type: 'number[]', required: true }, + }, + }, }, SERVERS: { // site: {