@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 CHANGED
@@ -1,22 +1,30 @@
1
- # @signlab/vue-route-gen
1
+ # @zphhpzzph/vue-route-gen
2
2
 
3
- Vue 3 file-based route generator for Vue Router.
3
+ > [English](./README_en.md) | 简体中文
4
4
 
5
- ## Features
5
+ Vue 3 基于文件系统的路由生成器,为 Vue Router 提供完整的类型推断支持。
6
6
 
7
- - Automatic route discovery from file structure
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
- ## Installation
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 @signlab/vue-route-gen
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
- ## Usage
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
- ### Programmatic
35
+ ### 编程方式
28
36
 
29
37
  ```typescript
30
- import { generateRoutes } from '@signlab/vue-route-gen';
38
+ import { generateRoutes } from '@zphhpzzph/vue-route-gen';
31
39
 
32
- // Generate routes with default options
40
+ // 使用默认选项生成路由
33
41
  generateRoutes();
34
42
 
35
- // Or specify custom directories
43
+ // 或指定自定义目录
36
44
  generateRoutes({
37
45
  pagesDir: './src/pages',
38
46
  outFile: './src/router/route.gen.ts'
39
47
  });
40
48
  ```
41
49
 
42
- ## File Structure
50
+ ## 文件结构
43
51
 
44
52
  ```
45
53
  src/pages/
46
- ├── layout.vue # Root layout
47
- ├── index.vue # Home page (/)
48
- ├── about.vue # About page (/about)
54
+ ├── layout.vue # 根布局
55
+ ├── index.vue # 首页 (/)
56
+ ├── about.vue # 关于页面 (/about)
49
57
  ├── users/
50
- │ ├── layout.vue # Users layout (/users)
51
- │ ├── index.vue # Users list (/users)
52
- │ └── [id].vue # User detail (/users/:id)
53
- └── $slug.vue # Catch-all (/:slug)
58
+ │ ├── layout.vue # 用户布局 (/users)
59
+ │ ├── index.vue # 用户列表 (/users)
60
+ │ └── [id].vue # 用户详情 (/users/:id)
61
+ └── $slug.vue # 通配路由 (/:slug)
54
62
  ```
55
63
 
56
- ## Configuration
64
+ ## 配置选项
57
65
 
58
- ### Options
66
+ ### 选项
59
67
 
60
- - `pagesDir`: Pages directory path (default: `src/pages`)
61
- - `outFile`: Output file path (default: `src/router/route.gen.ts`)
68
+ - `pagesDir`: 页面目录路径(默认:`src/pages`)
69
+ - `outFile`: 输出文件路径(默认:`src/router/route.gen.ts`)
62
70
 
63
- ### Excluded Directories
71
+ ### 自动排除的目录
64
72
 
65
- The following directories are automatically excluded:
73
+ 以下目录会被自动排除:
66
74
  - `components`
67
75
  - `hooks`
68
- - `service`
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
- ## Generated Output
287
+ ### 发布脚本说明
71
288
 
72
- The generator creates:
289
+ - `release:patch` - 自动更新补丁版本并发布(bug 修复)
290
+ - `release:minor` - 自动更新次要版本并发布(新功能)
291
+ - `release:major` - 自动更新主要版本并发布(破坏性变更)
292
+ - `release:pre` - 发布预发布版本(alpha/beta/rc)
293
+ - `release` - 仅发布(不更新版本号)
294
+ - `pre-release` - 发布预发布版本(不更新版本号)
73
295
 
74
- 1. `ROUTE_NAME` - Route name constants
75
- 2. `ROUTE_PATH` - Route path constants
76
- 3. `ROUTE_PATH_BY_NAME` - Path lookup by name
77
- 4. `routes` - Vue Router route records array
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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,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;CACxB;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;CACrC;AAqZD,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":"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
- const EXCLUDED_DIRS = new Set(['components', 'hooks', 'service']);
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
- if (segment.startsWith('$')) {
74
- return `:${segment.slice(1)}`;
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
- routeEntries.push({ name, path: routePath });
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
- routeEntries.push({ name: layoutName, path: layoutPath });
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
- routeEntries.push({ name, path: fullPath });
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 @signlab/vue-route-gen.');
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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAkB,MAAM,mBAAmB,CAAC;AAIrE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,CAAC,CAAC,CAAC;AAC/F,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oCAAoC,CAAC,CAAC;AAmCrF,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,SAAS;IAChB,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,SAAS,SAAS,CAAC,KAAgB;IACjC,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;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,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,SAAS,aAAa,CAAC,QAAgB;IACrC,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,SAAS,YAAY,CAAC,OAAe;IACnC,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;AAED,SAAS,QAAQ,CAAC,QAAkB;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,KAAK,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,SAAS,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,QAAkB,EAAE,YAAqB;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEhE,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,MAAc,EAAE,KAAa;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,MAAM,IAAI,GAAG,CAAC;IACvB,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAC9B,OAAO,IAAI,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB,EAAE,MAAM,GAAG,IAAI;IACnD,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,2BAA2B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAC7E,CAAC;IAEF,sBAAsB;IACtB,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,eAAe,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,aAAa,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,QAAQ;aACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,UAAU,IAAI,CAAC,CAAC;aACrD,IAAI,CAAC,KAAK,CAAC,CACf,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,MAAM,CAAI,MAAW;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAC;IAC1B,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,cAAc;SAC9B,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzB,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAyC;IAC/E,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClE,MAAM,oBAAoB,GACxB,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;QAE9D,OAAO;YACL,QAAQ;YACR,UAAU,EAAE,oBAAoB;YAChC,QAAQ;SACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,aAAa;SAC1B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;YAC9C,KAAK,EAAE,WAAW;SACnB,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,WAAW,GAAG,OAAO;SACxB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACtC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACnD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAC1B,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CACtD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,WAAW;SACrB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;IACrD,MAAM,eAAe,GAAiB,EAAE,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,YAAY,GAA4D,EAAE,CAAC;IACjF,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAE1C,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAErD,mCAAmC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAExC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI;YACJ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,EAAE;YACZ,MAAM;YACN,IAAI;SACL,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SACpD,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE;QACzB,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnD,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACzD,CAAC;QACF,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1E,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAE1C,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAEhF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,SAAS,GAAG,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,gBAAgB;iBAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;iBAC/B,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAE1C,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAEpD,mCAAmC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAClF,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAE5C,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,IAAI;gBACJ,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,EAAE;gBACZ,MAAM;gBACN,IAAI;aACL,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ;SACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,MAAM,MAAM,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,YAAY,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAuB,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC;IAErG,OAAO;QACL,MAAM;QACN,aAAa,EAAE,WAAW;QAC1B,aAAa,EAAE,WAAW;QAC1B,eAAe;QACf,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,MAAM,EACN,aAAa,EACb,aAAa,EACb,eAAe,EACf,iBAAiB,EACP;IACV,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAiB,eAAe,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAmB,iBAAiB,CAAC,CAAC;IAClE,MAAM,eAAe,GAAoB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;QAC5C,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,CAAC;YACZ,GAAG,GAAG,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;QAC/B,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,eAAe,CAAC,IAAI,CAAC;YACnB,GAAG;YACH,IAAI;YACJ,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAE;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC;IACtH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CACR,eAAe;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACpF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CACR,eAAe;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACpF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CACR,eAAe;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,GAAG,GAAG,CAAC;SAC3E,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CACR,eAAe;SACZ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CACzB,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAC3D;SACA,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC/C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,2BAA2B,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACnF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,0BAA0B;IAC1B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,sCAAsC;IACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IAC9E,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAChF,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;IACvG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,uCAAuC;IACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACpF,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,mGAAmG,CAAC,CAAC;IAChH,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,mGAAmG,CAAC,CAAC;IAChH,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,EACnD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,yBAAyB,CAAC,MACvC,EAAE;IAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,iDAAiD;IACjD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEjD,8DAA8D;IAC9D,IAAI,KAAK,CAAC,KAAK,KAAK,gBAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEtC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,sCAAsC;YACtC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C,yCAAyC;IACzC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -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,5 @@
1
+ /**
2
+ * Runtime route metadata types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -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.0.0",
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
- "publish": "npm publish --access public --registry https://registry.npmjs.org/"
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/signLab-front.git",
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/signLab-front/tree/main/packages/vue-route-gen#readme",
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/signLab-front/issues"
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
+ }