From bab11180bd65bed8b5eccc6f09be0b9401e5cbca Mon Sep 17 00:00:00 2001 From: Manthan Mallikarjun Date: Thu, 23 May 2019 12:00:18 -0700 Subject: [PATCH 1/7] add initial code for netlify --- src/route.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/route.ts b/src/route.ts index 7ffffe2f..911fbc99 100644 --- a/src/route.ts +++ b/src/route.ts @@ -6,6 +6,7 @@ import { handleErrors } from 'micro-boom'; import bytes from 'bytes'; const isProd = process.env.NODE_ENV === 'production'; +const isNetlify = process.env.LIGHT_ENV === 'netlify'; let Youch: any; let forTerminal: any; @@ -132,6 +133,15 @@ export default (route: Route): Handler => { fn.module = __dirname; fn.handler = fn; + console.log('isNetlify', isNetlify) + if (isNetlify) { + const a = { + handler: AWSServerlessMicro(fn), + }; + console.log(a); + return a; + } + // TODO: Fix this /* istanbul ignore next */ const { LIGHT_ENVIRONMENT } = process.env; From 8bd750c89bf81bbce0207bc72c72617bebaaa27e Mon Sep 17 00:00:00 2001 From: Manthan Mallikarjun Date: Thu, 23 May 2019 13:15:24 -0700 Subject: [PATCH 2/7] remove debugging --- src/route.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/route.ts b/src/route.ts index 911fbc99..c77a9f94 100644 --- a/src/route.ts +++ b/src/route.ts @@ -133,13 +133,10 @@ export default (route: Route): Handler => { fn.module = __dirname; fn.handler = fn; - console.log('isNetlify', isNetlify) if (isNetlify) { - const a = { + return { handler: AWSServerlessMicro(fn), }; - console.log(a); - return a; } // TODO: Fix this From 4139277305f8f4d02e1a0d9d028c0f913ee3b36f Mon Sep 17 00:00:00 2001 From: Manthan Mallikarjun Date: Thu, 23 May 2019 17:17:43 -0700 Subject: [PATCH 3/7] disable all other handlers --- src/route.ts | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/route.ts b/src/route.ts index c77a9f94..065ccf38 100644 --- a/src/route.ts +++ b/src/route.ts @@ -133,27 +133,28 @@ export default (route: Route): Handler => { fn.module = __dirname; fn.handler = fn; - if (isNetlify) { + console.log(isNetlify) + if (true) { return { handler: AWSServerlessMicro(fn), }; } - // TODO: Fix this - /* istanbul ignore next */ - const { LIGHT_ENVIRONMENT } = process.env; - const isAWS: boolean = LIGHT_ENVIRONMENT === 'aws'; - /* istanbul ignore if */ - if (isAWS) { - return AWSServerlessMicro(fn); - } - - const isRunKit = !!(process.env.LIGHT_ENVIRONMENT && process.env.LIGHT_ENVIRONMENT.toLowerCase() === 'runkit'); - if (isRunKit) { - return { - endpoint: fn, - }; - } - - return fn; + // // TODO: Fix this + // /* istanbul ignore next */ + // const { LIGHT_ENVIRONMENT } = process.env; + // const isAWS: boolean = LIGHT_ENVIRONMENT === 'aws'; + // /* istanbul ignore if */ + // if (isAWS) { + // return AWSServerlessMicro(fn); + // } + + // const isRunKit = !!(process.env.LIGHT_ENVIRONMENT && process.env.LIGHT_ENVIRONMENT.toLowerCase() === 'runkit'); + // if (isRunKit) { + // return { + // endpoint: fn, + // }; + // } + + // return fn; }; From b674f915804a09dae3eb13041c6565742559f097 Mon Sep 17 00:00:00 2001 From: Manthan Mallikarjun Date: Fri, 24 May 2019 14:19:48 -0700 Subject: [PATCH 4/7] remove run wrapper for netlify and aws --- src/route.ts | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/route.ts b/src/route.ts index 065ccf38..f77534c4 100644 --- a/src/route.ts +++ b/src/route.ts @@ -5,8 +5,11 @@ import pino from 'pino-http'; import { handleErrors } from 'micro-boom'; import bytes from 'bytes'; -const isProd = process.env.NODE_ENV === 'production'; -const isNetlify = process.env.LIGHT_ENV === 'netlify'; +const { LIGHT_ENVIRONMENT, NODE_ENV } = process.env; +const isProd = NODE_ENV === 'production'; +const isNetlify = LIGHT_ENVIRONMENT === 'netlify'; +const isAWS = LIGHT_ENVIRONMENT === 'aws'; +const isRunKit = LIGHT_ENVIRONMENT === 'runkit'; let Youch: any; let forTerminal: any; @@ -122,7 +125,7 @@ export default (route: Route): Handler => { exec = plugins.reverse().reduce((acc, val): any => val(acc), exec); } - return run(Req, Res, exec); + return exec(Req, Res); }; Object.keys(route).forEach((key): void => { @@ -133,28 +136,17 @@ export default (route: Route): Handler => { fn.module = __dirname; fn.handler = fn; - console.log(isNetlify) - if (true) { + if (isNetlify || isAWS) { return { handler: AWSServerlessMicro(fn), }; } - // // TODO: Fix this - // /* istanbul ignore next */ - // const { LIGHT_ENVIRONMENT } = process.env; - // const isAWS: boolean = LIGHT_ENVIRONMENT === 'aws'; - // /* istanbul ignore if */ - // if (isAWS) { - // return AWSServerlessMicro(fn); - // } - - // const isRunKit = !!(process.env.LIGHT_ENVIRONMENT && process.env.LIGHT_ENVIRONMENT.toLowerCase() === 'runkit'); - // if (isRunKit) { - // return { - // endpoint: fn, - // }; - // } - - // return fn; + if (isRunKit) { + return { + endpoint: async (req: IM, res: SR): AP => run(req, res, fn), + }; + } + + return async (req: IM, res: SR): AP => run(req, res, fn); }; From 3f94ab2ee70e440a3b46e3d8befcd644ce98dec9 Mon Sep 17 00:00:00 2001 From: Manthan Mallikarjun Date: Fri, 24 May 2019 16:52:59 -0700 Subject: [PATCH 5/7] fix tests --- src/route.ts | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/route.ts b/src/route.ts index f77534c4..4d6d8e0c 100644 --- a/src/route.ts +++ b/src/route.ts @@ -93,7 +93,7 @@ const youchErrors = (fun: any): any => async (req: IM, res: SR): Promise = }; export default (route: Route): Handler => { - const fn = async (Req: IM, Res: SR): AP => { + let fn = async (Req: IM, Res: SR): AP => { let exec = async (req: IM, res: SR): AP => { const middleware: any[] = route.middleware || []; @@ -110,9 +110,9 @@ export default (route: Route): Handler => { const plugins = route.plugins || []; - if (fn.log !== false) { + if ((fn as any).log !== false) { plugins.unshift(logger); - fn.log = false; + (fn as any).log = false; } if (!isProd) { @@ -128,14 +128,20 @@ export default (route: Route): Handler => { return exec(Req, Res); }; + + Object.keys(route).forEach((key): void => { (fn as any)[key] = (route as any)[key]; }); - fn.log = true; - fn.module = __dirname; - fn.handler = fn; + (fn as any).log = true; + (fn as any).module = __dirname; + (fn as any).handler = fn; + if (!isNetlify && !isAWS) { + (fn as any).handler = async (req: IM, res: SR): AP => run(req, res, fn) + } + /* istanbul ignore if */ if (isNetlify || isAWS) { return { handler: AWSServerlessMicro(fn), @@ -144,9 +150,9 @@ export default (route: Route): Handler => { if (isRunKit) { return { - endpoint: async (req: IM, res: SR): AP => run(req, res, fn), + endpoint: fn, }; } - return async (req: IM, res: SR): AP => run(req, res, fn); + return fn; }; From 5a8a4282dece915db7b3d45139d33a8eac06e6fc Mon Sep 17 00:00:00 2001 From: Manthan Mallikarjun Date: Fri, 24 May 2019 16:53:27 -0700 Subject: [PATCH 6/7] lint code --- src/route.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/route.ts b/src/route.ts index 4d6d8e0c..106d7156 100644 --- a/src/route.ts +++ b/src/route.ts @@ -93,7 +93,7 @@ const youchErrors = (fun: any): any => async (req: IM, res: SR): Promise = }; export default (route: Route): Handler => { - let fn = async (Req: IM, Res: SR): AP => { + const fn = async (Req: IM, Res: SR): AP => { let exec = async (req: IM, res: SR): AP => { const middleware: any[] = route.middleware || []; @@ -129,7 +129,6 @@ export default (route: Route): Handler => { }; - Object.keys(route).forEach((key): void => { (fn as any)[key] = (route as any)[key]; }); @@ -138,7 +137,7 @@ export default (route: Route): Handler => { (fn as any).module = __dirname; (fn as any).handler = fn; if (!isNetlify && !isAWS) { - (fn as any).handler = async (req: IM, res: SR): AP => run(req, res, fn) + (fn as any).handler = async (req: IM, res: SR): AP => run(req, res, fn); } /* istanbul ignore if */ From 7af49675e05cfc9ece5c25966cc76276d28cbc02 Mon Sep 17 00:00:00 2001 From: Manthan Mallikarjun Date: Fri, 24 May 2019 23:35:14 -0700 Subject: [PATCH 7/7] update tests --- package-lock.json | 39 ++++++++++++++++++++++++--------------- package.json | 8 ++++---- src/route.ts | 4 ++++ 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7a6d2df0..86d99ff9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { - "name": "light", - "version": "0.0.0-development", + "name": "light-test-netlify", + "version": "0.0.10", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -169,6 +169,11 @@ "minimist": "^1.2.0" } }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, "@jest/console": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", @@ -1069,11 +1074,6 @@ "hoek": "4.x.x" } }, - "bourne": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/bourne/-/bourne-1.1.2.tgz", - "integrity": "sha512-b2dgVkTZhkQirNMohgC00rWfpVqEi9y5tKM1k3JvoNx05ODtfQoPPd4js9CYFQoY0IM8LAmnJulEuWv74zjUOg==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1890,9 +1890,9 @@ } }, "eslint-plugin-import": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.2.tgz", - "integrity": "sha512-m+cSVxM7oLsIpmwNn2WXTJoReOF9f/CtLMo7qOVmKd1KntBy0hEcuNZ3erTmWjx+DxRO0Zcrm5KwAvI9wHcV5g==", + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz", + "integrity": "sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -1905,7 +1905,7 @@ "lodash": "^4.17.11", "minimatch": "^3.0.4", "read-pkg-up": "^2.0.0", - "resolve": "^1.10.0" + "resolve": "^1.11.0" }, "dependencies": { "debug": { @@ -2032,6 +2032,15 @@ "find-up": "^2.0.0", "read-pkg": "^2.0.0" } + }, + "resolve": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } } } }, @@ -5012,12 +5021,12 @@ } }, "pino-pretty": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-3.0.0.tgz", - "integrity": "sha512-OQCKEit08mVgTQbxBZHScNiwdodJIPgxKFPIStQBZXj09yg94h4OHsbgFCotwn7Ew26ASTbaW4CzWFpsBeynhA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-3.0.1.tgz", + "integrity": "sha512-DIGOIzkD9aSHLPXZOw3o6dfz/6pgAqQE8dDHsc1YbyEHY7mJFV25O/gEnWctqGBGzNkKqoFdEAGhrDaoaeptqw==", "requires": { + "@hapi/bourne": "^1.3.2", "args": "^5.0.1", - "bourne": "^1.1.2", "chalk": "^2.4.2", "dateformat": "^3.0.3", "fast-safe-stringify": "^2.0.6", diff --git a/package.json b/package.json index b4a0a11b..cc04a81e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "light", - "version": "0.0.0-development", + "name": "light-test-netlify", + "version": "0.0.10", "description": "a modern framework", "scripts": { "test": "npm run lint && npm run jest:ci", @@ -47,7 +47,7 @@ "micro-http-router-query-params": "^1.4.0", "micromatch": "^4.0.2", "pino-http": "^4.2.0", - "pino-pretty": "^3.0.0", + "pino-pretty": "^3.0.1", "signale": "^1.4.0", "yargs": "^13.2.4", "youch": "^2.0.10", @@ -71,7 +71,7 @@ "coveralls": "^3.0.3", "eslint": "^5.16.0", "eslint-config-airbnb-base": "^13.1.0", - "eslint-plugin-import": "^2.17.2", + "eslint-plugin-import": "^2.17.3", "eslint-plugin-jest": "^22.6.4", "jest": "^24.8.0", "node-fetch": "^2.6.0", diff --git a/src/route.ts b/src/route.ts index 106d7156..a09b6fe7 100644 --- a/src/route.ts +++ b/src/route.ts @@ -13,6 +13,8 @@ const isRunKit = LIGHT_ENVIRONMENT === 'runkit'; let Youch: any; let forTerminal: any; + +/* istanbul ignore next */ if (!isProd) { Youch = require('youch'); // eslint-disable-line forTerminal = require('youch-terminal'); // eslint-disable-line @@ -115,6 +117,7 @@ export default (route: Route): Handler => { (fn as any).log = false; } + /* istanbul ignore next */ if (!isProd) { plugins.unshift(youchErrors); } @@ -136,6 +139,7 @@ export default (route: Route): Handler => { (fn as any).log = true; (fn as any).module = __dirname; (fn as any).handler = fn; + /* istanbul ignore next */ if (!isNetlify && !isAWS) { (fn as any).handler = async (req: IM, res: SR): AP => run(req, res, fn); }