github-pages-plugin-for-type-route
Advanced tools
+35
-55
@@ -24,34 +24,37 @@ #!/usr/bin/env node | ||
| var pathToRouterTs = process.argv[2]; | ||
| var buildDir = (function () { | ||
| var e_2, _a; | ||
| try { | ||
| for (var _b = __values(["build", "dist"]), _c = _b.next(); !_c.done; _c = _b.next()) { | ||
| var dir = _c.value; | ||
| if (fs.existsSync(dir)) { | ||
| return dir; | ||
| } | ||
| var buildDir = "build"; | ||
| var tmpDistDir = ".dist_tmp_xKLsKdIdJd"; | ||
| var PUBLIC_URL = (function () { | ||
| cra: { | ||
| if (fs.existsSync("vite.config.ts")) { | ||
| break cra; | ||
| } | ||
| } | ||
| catch (e_2_1) { e_2 = { error: e_2_1 }; } | ||
| finally { | ||
| try { | ||
| if (_c && !_c.done && (_a = _b.return)) _a.call(_b); | ||
| var homepage = JSON.parse(fs.readFileSync("package.json").toString("utf8"))["homepage"]; | ||
| var out = "/"; | ||
| if (homepage !== undefined) { | ||
| out = (0, url_1.parse)(homepage).path; | ||
| } | ||
| finally { if (e_2) throw e_2.error; } | ||
| return out === "/" ? "" : out; | ||
| } | ||
| throw new Error("Error: There is no dist or build folder !"); | ||
| var viteConfigRaw = fs.readFileSync("vite.config.ts").toString("utf8"); | ||
| if (!/["']?base["']?:/.test(viteConfigRaw)) { | ||
| return "/"; | ||
| } | ||
| var baseRegex = /["']?base["']?:\s*[`'"]([^'"]+)[`'"],?/; | ||
| var match = viteConfigRaw.match(baseRegex); | ||
| if (match === null) { | ||
| throw new Error("Cannot parse your vite.config.ts file. Please add a base parameter to it."); | ||
| } | ||
| return match[1]; | ||
| })(); | ||
| if (!fs.existsSync((0, path_1.join)(buildDir, "index.html"))) { | ||
| throw new Error("Error: There is no index.html file present !"); | ||
| } | ||
| var originalRouterTs = fs.readFileSync(pathToRouterTs, { | ||
| "encoding": "utf8", | ||
| }); | ||
| var tempRouterTsPath = undefined; | ||
| if (originalRouterTs.includes("__BASE_URL__")) { | ||
| var modifiedRouterTs = originalRouterTs.replace(/__BASE_URL__/g, 'process.env["PUBLIC_URL"]'); | ||
| tempRouterTsPath = pathToRouterTs.replace(".ts", ".temp_".concat(Date.now(), ".ts")); | ||
| fs.writeFileSync(tempRouterTsPath, modifiedRouterTs); | ||
| } | ||
| var tmpDistDir = ".dist_tmp_xKLsKdIdJd"; | ||
| var pathToModifiedRouterTs = (function () { | ||
| var routerTsRaw = fs.readFileSync(pathToRouterTs).toString("utf8"); | ||
| //TODO: Modify routerTsRaw | ||
| var routerTsRawModified = routerTsRaw | ||
| .replace(/process.env.PUBLIC_URL/g, JSON.stringify(PUBLIC_URL)) | ||
| .replace(/import.meta.env.BASE_URL/g, JSON.stringify(PUBLIC_URL)); | ||
| var pathToModifiedRouterTs = (0, path_1.join)((0, path_1.dirname)(pathToRouterTs), "router_tmp.ts"); | ||
| fs.writeFileSync(pathToModifiedRouterTs, Buffer.from(routerTsRawModified, "utf8")); | ||
| return { pathToModifiedRouterTs: pathToModifiedRouterTs }; | ||
| })().pathToModifiedRouterTs; | ||
| try { | ||
@@ -63,35 +66,12 @@ (0, child_process_1.execSync)([ | ||
| "--rootDir ./src/", | ||
| tempRouterTsPath !== null && tempRouterTsPath !== void 0 ? tempRouterTsPath : pathToRouterTs, | ||
| pathToModifiedRouterTs, | ||
| ].join(" ")); | ||
| } | ||
| catch (_b) { } | ||
| function createPathToRouter(fileType) { | ||
| return (0, path_1.join)(tmpDistDir, (tempRouterTsPath !== null && tempRouterTsPath !== void 0 ? tempRouterTsPath : pathToRouterTs) | ||
| .replace(/ts$/i, fileType) | ||
| .split(path_1.sep) | ||
| .slice(1) | ||
| .join(path_1.sep)); | ||
| } | ||
| var pathToRouterJs = createPathToRouter("js"); | ||
| var pathToRouterCjs = createPathToRouter("cjs"); | ||
| (0, child_process_1.execSync)("mv ".concat(pathToRouterJs, " ").concat(pathToRouterCjs)); | ||
| var PUBLIC_URL = (function () { | ||
| var homepage = JSON.parse(fs.readFileSync("package.json").toString("utf8"))["homepage"]; | ||
| var out = "/"; | ||
| if (homepage !== undefined) { | ||
| out = (0, url_1.parse)(homepage).path; | ||
| } | ||
| return out === "/" ? "" : out; | ||
| })(); | ||
| var paths = id(JSON.parse((0, child_process_1.execSync)([pathToNode, pathToRouterCjs].join(" "), { | ||
| "env": { | ||
| PUBLIC_URL: PUBLIC_URL, | ||
| }, | ||
| }).toString("utf8"))) | ||
| (0, child_process_1.execSync)("rm ".concat(pathToModifiedRouterTs)); | ||
| var pathToRouterJs = (0, path_1.join)(tmpDistDir, pathToRouterTs.replace(/ts$/i, "js").split(path_1.sep).slice(1).join(path_1.sep)); | ||
| var paths = id(JSON.parse((0, child_process_1.execSync)([pathToNode, pathToRouterJs].join(" ")).toString("utf8"))) | ||
| .map(function (path) { return (0, path_1.relative)(PUBLIC_URL || "/", path); }) | ||
| .filter(function (path) { return path !== ""; }); | ||
| (0, child_process_1.execSync)("rm -r ".concat(tmpDistDir)); | ||
| if (tempRouterTsPath !== undefined) { | ||
| (0, child_process_1.execSync)("rm ".concat(tempRouterTsPath)); | ||
| } | ||
| var indexHtmlPath = (0, path_1.join)(buildDir, "index.html"); | ||
@@ -98,0 +78,0 @@ try { |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/bin/main.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/bin/main.ts"],"names":[],"mappings":"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"} |
@@ -1,2 +0,2 @@ | ||
| export declare type RouteDefs = { | ||
| export type RouteDefs = { | ||
| [routeName: string]: { | ||
@@ -3,0 +3,0 @@ "~internal": { |
+16
-16
| { | ||
| "name": "github-pages-plugin-for-type-route", | ||
| "version": "1.0.1", | ||
| "version": "2.0.0", | ||
| "description": "Feature create-react-app/type-route/gh-pages compatibility", | ||
@@ -9,6 +9,6 @@ "repository": { | ||
| }, | ||
| "main": "lib/index.js", | ||
| "types": "lib/index.d.ts", | ||
| "main": "./lib/index.js", | ||
| "types": "./lib/index.d.ts", | ||
| "bin": { | ||
| "hack-gh-pages": "bin/main.js" | ||
| "hack-gh-pages": "./bin/main.js" | ||
| }, | ||
@@ -31,14 +31,14 @@ "lint-staged": { | ||
| "files": [ | ||
| "src/bin/main.ts", | ||
| "src/lib/index.ts", | ||
| "src/lib/makeThisModuleAnExecutableRouteLister.ts", | ||
| "bin/main.d.ts", | ||
| "bin/main.js", | ||
| "bin/main.js.map", | ||
| "lib/index.d.ts", | ||
| "lib/index.js", | ||
| "lib/index.js.map", | ||
| "lib/makeThisModuleAnExecutableRouteLister.d.ts", | ||
| "lib/makeThisModuleAnExecutableRouteLister.js", | ||
| "lib/makeThisModuleAnExecutableRouteLister.js.map" | ||
| "./src/bin/main.ts", | ||
| "./src/lib/index.ts", | ||
| "./src/lib/makeThisModuleAnExecutableRouteLister.ts", | ||
| "./bin/main.d.ts", | ||
| "./bin/main.js", | ||
| "./bin/main.js.map", | ||
| "./lib/index.d.ts", | ||
| "./lib/index.js", | ||
| "./lib/index.js.map", | ||
| "./lib/makeThisModuleAnExecutableRouteLister.d.ts", | ||
| "./lib/makeThisModuleAnExecutableRouteLister.js", | ||
| "./lib/makeThisModuleAnExecutableRouteLister.js.map" | ||
| ], | ||
@@ -45,0 +45,0 @@ "keywords": [], |
+1
-1
@@ -7,3 +7,3 @@ <p align="center"> | ||
| This is a build tool to enable [`create-react-app`](https://create-react-app.dev)'s sites that uses [`type-route`](https://typehero.org/type-route) to be deployed on [`gh-pages`](https://pages.github.com). | ||
| This is a build tool to enable [Vite](https://vitejs.dev/) and [`create-react-app`](https://create-react-app.dev)'s sites that uses [`type-route`](https://typehero.org/type-route) to be deployed on [`gh-pages`](https://pages.github.com). | ||
@@ -10,0 +10,0 @@ # The Problem it solves |
+58
-57
@@ -13,30 +13,61 @@ #!/usr/bin/env node | ||
| const pathToRouterTs = process.argv[2]; | ||
| const buildDir = (() => { | ||
| for (const dir of ["build", "dist"]) { | ||
| if (fs.existsSync(dir)) { | ||
| return dir; | ||
| const buildDir = "build"; | ||
| const tmpDistDir = ".dist_tmp_xKLsKdIdJd"; | ||
| const PUBLIC_URL = (() => { | ||
| cra: { | ||
| if (fs.existsSync("vite.config.ts")) { | ||
| break cra; | ||
| } | ||
| const homepage = JSON.parse( | ||
| fs.readFileSync("package.json").toString("utf8"), | ||
| )["homepage"]; | ||
| let out: string | undefined = "/"; | ||
| if (homepage !== undefined) { | ||
| out = parseUrl(homepage).path; | ||
| } | ||
| return out === "/" ? "" : out; | ||
| } | ||
| throw new Error("Error: There is no dist or build folder !"); | ||
| const viteConfigRaw = fs.readFileSync("vite.config.ts").toString("utf8"); | ||
| if (!/["']?base["']?:/.test(viteConfigRaw)) { | ||
| return "/"; | ||
| } | ||
| const baseRegex = /["']?base["']?:\s*[`'"]([^'"]+)[`'"],?/; | ||
| const match = viteConfigRaw.match(baseRegex); | ||
| if (match === null) { | ||
| throw new Error( | ||
| "Cannot parse your vite.config.ts file. Please add a base parameter to it.", | ||
| ); | ||
| } | ||
| return match[1]; | ||
| })(); | ||
| if (!fs.existsSync(join(buildDir, "index.html"))) { | ||
| throw new Error("Error: There is no index.html file present !"); | ||
| } | ||
| const { pathToModifiedRouterTs } = (() => { | ||
| const routerTsRaw = fs.readFileSync(pathToRouterTs).toString("utf8"); | ||
| const originalRouterTs = fs.readFileSync(pathToRouterTs, { | ||
| "encoding": "utf8", | ||
| }); | ||
| let tempRouterTsPath: string | undefined = undefined; | ||
| //TODO: Modify routerTsRaw | ||
| const routerTsRawModified = routerTsRaw | ||
| .replace(/process.env.PUBLIC_URL/g, JSON.stringify(PUBLIC_URL)) | ||
| .replace(/import.meta.env.BASE_URL/g, JSON.stringify(PUBLIC_URL)); | ||
| const pathToModifiedRouterTs = join( | ||
| dirname(pathToRouterTs), | ||
| "router_tmp.ts", | ||
| ); | ||
| if (originalRouterTs.includes("__BASE_URL__")) { | ||
| const modifiedRouterTs = originalRouterTs.replace( | ||
| /__BASE_URL__/g, | ||
| 'process.env["PUBLIC_URL"]', | ||
| fs.writeFileSync( | ||
| pathToModifiedRouterTs, | ||
| Buffer.from(routerTsRawModified, "utf8"), | ||
| ); | ||
| tempRouterTsPath = pathToRouterTs.replace(".ts", `.temp_${Date.now()}.ts`); | ||
| fs.writeFileSync(tempRouterTsPath, modifiedRouterTs); | ||
| } | ||
| const tmpDistDir = ".dist_tmp_xKLsKdIdJd"; | ||
| return { pathToModifiedRouterTs }; | ||
| })(); | ||
@@ -50,3 +81,3 @@ try { | ||
| "--rootDir ./src/", | ||
| tempRouterTsPath ?? pathToRouterTs, | ||
| pathToModifiedRouterTs, | ||
| ].join(" "), | ||
@@ -56,39 +87,12 @@ ); | ||
| function createPathToRouter(fileType: "js" | "cjs") { | ||
| return join( | ||
| tmpDistDir, | ||
| (tempRouterTsPath ?? pathToRouterTs) | ||
| .replace(/ts$/i, fileType) | ||
| .split(sep) | ||
| .slice(1) | ||
| .join(sep), | ||
| ); | ||
| } | ||
| execSync(`rm ${pathToModifiedRouterTs}`); | ||
| const pathToRouterJs = createPathToRouter("js"); | ||
| const pathToRouterCjs = createPathToRouter("cjs"); | ||
| const pathToRouterJs = join( | ||
| tmpDistDir, | ||
| pathToRouterTs.replace(/ts$/i, "js").split(sep).slice(1).join(sep), | ||
| ); | ||
| execSync(`mv ${pathToRouterJs} ${pathToRouterCjs}`); | ||
| const PUBLIC_URL = (() => { | ||
| const homepage = JSON.parse( | ||
| fs.readFileSync("package.json").toString("utf8"), | ||
| )["homepage"]; | ||
| let out: string | undefined = "/"; | ||
| if (homepage !== undefined) { | ||
| out = parseUrl(homepage).path; | ||
| } | ||
| return out === "/" ? "" : out; | ||
| })(); | ||
| const paths = id<string[]>( | ||
| JSON.parse( | ||
| execSync([pathToNode, pathToRouterCjs].join(" "), { | ||
| "env": { | ||
| PUBLIC_URL, | ||
| }, | ||
| }).toString("utf8"), | ||
| execSync([pathToNode, pathToRouterJs].join(" ")).toString("utf8"), | ||
| ), | ||
@@ -100,5 +104,2 @@ ) | ||
| execSync(`rm -r ${tmpDistDir}`); | ||
| if (tempRouterTsPath !== undefined) { | ||
| execSync(`rm ${tempRouterTsPath}`); | ||
| } | ||
@@ -105,0 +106,0 @@ const indexHtmlPath = join(buildDir, "index.html"); |
-67
| ### **1.0.1** (2023-11-08) | ||
| - Merge pull request #7 from thieryw/new-vite-config | ||
| Fix __BASE_URL__ Accessibility in Node.js Context for Vite Projects | ||
| - Implemented process.env.PUBLIC_URL substitution for __BASE_URL__ | ||
| # **1.0.0** (2023-11-05) | ||
| - Bump version (release v1) | ||
| - Merge pull request #6 from thieryw/update-for-vite | ||
| make it compatible with vite | ||
| - prettify so that lint check passes | ||
| - make it compatible with vite | ||
| ### **0.1.1** (2023-08-02) | ||
| - Bump version | ||
| - Consistency with how CRA provide 'PUBLIC_URL' | ||
| ## **0.1.0** (2022-02-25) | ||
| - Fix multiples small bugs | ||
| ### **0.0.9** (2022-02-25) | ||
| - Remove unessesary dependencies | ||
| - Replace evt by tsafe for id | ||
| - update README.md | ||
| - Update README.md | ||
| ### **0.0.8** (2021-08-05) | ||
| - Enable the router not to be at the root of src/ | ||
| ### **0.0.7** (2021-02-20) | ||
| - add evt as dependency | ||
| ### **0.0.6** (2020-11-28) | ||
| - Update package.json | ||
| - update | ||
| - update | ||
| - Update README.md | ||
| - Update README.md | ||
| - Update README.md | ||
| ### **0.0.5** (2020-11-28) | ||
| - Update | ||
| - remove typescript from peer dependencies | ||
| ### **0.0.4** (2020-11-28) | ||
| - a brand new version | ||
| ### **0.0.3** (2020-11-28) | ||
| - update | ||
| ### **0.0.2** (2020-11-28) | ||
| - Remove unsessary log | ||
| - Update | ||
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
19053
-8.78%15
-6.25%256
-8.57%