From a84566e7c3c0b9d9be24e2faf2bd9c987c5db48d Mon Sep 17 00:00:00 2001 From: "jyc.dev" Date: Sun, 19 Jan 2025 23:02:16 +0100 Subject: [PATCH] :bug: FIX: hash url with param & without searchParam (#840) --- .changeset/gold-houses-mix.md | 5 +++++ packages/vite-plugin-kit-routes/src/lib/ROUTES.ts | 9 ++++++++- packages/vite-plugin-kit-routes/src/lib/format.ts | 2 +- .../vite-plugin-kit-routes/src/lib/plugins.spec.ts | 11 +++++++++++ .../src/routes/+layout.svelte | 7 ++++++- .../src/routes/anchors/[id]/+page.svelte | 1 + .../vite-plugin-kit-routes/src/test/ROUTES_base.ts | 7 +++++-- .../src/test/ROUTES_format-object-path.ts | 7 +++++-- .../src/test/ROUTES_format-object-path_shortened.ts | 7 +++++-- .../src/test/ROUTES_format-object-symbol.ts | 7 +++++-- .../test/ROUTES_format-object-symbol_shortened.ts | 7 +++++-- .../src/test/ROUTES_format-route-and-object-path.ts | 7 +++++-- ...ROUTES_format-route-and-object-path_shortened.ts | 7 +++++-- .../test/ROUTES_format-route-and-object-symbol.ts | 13 +++++++++---- ...UTES_format-route-and-object-symbol_shortened.ts | 13 +++++++++---- .../test/ROUTES_format-route-path-page-route-id.ts | 7 +++++-- ...TES_format-route-path-page-route-id_shortened.ts | 7 +++++-- .../src/test/ROUTES_format-route-path.ts | 7 +++++-- .../src/test/ROUTES_format-route-path_shortened.ts | 7 +++++-- .../src/test/ROUTES_format-route-symbol.ts | 13 +++++++++---- .../test/ROUTES_format-route-symbol_shortened.ts | 13 +++++++++---- .../src/test/ROUTES_format-variables.ts | 7 +++++-- .../src/test/ROUTES_format-variables_shortened.ts | 7 +++++-- .../vite-plugin-kit-routes/src/test/ROUTES_hash.ts | 7 +++++-- .../src/test/ROUTES_post-update.ts | 7 +++++-- packages/vite-plugin-kit-routes/vite.config.ts | 3 +++ 26 files changed, 146 insertions(+), 49 deletions(-) create mode 100644 .changeset/gold-houses-mix.md create mode 100644 packages/vite-plugin-kit-routes/src/routes/anchors/[id]/+page.svelte diff --git a/.changeset/gold-houses-mix.md b/.changeset/gold-houses-mix.md new file mode 100644 index 00000000..ebe885d3 --- /dev/null +++ b/.changeset/gold-houses-mix.md @@ -0,0 +1,5 @@ +--- +'vite-plugin-kit-routes': patch +--- + +fix hash url with param & without searchParam diff --git a/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts b/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts index 8bf46541..dc5cd446 100644 --- a/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts +++ b/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts @@ -77,6 +77,12 @@ const PAGES = { params['hash'] = params['hash'] ?? 'section0' return `/anchors${appendSp({ anotherOne: params['anotherOne'], __KIT_ROUTES_ANCHOR__: params['hash'] })}` }, + '/anchors/[id]': (params: { + id: string | number + hash: 'section0' | 'section1' | 'section2' | 'section3' + }) => { + return `/anchors/${params['id']}${appendSp({ __KIT_ROUTES_ANCHOR__: params['hash'] })}` + }, '/lay/normal': `/lay/normal`, '/lay/root-layout': `/lay/root-layout`, '/lay/skip': `/lay/skip`, @@ -207,7 +213,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -299,6 +305,7 @@ export type KIT_ROUTES = { '/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang' '/a/[...rest]/z': 'rest' '/anchors': never + '/anchors/[id]': 'id' '/lay/normal': never '/lay/root-layout': never '/lay/skip': never diff --git a/packages/vite-plugin-kit-routes/src/lib/format.ts b/packages/vite-plugin-kit-routes/src/lib/format.ts index dcc7fd3e..23da06ab 100644 --- a/packages/vite-plugin-kit-routes/src/lib/format.ts +++ b/packages/vite-plugin-kit-routes/src/lib/format.ts @@ -54,7 +54,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return \`\${prefix}\${formatted}\${anchor}\` + return \`\${prefix}\${formatted}\${anchor}\`.replace('?#', '#') } return '' } 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 5f201b1c..378f97ed 100644 --- a/packages/vite-plugin-kit-routes/src/lib/plugins.spec.ts +++ b/packages/vite-plugin-kit-routes/src/lib/plugins.spec.ts @@ -373,6 +373,9 @@ describe('run()', async () => { required: true, }, }, + anchors_id: { + hash: { type: '"section0" | "section1" | "section2" | "section3"', required: true }, + }, }, SERVERS: {}, ACTIONS: { @@ -399,6 +402,7 @@ describe('run()', async () => { '/site_contract/[siteId]-[contractId]': commonConfig_variables.PAGES?.site_contract_siteId_contractId, '/anchors': commonConfig_variables.PAGES?.anchors, + '/anchors/[id]': commonConfig_variables.PAGES?.anchors_id, }, SERVERS: {}, ACTIONS: { @@ -418,6 +422,7 @@ describe('run()', async () => { '/[[lang]]/site_contract/[siteId]-[contractId]': commonConfig_variables.PAGES?.site_contract_siteId_contractId, '/anchors': commonConfig_variables.PAGES?.anchors, + '/anchors/[id]': commonConfig_variables.PAGES?.anchors_id, }, SERVERS: {}, ACTIONS: { @@ -436,6 +441,8 @@ describe('run()', async () => { match_id_int: commonConfig_variables.PAGES?.match_id_int, site_contract_siteId_contractId: commonConfig_variables.PAGES?.site_contract_siteId_contractId, + anchors: commonConfig_variables.PAGES?.anchors, + anchors_id: commonConfig_variables.PAGES?.anchors_id, }, SERVERS: {}, ACTIONS: { @@ -928,6 +935,7 @@ describe('rmv Helper', () => { "/site_contract/[siteId]-[contractId]/+page.svelte", "a/[...rest]/z/+page.svelte", "anchors/+page.svelte", + "anchors/[id]/+page.svelte", "api/graphql/+server.ts", "data/errors/[locale].json/+server.ts", "lay/(layVerySpecial)/+layout.svelte", @@ -978,6 +986,7 @@ describe('rmv Helper', () => { "[[lang]]/site_contract/[siteId]-[contractId]/+page.svelte", "a/[...rest]/z/+page.svelte", "anchors/+page.svelte", + "anchors/[id]/+page.svelte", "api/graphql/+server.ts", "data/errors/[locale].json/+server.ts", "lay/(layVerySpecial)/+layout.svelte", @@ -1021,6 +1030,7 @@ describe('rmv Helper', () => { "[[lang]]/site_contract/[siteId]-[contractId]/+page.svelte", "a/[...rest]/z/+page.svelte", "anchors/+page.svelte", + "anchors/[id]/+page.svelte", "api/graphql/+server.ts", "data/errors/[locale].json/+server.ts", "lay/+layout.svelte", @@ -1067,6 +1077,7 @@ describe('rmv Helper', () => { "/site_contract/[siteId]-[contractId]/+page.svelte", "a/[...rest]/z/+page.svelte", "anchors/+page.svelte", + "anchors/[id]/+page.svelte", "api/graphql/+server.ts", "data/errors/[locale].json/+server.ts", "lay/+layout.svelte", diff --git a/packages/vite-plugin-kit-routes/src/routes/+layout.svelte b/packages/vite-plugin-kit-routes/src/routes/+layout.svelte index 82f1b91e..c0493199 100644 --- a/packages/vite-plugin-kit-routes/src/routes/+layout.svelte +++ b/packages/vite-plugin-kit-routes/src/routes/+layout.svelte @@ -103,7 +103,12 @@ Unsafe Link
  • - Anchors + Anchors | + Anchors with second param + | + Anchors with second param
  • diff --git a/packages/vite-plugin-kit-routes/src/routes/anchors/[id]/+page.svelte b/packages/vite-plugin-kit-routes/src/routes/anchors/[id]/+page.svelte new file mode 100644 index 00000000..d053ec53 --- /dev/null +++ b/packages/vite-plugin-kit-routes/src/routes/anchors/[id]/+page.svelte @@ -0,0 +1 @@ +Plop from Anchors/[id] 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 0fdb9850..73e9cac9 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_base.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_base.ts @@ -48,6 +48,9 @@ const PAGES = { return `${base}/a/${params['rest']?.join('/')}/z` }, "/anchors": `${base}/anchors`, + "/anchors/[id]": (params: { id: (string | number) }) => { + return `${base}/anchors/${params['id']}` + }, "/lay/normal": `${base}/lay/normal`, "/lay/root-layout": `${base}/lay/root-layout`, "/lay/skip": `${base}/lay/skip`, @@ -145,7 +148,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -215,7 +218,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', '/anchors': never, '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': 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', '/anchors': never, '/anchors/[id]': 'id', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /server_func_get': never, 'GET /server_func_get_and_': 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 750db586..1cb5b5f1 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,6 +54,9 @@ export const PAGES = { "/anchors": (params: { hash: ("section0" | "section1" | "section2" | "section3") }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` }, + "/anchors/[id]": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, @@ -160,7 +163,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -198,7 +201,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', '/anchors': never, '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': 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', '/anchors': never, '/anchors/[id]': 'id', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /server_func_get': never, 'GET /server_func_get_and_': 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 4fe2b680..1dc907c6 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,6 +54,9 @@ export const PAGES = { "/anchors": (hash: ("section0" | "section1" | "section2" | "section3"), params?: { }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': hash })}` }, + "/anchors/[id]": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, @@ -161,7 +164,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -199,7 +202,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', '/anchors': never, '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': 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', '/anchors': never, '/anchors/[id]': 'id', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /server_func_get': never, 'GET /server_func_get_and_': 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 68ba77ed..cd128ff9 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,6 +54,9 @@ export const PAGES = { "anchors": (params: { hash: ("section0" | "section1" | "section2" | "section3") }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` }, + "anchors_id": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, @@ -164,7 +167,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -202,7 +205,7 @@ 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', 'anchors': never, 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': 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', 'anchors': never, 'anchors_id': 'id', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': never } SERVERS: { 'GET_server_func_get': never, 'GET_server_func_get_and': 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-symbol_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-object-symbol_shortened.ts index 9d597258..8ceba8a8 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,6 +54,9 @@ export const PAGES = { "anchors": (hash: ("section0" | "section1" | "section2" | "section3"), params?: { }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': hash })}` }, + "anchors_id": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, @@ -165,7 +168,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -203,7 +206,7 @@ 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', 'anchors': never, 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': 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', 'anchors': never, 'anchors_id': 'id', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': never } SERVERS: { 'GET_server_func_get': never, 'GET_server_func_get_and': 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-path.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-path.ts index eac1f69d..ae72ee41 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,6 +54,9 @@ export const PAGES = { "/anchors": (params: { hash: ("section0" | "section1" | "section2" | "section3") }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` }, + "/anchors/[id]": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, @@ -160,7 +163,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -230,7 +233,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', '/anchors': never, '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': 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', '/anchors': never, '/anchors/[id]': 'id', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /server_func_get': never, 'GET /server_func_get_and_': 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 6f63f249..5ee01a19 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,6 +54,9 @@ export const PAGES = { "/anchors": (hash: ("section0" | "section1" | "section2" | "section3"), params?: { }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': hash })}` }, + "/anchors/[id]": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, @@ -161,7 +164,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -231,7 +234,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', '/anchors': never, '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': 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', '/anchors': never, '/anchors/[id]': 'id', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /server_func_get': never, 'GET /server_func_get_and_': 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 fc73e288..7962587c 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 @@ -51,7 +51,12 @@ export const PAGES = { "a_rest_z": (params: { rest: (string | number)[] }) => { return `/a/${params['rest']?.join('/')}/z` }, - "anchors": `/anchors`, + "anchors": (params: { hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, + "anchors_id": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, @@ -158,7 +163,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -228,9 +233,9 @@ 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', 'anchors': never, 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': 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', 'anchors': never, 'anchors_id': 'id', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': never } SERVERS: { 'GET server_func_get': never, 'GET server_func_get_and': 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, 'da-sh': 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, 'da-sh': never, 'siteId': never, 'contractId': never, 'rest': never, 'hash': 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-symbol_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-and-object-symbol_shortened.ts index 632cb381..cc2bc947 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 @@ -51,7 +51,12 @@ export const PAGES = { "a_rest_z": (rest: (string | number)[], params?: { }) => { return `/a/${rest?.join('/')}/z` }, - "anchors": `/anchors`, + "anchors": (hash: ("section0" | "section1" | "section2" | "section3"), params?: { }) => { + return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': hash })}` + }, + "anchors_id": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, @@ -159,7 +164,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -229,9 +234,9 @@ 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', 'anchors': never, 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': 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', 'anchors': never, 'anchors_id': 'id', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': never } SERVERS: { 'GET server_func_get': never, 'GET server_func_get_and': 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, 'da-sh': 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, 'da-sh': never, 'siteId': never, 'contractId': never, 'rest': never, 'hash': 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-path-page-route-id.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path-page-route-id.ts index 3dfc9882..53629cbc 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path-page-route-id.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path-page-route-id.ts @@ -54,6 +54,9 @@ const PAGES = { "/anchors": (params: { hash: ("section0" | "section1" | "section2" | "section3") }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` }, + "/anchors/[id]": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "/lay/(layVerySpecial)/normal": `/lay/normal`, "/lay/(layVerySpecial)/root-layout": `/lay/root-layout`, "/lay/(layVerySpecial)/skip": `/lay/skip`, @@ -160,7 +163,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -230,7 +233,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '/(rootGroup)': never, '/(rootGroup)/subGroup': never, '/(rootGroup)/subGroup/(anotherSub)/user': never, '/(rootGroup)/subGroup2': never, '/[[lang]]/contract': 'lang', '/[[lang]]/contract/[id]': 'id' | 'lang', '/[[lang]]/gp/(logged)/one': 'lang', '/[[lang]]/gp/(public)/two': 'lang', '/[[lang]]/main': 'lang', '/[[lang]]/match/[id=ab]': 'id' | 'lang', '/[[lang]]/match/[id=int]': 'id' | 'lang', '/[[lang]]/site': 'lang', '/[[lang]]/site/[id]': 'lang' | 'id', '/[[lang]]/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/anchors': never, '/lay/(layVerySpecial)/normal': never, '/lay/(layVerySpecial)/root-layout': never, '/lay/(layVerySpecial)/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } + PAGES: { '/(rootGroup)': never, '/(rootGroup)/subGroup': never, '/(rootGroup)/subGroup/(anotherSub)/user': never, '/(rootGroup)/subGroup2': never, '/[[lang]]/contract': 'lang', '/[[lang]]/contract/[id]': 'id' | 'lang', '/[[lang]]/gp/(logged)/one': 'lang', '/[[lang]]/gp/(public)/two': 'lang', '/[[lang]]/main': 'lang', '/[[lang]]/match/[id=ab]': 'id' | 'lang', '/[[lang]]/match/[id=int]': 'id' | 'lang', '/[[lang]]/site': 'lang', '/[[lang]]/site/[id]': 'lang' | 'id', '/[[lang]]/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/anchors': never, '/anchors/[id]': 'id', '/lay/(layVerySpecial)/normal': never, '/lay/(layVerySpecial)/root-layout': never, '/lay/(layVerySpecial)/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /(servers)/server_func_get': never, 'GET /(servers)/server_func_get_and_': never, 'POST /(servers)/server_func_post': never, 'GET /[[lang]]/contract': 'lang', 'POST /[[lang]]/contract': 'lang', 'GET /[[lang]]/site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /[[lang]]/contract/[id]': 'id' | 'lang', 'create /[[lang]]/site': 'lang', 'update /[[lang]]/site/[id]': 'id' | 'lang', 'delete /[[lang]]/site/[id]': 'id' | 'lang', 'noSatisfies /[[lang]]/site_contract': 'lang', 'send /[[lang]]/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-page-route-id_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path-page-route-id_shortened.ts index e1c1e2ae..20159f99 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path-page-route-id_shortened.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-path-page-route-id_shortened.ts @@ -54,6 +54,9 @@ const PAGES = { "/anchors": (hash: ("section0" | "section1" | "section2" | "section3"), params?: { }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': hash })}` }, + "/anchors/[id]": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "/lay/(layVerySpecial)/normal": `/lay/normal`, "/lay/(layVerySpecial)/root-layout": `/lay/root-layout`, "/lay/(layVerySpecial)/skip": `/lay/skip`, @@ -161,7 +164,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -231,7 +234,7 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '/(rootGroup)': never, '/(rootGroup)/subGroup': never, '/(rootGroup)/subGroup/(anotherSub)/user': never, '/(rootGroup)/subGroup2': never, '/[[lang]]/contract': 'lang', '/[[lang]]/contract/[id]': 'lang' | 'id', '/[[lang]]/gp/(logged)/one': 'lang', '/[[lang]]/gp/(public)/two': 'lang', '/[[lang]]/main': 'lang', '/[[lang]]/match/[id=ab]': 'lang' | 'id', '/[[lang]]/match/[id=int]': 'lang' | 'id', '/[[lang]]/site': 'lang', '/[[lang]]/site/[id]': 'lang' | 'id', '/[[lang]]/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/anchors': never, '/lay/(layVerySpecial)/normal': never, '/lay/(layVerySpecial)/root-layout': never, '/lay/(layVerySpecial)/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } + PAGES: { '/(rootGroup)': never, '/(rootGroup)/subGroup': never, '/(rootGroup)/subGroup/(anotherSub)/user': never, '/(rootGroup)/subGroup2': never, '/[[lang]]/contract': 'lang', '/[[lang]]/contract/[id]': 'lang' | 'id', '/[[lang]]/gp/(logged)/one': 'lang', '/[[lang]]/gp/(public)/two': 'lang', '/[[lang]]/main': 'lang', '/[[lang]]/match/[id=ab]': 'lang' | 'id', '/[[lang]]/match/[id=int]': 'lang' | 'id', '/[[lang]]/site': 'lang', '/[[lang]]/site/[id]': 'lang' | 'id', '/[[lang]]/site_contract/[siteId]-[contractId]': 'siteId' | 'contractId' | 'lang', '/a/[...rest]/z': 'rest', '/anchors': never, '/anchors/[id]': 'id', '/lay/(layVerySpecial)/normal': never, '/lay/(layVerySpecial)/root-layout': never, '/lay/(layVerySpecial)/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /(servers)/server_func_get': never, 'GET /(servers)/server_func_get_and_': never, 'POST /(servers)/server_func_post': never, 'GET /[[lang]]/contract': 'lang', 'POST /[[lang]]/contract': 'lang', 'GET /[[lang]]/site': 'lang', 'GET /api/graphql': never, 'POST /api/graphql': never, 'GET /data/errors/[locale].json': 'locale' } ACTIONS: { 'default /[[lang]]/contract/[id]': 'lang' | 'id', 'create /[[lang]]/site': 'lang', 'update /[[lang]]/site/[id]': 'lang' | 'id', 'delete /[[lang]]/site/[id]': 'lang' | 'id', 'noSatisfies /[[lang]]/site_contract': 'lang', 'send /[[lang]]/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 b91a64fd..35f0b1cf 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,6 +54,9 @@ const PAGES = { "/anchors": (params: { hash: ("section0" | "section1" | "section2" | "section3") }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` }, + "/anchors/[id]": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, @@ -160,7 +163,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -230,7 +233,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', '/anchors': never, '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': 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', '/anchors': never, '/anchors/[id]': 'id', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /server_func_get': never, 'GET /server_func_get_and_': 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 4b13a5c1..f69e7276 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,6 +54,9 @@ const PAGES = { "/anchors": (hash: ("section0" | "section1" | "section2" | "section3"), params?: { }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': hash })}` }, + "/anchors/[id]": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, @@ -161,7 +164,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -231,7 +234,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', '/anchors': never, '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': 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', '/anchors': never, '/anchors/[id]': 'id', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /server_func_get': never, 'GET /server_func_get_and_': 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 9a891b30..6f1e7c27 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 @@ -51,7 +51,12 @@ const PAGES = { "a_rest_z": (params: { rest: (string | number)[] }) => { return `/a/${params['rest']?.join('/')}/z` }, - "anchors": `/anchors`, + "anchors": (params: { hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, + "anchors_id": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, @@ -158,7 +163,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -228,9 +233,9 @@ 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', 'anchors': never, 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': 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', 'anchors': never, 'anchors_id': 'id', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': never } SERVERS: { 'GET server_func_get': never, 'GET server_func_get_and': 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, 'da-sh': 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, 'da-sh': never, 'siteId': never, 'contractId': never, 'rest': never, 'hash': 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-symbol_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-route-symbol_shortened.ts index 6a1ed9a2..66e29178 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 @@ -51,7 +51,12 @@ const PAGES = { "a_rest_z": (rest: (string | number)[], params?: { }) => { return `/a/${rest?.join('/')}/z` }, - "anchors": `/anchors`, + "anchors": (hash: ("section0" | "section1" | "section2" | "section3"), params?: { }) => { + return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': hash })}` + }, + "anchors_id": (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` + }, "lay_normal": `/lay/normal`, "lay_root_layout": `/lay/root-layout`, "lay_skip": `/lay/skip`, @@ -159,7 +164,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -229,9 +234,9 @@ 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', 'anchors': never, 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': 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', 'anchors': never, 'anchors_id': 'id', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': never } SERVERS: { 'GET server_func_get': never, 'GET server_func_get_and': 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, 'da-sh': 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, 'da-sh': never, 'siteId': never, 'contractId': never, 'rest': never, 'hash': 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.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables.ts index 9b7dc349..543eba78 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 @@ -53,6 +53,9 @@ export const PAGE_a_rest_z = (params: { rest: (string | number)[] }) => { export const PAGE_anchors = (params: { hash: ("section0" | "section1" | "section2" | "section3") }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` } +export const PAGE_anchors_id = (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` +} export const PAGE_lay_normal = `/lay/normal` export const PAGE_lay_root_layout = `/lay/root-layout` export const PAGE_lay_skip = `/lay/skip` @@ -156,7 +159,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -194,7 +197,7 @@ 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', 'anchors': never, 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': 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', 'anchors': never, 'anchors_id': 'id', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': never } SERVERS: { 'GET_server_func_get': never, 'GET_server_func_get_and': 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-variables_shortened.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_format-variables_shortened.ts index 5e8618f2..fa11f15b 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 @@ -53,6 +53,9 @@ export const PAGE_a_rest_z = (rest: (string | number)[], params?: { }) => { export const PAGE_anchors = (hash: ("section0" | "section1" | "section2" | "section3"), params?: { }) => { return `/anchors${appendSp({ '__KIT_ROUTES_ANCHOR__': hash })}` } +export const PAGE_anchors_id = (params: { id: (string | number), hash: ("section0" | "section1" | "section2" | "section3") }) => { + return `/anchors/${params['id']}${appendSp({ '__KIT_ROUTES_ANCHOR__': params['hash'] })}` +} export const PAGE_lay_normal = `/lay/normal` export const PAGE_lay_root_layout = `/lay/root-layout` export const PAGE_lay_skip = `/lay/skip` @@ -157,7 +160,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -195,7 +198,7 @@ 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', 'anchors': never, 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': 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', 'anchors': never, 'anchors_id': 'id', 'lay_normal': never, 'lay_root_layout': never, 'lay_skip': never, 'sp': never, 'spArray': never, 'spArrayComma': never } SERVERS: { 'GET_server_func_get': never, 'GET_server_func_get_and': 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_hash.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_hash.ts index 640d0cbe..d41c7b27 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_hash.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_hash.ts @@ -47,6 +47,9 @@ const PAGES = { return `#/a/${params['rest']?.join('/')}/z` }, "/anchors": `#/anchors`, + "/anchors/[id]": (params: { id: (string | number) }) => { + return `#/anchors/${params['id']}` + }, "/lay/normal": `#/lay/normal`, "/lay/root-layout": `#/lay/root-layout`, "/lay/skip": `#/lay/skip`, @@ -144,7 +147,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -214,7 +217,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', '/anchors': never, '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': 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', '/anchors': never, '/anchors/[id]': 'id', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /server_func_get': never, 'GET /server_func_get_and_': 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_post-update.ts b/packages/vite-plugin-kit-routes/src/test/ROUTES_post-update.ts index 6c162b16..ec38de0c 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 @@ -47,6 +47,9 @@ const PAGES = { return `/a/${params['rest']?.join('/')}/z` }, "/anchors": `/anchors`, + "/anchors/[id]": (params: { id: (string | number) }) => { + return `/anchors/${params['id']}` + }, "/lay/normal": `/lay/normal`, "/lay/root-layout": `/lay/root-layout`, "/lay/skip": `/lay/skip`, @@ -144,7 +147,7 @@ export const appendSp = ( const formatted = params.toString() if (formatted || anchor) { - return `${prefix}${formatted}${anchor}` + return `${prefix}${formatted}${anchor}`.replace('?#', '#') } return '' } @@ -214,7 +217,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', '/anchors': never, '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': 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', '/anchors': never, '/anchors/[id]': 'id', '/lay/normal': never, '/lay/root-layout': never, '/lay/skip': never, '/sp': never, '/spArray': never, '/spArrayComma': never } SERVERS: { 'GET /server_func_get': never, 'GET /server_func_get_and_': 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 28c18be8..d2736d10 100644 --- a/packages/vite-plugin-kit-routes/vite.config.ts +++ b/packages/vite-plugin-kit-routes/vite.config.ts @@ -87,6 +87,9 @@ export default defineConfig({ default: '"section0"', }, }, + '/anchors/[id]': { + hash: { type: '"section0" | "section1" | "section2" | "section3"', required: true }, + }, }, SERVERS: { // site: {