@zphhpzzph/vue-route-gen 3.0.0 → 3.1.1

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.
@@ -0,0 +1,13 @@
1
+ export interface FileCache {
2
+ files: string;
3
+ lastRoutesHash: string | null;
4
+ }
5
+ /**
6
+ * Load cache from disk
7
+ */
8
+ export declare function loadCache(): FileCache;
9
+ /**
10
+ * Save cache to disk
11
+ */
12
+ export declare function saveCache(cache: FileCache): void;
13
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAUrC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAMhD"}
package/dist/cache.js ADDED
@@ -0,0 +1,29 @@
1
+ import fs from 'node:fs';
2
+ import path from 'path';
3
+ const CACHE_FILE = path.resolve(process.cwd(), 'node_modules/.cache/route-gen.json');
4
+ /**
5
+ * Load cache from disk
6
+ */
7
+ export function loadCache() {
8
+ try {
9
+ if (fs.existsSync(CACHE_FILE)) {
10
+ const data = fs.readFileSync(CACHE_FILE, 'utf8');
11
+ return JSON.parse(data);
12
+ }
13
+ }
14
+ catch {
15
+ // Ignore cache read errors
16
+ }
17
+ return { files: '{}', lastRoutesHash: null };
18
+ }
19
+ /**
20
+ * Save cache to disk
21
+ */
22
+ export function saveCache(cache) {
23
+ const cacheDir = path.dirname(CACHE_FILE);
24
+ if (!fs.existsSync(cacheDir)) {
25
+ fs.mkdirSync(cacheDir, { recursive: true });
26
+ }
27
+ fs.writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2), 'utf8');
28
+ }
29
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oCAAoC,CAAC,CAAC;AAOrF;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAgB;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { RouteData } from './route-builder.js';
2
+ /**
3
+ * Render complete routes file as TypeScript code
4
+ */
5
+ export declare function renderRoutesFile({ routes, routeNameList, routePathList, routePathByName, routeParamsByName, routeKeyData, }: RouteData): string;
6
+ //# sourceMappingURL=code-gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-gen.d.ts","sourceRoot":"","sources":["../src/code-gen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAwGhE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,aAAa,EACb,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,YAAY,GACb,EAAE,SAAS,GAAG,MAAM,CA8NpB"}
@@ -0,0 +1,301 @@
1
+ import { toConstKey } from './utils.js';
2
+ import { valueToLiteralType } from './types.js';
3
+ /**
4
+ * Render meta object as const for type inference
5
+ */
6
+ function renderMetaAsConst(meta, indent) {
7
+ const nextIndent = `${indent} `;
8
+ const entries = Object.entries(meta).map(([key, value]) => {
9
+ let valueStr;
10
+ if (typeof value === 'string') {
11
+ valueStr = JSON.stringify(value);
12
+ }
13
+ else if (typeof value === 'boolean' || typeof value === 'number') {
14
+ valueStr = String(value);
15
+ }
16
+ else if (Array.isArray(value)) {
17
+ valueStr = `[${value.map((v) => JSON.stringify(v)).join(', ')}]`;
18
+ }
19
+ else if (typeof value === 'object' && value !== null) {
20
+ valueStr = JSON.stringify(value);
21
+ }
22
+ else {
23
+ valueStr = JSON.stringify(value);
24
+ }
25
+ return `${nextIndent}${JSON.stringify(key)}: ${valueStr},`;
26
+ });
27
+ return `${indent}{
28
+ ${entries.join('\n')}
29
+ ${indent}} as const`;
30
+ }
31
+ /**
32
+ * Render a single route entry as TypeScript code
33
+ */
34
+ function renderRoute(finalRoute, indent = ' ') {
35
+ const nextIndent = `${indent} `;
36
+ const metaStr = finalRoute.meta && Object.keys(finalRoute.meta).length > 0
37
+ ? `${nextIndent}meta: ${renderMetaAsConst(finalRoute.meta, nextIndent)},\n`
38
+ : '';
39
+ const childrenStr = finalRoute.children.length === 0
40
+ ? `${nextIndent}children: [],\n`
41
+ : `${nextIndent}children: [
42
+ ${finalRoute.children.map((child) => renderRoute(child, `${nextIndent} `)).join(',\n')}
43
+ ${nextIndent}],\n`;
44
+ // Render optional fields
45
+ const aliasStr = finalRoute.alias !== undefined
46
+ ? `${nextIndent}alias: ${JSON.stringify(finalRoute.alias)},\n`
47
+ : '';
48
+ const redirectStr = finalRoute.redirect !== undefined
49
+ ? `${nextIndent}redirect: ${renderValue(finalRoute.redirect, nextIndent)},\n`
50
+ : '';
51
+ const propsStr = finalRoute.props !== undefined
52
+ ? `${nextIndent}props: ${renderValue(finalRoute.props, nextIndent)},\n`
53
+ : '';
54
+ const beforeEnterStr = finalRoute.beforeEnter !== undefined
55
+ ? `${nextIndent}beforeEnter: ${finalRoute.beforeEnter},\n`
56
+ : '';
57
+ return `${indent}{
58
+ ${nextIndent}path: ${JSON.stringify(finalRoute.path)},
59
+ ${nextIndent}name: ${JSON.stringify(finalRoute.name)},
60
+ ${aliasStr}${redirectStr}${propsStr}${nextIndent}component: () => import(${JSON.stringify(finalRoute.importPath)}),
61
+ ${metaStr}${beforeEnterStr}${childrenStr}${indent}}`;
62
+ }
63
+ /**
64
+ * Render a value (could be object, array, primitive) as code
65
+ */
66
+ function renderValue(value, indent) {
67
+ if (value === null) {
68
+ return 'null';
69
+ }
70
+ if (typeof value === 'string') {
71
+ return JSON.stringify(value);
72
+ }
73
+ if (typeof value === 'boolean' || typeof value === 'number') {
74
+ return String(value);
75
+ }
76
+ if (Array.isArray(value)) {
77
+ return `[${value.map((v) => renderValue(v, indent)).join(', ')}]`;
78
+ }
79
+ if (typeof value === 'object') {
80
+ const entries = Object.entries(value);
81
+ if (entries.length === 0)
82
+ return '{}';
83
+ const nextIndent = `${indent} `;
84
+ const body = entries.map(([k, v]) => `${nextIndent}${JSON.stringify(k)}: ${renderValue(v, nextIndent)}`).join(',\n');
85
+ return `{\n${body}\n${indent}}`;
86
+ }
87
+ return JSON.stringify(value);
88
+ }
89
+ /**
90
+ * Render complete routes file as TypeScript code
91
+ */
92
+ export function renderRoutesFile({ routes, routeNameList, routePathList, routePathByName, routeParamsByName, routeKeyData, }) {
93
+ const routeKeyEntries = [];
94
+ const usedKeys = new Set();
95
+ // Build map of route entries by name for quick lookup
96
+ const entryMap = new Map();
97
+ for (const entry of routeKeyData) {
98
+ entryMap.set(entry.name, {
99
+ name: entry.name,
100
+ path: entry.path,
101
+ defaultName: entry.defaultName,
102
+ });
103
+ }
104
+ for (const name of routeNameList) {
105
+ const entry = entryMap.get(name);
106
+ if (!entry)
107
+ continue;
108
+ const baseKey = toConstKey(entry.defaultName) || 'ROUTE';
109
+ let key = baseKey;
110
+ let suffix = 1;
111
+ while (usedKeys.has(key)) {
112
+ suffix += 1;
113
+ key = `${baseKey}_${suffix}`;
114
+ }
115
+ usedKeys.add(key);
116
+ routeKeyEntries.push({
117
+ key,
118
+ name: entry.name,
119
+ path: entry.path,
120
+ defaultName: entry.defaultName,
121
+ });
122
+ }
123
+ // Collect all unique meta keys across all routes (recursively)
124
+ const allMetaKeys = new Set();
125
+ /**
126
+ * Recursively collect meta keys from routes and their children
127
+ */
128
+ function collectMetaKeys(route) {
129
+ if (route.meta && Object.keys(route.meta).length > 0) {
130
+ Object.keys(route.meta).forEach((key) => allMetaKeys.add(key));
131
+ }
132
+ if (route.children) {
133
+ route.children.forEach((child) => collectMetaKeys(child));
134
+ }
135
+ }
136
+ for (const route of routes) {
137
+ collectMetaKeys(route);
138
+ }
139
+ const sortedMetaKeys = Array.from(allMetaKeys).sort();
140
+ // Build a flat map of all routes (including nested children) by name
141
+ const allRoutesByName = new Map();
142
+ /**
143
+ * Recursively build map of all routes by name
144
+ */
145
+ function buildRouteMap(route) {
146
+ allRoutesByName.set(route.name, route);
147
+ if (route.children) {
148
+ route.children.forEach((child) => buildRouteMap(child));
149
+ }
150
+ }
151
+ for (const route of routes) {
152
+ buildRouteMap(route);
153
+ }
154
+ return `// This file is auto-generated by @zphhpzzph/vue-route-gen.
155
+ // Do not edit this file directly.
156
+ import type { RouteRecordRaw, RouteLocationNormalizedLoaded, Router, LocationQuery } from 'vue-router';
157
+
158
+ export const ROUTE_NAME = {
159
+ ${routeKeyEntries.map((entry) => ` ${entry.key}: ${JSON.stringify(entry.name)},`).join('\n')}
160
+ } as const;
161
+
162
+ export type RouteName = (typeof ROUTE_NAME)[keyof typeof ROUTE_NAME];
163
+
164
+ export const ROUTE_PATH = {
165
+ ${routeKeyEntries.map((entry) => ` ${entry.key}: ${JSON.stringify(entry.path)},`).join('\n')}
166
+ } as const;
167
+
168
+ export type RoutePath = (typeof ROUTE_PATH)[keyof typeof ROUTE_PATH];
169
+
170
+ export const ROUTE_PATH_BY_NAME = {
171
+ ${routeKeyEntries.map((entry) => ` ${JSON.stringify(entry.name)}: ROUTE_PATH.${entry.key},`).join('\n')}
172
+ } as const;
173
+
174
+ export type RoutePathByName = typeof ROUTE_PATH_BY_NAME;
175
+
176
+ export const routeNameList = [
177
+ ${routeNameList.map((name) => ` ${JSON.stringify(name)},`).join('\n')}
178
+ ] as const;
179
+
180
+ export const routePathList = [
181
+ ${routePathList.map((path) => ` ${JSON.stringify(path)},`).join('\n')}
182
+ ] as const;
183
+
184
+ export const routePathByName = {
185
+ ${routePathByName.map(([name, pathValue]) => ` ${JSON.stringify(name)}: ${JSON.stringify(pathValue)},`).join('\n')}
186
+ } as const;
187
+
188
+ // Route parameter types
189
+ export interface RouteParams {
190
+ ${Array.from(routeParamsByName)
191
+ .map(([name, params]) => params.length > 0
192
+ ? ` '${name}': {
193
+ ${params.map((p) => ` ${p}: string;`).join('\n')}
194
+ };`
195
+ : ` '${name}': Record<string, never>;`)
196
+ .join('\n')}
197
+ }
198
+
199
+ export type RouteParamsByName<T extends RouteName> = RouteParams[T];
200
+
201
+ // Route metadata types (extracted from <route> blocks)
202
+ // Uses literal types for precise type inference
203
+ // Missing fields are typed as undefined to ensure consistent shape
204
+ // All routes are included, even those without <route> blocks (as empty objects)
205
+ export interface RouteMetaMap {
206
+ ${routeNameList
207
+ .map((routeName) => {
208
+ const route = allRoutesByName.get(routeName);
209
+ const meta = route?.meta || {};
210
+ // If route has no meta or empty meta, output an empty object
211
+ if (Object.keys(meta).length === 0) {
212
+ return ` '${routeName}': {
213
+
214
+ };`;
215
+ }
216
+ // Otherwise, output all meta fields including missing ones as undefined
217
+ const metaFields = sortedMetaKeys
218
+ .map((key) => {
219
+ if (key in meta) {
220
+ const literalType = valueToLiteralType(meta[key]);
221
+ return ` ${key}: ${literalType};`;
222
+ }
223
+ else {
224
+ return ` ${key}: undefined;`;
225
+ }
226
+ })
227
+ .join('\n');
228
+ return ` '${routeName}': {
229
+ ${metaFields}
230
+ };`;
231
+ })
232
+ .join('\n')}
233
+ }
234
+
235
+ export type RouteMetaByName<T extends RouteName> = RouteMetaMap[T];
236
+
237
+ export const routes = [
238
+ ${routes.map((route) => renderRoute(route)).join(',\n')}
239
+ ] satisfies RouteRecordRaw[];
240
+
241
+ export default routes;
242
+
243
+ // Type-enhanced hooks
244
+ import { useRoute as vueUseRoute, useRouter as vueUseRouter } from 'vue-router';
245
+
246
+ /**
247
+ * Type-safe useRoute hook
248
+ * Route params and meta are typed based on the current route name
249
+ *
250
+ * @example
251
+ * \`\`\`ts
252
+ * const route = useRoute();
253
+ * // route.params.id is typed as string if route has :id param
254
+ * // route.meta.title is typed based on the route's <route> block
255
+ * \`\`\`
256
+ */
257
+ export function useRoute<TName extends RouteName = RouteName>(
258
+ _name?: TName
259
+ ): Omit<RouteLocationNormalizedLoaded, 'params' | 'name' | 'meta'> & {
260
+ name: TName;
261
+ params: TName extends keyof RouteParams ? RouteParams[TName] : RouteParams[RouteName];
262
+ meta: TName extends keyof RouteMetaMap ? RouteMetaMap[TName] : RouteMetaMap[RouteName];
263
+ } {
264
+ return vueUseRoute() as any;
265
+ }
266
+
267
+ /**
268
+ * Type-safe useRouter hook
269
+ * Navigation methods are type-safe based on route names and params
270
+ *
271
+ * @example
272
+ * \`\`\`ts
273
+ * const router = useRouter();
274
+ * router.push({
275
+ * name: ROUTE_NAME.USER_DETAIL,
276
+ * params: { id: '123' }
277
+ * });
278
+ * \`\`\`
279
+ */
280
+ export function useRouter(): Omit<Router, 'push' | 'replace'> & {
281
+ push: <TName extends RouteName>(location: {
282
+ name?: TName;
283
+ path?: string;
284
+ params?: TName extends keyof RouteParams ? Partial<RouteParams[TName]> : Record<string, any>;
285
+ query?: LocationQuery;
286
+ hash?: string;
287
+ }) => ReturnType<Router['push']>;
288
+ replace: <TName extends RouteName>(location: {
289
+ name?: TName;
290
+ path?: string;
291
+ params?: TName extends keyof RouteParams ? Partial<RouteParams[TName]> : Record<string, any>;
292
+ query?: LocationQuery;
293
+ hash?: string;
294
+ }) => ReturnType<Router['replace']>;
295
+ } {
296
+ const router = vueUseRouter();
297
+ return router as any;
298
+ }
299
+ `;
300
+ }
301
+ //# sourceMappingURL=code-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-gen.js","sourceRoot":"","sources":["../src/code-gen.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,15 @@
1
- import type { RouteRecordRaw, RouteRecordRedirectOption, _RouteRecordProps } from 'vue-router';
1
+ import type { RouteRecordRedirectOption, _RouteRecordProps } from 'vue-router';
2
2
  type RouteRecordProps = _RouteRecordProps;
3
3
  /**
4
4
  * Route configuration override interface
5
5
  * Supports all RouteRecordRaw fields for complete customization
6
6
  */
7
7
  export interface RouteConfigOverride {
8
- path?: string;
9
8
  name?: string;
10
9
  alias?: string | string[];
11
10
  redirect?: RouteRecordRedirectOption;
12
11
  props?: RouteRecordProps;
13
12
  meta?: Record<string, any>;
14
- children?: RouteRecordRaw[];
15
13
  beforeEnter?: any;
16
14
  [key: string]: any;
17
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extract-route-config.d.ts","sourceRoot":"","sources":["../src/extract-route-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/F,KAAK,gBAAgB,GAAG,iBAAiB,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAiDpF"}
1
+ {"version":3,"file":"extract-route-config.d.ts","sourceRoot":"","sources":["../src/extract-route-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkB,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/F,KAAK,gBAAgB,GAAG,iBAAiB,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAiDpF"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract-route-config.js","sourceRoot":"","sources":["../src/extract-route-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAsB1C;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtC,0DAA0D;QAC1D,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC9E,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAE/E,IAAI,aAAa,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,KAAK;gBACvC,iEAAiE;gBACjE,6BAA6B;gBAC7B,6CAA6C;gBAC7C,6CAA6C;gBAC7C,YAAY;gBACZ,0CAA0C;gBAC1C,QAAQ;gBACR,oBAAoB;gBACpB,wCAAwC;gBACxC,aAAa,CAChB,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAC3E,OAAO,gBAAgB,CAAC,UAAW,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,kCAAkC;QAClC,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,eAAe,GAAG,sBAAsB,CAAC,UAAU,CAAC,WAAY,CAAC,OAAO,CAAC,CAAC;YAChF,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,uBAAuB,CAAC,eAAe,EAAE,UAAU,CAAC,WAAY,CAAC,OAAO,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mDAAmD;QACnD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxE,MAAM,KAAK,CAAC;QACd,CAAC;QACD,mDAAmD;QACnD,OAAO,CAAC,IAAI,CAAC,uDAAuD,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QACxF,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAGD;;GAEG;AACH,SAAS,sBAAsB,CAAC,aAAqB;IACnD,0DAA0D;IAC1D,mDAAmD;IACnD,MAAM,QAAQ,GAAG;QACf,uCAAuC;QACvC,sEAAsE;QACtE,+BAA+B;QAC/B,wCAAwC;KACzC,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,WAAmB,EAAE,aAAqB;IACzE,IAAI,CAAC;QACH,8DAA8D;QAC9D,0DAA0D;QAC1D,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;QAC9E,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,MAA6B,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;QACrE,IAAI,CAAC;YACH,+CAA+C;YAC/C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,WAAW,OAAO,IAAI,CAAC,CAAC;YAChD,OAAO,EAAE,EAAyB,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;YACrE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"extract-route-config.js","sourceRoot":"","sources":["../src/extract-route-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Normalize path separators to forward slashes
3
+ */
4
+ export declare function normalizePath(p: string): string;
5
+ /**
6
+ * Get file hash based on modification time and size
7
+ */
8
+ export declare function getFileHash(filePath: string): string;
9
+ /**
10
+ * Build hash object for all Vue files in pages directory
11
+ */
12
+ export declare function buildFileHash(pagesDir: string): string;
13
+ /**
14
+ * Scan directory for Vue files, excluding certain directories
15
+ */
16
+ export declare function scanVueFiles(rootDir: string): string[];
17
+ //# sourceMappingURL=fs-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BtD"}
@@ -0,0 +1,53 @@
1
+ import fs from 'node:fs';
2
+ import path from 'path';
3
+ const EXCLUDED_DIRS = new Set(['components', 'hooks', 'services', 'types', 'constants', 'utils']);
4
+ /**
5
+ * Normalize path separators to forward slashes
6
+ */
7
+ export function normalizePath(p) {
8
+ return p.split(path.sep).join('/');
9
+ }
10
+ /**
11
+ * Get file hash based on modification time and size
12
+ */
13
+ export function getFileHash(filePath) {
14
+ const stats = fs.statSync(filePath);
15
+ return `${stats.mtimeMs}-${stats.size}`;
16
+ }
17
+ /**
18
+ * Build hash object for all Vue files in pages directory
19
+ */
20
+ export function buildFileHash(pagesDir) {
21
+ const files = scanVueFiles(pagesDir);
22
+ const hashObj = {};
23
+ for (const file of files) {
24
+ hashObj[normalizePath(path.relative(pagesDir, file))] = getFileHash(file);
25
+ }
26
+ return JSON.stringify(hashObj);
27
+ }
28
+ /**
29
+ * Scan directory for Vue files, excluding certain directories
30
+ */
31
+ export function scanVueFiles(rootDir) {
32
+ const files = [];
33
+ const stack = [rootDir];
34
+ while (stack.length > 0) {
35
+ const dir = stack.pop();
36
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
37
+ for (const entry of entries) {
38
+ const fullPath = path.join(dir, entry.name);
39
+ if (entry.isDirectory()) {
40
+ if (EXCLUDED_DIRS.has(entry.name)) {
41
+ continue;
42
+ }
43
+ stack.push(fullPath);
44
+ continue;
45
+ }
46
+ if (entry.isFile() && entry.name.endsWith('.vue')) {
47
+ files.push(fullPath);
48
+ }
49
+ }
50
+ }
51
+ return files.sort();
52
+ }
53
+ //# sourceMappingURL=fs-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAElG;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAa,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACzB,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,28 +1,7 @@
1
- import { type RouteConfigOverride } from './extract-route-config.js';
1
+ export type { RouteEntry, RouteData } from './route-builder.js';
2
2
  export interface GenerateRoutesOptions {
3
3
  pagesDir?: string;
4
4
  outFile?: string;
5
5
  }
6
- export interface RouteEntry {
7
- path: string;
8
- name: string;
9
- importPath: string;
10
- children: RouteEntry[];
11
- params?: string[];
12
- meta?: Record<string, any>;
13
- configOverride?: RouteConfigOverride;
14
- }
15
- export interface RouteData {
16
- routes: RouteEntry[];
17
- routeNameList: readonly string[];
18
- routePathList: readonly string[];
19
- routePathByName: [string, string][];
20
- routeParamsByName: [string, string[]][];
21
- routeKeyData: Array<{
22
- name: string;
23
- path: string;
24
- defaultName: string;
25
- }>;
26
- }
27
6
  export declare function generateRoutes({ pagesDir, outFile, }?: GenerateRoutesOptions): boolean;
28
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAyD1F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACxC,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E;AA8oBD,wBAAgB,cAAc,CAAC,EAC7B,QAAmD,EACnD,OAAgE,GACjE,GAAE,qBAA0B,GAAG,OAAO,CAiCtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAmD,EACnD,OAAgE,GACjE,GAAE,qBAA0B,GAAG,OAAO,CAiCtC"}