turtle-express
Version:
`turtle-express` is kinda a framework or a library based on `express.js` with an opinionated express router with type safety and schema validation with zod. Also many [more features](https://github.com/mm-ninja-turtles/turtle-express/discussions/7) planni
45 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createPath = void 0;
const create_handler_1 = require("../handler/create-handler");
function createPath(_path, _options) {
const _handlers = [];
return {
_path,
_handlers,
_openApi: _options?.openApi,
path: (_subPath, _subOptions) => {
const path = (_path + _subPath);
return createPath(path, _subOptions);
},
handler(_handlerOptions) {
// generate handler
const _handlerInfo = (0, create_handler_1.createHandler)(_handlerOptions);
// add handler to path context
_handlers.push({
_id: _handlerInfo._id,
_method: _handlerOptions.method,
_middlewares: [],
_getOpenApiSchemas: _handlerInfo._getOpenApiSchemas,
_getOpenApiPathItem: _handlerInfo._getOpenApiPathItem,
});
// get currently pushed handler
const currentHandler = _handlers.find((handle) => handle._id === _handlerInfo._id);
// if currently push handler exist
if (currentHandler) {
// 1. add path level middlewares to handler first
_options?.middlewares?.forEach((middleware) => {
currentHandler._middlewares.push(middleware);
});
// 2. add handler level middlewares
_handlerInfo._middlewares.forEach((middleware) => {
currentHandler._middlewares.push(middleware);
});
// 3. add handler to path context
currentHandler._middlewares.push(_handlerInfo._handlerFunc);
}
},
};
}
exports.createPath = createPath;
//# sourceMappingURL=create-path.js.map