@chuckcchen/vite-plugin 1.0.19 → 1.0.21

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.
Files changed (59) hide show
  1. package/dist/bundler.d.ts +5 -18
  2. package/dist/bundler.d.ts.map +1 -1
  3. package/dist/bundler.js +43 -30
  4. package/dist/bundler.js.map +1 -1
  5. package/dist/core.d.ts +2 -18
  6. package/dist/core.d.ts.map +1 -1
  7. package/dist/core.js +125 -248
  8. package/dist/core.js.map +1 -1
  9. package/dist/factory/detectors.d.ts +5 -15
  10. package/dist/factory/detectors.d.ts.map +1 -1
  11. package/dist/factory/detectors.js +8 -22
  12. package/dist/factory/detectors.js.map +1 -1
  13. package/dist/factory/hooks.d.ts +4 -59
  14. package/dist/factory/hooks.d.ts.map +1 -1
  15. package/dist/factory/hooks.js +18 -117
  16. package/dist/factory/hooks.js.map +1 -1
  17. package/dist/factory/index.d.ts +7 -51
  18. package/dist/factory/index.d.ts.map +1 -1
  19. package/dist/factory/index.js +10 -55
  20. package/dist/factory/index.js.map +1 -1
  21. package/dist/factory/presets.d.ts +16 -121
  22. package/dist/factory/presets.d.ts.map +1 -1
  23. package/dist/factory/presets.js +143 -174
  24. package/dist/factory/presets.js.map +1 -1
  25. package/dist/index.d.ts +6 -6
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +6 -35
  28. package/dist/index.js.map +1 -1
  29. package/dist/route/index.d.ts +1 -1
  30. package/dist/route/index.d.ts.map +1 -1
  31. package/dist/route/index.js +1 -3
  32. package/dist/route/index.js.map +1 -1
  33. package/dist/route/parser.d.ts +0 -37
  34. package/dist/route/parser.d.ts.map +1 -1
  35. package/dist/route/parser.js +11 -124
  36. package/dist/route/parser.js.map +1 -1
  37. package/dist/route/regex.d.ts +15 -80
  38. package/dist/route/regex.d.ts.map +1 -1
  39. package/dist/route/regex.js +65 -169
  40. package/dist/route/regex.js.map +1 -1
  41. package/dist/route/regex.test.d.ts +7 -0
  42. package/dist/route/regex.test.d.ts.map +1 -0
  43. package/dist/route/regex.test.js +662 -0
  44. package/dist/route/regex.test.js.map +1 -0
  45. package/dist/route/types.d.ts +0 -58
  46. package/dist/route/types.d.ts.map +1 -1
  47. package/dist/types.d.ts +36 -147
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/types.js +0 -3
  50. package/dist/types.js.map +1 -1
  51. package/dist/utils.d.ts +1 -78
  52. package/dist/utils.d.ts.map +1 -1
  53. package/dist/utils.js +11 -144
  54. package/dist/utils.js.map +1 -1
  55. package/dist/vite-config-parser.d.ts +4 -141
  56. package/dist/vite-config-parser.d.ts.map +1 -1
  57. package/dist/vite-config-parser.js +25 -235
  58. package/dist/vite-config-parser.js.map +1 -1
  59. package/package.json +1 -1
@@ -1,94 +1,48 @@
1
1
  /**
2
2
  * Route Regex - Convert dynamic routes to regular expressions
3
- *
4
- * This module provides utilities to convert dynamic route paths from various
5
- * framework syntaxes into regular expression patterns for route matching.
6
- */
7
- // ============================================================================
8
- // Dynamic Route Detection
9
- // ============================================================================
10
- /**
11
- * Check if a route path contains dynamic segments
12
- *
13
- * Detects patterns from multiple syntaxes:
14
- * - Colon syntax: :param, :param?, * (React Router, Remix, Express)
15
- * - Dollar syntax: $param, $ (TanStack Start)
16
- * - Bracket syntax: [param], [[param]], [...param] (Next.js, Nuxt, SvelteKit)
17
3
  */
4
+ /** Check if a route path contains dynamic segments */
18
5
  export function isDynamicRoute(routePath) {
19
- // Colon syntax: :param or :param?
20
6
  if (/:[\w]+\??/.test(routePath))
21
7
  return true;
22
- // Dollar syntax: $param or lone $
23
8
  if (/\$[\w]*/.test(routePath))
24
9
  return true;
25
- // Bracket syntax: [param], [[param]], [...param]
26
- if (/\[{1,2}\.{0,3}[\w]+\]{1,2}/.test(routePath))
10
+ if (/\[{1,2}(\.{3})?[\w]+\]{1,2}/.test(routePath))
11
+ return true;
12
+ if (/@[\w]+/.test(routePath))
27
13
  return true;
28
- // Wildcard: *
29
14
  if (/\*/.test(routePath))
30
15
  return true;
31
16
  return false;
32
17
  }
33
- /**
34
- * Detect route syntax from route path
35
- */
18
+ /** Check if a route is a catch-all route */
19
+ export function isCatchAllRoute(routePath) {
20
+ if (/\*/.test(routePath))
21
+ return true;
22
+ if (/\/\$$/.test(routePath) || routePath === "$")
23
+ return true;
24
+ if (/\[{1,2}\.{3}[\w]+\]{1,2}/.test(routePath))
25
+ return true;
26
+ return false;
27
+ }
36
28
  function detectRouteSyntax(routePath) {
37
- // Dollar syntax: $param style
38
- if (/\$[\w]+/.test(routePath) || /\/\$$/.test(routePath)) {
29
+ if (/@[\w]+/.test(routePath))
30
+ return "at";
31
+ if (/\$[\w]+/.test(routePath) || /\/\$$/.test(routePath))
39
32
  return "dollar";
40
- }
41
- // Bracket syntax: [param] style
42
- if (/\[{1,2}\.{0,3}[\w]+\]{1,2}/.test(routePath)) {
33
+ if (/\[{1,2}(\.{3})?[\w]+\]{1,2}/.test(routePath))
43
34
  return "bracket";
44
- }
45
- // Colon syntax: :param style (default)
46
35
  return "colon";
47
36
  }
48
- // ============================================================================
49
- // Route to Regex Conversion
50
- // ============================================================================
51
- /**
52
- * Convert a route path to a regular expression pattern
53
- *
54
- * Supports multiple route parameter syntaxes:
55
- *
56
- * **Colon syntax** (React Router, Remix, Express, Vue Router):
57
- * - `:slug` → `([^/]+)` - Required dynamic parameter
58
- * - `:slug?` → `([^/]+)?` - Optional dynamic parameter
59
- * - `*` → `(.*)` - Wildcard/splat (catches everything)
60
- *
61
- * **Dollar syntax** (TanStack Start):
62
- * - `$slug` → `([^/]+)` - Required dynamic parameter
63
- * - `$` (at end) → `(.*)` - Wildcard/splat
64
- *
65
- * **Bracket syntax** (Next.js, Nuxt, SvelteKit):
66
- * - `[slug]` → `([^/]+)` - Required dynamic parameter
67
- * - `[[slug]]` → `([^/]+)?` - Optional dynamic parameter
68
- * - `[...slug]` → `(.*)` - Catch-all
69
- * - `[[...slug]]` → `(.*)?` - Optional catch-all
70
- *
71
- * @example
72
- * // Colon syntax
73
- * routeToRegex("/blog/:slug") // "^/blog/([^/]+)/?$"
74
- * routeToRegex("/files/*") // "^/files(?:/(.*))?$"
75
- *
76
- * // Dollar syntax
77
- * routeToRegex("/blog/$slug") // "^/blog/([^/]+)/?$"
78
- * routeToRegex("/files/$") // "^/files(?:/(.*))?$"
79
- *
80
- * // Bracket syntax
81
- * routeToRegex("/blog/[slug]") // "^/blog/([^/]+)/?$"
82
- * routeToRegex("/files/[...path]") // "^/files(?:/(.*))?$"
83
- */
37
+ /** Convert a route path to a regular expression pattern */
84
38
  export function routeToRegex(routePath, options = {}) {
85
- const { syntax = "auto", trailingSlashOptional = true, anchored = true, } = options;
86
- // Determine which syntax to use
39
+ const { syntax = "auto", trailingSlashOptional = true, anchored = true } = options;
87
40
  const effectiveSyntax = syntax === "auto" ? detectRouteSyntax(routePath) : syntax;
88
- // Escape special regex characters (except those we'll handle)
89
41
  let pattern = routePath.replace(/[.+^${}()|[\]\\]/g, "\\$&");
90
- // Handle syntax-specific patterns
91
42
  switch (effectiveSyntax) {
43
+ case "at":
44
+ pattern = convertAtSyntax(pattern);
45
+ break;
92
46
  case "dollar":
93
47
  pattern = convertDollarSyntax(pattern);
94
48
  break;
@@ -100,145 +54,87 @@ export function routeToRegex(routePath, options = {}) {
100
54
  pattern = convertColonSyntax(pattern);
101
55
  break;
102
56
  }
103
- // Add trailing slash handling
104
57
  if (trailingSlashOptional && !pattern.endsWith(")?$") && !pattern.endsWith(")?")) {
105
58
  pattern = pattern + "/?";
106
59
  }
107
- // Add anchors
108
60
  if (anchored) {
109
- if (!pattern.startsWith("^")) {
61
+ if (!pattern.startsWith("^"))
110
62
  pattern = "^" + pattern;
111
- }
112
- if (!pattern.endsWith("$")) {
63
+ if (!pattern.endsWith("$"))
113
64
  pattern = pattern + "$";
114
- }
115
65
  }
116
66
  return pattern;
117
67
  }
118
- // ============================================================================
119
- // Syntax Converters
120
- // ============================================================================
121
- /**
122
- * Convert colon syntax patterns (:param)
123
- * Used by: React Router, Remix, Express, Vue Router
124
- * - :param → ([^/]+)
125
- * - :param? → ([^/]+)?
126
- * - * → (.*)
127
- */
128
68
  function convertColonSyntax(pattern) {
129
- // Handle wildcard * at the end (splat route)
130
- // /files/* → /files(?:/(.*))?
131
- // Note: * is NOT escaped by the caller, so we match literal *
132
69
  if (/\/\*$/.test(pattern) || pattern === "*") {
133
70
  pattern = pattern.replace(/\/?\*$/, "(?:/(.*))?");
134
71
  }
135
72
  else if (/\*/.test(pattern)) {
136
- // Handle inline * (rare but possible)
137
73
  pattern = pattern.replace(/\*/g, "(.*)");
138
74
  }
139
- // Handle optional parameters :param?
140
- pattern = pattern.replace(/:(\w+)\?/g, "([^/]+)?");
141
- // Handle required parameters :param
75
+ pattern = pattern.replace(/\/:(\w+)\?/g, "(?:/([^/]+))?");
142
76
  pattern = pattern.replace(/:(\w+)/g, "([^/]+)");
143
77
  return pattern;
144
78
  }
145
- /**
146
- * Convert dollar syntax patterns ($param)
147
- * Used by: TanStack Start
148
- * - $param → ([^/]+)
149
- * - $ (at end, lone) → (.*)
150
- */
151
79
  function convertDollarSyntax(pattern) {
152
- // Handle splat $ at the end: /files/$ → /files(?:/(.*))?
153
- // Match /$ at end or lone $
154
- if (pattern.endsWith("/\\$") || pattern === "\\$") {
155
- pattern = pattern.replace(/\/?\\\$$/, "(?:/(.*))?");
156
- }
157
- else if (pattern.endsWith("\\$")) {
158
- // Handle $ at end without leading slash
159
- pattern = pattern.replace(/\\\$$/, "(?:/(.*))?");
80
+ if (/\\\$(?!\w)/.test(pattern) || pattern === "\\$") {
81
+ pattern = pattern.replace(/\/?\\\$(?!\w)/, "(?:/(.*))?");
160
82
  }
161
- // Handle named parameters $param (not lone $)
162
- // Must be careful not to match already-converted patterns
163
83
  pattern = pattern.replace(/\\\$(\w+)/g, "([^/]+)");
164
84
  return pattern;
165
85
  }
166
- /**
167
- * Convert bracket syntax patterns ([param])
168
- * Used by: Next.js, Nuxt, SvelteKit
169
- * - [param] → ([^/]+)
170
- * - [[param]] → ([^/]+)?
171
- * - [...param] → (.*)
172
- * - [[...param]] → (.*)?
173
- */
174
86
  function convertBracketSyntax(pattern) {
175
- // Handle optional catch-all [[...param]]
176
- pattern = pattern.replace(/\\\[\\\[\\\.\\\.\\\.(\w+)\\\]\\\]/g, "(.*)?");
177
- // Handle catch-all [...param]
178
- pattern = pattern.replace(/\\\[\\\.\\\.\\\.(\w+)\\\]/g, "(?:/(.*))?");
179
- // Handle optional dynamic [[param]]
180
- pattern = pattern.replace(/\\\[\\\[(\w+)\\\]\\\]/g, "([^/]+)?");
181
- // Handle required dynamic [param]
87
+ pattern = pattern.replace(/\/\\\[\\\[\\\.\\\.\\\.(\w+)\\\]\\\]/g, "(?:/(.*))?");
88
+ pattern = pattern.replace(/\/\\\[\\\.\\\.\\\.(\w+)\\\]/g, "(?:/(.*))?");
89
+ pattern = pattern.replace(/\/\\\[\\\[(\w+)\\\]\\\]/g, "(?:/([^/]+))?");
182
90
  pattern = pattern.replace(/\\\[(\w+)\\\]/g, "([^/]+)");
183
91
  return pattern;
184
92
  }
185
- // ============================================================================
186
- // Route Array Utilities
187
- // ============================================================================
188
- /**
189
- * Add regex patterns to routes that contain dynamic segments
190
- *
191
- * This function processes an array of RouteInfo and adds the `regex` field
192
- * to routes that contain dynamic parameters.
193
- *
194
- * @param routes - Array of route info objects
195
- * @param options - Options for regex conversion
196
- * @returns Routes with regex patterns added where applicable
197
- */
93
+ function convertAtSyntax(pattern) {
94
+ // @param ([^/]+)
95
+ pattern = pattern.replace(/@(\w+)/g, "([^/]+)");
96
+ return pattern;
97
+ }
98
+ function getRoutePriority(routePath) {
99
+ let score = 0;
100
+ if (isCatchAllRoute(routePath)) {
101
+ score += 1000;
102
+ }
103
+ else if (isDynamicRoute(routePath)) {
104
+ score += 100;
105
+ }
106
+ const segments = routePath.split('/').filter(Boolean);
107
+ score -= segments.length * 10;
108
+ const staticSegments = segments.filter(seg => {
109
+ return !/:[\w]+/.test(seg) && !/\$[\w]*/.test(seg) && !/\[/.test(seg) && !/@[\w]+/.test(seg) && seg !== '*';
110
+ });
111
+ score -= staticSegments.length * 5;
112
+ return score;
113
+ }
114
+ /** Sort routes by priority for correct matching order */
115
+ export function sortRoutesByPriority(routes) {
116
+ return [...routes].sort((a, b) => {
117
+ const aPath = a.srcRoute || a.path;
118
+ const bPath = b.srcRoute || b.path;
119
+ return getRoutePriority(aPath) - getRoutePriority(bPath);
120
+ });
121
+ }
122
+ /** Add regex patterns to routes with dynamic segments */
198
123
  export function addRegexToRoutes(routes, options = {}) {
199
124
  return routes.map(route => {
200
- // Use srcRoute if available, otherwise use path
201
125
  const routePath = route.srcRoute || route.path;
202
- // Only add regex for dynamic routes
203
126
  if (isDynamicRoute(routePath)) {
204
- return {
205
- ...route,
206
- regex: routeToRegex(routePath, options),
207
- };
127
+ return { ...route, regex: routeToRegex(routePath, options) };
208
128
  }
209
129
  return route;
210
130
  });
211
131
  }
212
- /**
213
- * Convert routes to simplified meta.json format
214
- *
215
- * This function converts RouteInfo array to MetaRouteInfo array,
216
- * keeping only `regexPath` and `isStatic` fields for EdgeOne runtime.
217
- *
218
- * - Dynamic routes (with parameters like :id, $id, [id]) are converted to regex patterns
219
- * - Static routes keep their original path without conversion
220
- *
221
- * @param routes - Array of route info objects
222
- * @param options - Options for regex conversion
223
- * @returns Simplified routes for meta.json
224
- */
132
+ /** Convert routes to simplified meta.json format */
225
133
  export function convertRoutesToMetaFormat(routes, options = {}) {
226
134
  return routes.map(route => {
227
- // Use srcRoute if available, otherwise use path
228
135
  const routePath = route.srcRoute || route.path;
229
- let regexPath;
230
- if (isDynamicRoute(routePath)) {
231
- // Dynamic route: convert to regex pattern
232
- regexPath = routeToRegex(routePath, options);
233
- }
234
- else {
235
- // Static route: keep original path, no conversion needed
236
- regexPath = routePath;
237
- }
238
- return {
239
- regexPath,
240
- isStatic: route.isStatic,
241
- };
136
+ const regexPath = isDynamicRoute(routePath) ? routeToRegex(routePath, options) : routePath;
137
+ return { regexPath, isStatic: route.isStatic };
242
138
  });
243
139
  }
244
140
  //# sourceMappingURL=regex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../src/route/regex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../src/route/regex.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,sDAAsD;AACtD,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAI,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1E,IAAI,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACpE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,UAA+B,EAAE;IAC/E,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,qBAAqB,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEnF,MAAM,eAAe,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAClF,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAE7D,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,IAAI;YACP,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,QAAQ;YACX,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM;QACR,KAAK,SAAS;YACZ,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM;QACR,KAAK,OAAO,CAAC;QACb;YACE,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM;IACV,CAAC;IAED,IAAI,qBAAqB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjF,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC;IACtD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QAC7C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IAC1D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEhD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAC;IAChF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAC;IACxE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;IACvE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,mBAAmB;IACnB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB;IACzC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,KAAK,IAAI,IAAI,CAAC;IAChB,CAAC;SAAM,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;IAE9B,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC;IAC9G,CAAC,CAAC,CAAC;IACH,KAAK,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAEnC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;QACnC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;QACnC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,MAAmB,EAAE,UAA+B,EAAE;IACrF,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;QAC/C,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,yBAAyB,CAAC,MAAmB,EAAE,UAA+B,EAAE;IAC9F,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;QAC/C,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Route Regex Tests
3
+ *
4
+ * Comprehensive test suite for route regex conversion and matching
5
+ */
6
+ export declare function runAllTests(): void;
7
+ //# sourceMappingURL=regex.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.test.d.ts","sourceRoot":"","sources":["../../src/route/regex.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwvBH,wBAAgB,WAAW,SA6B1B"}