@uxf/router 1.6.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 CHANGED
@@ -1,16 +1,20 @@
1
1
  # @uxf/router
2
2
 
3
- ## How to use
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.ts` inside your project:
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,60 +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/:articleId",
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
- ## On the server
36
-
37
- ```ts
38
- import next from "next";
39
- import { getRequestHandler } from "./routes";
40
- const app = next({ dev: process.env.NODE_ENV !== "production" });
41
- const handler = getRequestHandler(app);
42
-
43
- const { createServer } = require("http");
44
- app.prepare().then(() => {
45
- createServer(handler).listen(3000);
46
- });
47
-
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
+ }
54
+ }
48
55
  ```
49
56
 
50
- ## On the client
57
+ ## How to use Link?
51
58
 
52
59
  ```tsx
53
60
  // pages/index.js
54
- import { Link } from '../routes'
61
+ import { Link } from '@app-routes'
55
62
 
56
63
  export default () => (
57
64
  <Link route='blog-article' params={{ articleId: 12 }}>
58
65
  <a>Hello world</a>
59
66
  </Link>
60
67
  )
61
- ```
62
-
63
- ## Anchor
64
-
65
- ```tsx
66
- // pages/index.js
67
- import { Link, Router } from '../routes'
68
-
69
- export default () => (
70
- <Link route='blog-article' anchor="...">
71
- <a>Hello world</a>
72
- </Link>
73
- )
74
-
75
- // or
76
-
77
- Router.push('blog-article', null, { anchor: "..." });
78
68
  ```
package/Router.d.ts CHANGED
@@ -1,21 +1,13 @@
1
1
  import React from "react";
2
- import { LinkProps, UxfRouter, UxfSingletonRouter, Config } from "./types";
2
+ import { LinkProps, UxfRouter, UxfSingletonRouter } from "./types";
3
3
  export declare class Router<T> {
4
4
  private routes;
5
- private readonly config;
6
5
  constructor(routes: {
7
6
  [key in keyof T]: string;
8
- }, config?: Config<T>);
9
- private handleDefaultParams;
10
- private matchRoute;
11
- getRequestHandler: (app: any) => (req: any, res: any) => any;
12
- getRouteByUrl: (url: string) => [keyof T, any];
13
- private getRoute;
14
- getUrls: (routeName: keyof T, params?: object | undefined, anchor?: string | undefined) => {
15
- as: string;
16
- href: string;
17
- };
7
+ });
8
+ private getRouteByPathname;
18
9
  getLink: () => React.FC<LinkProps<T>>;
19
10
  getUseRouter: () => () => UxfRouter<T>;
20
11
  getSingletonRouter: () => UxfSingletonRouter<T>;
12
+ getUrlByRoute: (route: keyof T, params?: T[keyof T] | undefined) => { [key in keyof T]: string; }[keyof T];
21
13
  }
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
  };
@@ -40,165 +40,68 @@ var __rest = (this && this.__rest) || function (s, e) {
40
40
  }
41
41
  return t;
42
42
  };
43
- var __values = (this && this.__values) || function(o) {
44
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
45
- if (m) return m.call(o);
46
- if (o && typeof o.length === "number") return {
47
- next: function () {
48
- if (o && i >= o.length) o = void 0;
49
- return { value: o && o[i++], done: !o };
50
- }
51
- };
52
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
53
- };
54
- var __read = (this && this.__read) || function (o, n) {
55
- var m = typeof Symbol === "function" && o[Symbol.iterator];
56
- if (!m) return o;
57
- var i = m.call(o), r, ar = [], e;
58
- try {
59
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
60
- }
61
- catch (error) { e = { error: error }; }
62
- finally {
63
- try {
64
- if (r && !r.done && (m = i["return"])) m.call(i);
65
- }
66
- finally { if (e) throw e.error; }
67
- }
68
- return ar;
69
- };
70
43
  var __importDefault = (this && this.__importDefault) || function (mod) {
71
44
  return (mod && mod.__esModule) ? mod : { "default": mod };
72
45
  };
73
46
  Object.defineProperty(exports, "__esModule", { value: true });
74
47
  exports.Router = void 0;
75
- var router_1 = __importStar(require("next/router"));
76
48
  var link_1 = __importDefault(require("next/link"));
49
+ var router_1 = __importStar(require("next/router"));
77
50
  var react_1 = __importDefault(require("react"));
78
- var url_1 = require("url");
79
- var MatchedRoute_1 = require("./MatchedRoute");
80
- var Route_1 = require("./Route");
51
+ var qs_1 = __importDefault(require("qs"));
81
52
  var Router = /** @class */ (function () {
82
- function Router(routes, config) {
83
- var e_1, _a;
53
+ function Router(routes) {
84
54
  var _this = this;
85
- if (config === void 0) { config = {}; }
86
- this.routes = [];
87
- this.getRequestHandler = function (app) {
88
- var nextHandler = app.getRequestHandler();
89
- return function (req, res) {
90
- var _a;
91
- var url = req.url;
92
- var parsedUrl = url_1.parse(url, true);
93
- if (url.indexOf("/_next") === 0 || url.indexOf("/__nextjs") === 0) {
94
- return nextHandler(req, res, parsedUrl);
95
- }
96
- var matchedRoute = _this.matchRoute((_a = parsedUrl.pathname) !== null && _a !== void 0 ? _a : "");
97
- if (matchedRoute) {
98
- var matchResult = matchedRoute.matchResult, route = matchedRoute.route;
99
- return app.render(req, res, route.page, __assign(__assign({}, parsedUrl.query), matchResult.params));
100
- }
101
- return nextHandler(req, res, parsedUrl);
102
- };
103
- };
104
- this.getRouteByUrl = function (url) {
105
- var _a;
106
- // TODO @vejvis - sjednotit s metodou getRequestHandler
107
- var parsedUrl = url_1.parse(url, true);
108
- var matchedRoute = _this.matchRoute((_a = parsedUrl.pathname) !== null && _a !== void 0 ? _a : "");
109
- if (matchedRoute) {
110
- return [matchedRoute.route.name, __assign(__assign({}, parsedUrl.query), matchedRoute.matchResult.params)];
111
- }
112
- throw new Error("Route for url '" + url + "' not found.");
113
- };
114
- this.getUrls = function (routeName, params, anchor) {
115
- var route = _this.getRoute(routeName);
116
- return {
117
- as: route.getAs(_this.handleDefaultParams(routeName, params)) + (anchor ? "#" + anchor : ""),
118
- href: route.getHref(_this.handleDefaultParams(routeName, params)),
119
- };
55
+ this.getRouteByPathname = function (pathname) {
56
+ return Object.keys(_this.routes).find(function (route) { return _this.routes[route] === pathname; });
120
57
  };
121
58
  this.getLink = function () { return function (props) {
122
59
  var route = props.route, params = props.params, anchor = props.anchor, linkProps = __rest(props, ["route", "params", "anchor"]);
123
- var _a = _this.getUrls(route, params || {}, anchor), as = _a.as, href = _a.href;
124
- return react_1.default.createElement(link_1.default, __assign({ as: as, href: href }, linkProps));
60
+ return react_1.default.createElement(link_1.default, __assign({ href: { pathname: _this.routes[route], query: params } }, linkProps));
125
61
  }; };
126
62
  this.getUseRouter = function () { return function () {
127
- var _a, _b, _c;
128
- var router = router_1.useRouter();
129
- var parsedUrl = url_1.parse(router.asPath, true);
130
- return __assign(__assign({}, router), { route: ((_c = (_b = _this.matchRoute((_a = parsedUrl.pathname) !== null && _a !== void 0 ? _a : "")) === null || _b === void 0 ? void 0 : _b.route.name) !== null && _c !== void 0 ? _c : null), push: function (route, params, options) {
63
+ var router = (0, router_1.useRouter)();
64
+ return __assign(__assign({}, router), { route: _this.getRouteByPathname(router.pathname), push: function (route, params, options) {
131
65
  if (options === void 0) { options = {}; }
132
66
  var anchor = options.anchor, nextJsOptions = __rest(options, ["anchor"]);
133
- var _a = _this.getUrls(route, params || {}, anchor), as = _a.as, href = _a.href;
134
- return router.push(href, as, nextJsOptions);
67
+ return router.push({ pathname: _this.routes[route], query: params }, undefined, nextJsOptions);
135
68
  }, replace: function (route, params, options) {
136
69
  if (options === void 0) { options = {}; }
137
70
  var anchor = options.anchor, nextJsOptions = __rest(options, ["anchor"]);
138
- var _a = _this.getUrls(route, params || {}), as = _a.as, href = _a.href;
139
- return router.replace(href, as, nextJsOptions);
71
+ return router.replace({ pathname: _this.routes[route], query: params }, undefined, nextJsOptions);
140
72
  } });
141
73
  }; };
142
74
  this.getSingletonRouter = function () {
143
75
  return __assign(__assign({}, router_1.default), { push: function (route, params, options) {
144
76
  if (options === void 0) { options = {}; }
145
77
  var anchor = options.anchor, nextJsOptions = __rest(options, ["anchor"]);
146
- var _a = _this.getUrls(route, params || {}, anchor), as = _a.as, href = _a.href;
147
- return router_1.default.push(href, as, nextJsOptions);
78
+ return router_1.default.push({ pathname: _this.routes[route], query: params }, undefined, nextJsOptions);
148
79
  }, replace: function (route, params, options) {
149
80
  if (options === void 0) { options = {}; }
150
81
  var anchor = options.anchor, nextJsOptions = __rest(options, ["anchor"]);
151
- var _a = _this.getUrls(route, params || {}, anchor), as = _a.as, href = _a.href;
152
- return router_1.default.replace(href, as, nextJsOptions);
82
+ return router_1.default.replace({ pathname: _this.routes[route], query: params }, undefined, nextJsOptions);
153
83
  } });
154
84
  };
155
- try {
156
- for (var _b = __values(Object.entries(routes)), _c = _b.next(); !_c.done; _c = _b.next()) {
157
- var _d = __read(_c.value, 2), routeName = _d[0], pattern = _d[1];
158
- this.routes.push(new Route_1.Route(routeName, pattern)); // TODO
159
- }
160
- }
161
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
162
- finally {
163
- try {
164
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
165
- }
166
- finally { if (e_1) throw e_1.error; }
167
- }
168
- this.config = config;
169
- }
170
- Router.prototype.handleDefaultParams = function (route, params) {
171
- var _a = this.config.defaultParams, defaultParams = _a === void 0 ? function (_, params) { return params; } : _a;
172
- return defaultParams(route, params);
173
- };
174
- Router.prototype.matchRoute = function (url) {
175
- var e_2, _a;
176
- try {
177
- for (var _b = __values(this.routes), _c = _b.next(); !_c.done; _c = _b.next()) {
178
- var route = _c.value;
179
- var matchResult = route.match(url);
180
- if (matchResult) {
181
- return new MatchedRoute_1.MatchedRoute(route, matchResult);
85
+ this.getUrlByRoute = function (route, params) {
86
+ var pathname = _this.routes[route];
87
+ var restParams = {};
88
+ Object.keys(params !== null && params !== void 0 ? params : {}).forEach(function (key) {
89
+ var value = params[key];
90
+ if (pathname.includes("[".concat(key, "]"))) {
91
+ pathname = pathname.replace("[".concat(key, "]"), value);
182
92
  }
93
+ else {
94
+ restParams[key] = value;
95
+ }
96
+ });
97
+ if (Object.keys(restParams).length > 0) {
98
+ pathname = "".concat(pathname, "?").concat(qs_1.default.stringify(restParams));
183
99
  }
184
- }
185
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
186
- finally {
187
- try {
188
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
189
- }
190
- finally { if (e_2) throw e_2.error; }
191
- }
192
- return null;
193
- };
194
- Router.prototype.getRoute = function (routeName) {
195
- var route = this.routes.find(function (r) { return r.name === routeName; });
196
- if (!route) {
197
- throw new Error("Route '" + routeName + "' not found.");
198
- }
199
- return route;
200
- };
100
+ return pathname;
101
+ };
102
+ this.routes = routes;
103
+ }
201
104
  return Router;
202
105
  }());
203
106
  exports.Router = Router;
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JvdXRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBOEU7QUFDOUUsbURBQWlDO0FBQ2pDLGdEQUEwQjtBQUMxQiwyQkFBNEI7QUFDNUIsK0NBQThDO0FBQzlDLGlDQUFnQztBQUdoQztJQUlJLGdCQUFZLE1BQW9DLEVBQUUsTUFBc0I7O1FBQXhFLGlCQUtDO1FBTGlELHVCQUFBLEVBQUEsV0FBc0I7UUFIaEUsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQTJCdEIsc0JBQWlCLEdBQUcsVUFBQyxHQUFRO1lBQ2hDLElBQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRTVDLE9BQU8sVUFBQyxHQUFRLEVBQUUsR0FBUTs7Z0JBQ3RCLElBQU0sR0FBRyxHQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBRTVCLElBQU0sU0FBUyxHQUFHLFdBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRW5DLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQy9ELE9BQU8sV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQzNDO2dCQUVELElBQU0sWUFBWSxHQUFHLEtBQUksQ0FBQyxVQUFVLE9BQUMsU0FBUyxDQUFDLFFBQVEsbUNBQUksRUFBRSxDQUFDLENBQUM7Z0JBQy9ELElBQUksWUFBWSxFQUFFO29CQUNOLElBQUEsV0FBVyxHQUFZLFlBQVksWUFBeEIsRUFBRSxLQUFLLEdBQUssWUFBWSxNQUFqQixDQUFrQjtvQkFFNUMsT0FBTyxH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
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JvdXRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsb0RBQThFO0FBQzlFLGdEQUEwQjtBQUUxQiwwQ0FBb0I7QUFFcEI7SUFHSSxnQkFBWSxNQUFvQztRQUFoRCxpQkFFQztRQUVPLHVCQUFrQixHQUFHLFVBQUMsUUFBZ0I7WUFDMUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxLQUFLLElBQUssT0FBQyxLQUFJLENBQUMsTUFBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBeEMsQ0FBd0MsQ0FBUSxDQUFDO1FBQ3JHLENBQUMsQ0FBQztRQUVLLFlBQU8sR0FBRyxjQUE4QixPQUFBLFVBQUMsS0FBSztZQUN6QyxJQUFBLEtBQUssR0FBbUMsS0FBSyxNQUF4QyxFQUFFLE1BQU0sR0FBMkIsS0FBSyxPQUFoQyxFQUFFLE1BQU0sR0FBbUIsS0FBSyxPQUF4QixFQUFLLFNBQVMsVUFBSyxLQUFLLEVBQS9DLDZCQUF1QyxDQUFGLENBQVc7WUFDdEQsT0FBTyw4QkFBQyxjQUFRLGFBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQWEsRUFBRSxJQUFNLFNBQVMsRUFBSSxDQUFDO1FBQ3JHLENBQUMsRUFIOEMsQ0FHOUMsQ0FBQztRQUVLLGlCQUFZLEdBQUcsY0FBTSxPQUFBO1lBQ3hCLElBQU0sTUFBTSxHQUFHLElBQUEsa0JBQWEsR0FBRSxDQUFDO1lBRS9CLDZCQUNPLE1BQU0sS0FDVCxLQUFLLEVBQUUsS0FBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFDL0MsSUFB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
package/Router.test.js CHANGED
@@ -1,34 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var Route_1 = require("./Route");
4
3
  var Router_1 = require("./Router");
5
- var route = function (pattern) { return new Route_1.Route("", pattern); };
6
4
  var router = new Router_1.Router({
7
5
  index: "/",
8
- form: "/form/:id",
9
- "form-field": "/form/:formId/field/:fieldId",
6
+ form: "/form/[id]",
7
+ "form-field": "/form/[formId]/field/[fieldId]",
10
8
  });
11
- test("Route::match", function () {
12
- expect(route("/test/:param").match("/test/nejaky-parametr")).toEqual({
13
- path: "/test/nejaky-parametr",
14
- index: 0,
15
- params: { param: "nejaky-parametr" },
16
- });
17
- expect(route("/test").match("/test")).toEqual({ path: "/test", index: 0, params: {} });
18
- expect(route("/").match("/")).toEqual({ path: "/", index: 0, params: {} });
9
+ test("getUrlByRoute", function () {
10
+ expect(router.getUrlByRoute("form", { id: 12, attr: "abc" })).toBe("/form/12?attr=abc");
11
+ expect(router.getUrlByRoute("form-field", { formId: 33, fieldId: "aaa", param1: "ano" })).toBe("/form/33/field/aaa?param1=ano");
19
12
  });
20
- test("Route::urls", function () {
21
- expect(router.getUrls("index", { param1: "test-param" })).toEqual({
22
- as: "/?param1=test-param",
23
- href: "/?param1=test-param",
24
- });
25
- expect(router.getUrls("form", { id: 1, param1: "test-param" })).toEqual({
26
- as: "/form/1?param1=test-param",
27
- href: "/form?id=1&param1=test-param",
28
- });
29
- expect(router.getUrls("form-field", { formId: 1, fieldId: 2, param1: "test-param" })).toEqual({
30
- as: "/form/1/field/2?param1=test-param",
31
- href: "/form-field?formId=1&fieldId=2&param1=test-param",
32
- });
33
- });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUm91dGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBZ0M7QUFDaEMsbUNBQWtDO0FBRWxDLElBQU0sS0FBSyxHQUFHLFVBQUMsT0FBZSxJQUFLLE9BQUEsSUFBSSxhQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUF0QixDQUFzQixDQUFDO0FBRTFELElBQU0sTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDO0lBQ3RCLEtBQUssRUFBRSxHQUFHO0lBQ1YsSUFBSSxFQUFFLFdBQVc7SUFDakIsWUFBWSxFQUFFLDhCQUE4QjtDQUMvQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsY0FBYyxFQUFFO0lBQ2pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDakUsSUFBSSxFQUFFLHVCQUF1QjtRQUM3QixLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtLQUN2QyxDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV2RixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxhQUFhLEVBQUU7SUFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDOUQsRUFBRSxFQUFFLHFCQUFxQjtRQUN6QixJQUFJLEVBQUUscUJBQXFCO0tBQzlCLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDcEUsRUFBRSxFQUFFLDJCQUEyQjtRQUMvQixJQUFJLEVBQUUsOEJBQThCO0tBQ3ZDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMxRixFQUFFLEVBQUUsbUNBQW1DO1FBQ3ZDLElBQUksRUFBRSxrREFBa0Q7S0FDM0QsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMifQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUm91dGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBa0M7QUFFbEMsSUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUM7SUFDdEIsS0FBSyxFQUFFLEdBQUc7SUFDVixJQUFJLEVBQUUsWUFBWTtJQUNsQixZQUFZLEVBQUUsZ0NBQWdDO0NBQ2pELENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxlQUFlLEVBQUU7SUFDbEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDMUYsK0JBQStCLENBQ2xDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyJ9
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
- exports.queryParamToString = function (param) { return (typeof param === "string" ? param : ""); };
5
- exports.queryParamToNumber = function (param) {
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLGtCQUFrQixHQUFHLFVBQUMsS0FBeUIsSUFBYSxPQUFBLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUF4QyxDQUF3QyxDQUFDO0FBRXJHLFFBQUEsa0JBQWtCLEdBQUcsVUFBQyxLQUF5QjtJQUN4RCxPQUFBLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFuRCxDQUFtRCxDQUFDIn0=
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" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
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": "1.6.1",
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",
@@ -19,7 +19,7 @@
19
19
  "build": "tsc -P tsconfig.build.json",
20
20
  "build:next": "next build",
21
21
  "clean": "rm -rf ./dist",
22
- "dev": "ts-node -P tsconfig.server.json server.ts",
22
+ "dev": "next dev",
23
23
  "prepublish": "npm run-script build",
24
24
  "test": "npm run-script typecheck",
25
25
  "typecheck": "tsc --noEmit --skipLibCheck"
@@ -28,43 +28,24 @@
28
28
  "url": "https://gitlab.com/uxf-npm/cms/issues"
29
29
  },
30
30
  "dependencies": {
31
- "path-to-regexp": "^6.1.0"
31
+ "qs": "^6.10.1"
32
32
  },
33
33
  "devDependencies": {
34
- "@types/jest": "^25.2.1",
35
- "@types/node": "^13.13.4",
36
- "@types/react": "^16.9.0",
37
- "@types/react-dom": "^16.9.0",
38
- "jest": "^25.5.4",
39
- "next": "^9.5.1",
40
- "path": "^0.12.7",
41
- "prettier": "^2.1.2",
42
- "react": "^16.9.0",
43
- "react-dom": "^16.9.0",
44
- "ts-jest": "^25.5.1",
45
- "ts-node": "^9.0.0",
46
- "typescript": "^3.8.3"
34
+ "@types/jest": "^27.4.0",
35
+ "@types/node": "^17.0.10",
36
+ "@types/qs": "^6.9.7",
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"
47
46
  },
48
47
  "peerDependencies": {
49
48
  "react": "^16 || ^17",
50
49
  "react-dom": "^16 || ^17"
51
- },
52
- "release": {
53
- "plugins": [
54
- "@semantic-release/commit-analyzer",
55
- "@semantic-release/release-notes-generator",
56
- [
57
- "@semantic-release/gitlab",
58
- {
59
- "gitlabUrl": "https://gitlab.com/"
60
- }
61
- ],
62
- [
63
- "@semantic-release/npm",
64
- {
65
- "pkgRoot": "dist"
66
- }
67
- ]
68
- ]
69
50
  }
70
51
  }
package/types.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ /// <reference types="node" />
1
2
  import { LinkProps as NextLinkProps } from "next/link";
2
3
  import { NextRouter, SingletonRouter } from "next/router";
4
+ import { ParsedUrlQuery } from "querystring";
3
5
  export interface Options {
4
6
  anchor?: string;
5
7
  shallow?: boolean;
@@ -22,3 +24,4 @@ export interface UxfSingletonRouter<T> extends Omit<SingletonRouter, "push" | "r
22
24
  export interface Config<T> {
23
25
  defaultParams?: (route: keyof T, params: any) => any;
24
26
  }
27
+ export declare type RequestHandler = (req: any, res: any, pathname: string, query: ParsedUrlQuery) => Promise<void>;
package/MatchedRoute.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import { MatchResult } from "path-to-regexp";
2
- import { Route } from "./Route";
3
- export declare class MatchedRoute {
4
- private _route;
5
- private _matchResult;
6
- constructor(route: Route, match: MatchResult);
7
- get route(): Route;
8
- get matchResult(): MatchResult;
9
- }
package/MatchedRoute.js DELETED
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MatchedRoute = void 0;
4
- var MatchedRoute = /** @class */ (function () {
5
- function MatchedRoute(route, match) {
6
- this._route = route;
7
- this._matchResult = match;
8
- }
9
- Object.defineProperty(MatchedRoute.prototype, "route", {
10
- get: function () {
11
- return this._route;
12
- },
13
- enumerable: false,
14
- configurable: true
15
- });
16
- Object.defineProperty(MatchedRoute.prototype, "matchResult", {
17
- get: function () {
18
- return this._matchResult;
19
- },
20
- enumerable: false,
21
- configurable: true
22
- });
23
- return MatchedRoute;
24
- }());
25
- exports.MatchedRoute = MatchedRoute;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0Y2hlZFJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL01hdGNoZWRSb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQTtJQUlJLHNCQUFZLEtBQVksRUFBRSxLQUFrQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsc0JBQUksK0JBQUs7YUFBVDtZQUNJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHFDQUFXO2FBQWY7WUFDSSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDN0IsQ0FBQzs7O09BQUE7SUFDTCxtQkFBQztBQUFELENBQUMsQUFoQkQsSUFnQkM7QUFoQlksb0NBQVkifQ==
package/Route.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import { Match } from "path-to-regexp";
2
- export declare class Route {
3
- private readonly _name;
4
- private readonly _pattern;
5
- private readonly _page;
6
- private _keys;
7
- private _keyNames;
8
- private matchFunction;
9
- private compileFunction;
10
- constructor(name: string, pattern: string);
11
- match(url: string): Match;
12
- getHref(params?: {}): string;
13
- getAs(params?: {}): string;
14
- get name(): string;
15
- get pattern(): string;
16
- get page(): string;
17
- }
package/Route.js DELETED
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.Route = void 0;
15
- var path_to_regexp_1 = require("path-to-regexp");
16
- function toQuerystring(obj) {
17
- return Object.keys(obj)
18
- .filter(function (key) { return obj[key] !== null && obj[key] !== undefined; })
19
- .map(function (key) {
20
- var value = obj[key];
21
- if (Array.isArray(value)) {
22
- value = value.join("/");
23
- }
24
- return [encodeURIComponent(key), encodeURIComponent(value)].join("=");
25
- })
26
- .join("&");
27
- }
28
- var Route = /** @class */ (function () {
29
- function Route(name, pattern) {
30
- this._keys = [];
31
- this._name = name;
32
- this._page = name.replace(/(^|\/)index$/, "").replace(/^\/?/, "/");
33
- this._pattern = pattern;
34
- path_to_regexp_1.pathToRegexp(pattern, this._keys);
35
- this._keyNames = this._keys.map(function (k) { return k.name.toString(); });
36
- this.matchFunction = path_to_regexp_1.match(pattern, { encode: encodeURI, decode: decodeURIComponent });
37
- this.compileFunction = path_to_regexp_1.compile(pattern, { encode: encodeURI });
38
- }
39
- Route.prototype.match = function (url) {
40
- var _a;
41
- return (_a = this.matchFunction(url)) !== null && _a !== void 0 ? _a : null;
42
- };
43
- Route.prototype.getHref = function (params) {
44
- if (params === void 0) { params = {}; }
45
- return this.page + "?" + toQuerystring(params);
46
- };
47
- Route.prototype.getAs = function (params) {
48
- var _this = this;
49
- if (params === void 0) { params = {}; }
50
- var as = this.compileFunction(params) || "/";
51
- var keys = Object.keys(params);
52
- var qsKeys = keys.filter(function (key) { return _this._keyNames.indexOf(key) === -1; });
53
- if (qsKeys.length === 0) {
54
- return as;
55
- }
56
- var qsParams = qsKeys.reduce(function (qs, key) {
57
- var _a;
58
- return (__assign(__assign({}, qs), (_a = {}, _a[key] = params[key], _a)));
59
- }, {});
60
- return as + "?" + toQuerystring(qsParams);
61
- };
62
- Object.defineProperty(Route.prototype, "name", {
63
- get: function () {
64
- return this._name;
65
- },
66
- enumerable: false,
67
- configurable: true
68
- });
69
- Object.defineProperty(Route.prototype, "pattern", {
70
- get: function () {
71
- return this._pattern;
72
- },
73
- enumerable: false,
74
- configurable: true
75
- });
76
- Object.defineProperty(Route.prototype, "page", {
77
- get: function () {
78
- return this._page;
79
- },
80
- enumerable: false,
81
- configurable: true
82
- });
83
- return Route;
84
- }());
85
- exports.Route = Route;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBMEU7QUFFMUUsU0FBUyxhQUFhLENBQUMsR0FBUTtJQUMzQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2xCLE1BQU0sQ0FBQyxVQUFDLEdBQUcsSUFBSyxPQUFBLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBM0MsQ0FBMkMsQ0FBQztTQUM1RCxHQUFHLENBQUMsVUFBQyxHQUFHO1FBQ0wsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0QixLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQjtRQUNELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVEO0lBVUksZUFBWSxJQUFZLEVBQUUsT0FBZTtRQU5qQyxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBT3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4Qiw2QkFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQWpCLENBQWlCLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsYUFBYSxHQUFHLHNCQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxlQUFlLEdBQUcsd0JBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU0scUJBQUssR0FBWixVQUFhLEdBQVc7O1FBQ3BCLGFBQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsbUNBQUksSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFTSx1QkFBTyxHQUFkLFVBQWUsTUFBVztRQUFYLHVCQUFBLEVBQUEsV0FBVztRQUN0QixPQUFVLElBQUksQ0FBQyxJQUFJLFNBQUksYUFBYSxDQUFDLE1BQU0sQ0FBRyxDQUFDO0lBQ25ELENBQUM7SUFFTSxxQkFBSyxHQUFaLFVBQWEsTUFBVztRQUF4QixpQkFrQkM7UUFsQlksdUJBQUEsRUFBQSxXQUFXO1FBQ3BCLElBQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDO1FBQy9DLElBQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFDLEdBQUcsSUFBSyxPQUFBLEtBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFsQyxDQUFrQyxDQUFDLENBQUM7UUFFeEUsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNyQixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsSUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDMUIsVUFBQyxFQUFFLEVBQUUsR0FBRzs7WUFBSyxPQUFBLHVCQUNOLEVBQUUsZ0JBQ0osR0FBRyxJQUFJLE1BQWMsQ0FBQyxHQUFHLENBQUMsT0FDN0I7UUFIVyxDQUdYLEVBQ0YsRUFBRSxDQUNMLENBQUM7UUFFRixPQUFVLEVBQUUsU0FBSSxhQUFhLENBQUMsUUFBUSxDQUFHLENBQUM7SUFDOUMsQ0FBQztJQUVELHNCQUFJLHVCQUFJO2FBQVI7WUFDSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwwQkFBTzthQUFYO1lBQ0ksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksdUJBQUk7YUFBUjtZQUNJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN0QixDQUFDOzs7T0FBQTtJQUNMLFlBQUM7QUFBRCxDQUFDLEFBNURELElBNERDO0FBNURZLHNCQUFLIn0=