fs-router-dom 0.0.1 → 0.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,29 +1,29 @@
1
- # react-file-router
1
+ # fs-router-dom
2
2
 
3
3
  Lightweight file-based router for Vite + React Router DOM, like Next.js.
4
4
 
5
5
  ## Installation
6
6
  ```
7
- npm install react-file-router
7
+ npm install fs-router-dom
8
8
  ```
9
9
 
10
10
  ## Usage
11
11
 
12
- ### `<FileRouter />`
12
+ ### `<FSRouter />`
13
13
 
14
- The `FileRouter` component dynamically creates `react-router-dom` routes from a list of file-based modules. It requires being a child of a `BrowserRouter` (or another `react-router` router).
14
+ The `FSRouter` component dynamically creates `react-router-dom` routes from a list of file-based modules. It requires being a child of a `BrowserRouter` (or another `react-router` router).
15
15
 
16
16
  ```jsx
17
17
  // App.tsx
18
18
  import { BrowserRouter } from 'react-router-dom';
19
- import { FileRouter } from 'react-file-router';
19
+ import { FSRouter } from 'fs-router-dom';
20
20
 
21
21
  const routes = import.meta.glob('./pages/**/*.tsx');
22
22
 
23
23
  function App() {
24
24
  return (
25
25
  <BrowserRouter basename="/app">
26
- <FileRouter routes={routes} />
26
+ <FSRouter routes={routes} />
27
27
  </BrowserRouter>
28
28
  );
29
29
  }
@@ -31,22 +31,22 @@ function App() {
31
31
  export default App;
32
32
  ```
33
33
 
34
- ### `<FullFileRouter />`
34
+ ### `<FullFSRouter />`
35
35
 
36
- The `FullFileRouter` component is a "batteries-included" component for users who want to quickly set up file-based routing without configuring `react-router-dom`'s `BrowserRouter` separately. It instantiates a `BrowserRouter` and places the `FileRouter` inside it, handling the setup in one step.
36
+ The `FullFSRouter` component is a "batteries-included" component for users who want to quickly set up file-based routing without configuring `react-router-dom`'s `BrowserRouter` separately. It instantiates a `BrowserRouter` and places the `FSRouter` inside it, handling the setup in one step.
37
37
 
38
- `FullFileRouter` accepts two types of props:
39
- - `routes`: The same `routes` object required by `FileRouter`.
38
+ `FullFSRouter` accepts two types of props:
39
+ - `routes`: The same `routes` object required by `FSRouter`.
40
40
  - All props accepted by `react-router-dom`'s `BrowserRouter` (e.g., `basename`, `window`).
41
41
 
42
42
  ```jsx
43
43
  // App.tsx
44
- import { FullFileRouter } from 'react-file-router';
44
+ import { FullFSRouter } from 'fs-router-dom';
45
45
 
46
46
  const routes = import.meta.glob('./pages/**/*.tsx');
47
47
 
48
48
  function App() {
49
- return <FullFileRouter routes={routes} basename="/app" />;
49
+ return <FullFSRouter routes={routes} basename="/app" />;
50
50
  }
51
51
 
52
52
  export default App;
@@ -0,0 +1,9 @@
1
+ import { BrowserRouterProps } from 'react-router-dom';
2
+ interface FSRouterProps {
3
+ routes: Record<string, () => Promise<unknown>>;
4
+ }
5
+ export declare function FSRouter({ routes }: FSRouterProps): import("react/jsx-runtime").JSX.Element;
6
+ interface FullFSRouterProps extends FSRouterProps, Omit<BrowserRouterProps, 'children'> {
7
+ }
8
+ export declare function FullFSRouter({ routes, ...browserProps }: FullFSRouterProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -33,8 +33,8 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.FileRouter = FileRouter;
37
- exports.FullFileRouter = FullFileRouter;
36
+ exports.FSRouter = FSRouter;
37
+ exports.FullFSRouter = FullFSRouter;
38
38
  const jsx_runtime_1 = require("react/jsx-runtime");
39
39
  const react_1 = __importStar(require("react"));
40
40
  const react_router_dom_1 = require("react-router-dom");
@@ -61,7 +61,7 @@ function transformFilePathToRoutePath(filePath) {
61
61
  path = path.replace(/\[(.*?)\]/g, ':$1');
62
62
  return path;
63
63
  }
64
- function FileRouter({ routes }) {
64
+ function FSRouter({ routes }) {
65
65
  return ((0, jsx_runtime_1.jsxs)(react_router_dom_1.Routes, { children: [Object.entries(routes).map(([filePath, importFn]) => {
66
66
  const path = transformFilePathToRoutePath(filePath);
67
67
  const Component = react_1.default.lazy(async () => {
@@ -71,7 +71,7 @@ function FileRouter({ routes }) {
71
71
  return ((0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: path, element: (0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)("div", { children: "Loading..." }), children: (0, jsx_runtime_1.jsx)(Component, {}) }) }, path));
72
72
  }), (0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "*", element: (0, jsx_runtime_1.jsx)("div", { children: "404 - Not Found" }) })] }));
73
73
  }
74
- function FullFileRouter({ routes, ...browserProps }) {
75
- return ((0, jsx_runtime_1.jsx)(react_router_dom_1.BrowserRouter, { ...browserProps, children: (0, jsx_runtime_1.jsx)(FileRouter, { routes: routes }) }));
74
+ function FullFSRouter({ routes, ...browserProps }) {
75
+ return ((0, jsx_runtime_1.jsx)(react_router_dom_1.BrowserRouter, { ...browserProps, children: (0, jsx_runtime_1.jsx)(FSRouter, { routes: routes }) }));
76
76
  }
77
- //# sourceMappingURL=FileRouter.js.map
77
+ //# sourceMappingURL=FSRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FSRouter.js","sourceRoot":"","sources":["../src/FSRouter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,4BA0BC;AAID,oCAMC;;AAxED,+CAAwC;AACxC,uDAAoF;AAMpF;;;;;GAKG;AACH,SAAS,4BAA4B,CAAC,QAAgB;IACpD,gDAAgD;IAChD,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAEhD,wCAAwC;IACxC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEtC,sBAAsB;IACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;IAC5C,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,GAAG,GAAG,CAAC;IACb,CAAC;IAED,+CAA+C;IAC/C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAEzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,QAAQ,CAAC,EAAE,MAAM,EAAiB;IAChD,OAAO,CACL,wBAAC,yBAAM,eACJ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACnD,MAAM,IAAI,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;gBAEpD,MAAM,SAAS,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;oBACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;oBAChC,OAAO,EAAE,OAAO,EAAG,MAAgD,CAAC,OAAO,EAAE,CAAC;gBAChF,CAAC,CAAC,CAAC;gBACH,OAAO,CACL,uBAAC,wBAAK,IAEJ,IAAI,EAAE,IAAI,EACV,OAAO,EACL,uBAAC,gBAAQ,IAAC,QAAQ,EAAE,yDAAqB,YACvC,uBAAC,SAAS,KAAG,GACJ,IALR,IAAI,CAOT,CACH,CAAC;YACJ,CAAC,CAAC,EAEF,uBAAC,wBAAK,IAAC,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,8DAA0B,GAAI,IAChD,CACV,CAAC;AACJ,CAAC;AAID,SAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,EAAqB;IACzE,OAAO,CACL,uBAAC,gCAAa,OAAK,YAAY,YAC7B,uBAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,GACd,CACjB,CAAC;AACJ,CAAC"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const jsx_runtime_1 = require("react/jsx-runtime");
4
4
  const react_1 = require("@testing-library/react");
5
5
  const react_router_dom_1 = require("react-router-dom");
6
- const FileRouter_1 = require("./FileRouter");
6
+ const FSRouter_1 = require("./FSRouter");
7
7
  // Mock components
8
8
  const Home = () => (0, jsx_runtime_1.jsx)("div", { children: "Home" });
9
9
  const About = () => (0, jsx_runtime_1.jsx)("div", { children: "About" });
@@ -13,18 +13,18 @@ const routes = {
13
13
  './pages/about.tsx': () => Promise.resolve({ default: About }),
14
14
  './pages/users/[id].tsx': () => Promise.resolve({ default: User }),
15
15
  };
16
- describe('FileRouter', () => {
16
+ describe('FSRouter', () => {
17
17
  it('should render the correct component for a static route', async () => {
18
- (0, react_1.render)((0, jsx_runtime_1.jsx)(react_router_dom_1.MemoryRouter, { initialEntries: ['/about'], children: (0, jsx_runtime_1.jsx)(FileRouter_1.FileRouter, { routes: routes }) }));
18
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(react_router_dom_1.MemoryRouter, { initialEntries: ['/about'], children: (0, jsx_runtime_1.jsx)(FSRouter_1.FSRouter, { routes: routes }) }));
19
19
  expect(await react_1.screen.findByText('About')).toBeInTheDocument();
20
20
  });
21
21
  it('should render the correct component for the root route', async () => {
22
- (0, react_1.render)((0, jsx_runtime_1.jsx)(react_router_dom_1.MemoryRouter, { initialEntries: ['/'], children: (0, jsx_runtime_1.jsx)(FileRouter_1.FileRouter, { routes: routes }) }));
22
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(react_router_dom_1.MemoryRouter, { initialEntries: ['/'], children: (0, jsx_runtime_1.jsx)(FSRouter_1.FSRouter, { routes: routes }) }));
23
23
  expect(await react_1.screen.findByText('Home')).toBeInTheDocument();
24
24
  });
25
25
  it('should render the correct component for a dynamic route', async () => {
26
- (0, react_1.render)((0, jsx_runtime_1.jsx)(react_router_dom_1.MemoryRouter, { initialEntries: ['/users/123'], children: (0, jsx_runtime_1.jsx)(FileRouter_1.FileRouter, { routes: routes }) }));
26
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(react_router_dom_1.MemoryRouter, { initialEntries: ['/users/123'], children: (0, jsx_runtime_1.jsx)(FSRouter_1.FSRouter, { routes: routes }) }));
27
27
  expect(await react_1.screen.findByText('User')).toBeInTheDocument();
28
28
  });
29
29
  });
30
- //# sourceMappingURL=FileRouter.test.js.map
30
+ //# sourceMappingURL=FSRouter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FSRouter.test.js","sourceRoot":"","sources":["../src/FSRouter.test.tsx"],"names":[],"mappings":";;;AACA,kDAAwD;AACxD,uDAAgD;AAChD,yCAAsC;AAEtC,kBAAkB;AAClB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,mDAAe,CAAC;AACnC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,oDAAgB,CAAC;AACrC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,mDAAe,CAAC;AAEnC,MAAM,MAAM,GAAG;IACb,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC7D,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9D,wBAAwB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;CACnE,CAAC;AAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,IAAA,cAAM,EACJ,uBAAC,+BAAY,IAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,YACtC,uBAAC,mBAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,GACf,CAChB,CAAC;QACF,MAAM,CAAC,MAAM,cAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,IAAA,cAAM,EACJ,uBAAC,+BAAY,IAAC,cAAc,EAAE,CAAC,GAAG,CAAC,YACjC,uBAAC,mBAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,GACf,CAChB,CAAC;QACF,MAAM,CAAC,MAAM,cAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,IAAA,cAAM,EACJ,uBAAC,+BAAY,IAAC,cAAc,EAAE,CAAC,YAAY,CAAC,YAC1C,uBAAC,mBAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,GACf,CAChB,CAAC;QACF,MAAM,CAAC,MAAM,cAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { FileRouter, FullFileRouter } from './FileRouter';
1
+ export { FSRouter, FullFSRouter } from './FSRouter';
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FullFileRouter = exports.FileRouter = void 0;
4
- var FileRouter_1 = require("./FileRouter");
5
- Object.defineProperty(exports, "FileRouter", { enumerable: true, get: function () { return FileRouter_1.FileRouter; } });
6
- Object.defineProperty(exports, "FullFileRouter", { enumerable: true, get: function () { return FileRouter_1.FullFileRouter; } });
3
+ exports.FullFSRouter = exports.FSRouter = void 0;
4
+ var FSRouter_1 = require("./FSRouter");
5
+ Object.defineProperty(exports, "FSRouter", { enumerable: true, get: function () { return FSRouter_1.FSRouter; } });
6
+ Object.defineProperty(exports, "FullFSRouter", { enumerable: true, get: function () { return FSRouter_1.FullFSRouter; } });
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA0D;AAAjD,wGAAA,UAAU,OAAA;AAAE,4GAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AAA3C,oGAAA,QAAQ,OAAA;AAAE,wGAAA,YAAY,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fs-router-dom",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Lightweight file-based router for Vite + react-router-dom, inspired by Next.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,9 +0,0 @@
1
- import { BrowserRouterProps } from 'react-router-dom';
2
- interface FileRouterProps {
3
- routes: Record<string, () => Promise<unknown>>;
4
- }
5
- export declare function FileRouter({ routes }: FileRouterProps): import("react/jsx-runtime").JSX.Element;
6
- interface FullFileRouterProps extends FileRouterProps, Omit<BrowserRouterProps, 'children'> {
7
- }
8
- export declare function FullFileRouter({ routes, ...browserProps }: FullFileRouterProps): import("react/jsx-runtime").JSX.Element;
9
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileRouter.js","sourceRoot":"","sources":["../src/FileRouter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,gCA0BC;AAID,wCAMC;;AAxED,+CAAwC;AACxC,uDAAoF;AAMpF;;;;;GAKG;AACH,SAAS,4BAA4B,CAAC,QAAgB;IACpD,gDAAgD;IAChD,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAEhD,wCAAwC;IACxC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEtC,sBAAsB;IACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;IAC5C,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,GAAG,GAAG,CAAC;IACb,CAAC;IAED,+CAA+C;IAC/C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAEzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,UAAU,CAAC,EAAE,MAAM,EAAmB;IACpD,OAAO,CACL,wBAAC,yBAAM,eACJ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACnD,MAAM,IAAI,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;gBAEpD,MAAM,SAAS,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;oBACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;oBAChC,OAAO,EAAE,OAAO,EAAG,MAAgD,CAAC,OAAO,EAAE,CAAC;gBAChF,CAAC,CAAC,CAAC;gBACH,OAAO,CACL,uBAAC,wBAAK,IAEJ,IAAI,EAAE,IAAI,EACV,OAAO,EACL,uBAAC,gBAAQ,IAAC,QAAQ,EAAE,yDAAqB,YACvC,uBAAC,SAAS,KAAG,GACJ,IALR,IAAI,CAOT,CACH,CAAC;YACJ,CAAC,CAAC,EAEF,uBAAC,wBAAK,IAAC,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,8DAA0B,GAAI,IAChD,CACV,CAAC;AACJ,CAAC;AAID,SAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,EAAuB;IAC7E,OAAO,CACL,uBAAC,gCAAa,OAAK,YAAY,YAC7B,uBAAC,UAAU,IAAC,MAAM,EAAE,MAAM,GAAI,GAChB,CACjB,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileRouter.test.js","sourceRoot":"","sources":["../src/FileRouter.test.tsx"],"names":[],"mappings":";;;AACA,kDAAwD;AACxD,uDAAgD;AAChD,6CAA0C;AAE1C,kBAAkB;AAClB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,mDAAe,CAAC;AACnC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,oDAAgB,CAAC;AACrC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,mDAAe,CAAC;AAEnC,MAAM,MAAM,GAAG;IACb,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC7D,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9D,wBAAwB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;CACnE,CAAC;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,IAAA,cAAM,EACJ,uBAAC,+BAAY,IAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,YACtC,uBAAC,uBAAU,IAAC,MAAM,EAAE,MAAM,GAAI,GACjB,CAChB,CAAC;QACF,MAAM,CAAC,MAAM,cAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,IAAA,cAAM,EACJ,uBAAC,+BAAY,IAAC,cAAc,EAAE,CAAC,GAAG,CAAC,YACjC,uBAAC,uBAAU,IAAC,MAAM,EAAE,MAAM,GAAI,GACjB,CAChB,CAAC;QACF,MAAM,CAAC,MAAM,cAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,IAAA,cAAM,EACJ,uBAAC,+BAAY,IAAC,cAAc,EAAE,CAAC,YAAY,CAAC,YAC1C,uBAAC,uBAAU,IAAC,MAAM,EAAE,MAAM,GAAI,GACjB,CAChB,CAAC;QACF,MAAM,CAAC,MAAM,cAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}