@uxf/router 2.0.0-beta.1 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -55
- package/Router.js +6 -6
- package/helper.js +5 -3
- package/index.js +1 -1
- package/package.json +12 -32
package/README.md
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
# @uxf/router
|
|
2
2
|
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
Install:
|
|
3
|
+
## Installation
|
|
6
4
|
|
|
7
5
|
```
|
|
8
6
|
yarn add @uxf/router
|
|
9
7
|
```
|
|
8
|
+
or
|
|
9
|
+
```
|
|
10
|
+
npm install @uxf/router --save
|
|
11
|
+
```
|
|
10
12
|
|
|
11
|
-
Create `routes
|
|
13
|
+
- Create `routes` directory
|
|
14
|
+
- Create `routes.ts` and `index.ts` inside `routes` directory:
|
|
12
15
|
|
|
13
16
|
```ts
|
|
17
|
+
// routes/routes.ts
|
|
14
18
|
import { Router as UxfRouter } from "@uxf/router";
|
|
15
19
|
|
|
16
20
|
export interface RouteList {
|
|
@@ -19,77 +23,46 @@ export interface RouteList {
|
|
|
19
23
|
"blog-article": { articleId: string };
|
|
20
24
|
}
|
|
21
25
|
|
|
22
|
-
const router = new UxfRouter<RouteList>({
|
|
26
|
+
export const router = new UxfRouter<RouteList>({
|
|
23
27
|
index: "/",
|
|
24
28
|
"blog": "/blog",
|
|
25
|
-
"blog-article": "/blog
|
|
29
|
+
"blog-article": "/blog/[articleId]",
|
|
26
30
|
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
import { router } from "./routes"
|
|
27
35
|
|
|
28
36
|
export const Link = router.getLink();
|
|
29
37
|
export const useRouter = router.getUseRouter();
|
|
30
38
|
export const Router = router.getSingletonRouter();
|
|
31
|
-
export const getRequestHandler = router.getRequestHandler;
|
|
32
39
|
export type RouteName = keyof RouteList;
|
|
33
40
|
```
|
|
34
41
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### Custom request handler
|
|
50
|
-
|
|
51
|
-
```ts
|
|
52
|
-
import next from "next";
|
|
53
|
-
import { RequestHandler } from "@uxf/router";
|
|
54
|
-
import { getRequestHandler } from "./routes";
|
|
55
|
-
|
|
56
|
-
const app = next();
|
|
57
|
-
|
|
58
|
-
const customHandler: RequestHandler = async (req, res, pathname, queryParams) => {
|
|
59
|
-
const html = await app.renderToHTML(req, res, pathname, queryParams);
|
|
60
|
-
|
|
61
|
-
res.send(html);
|
|
42
|
+
Add configuration to `tsconfig.json`
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"compilerOptions": {
|
|
47
|
+
"baseUrl": "./src",
|
|
48
|
+
"paths": {
|
|
49
|
+
"@app-routes": [
|
|
50
|
+
"routes"
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
62
54
|
}
|
|
63
|
-
|
|
64
|
-
const handler = getRequestHandler(app, customHandler);
|
|
65
55
|
```
|
|
66
56
|
|
|
67
|
-
##
|
|
57
|
+
## How to use Link?
|
|
68
58
|
|
|
69
59
|
```tsx
|
|
70
60
|
// pages/index.js
|
|
71
|
-
import { Link } from '
|
|
61
|
+
import { Link } from '@app-routes'
|
|
72
62
|
|
|
73
63
|
export default () => (
|
|
74
64
|
<Link route='blog-article' params={{ articleId: 12 }}>
|
|
75
65
|
<a>Hello world</a>
|
|
76
66
|
</Link>
|
|
77
67
|
)
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Anchor
|
|
81
|
-
|
|
82
|
-
```tsx
|
|
83
|
-
// pages/index.js
|
|
84
|
-
import { Link, Router } from '../routes'
|
|
85
|
-
|
|
86
|
-
export default () => (
|
|
87
|
-
<Link route='blog-article' anchor="...">
|
|
88
|
-
<a>Hello world</a>
|
|
89
|
-
</Link>
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
// or
|
|
93
|
-
|
|
94
|
-
Router.push('blog-article', null, { anchor: "..." });
|
|
95
68
|
```
|
package/Router.js
CHANGED
|
@@ -25,7 +25,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
25
25
|
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
26
|
if (mod && mod.__esModule) return mod;
|
|
27
27
|
var result = {};
|
|
28
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
29
|
__setModuleDefault(result, mod);
|
|
30
30
|
return result;
|
|
31
31
|
};
|
|
@@ -60,7 +60,7 @@ var Router = /** @class */ (function () {
|
|
|
60
60
|
return react_1.default.createElement(link_1.default, __assign({ href: { pathname: _this.routes[route], query: params } }, linkProps));
|
|
61
61
|
}; };
|
|
62
62
|
this.getUseRouter = function () { return function () {
|
|
63
|
-
var router = router_1.useRouter();
|
|
63
|
+
var router = (0, router_1.useRouter)();
|
|
64
64
|
return __assign(__assign({}, router), { route: _this.getRouteByPathname(router.pathname), push: function (route, params, options) {
|
|
65
65
|
if (options === void 0) { options = {}; }
|
|
66
66
|
var anchor = options.anchor, nextJsOptions = __rest(options, ["anchor"]);
|
|
@@ -87,15 +87,15 @@ var Router = /** @class */ (function () {
|
|
|
87
87
|
var restParams = {};
|
|
88
88
|
Object.keys(params !== null && params !== void 0 ? params : {}).forEach(function (key) {
|
|
89
89
|
var value = params[key];
|
|
90
|
-
if (pathname.includes("["
|
|
91
|
-
pathname = pathname.replace("["
|
|
90
|
+
if (pathname.includes("[".concat(key, "]"))) {
|
|
91
|
+
pathname = pathname.replace("[".concat(key, "]"), value);
|
|
92
92
|
}
|
|
93
93
|
else {
|
|
94
94
|
restParams[key] = value;
|
|
95
95
|
}
|
|
96
96
|
});
|
|
97
97
|
if (Object.keys(restParams).length > 0) {
|
|
98
|
-
pathname = pathname
|
|
98
|
+
pathname = "".concat(pathname, "?").concat(qs_1.default.stringify(restParams));
|
|
99
99
|
}
|
|
100
100
|
return pathname;
|
|
101
101
|
};
|
|
@@ -104,4 +104,4 @@ var Router = /** @class */ (function () {
|
|
|
104
104
|
return Router;
|
|
105
105
|
}());
|
|
106
106
|
exports.Router = Router;
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JvdXRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsb0RBQThFO0FBQzlFLGdEQUEwQjtBQUUxQiwwQ0FBb0I7QUFFcEI7SUFHSSxnQkFBWSxNQUFvQztRQUFoRCxpQkFFQztRQUVPLHVCQUFrQixHQUFHLFVBQUMsUUFBZ0I7WUFDMUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxLQUFLLElBQUssT0FBQyxLQUFJLENBQUMsTUFBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBeEMsQ0FBd0MsQ0FBUSxDQUFDO1FBQ3JHLENBQUMsQ0FBQztRQUVLLFlBQU8sR0FBRyxjQUE4QixPQUFBLFVBQUMsS0FBSztZQUN6QyxJQUFBLEtBQUssR0FBbUMsS0FBSyxNQUF4QyxFQUFFLE1BQU0sR0FBMkIsS0FBSyxPQUFoQyxFQUFFLE1BQU0sR0FBbUIsS0FBSyxPQUF4QixFQUFLLFNBQVMsVUFBSyxLQUFLLEVBQS9DLDZCQUF1QyxDQUFGLENBQVc7WUFDdEQsT0FBTyw4QkFBQyxjQUFRLGFBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQWEsRUFBRSxJQUFNLFNBQVMsRUFBSSxDQUFDO1FBQ3JHLENBQUMsRUFIOEMsQ0FHOUMsQ0FBQztRQUVLLGlCQUFZLEdBQUcsY0FBTSxPQUFBO1lBQ3hCLElBQU0sTUFBTSxHQUFHLElBQUEsa0JBQWEsR0FBRSxDQUFDO1lBRS9CLDZCQUNPLE1BQU0sS0FDVCxLQUFLLEVBQUUsS0FBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFDL0MsSUFB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
|
package/helper.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.queryParamToNumber = exports.queryParamToString = void 0;
|
|
4
|
-
|
|
5
|
-
exports.
|
|
4
|
+
var queryParamToString = function (param) { return (typeof param === "string" ? param : ""); };
|
|
5
|
+
exports.queryParamToString = queryParamToString;
|
|
6
|
+
var queryParamToNumber = function (param) {
|
|
6
7
|
return typeof param === "string" ? parseInt(param, 10) : 0;
|
|
7
8
|
};
|
|
8
|
-
|
|
9
|
+
exports.queryParamToNumber = queryParamToNumber;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBTyxJQUFNLGtCQUFrQixHQUFHLFVBQUMsS0FBeUIsSUFBYSxPQUFBLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUF4QyxDQUF3QyxDQUFDO0FBQXJHLFFBQUEsa0JBQWtCLHNCQUFtRjtBQUUzRyxJQUFNLGtCQUFrQixHQUFHLFVBQUMsS0FBeUI7SUFDeEQsT0FBQSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBbkQsQ0FBbUQsQ0FBQztBQUQzQyxRQUFBLGtCQUFrQixzQkFDeUIifQ==
|
package/index.js
CHANGED
|
@@ -7,7 +7,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
7
7
|
o[k2] = m[k];
|
|
8
8
|
}));
|
|
9
9
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./Router"), exports);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/router",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "UXF Router",
|
|
5
5
|
"author": "UXFans <dev@uxf.cz>",
|
|
6
6
|
"homepage": "https://gitlab.com/uxf-npm/router#readme",
|
|
@@ -31,41 +31,21 @@
|
|
|
31
31
|
"qs": "^6.10.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@types/jest": "^
|
|
35
|
-
"@types/node": "^
|
|
34
|
+
"@types/jest": "^27.4.0",
|
|
35
|
+
"@types/node": "^17.0.10",
|
|
36
36
|
"@types/qs": "^6.9.7",
|
|
37
|
-
"@types/react": "^
|
|
38
|
-
"@types/react-dom": "^
|
|
39
|
-
"jest": "^
|
|
40
|
-
"next": "^
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"react": "^
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"ts-node": "^9.0.0",
|
|
47
|
-
"typescript": "^3.8.3"
|
|
37
|
+
"@types/react": "^17.0.38",
|
|
38
|
+
"@types/react-dom": "^17.0.11",
|
|
39
|
+
"jest": "^27.4.7",
|
|
40
|
+
"next": "^12.0.8",
|
|
41
|
+
"prettier": "^2.5.1",
|
|
42
|
+
"react": "^17.0.2",
|
|
43
|
+
"react-dom": "^17.0.2",
|
|
44
|
+
"ts-jest": "^27.1.3",
|
|
45
|
+
"typescript": "^4.5.4"
|
|
48
46
|
},
|
|
49
47
|
"peerDependencies": {
|
|
50
48
|
"react": "^16 || ^17",
|
|
51
49
|
"react-dom": "^16 || ^17"
|
|
52
|
-
},
|
|
53
|
-
"release": {
|
|
54
|
-
"plugins": [
|
|
55
|
-
"@semantic-release/commit-analyzer",
|
|
56
|
-
"@semantic-release/release-notes-generator",
|
|
57
|
-
[
|
|
58
|
-
"@semantic-release/gitlab",
|
|
59
|
-
{
|
|
60
|
-
"gitlabUrl": "https://gitlab.com/"
|
|
61
|
-
}
|
|
62
|
-
],
|
|
63
|
-
[
|
|
64
|
-
"@semantic-release/npm",
|
|
65
|
-
{
|
|
66
|
-
"pkgRoot": "dist"
|
|
67
|
-
}
|
|
68
|
-
]
|
|
69
|
-
]
|
|
70
50
|
}
|
|
71
51
|
}
|