intlayer 8.3.0 → 8.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../src/routing/index.ts"],"sourcesContent":["import type { RewriteObject, RewriteRule, RewriteRules } from '@intlayer/types/config';\nimport type { StrictModeLocaleMap } from '@intlayer/types/module_augmentation';\n\nconst buildRules = (\n rules: Record<string, StrictModeLocaleMap<string>>,\n processor: (pattern: string) => string\n): RewriteRules => ({\n rules: Object.entries(rules).map(([canonical, localized]) => ({\n canonical: processor(canonical),\n localized: Object.fromEntries(\n Object.entries(localized).map(([locale, pattern]) => [\n locale,\n pattern ? processor(pattern) : pattern,\n ])\n ) as StrictModeLocaleMap<string>,\n })) as RewriteRule[],\n});\n\nconst cleanPath = (pattern: string) =>\n pattern.startsWith('/') ? pattern : `/${pattern}`;\n\n/**\n * Standardizes pattern to :param syntax.\n * Supports:\n * - Next.js/SvelteKit/Nuxt: [slug], [...slug], [[slug]]\n * - TanStack Router: $slug\n * - Solid Router: *slug\n * - React/Vue Router: :slug, *\n */\nconst normalizePattern = (pattern: string, framework?: string) => {\n let normalized = pattern;\n\n if (framework === 'nextjs') {\n normalized = normalized\n .replace(/\\[\\[\\.\\.\\.([^\\]]+)\\]\\]/g, ':$1*') // [[...slug]] -> :slug* (0+)\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1+') // [...slug] -> :slug+ (1+)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else if (framework === 'sveltekit') {\n normalized = normalized\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1*') // [...path] -> :path* (0+)\n .replace(/\\[\\[([^\\]]+)\\]\\]/g, ':$1?') // [[optional]] -> :optional? (0-1)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else if (framework === 'nuxt') {\n normalized = normalized\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1*') // [...slug] -> :slug* (0+)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else {\n // Default / Generic (React Router, Vue Router, Solid Router, TanStack Router)\n normalized = normalized\n .replace(/\\$([^/]+)/g, ':$1') // TanStack $slug -> :slug\n .replace(/\\*([^/]+)/g, ':$1*') // Solid *slug -> :slug*\n .replace(/:([^/]+)\\?/g, ':$1?') // Vue Router/React Router :slug? -> :slug?\n .replace(/\\*/g, ':path*'); // React Router * -> :path*\n }\n\n return normalized;\n};\n\n/**\n * Removes locale markers from the pattern.\n */\nconst stripLocale = (pattern: string) =>\n pattern\n .replace(/\\/?(:locale|\\[locale\\]|\\$locale)\\/?/g, '/')\n .replace(/\\/+/g, '/')\n .replace(/\\/$/, '') || '/';\n\n/**\n * Factory to create formatters that populate 'url' and a specific proxy key.\n */\nconst createFormatter =\n (proxyKey: 'nextjs' | 'vite', framework?: string) =>\n <T extends string = string>(\n rules: Record<T, StrictModeLocaleMap<string>>\n ): RewriteObject => {\n const normalize = (pattern: string) => normalizePattern(pattern, framework);\n const strip = (pattern: string) => stripLocale(normalize(pattern));\n\n return {\n url: buildRules(rules as any, (pattern) => cleanPath(strip(pattern))),\n [proxyKey]: buildRules(rules as any, (pattern) =>\n cleanPath(normalize(pattern))\n ),\n } as RewriteObject;\n };\n\n/**\n * Formatter for Next.js style rewrites.\n * Patterns use Next.js dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (1+)\n * - Optional catch-all: `[[...slug]]` (0+)\n * - Locale: `[locale]`\n */\nexport const nextjsRewrite = createFormatter('nextjs', 'nextjs');\n\n/**\n * Formatter for SvelteKit style rewrites.\n * Patterns use SvelteKit dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (0+)\n * - Locale: `[locale]`\n */\nexport const svelteKitRewrite = createFormatter('vite', 'sveltekit');\n\n/**\n * Formatter for React Router style rewrites.\n * Patterns use React Router dynamic routing syntax:\n * - Slug: `:slug`\n * - Optional slug: `:slug?`\n * - Catch-all: `*`\n * - Locale: `:locale`\n */\nexport const reactRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Vue style rewrites.\n * Patterns use Vue Router 4 dynamic routing syntax:\n * - Slug: `:slug`\n * - Optional slug: `:slug?`\n * - Catch-all: `:slug*` or `:slug+`\n * - Locale: `:locale`\n */\nexport const vueRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Solid Router style rewrites.\n * Patterns use Solid Router dynamic routing syntax:\n * - Slug: `:slug`\n * - Catch-all: `*slug`\n * - Locale: `:locale`\n */\nexport const solidRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Nuxt style rewrites.\n * Patterns use Nuxt 3 dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (0+)\n * - Locale: `[locale]`\n */\nexport const nuxtRewrite = createFormatter('vite', 'nuxt');\n\n/**\n * Formatter for TanStack Router style rewrites.\n * Patterns use TanStack Router dynamic routing syntax:\n * - Slug: `$slug`\n * - Catch-all: `*`\n * - Locale: `$locale`\n */\nexport const tanstackRouterRewrite = createFormatter('vite');\n\n/**\n * Generic formatter for Vite-based projects.\n * Supports most dynamic routing syntaxes and normalizes them for the Vite proxy.\n */\nexport const viteRewrite = createFormatter('vite');\n"],"mappings":"mEAGA,MAAM,GACJ,EACA,KACkB,CAClB,MAAO,OAAO,QAAQ,EAAM,CAAC,KAAK,CAAC,EAAW,MAAgB,CAC5D,UAAW,EAAU,EAAU,CAC/B,UAAW,OAAO,YAChB,OAAO,QAAQ,EAAU,CAAC,KAAK,CAAC,EAAQ,KAAa,CACnD,EACA,GAAU,EAAU,EAAQ,CAC7B,CAAC,CACH,CACF,EAAE,CACJ,EAEK,EAAa,GACjB,EAAQ,WAAW,IAAI,CAAG,EAAU,IAAI,IAUpC,GAAoB,EAAiB,IAAuB,CAChE,IAAI,EAAa,EAyBjB,MAvBA,CAgBE,EAhBE,IAAc,SACH,EACV,QAAQ,0BAA2B,OAAO,CAC1C,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,gBAAiB,MAAM,CACzB,IAAc,YACV,EACV,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,oBAAqB,OAAO,CACpC,QAAQ,gBAAiB,MAAM,CACzB,IAAc,OACV,EACV,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,gBAAiB,MAAM,CAGrB,EACV,QAAQ,aAAc,MAAM,CAC5B,QAAQ,aAAc,OAAO,CAC7B,QAAQ,cAAe,OAAO,CAC9B,QAAQ,MAAO,SAAS,CAGtB,GAMH,EAAe,GACnB,EACG,QAAQ,uCAAwC,IAAI,CACpD,QAAQ,OAAQ,IAAI,CACpB,QAAQ,MAAO,GAAG,EAAI,IAKrB,GACH,EAA6B,IAE5B,GACkB,CAClB,IAAM,EAAa,GAAoB,EAAiB,EAAS,EAAU,CACrE,EAAS,GAAoB,EAAY,EAAU,EAAQ,CAAC,CAElE,MAAO,CACL,IAAK,EAAW,EAAe,GAAY,EAAU,EAAM,EAAQ,CAAC,CAAC,EACpE,GAAW,EAAW,EAAe,GACpC,EAAU,EAAU,EAAQ,CAAC,CAC9B,CACF,EAWQ,EAAgB,EAAgB,SAAU,SAAS,CASnD,EAAmB,EAAgB,OAAQ,YAAY,CAUvD,EAAqB,EAAgB,OAAO,CAU5C,EAAmB,EAAgB,OAAO,CAS1C,EAAqB,EAAgB,OAAO,CAS5C,EAAc,EAAgB,OAAQ,OAAO,CAS7C,EAAwB,EAAgB,OAAO,CAM/C,EAAc,EAAgB,OAAO"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../src/routing/index.ts"],"sourcesContent":["import type {\n RewriteObject,\n RewriteRule,\n RewriteRules,\n} from '@intlayer/types/config';\nimport type { StrictModeLocaleMap } from '@intlayer/types/module_augmentation';\n\nconst buildRules = (\n rules: Record<string, StrictModeLocaleMap<string>>,\n processor: (pattern: string) => string\n): RewriteRules => ({\n rules: Object.entries(rules).map(([canonical, localized]) => ({\n canonical: processor(canonical),\n localized: Object.fromEntries(\n Object.entries(localized).map(([locale, pattern]) => [\n locale,\n pattern ? processor(pattern) : pattern,\n ])\n ) as StrictModeLocaleMap<string>,\n })) as RewriteRule[],\n});\n\nconst cleanPath = (pattern: string) =>\n pattern.startsWith('/') ? pattern : `/${pattern}`;\n\n/**\n * Standardizes pattern to :param syntax.\n * Supports:\n * - Next.js/SvelteKit/Nuxt: [slug], [...slug], [[slug]]\n * - TanStack Router: $slug\n * - Solid Router: *slug\n * - React/Vue Router: :slug, *\n */\nconst normalizePattern = (pattern: string, framework?: string) => {\n let normalized = pattern;\n\n if (framework === 'nextjs') {\n normalized = normalized\n .replace(/\\[\\[\\.\\.\\.([^\\]]+)\\]\\]/g, ':$1*') // [[...slug]] -> :slug* (0+)\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1+') // [...slug] -> :slug+ (1+)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else if (framework === 'sveltekit') {\n normalized = normalized\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1*') // [...path] -> :path* (0+)\n .replace(/\\[\\[([^\\]]+)\\]\\]/g, ':$1?') // [[optional]] -> :optional? (0-1)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else if (framework === 'nuxt') {\n normalized = normalized\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1*') // [...slug] -> :slug* (0+)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else {\n // Default / Generic (React Router, Vue Router, Solid Router, TanStack Router)\n normalized = normalized\n .replace(/\\$([^/]+)/g, ':$1') // TanStack $slug -> :slug\n .replace(/\\*([^/]+)/g, ':$1*') // Solid *slug -> :slug*\n .replace(/:([^/]+)\\?/g, ':$1?') // Vue Router/React Router :slug? -> :slug?\n .replace(/\\*/g, ':path*'); // React Router * -> :path*\n }\n\n return normalized;\n};\n\n/**\n * Removes locale markers from the pattern.\n */\nconst stripLocale = (pattern: string) =>\n pattern\n .replace(/\\/?(:locale|\\[locale\\]|\\$locale)\\/?/g, '/')\n .replace(/\\/+/g, '/')\n .replace(/\\/$/, '') || '/';\n\n/**\n * Factory to create formatters that populate 'url' and a specific proxy key.\n */\nconst createFormatter =\n (proxyKey: 'nextjs' | 'vite', framework?: string) =>\n <T extends string = string>(\n rules: Record<T, Partial<StrictModeLocaleMap<string>>>\n ): RewriteObject => {\n const normalize = (pattern: string) => normalizePattern(pattern, framework);\n const strip = (pattern: string) => stripLocale(normalize(pattern));\n\n return {\n url: buildRules(rules as any, (pattern) => cleanPath(strip(pattern))),\n [proxyKey]: buildRules(rules as any, (pattern) =>\n cleanPath(normalize(pattern))\n ),\n } as RewriteObject;\n };\n\n/**\n * Formatter for Next.js style rewrites.\n * Patterns use Next.js dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (1+)\n * - Optional catch-all: `[[...slug]]` (0+)\n * - Locale: `[locale]`\n */\nexport const nextjsRewrite = createFormatter('nextjs', 'nextjs');\n\n/**\n * Formatter for SvelteKit style rewrites.\n * Patterns use SvelteKit dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (0+)\n * - Locale: `[locale]`\n */\nexport const svelteKitRewrite = createFormatter('vite', 'sveltekit');\n\n/**\n * Formatter for React Router style rewrites.\n * Patterns use React Router dynamic routing syntax:\n * - Slug: `:slug`\n * - Optional slug: `:slug?`\n * - Catch-all: `*`\n * - Locale: `:locale`\n */\nexport const reactRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Vue style rewrites.\n * Patterns use Vue Router 4 dynamic routing syntax:\n * - Slug: `:slug`\n * - Optional slug: `:slug?`\n * - Catch-all: `:slug*` or `:slug+`\n * - Locale: `:locale`\n */\nexport const vueRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Solid Router style rewrites.\n * Patterns use Solid Router dynamic routing syntax:\n * - Slug: `:slug`\n * - Catch-all: `*slug`\n * - Locale: `:locale`\n */\nexport const solidRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Nuxt style rewrites.\n * Patterns use Nuxt 3 dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (0+)\n * - Locale: `[locale]`\n */\nexport const nuxtRewrite = createFormatter('vite', 'nuxt');\n\n/**\n * Formatter for TanStack Router style rewrites.\n * Patterns use TanStack Router dynamic routing syntax:\n * - Slug: `$slug`\n * - Catch-all: `*`\n * - Locale: `$locale`\n */\nexport const tanstackRouterRewrite = createFormatter('vite');\n\n/**\n * Generic formatter for Vite-based projects.\n * Supports most dynamic routing syntaxes and normalizes them for the Vite proxy.\n */\nexport const viteRewrite = createFormatter('vite');\n"],"mappings":"mEAOA,MAAM,GACJ,EACA,KACkB,CAClB,MAAO,OAAO,QAAQ,EAAM,CAAC,KAAK,CAAC,EAAW,MAAgB,CAC5D,UAAW,EAAU,EAAU,CAC/B,UAAW,OAAO,YAChB,OAAO,QAAQ,EAAU,CAAC,KAAK,CAAC,EAAQ,KAAa,CACnD,EACA,GAAU,EAAU,EAAQ,CAC7B,CAAC,CACH,CACF,EAAE,CACJ,EAEK,EAAa,GACjB,EAAQ,WAAW,IAAI,CAAG,EAAU,IAAI,IAUpC,GAAoB,EAAiB,IAAuB,CAChE,IAAI,EAAa,EAyBjB,MAvBA,CAgBE,EAhBE,IAAc,SACH,EACV,QAAQ,0BAA2B,OAAO,CAC1C,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,gBAAiB,MAAM,CACzB,IAAc,YACV,EACV,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,oBAAqB,OAAO,CACpC,QAAQ,gBAAiB,MAAM,CACzB,IAAc,OACV,EACV,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,gBAAiB,MAAM,CAGrB,EACV,QAAQ,aAAc,MAAM,CAC5B,QAAQ,aAAc,OAAO,CAC7B,QAAQ,cAAe,OAAO,CAC9B,QAAQ,MAAO,SAAS,CAGtB,GAMH,EAAe,GACnB,EACG,QAAQ,uCAAwC,IAAI,CACpD,QAAQ,OAAQ,IAAI,CACpB,QAAQ,MAAO,GAAG,EAAI,IAKrB,GACH,EAA6B,IAE5B,GACkB,CAClB,IAAM,EAAa,GAAoB,EAAiB,EAAS,EAAU,CACrE,EAAS,GAAoB,EAAY,EAAU,EAAQ,CAAC,CAElE,MAAO,CACL,IAAK,EAAW,EAAe,GAAY,EAAU,EAAM,EAAQ,CAAC,CAAC,EACpE,GAAW,EAAW,EAAe,GACpC,EAAU,EAAU,EAAQ,CAAC,CAC9B,CACF,EAWQ,EAAgB,EAAgB,SAAU,SAAS,CASnD,EAAmB,EAAgB,OAAQ,YAAY,CAUvD,EAAqB,EAAgB,OAAO,CAU5C,EAAmB,EAAgB,OAAO,CAS1C,EAAqB,EAAgB,OAAO,CAS5C,EAAc,EAAgB,OAAQ,OAAO,CAS7C,EAAwB,EAAgB,OAAO,CAM/C,EAAc,EAAgB,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/routing/index.ts"],"sourcesContent":["import type { RewriteObject, RewriteRule, RewriteRules } from '@intlayer/types/config';\nimport type { StrictModeLocaleMap } from '@intlayer/types/module_augmentation';\n\nconst buildRules = (\n rules: Record<string, StrictModeLocaleMap<string>>,\n processor: (pattern: string) => string\n): RewriteRules => ({\n rules: Object.entries(rules).map(([canonical, localized]) => ({\n canonical: processor(canonical),\n localized: Object.fromEntries(\n Object.entries(localized).map(([locale, pattern]) => [\n locale,\n pattern ? processor(pattern) : pattern,\n ])\n ) as StrictModeLocaleMap<string>,\n })) as RewriteRule[],\n});\n\nconst cleanPath = (pattern: string) =>\n pattern.startsWith('/') ? pattern : `/${pattern}`;\n\n/**\n * Standardizes pattern to :param syntax.\n * Supports:\n * - Next.js/SvelteKit/Nuxt: [slug], [...slug], [[slug]]\n * - TanStack Router: $slug\n * - Solid Router: *slug\n * - React/Vue Router: :slug, *\n */\nconst normalizePattern = (pattern: string, framework?: string) => {\n let normalized = pattern;\n\n if (framework === 'nextjs') {\n normalized = normalized\n .replace(/\\[\\[\\.\\.\\.([^\\]]+)\\]\\]/g, ':$1*') // [[...slug]] -> :slug* (0+)\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1+') // [...slug] -> :slug+ (1+)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else if (framework === 'sveltekit') {\n normalized = normalized\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1*') // [...path] -> :path* (0+)\n .replace(/\\[\\[([^\\]]+)\\]\\]/g, ':$1?') // [[optional]] -> :optional? (0-1)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else if (framework === 'nuxt') {\n normalized = normalized\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1*') // [...slug] -> :slug* (0+)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else {\n // Default / Generic (React Router, Vue Router, Solid Router, TanStack Router)\n normalized = normalized\n .replace(/\\$([^/]+)/g, ':$1') // TanStack $slug -> :slug\n .replace(/\\*([^/]+)/g, ':$1*') // Solid *slug -> :slug*\n .replace(/:([^/]+)\\?/g, ':$1?') // Vue Router/React Router :slug? -> :slug?\n .replace(/\\*/g, ':path*'); // React Router * -> :path*\n }\n\n return normalized;\n};\n\n/**\n * Removes locale markers from the pattern.\n */\nconst stripLocale = (pattern: string) =>\n pattern\n .replace(/\\/?(:locale|\\[locale\\]|\\$locale)\\/?/g, '/')\n .replace(/\\/+/g, '/')\n .replace(/\\/$/, '') || '/';\n\n/**\n * Factory to create formatters that populate 'url' and a specific proxy key.\n */\nconst createFormatter =\n (proxyKey: 'nextjs' | 'vite', framework?: string) =>\n <T extends string = string>(\n rules: Record<T, StrictModeLocaleMap<string>>\n ): RewriteObject => {\n const normalize = (pattern: string) => normalizePattern(pattern, framework);\n const strip = (pattern: string) => stripLocale(normalize(pattern));\n\n return {\n url: buildRules(rules as any, (pattern) => cleanPath(strip(pattern))),\n [proxyKey]: buildRules(rules as any, (pattern) =>\n cleanPath(normalize(pattern))\n ),\n } as RewriteObject;\n };\n\n/**\n * Formatter for Next.js style rewrites.\n * Patterns use Next.js dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (1+)\n * - Optional catch-all: `[[...slug]]` (0+)\n * - Locale: `[locale]`\n */\nexport const nextjsRewrite = createFormatter('nextjs', 'nextjs');\n\n/**\n * Formatter for SvelteKit style rewrites.\n * Patterns use SvelteKit dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (0+)\n * - Locale: `[locale]`\n */\nexport const svelteKitRewrite = createFormatter('vite', 'sveltekit');\n\n/**\n * Formatter for React Router style rewrites.\n * Patterns use React Router dynamic routing syntax:\n * - Slug: `:slug`\n * - Optional slug: `:slug?`\n * - Catch-all: `*`\n * - Locale: `:locale`\n */\nexport const reactRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Vue style rewrites.\n * Patterns use Vue Router 4 dynamic routing syntax:\n * - Slug: `:slug`\n * - Optional slug: `:slug?`\n * - Catch-all: `:slug*` or `:slug+`\n * - Locale: `:locale`\n */\nexport const vueRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Solid Router style rewrites.\n * Patterns use Solid Router dynamic routing syntax:\n * - Slug: `:slug`\n * - Catch-all: `*slug`\n * - Locale: `:locale`\n */\nexport const solidRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Nuxt style rewrites.\n * Patterns use Nuxt 3 dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (0+)\n * - Locale: `[locale]`\n */\nexport const nuxtRewrite = createFormatter('vite', 'nuxt');\n\n/**\n * Formatter for TanStack Router style rewrites.\n * Patterns use TanStack Router dynamic routing syntax:\n * - Slug: `$slug`\n * - Catch-all: `*`\n * - Locale: `$locale`\n */\nexport const tanstackRouterRewrite = createFormatter('vite');\n\n/**\n * Generic formatter for Vite-based projects.\n * Supports most dynamic routing syntaxes and normalizes them for the Vite proxy.\n */\nexport const viteRewrite = createFormatter('vite');\n"],"mappings":"AAGA,MAAM,GACJ,EACA,KACkB,CAClB,MAAO,OAAO,QAAQ,EAAM,CAAC,KAAK,CAAC,EAAW,MAAgB,CAC5D,UAAW,EAAU,EAAU,CAC/B,UAAW,OAAO,YAChB,OAAO,QAAQ,EAAU,CAAC,KAAK,CAAC,EAAQ,KAAa,CACnD,EACA,GAAU,EAAU,EAAQ,CAC7B,CAAC,CACH,CACF,EAAE,CACJ,EAEK,EAAa,GACjB,EAAQ,WAAW,IAAI,CAAG,EAAU,IAAI,IAUpC,GAAoB,EAAiB,IAAuB,CAChE,IAAI,EAAa,EAyBjB,MAvBA,CAgBE,EAhBE,IAAc,SACH,EACV,QAAQ,0BAA2B,OAAO,CAC1C,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,gBAAiB,MAAM,CACzB,IAAc,YACV,EACV,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,oBAAqB,OAAO,CACpC,QAAQ,gBAAiB,MAAM,CACzB,IAAc,OACV,EACV,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,gBAAiB,MAAM,CAGrB,EACV,QAAQ,aAAc,MAAM,CAC5B,QAAQ,aAAc,OAAO,CAC7B,QAAQ,cAAe,OAAO,CAC9B,QAAQ,MAAO,SAAS,CAGtB,GAMH,EAAe,GACnB,EACG,QAAQ,uCAAwC,IAAI,CACpD,QAAQ,OAAQ,IAAI,CACpB,QAAQ,MAAO,GAAG,EAAI,IAKrB,GACH,EAA6B,IAE5B,GACkB,CAClB,IAAM,EAAa,GAAoB,EAAiB,EAAS,EAAU,CACrE,EAAS,GAAoB,EAAY,EAAU,EAAQ,CAAC,CAElE,MAAO,CACL,IAAK,EAAW,EAAe,GAAY,EAAU,EAAM,EAAQ,CAAC,CAAC,EACpE,GAAW,EAAW,EAAe,GACpC,EAAU,EAAU,EAAQ,CAAC,CAC9B,CACF,EAWQ,EAAgB,EAAgB,SAAU,SAAS,CASnD,EAAmB,EAAgB,OAAQ,YAAY,CAUvD,EAAqB,EAAgB,OAAO,CAU5C,EAAmB,EAAgB,OAAO,CAS1C,EAAqB,EAAgB,OAAO,CAS5C,EAAc,EAAgB,OAAQ,OAAO,CAS7C,EAAwB,EAAgB,OAAO,CAM/C,EAAc,EAAgB,OAAO"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/routing/index.ts"],"sourcesContent":["import type {\n RewriteObject,\n RewriteRule,\n RewriteRules,\n} from '@intlayer/types/config';\nimport type { StrictModeLocaleMap } from '@intlayer/types/module_augmentation';\n\nconst buildRules = (\n rules: Record<string, StrictModeLocaleMap<string>>,\n processor: (pattern: string) => string\n): RewriteRules => ({\n rules: Object.entries(rules).map(([canonical, localized]) => ({\n canonical: processor(canonical),\n localized: Object.fromEntries(\n Object.entries(localized).map(([locale, pattern]) => [\n locale,\n pattern ? processor(pattern) : pattern,\n ])\n ) as StrictModeLocaleMap<string>,\n })) as RewriteRule[],\n});\n\nconst cleanPath = (pattern: string) =>\n pattern.startsWith('/') ? pattern : `/${pattern}`;\n\n/**\n * Standardizes pattern to :param syntax.\n * Supports:\n * - Next.js/SvelteKit/Nuxt: [slug], [...slug], [[slug]]\n * - TanStack Router: $slug\n * - Solid Router: *slug\n * - React/Vue Router: :slug, *\n */\nconst normalizePattern = (pattern: string, framework?: string) => {\n let normalized = pattern;\n\n if (framework === 'nextjs') {\n normalized = normalized\n .replace(/\\[\\[\\.\\.\\.([^\\]]+)\\]\\]/g, ':$1*') // [[...slug]] -> :slug* (0+)\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1+') // [...slug] -> :slug+ (1+)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else if (framework === 'sveltekit') {\n normalized = normalized\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1*') // [...path] -> :path* (0+)\n .replace(/\\[\\[([^\\]]+)\\]\\]/g, ':$1?') // [[optional]] -> :optional? (0-1)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else if (framework === 'nuxt') {\n normalized = normalized\n .replace(/\\[\\.\\.\\.([^\\]]+)\\]/g, ':$1*') // [...slug] -> :slug* (0+)\n .replace(/\\[([^\\]]+)\\]/g, ':$1'); // [slug] -> :slug (1)\n } else {\n // Default / Generic (React Router, Vue Router, Solid Router, TanStack Router)\n normalized = normalized\n .replace(/\\$([^/]+)/g, ':$1') // TanStack $slug -> :slug\n .replace(/\\*([^/]+)/g, ':$1*') // Solid *slug -> :slug*\n .replace(/:([^/]+)\\?/g, ':$1?') // Vue Router/React Router :slug? -> :slug?\n .replace(/\\*/g, ':path*'); // React Router * -> :path*\n }\n\n return normalized;\n};\n\n/**\n * Removes locale markers from the pattern.\n */\nconst stripLocale = (pattern: string) =>\n pattern\n .replace(/\\/?(:locale|\\[locale\\]|\\$locale)\\/?/g, '/')\n .replace(/\\/+/g, '/')\n .replace(/\\/$/, '') || '/';\n\n/**\n * Factory to create formatters that populate 'url' and a specific proxy key.\n */\nconst createFormatter =\n (proxyKey: 'nextjs' | 'vite', framework?: string) =>\n <T extends string = string>(\n rules: Record<T, Partial<StrictModeLocaleMap<string>>>\n ): RewriteObject => {\n const normalize = (pattern: string) => normalizePattern(pattern, framework);\n const strip = (pattern: string) => stripLocale(normalize(pattern));\n\n return {\n url: buildRules(rules as any, (pattern) => cleanPath(strip(pattern))),\n [proxyKey]: buildRules(rules as any, (pattern) =>\n cleanPath(normalize(pattern))\n ),\n } as RewriteObject;\n };\n\n/**\n * Formatter for Next.js style rewrites.\n * Patterns use Next.js dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (1+)\n * - Optional catch-all: `[[...slug]]` (0+)\n * - Locale: `[locale]`\n */\nexport const nextjsRewrite = createFormatter('nextjs', 'nextjs');\n\n/**\n * Formatter for SvelteKit style rewrites.\n * Patterns use SvelteKit dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (0+)\n * - Locale: `[locale]`\n */\nexport const svelteKitRewrite = createFormatter('vite', 'sveltekit');\n\n/**\n * Formatter for React Router style rewrites.\n * Patterns use React Router dynamic routing syntax:\n * - Slug: `:slug`\n * - Optional slug: `:slug?`\n * - Catch-all: `*`\n * - Locale: `:locale`\n */\nexport const reactRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Vue style rewrites.\n * Patterns use Vue Router 4 dynamic routing syntax:\n * - Slug: `:slug`\n * - Optional slug: `:slug?`\n * - Catch-all: `:slug*` or `:slug+`\n * - Locale: `:locale`\n */\nexport const vueRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Solid Router style rewrites.\n * Patterns use Solid Router dynamic routing syntax:\n * - Slug: `:slug`\n * - Catch-all: `*slug`\n * - Locale: `:locale`\n */\nexport const solidRouterRewrite = createFormatter('vite');\n\n/**\n * Formatter for Nuxt style rewrites.\n * Patterns use Nuxt 3 dynamic routing syntax:\n * - Slug: `[slug]`\n * - Catch-all: `[...slug]` (0+)\n * - Locale: `[locale]`\n */\nexport const nuxtRewrite = createFormatter('vite', 'nuxt');\n\n/**\n * Formatter for TanStack Router style rewrites.\n * Patterns use TanStack Router dynamic routing syntax:\n * - Slug: `$slug`\n * - Catch-all: `*`\n * - Locale: `$locale`\n */\nexport const tanstackRouterRewrite = createFormatter('vite');\n\n/**\n * Generic formatter for Vite-based projects.\n * Supports most dynamic routing syntaxes and normalizes them for the Vite proxy.\n */\nexport const viteRewrite = createFormatter('vite');\n"],"mappings":"AAOA,MAAM,GACJ,EACA,KACkB,CAClB,MAAO,OAAO,QAAQ,EAAM,CAAC,KAAK,CAAC,EAAW,MAAgB,CAC5D,UAAW,EAAU,EAAU,CAC/B,UAAW,OAAO,YAChB,OAAO,QAAQ,EAAU,CAAC,KAAK,CAAC,EAAQ,KAAa,CACnD,EACA,GAAU,EAAU,EAAQ,CAC7B,CAAC,CACH,CACF,EAAE,CACJ,EAEK,EAAa,GACjB,EAAQ,WAAW,IAAI,CAAG,EAAU,IAAI,IAUpC,GAAoB,EAAiB,IAAuB,CAChE,IAAI,EAAa,EAyBjB,MAvBA,CAgBE,EAhBE,IAAc,SACH,EACV,QAAQ,0BAA2B,OAAO,CAC1C,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,gBAAiB,MAAM,CACzB,IAAc,YACV,EACV,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,oBAAqB,OAAO,CACpC,QAAQ,gBAAiB,MAAM,CACzB,IAAc,OACV,EACV,QAAQ,sBAAuB,OAAO,CACtC,QAAQ,gBAAiB,MAAM,CAGrB,EACV,QAAQ,aAAc,MAAM,CAC5B,QAAQ,aAAc,OAAO,CAC7B,QAAQ,cAAe,OAAO,CAC9B,QAAQ,MAAO,SAAS,CAGtB,GAMH,EAAe,GACnB,EACG,QAAQ,uCAAwC,IAAI,CACpD,QAAQ,OAAQ,IAAI,CACpB,QAAQ,MAAO,GAAG,EAAI,IAKrB,GACH,EAA6B,IAE5B,GACkB,CAClB,IAAM,EAAa,GAAoB,EAAiB,EAAS,EAAU,CACrE,EAAS,GAAoB,EAAY,EAAU,EAAQ,CAAC,CAElE,MAAO,CACL,IAAK,EAAW,EAAe,GAAY,EAAU,EAAM,EAAQ,CAAC,CAAC,EACpE,GAAW,EAAW,EAAe,GACpC,EAAU,EAAU,EAAQ,CAAC,CAC9B,CACF,EAWQ,EAAgB,EAAgB,SAAU,SAAS,CASnD,EAAmB,EAAgB,OAAQ,YAAY,CAUvD,EAAqB,EAAgB,OAAO,CAU5C,EAAmB,EAAgB,OAAO,CAS1C,EAAqB,EAAgB,OAAO,CAS5C,EAAc,EAAgB,OAAQ,OAAO,CAS7C,EAAwB,EAAgB,OAAO,CAM/C,EAAc,EAAgB,OAAO"}
@@ -10,7 +10,7 @@ import { StrictModeLocaleMap } from "@intlayer/types/module_augmentation";
10
10
  * - Optional catch-all: `[[...slug]]` (0+)
11
11
  * - Locale: `[locale]`
12
12
  */
13
- declare const nextjsRewrite: <T extends string = string>(rules: Record<T, StrictModeLocaleMap<string>>) => RewriteObject;
13
+ declare const nextjsRewrite: <T extends string = string>(rules: Record<T, Partial<StrictModeLocaleMap<string>>>) => RewriteObject;
14
14
  /**
15
15
  * Formatter for SvelteKit style rewrites.
16
16
  * Patterns use SvelteKit dynamic routing syntax:
@@ -18,7 +18,7 @@ declare const nextjsRewrite: <T extends string = string>(rules: Record<T, Strict
18
18
  * - Catch-all: `[...slug]` (0+)
19
19
  * - Locale: `[locale]`
20
20
  */
21
- declare const svelteKitRewrite: <T extends string = string>(rules: Record<T, StrictModeLocaleMap<string>>) => RewriteObject;
21
+ declare const svelteKitRewrite: <T extends string = string>(rules: Record<T, Partial<StrictModeLocaleMap<string>>>) => RewriteObject;
22
22
  /**
23
23
  * Formatter for React Router style rewrites.
24
24
  * Patterns use React Router dynamic routing syntax:
@@ -27,7 +27,7 @@ declare const svelteKitRewrite: <T extends string = string>(rules: Record<T, Str
27
27
  * - Catch-all: `*`
28
28
  * - Locale: `:locale`
29
29
  */
30
- declare const reactRouterRewrite: <T extends string = string>(rules: Record<T, StrictModeLocaleMap<string>>) => RewriteObject;
30
+ declare const reactRouterRewrite: <T extends string = string>(rules: Record<T, Partial<StrictModeLocaleMap<string>>>) => RewriteObject;
31
31
  /**
32
32
  * Formatter for Vue style rewrites.
33
33
  * Patterns use Vue Router 4 dynamic routing syntax:
@@ -36,7 +36,7 @@ declare const reactRouterRewrite: <T extends string = string>(rules: Record<T, S
36
36
  * - Catch-all: `:slug*` or `:slug+`
37
37
  * - Locale: `:locale`
38
38
  */
39
- declare const vueRouterRewrite: <T extends string = string>(rules: Record<T, StrictModeLocaleMap<string>>) => RewriteObject;
39
+ declare const vueRouterRewrite: <T extends string = string>(rules: Record<T, Partial<StrictModeLocaleMap<string>>>) => RewriteObject;
40
40
  /**
41
41
  * Formatter for Solid Router style rewrites.
42
42
  * Patterns use Solid Router dynamic routing syntax:
@@ -44,7 +44,7 @@ declare const vueRouterRewrite: <T extends string = string>(rules: Record<T, Str
44
44
  * - Catch-all: `*slug`
45
45
  * - Locale: `:locale`
46
46
  */
47
- declare const solidRouterRewrite: <T extends string = string>(rules: Record<T, StrictModeLocaleMap<string>>) => RewriteObject;
47
+ declare const solidRouterRewrite: <T extends string = string>(rules: Record<T, Partial<StrictModeLocaleMap<string>>>) => RewriteObject;
48
48
  /**
49
49
  * Formatter for Nuxt style rewrites.
50
50
  * Patterns use Nuxt 3 dynamic routing syntax:
@@ -52,7 +52,7 @@ declare const solidRouterRewrite: <T extends string = string>(rules: Record<T, S
52
52
  * - Catch-all: `[...slug]` (0+)
53
53
  * - Locale: `[locale]`
54
54
  */
55
- declare const nuxtRewrite: <T extends string = string>(rules: Record<T, StrictModeLocaleMap<string>>) => RewriteObject;
55
+ declare const nuxtRewrite: <T extends string = string>(rules: Record<T, Partial<StrictModeLocaleMap<string>>>) => RewriteObject;
56
56
  /**
57
57
  * Formatter for TanStack Router style rewrites.
58
58
  * Patterns use TanStack Router dynamic routing syntax:
@@ -60,12 +60,12 @@ declare const nuxtRewrite: <T extends string = string>(rules: Record<T, StrictMo
60
60
  * - Catch-all: `*`
61
61
  * - Locale: `$locale`
62
62
  */
63
- declare const tanstackRouterRewrite: <T extends string = string>(rules: Record<T, StrictModeLocaleMap<string>>) => RewriteObject;
63
+ declare const tanstackRouterRewrite: <T extends string = string>(rules: Record<T, Partial<StrictModeLocaleMap<string>>>) => RewriteObject;
64
64
  /**
65
65
  * Generic formatter for Vite-based projects.
66
66
  * Supports most dynamic routing syntaxes and normalizes them for the Vite proxy.
67
67
  */
68
- declare const viteRewrite: <T extends string = string>(rules: Record<T, StrictModeLocaleMap<string>>) => RewriteObject;
68
+ declare const viteRewrite: <T extends string = string>(rules: Record<T, Partial<StrictModeLocaleMap<string>>>) => RewriteObject;
69
69
  //#endregion
70
70
  export { nextjsRewrite, nuxtRewrite, reactRouterRewrite, solidRouterRewrite, svelteKitRewrite, tanstackRouterRewrite, viteRewrite, vueRouterRewrite };
71
71
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/routing/index.ts"],"mappings":";;;;;;AA8FA;;;;;;cAAa,aAAA,8BAtBM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,mBAAA,cAChB,aAAA;;;;;;;;cA6BQ,gBAAA,8BA/BM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,mBAAA,cAChB,aAAA;;;AA6BL;;;;;;cAUa,kBAAA,8BAzCM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,mBAAA,cAChB,aAAA;;;;;;;;;cAiDQ,gBAAA,8BAnDM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,mBAAA,cAChB,aAAA;;AAuCL;;;;;;cAmBa,kBAAA,8BA5DM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,mBAAA,cAChB,aAAA;;;;;;;;cAmEQ,WAAA,8BArEM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,mBAAA,cAChB,aAAA;;;AAiDL;;;;;cA2Ba,qBAAA,8BA9EM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,mBAAA,cAChB,aAAA;;;;;cAkFQ,WAAA,8BApFM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,mBAAA,cAChB,aAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/routing/index.ts"],"mappings":";;;;;;AAkGA;;;;;;cAAa,aAAA,8BAtBM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,OAAA,CAAQ,mBAAA,eACxB,aAAA;;;;;;;;cA6BQ,gBAAA,8BA/BM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,OAAA,CAAQ,mBAAA,eACxB,aAAA;;;;;AA6BL;;;;cAUa,kBAAA,8BAzCM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,OAAA,CAAQ,mBAAA,eACxB,aAAA;;;;;;;;;cAiDQ,gBAAA,8BAnDM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,OAAA,CAAQ,mBAAA,eACxB,aAAA;;;;;;AAuCL;;cAmBa,kBAAA,8BA5DM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,OAAA,CAAQ,mBAAA,eACxB,aAAA;;;;;;;;cAmEQ,WAAA,8BArEM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,OAAA,CAAQ,mBAAA,eACxB,aAAA;;;;;;;;cA4EQ,qBAAA,8BA9EM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,OAAA,CAAQ,mBAAA,eACxB,aAAA;AAiDL;;;;AAAA,cAiCa,WAAA,8BApFM,KAAA,EACR,MAAA,CAAO,CAAA,EAAG,OAAA,CAAQ,mBAAA,eACxB,aAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intlayer",
3
- "version": "8.3.0",
3
+ "version": "8.3.2",
4
4
  "private": false,
5
5
  "description": "Manage internationalization i18n in a simple way, through TypeScript, declaration file, declare your multilingual content every where in your code.",
6
6
  "keywords": [
@@ -98,20 +98,20 @@
98
98
  "typecheck": "tsc --noEmit --project tsconfig.types.json"
99
99
  },
100
100
  "dependencies": {
101
- "@intlayer/cli": "8.3.0",
102
- "@intlayer/config": "8.3.0",
103
- "@intlayer/core": "8.3.0",
104
- "@intlayer/types": "8.3.0"
101
+ "@intlayer/cli": "8.3.2",
102
+ "@intlayer/config": "8.3.2",
103
+ "@intlayer/core": "8.3.2",
104
+ "@intlayer/types": "8.3.2"
105
105
  },
106
106
  "devDependencies": {
107
- "@types/node": "25.4.0",
107
+ "@types/node": "25.5.0",
108
108
  "@utils/ts-config": "1.0.4",
109
109
  "@utils/ts-config-types": "1.0.4",
110
110
  "@utils/tsdown-config": "1.0.4",
111
111
  "rimraf": "6.1.3",
112
112
  "tsdown": "0.21.2",
113
113
  "typescript": "5.9.3",
114
- "vitest": "4.0.18"
114
+ "vitest": "4.1.0"
115
115
  },
116
116
  "engines": {
117
117
  "node": ">=14.18"