@e7w/easy-routes 0.0.6 → 0.0.8

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.
@@ -1,3 +1,3 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Outlet } from "react-router";
3
- export const DefaultOutlet = () => (_jsx(_Fragment, { children: _jsx(Outlet, {}) }));
3
+ export var DefaultOutlet = function () { return (_jsx(_Fragment, { children: _jsx(Outlet, {}) })); };
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { isRouteErrorResponse, useRouteError } from "react-router";
3
- export const ErrorBoundary = () => {
4
- const error = useRouteError();
3
+ export var ErrorBoundary = function () {
4
+ var error = useRouteError();
5
5
  return (_jsx("div", { className: "flex h-screen w-full items-center justify-center", children: _jsxs("div", { className: "flex flex-col items-center justify-center", children: [_jsx("h1", { className: "text-2xl font-bold mb-4", children: "Error" }), _jsx("p", { children: "Something went wrong." }), isRouteErrorResponse(error) && (_jsxs(_Fragment, { children: [_jsxs("p", { className: "text-red-300", children: [error.status, " ", error.statusText] }), _jsx("p", { className: "text-red-300", children: JSON.stringify(error.data) })] })), error instanceof Error && (_jsx("p", { className: "text-red-300", children: error.message }))] }) }));
6
6
  };
@@ -3,9 +3,9 @@ import {} from "react";
3
3
  import { useDebouncedValue } from "../utils/hooks";
4
4
  import { useLoader } from "@e7w/easy-model";
5
5
  import "../assets/index.css";
6
- export const Loading = () => {
7
- const { isGlobalLoading } = useLoader();
8
- const visible = useDebouncedValue(isGlobalLoading);
6
+ export var Loading = function () {
7
+ var isGlobalLoading = useLoader().isGlobalLoading;
8
+ var visible = useDebouncedValue(isGlobalLoading);
9
9
  if (!visible)
10
10
  return;
11
11
  return (_jsxs("div", { className: "spinner-box", children: [_jsx("div", { className: "blue-orbit leo" }), _jsx("div", { className: "green-orbit leo" }), _jsx("div", { className: "red-orbit leo" }), _jsx("div", { className: "white-orbit w1 leo" }), _jsx("div", { className: "white-orbit w2 leo" }), _jsx("div", { className: "white-orbit w3 leo" })] }));
@@ -11,9 +11,9 @@ nProgress.configure({
11
11
  easing: "ease", // 动画缓动函数
12
12
  trickleSpeed: 200, // 进度条自动递增的频率(毫秒)
13
13
  });
14
- export const ProgressLayout = () => {
15
- const { state } = useNavigation();
16
- useEffect(() => {
14
+ export var ProgressLayout = function () {
15
+ var state = useNavigation().state;
16
+ useEffect(function () {
17
17
  if (state === "loading") {
18
18
  nProgress.start();
19
19
  }
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export type { Loader } from "./types";
2
- export { routerSchema } from "./models/system";
1
+ export type { Ctx } from "./types";
2
+ export { RouterSchema } from "./models/system";
3
3
  export { routes } from "./router";
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { routerSchema } from "./models/system";
1
+ export { RouterSchema } from "./models/system";
2
2
  export { routes } from "./router";
@@ -1,15 +1,16 @@
1
1
  import z from "zod";
2
- import type { Ctx } from "../types";
3
- import type { Params } from "react-router";
4
- export interface RouterSchema {
5
- init(): void | Promise<void>;
2
+ import type { Ctx, Meta } from "../types";
3
+ interface RouterSchema {
4
+ init(req: Ctx["req"], meta: Meta): void | Promise<void>;
6
5
  permission: number;
7
6
  defaultTitle?: string;
8
7
  }
9
- export declare const routerSchema: z.ZodType<RouterSchema, RouterSchema>;
8
+ export declare const RouterSchema: z.ZodType<RouterSchema, RouterSchema>;
10
9
  export declare const system: {
11
10
  router: RouterSchema;
12
- init(): Promise<void>;
11
+ ready: boolean;
12
+ init(req: Ctx["req"], meta: Meta): Promise<void>;
13
13
  hasPermission(permission?: number): boolean;
14
- getCtx(params: Params, request: Request, permission?: number): Ctx;
14
+ getCtx(req: Ctx["req"], permission?: number): Ctx;
15
15
  };
16
+ export {};
@@ -32,53 +32,127 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
32
32
  if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
33
  done = true;
34
34
  };
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __generator = (this && this.__generator) || function (thisArg, body) {
45
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
46
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
47
+ function verb(n) { return function (v) { return step([n, v]); }; }
48
+ function step(op) {
49
+ if (f) throw new TypeError("Generator is already executing.");
50
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
51
+ 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;
52
+ if (y = 0, t) op = [op[0] & 2, t.value];
53
+ switch (op[0]) {
54
+ case 0: case 1: t = op; break;
55
+ case 4: _.label++; return { value: op[1], done: false };
56
+ case 5: _.label++; y = op[1]; op = [0]; continue;
57
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
58
+ default:
59
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
60
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
61
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
62
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
63
+ if (t[2]) _.ops.pop();
64
+ _.trys.pop(); continue;
65
+ }
66
+ op = body.call(thisArg, _);
67
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
68
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69
+ }
70
+ };
35
71
  import { inject, loader, provide } from "@e7w/easy-model";
36
72
  import z from "zod";
37
- export const routerSchema = z.object({
73
+ export var RouterSchema = z.object({
38
74
  init: z.function({
39
75
  output: z.union([z.promise(z.void()), z.void()]),
40
76
  }),
41
77
  permission: z.number(),
42
78
  defaultTitle: z.string().optional(),
43
79
  });
44
- export const system = provide((() => {
80
+ export var system = provide((function () {
45
81
  var _a;
46
- let _instanceExtraInitializers = [];
47
- let _router_decorators;
48
- let _router_initializers = [];
49
- let _router_extraInitializers = [];
50
- let _init_decorators;
51
- return class System {
52
- static {
53
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
54
- _router_decorators = [inject(routerSchema)];
55
- _init_decorators = [(_a = loader).once.bind(_a), loader.load(true)];
56
- __esDecorate(this, null, _init_decorators, { kind: "method", name: "init", static: false, private: false, access: { has: obj => "init" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);
57
- __esDecorate(null, null, _router_decorators, { kind: "field", name: "router", static: false, private: false, access: { has: obj => "router" in obj, get: obj => obj.router, set: (obj, value) => { obj.router = value; } }, metadata: _metadata }, _router_initializers, _router_extraInitializers);
58
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
59
- }
60
- router = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _router_initializers, {
61
- init() { },
62
- permission: 0,
63
- defaultTitle: document.title,
64
- }));
65
- async init() {
66
- await this.router.init();
67
- }
68
- hasPermission(permission = 0) {
69
- return (this.router.permission & permission) === permission;
70
- }
71
- getCtx(params, request, permission = 1) {
72
- return {
73
- title: this.router.defaultTitle || document.title,
74
- signed: (permission & 1) === 0 || this.hasPermission(1),
75
- noPermission: !this.hasPermission(permission),
76
- params,
77
- query: Object.fromEntries(new URL(request.url).searchParams),
78
- };
79
- }
80
- constructor() {
81
- __runInitializers(this, _router_extraInitializers);
82
- }
83
- };
82
+ var _instanceExtraInitializers = [];
83
+ var _router_decorators;
84
+ var _router_initializers = [];
85
+ var _router_extraInitializers = [];
86
+ var _init_decorators;
87
+ return _a = /** @class */ (function () {
88
+ function System() {
89
+ Object.defineProperty(this, "router", {
90
+ enumerable: true,
91
+ configurable: true,
92
+ writable: true,
93
+ value: (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _router_initializers, {
94
+ init: function () { },
95
+ permission: 0,
96
+ defaultTitle: document.title,
97
+ }))
98
+ });
99
+ Object.defineProperty(this, "ready", {
100
+ enumerable: true,
101
+ configurable: true,
102
+ writable: true,
103
+ value: (__runInitializers(this, _router_extraInitializers), false)
104
+ });
105
+ }
106
+ Object.defineProperty(System.prototype, "init", {
107
+ enumerable: false,
108
+ configurable: true,
109
+ writable: true,
110
+ value: function (req, meta) {
111
+ return __awaiter(this, void 0, void 0, function () {
112
+ return __generator(this, function (_b) {
113
+ switch (_b.label) {
114
+ case 0: return [4 /*yield*/, this.router.init(req, meta)];
115
+ case 1:
116
+ _b.sent();
117
+ this.ready = true;
118
+ return [2 /*return*/];
119
+ }
120
+ });
121
+ });
122
+ }
123
+ });
124
+ Object.defineProperty(System.prototype, "hasPermission", {
125
+ enumerable: false,
126
+ configurable: true,
127
+ writable: true,
128
+ value: function (permission) {
129
+ if (permission === void 0) { permission = 0; }
130
+ return (this.router.permission & permission) === permission;
131
+ }
132
+ });
133
+ Object.defineProperty(System.prototype, "getCtx", {
134
+ enumerable: false,
135
+ configurable: true,
136
+ writable: true,
137
+ value: function (req, permission) {
138
+ if (permission === void 0) { permission = 1; }
139
+ return {
140
+ title: this.router.defaultTitle || document.title,
141
+ signed: (permission & 1) === 0 || this.hasPermission(1),
142
+ noPermission: !this.hasPermission(permission),
143
+ req: req,
144
+ };
145
+ }
146
+ });
147
+ return System;
148
+ }()),
149
+ (function () {
150
+ var _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
151
+ _router_decorators = [inject(RouterSchema)];
152
+ _init_decorators = [loader.load(true)];
153
+ __esDecorate(_a, null, _init_decorators, { kind: "method", name: "init", static: false, private: false, access: { has: function (obj) { return "init" in obj; }, get: function (obj) { return obj.init; } }, metadata: _metadata }, null, _instanceExtraInitializers);
154
+ __esDecorate(null, null, _router_decorators, { kind: "field", name: "router", static: false, private: false, access: { has: function (obj) { return "router" in obj; }, get: function (obj) { return obj.router; }, set: function (obj, value) { obj.router = value; } }, metadata: _metadata }, _router_initializers, _router_extraInitializers);
155
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
156
+ })(),
157
+ _a;
84
158
  })())();
package/dist/router.js CHANGED
@@ -1,71 +1,143 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ 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;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
1
48
  import { jsx as _jsx } from "react/jsx-runtime";
2
49
  import { Navigate, redirect } from "react-router";
3
50
  import { DefaultOutlet } from "./components/DefaultOutlet";
4
51
  import { ErrorBoundary } from "./components/ErrorBoundary";
5
52
  import { ProgressLayout } from "./components/ProgressLayout";
6
53
  import { system } from "./models/system";
7
- const pages = import.meta.glob("/src/pages/**/index.tsx", {
54
+ var pages = import.meta.glob("/src/pages/**/index.tsx", {
8
55
  eager: true,
9
56
  import: "Page",
10
57
  });
11
- const layouts = import.meta.glob("/src/pages/**/layout.tsx", {
58
+ var layouts = import.meta.glob("/src/pages/**/layout.tsx", {
12
59
  eager: true,
13
60
  import: "Layout",
14
61
  });
15
- const metas = import.meta.glob("/src/pages/**/meta.ts", {
62
+ var metas = import.meta.glob("/src/pages/**/meta.ts", {
16
63
  eager: true,
17
64
  });
18
- const routes = [];
19
- const obj = {};
20
- const filePaths = new Set(Object.keys({ ...pages, ...layouts }).map((p) => p.replace(/\/(index|layout)\.tsx$/, "")));
21
- filePaths.forEach((filePath) => {
22
- const pagePath = filePath + "/index.tsx";
23
- const Page = pages[pagePath];
24
- const layoutPath = filePath + "/layout.tsx";
25
- const Layout = layouts[layoutPath] || DefaultOutlet;
26
- const metaPath = filePath + "/meta.ts";
27
- const meta = metas[metaPath] || {};
28
- const path = filePath.replace(/.*\/pages/, "").replace(/\[([^\]]+)\]/, ":$1") || "/";
29
- const hasPage = Boolean(Page);
65
+ var routes = [];
66
+ var obj = {};
67
+ var filePaths = new Set(Object.keys(__assign(__assign({}, pages), layouts)).map(function (p) {
68
+ return p.replace(/\/(index|layout)\.tsx$/, "");
69
+ }));
70
+ filePaths.forEach(function (filePath) {
71
+ var pagePath = filePath + "/index.tsx";
72
+ var Page = pages[pagePath];
73
+ var layoutPath = filePath + "/layout.tsx";
74
+ var Layout = layouts[layoutPath] || DefaultOutlet;
75
+ var metaPath = filePath + "/meta.ts";
76
+ var meta = metas[metaPath] || {};
77
+ var path = filePath.replace(/.*\/pages/, "").replace(/\[([^\]]+)\]/, ":$1") || "/";
78
+ var hasPage = Boolean(Page);
30
79
  obj[path] = {
31
- path,
80
+ path: path,
32
81
  element: _jsx(Layout, {}),
33
82
  children: [
34
83
  {
35
84
  element: hasPage ? _jsx(Page, {}) : _jsx(Navigate, { to: "/", replace: true }),
36
85
  index: true,
37
86
  loader: hasPage
38
- ? async ({ params, request }) => {
39
- await system.init()?.catch(() => { });
40
- const ctx = system.getCtx(params, request, meta.permission);
41
- await meta.loader?.(ctx, meta)?.catch?.(() => { });
42
- if (!ctx.signed)
43
- return redirect("/login");
44
- if (ctx.noPermission)
45
- return redirect("/403");
46
- document.title = ctx.title;
47
- return ctx.data;
48
- }
87
+ ? function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
88
+ var url, req, ctx;
89
+ var _c, _d, _e, _f, _g;
90
+ var params = _b.params, request = _b.request;
91
+ return __generator(this, function (_h) {
92
+ switch (_h.label) {
93
+ case 0:
94
+ url = new URL(request.url);
95
+ req = {
96
+ params: params,
97
+ query: Object.fromEntries(url.searchParams),
98
+ pathname: url.pathname.replace(/\/$/, ""),
99
+ };
100
+ if (!!system.ready) return [3 /*break*/, 2];
101
+ return [4 /*yield*/, ((_d = (_c = system.init(req, meta)) === null || _c === void 0 ? void 0 : _c.catch) === null || _d === void 0 ? void 0 : _d.call(_c, function () { }))];
102
+ case 1:
103
+ _h.sent();
104
+ _h.label = 2;
105
+ case 2:
106
+ ctx = system.getCtx(req, meta.permission);
107
+ return [4 /*yield*/, ((_g = (_f = (_e = meta.loader) === null || _e === void 0 ? void 0 : _e.call(meta, ctx)) === null || _f === void 0 ? void 0 : _f.catch) === null || _g === void 0 ? void 0 : _g.call(_f, function () { }))];
108
+ case 3:
109
+ _h.sent();
110
+ if (!ctx.signed) {
111
+ system.ready = false;
112
+ return [2 /*return*/, redirect("/login?from=".concat(encodeURIComponent(request.url)))];
113
+ }
114
+ if (ctx.noPermission)
115
+ return [2 /*return*/, redirect("/403")];
116
+ document.title = ctx.title;
117
+ return [2 /*return*/, ctx.data];
118
+ }
119
+ });
120
+ }); }
49
121
  : undefined,
50
122
  },
51
123
  ],
52
124
  };
53
125
  });
54
- filePaths.forEach((filePath) => {
55
- const path = filePath.replace(/.*\/pages/, "").replace(/\[([^\]]+)\]/, ":$1") || "/";
126
+ filePaths.forEach(function (filePath) {
127
+ var path = filePath.replace(/.*\/pages/, "").replace(/\[([^\]]+)\]/, ":$1") || "/";
56
128
  if (path === "/")
57
129
  return;
58
- const currentObj = obj[path];
59
- const segments = path.split("/").filter(Boolean);
60
- const paths = ["/"];
61
- segments.reduce((acc, curr) => {
62
- const newPath = acc + "/" + curr;
130
+ var currentObj = obj[path];
131
+ var segments = path.split("/").filter(Boolean);
132
+ var paths = ["/"];
133
+ segments.reduce(function (acc, curr) {
134
+ var newPath = acc + "/" + curr;
63
135
  if (newPath !== path)
64
136
  paths.unshift(newPath);
65
137
  return newPath;
66
138
  }, "");
67
- for (let index = 0; index < paths.length; index++) {
68
- const p = paths[index];
139
+ for (var index = 0; index < paths.length; index++) {
140
+ var p = paths[index];
69
141
  if (obj[p]) {
70
142
  obj[p].children.push(currentObj);
71
143
  break;
@@ -3,12 +3,14 @@ export interface Ctx {
3
3
  title: string;
4
4
  signed: boolean;
5
5
  noPermission: boolean;
6
- params: Params;
7
- query: Params;
6
+ req: {
7
+ params: Params;
8
+ query: Params;
9
+ pathname: string;
10
+ };
8
11
  data?: any;
9
12
  }
10
13
  export type Meta = {
11
14
  permission?: number;
12
- loader?: Loader;
15
+ loader?(ctx: Ctx): void | Promise<void>;
13
16
  } & Record<string, unknown>;
14
- export type Loader = (ctx: Ctx, meta: Meta) => void | Promise<void>;
@@ -1,13 +1,13 @@
1
1
  import { useEffect, useRef, useState } from "react";
2
2
  export function useDebouncedValue(value) {
3
- const [result, setResult] = useState(value);
4
- const timer = useRef(undefined);
5
- useEffect(() => {
3
+ var _a = useState(value), result = _a[0], setResult = _a[1];
4
+ var timer = useRef(undefined);
5
+ useEffect(function () {
6
6
  clearTimeout(timer.current);
7
- timer.current = window.setTimeout(() => {
7
+ timer.current = window.setTimeout(function () {
8
8
  setResult(value);
9
9
  }, 700);
10
- return () => {
10
+ return function () {
11
11
  window.clearTimeout(timer.current);
12
12
  };
13
13
  }, [result, value]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e7w/easy-routes",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"