@edgeone/vite-core 1.0.0

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 (73) hide show
  1. package/dist/bundler.d.ts +13 -0
  2. package/dist/bundler.d.ts.map +1 -0
  3. package/dist/bundler.js +101 -0
  4. package/dist/bundler.js.map +1 -0
  5. package/dist/core.d.ts +11 -0
  6. package/dist/core.d.ts.map +1 -0
  7. package/dist/core.js +330 -0
  8. package/dist/core.js.map +1 -0
  9. package/dist/factory/detectors.d.ts +13 -0
  10. package/dist/factory/detectors.d.ts.map +1 -0
  11. package/dist/factory/detectors.js +46 -0
  12. package/dist/factory/detectors.js.map +1 -0
  13. package/dist/factory/hooks.d.ts +29 -0
  14. package/dist/factory/hooks.d.ts.map +1 -0
  15. package/dist/factory/hooks.js +158 -0
  16. package/dist/factory/hooks.js.map +1 -0
  17. package/dist/factory/index.d.ts +24 -0
  18. package/dist/factory/index.d.ts.map +1 -0
  19. package/dist/factory/index.js +47 -0
  20. package/dist/factory/index.js.map +1 -0
  21. package/dist/factory/presets.d.ts +27 -0
  22. package/dist/factory/presets.d.ts.map +1 -0
  23. package/dist/factory/presets.js +186 -0
  24. package/dist/factory/presets.js.map +1 -0
  25. package/dist/factory.d.ts +183 -0
  26. package/dist/factory.d.ts.map +1 -0
  27. package/dist/factory.js +482 -0
  28. package/dist/factory.js.map +1 -0
  29. package/dist/helpers.d.ts +53 -0
  30. package/dist/helpers.d.ts.map +1 -0
  31. package/dist/helpers.js +177 -0
  32. package/dist/helpers.js.map +1 -0
  33. package/dist/index.d.ts +16 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +12 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/route/index.d.ts +7 -0
  38. package/dist/route/index.d.ts.map +1 -0
  39. package/dist/route/index.js +6 -0
  40. package/dist/route/index.js.map +1 -0
  41. package/dist/route/parser.d.ts +18 -0
  42. package/dist/route/parser.d.ts.map +1 -0
  43. package/dist/route/parser.js +187 -0
  44. package/dist/route/parser.js.map +1 -0
  45. package/dist/route/regex.d.ts +31 -0
  46. package/dist/route/regex.d.ts.map +1 -0
  47. package/dist/route/regex.js +140 -0
  48. package/dist/route/regex.js.map +1 -0
  49. package/dist/route/regex.test.d.ts +7 -0
  50. package/dist/route/regex.test.d.ts.map +1 -0
  51. package/dist/route/regex.test.js +662 -0
  52. package/dist/route/regex.test.js.map +1 -0
  53. package/dist/route/types.d.ts +58 -0
  54. package/dist/route/types.d.ts.map +1 -0
  55. package/dist/route/types.js +5 -0
  56. package/dist/route/types.js.map +1 -0
  57. package/dist/route-parser.d.ts +8 -0
  58. package/dist/route-parser.d.ts.map +1 -0
  59. package/dist/route-parser.js +8 -0
  60. package/dist/route-parser.js.map +1 -0
  61. package/dist/types.d.ts +160 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +5 -0
  64. package/dist/types.js.map +1 -0
  65. package/dist/utils.d.ts +40 -0
  66. package/dist/utils.d.ts.map +1 -0
  67. package/dist/utils.js +242 -0
  68. package/dist/utils.js.map +1 -0
  69. package/dist/vite-config-parser.d.ts +62 -0
  70. package/dist/vite-config-parser.d.ts.map +1 -0
  71. package/dist/vite-config-parser.js +229 -0
  72. package/dist/vite-config-parser.js.map +1 -0
  73. package/package.json +51 -0
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Route Regex - Convert dynamic routes to regular expressions
3
+ */
4
+ /** Check if a route path contains dynamic segments */
5
+ export function isDynamicRoute(routePath) {
6
+ if (/:[\w]+\??/.test(routePath))
7
+ return true;
8
+ if (/\$[\w]*/.test(routePath))
9
+ return true;
10
+ if (/\[{1,2}(\.{3})?[\w]+\]{1,2}/.test(routePath))
11
+ return true;
12
+ if (/@[\w]+/.test(routePath))
13
+ return true;
14
+ if (/\*/.test(routePath))
15
+ return true;
16
+ return false;
17
+ }
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
+ }
28
+ function detectRouteSyntax(routePath) {
29
+ if (/@[\w]+/.test(routePath))
30
+ return "at";
31
+ if (/\$[\w]+/.test(routePath) || /\/\$$/.test(routePath))
32
+ return "dollar";
33
+ if (/\[{1,2}(\.{3})?[\w]+\]{1,2}/.test(routePath))
34
+ return "bracket";
35
+ return "colon";
36
+ }
37
+ /** Convert a route path to a regular expression pattern */
38
+ export function routeToRegex(routePath, options = {}) {
39
+ const { syntax = "auto", trailingSlashOptional = true, anchored = true } = options;
40
+ const effectiveSyntax = syntax === "auto" ? detectRouteSyntax(routePath) : syntax;
41
+ let pattern = routePath.replace(/[.+^${}()|[\]\\]/g, "\\$&");
42
+ switch (effectiveSyntax) {
43
+ case "at":
44
+ pattern = convertAtSyntax(pattern);
45
+ break;
46
+ case "dollar":
47
+ pattern = convertDollarSyntax(pattern);
48
+ break;
49
+ case "bracket":
50
+ pattern = convertBracketSyntax(pattern);
51
+ break;
52
+ case "colon":
53
+ default:
54
+ pattern = convertColonSyntax(pattern);
55
+ break;
56
+ }
57
+ if (trailingSlashOptional && !pattern.endsWith(")?$") && !pattern.endsWith(")?")) {
58
+ pattern = pattern + "/?";
59
+ }
60
+ if (anchored) {
61
+ if (!pattern.startsWith("^"))
62
+ pattern = "^" + pattern;
63
+ if (!pattern.endsWith("$"))
64
+ pattern = pattern + "$";
65
+ }
66
+ return pattern;
67
+ }
68
+ function convertColonSyntax(pattern) {
69
+ if (/\/\*$/.test(pattern) || pattern === "*") {
70
+ pattern = pattern.replace(/\/?\*$/, "(?:/(.*))?");
71
+ }
72
+ else if (/\*/.test(pattern)) {
73
+ pattern = pattern.replace(/\*/g, "(.*)");
74
+ }
75
+ pattern = pattern.replace(/\/:(\w+)\?/g, "(?:/([^/]+))?");
76
+ pattern = pattern.replace(/:(\w+)/g, "([^/]+)");
77
+ return pattern;
78
+ }
79
+ function convertDollarSyntax(pattern) {
80
+ if (/\\\$(?!\w)/.test(pattern) || pattern === "\\$") {
81
+ pattern = pattern.replace(/\/?\\\$(?!\w)/, "(?:/(.*))?");
82
+ }
83
+ pattern = pattern.replace(/\\\$(\w+)/g, "([^/]+)");
84
+ return pattern;
85
+ }
86
+ function convertBracketSyntax(pattern) {
87
+ pattern = pattern.replace(/\/\\\[\\\[\\\.\\\.\\\.(\w+)\\\]\\\]/g, "(?:/(.*))?");
88
+ pattern = pattern.replace(/\/\\\[\\\.\\\.\\\.(\w+)\\\]/g, "(?:/(.*))?");
89
+ pattern = pattern.replace(/\/\\\[\\\[(\w+)\\\]\\\]/g, "(?:/([^/]+))?");
90
+ pattern = pattern.replace(/\\\[(\w+)\\\]/g, "([^/]+)");
91
+ return pattern;
92
+ }
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 */
123
+ export function addRegexToRoutes(routes, options = {}) {
124
+ return routes.map(route => {
125
+ const routePath = route.srcRoute || route.path;
126
+ if (isDynamicRoute(routePath)) {
127
+ return { ...route, regex: routeToRegex(routePath, options) };
128
+ }
129
+ return route;
130
+ });
131
+ }
132
+ /** Convert routes to simplified meta.json format */
133
+ export function convertRoutesToMetaFormat(routes, options = {}) {
134
+ return routes.map(route => {
135
+ const routePath = route.srcRoute || route.path;
136
+ const regexPath = isDynamicRoute(routePath) ? routeToRegex(routePath, options) : routePath;
137
+ return { regexPath, isStatic: route.isStatic };
138
+ });
139
+ }
140
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../src/route/regex.ts"],"names":[],"mappings":"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"}
@@ -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"}