UNPKG

1.9 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6exports.withServerless = void 0;
7const aws_serverless_micro_1 = __importDefault(require("aws-serverless-micro"));
8const micro_1 = require("micro");
9const apply_middleware_1 = require("./utils/apply-middleware");
10const request_handler_1 = require("./utils/request-handler");
11const { LIGHT_ENV } = process.env;
12const isNetlify = LIGHT_ENV === 'netlify';
13const isAWS = LIGHT_ENV === 'aws';
14const isRunKit = LIGHT_ENV === 'runkit';
15const isNow = LIGHT_ENV === 'now';
16const isServerless = isNetlify || isAWS || isRunKit || isNow;
17exports.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};