diff --git a/.changeset/stupid-pugs-yawn.md b/.changeset/stupid-pugs-yawn.md new file mode 100644 index 000000000..3d9fdcad5 --- /dev/null +++ b/.changeset/stupid-pugs-yawn.md @@ -0,0 +1,5 @@ +--- +"vite-plugin-kit-routes": patch +--- + +add routes as Set (with all routes options) & Routes type. diff --git a/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts b/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts index 9a8d70b8c..6efd70b45 100644 --- a/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts +++ b/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts @@ -46,10 +46,7 @@ const PAGES = { params?: { lang?: 'fr' | 'en' | 'hu' | 'at' | string; limit?: number }, sp?: Record, ) => { - return `${params?.lang ? `/${params?.lang}` : ''}/site${appendSp({ - ...sp, - limit: params?.limit, - })}` + return `${params?.lang ? `/${params?.lang}` : ''}/site${appendSp({ ...sp, limit: params?.limit })}` }, '/site/[id]': (params?: { lang?: 'fr' | 'hu' | undefined @@ -60,10 +57,7 @@ const PAGES = { params = params ?? {} params.lang = params.lang ?? 'fr' params.id = params.id ?? 'Vienna' - return `${params?.lang ? `/${params?.lang}` : ''}/site/${params.id}${appendSp({ - limit: params.limit, - demo: params.demo, - })}` + return `${params?.lang ? `/${params?.lang}` : ''}/site/${params.id}${appendSp({ limit: params.limit, demo: params.demo })}` }, '/site_contract/[siteId]-[contractId]': (params: { siteId: string | number @@ -71,9 +65,7 @@ const PAGES = { lang?: 'fr' | 'en' | 'hu' | 'at' | string limit?: number }) => { - return `${params?.lang ? `/${params?.lang}` : ''}/site_contract/${params.siteId}-${ - params.contractId - }${appendSp({ limit: params.limit })}` + return `${params?.lang ? `/${params?.lang}` : ''}/site_contract/${params.siteId}-${params.contractId}${appendSp({ limit: params.limit })}` }, '/a/[...rest]/z': (params: { rest: (string | number)[] }) => { return `/a/${params.rest?.join('/')}/z` @@ -123,18 +115,13 @@ const ACTIONS = { lang?: 'fr' | 'en' | 'hu' | 'at' | string limit?: number }) => { - return `${params?.lang ? `/${params?.lang}` : ''}/contract/${params.id}${appendSp({ - limit: params.limit, - })}` + return `${params?.lang ? `/${params?.lang}` : ''}/contract/${params.id}${appendSp({ limit: params.limit })}` }, 'create /site': (params?: { lang?: 'fr' | 'en' | 'hu' | 'at' | string redirectTo?: 'list' | 'new' | 'detail' }) => { - return `${params?.lang ? `/${params?.lang}` : ''}/site?/create${appendSp( - { redirectTo: params?.redirectTo }, - '&', - )}` + return `${params?.lang ? `/${params?.lang}` : ''}/site?/create${appendSp({ redirectTo: params?.redirectTo }, '&')}` }, 'update /site/[id]': (params: { id: string | number @@ -158,9 +145,7 @@ const ACTIONS = { extra?: 'A' | 'B' }) => { params.extra = params.extra ?? 'A' - return `${params?.lang ? `/${params?.lang}` : ''}/site_contract/${params.siteId}-${ - params.contractId - }?/send${appendSp({ extra: params.extra }, '&')}` + return `${params?.lang ? `/${params?.lang}` : ''}/site_contract/${params.siteId}-${params.contractId}?/send${appendSp({ extra: params.extra }, '&')}` }, } @@ -247,6 +232,13 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` + ? `/${Route}` + : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts diff --git a/packages/vite-plugin-kit-routes/src/lib/format.ts b/packages/vite-plugin-kit-routes/src/lib/format.ts index ed40cc539..132924bc4 100644 --- a/packages/vite-plugin-kit-routes/src/lib/format.ts +++ b/packages/vite-plugin-kit-routes/src/lib/format.ts @@ -84,6 +84,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends \`\${string}/\${infer Route}\` ? \`/\${Route}\` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\\/.*|[^ ]?\\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * \`\`\`ts 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 4d121599f..724369883 100644 --- a/packages/vite-plugin-kit-routes/src/test/ROUTES_base.ts +++ b/packages/vite-plugin-kit-routes/src/test/ROUTES_base.ts @@ -173,6 +173,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 a05b5b56c..25ed017bf 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 @@ -186,6 +186,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 4d84f4e1f..44b7b196b 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 @@ -187,6 +187,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 c84f08e01..8c5070275 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 @@ -186,6 +186,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 b37093978..029975966 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 @@ -187,6 +187,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 ada2334cf..37f06d292 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 @@ -186,6 +186,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 fd8c358ac..e051767c1 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 @@ -187,6 +187,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 ff5bb71f6..007f05132 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 @@ -186,6 +186,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 da28aba7a..0070e9ac6 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 @@ -187,6 +187,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 c006b204b..4f1da294a 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 @@ -186,6 +186,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 250c0f517..f3e3bc0c5 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 @@ -187,6 +187,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts 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 10ee8f962..95e9d0e0c 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 @@ -172,6 +172,11 @@ type FunctionParams = T extends (...args: infer P) => any ? P : never const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } type AllTypes = typeof AllObjs +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + /** * To be used like this: * ```ts