From 99c9786b598adb8cf397a585ecbaf65d3485bec3 Mon Sep 17 00:00:00 2001 From: "Eduardo \"Dudu" Date: Thu, 25 Jul 2024 13:13:20 -0300 Subject: [PATCH] feat: exporting AllRoutes set from generated ROUTES.ts (#676) * feat: exporting AllObjs from generated ROUTES.ts This allows users to import 'AllObjs' which contains all routes. * feat: added AllRoutes type and set * fix: backslash as string * feat: returning key case regex fail * refactor: using better variable names * add "routes" * add changeset --------- Co-authored-by: jycouet --- .changeset/stupid-pugs-yawn.md | 5 +++++ packages/vite-plugin-kit-routes/src/lib/ROUTES.ts | 7 +++++++ packages/vite-plugin-kit-routes/src/lib/format.ts | 5 +++++ packages/vite-plugin-kit-routes/src/test/ROUTES_base.ts | 5 +++++ .../src/test/ROUTES_format-route-and-object-path.ts | 5 +++++ .../test/ROUTES_format-route-and-object-path_shortened.ts | 5 +++++ .../src/test/ROUTES_format-route-and-object-symbol.ts | 5 +++++ .../ROUTES_format-route-and-object-symbol_shortened.ts | 5 +++++ .../src/test/ROUTES_format-route-path-page-route-id.ts | 5 +++++ .../ROUTES_format-route-path-page-route-id_shortened.ts | 5 +++++ .../src/test/ROUTES_format-route-path.ts | 5 +++++ .../src/test/ROUTES_format-route-path_shortened.ts | 5 +++++ .../src/test/ROUTES_format-route-symbol.ts | 5 +++++ .../src/test/ROUTES_format-route-symbol_shortened.ts | 5 +++++ .../vite-plugin-kit-routes/src/test/ROUTES_post-update.ts | 5 +++++ 15 files changed, 77 insertions(+) create mode 100644 .changeset/stupid-pugs-yawn.md diff --git a/.changeset/stupid-pugs-yawn.md b/.changeset/stupid-pugs-yawn.md new file mode 100644 index 00000000..3d9fdcad --- /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 41d0a412..6efd70b4 100644 --- a/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts +++ b/packages/vite-plugin-kit-routes/src/lib/ROUTES.ts @@ -232,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 ed40cc53..132924bc 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 4d121599..72436988 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 a05b5b56..25ed017b 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 4d84f4e1..44b7b196 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 c84f08e0..8c507027 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 b3709397..02997596 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 ada2334c..37f06d29 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 fd8c358a..e051767c 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 ff5bb71f..007f0513 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 da28aba7..0070e9ac 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 c006b204..4f1da294 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 250c0f51..f3e3bc0c 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 10ee8f96..95e9d0e0 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