@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.
- package/dist/cache.d.ts +13 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +29 -0
- package/dist/cache.js.map +1 -0
- package/dist/code-gen.d.ts +6 -0
- package/dist/code-gen.d.ts.map +1 -0
- package/dist/code-gen.js +301 -0
- package/dist/code-gen.js.map +1 -0
- package/dist/extract-route-config.d.ts +1 -3
- package/dist/extract-route-config.d.ts.map +1 -1
- package/dist/extract-route-config.js.map +1 -1
- package/dist/fs-utils.d.ts +17 -0
- package/dist/fs-utils.d.ts.map +1 -0
- package/dist/fs-utils.js +53 -0
- package/dist/fs-utils.js.map +1 -0
- package/dist/index.d.ts +1 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -588
- package/dist/index.js.map +1 -1
- package/dist/path-utils.d.ts +21 -0
- package/dist/path-utils.d.ts.map +1 -0
- package/dist/path-utils.js +63 -0
- package/dist/path-utils.js.map +1 -0
- package/dist/route-builder.d.ts +36 -0
- package/dist/route-builder.d.ts.map +1 -0
- package/dist/route-builder.js +274 -0
- package/dist/route-builder.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +47 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +9 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +26 -0
- package/dist/utils.js.map +1 -0
- package/package.json +10 -10
package/dist/cache.d.ts
ADDED
|
@@ -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"}
|
package/dist/code-gen.js
ADDED
|
@@ -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 {
|
|
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,
|
|
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;
|
|
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"}
|
package/dist/fs-utils.js
ADDED
|
@@ -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
|
-
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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"}
|