1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | exports.withServerless = void 0;
|
7 | const aws_serverless_micro_1 = __importDefault(require("aws-serverless-micro"));
|
8 | const micro_1 = require("micro");
|
9 | const apply_middleware_1 = require("./utils/apply-middleware");
|
10 | const request_handler_1 = require("./utils/request-handler");
|
11 | const { LIGHT_ENV } = process.env;
|
12 | const isNetlify = LIGHT_ENV === 'netlify';
|
13 | const isAWS = LIGHT_ENV === 'aws';
|
14 | const isRunKit = LIGHT_ENV === 'runkit';
|
15 | const isNow = LIGHT_ENV === 'now';
|
16 | const isServerless = isNetlify || isAWS || isRunKit || isNow;
|
17 | exports.withServerless = (route) => {
|
18 | if (!route) {
|
19 | throw new Error('nothing was exported');
|
20 | }
|
21 | const routeHandler = (req, res) => {
|
22 | const method = req.method || 'GET';
|
23 | const routeMethod = route[method];
|
24 | if (!routeMethod) {
|
25 | throw micro_1.createError(404, 'Not Found');
|
26 | }
|
27 | const { handler, middleware } = routeMethod;
|
28 | const mw = [...(route.middleware || []), ...(middleware || [])];
|
29 | const appliedHandler = apply_middleware_1.applyMiddleware(mw, handler);
|
30 | const requestHandler = request_handler_1.requestHandlerWrapper(appliedHandler);
|
31 | return requestHandler(req, res, {}, null);
|
32 | };
|
33 | let fn = routeHandler;
|
34 | if (isServerless) {
|
35 | if (isNow) {
|
36 | fn = (req, res) => micro_1.run(req, res, routeHandler);
|
37 | }
|
38 | if (isNetlify || isAWS) {
|
39 | fn = {
|
40 | handler: aws_serverless_micro_1.default(routeHandler),
|
41 | };
|
42 | }
|
43 | if (isRunKit) {
|
44 | fn = {
|
45 | endpoint: (req, res) => micro_1.run(req, res, routeHandler),
|
46 | };
|
47 | }
|
48 | }
|
49 | return fn;
|
50 | };
|