@uxf/router 1.7.0 → 2.0.2

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,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/: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
- ```
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
- ## On the client
57
+ ## How to use Link?
68
58
 
69
59
  ```tsx
70
60
  // pages/index.js
71
- import { Link } from '../routes'
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.d.ts CHANGED
@@ -1,21 +1,13 @@
1
1
  import React from "react";
2
- import { LinkProps, UxfRouter, UxfSingletonRouter, Config, RequestHandler } 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, customHandler?: RequestHandler | undefined) => (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,168 +40,74 @@ 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 = require("qs");
52
+ // TODO Vejvis: fix eslint ignores
81
53
  var Router = /** @class */ (function () {
82
- function Router(routes, config) {
83
- var e_1, _a;
54
+ function Router(routes) {
84
55
  var _this = this;
85
- if (config === void 0) { config = {}; }
86
- this.routes = [];
87
- this.getRequestHandler = function (app, customHandler) {
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
- if (customHandler) {
100
- return customHandler(req, res, route.page, __assign(__assign({}, parsedUrl.query), matchResult.params));
101
- }
102
- return app.render(req, res, route.page, __assign(__assign({}, parsedUrl.query), matchResult.params));
103
- }
104
- return nextHandler(req, res, parsedUrl);
105
- };
106
- };
107
- this.getRouteByUrl = function (url) {
108
- var _a;
109
- // TODO @vejvis - sjednotit s metodou getRequestHandler
110
- var parsedUrl = url_1.parse(url, true);
111
- var matchedRoute = _this.matchRoute((_a = parsedUrl.pathname) !== null && _a !== void 0 ? _a : "");
112
- if (matchedRoute) {
113
- return [matchedRoute.route.name, __assign(__assign({}, parsedUrl.query), matchedRoute.matchResult.params)];
114
- }
115
- throw new Error("Route for url '" + url + "' not found.");
116
- };
117
- this.getUrls = function (routeName, params, anchor) {
118
- var route = _this.getRoute(routeName);
119
- return {
120
- as: route.getAs(_this.handleDefaultParams(routeName, params)) + (anchor ? "#" + anchor : ""),
121
- href: route.getHref(_this.handleDefaultParams(routeName, params)),
122
- };
56
+ this.getRouteByPathname = function (pathname) {
57
+ return Object.keys(_this.routes).find(function (route) { return _this.routes[route] === pathname; });
123
58
  };
124
59
  this.getLink = function () { return function (props) {
60
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
125
61
  var route = props.route, params = props.params, anchor = props.anchor, linkProps = __rest(props, ["route", "params", "anchor"]);
126
- var _a = _this.getUrls(route, params || {}, anchor), as = _a.as, href = _a.href;
127
- return react_1.default.createElement(link_1.default, __assign({ as: as, href: href }, linkProps));
62
+ return react_1.default.createElement(link_1.default, __assign({ href: { pathname: _this.routes[route], query: params } }, linkProps));
128
63
  }; };
129
64
  this.getUseRouter = function () { return function () {
130
- var _a, _b, _c;
131
- var router = router_1.useRouter();
132
- var parsedUrl = url_1.parse(router.asPath, true);
133
- 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) {
65
+ var router = (0, router_1.useRouter)();
66
+ return __assign(__assign({}, router), { route: _this.getRouteByPathname(router.pathname), push: function (route, params, options) {
134
67
  if (options === void 0) { options = {}; }
68
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
135
69
  var anchor = options.anchor, nextJsOptions = __rest(options, ["anchor"]);
136
- var _a = _this.getUrls(route, params || {}, anchor), as = _a.as, href = _a.href;
137
- return router.push(href, as, nextJsOptions);
70
+ return router.push({ pathname: _this.routes[route], query: params }, undefined, nextJsOptions);
138
71
  }, replace: function (route, params, options) {
139
72
  if (options === void 0) { options = {}; }
73
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
140
74
  var anchor = options.anchor, nextJsOptions = __rest(options, ["anchor"]);
141
- var _a = _this.getUrls(route, params || {}), as = _a.as, href = _a.href;
142
- return router.replace(href, as, nextJsOptions);
75
+ return router.replace({ pathname: _this.routes[route], query: params }, undefined, nextJsOptions);
143
76
  } });
144
77
  }; };
145
78
  this.getSingletonRouter = function () {
146
79
  return __assign(__assign({}, router_1.default), { push: function (route, params, options) {
147
80
  if (options === void 0) { options = {}; }
81
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
148
82
  var anchor = options.anchor, nextJsOptions = __rest(options, ["anchor"]);
149
- var _a = _this.getUrls(route, params || {}, anchor), as = _a.as, href = _a.href;
150
- return router_1.default.push(href, as, nextJsOptions);
83
+ return router_1.default.push({ pathname: _this.routes[route], query: params }, undefined, nextJsOptions);
151
84
  }, replace: function (route, params, options) {
152
85
  if (options === void 0) { options = {}; }
86
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
153
87
  var anchor = options.anchor, nextJsOptions = __rest(options, ["anchor"]);
154
- var _a = _this.getUrls(route, params || {}, anchor), as = _a.as, href = _a.href;
155
- return router_1.default.replace(href, as, nextJsOptions);
88
+ return router_1.default.replace({ pathname: _this.routes[route], query: params }, undefined, nextJsOptions);
156
89
  } });
157
90
  };
158
- try {
159
- for (var _b = __values(Object.entries(routes)), _c = _b.next(); !_c.done; _c = _b.next()) {
160
- var _d = __read(_c.value, 2), routeName = _d[0], pattern = _d[1];
161
- this.routes.push(new Route_1.Route(routeName, pattern)); // TODO
162
- }
163
- }
164
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
165
- finally {
166
- try {
167
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
168
- }
169
- finally { if (e_1) throw e_1.error; }
170
- }
171
- this.config = config;
172
- }
173
- Router.prototype.handleDefaultParams = function (route, params) {
174
- var _a = this.config.defaultParams, defaultParams = _a === void 0 ? function (_, params) { return params; } : _a;
175
- return defaultParams(route, params);
176
- };
177
- Router.prototype.matchRoute = function (url) {
178
- var e_2, _a;
179
- try {
180
- for (var _b = __values(this.routes), _c = _b.next(); !_c.done; _c = _b.next()) {
181
- var route = _c.value;
182
- var matchResult = route.match(url);
183
- if (matchResult) {
184
- return new MatchedRoute_1.MatchedRoute(route, matchResult);
91
+ this.getUrlByRoute = function (route, params) {
92
+ var pathname = _this.routes[route];
93
+ var restParams = {};
94
+ Object.keys(params !== null && params !== void 0 ? params : {}).forEach(function (key) {
95
+ var value = params[key];
96
+ if (pathname.includes("[".concat(key, "]"))) {
97
+ pathname = pathname.replace("[".concat(key, "]"), value);
185
98
  }
99
+ else {
100
+ restParams[key] = value;
101
+ }
102
+ });
103
+ if (Object.keys(restParams).length > 0) {
104
+ pathname = "".concat(pathname, "?").concat((0, qs_1.stringify)(restParams));
186
105
  }
187
- }
188
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
189
- finally {
190
- try {
191
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
192
- }
193
- finally { if (e_2) throw e_2.error; }
194
- }
195
- return null;
196
- };
197
- Router.prototype.getRoute = function (routeName) {
198
- var route = this.routes.find(function (r) { return r.name === routeName; });
199
- if (!route) {
200
- throw new Error("Route '" + routeName + "' not found.");
201
- }
202
- return route;
203
- };
106
+ return pathname;
107
+ };
108
+ this.routes = routes;
109
+ }
204
110
  return Router;
205
111
  }());
206
112
  exports.Router = Router;
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JvdXRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBOEU7QUFDOUUsbURBQWlDO0FBQ2pDLGdEQUEwQjtBQUMxQiwyQkFBNEI7QUFDNUIsK0NBQThDO0FBQzlDLGlDQUFnQztBQUdoQztJQUlJLGdCQUFZLE1BQW9DLEVBQUUsTUFBc0I7O1FBQXhFLGlCQUtDO1FBTGlELHVCQUFBLEVBQUEsV0FBc0I7UUFIaEUsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQTJCdEIsc0JBQWlCLEdBQUcsVUFBQyxHQUFRLEVBQUUsYUFBOEI7WUFDaEUsSUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFNUMsT0FBTyxVQUFDLEdBQVEsRUFBRSxHQUFROztnQkFDdEIsSUFBTSxHQUFHLEdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQztnQkFFNUIsSUFBTSxTQUFTLEdBQUcsV0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFbkMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDL0QsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDM0M7Z0JBRUQsSUFBTSxZQUFZLEdBQUcsS0FBSSxDQUFDLFVBQVUsT0FBQyxTQUFTLENBQUMsUUFBUSxtQ0FBSSxFQUFFLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxZQUFZLEVBQUU7b0JBQ04sSUFBQSxXQUFXLEdBQVksWUFBWSxZQUF4QixFQUFFLEtBQUssR0FBSyxZQUFZLE1BQWpCLENBQWtCO29C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
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JvdXRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsb0RBQThFO0FBQzlFLGdEQUEwQjtBQUUxQix5QkFBK0I7QUFFL0Isa0NBQWtDO0FBQ2xDO0lBR0ksZ0JBQVksTUFBb0M7UUFBaEQsaUJBRUM7UUFFTyx1QkFBa0IsR0FBRyxVQUFDLFFBQWdCO1lBQzFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsS0FBSyxJQUFLLE9BQUMsS0FBSSxDQUFDLE1BQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRLEVBQXhDLENBQXdDLENBQVEsQ0FBQztRQUNyRyxDQUFDLENBQUM7UUFFSyxZQUFPLEdBQUcsY0FBOEIsT0FBQSxVQUFDLEtBQUs7WUFDakQsNkRBQTZEO1lBQ3JELElBQUEsS0FBSyxHQUFtQyxLQUFLLE1BQXhDLEVBQUUsTUFBTSxHQUEyQixLQUFLLE9BQWhDLEVBQUUsTUFBTSxHQUFtQixLQUFLLE9BQXhCLEVBQUssU0FBUyxVQUFLLEtBQUssRUFBL0MsNkJBQXVDLENBQUYsQ0FBVztZQUN0RCxPQUFPLDhCQUFDLGNBQVEsYUFBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBYSxFQUFFLElBQU0sU0FBUyxFQUFJLENBQUM7UUFDckcsQ0FBQyxFQUo4QyxDQUk5QyxDQUFDO1FBRUssaUJBQVksR0FBRyxjQUFNLE9BQUE7WUFDeEIsSUFBTSxNQUFNLEdBQUcsSUFBQSxrQkFBYSxHQUFFLENBQUM7WUFFL0IsNkJBQ08sTUFBTSxLQUNULEtBQUssRUFBRSxLQUFJLENBQUMsa0JBQWtCLENBQUMsTUFB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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.7.0",
3
+ "version": "2.0.2",
4
4
  "description": "UXF Router",
5
5
  "author": "UXFans <dev@uxf.cz>",
6
6
  "homepage": "https://gitlab.com/uxf-npm/router#readme",
@@ -19,52 +19,39 @@
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
- "typecheck": "tsc --noEmit --skipLibCheck"
25
+ "typecheck": "tsc --noEmit --skipLibCheck",
26
+ "lint": "./node_modules/.bin/eslint -c .eslintrc.js \"./**/*.ts*\""
26
27
  },
27
28
  "bugs": {
28
29
  "url": "https://gitlab.com/uxf-npm/cms/issues"
29
30
  },
30
31
  "dependencies": {
31
- "path-to-regexp": "^6.1.0"
32
+ "qs": "^6.10.1"
32
33
  },
33
34
  "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"
35
+ "@types/jest": "^27.4.0",
36
+ "@types/node": "^17.0.10",
37
+ "@types/qs": "^6.9.7",
38
+ "@types/react": "^17.0.38",
39
+ "@types/react-dom": "^17.0.11",
40
+ "jest": "^27.4.7",
41
+ "next": "^12.0.8",
42
+ "prettier": "^2.5.1",
43
+ "react": "^17.0.2",
44
+ "react-dom": "^17.0.2",
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"
47
52
  },
48
53
  "peerDependencies": {
49
54
  "react": "^16 || ^17",
50
55
  "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
56
  }
70
57
  }
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=