react-fs-router 0.2.9 → 0.2.13
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/.babelrc +3 -0
- package/bin/index.js +8 -2
- package/package.json +2 -4
- package/src/Route.js +42 -33
- package/src/Route.tsx +37 -0
- package/src/genPath.js +3 -3
package/.babelrc
ADDED
package/bin/index.js
CHANGED
|
@@ -9,7 +9,13 @@ program.storeOptionsAsProperties(name);
|
|
|
9
9
|
|
|
10
10
|
program.version(version, "-v --version", "Output the current version");
|
|
11
11
|
|
|
12
|
-
program.requiredOption("-p,--
|
|
12
|
+
program.requiredOption("-p,--page <page>", "Path to your pages folder");
|
|
13
|
+
program.requiredOption(
|
|
14
|
+
"-c,--configs <configs>",
|
|
15
|
+
"Path to store generated files"
|
|
16
|
+
);
|
|
13
17
|
program.parse(process.argv);
|
|
14
18
|
|
|
15
|
-
genPath(program.
|
|
19
|
+
genPath(program.page, program.configs);
|
|
20
|
+
|
|
21
|
+
module.exports = { configs_path: program.configs };
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-fs-router",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.13",
|
|
4
4
|
"description": "File-system based routing for React.",
|
|
5
5
|
"main": "./bin/index.js",
|
|
6
6
|
"git repository": "https://github.com/Mehran9675/react-filesystem-routing",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"test": "node ./bin/index.js -p ./pages",
|
|
8
|
+
"test": "node ./bin/index.js -p ./pages -c ./configs",
|
|
9
9
|
"build": "npx -p typescript tsc"
|
|
10
10
|
},
|
|
11
11
|
"keywords": [
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"chokidar": "^3.5.2",
|
|
21
21
|
"commander": "^8.2.0",
|
|
22
|
-
"node": "^16.10.0",
|
|
23
22
|
"react": "^17.0.2",
|
|
24
23
|
"react-router-dom": "^5.3.0"
|
|
25
24
|
},
|
|
@@ -28,7 +27,6 @@
|
|
|
28
27
|
"rfr": "./bin/index.js"
|
|
29
28
|
},
|
|
30
29
|
"devDependencies": {
|
|
31
|
-
"@types/node": "^16.10.5",
|
|
32
30
|
"typescript": "^4.4.4",
|
|
33
31
|
"prettier": "^2.4.1"
|
|
34
32
|
}
|
package/src/Route.js
CHANGED
|
@@ -1,35 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<Component />
|
|
29
|
-
</Route>
|
|
30
|
-
);
|
|
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
|
+
exports.__esModule = true;
|
|
14
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
15
|
+
var configs_path = require("../bin/index").configs_path;
|
|
16
|
+
var routes = require(configs_path + "/routeConfigs.js").routes;
|
|
17
|
+
var Pages = require(configs_path + "/route.js");
|
|
18
|
+
var react_1 = require("react");
|
|
19
|
+
var react_router_dom_1 = require("react-router-dom");
|
|
20
|
+
function Route() {
|
|
21
|
+
var _a = (0, react_1.useState)(), pages = _a[0], setPages = _a[1];
|
|
22
|
+
var randomStr = function () { return (Math.random() + 1).toString(36).substring(7); };
|
|
23
|
+
(0, react_1.useEffect)(function () {
|
|
24
|
+
setPages(renderConponents(Pages));
|
|
25
|
+
}, []);
|
|
26
|
+
function renderComponent(key, module) {
|
|
27
|
+
return module[key] || module["default"] || module;
|
|
31
28
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
function renderConponents(imports) {
|
|
30
|
+
var renders = [];
|
|
31
|
+
var _loop_1 = function (key, Value) {
|
|
32
|
+
var Component = renderComponent(key, Value);
|
|
33
|
+
var route = routes.filter(function (config) { return (config === null || config === void 0 ? void 0 : config.component) === (Component === null || Component === void 0 ? void 0 : Component.name); })[0];
|
|
34
|
+
renders.push((0, jsx_runtime_1.jsx)(react_router_dom_1.Route, __assign({ exact: true, path: (route === null || route === void 0 ? void 0 : route.path) || "" }, { children: (0, jsx_runtime_1.jsx)(Component, {}, void 0) }), randomStr()));
|
|
35
|
+
};
|
|
36
|
+
for (var _i = 0, _a = Object.entries(imports); _i < _a.length; _i++) {
|
|
37
|
+
var _b = _a[_i], key = _b[0], Value = _b[1];
|
|
38
|
+
_loop_1(key, Value);
|
|
39
|
+
}
|
|
40
|
+
return renders;
|
|
41
|
+
}
|
|
42
|
+
return (0, jsx_runtime_1.jsx)(react_router_dom_1.Switch, { children: pages }, void 0);
|
|
35
43
|
}
|
|
44
|
+
exports["default"] = Route;
|
package/src/Route.tsx
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const { configs_path } = require("../bin/index");
|
|
2
|
+
const { routes } = require(configs_path + "/routeConfigs.js");
|
|
3
|
+
const Pages = require(configs_path + "/route.js");
|
|
4
|
+
|
|
5
|
+
import React, { useState, useEffect } from "react";
|
|
6
|
+
import { Route, Switch } from "react-router-dom";
|
|
7
|
+
|
|
8
|
+
export default function Route() {
|
|
9
|
+
const [pages, setPages] = useState();
|
|
10
|
+
const randomStr = () => (Math.random() + 1).toString(36).substring(7);
|
|
11
|
+
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
setPages(renderConponents(Pages));
|
|
14
|
+
}, []);
|
|
15
|
+
|
|
16
|
+
function renderComponent(key, module) {
|
|
17
|
+
return module[key] || module["default"] || module;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function renderConponents(imports) {
|
|
21
|
+
let renders = [];
|
|
22
|
+
for (const [key, Value] of Object.entries(imports)) {
|
|
23
|
+
const Component = renderComponent(key, Value);
|
|
24
|
+
const route = routes.filter(
|
|
25
|
+
(config) => config?.component === Component?.name
|
|
26
|
+
)[0];
|
|
27
|
+
|
|
28
|
+
renders.push(
|
|
29
|
+
<Route exact={true} key={randomStr()} path={route?.path || ""}>
|
|
30
|
+
<Component />
|
|
31
|
+
</Route>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
return renders;
|
|
35
|
+
}
|
|
36
|
+
return <Switch>{pages}</Switch>;
|
|
37
|
+
}
|
package/src/genPath.js
CHANGED
|
@@ -4,7 +4,7 @@ const chokidar = require("chokidar");
|
|
|
4
4
|
|
|
5
5
|
let isNotThefirstTimeRunning = true;
|
|
6
6
|
|
|
7
|
-
module.exports = (page_directory) => {
|
|
7
|
+
module.exports = (page_directory, configs_directory) => {
|
|
8
8
|
const pathMaker = () => {
|
|
9
9
|
const readDirectory = (directory, includeDirectory) => {
|
|
10
10
|
const pages = {};
|
|
@@ -107,7 +107,7 @@ module.exports = (page_directory) => {
|
|
|
107
107
|
.join("")}};`;
|
|
108
108
|
|
|
109
109
|
fs.writeFileSync(
|
|
110
|
-
"
|
|
110
|
+
configs_directory + "/routeConfigs.js",
|
|
111
111
|
prettier.format(_config, { semi: false, parser: "babel" }),
|
|
112
112
|
(err) => {
|
|
113
113
|
if (err) return console.error(err);
|
|
@@ -115,7 +115,7 @@ module.exports = (page_directory) => {
|
|
|
115
115
|
);
|
|
116
116
|
|
|
117
117
|
fs.writeFileSync(
|
|
118
|
-
"
|
|
118
|
+
configs_directory + "/route.js",
|
|
119
119
|
prettier.format(_routes, { semi: false, parser: "babel" }),
|
|
120
120
|
(err) => {
|
|
121
121
|
if (err) return console.error(err);
|