UNPKG

file-routing-expressjs

Version:

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

135 lines 4.71 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 regex = import_regex.ENDPOINT_FILE_NAME_REGEX; const match = name.match(regex); const isParam = !!match && match.length >= 2; name = isParam ? `:${match[1] || name}` : name; return { name, isParam }; } function extractDirConfig(dir) { const file = (0, import_builders.filenameToJSorTS)(dir, "_config"); if (!file) { return {}; } const module2 = require(file); return module2.config || module2.default || {}; } function extractDirMiddlewares(dir) { const file = (0, import_builders.filenameToJSorTS)(dir, "_middleware"); if (!file) { return []; } const module2 = require(file); let middlewares = module2.middlewares || module2.default; if (!Array.isArray(middlewares)) { middlewares = middlewares ? [middlewares] : []; } return middlewares.filter(import_validators.functionIsRequestHandler); } function extractDirErrorMiddleware(dir) { const file = (0, import_builders.filenameToJSorTS)(dir, "_error"); if (!file) { return void 0; } const module2 = require(file); const errorHandler = module2.error || module2.default || void 0; return (0, import_validators.functionIsExceptionHandler)(errorHandler) ? errorHandler : void 0; } function extractFileConfig(module2) { return module2.config || {}; } function extractFileMiddlewares(module2) { let middlewares = module2.middlewares; if (!Array.isArray(middlewares)) { if (typeof middlewares === "object") { const entries = Object.entries(middlewares); for (let [method, middleware] of entries) { const expressMethod = method; if (!Array.isArray(middleware)) { middleware = middleware ? [middleware] : []; } middlewares[expressMethod] = middleware.filter(import_validators.functionIsRequestHandler); } return middlewares; } middlewares = middlewares ? [middlewares] : []; } return middlewares.filter(import_validators.functionIsRequestHandler); } function extractFileErrorMiddleware(module2) { const errorHandler = module2.error || void 0; if ((0, import_validators.functionIsExceptionHandler)(errorHandler)) return errorHandler; if (typeof errorHandler === "object") { const entries = Object.entries(errorHandler); for (let [method, nestedErrorHandler] of entries) { const expressMethod = method; errorHandler[expressMethod] = (0, import_validators.functionIsExceptionHandler)(nestedErrorHandler) ? nestedErrorHandler : void 0; } return errorHandler; } 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