@zphhpzzph/vue-route-gen 1.0.0 → 1.1.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.
- package/README.md +259 -36
- package/dist/cli.js +0 -0
- package/dist/extract-meta.d.ts +17 -0
- package/dist/extract-meta.d.ts.map +1 -0
- package/dist/extract-meta.js +48 -0
- package/dist/extract-meta.js.map +1 -0
- package/dist/hooks.d.ts +45 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +30 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +125 -12
- package/dist/index.js.map +1 -1
- package/dist/runtime/index.d.ts +49 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +28 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/types.d.ts +16 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +5 -0
- package/dist/runtime/types.js.map +1 -0
- package/package.json +24 -6
package/README.md
CHANGED
|
@@ -1,22 +1,30 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @zphhpzzph/vue-route-gen
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> [English](./README_en.md) | 简体中文
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Vue 3 基于文件系统的路由生成器,为 Vue Router 提供完整的类型推断支持。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Layout support (`layout.vue` or `layout/index.vue`)
|
|
9
|
-
- Dynamic route parameters (`$param` or `[param]`)
|
|
10
|
-
- Cache mechanism for fast rebuilds
|
|
11
|
-
- TypeScript support with generated types
|
|
7
|
+
## 特性
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
- 从文件结构自动发现路由
|
|
10
|
+
- 支持布局文件 (`layout.vue` 或 `layout/index.vue`)
|
|
11
|
+
- 动态路由参数 (`$param` 或 `[param]`)
|
|
12
|
+
- 缓存机制,快速重建
|
|
13
|
+
- TypeScript 支持并生成完整类型
|
|
14
|
+
- **类型安全的路由 Hooks**(`useRoute` 和 `useRouter` 提供完整类型推断)
|
|
15
|
+
- **自动从动态路由提取参数类型**
|
|
16
|
+
|
|
17
|
+
## 安装
|
|
14
18
|
|
|
15
19
|
```bash
|
|
16
|
-
npm install @
|
|
20
|
+
npm install @zphhpzzph/vue-route-gen
|
|
21
|
+
# 或
|
|
22
|
+
pnpm install @zphhpzzph/vue-route-gen
|
|
23
|
+
# 或
|
|
24
|
+
yarn add @zphhpzzph/vue-route-gen
|
|
17
25
|
```
|
|
18
26
|
|
|
19
|
-
##
|
|
27
|
+
## 使用方法
|
|
20
28
|
|
|
21
29
|
### CLI
|
|
22
30
|
|
|
@@ -24,57 +32,272 @@ npm install @signlab/vue-route-gen
|
|
|
24
32
|
vue-route-gen
|
|
25
33
|
```
|
|
26
34
|
|
|
27
|
-
###
|
|
35
|
+
### 编程方式
|
|
28
36
|
|
|
29
37
|
```typescript
|
|
30
|
-
import { generateRoutes } from '@
|
|
38
|
+
import { generateRoutes } from '@zphhpzzph/vue-route-gen';
|
|
31
39
|
|
|
32
|
-
//
|
|
40
|
+
// 使用默认选项生成路由
|
|
33
41
|
generateRoutes();
|
|
34
42
|
|
|
35
|
-
//
|
|
43
|
+
// 或指定自定义目录
|
|
36
44
|
generateRoutes({
|
|
37
45
|
pagesDir: './src/pages',
|
|
38
46
|
outFile: './src/router/route.gen.ts'
|
|
39
47
|
});
|
|
40
48
|
```
|
|
41
49
|
|
|
42
|
-
##
|
|
50
|
+
## 文件结构
|
|
43
51
|
|
|
44
52
|
```
|
|
45
53
|
src/pages/
|
|
46
|
-
├── layout.vue #
|
|
47
|
-
├── index.vue #
|
|
48
|
-
├── about.vue #
|
|
54
|
+
├── layout.vue # 根布局
|
|
55
|
+
├── index.vue # 首页 (/)
|
|
56
|
+
├── about.vue # 关于页面 (/about)
|
|
49
57
|
├── users/
|
|
50
|
-
│ ├── layout.vue #
|
|
51
|
-
│ ├── index.vue #
|
|
52
|
-
│ └── [id].vue #
|
|
53
|
-
└── $slug.vue #
|
|
58
|
+
│ ├── layout.vue # 用户布局 (/users)
|
|
59
|
+
│ ├── index.vue # 用户列表 (/users)
|
|
60
|
+
│ └── [id].vue # 用户详情 (/users/:id)
|
|
61
|
+
└── $slug.vue # 通配路由 (/:slug)
|
|
54
62
|
```
|
|
55
63
|
|
|
56
|
-
##
|
|
64
|
+
## 配置选项
|
|
57
65
|
|
|
58
|
-
###
|
|
66
|
+
### 选项
|
|
59
67
|
|
|
60
|
-
- `pagesDir`:
|
|
61
|
-
- `outFile`:
|
|
68
|
+
- `pagesDir`: 页面目录路径(默认:`src/pages`)
|
|
69
|
+
- `outFile`: 输出文件路径(默认:`src/router/route.gen.ts`)
|
|
62
70
|
|
|
63
|
-
###
|
|
71
|
+
### 自动排除的目录
|
|
64
72
|
|
|
65
|
-
|
|
73
|
+
以下目录会被自动排除:
|
|
66
74
|
- `components`
|
|
67
75
|
- `hooks`
|
|
68
|
-
- `
|
|
76
|
+
- `services`
|
|
77
|
+
- `types`
|
|
78
|
+
- `constants`
|
|
79
|
+
- `utils`
|
|
80
|
+
|
|
81
|
+
## 生成内容
|
|
82
|
+
|
|
83
|
+
生成器会创建:
|
|
84
|
+
|
|
85
|
+
1. `ROUTE_NAME` - 路由名称常量
|
|
86
|
+
2. `ROUTE_PATH` - 路由路径常量
|
|
87
|
+
3. `ROUTE_PATH_BY_NAME` - 按名称查找路径
|
|
88
|
+
4. `RouteParams` - 每个路由的参数类型接口
|
|
89
|
+
5. `RouteParamsByName<T>` - 根据路由名称获取参数类型的工具类型
|
|
90
|
+
6. `routes` - Vue Router 路由记录数组
|
|
91
|
+
7. `useRoute()` - 类型安全的路由访问 Hook,提供参数类型推断
|
|
92
|
+
8. `useRouter()` - 类型安全的路由导航 Hook,提供参数验证
|
|
93
|
+
|
|
94
|
+
## 类型安全的路由
|
|
95
|
+
|
|
96
|
+
### 自动生成的参数类型
|
|
97
|
+
|
|
98
|
+
对于 `/users/[id].vue` 这样的路由,生成器会自动提取 `id` 参数:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
// 在 route.gen.ts 中生成
|
|
102
|
+
export interface RouteParams {
|
|
103
|
+
'users-id': {
|
|
104
|
+
id: string;
|
|
105
|
+
};
|
|
106
|
+
// ... 其他路由
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 使用 useRoute
|
|
111
|
+
|
|
112
|
+
生成的 `useRoute` Hook 为路由参数提供完整的类型推断:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import { useRoute, ROUTE_NAME } from '@/router/route.gen';
|
|
116
|
+
|
|
117
|
+
const route = useRoute<'users-id'>();
|
|
118
|
+
// route.params.id 的类型为 `string`
|
|
119
|
+
|
|
120
|
+
if (route.name === ROUTE_NAME.USERS_ID) {
|
|
121
|
+
console.log(route.params.id); // 完整类型支持!
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 使用 useRouter
|
|
126
|
+
|
|
127
|
+
生成的 `useRouter` Hook 提供类型安全的导航:
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
import { useRouter, ROUTE_NAME } from '@/router/route.gen';
|
|
131
|
+
|
|
132
|
+
const router = useRouter();
|
|
133
|
+
|
|
134
|
+
// 类型安全的导航 - TypeScript 会验证参数
|
|
135
|
+
router.push({
|
|
136
|
+
name: ROUTE_NAME.USERS_ID,
|
|
137
|
+
params: { id: '123' } // 必需的参数会被检查
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// 错误:类型 '{ id: string; }' 不能赋值给类型 'Record<string, never>'
|
|
141
|
+
router.push({
|
|
142
|
+
name: ROUTE_NAME.HOME, // HOME 路由没有参数
|
|
143
|
+
params: { id: '123' } // TypeScript 报错!
|
|
144
|
+
});
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 完整示例
|
|
148
|
+
|
|
149
|
+
### 项目结构
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
src/
|
|
153
|
+
├── pages/
|
|
154
|
+
│ ├── index.vue # 首页
|
|
155
|
+
│ ├── users/
|
|
156
|
+
│ │ ├── [id].vue # 用户详情页
|
|
157
|
+
│ │ └── index.vue # 用户列表页
|
|
158
|
+
│ └── posts/
|
|
159
|
+
│ └── $slug.vue # 文章详情页
|
|
160
|
+
└── router/
|
|
161
|
+
└── route.gen.ts # 自动生成
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 生成的类型定义
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
// route.gen.ts (自动生成)
|
|
168
|
+
export const ROUTE_NAME = {
|
|
169
|
+
INDEX: "index",
|
|
170
|
+
USERS_INDEX: "users-index",
|
|
171
|
+
USERS_ID: "users-[id]",
|
|
172
|
+
POSTS_SLUG: "posts-$slug",
|
|
173
|
+
} as const;
|
|
174
|
+
|
|
175
|
+
export interface RouteParams {
|
|
176
|
+
index: Record<string, never>;
|
|
177
|
+
'users-index': Record<string, never>;
|
|
178
|
+
'users-[id]': {
|
|
179
|
+
id: string;
|
|
180
|
+
};
|
|
181
|
+
'posts-$slug': {
|
|
182
|
+
slug: string;
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export function useRoute<TName extends RouteName = RouteName>(
|
|
187
|
+
name?: TName
|
|
188
|
+
): /* 类型增强的路由对象 */;
|
|
189
|
+
|
|
190
|
+
export function useRouter(): /* 类型增强的路由对象 */;
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### 在组件中使用
|
|
194
|
+
|
|
195
|
+
```vue
|
|
196
|
+
<script setup lang="ts">
|
|
197
|
+
import { useRoute, useRouter, ROUTE_NAME } from '@/router/route.gen';
|
|
198
|
+
|
|
199
|
+
const route = useRoute();
|
|
200
|
+
const router = useRouter();
|
|
201
|
+
|
|
202
|
+
// 访问路由参数(完全类型安全)
|
|
203
|
+
if (route.name === ROUTE_NAME.USERS_ID) {
|
|
204
|
+
const userId = route.params.id; // 类型为 string
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// 导航到其他路由(参数类型受保护)
|
|
208
|
+
function navigateToUser(userId: string) {
|
|
209
|
+
router.push({
|
|
210
|
+
name: ROUTE_NAME.USERS_ID,
|
|
211
|
+
params: { id: userId } // TypeScript 会检查参数类型
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
</script>
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## 高级用法
|
|
218
|
+
|
|
219
|
+
### 获取特定路由的参数类型
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
import type { RouteParamsByName } from '@/router/route.gen';
|
|
223
|
+
|
|
224
|
+
type UserDetailParams = RouteParamsByName<'users-[id]'>;
|
|
225
|
+
// 类型为:{ id: string }
|
|
226
|
+
|
|
227
|
+
function fetchUserData(params: UserDetailParams) {
|
|
228
|
+
// params.id 的类型为 string
|
|
229
|
+
return api.get(`/users/${params.id}`);
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### 布局嵌套
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
src/pages/
|
|
237
|
+
├── layout.vue # 根布局
|
|
238
|
+
├── index.vue # / (使用根布局)
|
|
239
|
+
├── admin/
|
|
240
|
+
│ ├── layout.vue # /admin 布局
|
|
241
|
+
│ ├── index.vue # /admin (使用 admin 布局)
|
|
242
|
+
│ └── users/
|
|
243
|
+
│ └── [id].vue # /admin/users/:id (使用 admin 布局)
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## 最佳实践
|
|
247
|
+
|
|
248
|
+
1. **始终使用生成的常量**:使用 `ROUTE_NAME` 而不是硬编码字符串
|
|
249
|
+
2. **利用类型推断**:让 TypeScript 为你检查路由参数
|
|
250
|
+
3. **组合使用 Hooks**:`useRoute` 和 `useRouter` 提供完整的类型安全
|
|
251
|
+
|
|
252
|
+
## 发布新版本(维护者)
|
|
253
|
+
|
|
254
|
+
### 快速发布
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# 补丁版本 (1.0.0 -> 1.0.1)
|
|
258
|
+
pnpm run release:patch
|
|
259
|
+
|
|
260
|
+
# 次要版本 (1.0.0 -> 1.1.0)
|
|
261
|
+
pnpm run release:minor
|
|
262
|
+
|
|
263
|
+
# 主要版本 (1.0.0 -> 2.0.0)
|
|
264
|
+
pnpm run release:major
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### 预发布版本
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# 预发布补丁 (1.0.0 -> 1.0.1-0)
|
|
271
|
+
pnpm run release:pre
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### 手动发布流程
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# 1. 更新版本号
|
|
278
|
+
npm version patch|minor|major
|
|
279
|
+
|
|
280
|
+
# 2. 构建
|
|
281
|
+
pnpm run build
|
|
282
|
+
|
|
283
|
+
# 3. 发布到 npm
|
|
284
|
+
npm publish --access public --registry https://registry.npmjs.org/
|
|
285
|
+
```
|
|
69
286
|
|
|
70
|
-
|
|
287
|
+
### 发布脚本说明
|
|
71
288
|
|
|
72
|
-
|
|
289
|
+
- `release:patch` - 自动更新补丁版本并发布(bug 修复)
|
|
290
|
+
- `release:minor` - 自动更新次要版本并发布(新功能)
|
|
291
|
+
- `release:major` - 自动更新主要版本并发布(破坏性变更)
|
|
292
|
+
- `release:pre` - 发布预发布版本(alpha/beta/rc)
|
|
293
|
+
- `release` - 仅发布(不更新版本号)
|
|
294
|
+
- `pre-release` - 发布预发布版本(不更新版本号)
|
|
73
295
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
296
|
+
这些脚本会自动:
|
|
297
|
+
1. 更新 package.json 中的版本号
|
|
298
|
+
2. 创建 git tag
|
|
299
|
+
3. 构建 TypeScript 代码
|
|
300
|
+
4. 发布到 npm registry
|
|
78
301
|
|
|
79
302
|
## License
|
|
80
303
|
|
package/dist/cli.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface RouteMeta {
|
|
2
|
+
title?: string;
|
|
3
|
+
layout?: string | false;
|
|
4
|
+
keepAlive?: boolean;
|
|
5
|
+
requiresAuth?: boolean;
|
|
6
|
+
roles?: string[];
|
|
7
|
+
redirect?: string | {
|
|
8
|
+
name: string;
|
|
9
|
+
path?: string;
|
|
10
|
+
};
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parse Vue SFC and extract metadata from <route> custom block
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractRouteMeta(filePath: string): RouteMeta;
|
|
17
|
+
//# sourceMappingURL=extract-meta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-meta.d.ts","sourceRoot":"","sources":["../src/extract-meta.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAqB5D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { parse } from '@vue/compiler-sfc';
|
|
3
|
+
/**
|
|
4
|
+
* Parse Vue SFC and extract metadata from <route> custom block
|
|
5
|
+
*/
|
|
6
|
+
export function extractRouteMeta(filePath) {
|
|
7
|
+
try {
|
|
8
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
9
|
+
const { descriptor } = parse(content);
|
|
10
|
+
// Find the <route> custom block
|
|
11
|
+
const routeBlock = descriptor.customBlocks.find((block) => block.type === 'route');
|
|
12
|
+
if (!routeBlock) {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
// Parse the content of the <route> block
|
|
16
|
+
return parseRouteBlockContent(routeBlock.content);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
// If parsing fails, return empty meta
|
|
20
|
+
console.warn(`Failed to extract meta from ${filePath}:`, error);
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parse the content of <route> custom block
|
|
26
|
+
* The content should be valid JSON or JavaScript object literal
|
|
27
|
+
*/
|
|
28
|
+
function parseRouteBlockContent(content) {
|
|
29
|
+
const trimmed = content.trim();
|
|
30
|
+
try {
|
|
31
|
+
// Try parsing as JSON first
|
|
32
|
+
return JSON.parse(trimmed);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// If JSON parsing fails, try evaluating as JavaScript object literal
|
|
36
|
+
try {
|
|
37
|
+
// Use Function constructor for safe evaluation
|
|
38
|
+
// This handles things like unquoted keys, trailing commas, etc.
|
|
39
|
+
const fn = new Function(`return (${trimmed});`);
|
|
40
|
+
return fn();
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.warn('Failed to parse route block content:', error);
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=extract-meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-meta.js","sourceRoot":"","sources":["../src/extract-meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAY1C;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,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,gCAAgC;QAChC,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAClC,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,yCAAyC;QACzC,OAAO,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,+BAA+B,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,IAAI,CAAC;QACH,4BAA4B;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;QACrE,IAAI,CAAC;YACH,+CAA+C;YAC/C,gEAAgE;YAChE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,WAAW,OAAO,IAAI,CAAC,CAAC;YAChD,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { RouteLocationNormalizedLoaded, Router, RouteParams as VueRouteParams, LocationQuery } from 'vue-router';
|
|
2
|
+
/**
|
|
3
|
+
* Type-safe route location for navigation
|
|
4
|
+
*/
|
|
5
|
+
export interface TypedRouteLocation<TName extends string = string, TParams = Record<string, any>> {
|
|
6
|
+
name?: TName;
|
|
7
|
+
path?: string;
|
|
8
|
+
params?: TParams & VueRouteParams;
|
|
9
|
+
query?: LocationQuery;
|
|
10
|
+
hash?: string;
|
|
11
|
+
state?: Record<string, any>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Type-safe router push/replace method
|
|
15
|
+
*/
|
|
16
|
+
export type TypedNavigationMethod = <TName extends string, TParams extends Record<string, any> = Record<string, any>>(location: TypedRouteLocation<TName, TParams>) => ReturnType<Router['push']>;
|
|
17
|
+
/**
|
|
18
|
+
* Enhanced Router with typed navigation methods
|
|
19
|
+
*/
|
|
20
|
+
export interface TypedRouter extends Omit<Router, 'push' | 'replace'> {
|
|
21
|
+
/**
|
|
22
|
+
* Programmatically navigate to a new URL with type safety
|
|
23
|
+
*/
|
|
24
|
+
push: TypedNavigationMethod;
|
|
25
|
+
/**
|
|
26
|
+
* Programmatically replace the current location with type safety
|
|
27
|
+
*/
|
|
28
|
+
replace: TypedNavigationMethod;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Enhanced RouteLocationNormalized with typed params
|
|
32
|
+
*/
|
|
33
|
+
export interface TypedRoute<TName extends string = string, TParams extends Record<string, any> = Record<string, any>> extends Omit<RouteLocationNormalizedLoaded, 'params' | 'name'> {
|
|
34
|
+
name: TName;
|
|
35
|
+
params: TParams & VueRouteParams;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Creates a typed useRoute hook with the given route parameters type
|
|
39
|
+
*/
|
|
40
|
+
export declare function createTypedUseRoute<TName extends string, TParams extends Record<string, any>>(): () => TypedRoute<TName, TParams>;
|
|
41
|
+
/**
|
|
42
|
+
* Creates a typed useRouter hook with route parameter type checking
|
|
43
|
+
*/
|
|
44
|
+
export declare function createTypedUseRouter(): () => TypedRouter;
|
|
45
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,MAAM,EACN,WAAW,IAAI,cAAc,EAC7B,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAE7B,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAClC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEzD,QAAQ,EAAE,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,KACzC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACnE;;OAEG;IACH,IAAI,EAAE,qBAAqB,CAAC;IAC5B;;OAEG;IACH,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CACzB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACzD,SAAQ,IAAI,CAAC,6BAA6B,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9D,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,WAEP,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAIvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,UACL,WAAW,CAkBzC"}
|
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a typed useRoute hook with the given route parameters type
|
|
3
|
+
*/
|
|
4
|
+
export function createTypedUseRoute() {
|
|
5
|
+
return function useRoute() {
|
|
6
|
+
const { useRoute: vueUseRoute } = require('vue-router');
|
|
7
|
+
return vueUseRoute();
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Creates a typed useRouter hook with route parameter type checking
|
|
12
|
+
*/
|
|
13
|
+
export function createTypedUseRouter() {
|
|
14
|
+
return function useRouter() {
|
|
15
|
+
const { useRouter: vueUseRouter } = require('vue-router');
|
|
16
|
+
const router = vueUseRouter();
|
|
17
|
+
const typedPush = (location) => {
|
|
18
|
+
return router.push(location);
|
|
19
|
+
};
|
|
20
|
+
const typedReplace = (location) => {
|
|
21
|
+
return router.replace(location);
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
...router,
|
|
25
|
+
push: typedPush,
|
|
26
|
+
replace: typedReplace,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAyDA;;GAEG;AACH,MAAM,UAAU,mBAAmB;IAIjC,OAAO,SAAS,QAAQ;QACtB,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACxD,OAAO,WAAW,EAAgC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,SAAS,SAAS;QACvB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,MAAM,SAAS,GAA0B,CAAC,QAAQ,EAAE,EAAE;YACpD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAe,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,MAAM,YAAY,GAA0B,CAAC,QAAQ,EAAE,EAAE;YACvD,OAAO,MAAM,CAAC,OAAO,CAAC,QAAe,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type RouteMeta } from './extract-meta.js';
|
|
2
|
+
export type { RouteMeta } from './extract-meta.js';
|
|
1
3
|
export interface GenerateRoutesOptions {
|
|
2
4
|
pagesDir?: string;
|
|
3
5
|
outFile?: string;
|
|
@@ -7,12 +9,15 @@ export interface RouteEntry {
|
|
|
7
9
|
name: string;
|
|
8
10
|
importPath: string;
|
|
9
11
|
children: RouteEntry[];
|
|
12
|
+
params?: string[];
|
|
13
|
+
meta?: RouteMeta;
|
|
10
14
|
}
|
|
11
15
|
export interface RouteData {
|
|
12
16
|
routes: RouteEntry[];
|
|
13
17
|
routeNameList: readonly string[];
|
|
14
18
|
routePathList: readonly string[];
|
|
15
19
|
routePathByName: [string, string][];
|
|
20
|
+
routeParamsByName: [string, string[]][];
|
|
16
21
|
}
|
|
17
22
|
export declare function generateRoutes({ pagesDir, outFile, }?: GenerateRoutesOptions): boolean;
|
|
18
23
|
//# 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":"AAEA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAErE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,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,SAAS,CAAC;CAClB;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;CACzC;AAmhBD,wBAAgB,cAAc,CAAC,EAC7B,QAAmD,EACnD,OAAgE,GACjE,GAAE,qBAA0B,GAAG,OAAO,CAiCtC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
|
|
3
|
+
import { extractRouteMeta } from './extract-meta.js';
|
|
4
|
+
const EXCLUDED_DIRS = new Set(['components', 'hooks', 'services', 'types', 'constants', 'utils']);
|
|
4
5
|
const CACHE_FILE = path.resolve(process.cwd(), 'node_modules/.cache/route-gen.json');
|
|
5
6
|
function normalizePath(p) {
|
|
6
7
|
return p.split(path.sep).join('/');
|
|
@@ -63,6 +64,15 @@ function isLayout(segments) {
|
|
|
63
64
|
const secondLast = segments[segments.length - 2];
|
|
64
65
|
return last === 'layout' || (last === 'index' && secondLast === 'layout');
|
|
65
66
|
}
|
|
67
|
+
function extractParamName(segment) {
|
|
68
|
+
if (segment.startsWith('$')) {
|
|
69
|
+
return segment.slice(1);
|
|
70
|
+
}
|
|
71
|
+
if (segment.startsWith('[') && segment.endsWith(']')) {
|
|
72
|
+
return segment.slice(1, -1);
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
66
76
|
function segmentToPath(segment) {
|
|
67
77
|
if (segment.includes('.')) {
|
|
68
78
|
return segment.split('.').join('/');
|
|
@@ -70,11 +80,9 @@ function segmentToPath(segment) {
|
|
|
70
80
|
if (segment === 'index') {
|
|
71
81
|
return '';
|
|
72
82
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (segment.startsWith('[') && segment.endsWith(']')) {
|
|
77
|
-
return `:${segment.slice(1, -1)}`;
|
|
83
|
+
const paramName = extractParamName(segment);
|
|
84
|
+
if (paramName) {
|
|
85
|
+
return `:${paramName}`;
|
|
78
86
|
}
|
|
79
87
|
return segment;
|
|
80
88
|
}
|
|
@@ -105,6 +113,10 @@ function renderRoute(route, indent = ' ') {
|
|
|
105
113
|
lines.push(`${nextIndent}path: ${JSON.stringify(route.path)},`);
|
|
106
114
|
lines.push(`${nextIndent}name: ${JSON.stringify(route.name)},`);
|
|
107
115
|
lines.push(`${nextIndent}component: () => import(${JSON.stringify(route.importPath)}),`);
|
|
116
|
+
// Add meta if present
|
|
117
|
+
if (route.meta && Object.keys(route.meta).length > 0) {
|
|
118
|
+
lines.push(`${nextIndent}meta: ${JSON.stringify(route.meta)},`);
|
|
119
|
+
}
|
|
108
120
|
if (route.children.length === 0) {
|
|
109
121
|
lines.push(`${nextIndent}children: [],`);
|
|
110
122
|
}
|
|
@@ -195,12 +207,20 @@ function buildRoutes({ pagesDir, outFile }) {
|
|
|
195
207
|
const standaloneRoutes = standalonePages.map((page) => {
|
|
196
208
|
const name = page.segments.join('-');
|
|
197
209
|
const routePath = segmentsToPath(page.segments, true);
|
|
198
|
-
|
|
210
|
+
const params = page.segments
|
|
211
|
+
.map((s) => extractParamName(s))
|
|
212
|
+
.filter((p) => p !== null);
|
|
213
|
+
routeEntries.push({ name, path: routePath, params });
|
|
214
|
+
// Extract meta from page component
|
|
215
|
+
const fullPath = path.resolve(pagesDir, page.importPath.replace(/^\.\//, ''));
|
|
216
|
+
const meta = extractRouteMeta(fullPath);
|
|
199
217
|
return {
|
|
200
218
|
path: routePath,
|
|
201
219
|
name,
|
|
202
220
|
importPath: page.importPath,
|
|
203
221
|
children: [],
|
|
222
|
+
params,
|
|
223
|
+
meta,
|
|
204
224
|
};
|
|
205
225
|
});
|
|
206
226
|
const layoutRoutes = Array.from(layoutGroups.entries())
|
|
@@ -211,18 +231,29 @@ function buildRoutes({ pagesDir, outFile }) {
|
|
|
211
231
|
const layoutNameBase = layout.segments.join('-');
|
|
212
232
|
const layoutName = layoutNameBase ? `${layoutNameBase}-layout` : 'layout';
|
|
213
233
|
const layoutPath = segmentsToPath(layout.segments, true);
|
|
214
|
-
|
|
234
|
+
const layoutParams = layout.segments
|
|
235
|
+
.map((s) => extractParamName(s))
|
|
236
|
+
.filter((p) => p !== null);
|
|
237
|
+
routeEntries.push({ name: layoutName, path: layoutPath, params: layoutParams });
|
|
215
238
|
const children = sortedPages.map((page) => {
|
|
216
239
|
const name = page.segments.join('-');
|
|
217
240
|
const relativeSegments = page.segments.slice(layout.segments.length);
|
|
218
241
|
const childPath = segmentsToPath(relativeSegments, false);
|
|
219
242
|
const fullPath = joinPaths(layoutPath, childPath);
|
|
220
|
-
|
|
243
|
+
const params = relativeSegments
|
|
244
|
+
.map((s) => extractParamName(s))
|
|
245
|
+
.filter((p) => p !== null);
|
|
246
|
+
routeEntries.push({ name, path: fullPath, params });
|
|
247
|
+
// Extract meta from page component
|
|
248
|
+
const pageFilePath = path.resolve(pagesDir, page.importPath.replace(/^\.\//, ''));
|
|
249
|
+
const meta = extractRouteMeta(pageFilePath);
|
|
221
250
|
return {
|
|
222
251
|
path: childPath,
|
|
223
252
|
name,
|
|
224
253
|
importPath: page.importPath,
|
|
225
254
|
children: [],
|
|
255
|
+
params,
|
|
256
|
+
meta,
|
|
226
257
|
};
|
|
227
258
|
});
|
|
228
259
|
return {
|
|
@@ -236,10 +267,14 @@ function buildRoutes({ pagesDir, outFile }) {
|
|
|
236
267
|
const uniqueNames = unique(routeEntries.map((entry) => entry.name));
|
|
237
268
|
const uniquePaths = unique(routeEntries.map((entry) => entry.path));
|
|
238
269
|
const pathByName = new Map();
|
|
270
|
+
const paramsByName = new Map();
|
|
239
271
|
for (const entry of routeEntries) {
|
|
240
272
|
if (!pathByName.has(entry.name)) {
|
|
241
273
|
pathByName.set(entry.name, entry.path);
|
|
242
274
|
}
|
|
275
|
+
if (!paramsByName.has(entry.name)) {
|
|
276
|
+
paramsByName.set(entry.name, entry.params);
|
|
277
|
+
}
|
|
243
278
|
}
|
|
244
279
|
const routePathByName = uniqueNames.map((name) => [name, pathByName.get(name)]);
|
|
245
280
|
return {
|
|
@@ -247,11 +282,13 @@ function buildRoutes({ pagesDir, outFile }) {
|
|
|
247
282
|
routeNameList: uniqueNames,
|
|
248
283
|
routePathList: uniquePaths,
|
|
249
284
|
routePathByName,
|
|
285
|
+
routeParamsByName: Array.from(paramsByName.entries()),
|
|
250
286
|
};
|
|
251
287
|
}
|
|
252
|
-
function renderRoutesFile({ routes, routeNameList, routePathList, routePathByName }) {
|
|
288
|
+
function renderRoutesFile({ routes, routeNameList, routePathList, routePathByName, routeParamsByName }) {
|
|
253
289
|
const lines = [];
|
|
254
290
|
const pathByName = new Map(routePathByName);
|
|
291
|
+
const paramsByName = new Map(routeParamsByName);
|
|
255
292
|
const routeKeyEntries = [];
|
|
256
293
|
const usedKeys = new Set();
|
|
257
294
|
for (const name of routeNameList) {
|
|
@@ -269,9 +306,9 @@ function renderRoutesFile({ routes, routeNameList, routePathList, routePathByNam
|
|
|
269
306
|
path: pathByName.get(name),
|
|
270
307
|
});
|
|
271
308
|
}
|
|
272
|
-
lines.push('// This file is auto-generated by @
|
|
309
|
+
lines.push('// This file is auto-generated by @zphhpzzph/vue-route-gen.');
|
|
273
310
|
lines.push('// Do not edit this file directly.');
|
|
274
|
-
lines.push("import type { RouteRecordRaw } from 'vue-router';");
|
|
311
|
+
lines.push("import type { RouteRecordRaw, RouteLocationNormalizedLoaded, Router, LocationQuery } from 'vue-router';");
|
|
275
312
|
lines.push('');
|
|
276
313
|
lines.push('export const ROUTE_NAME = {');
|
|
277
314
|
lines.push(routeKeyEntries
|
|
@@ -311,12 +348,88 @@ function renderRoutesFile({ routes, routeNameList, routePathList, routePathByNam
|
|
|
311
348
|
.join('\n'));
|
|
312
349
|
lines.push('} as const;');
|
|
313
350
|
lines.push('');
|
|
351
|
+
// Generate route parameter types
|
|
352
|
+
lines.push('// Route parameter types');
|
|
353
|
+
lines.push('export interface RouteParams {');
|
|
354
|
+
for (const [name, params] of routeParamsByName) {
|
|
355
|
+
if (params.length > 0) {
|
|
356
|
+
const paramsStr = params.map(p => ` ${p}: string;`).join('\n');
|
|
357
|
+
lines.push(` '${name}': {`);
|
|
358
|
+
lines.push(paramsStr);
|
|
359
|
+
lines.push(` };`);
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
lines.push(` '${name}': Record<string, never>;`);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
lines.push('}');
|
|
366
|
+
lines.push('');
|
|
367
|
+
lines.push('export type RouteParamsByName<T extends RouteName> = RouteParams[T];');
|
|
368
|
+
lines.push('');
|
|
314
369
|
lines.push('export const routes = [');
|
|
315
370
|
lines.push(routes.map((route) => renderRoute(route)).join(',\n'));
|
|
316
371
|
lines.push('] satisfies RouteRecordRaw[];');
|
|
317
372
|
lines.push('');
|
|
318
373
|
lines.push('export default routes;');
|
|
319
374
|
lines.push('');
|
|
375
|
+
// Add type-enhanced hooks
|
|
376
|
+
lines.push('// Type-enhanced hooks');
|
|
377
|
+
lines.push("import { useRoute as vueUseRoute, useRouter as vueUseRouter } from 'vue-router';");
|
|
378
|
+
lines.push('');
|
|
379
|
+
// Generate useRoute with proper types
|
|
380
|
+
lines.push('/**');
|
|
381
|
+
lines.push(' * Type-safe useRoute hook');
|
|
382
|
+
lines.push(' * Route params are typed based on the current route name');
|
|
383
|
+
lines.push(' *');
|
|
384
|
+
lines.push(' * @example');
|
|
385
|
+
lines.push(' * ```ts');
|
|
386
|
+
lines.push(' * const route = useRoute();');
|
|
387
|
+
lines.push(' * // route.params.id is typed as string if route has :id param');
|
|
388
|
+
lines.push(' * ```');
|
|
389
|
+
lines.push(' */');
|
|
390
|
+
lines.push('export function useRoute<TName extends RouteName = RouteName>(');
|
|
391
|
+
lines.push(' name?: TName');
|
|
392
|
+
lines.push('): Omit<RouteLocationNormalizedLoaded, \'params\' | \'name\'> & {');
|
|
393
|
+
lines.push(' name: TName;');
|
|
394
|
+
lines.push(' params: TName extends keyof RouteParams ? RouteParams[TName] : RouteParams[RouteName];');
|
|
395
|
+
lines.push('} {');
|
|
396
|
+
lines.push(' return vueUseRoute() as any;');
|
|
397
|
+
lines.push('}');
|
|
398
|
+
lines.push('');
|
|
399
|
+
// Generate useRouter with proper types
|
|
400
|
+
lines.push('/**');
|
|
401
|
+
lines.push(' * Type-safe useRouter hook');
|
|
402
|
+
lines.push(' * Navigation methods are type-safe based on route names and params');
|
|
403
|
+
lines.push(' *');
|
|
404
|
+
lines.push(' * @example');
|
|
405
|
+
lines.push(' * ```ts');
|
|
406
|
+
lines.push(' * const router = useRouter();');
|
|
407
|
+
lines.push(' * router.push({');
|
|
408
|
+
lines.push(' * name: ROUTE_NAME.USER_DETAIL,');
|
|
409
|
+
lines.push(' * params: { id: \'123\' }');
|
|
410
|
+
lines.push(' * });');
|
|
411
|
+
lines.push(' * ```');
|
|
412
|
+
lines.push(' */');
|
|
413
|
+
lines.push('export function useRouter(): Omit<Router, \'push\' | \'replace\'> & {');
|
|
414
|
+
lines.push(' push: <TName extends RouteName>(location: {');
|
|
415
|
+
lines.push(' name?: TName;');
|
|
416
|
+
lines.push(' path?: string;');
|
|
417
|
+
lines.push(' params?: TName extends keyof RouteParams ? Partial<RouteParams[TName]> : Record<string, any>;');
|
|
418
|
+
lines.push(' query?: LocationQuery;');
|
|
419
|
+
lines.push(' hash?: string;');
|
|
420
|
+
lines.push(' }) => ReturnType<Router[\'push\']>;');
|
|
421
|
+
lines.push(' replace: <TName extends RouteName>(location: {');
|
|
422
|
+
lines.push(' name?: TName;');
|
|
423
|
+
lines.push(' path?: string;');
|
|
424
|
+
lines.push(' params?: TName extends keyof RouteParams ? Partial<RouteParams[TName]> : Record<string, any>;');
|
|
425
|
+
lines.push(' query?: LocationQuery;');
|
|
426
|
+
lines.push(' hash?: string;');
|
|
427
|
+
lines.push(' }) => ReturnType<Router[\'replace\']>;');
|
|
428
|
+
lines.push('} {');
|
|
429
|
+
lines.push(' const router = vueUseRouter();');
|
|
430
|
+
lines.push(' return router as any;');
|
|
431
|
+
lines.push('}');
|
|
432
|
+
lines.push('');
|
|
320
433
|
return `${lines.join('\n')}\n`;
|
|
321
434
|
}
|
|
322
435
|
export function generateRoutes({ pagesDir = path.resolve(process.cwd(), 'src/pages'), outFile = path.resolve(process.cwd(), 'src/router/route.gen.ts'), } = {}) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime types and utilities for @zphhpzzph/vue-route-gen
|
|
3
|
+
*
|
|
4
|
+
* This module provides type definitions and utilities for working with route metadata.
|
|
5
|
+
* The actual route metadata is extracted at build time from <route> custom blocks in SFC files.
|
|
6
|
+
*/
|
|
7
|
+
import type { ComputedRef } from 'vue';
|
|
8
|
+
export type { RouteMeta } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Runtime route metadata types
|
|
11
|
+
*/
|
|
12
|
+
export interface RouteMetaOptions {
|
|
13
|
+
title?: string;
|
|
14
|
+
layout?: string | false;
|
|
15
|
+
keepAlive?: boolean;
|
|
16
|
+
requiresAuth?: boolean;
|
|
17
|
+
roles?: string[];
|
|
18
|
+
redirect?: string | {
|
|
19
|
+
name: string;
|
|
20
|
+
path?: string;
|
|
21
|
+
};
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Route metadata with context information
|
|
26
|
+
*/
|
|
27
|
+
export interface RouteMetaWithContext {
|
|
28
|
+
meta: RouteMetaOptions;
|
|
29
|
+
routePath: string;
|
|
30
|
+
routeName: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Injection key for route metadata (optional)
|
|
34
|
+
*/
|
|
35
|
+
export declare const RouteMetaKey: unique symbol;
|
|
36
|
+
/**
|
|
37
|
+
* Composable to access current route's metadata (optional)
|
|
38
|
+
* This would require a provider to be set up in the app
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* import { useRouteMeta } from '@zphhpzzph/vue-route-gen/runtime';
|
|
43
|
+
*
|
|
44
|
+
* const meta = useRouteMeta();
|
|
45
|
+
* console.log(meta.value.meta.title); // Page title
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function useRouteMeta(): ComputedRef<RouteMetaWithContext> | null;
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,eAAsB,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,IAAI,WAAW,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAIvE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime types and utilities for @zphhpzzph/vue-route-gen
|
|
3
|
+
*
|
|
4
|
+
* This module provides type definitions and utilities for working with route metadata.
|
|
5
|
+
* The actual route metadata is extracted at build time from <route> custom blocks in SFC files.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Injection key for route metadata (optional)
|
|
9
|
+
*/
|
|
10
|
+
export const RouteMetaKey = Symbol('routeMeta');
|
|
11
|
+
/**
|
|
12
|
+
* Composable to access current route's metadata (optional)
|
|
13
|
+
* This would require a provider to be set up in the app
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { useRouteMeta } from '@zphhpzzph/vue-route-gen/runtime';
|
|
18
|
+
*
|
|
19
|
+
* const meta = useRouteMeta();
|
|
20
|
+
* console.log(meta.value.meta.title); // Page title
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export function useRouteMeta() {
|
|
24
|
+
// This would be injected by a provider in the app
|
|
25
|
+
// For now, return null as the injection setup is optional
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,kDAAkD;IAClD,0DAA0D;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime route metadata types
|
|
3
|
+
*/
|
|
4
|
+
export interface RouteMeta {
|
|
5
|
+
title?: string;
|
|
6
|
+
layout?: string | false;
|
|
7
|
+
keepAlive?: boolean;
|
|
8
|
+
requiresAuth?: boolean;
|
|
9
|
+
roles?: string[];
|
|
10
|
+
redirect?: string | {
|
|
11
|
+
name: string;
|
|
12
|
+
path?: string;
|
|
13
|
+
};
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zphhpzzph/vue-route-gen",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Vue 3 route generator for file-based routing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
".": {
|
|
10
10
|
"import": "./dist/index.js",
|
|
11
11
|
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./runtime": {
|
|
14
|
+
"import": "./dist/runtime/index.js",
|
|
15
|
+
"types": "./dist/runtime/index.d.ts"
|
|
12
16
|
}
|
|
13
17
|
},
|
|
14
18
|
"files": [
|
|
@@ -20,8 +24,16 @@
|
|
|
20
24
|
"scripts": {
|
|
21
25
|
"build": "tsc",
|
|
22
26
|
"dev": "tsc --watch",
|
|
27
|
+
"type-check": "tsc -b",
|
|
23
28
|
"prepublishOnly": "pnpm run build",
|
|
24
|
-
"
|
|
29
|
+
"pre-release": "pnpm run build && npm publish --access public --registry https://registry.npmjs.org/",
|
|
30
|
+
"release": "pnpm run build && npm publish --access public --registry https://registry.npmjs.org/",
|
|
31
|
+
"release:patch": "npm version patch && pnpm run release",
|
|
32
|
+
"release:minor": "npm version minor && pnpm run release",
|
|
33
|
+
"release:major": "npm version major && pnpm run release",
|
|
34
|
+
"release:pre": "npm version prepatch && pnpm run pre-release",
|
|
35
|
+
"release:preminor": "npm version preminor && pnpm run pre-release",
|
|
36
|
+
"release:premajor": "npm version premajor && pnpm run pre-release"
|
|
25
37
|
},
|
|
26
38
|
"keywords": [
|
|
27
39
|
"vue",
|
|
@@ -36,12 +48,15 @@
|
|
|
36
48
|
},
|
|
37
49
|
"repository": {
|
|
38
50
|
"type": "git",
|
|
39
|
-
"url": "https://github.com/z-ph/
|
|
51
|
+
"url": "https://github.com/z-ph/zphhpzzph-front.git",
|
|
40
52
|
"directory": "packages/vue-route-gen"
|
|
41
53
|
},
|
|
42
|
-
"homepage": "https://github.com/z-ph/
|
|
54
|
+
"homepage": "https://github.com/z-ph/zphhpzzph-front/tree/main/packages/vue-route-gen#readme",
|
|
43
55
|
"bugs": {
|
|
44
|
-
"url": "https://github.com/z-ph/
|
|
56
|
+
"url": "https://github.com/z-ph/zphhpzzph-front/issues"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"vue-router": "^4.0.0"
|
|
45
60
|
},
|
|
46
61
|
"devDependencies": {
|
|
47
62
|
"@types/node": "^20.11.0",
|
|
@@ -49,5 +64,8 @@
|
|
|
49
64
|
},
|
|
50
65
|
"engines": {
|
|
51
66
|
"node": ">=18.0.0"
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"@vue/compiler-sfc": "^3.5.26"
|
|
52
70
|
}
|
|
53
|
-
}
|
|
71
|
+
}
|