UNPKG

3.43 kBJavaScriptView Raw
1"use strict";
2var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3 if (k2 === undefined) k2 = k;
4 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5}) : (function(o, m, k, k2) {
6 if (k2 === undefined) k2 = k;
7 o[k2] = m[k];
8}));
9var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10 Object.defineProperty(o, "default", { enumerable: true, value: v });
11}) : function(o, v) {
12 o["default"] = v;
13});
14var __importStar = (this && this.__importStar) || function (mod) {
15 if (mod && mod.__esModule) return mod;
16 var result = {};
17 if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18 __setModuleDefault(result, mod);
19 return result;
20};
21var __importDefault = (this && this.__importDefault) || function (mod) {
22 return (mod && mod.__esModule) ? mod : { "default": mod };
23};
24Object.defineProperty(exports, "__esModule", { value: true });
25exports.createServer = void 0;
26const micro_1 = __importStar(require("micro"));
27const find_my_way_1 = __importDefault(require("find-my-way"));
28const path_1 = require("path");
29const import_config_1 = require("./utils/import-config");
30const gen_routes_1 = __importDefault(require("./utils/gen-routes"));
31const find_routes_1 = __importDefault(require("./utils/find-routes"));
32const inject_routes_1 = __importDefault(require("./utils/inject-routes"));
33const apply_middleware_1 = require("./utils/apply-middleware");
34const request_handler_1 = require("./utils/request-handler");
35exports.createServer = ({ youch = false, requestLogger = true, }) => {
36 /**
37 * IMPORTANT: We need to import the logging middleware at start-time
38 * since the ts-node loader wont be injected during the initial import
39 */
40 // eslint-disable-next-line global-require
41 const { requestLoggerMiddleware } = require('./middleware/logger');
42 // eslint-disable-next-line global-require
43 const { youchMiddleware } = require('./middleware/youch');
44 const middleware = [
45 ...(requestLogger ? [requestLoggerMiddleware] : []),
46 ...(youch ? [youchMiddleware] : []),
47 ];
48 // create find-my-way router with default 404 handler
49 const defaultRoute = request_handler_1.requestHandlerWrapper(apply_middleware_1.applyMiddleware(middleware, () => {
50 throw micro_1.createError(404, 'Not Found');
51 }));
52 const router = find_my_way_1.default({
53 ignoreTrailingSlash: true,
54 defaultRoute,
55 });
56 const cwd = process.cwd();
57 const config = import_config_1.importLightConfig();
58 const rootPath = path_1.join(cwd, config.root ? config.root : './');
59 const routeFiles = find_routes_1.default(rootPath);
60 const fillRouter = () => {
61 const generatedRoutes = gen_routes_1.default(routeFiles, rootPath);
62 inject_routes_1.default(router, generatedRoutes, { middleware });
63 return generatedRoutes;
64 };
65 const generatedRoutes = fillRouter();
66 // create the http server
67 const server = micro_1.default(async (req, res) => router.lookup(req, res));
68 return {
69 router,
70 generatedRoutes,
71 reload: () => {
72 // reset the router
73 router.reset();
74 // reimport routes
75 return fillRouter();
76 },
77 server,
78 };
79};