UNPKG

file-routing-expressjs

Version:

A dependency-free, flexible, system-based file routing for Express.

134 lines 5.21 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var extractors_exports = {}; __export(extractors_exports, { extractDirConfig: () => extractDirConfig, extractDirContext: () => extractDirContext, extractEndpointName: () => extractEndpointName, extractFileContext: () => extractFileContext }); module.exports = __toCommonJS(extractors_exports); var import_regex = require("../constants/regex"); var import_builders = require("./builders"); var import_validators = require("./validators"); function extractEndpointName(name) { const match = name.match(import_regex.ENDPOINT_FILE_NAME_REGEX); const isParam = !!match && match.length >= 2; name = isParam ? `:${match[1] || name}` : name; return { name, isParam }; } function extractDirConfig(dir) { var _a, _b, _c, _d; const file = (0, import_builders.filenameToJSorTS)(dir, "_config"); if (!file) return {}; const module2 = require(file); return (_d = (_c = (_b = module2.config) != null ? _b : (_a = module2.default) == null ? void 0 : _a.config) != null ? _c : module2.default) != null ? _d : {}; } function extractDirMiddlewares(dir) { var _a, _b, _c; const file = (0, import_builders.filenameToJSorTS)(dir, "_middleware"); if (!file) return []; const module2 = require(file); let middlewares = (_c = (_b = module2.middlewares) != null ? _b : (_a = module2.default) == null ? void 0 : _a.middleware) != null ? _c : module2.default; if (!Array.isArray(middlewares)) { middlewares = middlewares ? [middlewares] : []; } return middlewares.filter(import_validators.isRequestHandler); } function extractDirErrorMiddleware(dir) { var _a, _b, _c, _d; const file = (0, import_builders.filenameToJSorTS)(dir, "_error"); if (!file) return void 0; const module2 = require(file); const errorHandler = (_d = (_c = (_b = module2.error) != null ? _b : (_a = module2.default) == null ? void 0 : _a.error) != null ? _c : module2.default) != null ? _d : void 0; return (0, import_validators.isErrorHandler)(errorHandler) ? errorHandler : void 0; } function extractFileConfig(module2) { var _a, _b, _c; return (_c = (_b = module2.config) != null ? _b : (_a = module2.default) == null ? void 0 : _a.config) != null ? _c : {}; } function extractFileMiddlewares(module2) { var _a, _b; let middlewares = (_b = module2.middlewares) != null ? _b : (_a = module2.default) == null ? void 0 : _a.middlewares; if (middlewares && typeof middlewares === "object" && !Array.isArray(middlewares)) { const result = {}; for (const [method, middleware] of Object.entries(middlewares)) { const expressMethod = method; const list = Array.isArray(middleware) ? middleware : middleware ? [middleware] : []; result[expressMethod] = list.filter(import_validators.isRequestHandler); } return result; } if (!Array.isArray(middlewares)) { middlewares = middlewares ? [middlewares] : []; } return middlewares.filter(import_validators.isRequestHandler); } function extractFileErrorMiddleware(module2) { var _a, _b, _c; const raw = (_c = (_b = module2.error) != null ? _b : (_a = module2.default) == null ? void 0 : _a.error) != null ? _c : void 0; if ((0, import_validators.isErrorHandler)(raw)) { return raw; } if (raw && typeof raw === "object") { const result = {}; for (const [method, handler] of Object.entries(raw)) { const expressMethod = method; result[expressMethod] = (0, import_validators.isErrorHandler)(handler) ? handler : void 0; } return result; } return void 0; } function extractDirContext(target) { const config = extractDirConfig(target); const middlewares = extractDirMiddlewares(target); const errorHandler = extractDirErrorMiddleware(target); return { config, middlewares, errorHandler }; } function extractFileContext(target) { if (!(0, import_validators.fileExistsAndIsJSorTS)(target)) { return { config: {}, middlewares: [], errorHandler: void 0 }; } const module2 = require(target); const config = extractFileConfig(module2); const middlewares = extractFileMiddlewares(module2); const errorHandler = extractFileErrorMiddleware(module2); return { config, middlewares, errorHandler }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { extractDirConfig, extractDirContext, extractEndpointName, extractFileContext }); //# sourceMappingURL=extractors.js.map