UNPKG

statikly-router

Version:
83 lines (82 loc) 3.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.fileExists = exports.writeSON = exports.readJSON = exports.generateSecret = exports.toAbsolutePath = exports.pathToRoute = exports.globPromise = void 0; const promises_1 = __importDefault(require("fs/promises")); const path_1 = __importDefault(require("path")); const glob_1 = __importDefault(require("glob")); const globPromise = (cwd, pattern) => { return new Promise((resolve, reject) => { (0, glob_1.default)(pattern, { cwd, }, function (error, files) { if (error) reject(error); else resolve(files); }); }); }; exports.globPromise = globPromise; const isRouteRoot = (name, dir, dirNameRoute = false) => { if (name === "index") return true; if (dirNameRoute && dir.endsWith(name)) return true; return false; }; const transformRoutePath = (path, querySep) => { if (path.includes("[")) { return path.replace(/\[/gi, querySep).replace(/]/gi, ""); } return path; }; const condPrint = (cond, print, def = "") => { if (cond) return print; return def; }; const pathToRoute = ({ path, cwd, querySep, dirNameRoute = false, }) => { const parsed = path_1.default.parse(path); let url = condPrint(parsed.dir.startsWith("/"), parsed.dir, `/${parsed.dir}`); url += condPrint(isRouteRoot(parsed.name, parsed.dir, dirNameRoute), "", `${condPrint(!url.endsWith("/"), "/")}${parsed.name}`); url = transformRoutePath(url, querySep); const route = Object.assign(Object.assign({}, parsed), { cwd, path: `${cwd}${path_1.default.sep}${path.replace(/\//g, path_1.default.sep)}`, url }); return route; }; exports.pathToRoute = pathToRoute; const toAbsolutePath = (path, cwd = process.cwd()) => { if (!path) return; return path_1.default.isAbsolute(path) ? path : path_1.default.join(cwd, path); }; exports.toAbsolutePath = toAbsolutePath; const generateSecret = (length) => new Array(length) .fill(0) .map(() => Math.floor(Math.random() * 10)) .join(""); exports.generateSecret = generateSecret; const readJSON = async (path, cwd) => { const filePath = (0, exports.toAbsolutePath)(path, cwd); const content = await promises_1.default.readFile(filePath, "utf8"); return JSON.parse(content); }; exports.readJSON = readJSON; const writeSON = async (path, content, cwd) => { const filePath = path_1.default.join((0, exports.toAbsolutePath)(path, cwd), "routes.json"); await promises_1.default.writeFile(filePath, JSON.stringify(content, null, 2), "utf8"); }; exports.writeSON = writeSON; const fileExists = async (path) => !!(await promises_1.default.stat(path).catch((e) => false)); exports.fileExists = fileExists; exports.default = { globPromise: exports.globPromise, pathToRoute: exports.pathToRoute, toAbsolutePath: exports.toAbsolutePath, generateSecret: exports.generateSecret, readJSON: exports.readJSON, fileExists: exports.fileExists, writeSON: exports.writeSON, };