file-routing-expressjs
Version:
A dependency-free, flexible, system-based file routing for Express.
134 lines • 5.21 kB
JavaScript
;
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