nuxt-typed-router 1.2.3 → 1.2.4
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 +1 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +64 -37
- package/dist/types.d.ts +1 -1
- package/package.json +24 -25
package/README.md
CHANGED
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -96,13 +96,17 @@ const routeParamExtractRegxp = /:(\w+)/;
|
|
|
96
96
|
function extractRouteParamsFromPath(path, previousParams) {
|
|
97
97
|
const params = path.match(routeParamExtractRegxp) ?? [];
|
|
98
98
|
params?.shift();
|
|
99
|
-
let allMergedParams = params.map(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
let allMergedParams = params.map(
|
|
100
|
+
(m) => ({
|
|
101
|
+
key: m,
|
|
102
|
+
type: "string | number",
|
|
103
|
+
required: true
|
|
104
|
+
})
|
|
105
|
+
);
|
|
104
106
|
if (previousParams?.length) {
|
|
105
|
-
allMergedParams = allMergedParams.concat(
|
|
107
|
+
allMergedParams = allMergedParams.concat(
|
|
108
|
+
previousParams.map((m) => ({ ...m, required: false }))
|
|
109
|
+
);
|
|
106
110
|
}
|
|
107
111
|
return allMergedParams;
|
|
108
112
|
}
|
|
@@ -165,15 +169,17 @@ function walkThoughRoutes({
|
|
|
165
169
|
output.routesObjectTemplate += `${nameKey}:{`;
|
|
166
170
|
output.routesDeclTemplate += `"${nameKey}":{`;
|
|
167
171
|
const allRouteParams = extractRouteParamsFromPath(route.path, previousParams);
|
|
168
|
-
childrenChunks?.map(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
172
|
+
childrenChunks?.map(
|
|
173
|
+
(routeConfig, index) => walkThoughRoutes({
|
|
174
|
+
route: routeConfig,
|
|
175
|
+
level: level + 1,
|
|
176
|
+
siblings: extractUnMatchingSiblings(route, siblings),
|
|
177
|
+
parentName: nameKey,
|
|
178
|
+
previousParams: allRouteParams,
|
|
179
|
+
output,
|
|
180
|
+
isLast: isItemLast(childrenChunks, index)
|
|
181
|
+
})
|
|
182
|
+
);
|
|
177
183
|
output.routesObjectTemplate += "},";
|
|
178
184
|
output.routesDeclTemplate += `}${isLast ? "" : ","}`;
|
|
179
185
|
} else if (route.name) {
|
|
@@ -226,7 +232,7 @@ const staticDeclarations = `
|
|
|
226
232
|
TypedLocationAsRelativeRaw<T> &
|
|
227
233
|
RouteLocationOptions;
|
|
228
234
|
|
|
229
|
-
|
|
235
|
+
interface _TypedRouter {
|
|
230
236
|
/**
|
|
231
237
|
* Remove an existing route by its name.
|
|
232
238
|
*
|
|
@@ -273,19 +279,10 @@ const staticDeclarations = `
|
|
|
273
279
|
to: TypedRouteLocationRaw<T>
|
|
274
280
|
): Promise<NavigationFailure | void | undefined>;
|
|
275
281
|
}
|
|
276
|
-
|
|
277
|
-
declare module 'nuxt/dist/app/nuxt' {
|
|
278
|
-
export interface NuxtApp {
|
|
279
|
-
$typedRouter: TypedRouter;
|
|
280
|
-
$routesList: RouteListDecl;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
282
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
$routesList: RouteListDecl;
|
|
288
|
-
}
|
|
283
|
+
export interface TypedRouter extends _TypedRouter {}
|
|
284
|
+
declare global {
|
|
285
|
+
export interface TypedRouter extends _TypedRouter {}
|
|
289
286
|
}
|
|
290
287
|
`;
|
|
291
288
|
|
|
@@ -294,12 +291,13 @@ function createRuntimePluginFile(routesDeclTemplate) {
|
|
|
294
291
|
${signatureTemplate}
|
|
295
292
|
import { defineNuxtPlugin } from '#app';
|
|
296
293
|
|
|
297
|
-
export default defineNuxtPlugin((
|
|
294
|
+
export default defineNuxtPlugin(() => {
|
|
295
|
+
const router = useRouter();
|
|
298
296
|
const routesList = ${routesDeclTemplate};
|
|
299
297
|
|
|
300
298
|
return {
|
|
301
299
|
provide: {
|
|
302
|
-
typedRouter:
|
|
300
|
+
typedRouter: router as TypedRouter,
|
|
303
301
|
routesList,
|
|
304
302
|
},
|
|
305
303
|
};
|
|
@@ -379,9 +377,11 @@ function createTypedRouteListExport(routesList) {
|
|
|
379
377
|
}
|
|
380
378
|
function createTypedRouteParamsExport(routesParams) {
|
|
381
379
|
return `export type TypedRouteParams = {
|
|
382
|
-
${routesParams.map(
|
|
380
|
+
${routesParams.map(
|
|
381
|
+
({ name, params }) => `"${name}": ${params.length ? `{
|
|
383
382
|
${params.map(({ key, required, type }) => `"${key}"${required ? "" : "?"}: ${type}`).join(",\n")}
|
|
384
|
-
}` : "never"}`
|
|
383
|
+
}` : "never"}`
|
|
384
|
+
).join(",\n")}
|
|
385
385
|
}`;
|
|
386
386
|
}
|
|
387
387
|
|
|
@@ -393,17 +393,44 @@ function routeHook(outDir, routesObjectName, srcDir, nuxt) {
|
|
|
393
393
|
const pluginName = "__typed-router.ts";
|
|
394
394
|
nuxt.hook("build:done", async () => {
|
|
395
395
|
const pluginFolder = `${srcDir}/plugins`;
|
|
396
|
-
await saveRouteFiles(
|
|
396
|
+
await saveRouteFiles(
|
|
397
|
+
pluginFolder,
|
|
398
|
+
srcDir,
|
|
399
|
+
pluginName,
|
|
400
|
+
createRuntimePluginFile(routesDeclTemplate)
|
|
401
|
+
);
|
|
397
402
|
});
|
|
398
403
|
await Promise.all([
|
|
399
|
-
saveRouteFiles(
|
|
400
|
-
|
|
401
|
-
|
|
404
|
+
saveRouteFiles(
|
|
405
|
+
outDir,
|
|
406
|
+
srcDir,
|
|
407
|
+
"__useTypedRouter.ts",
|
|
408
|
+
createRuntimeHookFile(routesDeclTemplate)
|
|
409
|
+
),
|
|
410
|
+
saveRouteFiles(
|
|
411
|
+
outDir,
|
|
412
|
+
srcDir,
|
|
413
|
+
`__routes.ts`,
|
|
414
|
+
createRuntimeRoutesFile({ routesList, routesObjectTemplate, routesObjectName })
|
|
415
|
+
),
|
|
416
|
+
saveRouteFiles(
|
|
417
|
+
outDir,
|
|
418
|
+
srcDir,
|
|
419
|
+
`typed-router.d.ts`,
|
|
420
|
+
createDeclarationRoutesFile({ routesDeclTemplate, routesList, routesParams })
|
|
421
|
+
),
|
|
402
422
|
saveRouteFiles(outDir, srcDir, "index.ts", createRuntimeIndexFile())
|
|
403
423
|
]);
|
|
404
424
|
console.log(logSymbols.success, `[typed-router] Routes definitions generated`);
|
|
405
425
|
} else {
|
|
406
|
-
console.log(
|
|
426
|
+
console.log(
|
|
427
|
+
logSymbols.warning,
|
|
428
|
+
chalk.yellow(
|
|
429
|
+
`[typed-router] No routes defined. Check if your ${chalk.underline(
|
|
430
|
+
chalk.bold("pages")
|
|
431
|
+
)} folder exists and remove ${chalk.underline(chalk.bold("app.vue"))}`
|
|
432
|
+
)
|
|
433
|
+
);
|
|
407
434
|
}
|
|
408
435
|
});
|
|
409
436
|
} catch (e) {
|
package/dist/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,30 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-typed-router",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "Provide autocompletion for pages route names generated by Nuxt router",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
"play:build": "nuxi build playground",
|
|
9
|
-
"prepack": "nuxt-module-build",
|
|
10
|
-
"build:local": "nuxt-module-build --stub && cross-env NUXT_BUILD_TYPE=stub nuxi dev playground",
|
|
11
|
-
"init:build": "nuxt-module-build --stub && nuxi prepare playground",
|
|
12
|
-
"build:test": "cross-env NUXT_BUILD_TYPE=stub yarn prepack && yarn play:build",
|
|
13
|
-
"test": "yarn build:test && vitest run",
|
|
14
|
-
"test:watch": "yarn build:test && vitest"
|
|
15
|
-
},
|
|
6
|
+
"main": "./dist/module.cjs",
|
|
7
|
+
"types": "./main.d.ts",
|
|
16
8
|
"exports": {
|
|
17
9
|
".": {
|
|
18
10
|
"import": "./dist/module.mjs",
|
|
19
11
|
"require": "./dist/module.cjs"
|
|
20
12
|
}
|
|
21
13
|
},
|
|
22
|
-
"main": "./dist/module.cjs",
|
|
23
|
-
"types": "./main.d.ts",
|
|
24
14
|
"files": [
|
|
25
15
|
"dist",
|
|
26
16
|
"main.d.ts"
|
|
27
17
|
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"prepack": "nuxt-module-build",
|
|
20
|
+
"dev": "nuxi dev playground",
|
|
21
|
+
"dev:build": "nuxi build playground",
|
|
22
|
+
"dev:prepare": "nuxt-module-build --stub && nuxi prepare playground",
|
|
23
|
+
"build:test": "cross-env NUXT_BUILD_TYPE=stub yarn prepack && yarn dev:build",
|
|
24
|
+
"test": "yarn build:test && vitest run",
|
|
25
|
+
"test:watch": "yarn build:test && vitest"
|
|
26
|
+
},
|
|
28
27
|
"publishConfig": {
|
|
29
28
|
"access": "public"
|
|
30
29
|
},
|
|
@@ -51,28 +50,28 @@
|
|
|
51
50
|
"url": "https://github.com/victorgarciaesgi/nuxt-typed-router/issues"
|
|
52
51
|
},
|
|
53
52
|
"dependencies": {
|
|
54
|
-
"@nuxt/kit": "
|
|
55
|
-
"chalk": "^
|
|
53
|
+
"@nuxt/kit": "3.0.0",
|
|
54
|
+
"chalk": "^5.2.0",
|
|
56
55
|
"lodash-es": "^4.17.21",
|
|
57
56
|
"log-symbols": "^5.1.0",
|
|
58
57
|
"mkdirp": "^1.0.4",
|
|
59
|
-
"pathe": "
|
|
60
|
-
"prettier": "
|
|
58
|
+
"pathe": "1.0.0",
|
|
59
|
+
"prettier": "2.8.1"
|
|
61
60
|
},
|
|
62
61
|
"devDependencies": {
|
|
63
|
-
"@nuxt/module-builder": "
|
|
62
|
+
"@nuxt/module-builder": "^0.2.1",
|
|
64
63
|
"@nuxt/types": "^2.15.8",
|
|
65
|
-
"@nuxtjs/eslint-config-typescript": "
|
|
64
|
+
"@nuxtjs/eslint-config-typescript": "^12.0.0",
|
|
66
65
|
"@types/lodash-es": "^4.17.6",
|
|
67
66
|
"@types/mkdirp": "^1.0.2",
|
|
68
67
|
"@types/node": "^17.0.23",
|
|
69
|
-
"@types/prettier": "^2.7.
|
|
68
|
+
"@types/prettier": "^2.7.2",
|
|
70
69
|
"cross-env": "^7.0.3",
|
|
71
|
-
"eslint": "8.
|
|
70
|
+
"eslint": "8.30.0",
|
|
72
71
|
"eslint-config-prettier": "^8.5.0",
|
|
73
|
-
"nuxt": "
|
|
74
|
-
"typescript": "^4.
|
|
75
|
-
"vitest": "^0.
|
|
76
|
-
"vue-router": "^4.1.
|
|
72
|
+
"nuxt": "3.0.0",
|
|
73
|
+
"typescript": "^4.9.4",
|
|
74
|
+
"vitest": "^0.26.1",
|
|
75
|
+
"vue-router": "^4.1.6"
|
|
77
76
|
}
|
|
78
77
|
}
|