@uxf/router 3.0.0-beta.4 → 10.0.0-beta.3
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 +12 -1
- package/helper.js +30 -20
- package/index.js +0 -1
- package/package.json +4 -29
- package/router.d.ts +2 -0
- package/router.js +25 -26
- package/sitemapGenerator.js +37 -99
- package/types.d.ts +1 -2
- package/types.js +0 -1
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ import router, { RouteList } from "./routes";
|
|
|
34
34
|
import { UxfGetServerSideProps, UxfGetStaticProps } from "@uxf/router";
|
|
35
35
|
import { PreviewData as NextPreviewData } from "next/types";
|
|
36
36
|
|
|
37
|
-
export const { route, routeToUrl, sitemapGenerator } = router;
|
|
37
|
+
export const { route, routeToUrl, sitemapGenerator, useQueryParams } = router;
|
|
38
38
|
|
|
39
39
|
export type GetStaticProps<
|
|
40
40
|
Route extends keyof RouteList,
|
|
@@ -64,6 +64,17 @@ Add configuration to `tsconfig.json`
|
|
|
64
64
|
}
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
## useQueryParams
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
import {useQueryParams} from "@app-routes";
|
|
71
|
+
import {queryParamToNumber} from "./helper";
|
|
72
|
+
|
|
73
|
+
const params = useQueryParams<"route-name">()
|
|
74
|
+
|
|
75
|
+
const id = queryParamToNumber(params.id);
|
|
76
|
+
```
|
|
77
|
+
|
|
67
78
|
## Next Link
|
|
68
79
|
|
|
69
80
|
```tsx
|
package/helper.js
CHANGED
|
@@ -2,53 +2,63 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.queryParamToNumberStrict = exports.queryParamToNumber = exports.queryParamToBooleanStrict = exports.queryParamToBoolean = exports.queryParamToStringStrict = exports.queryParamToString = void 0;
|
|
4
4
|
function queryParamToString(param) {
|
|
5
|
-
if (Array.isArray(param))
|
|
6
|
-
throw new Error(
|
|
5
|
+
if (Array.isArray(param)) {
|
|
6
|
+
throw new Error(`Query parameter is array. Should be string.`);
|
|
7
|
+
}
|
|
7
8
|
return param;
|
|
8
9
|
}
|
|
9
10
|
exports.queryParamToString = queryParamToString;
|
|
10
11
|
function queryParamToStringStrict(param) {
|
|
11
|
-
|
|
12
|
-
if (paramOrUndefined === undefined)
|
|
12
|
+
const paramOrUndefined = queryParamToString(param);
|
|
13
|
+
if (paramOrUndefined === undefined) {
|
|
13
14
|
throw new Error("Parameter not found.");
|
|
15
|
+
}
|
|
14
16
|
return paramOrUndefined;
|
|
15
17
|
}
|
|
16
18
|
exports.queryParamToStringStrict = queryParamToStringStrict;
|
|
17
19
|
function queryParamToBoolean(param) {
|
|
18
|
-
if (Array.isArray(param))
|
|
19
|
-
throw new Error(
|
|
20
|
-
|
|
20
|
+
if (Array.isArray(param)) {
|
|
21
|
+
throw new Error(`Query parameter is array. Should be string.`);
|
|
22
|
+
}
|
|
23
|
+
if (param === undefined) {
|
|
21
24
|
return undefined;
|
|
22
|
-
|
|
25
|
+
}
|
|
26
|
+
if (param === "true") {
|
|
23
27
|
return true;
|
|
24
|
-
|
|
28
|
+
}
|
|
29
|
+
if (param === "false") {
|
|
25
30
|
return false;
|
|
26
|
-
|
|
31
|
+
}
|
|
32
|
+
throw new Error(`Parameter should be boolean (true|false). Given '${param}'.`);
|
|
27
33
|
}
|
|
28
34
|
exports.queryParamToBoolean = queryParamToBoolean;
|
|
29
35
|
function queryParamToBooleanStrict(param) {
|
|
30
|
-
|
|
31
|
-
if (paramOrUndefined === undefined)
|
|
36
|
+
const paramOrUndefined = queryParamToBoolean(param);
|
|
37
|
+
if (paramOrUndefined === undefined) {
|
|
32
38
|
throw new Error("Parameter not found.");
|
|
39
|
+
}
|
|
33
40
|
return paramOrUndefined;
|
|
34
41
|
}
|
|
35
42
|
exports.queryParamToBooleanStrict = queryParamToBooleanStrict;
|
|
36
43
|
function queryParamToNumber(param) {
|
|
37
|
-
if (Array.isArray(param))
|
|
38
|
-
throw new Error(
|
|
39
|
-
|
|
44
|
+
if (Array.isArray(param)) {
|
|
45
|
+
throw new Error(`Query parameter is array. Should be number.`);
|
|
46
|
+
}
|
|
47
|
+
if (param === undefined) {
|
|
40
48
|
return undefined;
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
}
|
|
50
|
+
const numberParam = Number.parseInt(param, 10);
|
|
51
|
+
if (Number.isNaN(numberParam)) {
|
|
43
52
|
throw new Error("Query parameter is NaN. Should be number.");
|
|
53
|
+
}
|
|
44
54
|
return numberParam;
|
|
45
55
|
}
|
|
46
56
|
exports.queryParamToNumber = queryParamToNumber;
|
|
47
57
|
function queryParamToNumberStrict(param) {
|
|
48
|
-
|
|
49
|
-
if (paramOrUndefined === undefined)
|
|
58
|
+
const paramOrUndefined = queryParamToNumber(param);
|
|
59
|
+
if (paramOrUndefined === undefined) {
|
|
50
60
|
throw new Error("Parameter not found.");
|
|
61
|
+
}
|
|
51
62
|
return paramOrUndefined;
|
|
52
63
|
}
|
|
53
64
|
exports.queryParamToNumberStrict = queryParamToNumberStrict;
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxTQUFnQixrQkFBa0IsQ0FBQyxLQUFnQjtJQUMvQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBRXpGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFKRCxnREFJQztBQUVELFNBQWdCLHdCQUF3QixDQUFDLEtBQWdCO0lBQ3JELElBQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkQsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRTVFLE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQztBQU5ELDREQU1DO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsS0FBZ0I7SUFDaEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUV6RixJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDMUMsSUFBSSxLQUFLLEtBQUssTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ2xDLElBQUksS0FBSyxLQUFLLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVwQyxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUFvRCxLQUFLLE9BQUksQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFSRCxrREFRQztBQUVELFNBQWdCLHlCQUF5QixDQUFDLEtBQWdCO0lBQ3RELElBQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFcEQsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRTVFLE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQztBQU5ELDhEQU1DO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsS0FBZ0I7SUFDL0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUV6RixJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFMUMsSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFL0MsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUU1RixPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDO0FBVkQsZ0RBVUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxLQUFnQjtJQUNyRCxJQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRW5ELElBQUksZ0JBQWdCLEtBQUssU0FBUztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUU1RSxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUM7QUFORCw0REFNQyJ9
|
package/index.js
CHANGED
|
@@ -17,4 +17,3 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./router"), exports);
|
|
18
18
|
__exportStar(require("./types"), exports);
|
|
19
19
|
__exportStar(require("./helper"), exports);
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6QiwwQ0FBd0I7QUFDeEIsMkNBQXlCIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/router",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0-beta.3",
|
|
4
4
|
"description": "UXF Router",
|
|
5
5
|
"author": "UXFans <dev@uxf.cz>",
|
|
6
6
|
"homepage": "https://gitlab.com/uxf-npm/router#readme",
|
|
@@ -16,14 +16,8 @@
|
|
|
16
16
|
"url": "git+https://gitlab.com/uxf-npm/router.git"
|
|
17
17
|
},
|
|
18
18
|
"scripts": {
|
|
19
|
-
"build": "tsc -P tsconfig.
|
|
20
|
-
"
|
|
21
|
-
"clean": "rm -rf ./dist",
|
|
22
|
-
"dev": "next dev",
|
|
23
|
-
"prepublish": "npm run-script build",
|
|
24
|
-
"test": "npm run-script typecheck",
|
|
25
|
-
"typecheck": "tsc --noEmit --skipLibCheck",
|
|
26
|
-
"lint": "./node_modules/.bin/eslint -c .eslintrc.js \"./**/*.ts*\""
|
|
19
|
+
"build": "tsc -P tsconfig.json",
|
|
20
|
+
"typecheck": "tsc --noEmit --skipLibCheck"
|
|
27
21
|
},
|
|
28
22
|
"bugs": {
|
|
29
23
|
"url": "https://gitlab.com/uxf-npm/router/issues"
|
|
@@ -31,27 +25,8 @@
|
|
|
31
25
|
"dependencies": {
|
|
32
26
|
"qs": "^6.10.1"
|
|
33
27
|
},
|
|
34
|
-
"devDependencies": {
|
|
35
|
-
"@types/jest": "^27.4.0",
|
|
36
|
-
"@types/node": "^17.0.10",
|
|
37
|
-
"@types/qs": "^6.9.7",
|
|
38
|
-
"@types/react": "^18.0.26",
|
|
39
|
-
"@types/react-dom": "^18.0.9",
|
|
40
|
-
"jest": "^27.4.7",
|
|
41
|
-
"next": "^13.0.7",
|
|
42
|
-
"prettier": "^2.5.1",
|
|
43
|
-
"react": "^18.2.0",
|
|
44
|
-
"react-dom": "^18.2.0",
|
|
45
|
-
"ts-jest": "^27.1.3",
|
|
46
|
-
"typescript": "^4.5.4",
|
|
47
|
-
"@typescript-eslint/eslint-plugin": "^5.11.0",
|
|
48
|
-
"@uxf/eslint-config": "^1.2.3",
|
|
49
|
-
"eslint": "^8.8.0",
|
|
50
|
-
"eslint-config-prettier": "^8.3.0",
|
|
51
|
-
"eslint-plugin-prettier": "^4.0.0"
|
|
52
|
-
},
|
|
53
28
|
"peerDependencies": {
|
|
54
29
|
"react": "17 - 18",
|
|
55
30
|
"react-dom": "17 - 18"
|
|
56
31
|
}
|
|
57
|
-
}
|
|
32
|
+
}
|
package/router.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LinkProps } from "next/link";
|
|
2
2
|
import { SitemapGeneratorType } from "./sitemapGenerator";
|
|
3
|
+
import { QueryParams } from "./types";
|
|
3
4
|
export type FunctionParametersGenerator<RouteList> = {
|
|
4
5
|
[K in keyof RouteList]: RouteList[K] extends null ? [K] : [K, RouteList[K]];
|
|
5
6
|
}[keyof RouteList];
|
|
@@ -13,6 +14,7 @@ type Router<RouteList> = {
|
|
|
13
14
|
[key in keyof RouteList]: string;
|
|
14
15
|
};
|
|
15
16
|
useActiveRoute: () => keyof RouteList;
|
|
17
|
+
useQueryParams: <T extends keyof RouteList>() => QueryParams<RouteList, T>;
|
|
16
18
|
};
|
|
17
19
|
export declare function createRouter<RouteList>(routes: {
|
|
18
20
|
[key in keyof RouteList]: string;
|
package/router.js
CHANGED
|
@@ -1,49 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createRouter = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const qs_1 = require("qs");
|
|
5
|
+
const sitemapGenerator_1 = require("./sitemapGenerator");
|
|
6
|
+
const router_1 = require("next/router");
|
|
7
7
|
function createRouter(routes) {
|
|
8
8
|
return {
|
|
9
|
-
route:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
routeToUrl: function (route, params) {
|
|
17
|
-
if (params === void 0) { params = undefined; }
|
|
18
|
-
var pathname = routes[route];
|
|
9
|
+
route: (route, params = undefined) => ({
|
|
10
|
+
pathname: routes[route],
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
12
|
+
query: params !== null && params !== void 0 ? params : null,
|
|
13
|
+
}),
|
|
14
|
+
routeToUrl: (route, params = undefined) => {
|
|
15
|
+
let pathname = routes[route];
|
|
19
16
|
if (!pathname) {
|
|
20
|
-
throw new Error(
|
|
17
|
+
throw new Error(`Route '${String(route)}' not found.`);
|
|
21
18
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
const restParams = {};
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
21
|
+
Object.keys(params !== null && params !== void 0 ? params : {}).forEach((key) => {
|
|
22
|
+
const value = params[key];
|
|
23
|
+
if (pathname.includes(`[${key}]`)) {
|
|
24
|
+
pathname = pathname.replace(`[${key}]`, value);
|
|
27
25
|
}
|
|
28
26
|
else {
|
|
29
27
|
restParams[key] = value;
|
|
30
28
|
}
|
|
31
29
|
});
|
|
32
30
|
if (Object.keys(restParams).length > 0) {
|
|
33
|
-
pathname =
|
|
31
|
+
pathname = `${pathname}?${(0, qs_1.stringify)(restParams)}`;
|
|
34
32
|
}
|
|
35
33
|
return pathname;
|
|
36
34
|
},
|
|
37
|
-
useActiveRoute:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (!activeRoute)
|
|
35
|
+
useActiveRoute: () => {
|
|
36
|
+
const router = (0, router_1.useRouter)();
|
|
37
|
+
const activeRoute = Object.keys(routes).find((route) => routes[route] === router.pathname);
|
|
38
|
+
if (!activeRoute) {
|
|
41
39
|
throw new Error("Active route not found.");
|
|
40
|
+
}
|
|
42
41
|
return activeRoute;
|
|
43
42
|
},
|
|
44
43
|
sitemapGenerator: (0, sitemapGenerator_1.createSitemapGenerator)(),
|
|
45
|
-
routes
|
|
44
|
+
routes,
|
|
45
|
+
useQueryParams: () => (0, router_1.useRouter)().query,
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
exports.createRouter = createRouter;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JvdXRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQStCO0FBRS9CLHVEQUFrRjtBQUNsRixzQ0FBd0M7QUFpQnhDLFNBQWdCLFlBQVksQ0FBWSxNQUE0QztJQUNoRixPQUFPO1FBQ0gsS0FBSyxFQUFFLFVBQUMsS0FBSyxFQUFFLE1BQWtCO1lBQWxCLHVCQUFBLEVBQUEsa0JBQWtCO1lBQUssT0FBQSxDQUFDO2dCQUNuQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDdkIsS0FBSyxFQUFFLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLElBQUk7YUFDeEIsQ0FBQztRQUhvQyxDQUdwQztRQUNGLFVBQVUsRUFBRSxVQUFDLEtBQUssRUFBRSxNQUFrQjtZQUFsQix1QkFBQSxFQUFBLGtCQUFrQjtZQUNsQyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFN0IsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFVLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWMsQ0FBQyxDQUFDO2FBQzFEO1lBRUQsSUFBTSxVQUFVLEdBQVEsRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxhQUFOLE1BQU0sY0FBTixNQUFNLEdBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBRztnQkFDbEMsSUFBTSxLQUFLLEdBQUksTUFBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBSSxHQUFHLE1BQUcsQ0FBQyxFQUFFO29CQUMvQixRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFJLEdBQUcsTUFBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUNsRDtxQkFBTTtvQkFDSCxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2lCQUMzQjtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BDLFFBQVEsR0FBRyxVQUFHLFFBQVEsY0FBSSxJQUFBLGNBQVMsRUFBQyxVQUFVLENBQUMsQ0FBRSxDQUFDO2FBQ3JEO1lBQ0QsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQztRQUNELGNBQWMsRUFBRTtZQUNaLElBQU0sTUFBTSxHQUFHLElBQUEsa0JBQVMsR0FBRSxDQUFDO1lBQzNCLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsS0FBSyxJQUFLLE9BQUMsTUFBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQTFDLENBQTBDLENBQUMsQ0FBQztZQUVwRyxJQUFJLENBQUMsV0FBVztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFFN0QsT0FBTyxXQUE4QixDQUFDO1FBQzFDLENBQUM7UUFDRCxnQkFBZ0IsRUFBRSxJQUFBLHlDQUFzQixHQUFFO1FBQzFDLE1BQU0sUUFBQTtLQUNULENBQUM7QUFDTixDQUFDO0FBdENELG9DQXNDQyJ9
|
package/sitemapGenerator.js
CHANGED
|
@@ -1,112 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
39
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
40
|
-
if (!m) return o;
|
|
41
|
-
var i = m.call(o), r, ar = [], e;
|
|
42
|
-
try {
|
|
43
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
44
|
-
}
|
|
45
|
-
catch (error) { e = { error: error }; }
|
|
46
|
-
finally {
|
|
47
|
-
try {
|
|
48
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
49
|
-
}
|
|
50
|
-
finally { if (e) throw e.error; }
|
|
51
|
-
}
|
|
52
|
-
return ar;
|
|
53
|
-
};
|
|
54
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
55
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
56
|
-
if (ar || !(i in from)) {
|
|
57
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
58
|
-
ar[i] = from[i];
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
62
|
-
};
|
|
63
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
3
|
exports.createSitemapGenerator = void 0;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var _this = this;
|
|
4
|
+
class SitemapGenerator {
|
|
5
|
+
constructor() {
|
|
68
6
|
this.routeResolvers = {};
|
|
69
|
-
this.exhaustive =
|
|
70
|
-
this.toXml =
|
|
71
|
-
return
|
|
72
|
-
return
|
|
73
|
-
|
|
74
|
-
|
|
7
|
+
this.exhaustive = () => this;
|
|
8
|
+
this.toXml = () => {
|
|
9
|
+
return this.getSitemapItems().then((sitemapItems) => {
|
|
10
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
11
|
+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
|
|
12
|
+
${sitemapItems
|
|
13
|
+
.map((item) => `<url>
|
|
14
|
+
<loc>${item.loc}</loc>
|
|
15
|
+
<priority>${item.priority}</priority>
|
|
16
|
+
${item.lastmod ? `<lastmod>${item.lastmod}</lastmod>` : "<changefreq>monthly</changefreq>"}
|
|
17
|
+
</url>`)
|
|
18
|
+
.join("")}
|
|
19
|
+
</urlset>`;
|
|
75
20
|
});
|
|
76
21
|
};
|
|
77
|
-
this.toJson =
|
|
22
|
+
this.toJson = () => this.getSitemapItems().then(JSON.stringify);
|
|
78
23
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
sitemapItems.push(result);
|
|
95
|
-
});
|
|
96
|
-
return sitemapItems;
|
|
97
|
-
})];
|
|
24
|
+
async getSitemapItems() {
|
|
25
|
+
const routes = Object.keys(this.routeResolvers);
|
|
26
|
+
return Promise.all(routes.map((route) => { var _a, _b; return (_b = (_a = this.routeResolvers)[route]) === null || _b === void 0 ? void 0 : _b.call(_a, route); })).then((resolverResults) => {
|
|
27
|
+
const sitemapItems = [];
|
|
28
|
+
resolverResults.forEach((result) => {
|
|
29
|
+
if (!result) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (Array.isArray(result)) {
|
|
33
|
+
sitemapItems.push(...result);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
sitemapItems.push(result);
|
|
98
37
|
});
|
|
38
|
+
return sitemapItems;
|
|
99
39
|
});
|
|
100
|
-
}
|
|
101
|
-
|
|
40
|
+
}
|
|
41
|
+
add(route, resolver) {
|
|
102
42
|
this.routeResolvers[route] = resolver;
|
|
103
43
|
return this;
|
|
104
|
-
}
|
|
105
|
-
|
|
44
|
+
}
|
|
45
|
+
skip() {
|
|
106
46
|
return this;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
var createSitemapGenerator = function () { return new SitemapGenerator(); };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const createSitemapGenerator = () => new SitemapGenerator();
|
|
111
50
|
exports.createSitemapGenerator = createSitemapGenerator;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZW1hcEdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zaXRlbWFwR2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7SUFBQTtRQUFBLGlCQXdEQztRQXZEVyxtQkFBYyxHQUE4RCxFQUFFLENBQUM7UUFtQ2hGLGVBQVUsR0FBUSxjQUFNLE9BQUEsS0FBSSxFQUFKLENBQUksQ0FBQztRQUU3QixVQUFLLEdBQVE7WUFDaEIsT0FBTyxLQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQUMsWUFBWTtnQkFDNUMsT0FBTyw2VEFFTCxZQUFZO3FCQUNULEdBQUcsQ0FDQSxVQUFDLElBQUksSUFBSyxPQUFBLDhDQUNDLElBQUksQ0FBQyxHQUFHLDJEQUNDLElBQUksQ0FBQyxRQUFRLHNEQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxtQkFBWSxJQUFJLENBQUMsT0FBTyxlQUFZLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxxQ0FDdkYsRUFKRCxDQUlDLENBQ2Q7cUJBQ0EsSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFDUCxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFFSyxXQUFNLEdBQVEsY0FBTSxPQUFBLEtBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUEzQyxDQUEyQyxDQUFDO0lBQzNFLENBQUM7SUFyRGlCLDBDQUFlLEdBQTdCOzs7OztnQkFDVSxNQUFNLEdBQTJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBUSxDQUFDO2dCQUUvRSxzQkFBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBQyxLQUFLLGdCQUFLLE9BQUEsTUFBQSxNQUFBLEtBQUksQ0FBQyxjQUFjLEVBQUMsS0FBSyxDQUFDLG1EQUFHLEtBQUssQ0FBQyxDQUFBLEVBQUEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsZUFBZTt3QkFDaEcsSUFBTSxZQUFZLEdBQWtCLEVBQUUsQ0FBQzt3QkFFdkMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFDLE1BQU07NEJBQzNCLElBQUksQ0FBQyxNQUFNO2dDQUFFLE9BQU87NEJBRXBCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQ0FDdkIsWUFBWSxDQUFDLElBQUksT0FBakIsWUFBWSwyQkFBUyxNQUFNLFdBQUU7Z0NBQzdCLE9BQU87NkJBQ1Y7NEJBRUQsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLENBQUM7d0JBRUgsT0FBTyxZQUFZLENBQUM7b0JBQ3hCLENBQUMsQ0FBQyxFQUFDOzs7S0FDTjtJQUVNLDhCQUFHLEdBQVYsVUFDSSxLQUFZLEVBQ1osUUFBOEI7UUFFOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDdEMsT0FBTyxJQUFvRCxDQUFDO0lBQ2hFLENBQUM7SUFFTSwrQkFBSSxHQUFYO1FBQ0ksT0FBTyxJQUFvRCxDQUFDO0lBQ2hFLENBQUM7SUFzQkwsdUJBQUM7QUFBRCxDQUFDLEFBeERELElBd0RDO0FBRU0sSUFBTSxzQkFBc0IsR0FBRyxjQUFrRCxPQUFBLElBQUksZ0JBQWdCLEVBQUUsRUFBdEIsQ0FBc0IsQ0FBQztBQUFsRyxRQUFBLHNCQUFzQiwwQkFBNEUifQ==
|
package/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GetStaticProps, GetServerSideProps, PreviewData as NextPreviewData } from "next";
|
|
2
|
-
type QueryParams<RouteList, Route extends keyof RouteList> = RouteList[Route] extends null ? never : {
|
|
2
|
+
export type QueryParams<RouteList, Route extends keyof RouteList> = RouteList[Route] extends null ? never : {
|
|
3
3
|
[key in keyof RouteList[Route]]: string | string[] | undefined;
|
|
4
4
|
};
|
|
5
5
|
export type UxfGetStaticProps<RouteList, Route extends keyof RouteList, Props extends {
|
|
@@ -12,4 +12,3 @@ export type UxfGetServerSideProps<RouteList, Route extends keyof RouteList, Prop
|
|
|
12
12
|
} = {
|
|
13
13
|
[key: string]: any;
|
|
14
14
|
}, PreviewData extends NextPreviewData = NextPreviewData> = GetServerSideProps<Props, QueryParams<RouteList, Route>, PreviewData>;
|
|
15
|
-
export {};
|
package/types.js
CHANGED