diff --git a/__tests__/unit.js b/__tests__/unit.js index cb693c5b..cb8675e7 100644 --- a/__tests__/unit.js +++ b/__tests__/unit.js @@ -4,7 +4,6 @@ const eventSources = require('../src/event-sources') const makeResolver = require('../src/make-resolver') const ServerlessRequest = require('../src/request') const ServerlessResponse = require('../src/response') -const expressFramework = require('../src/frameworks/express') const { log, MockContext } = require('../jest-helpers') const apiGatewayEventSource = eventSources.getEventSource({ eventSourceName: 'AWS_API_GATEWAY_V1' }) @@ -65,7 +64,7 @@ test('getPathWithQueryStringParams: array param', () => { expect(pathWithQueryStringParams).toEqual('/foo/bar?bizz=bazz&bizz=buzz') }) -function getRequestResponse (multiValueHeaders = {}) { +function getReqRes (multiValueHeaders = {}) { const event = { path: '/foo', httpMethod: 'GET', @@ -78,13 +77,13 @@ function getRequestResponse (multiValueHeaders = {}) { } } const requestValues = apiGatewayEventSource.getRequest({ event }) - const requestResponse = expressFramework.getRequestResponse(requestValues) + const requestResponse = serverlessExpressTransport.getRequestResponse(requestValues) return requestResponse } test('getRequestResponse: with headers', async (done) => { - const { request } = await getRequestResponse({ 'x-foo': ['foo'] }) + const { request } = await getReqRes({ 'x-foo': ['foo'] }) expect(request).toBeInstanceOf(ServerlessRequest) expect(request.body).toBeInstanceOf(Buffer) expect(request.body.toString('utf-8')).toEqual('Hello serverless!') @@ -99,7 +98,7 @@ test('getRequestResponse: with headers', async (done) => { }) test('getRequestResponse: without headers', async (done) => { - const requestResponse = await getRequestResponse() + const requestResponse = await getReqRes() expect(requestResponse.request).toBeInstanceOf(ServerlessRequest) expect(requestResponse.request.body).toBeInstanceOf(Buffer) expect(requestResponse.request.body.toString('utf-8')).toEqual('Hello serverless!') @@ -174,7 +173,7 @@ describe.skip('forwardResponse: content-type encoding', () => { test('content-type header missing', async (done) => { const binaryMimeTypes = [] const multiValueHeaders = { foo: ['bar'] } - const { requestResponse } = await getRequestResponse(multiValueHeaders) + const { requestResponse } = await getReqRes(multiValueHeaders) const response = new ServerlessResponse(requestResponse.request) return new Promise( (resolve) => { diff --git a/examples/alb/package-lock.json b/examples/alb/package-lock.json index d573f57b..cf9894fc 100644 --- a/examples/alb/package-lock.json +++ b/examples/alb/package-lock.json @@ -18,12 +18,9 @@ } }, "@vendia/serverless-express": { - "version": "4.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0-rc.5.tgz", - "integrity": "sha512-xgd7pcitDqsNC6vVsLPnZXYR22gkBAYs+3qfX5U+Hy/M1to93gJf2rvvaxicDwsSfYJgssEFgetSZZCuVW8WuA==", - "requires": { - "type-is": "^1.6.16" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0.tgz", + "integrity": "sha512-/BQ7sujcNthcJgGUH7USme9TTwur+pXKLR70JmAmatC8My6RFt4l64iIG2JFwz4FImoegNEQKh12+1UAxcnutw==" }, "accepts": { "version": "1.3.7", diff --git a/examples/alb/package.json b/examples/alb/package.json index 85a4d34e..8ff5d4ea 100644 --- a/examples/alb/package.json +++ b/examples/alb/package.json @@ -13,7 +13,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@vendia/serverless-express": "^4.0.0-rc.5", + "@vendia/serverless-express": "^4.0.0", "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1", @@ -22,4 +22,4 @@ "devDependencies": { "lodash": "^4.17.20" } -} +} \ No newline at end of file diff --git a/examples/basic-starter-api-gateway-v1/package-lock.json b/examples/basic-starter-api-gateway-v1/package-lock.json index 01ff2bba..4b7737c6 100644 --- a/examples/basic-starter-api-gateway-v1/package-lock.json +++ b/examples/basic-starter-api-gateway-v1/package-lock.json @@ -75,12 +75,9 @@ "dev": true }, "@vendia/serverless-express": { - "version": "4.0.0-rc.8", - "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0-rc.8.tgz", - "integrity": "sha512-H2hQ4prYiRQ64q/zfJ0TDXvKKkWROcWSo5RwlBfUokAHpGKNBAVinhFzRlLy2JkiR0Dx54HXyiXH7arcAtu+Lg==", - "requires": { - "type-is": "^1.6.16" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0.tgz", + "integrity": "sha512-/BQ7sujcNthcJgGUH7USme9TTwur+pXKLR70JmAmatC8My6RFt4l64iIG2JFwz4FImoegNEQKh12+1UAxcnutw==" }, "@webassemblyjs/ast": { "version": "1.11.0", @@ -270,6 +267,12 @@ "negotiator": "0.6.2" } }, + "acorn": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.5.tgz", + "integrity": "sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==", + "dev": true + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1226,16 +1229,16 @@ } }, "browserslist": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", - "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001173", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.634", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.69" + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1250,9 +1253,9 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "caniuse-lite": { - "version": "1.0.30001179", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz", - "integrity": "sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA==", + "version": "1.0.30001181", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001181.tgz", + "integrity": "sha512-m5ul/ARCX50JB8BSNM+oiPmQrR5UmngaQ3QThTTp5HcIIQGP/nPBs82BYLE+tigzm3VW+F4BJIhUyaVtEweelQ==", "dev": true }, "chalk": { @@ -1492,9 +1495,9 @@ } }, "electron-to-chromium": { - "version": "1.3.644", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz", - "integrity": "sha512-N7FLvjDPADxad+OXXBuYfcvDvCBG0aW8ZZGr7G91sZMviYbnQJFxdSvUus4SJ0K7Q8dzMxE+Wx1d/CrJIIJ0sw==", + "version": "1.3.649", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.649.tgz", + "integrity": "sha512-ojGDupQ3UMkvPWcTICe4JYe17+o9OLiFMPoduoR72Zp2ILt1mRVeqnxBEd6s/ptekrnsFU+0A4lStfBe/wyG/A==", "dev": true }, "emojis-list": { @@ -2812,24 +2815,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } } } }, @@ -2929,9 +2914,9 @@ } }, "webpack": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.17.0.tgz", - "integrity": "sha512-R+IdNEaYcYaACpXZOt7reyc8txBK7J06lOPkX1SbgmeoAnUbyBZivJIksrDBnmMA3wlTWvPcX7DubxELyPB8rA==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.19.0.tgz", + "integrity": "sha512-egX19vAQ8fZ4cVYtA9Y941eqJtcZAK68mQq87MMv+GTXKZOc3TpKBBxdGX+HXUYlquPxiluNsJ1VHvwwklW7CQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -2958,14 +2943,6 @@ "terser-webpack-plugin": "^5.1.1", "watchpack": "^2.0.0", "webpack-sources": "^2.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", - "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", - "dev": true - } } }, "webpack-cli": { diff --git a/examples/basic-starter-api-gateway-v1/package.json b/examples/basic-starter-api-gateway-v1/package.json index adc01305..979969d6 100644 --- a/examples/basic-starter-api-gateway-v1/package.json +++ b/examples/basic-starter-api-gateway-v1/package.json @@ -25,7 +25,7 @@ }, "license": "Apache-2.0", "dependencies": { - "@vendia/serverless-express": "^4.0.0-rc.8", + "@vendia/serverless-express": "^4.0.0", "body-parser": "^1.17.1", "compression": "^1.6.2", "cors": "^2.8.3", @@ -36,7 +36,7 @@ "copy-webpack-plugin": "^7.0.0", "cross-var": "^1.1.0", "source-map-support": "^0.5.19", - "webpack": "^5.11.1", + "webpack": "^5.19.0", "webpack-cli": "^4.3.1" } } diff --git a/examples/basic-starter-api-gateway-v2/package-lock.json b/examples/basic-starter-api-gateway-v2/package-lock.json index df550f4e..f7d52fe5 100644 --- a/examples/basic-starter-api-gateway-v2/package-lock.json +++ b/examples/basic-starter-api-gateway-v2/package-lock.json @@ -75,12 +75,9 @@ "dev": true }, "@vendia/serverless-express": { - "version": "4.0.0-rc.8", - "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0-rc.8.tgz", - "integrity": "sha512-H2hQ4prYiRQ64q/zfJ0TDXvKKkWROcWSo5RwlBfUokAHpGKNBAVinhFzRlLy2JkiR0Dx54HXyiXH7arcAtu+Lg==", - "requires": { - "type-is": "^1.6.16" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0.tgz", + "integrity": "sha512-/BQ7sujcNthcJgGUH7USme9TTwur+pXKLR70JmAmatC8My6RFt4l64iIG2JFwz4FImoegNEQKh12+1UAxcnutw==" }, "@webassemblyjs/ast": { "version": "1.11.0", @@ -1255,16 +1252,16 @@ } }, "browserslist": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", - "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001173", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.634", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.69" + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1279,9 +1276,9 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "caniuse-lite": { - "version": "1.0.30001179", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz", - "integrity": "sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA==", + "version": "1.0.30001181", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001181.tgz", + "integrity": "sha512-m5ul/ARCX50JB8BSNM+oiPmQrR5UmngaQ3QThTTp5HcIIQGP/nPBs82BYLE+tigzm3VW+F4BJIhUyaVtEweelQ==", "dev": true }, "chalk": { @@ -1510,9 +1507,9 @@ } }, "electron-to-chromium": { - "version": "1.3.645", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.645.tgz", - "integrity": "sha512-T7mYop3aDpRHIQaUYcmzmh6j9MAe560n6ukqjJMbVC6bVTau7dSpvB18bcsBPPtOSe10cKxhJFtlbEzLa0LL1g==", + "version": "1.3.649", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.649.tgz", + "integrity": "sha512-ojGDupQ3UMkvPWcTICe4JYe17+o9OLiFMPoduoR72Zp2ILt1mRVeqnxBEd6s/ptekrnsFU+0A4lStfBe/wyG/A==", "dev": true }, "emojis-list": { @@ -2901,9 +2898,9 @@ } }, "webpack": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.18.0.tgz", - "integrity": "sha512-RmiP/iy6ROvVe/S+u0TrvL/oOmvP+2+Bs8MWjvBwwY/j82Q51XJyDJ75m0QAGntL1Wx6B//Xc0+4VPP/hlNHmw==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.19.0.tgz", + "integrity": "sha512-egX19vAQ8fZ4cVYtA9Y941eqJtcZAK68mQq87MMv+GTXKZOc3TpKBBxdGX+HXUYlquPxiluNsJ1VHvwwklW7CQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", diff --git a/examples/basic-starter-api-gateway-v2/package.json b/examples/basic-starter-api-gateway-v2/package.json index 6ca9d606..e81637a1 100644 --- a/examples/basic-starter-api-gateway-v2/package.json +++ b/examples/basic-starter-api-gateway-v2/package.json @@ -25,7 +25,7 @@ }, "license": "Apache-2.0", "dependencies": { - "@vendia/serverless-express": "^4.0.0-rc.10", + "@vendia/serverless-express": "^4.0.0", "body-parser": "^1.17.1", "compression": "^1.6.2", "cors": "^2.8.3", @@ -36,7 +36,7 @@ "copy-webpack-plugin": "^7.0.0", "cross-var": "^1.1.0", "source-map-support": "^0.5.19", - "webpack": "^5.11.1", + "webpack": "^5.19.0", "webpack-cli": "^4.3.1" } } diff --git a/examples/basic-starter-hapi/package-lock.json b/examples/basic-starter-hapi/package-lock.json index 9b71f2aa..7f970c74 100644 --- a/examples/basic-starter-hapi/package-lock.json +++ b/examples/basic-starter-hapi/package-lock.json @@ -102,9 +102,9 @@ "integrity": "sha512-WSrlgpvEqgPWkI18kkGELEZfXr0bYLtr16iIN4Krh9sRnzBZN6nnWxHFxtsnP684wueEySBbXPDg/WfA9xJdBQ==" }, "@hapi/hapi": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.0.0.tgz", - "integrity": "sha512-Wh0tIDFsl7nemU2JQYW4zZVr9XkpuZ1eM3yaX8tzaYdaYXon8QeB5NzrTNQY3R1/+fO7amQUrOoLLNPRwIZfgw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.1.0.tgz", + "integrity": "sha512-DocLxRpPlHV0jEZw7FHfF/Y+tiRLNOXMcqEDGWdqfbQkDKo8ca3TLHRO4w91BKq1TDcM27w+MHZ1sINTDZyGRw==", "requires": { "@hapi/accept": "^5.0.1", "@hapi/ammo": "^5.0.1", @@ -194,9 +194,9 @@ } }, "@hapi/shot": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-5.0.4.tgz", - "integrity": "sha512-PcEz0WJgFDA3xNSMeONgQmothFr7jhbbRRSAKaDh7chN7zOXBlhl13bvKZW6CMb2xVfJUmt34CW3e/oExMgBhQ==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-5.0.5.tgz", + "integrity": "sha512-x5AMSZ5+j+Paa8KdfCoKh+klB78otxF+vcJR/IoN91Vo2e5ulXIW6HUsFTCU+4W6P/Etaip9nmdAx2zWDimB2A==", "requires": { "@hapi/hoek": "9.x.x", "@hapi/validate": "1.x.x" @@ -280,12 +280,9 @@ } }, "@vendia/serverless-express": { - "version": "4.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0-rc.5.tgz", - "integrity": "sha512-xgd7pcitDqsNC6vVsLPnZXYR22gkBAYs+3qfX5U+Hy/M1to93gJf2rvvaxicDwsSfYJgssEFgetSZZCuVW8WuA==", - "requires": { - "type-is": "^1.6.16" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0.tgz", + "integrity": "sha512-/BQ7sujcNthcJgGUH7USme9TTwur+pXKLR70JmAmatC8My6RFt4l64iIG2JFwz4FImoegNEQKh12+1UAxcnutw==" }, "ansi-regex": { "version": "2.1.1", @@ -1340,31 +1337,11 @@ "yallist": "^2.1.2" } }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, "mime-db": { "version": "1.45.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" }, - "mime-types": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", - "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", - "requires": { - "mime-db": "1.45.0" - }, - "dependencies": { - "mime-db": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", - "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" - } - } - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1558,15 +1535,6 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/examples/basic-starter-hapi/package.json b/examples/basic-starter-hapi/package.json index 09a3eceb..0831e497 100644 --- a/examples/basic-starter-hapi/package.json +++ b/examples/basic-starter-hapi/package.json @@ -24,8 +24,8 @@ }, "license": "Apache-2.0", "dependencies": { - "@hapi/hapi": "^20.0.0", - "@vendia/serverless-express": "^4.0.0-rc.5" + "@hapi/hapi": "^20.1.0", + "@vendia/serverless-express": "^4.0.0" }, "devDependencies": { "cross-var": "^1.1.0" diff --git a/examples/basic-starter-hapi/src/lambda.js b/examples/basic-starter-hapi/src/lambda.js index 39440a87..698ab49c 100644 --- a/examples/basic-starter-hapi/src/lambda.js +++ b/examples/basic-starter-hapi/src/lambda.js @@ -1,15 +1,5 @@ -const serverlessExpress = require(process.env.NODE_ENV === 'test' ? '../../index' : '@vendia/serverless-express') +require('source-map-support/register') +const serverlessExpress = require('@vendia/serverless-express') const app = require('./app') -// NOTE: If you get ERR_CONTENT_DECODING_FAILED in your browser, this is likely -// due to a compressed response (e.g. gzip) which has not been handled correctly -// by serverless-express and/or API Gateway. Add the necessary MIME types to -// binaryMimeTypes below, then redeploy (`npm run package-deploy`) -const binaryMimeTypes = [ - // '*/*' -] -const se = serverlessExpress.configure({ - app, - binaryMimeTypes -}) -exports.handler = se.handler +exports.handler = serverlessExpress({ app }).handler diff --git a/examples/basic-starter-koa/app.local.js b/examples/basic-starter-koa/app.local.js index b6bdd8c4..bedbe560 100644 --- a/examples/basic-starter-koa/app.local.js +++ b/examples/basic-starter-koa/app.local.js @@ -1,5 +1,4 @@ const app = require('./src/app') const port = 3000 - app.listen(port) console.info(`listening on http://localhost:${port}`) diff --git a/examples/basic-starter-koa/package-lock.json b/examples/basic-starter-koa/package-lock.json index 99a3b493..a81f3a68 100644 --- a/examples/basic-starter-koa/package-lock.json +++ b/examples/basic-starter-koa/package-lock.json @@ -5,12 +5,9 @@ "requires": true, "dependencies": { "@vendia/serverless-express": { - "version": "4.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0-rc.5.tgz", - "integrity": "sha512-xgd7pcitDqsNC6vVsLPnZXYR22gkBAYs+3qfX5U+Hy/M1to93gJf2rvvaxicDwsSfYJgssEFgetSZZCuVW8WuA==", - "requires": { - "type-is": "^1.6.16" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0.tgz", + "integrity": "sha512-/BQ7sujcNthcJgGUH7USme9TTwur+pXKLR70JmAmatC8My6RFt4l64iIG2JFwz4FImoegNEQKh12+1UAxcnutw==" }, "accepts": { "version": "1.3.7", @@ -958,12 +955,19 @@ } }, "cookies": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.3.tgz", - "integrity": "sha512-+gixgxYSgQLTaTIilDHAdlNPZDENDQernEMiIcZpYYP14zgHsCt4Ce1FEjFtcp6GefhozebB6orvhAAWx/IS0A==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", "requires": { - "depd": "~1.1.2", - "keygrip": "~1.0.3" + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } } }, "core-js": { @@ -1045,10 +1049,10 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, - "error-inject": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz", - "integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=" + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "escape-html": { "version": "1.0.3", @@ -1145,9 +1149,9 @@ "dev": true }, "is-generator-function": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", - "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", + "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==" }, "isexe": { "version": "2.0.0", @@ -1174,25 +1178,28 @@ "dev": true }, "keygrip": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.3.tgz", - "integrity": "sha512-/PpesirAIfaklxUzp4Yb7xBper9MwP6hNRA6BGGUFCgbJ+BM5CKBtsoxinNXkLHAr+GXS1/lSlF2rP7cv5Fl+g==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "requires": { + "tsscmp": "1.0.6" + } }, "koa": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.7.0.tgz", - "integrity": "sha512-7ojD05s2Q+hFudF8tDLZ1CpCdVZw8JQELWSkcfG9bdtoTDzMmkRF6BQBU7JzIzCCOY3xd3tftiy/loHBUYaY2Q==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.1.tgz", + "integrity": "sha512-Lb2Dloc72auj5vK4X4qqL7B5jyDPQaZucc9sR/71byg7ryoD1NCaCm63CShk9ID9quQvDEi1bGR/iGjCG7As3w==", "requires": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", "content-disposition": "~0.5.2", "content-type": "^1.0.4", - "cookies": "~0.7.1", + "cookies": "~0.8.0", "debug": "~3.1.0", "delegates": "^1.0.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "destroy": "^1.0.4", - "error-inject": "^1.0.0", + "encodeurl": "^1.0.2", "escape-html": "^1.0.3", "fresh": "~0.5.2", "http-assert": "^1.3.0", @@ -1200,13 +1207,19 @@ "is-generator-function": "^1.0.7", "koa-compose": "^4.1.0", "koa-convert": "^1.2.0", - "koa-is-json": "^1.0.0", "on-finished": "^2.3.0", "only": "~0.0.2", "parseurl": "^1.3.2", "statuses": "^1.5.0", "type-is": "^1.6.16", "vary": "^1.1.2" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } } }, "koa-compose": { @@ -1233,11 +1246,6 @@ } } }, - "koa-is-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", - "integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=" - }, "koa-router": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-7.4.0.tgz", @@ -1297,16 +1305,16 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" }, "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", "requires": { - "mime-db": "1.40.0" + "mime-db": "1.45.0" } }, "minimatch": { @@ -1548,6 +1556,11 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", diff --git a/examples/basic-starter-koa/package.json b/examples/basic-starter-koa/package.json index 631f01db..84b6efda 100644 --- a/examples/basic-starter-koa/package.json +++ b/examples/basic-starter-koa/package.json @@ -24,8 +24,8 @@ }, "license": "Apache-2.0", "dependencies": { - "@vendia/serverless-express": "^4.0.0-rc.5", - "koa": "^2.7.0", + "@vendia/serverless-express": "^4.0.0", + "koa": "^2.13.1", "koa-router": "^7.4.0" }, "devDependencies": { diff --git a/examples/basic-starter-koa/src/app.js b/examples/basic-starter-koa/src/app.js index 4e00ae32..eecbee43 100644 --- a/examples/basic-starter-koa/src/app.js +++ b/examples/basic-starter-koa/src/app.js @@ -12,4 +12,4 @@ app .use(router.routes()) .use(router.allowedMethods()) -module.exports = app.callback() +module.exports = app diff --git a/examples/basic-starter-koa/src/lambda.js b/examples/basic-starter-koa/src/lambda.js index 39440a87..698ab49c 100644 --- a/examples/basic-starter-koa/src/lambda.js +++ b/examples/basic-starter-koa/src/lambda.js @@ -1,15 +1,5 @@ -const serverlessExpress = require(process.env.NODE_ENV === 'test' ? '../../index' : '@vendia/serverless-express') +require('source-map-support/register') +const serverlessExpress = require('@vendia/serverless-express') const app = require('./app') -// NOTE: If you get ERR_CONTENT_DECODING_FAILED in your browser, this is likely -// due to a compressed response (e.g. gzip) which has not been handled correctly -// by serverless-express and/or API Gateway. Add the necessary MIME types to -// binaryMimeTypes below, then redeploy (`npm run package-deploy`) -const binaryMimeTypes = [ - // '*/*' -] -const se = serverlessExpress.configure({ - app, - binaryMimeTypes -}) -exports.handler = se.handler +exports.handler = serverlessExpress({ app }).handler diff --git a/examples/custom-mapper-dynamodb/package-lock.json b/examples/custom-mapper-dynamodb/package-lock.json index 3a5f39d3..8812b5a5 100644 --- a/examples/custom-mapper-dynamodb/package-lock.json +++ b/examples/custom-mapper-dynamodb/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@types/babel-types": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", - "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==" + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.9.tgz", + "integrity": "sha512-qZLoYeXSTgQuK1h7QQS16hqLGdmqtRmN8w/rl3Au/l5x/zkHx+a4VHrHyBsi1I1vtK2oBHxSzKIu0R5p6spdOA==" }, "@types/babylon": { "version": "6.16.5", @@ -18,12 +18,9 @@ } }, "@vendia/serverless-express": { - "version": "4.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0-rc.5.tgz", - "integrity": "sha512-xgd7pcitDqsNC6vVsLPnZXYR22gkBAYs+3qfX5U+Hy/M1to93gJf2rvvaxicDwsSfYJgssEFgetSZZCuVW8WuA==", - "requires": { - "type-is": "^1.6.16" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0.tgz", + "integrity": "sha512-/BQ7sujcNthcJgGUH7USme9TTwur+pXKLR70JmAmatC8My6RFt4l64iIG2JFwz4FImoegNEQKh12+1UAxcnutw==" }, "accepts": { "version": "1.3.7", @@ -144,9 +141,9 @@ } }, "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "requires": { "source-map": "~0.6.0" } @@ -173,9 +170,12 @@ } }, "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } }, "content-type": { "version": "1.0.4", @@ -183,9 +183,9 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, "cookie-signature": { "version": "1.0.6", @@ -193,9 +193,9 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" }, "cors": { "version": "2.8.5", @@ -250,9 +250,9 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", @@ -260,130 +260,54 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { - "accepts": "~1.3.5", + "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", "content-type": "~1.0.4", - "cookie": "0.3.1", + "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.1.1", + "finalhandler": "~1.1.2", "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" - }, - "dependencies": { - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - } } }, "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", "unpipe": "~1.0.0" - }, - "dependencies": { - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - } } }, "forwarded": { @@ -409,6 +333,11 @@ "function-bind": "^1.1.1" } }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -435,15 +364,23 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "requires": { + "has": "^1.0.3" + } + }, "is-expression": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", @@ -461,16 +398,16 @@ } }, "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "requires": { - "has": "^1.0.1" + "has-symbols": "^1.0.1" } }, "js-stringify": { @@ -526,9 +463,9 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.40.0", @@ -590,127 +527,127 @@ } }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" } }, "pug": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", - "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", + "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", "requires": { - "pug-code-gen": "^2.0.1", - "pug-filters": "^3.1.0", - "pug-lexer": "^4.0.0", - "pug-linker": "^3.0.5", - "pug-load": "^2.0.11", - "pug-parser": "^5.0.0", - "pug-runtime": "^2.0.4", - "pug-strip-comments": "^1.0.3" + "pug-code-gen": "^2.0.2", + "pug-filters": "^3.1.1", + "pug-lexer": "^4.1.0", + "pug-linker": "^3.0.6", + "pug-load": "^2.0.12", + "pug-parser": "^5.0.1", + "pug-runtime": "^2.0.5", + "pug-strip-comments": "^1.0.4" } }, "pug-attrs": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz", - "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", + "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", "requires": { "constantinople": "^3.0.1", "js-stringify": "^1.0.1", - "pug-runtime": "^2.0.4" + "pug-runtime": "^2.0.5" } }, "pug-code-gen": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", - "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", + "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", "requires": { - "constantinople": "^3.0.1", + "constantinople": "^3.1.2", "doctypes": "^1.1.0", "js-stringify": "^1.0.1", - "pug-attrs": "^2.0.3", - "pug-error": "^1.3.2", - "pug-runtime": "^2.0.4", + "pug-attrs": "^2.0.4", + "pug-error": "^1.3.3", + "pug-runtime": "^2.0.5", "void-elements": "^2.0.1", "with": "^5.0.0" } }, "pug-error": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz", - "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==" }, "pug-filters": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", - "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", + "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", "requires": { "clean-css": "^4.1.11", "constantinople": "^3.0.1", "jstransformer": "1.0.0", - "pug-error": "^1.3.2", - "pug-walk": "^1.1.7", + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8", "resolve": "^1.1.6", "uglify-js": "^2.6.1" } }, "pug-lexer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", - "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", + "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", "requires": { "character-parser": "^2.1.1", "is-expression": "^3.0.0", - "pug-error": "^1.3.2" + "pug-error": "^1.3.3" } }, "pug-linker": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", - "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", + "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", "requires": { - "pug-error": "^1.3.2", - "pug-walk": "^1.1.7" + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8" } }, "pug-load": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz", - "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", + "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", "requires": { "object-assign": "^4.1.0", - "pug-walk": "^1.1.7" + "pug-walk": "^1.1.8" } }, "pug-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", - "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", + "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", "requires": { - "pug-error": "^1.3.2", + "pug-error": "^1.3.3", "token-stream": "0.0.1" } }, "pug-runtime": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz", - "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g=" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==" }, "pug-strip-comments": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz", - "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", + "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", "requires": { - "pug-error": "^1.3.2" + "pug-error": "^1.3.3" } }, "pug-walk": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.7.tgz", - "integrity": "sha1-wA1cUSi6xYBr7BXSt+fNq+QlMfM=" + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==" }, "qs": { "version": "6.7.0", @@ -744,10 +681,11 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "resolve": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", - "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "requires": { + "is-core-module": "^2.1.0", "path-parse": "^1.0.6" } }, @@ -770,9 +708,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -781,46 +719,30 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.17.1" } }, "setprototypeof": { diff --git a/examples/custom-mapper-dynamodb/package.json b/examples/custom-mapper-dynamodb/package.json index 150b9ac8..2cf91431 100644 --- a/examples/custom-mapper-dynamodb/package.json +++ b/examples/custom-mapper-dynamodb/package.json @@ -13,10 +13,10 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@vendia/serverless-express": "^4.0.0-rc.5", + "@vendia/serverless-express": "^4.0.0", "body-parser": "^1.19.0", "cors": "^2.8.5", - "express": "^4.16.4", - "pug": "^2.0.3" + "express": "^4.17.1", + "pug": "^2.0.4" } } diff --git a/examples/custom-mapper-dynamodb/local.js b/examples/custom-mapper-dynamodb/scripts/local.js similarity index 86% rename from examples/custom-mapper-dynamodb/local.js rename to examples/custom-mapper-dynamodb/scripts/local.js index ce99c2d4..d94f5d72 100644 --- a/examples/custom-mapper-dynamodb/local.js +++ b/examples/custom-mapper-dynamodb/scripts/local.js @@ -1,5 +1,5 @@ -const lambdaFunction = require('./src/lambda.js') -const albEvent = require('./dynamodb-event.json') +const lambdaFunction = require('../src/lambda.js') +const albEvent = require('../dynamodb-event.json') const server = lambdaFunction.handler(albEvent, {}) .then(v => { diff --git a/examples/custom-mapper-dynamodb/src/lambda.js b/examples/custom-mapper-dynamodb/src/lambda.js index ef082042..b13df774 100644 --- a/examples/custom-mapper-dynamodb/src/lambda.js +++ b/examples/custom-mapper-dynamodb/src/lambda.js @@ -1,13 +1,12 @@ +require('source-map-support/register') const serverlessExpress = require('@vendia/serverless-express') const app = require('./app') const { mapDynamoDbEventToHttpRequest, mapResponseToDynamoDb } = require('./dynamodb-event-mappings') -const se = serverlessExpress.configure({ +exports.handler = serverlessExpress({ app, eventSource: { getRequest: mapDynamoDbEventToHttpRequest, getResponse: mapResponseToDynamoDb } -}) - -exports.handler = se.handler +}).handler diff --git a/examples/lambda-edge/package-lock.json b/examples/lambda-edge/package-lock.json index e860ac5e..19dac99f 100644 --- a/examples/lambda-edge/package-lock.json +++ b/examples/lambda-edge/package-lock.json @@ -57,9 +57,9 @@ } }, "@types/estree": { - "version": "0.0.45", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", - "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", "dev": true }, "@types/json-schema": { @@ -69,18 +69,15 @@ "dev": true }, "@types/node": { - "version": "14.14.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.21.tgz", - "integrity": "sha512-cHYfKsnwllYhjOzuC5q1VpguABBeecUp24yFluHpn/BQaVxB1CuQ1FSRZCzrPxrkIfWISXV2LbeoBthLWg0+0A==", + "version": "14.14.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz", + "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==", "dev": true }, "@vendia/serverless-express": { - "version": "4.0.0-rc.7", - "resolved": "/home/brett/projects/serverless-express/examples/lambda-edge/vendia-serverless-express-4.0.0-rc.7.tgz", - "integrity": "sha512-PRFCZIw36ohl7Z7ltYpIWGKxIdDm06ozgXFiiB9Vkp9zGsmbiyo3jBJ7E77OwJxY007GbY3+s/7QAgYFdgLnOA==", - "requires": { - "type-is": "^1.6.16" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0.tgz", + "integrity": "sha512-/BQ7sujcNthcJgGUH7USme9TTwur+pXKLR70JmAmatC8My6RFt4l64iIG2JFwz4FImoegNEQKh12+1UAxcnutw==" }, "@webassemblyjs/ast": { "version": "1.11.0", @@ -228,6 +225,12 @@ "@xtuc/long": "4.2.2" } }, + "@webpack-cli/configtest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.0.tgz", + "integrity": "sha512-Un0SdBoN1h4ACnIO7EiCjWuyhNI0Jl96JC+63q6xi4HDUYRZn8Auluea9D+v9NWKc5J4sICVEltdBaVjLX39xw==", + "dev": true + }, "@webpack-cli/info": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.1.tgz", @@ -238,9 +241,9 @@ } }, "@webpack-cli/serve": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.1.tgz", - "integrity": "sha512-Zj1z6AyS+vqV6Hfi7ngCjFGdHV5EwZNIHo6QfFTNe9PyW+zBU1zJ9BiOW1pmUEq950RC4+Dym6flyA/61/vhyw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.2.tgz", + "integrity": "sha512-03GkWxcgFfm8+WIwcsqJb9agrSDNDDoxaNnexPnCCexP5SCE4IgFd9lNpSy+K2nFqVMpgTFw6SwbmVAVTndVew==", "dev": true }, "@xtuc/ieee754": { @@ -264,6 +267,12 @@ "negotiator": "0.6.2" } }, + "acorn": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.5.tgz", + "integrity": "sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==", + "dev": true + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1237,16 +1246,16 @@ } }, "browserslist": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", - "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001173", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.634", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.69" + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -1261,9 +1270,9 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "caniuse-lite": { - "version": "1.0.30001177", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001177.tgz", - "integrity": "sha512-6Ld7t3ifCL02jTj3MxPMM5wAYjbo4h/TAQGFTgv1inihP1tWnWp8mxxT4ut4JBEHLbpFXEXJJQ119JCJTBkYDw==", + "version": "1.0.30001181", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001181.tgz", + "integrity": "sha512-m5ul/ARCX50JB8BSNM+oiPmQrR5UmngaQ3QThTTp5HcIIQGP/nPBs82BYLE+tigzm3VW+F4BJIhUyaVtEweelQ==", "dev": true }, "chalk": { @@ -1285,6 +1294,17 @@ "tslib": "^1.9.0" } }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -1481,9 +1501,9 @@ } }, "electron-to-chromium": { - "version": "1.3.639", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.639.tgz", - "integrity": "sha512-bwl6/U6xb3d3CNufQU9QeO1L32ueouFwW4bWANSwdXR7LVqyLzWjNbynoKNfuC38QFB5Qn7O0l2KLqBkcXnC3Q==", + "version": "1.3.649", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.649.tgz", + "integrity": "sha512-ojGDupQ3UMkvPWcTICe4JYe17+o9OLiFMPoduoR72Zp2ILt1mRVeqnxBEd6s/ptekrnsFU+0A4lStfBe/wyG/A==", "dev": true }, "emojis-list": { @@ -2028,6 +2048,15 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -2040,6 +2069,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "jake": { "version": "10.8.2", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", @@ -2109,6 +2144,12 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -2272,9 +2313,9 @@ "dev": true }, "node-releases": { - "version": "1.1.69", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz", - "integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==", + "version": "1.1.70", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz", + "integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==", "dev": true }, "normalize-path": { @@ -2644,6 +2685,15 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -2852,13 +2902,13 @@ } }, "webpack": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.14.0.tgz", - "integrity": "sha512-PFtfqXIKT6EG+k4L7d9whUPacN2XvxlUMc8NAQvN+sF9G8xPQqrCDGDiXbAdyGNz+/OP6ioxnUKybBBZ1kp/2A==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.19.0.tgz", + "integrity": "sha512-egX19vAQ8fZ4cVYtA9Y941eqJtcZAK68mQq87MMv+GTXKZOc3TpKBBxdGX+HXUYlquPxiluNsJ1VHvwwklW7CQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.45", + "@types/estree": "^0.0.46", "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/wasm-edit": "1.11.0", "@webassemblyjs/wasm-parser": "1.11.0", @@ -2881,25 +2931,18 @@ "terser-webpack-plugin": "^5.1.1", "watchpack": "^2.0.0", "webpack-sources": "^2.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", - "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", - "dev": true - } } }, "webpack-cli": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.3.1.tgz", - "integrity": "sha512-/F4+9QNZM/qKzzL9/06Am8NXIkGV+/NqQ62Dx7DSqudxxpAgBqYn6V7+zp+0Y7JuWksKUbczRY3wMTd+7Uj6OA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.4.0.tgz", + "integrity": "sha512-/Qh07CXfXEkMu5S8wEpjuaw2Zj/CC0hf/qbTDp6N8N7JjdGuaOjZ7kttz+zhuJO/J5m7alQEhNk9lsc4rC6xgQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.0", "@webpack-cli/info": "^1.2.1", - "@webpack-cli/serve": "^1.2.1", + "@webpack-cli/serve": "^1.2.2", "colorette": "^1.2.1", "commander": "^6.2.0", "enquirer": "^2.3.6", @@ -2909,7 +2952,7 @@ "interpret": "^2.2.0", "rechoir": "^0.7.0", "v8-compile-cache": "^2.2.0", - "webpack-merge": "^4.2.2" + "webpack-merge": "^5.7.3" }, "dependencies": { "commander": { @@ -2921,12 +2964,13 @@ } }, "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, "requires": { - "lodash": "^4.17.15" + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" } }, "webpack-node-externals": { @@ -2962,6 +3006,12 @@ "isexe": "^2.0.0" } }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", diff --git a/examples/lambda-edge/package.json b/examples/lambda-edge/package.json index 03e12423..9de3447e 100644 --- a/examples/lambda-edge/package.json +++ b/examples/lambda-edge/package.json @@ -24,7 +24,7 @@ }, "license": "Apache-2.0", "dependencies": { - "@vendia/serverless-express": "^4.0.0-rc.12", + "@vendia/serverless-express": "^4.0.0", "body-parser": "^1.19.0", "compression": "^1.7.4", "cors": "^2.8.5", @@ -35,8 +35,8 @@ "copy-webpack-plugin": "^7.0.0", "cross-var": "^1.1.0", "source-map-support": "^0.5.19", - "webpack": "^5.14.0", - "webpack-cli": "^4.3.1", + "webpack": "^5.19.0", + "webpack-cli": "^4.4.0", "webpack-node-externals": "^2.5.2" } -} \ No newline at end of file +} diff --git a/examples/sails/.editorconfig b/examples/sails-example/.editorconfig similarity index 100% rename from examples/sails/.editorconfig rename to examples/sails-example/.editorconfig diff --git a/examples/sails/.eslintignore b/examples/sails-example/.eslintignore similarity index 100% rename from examples/sails/.eslintignore rename to examples/sails-example/.eslintignore diff --git a/examples/sails/.eslintrc b/examples/sails-example/.eslintrc similarity index 100% rename from examples/sails/.eslintrc rename to examples/sails-example/.eslintrc diff --git a/examples/sails/.gitignore b/examples/sails-example/.gitignore similarity index 100% rename from examples/sails/.gitignore rename to examples/sails-example/.gitignore diff --git a/examples/sails/.npmrc b/examples/sails-example/.npmrc similarity index 100% rename from examples/sails/.npmrc rename to examples/sails-example/.npmrc diff --git a/examples/sails/.sailsrc b/examples/sails-example/.sailsrc similarity index 100% rename from examples/sails/.sailsrc rename to examples/sails-example/.sailsrc diff --git a/examples/sails/Gruntfile.js b/examples/sails-example/Gruntfile.js similarity index 100% rename from examples/sails/Gruntfile.js rename to examples/sails-example/Gruntfile.js diff --git a/examples/sails/README.md b/examples/sails-example/README.md similarity index 100% rename from examples/sails/README.md rename to examples/sails-example/README.md diff --git a/examples/sails/api-gateway-event.json b/examples/sails-example/api-gateway-event.json similarity index 100% rename from examples/sails/api-gateway-event.json rename to examples/sails-example/api-gateway-event.json diff --git a/examples/sails/api/controllers/.gitkeep b/examples/sails-example/api/controllers/.gitkeep similarity index 100% rename from examples/sails/api/controllers/.gitkeep rename to examples/sails-example/api/controllers/.gitkeep diff --git a/examples/sails/api/helpers/.gitkeep b/examples/sails-example/api/helpers/.gitkeep similarity index 100% rename from examples/sails/api/helpers/.gitkeep rename to examples/sails-example/api/helpers/.gitkeep diff --git a/examples/sails/api/models/.gitkeep b/examples/sails-example/api/models/.gitkeep similarity index 100% rename from examples/sails/api/models/.gitkeep rename to examples/sails-example/api/models/.gitkeep diff --git a/examples/sails/api/policies/.gitkeep b/examples/sails-example/api/policies/.gitkeep similarity index 100% rename from examples/sails/api/policies/.gitkeep rename to examples/sails-example/api/policies/.gitkeep diff --git a/examples/sails/app.js b/examples/sails-example/app.js similarity index 100% rename from examples/sails/app.js rename to examples/sails-example/app.js diff --git a/examples/sails/assets/.eslintrc b/examples/sails-example/assets/.eslintrc similarity index 100% rename from examples/sails/assets/.eslintrc rename to examples/sails-example/assets/.eslintrc diff --git a/examples/sails/assets/dependencies/.gitkeep b/examples/sails-example/assets/dependencies/.gitkeep similarity index 100% rename from examples/sails/assets/dependencies/.gitkeep rename to examples/sails-example/assets/dependencies/.gitkeep diff --git a/examples/sails/assets/dependencies/sails.io.js b/examples/sails-example/assets/dependencies/sails.io.js similarity index 100% rename from examples/sails/assets/dependencies/sails.io.js rename to examples/sails-example/assets/dependencies/sails.io.js diff --git a/examples/sails/assets/favicon.ico b/examples/sails-example/assets/favicon.ico similarity index 100% rename from examples/sails/assets/favicon.ico rename to examples/sails-example/assets/favicon.ico diff --git a/examples/sails/assets/images/.gitkeep b/examples/sails-example/assets/images/.gitkeep similarity index 100% rename from examples/sails/assets/images/.gitkeep rename to examples/sails-example/assets/images/.gitkeep diff --git a/examples/sails/assets/js/.gitkeep b/examples/sails-example/assets/js/.gitkeep similarity index 100% rename from examples/sails/assets/js/.gitkeep rename to examples/sails-example/assets/js/.gitkeep diff --git a/examples/sails/assets/styles/importer.less b/examples/sails-example/assets/styles/importer.less similarity index 100% rename from examples/sails/assets/styles/importer.less rename to examples/sails-example/assets/styles/importer.less diff --git a/examples/sails/assets/templates/.gitkeep b/examples/sails-example/assets/templates/.gitkeep similarity index 100% rename from examples/sails/assets/templates/.gitkeep rename to examples/sails-example/assets/templates/.gitkeep diff --git a/examples/sails/aws-serverless-express-3.3.5.tgz b/examples/sails-example/aws-serverless-express-3.3.5.tgz similarity index 100% rename from examples/sails/aws-serverless-express-3.3.5.tgz rename to examples/sails-example/aws-serverless-express-3.3.5.tgz diff --git a/examples/sails/config/blueprints.js b/examples/sails-example/config/blueprints.js similarity index 100% rename from examples/sails/config/blueprints.js rename to examples/sails-example/config/blueprints.js diff --git a/examples/sails/config/bootstrap.js b/examples/sails-example/config/bootstrap.js similarity index 100% rename from examples/sails/config/bootstrap.js rename to examples/sails-example/config/bootstrap.js diff --git a/examples/sails/config/custom.js b/examples/sails-example/config/custom.js similarity index 100% rename from examples/sails/config/custom.js rename to examples/sails-example/config/custom.js diff --git a/examples/sails/config/datastores.js b/examples/sails-example/config/datastores.js similarity index 100% rename from examples/sails/config/datastores.js rename to examples/sails-example/config/datastores.js diff --git a/examples/sails/config/env/production.js b/examples/sails-example/config/env/production.js similarity index 100% rename from examples/sails/config/env/production.js rename to examples/sails-example/config/env/production.js diff --git a/examples/sails/config/globals.js b/examples/sails-example/config/globals.js similarity index 100% rename from examples/sails/config/globals.js rename to examples/sails-example/config/globals.js diff --git a/examples/sails/config/http.js b/examples/sails-example/config/http.js similarity index 100% rename from examples/sails/config/http.js rename to examples/sails-example/config/http.js diff --git a/examples/sails/config/i18n.js b/examples/sails-example/config/i18n.js similarity index 100% rename from examples/sails/config/i18n.js rename to examples/sails-example/config/i18n.js diff --git a/examples/sails/config/locales/de.json b/examples/sails-example/config/locales/de.json similarity index 100% rename from examples/sails/config/locales/de.json rename to examples/sails-example/config/locales/de.json diff --git a/examples/sails/config/locales/en.json b/examples/sails-example/config/locales/en.json similarity index 100% rename from examples/sails/config/locales/en.json rename to examples/sails-example/config/locales/en.json diff --git a/examples/sails/config/locales/es.json b/examples/sails-example/config/locales/es.json similarity index 100% rename from examples/sails/config/locales/es.json rename to examples/sails-example/config/locales/es.json diff --git a/examples/sails/config/locales/fr.json b/examples/sails-example/config/locales/fr.json similarity index 100% rename from examples/sails/config/locales/fr.json rename to examples/sails-example/config/locales/fr.json diff --git a/examples/sails/config/log.js b/examples/sails-example/config/log.js similarity index 100% rename from examples/sails/config/log.js rename to examples/sails-example/config/log.js diff --git a/examples/sails/config/models.js b/examples/sails-example/config/models.js similarity index 100% rename from examples/sails/config/models.js rename to examples/sails-example/config/models.js diff --git a/examples/sails/config/policies.js b/examples/sails-example/config/policies.js similarity index 100% rename from examples/sails/config/policies.js rename to examples/sails-example/config/policies.js diff --git a/examples/sails/config/routes.js b/examples/sails-example/config/routes.js similarity index 100% rename from examples/sails/config/routes.js rename to examples/sails-example/config/routes.js diff --git a/examples/sails/config/security.js b/examples/sails-example/config/security.js similarity index 100% rename from examples/sails/config/security.js rename to examples/sails-example/config/security.js diff --git a/examples/sails/config/session.js b/examples/sails-example/config/session.js similarity index 100% rename from examples/sails/config/session.js rename to examples/sails-example/config/session.js diff --git a/examples/sails/config/sockets.js b/examples/sails-example/config/sockets.js similarity index 100% rename from examples/sails/config/sockets.js rename to examples/sails-example/config/sockets.js diff --git a/examples/sails/config/views.js b/examples/sails-example/config/views.js similarity index 100% rename from examples/sails/config/views.js rename to examples/sails-example/config/views.js diff --git a/examples/sails-example/lambda.js b/examples/sails-example/lambda.js new file mode 100644 index 00000000..1c781e07 --- /dev/null +++ b/examples/sails-example/lambda.js @@ -0,0 +1,8 @@ +require('source-map-support/register') +const serverlessExpress = require('@vendia/serverless-express') +const appPromise = require('./app') + +exports.handler = async (event, context, callback) => { + const app = await appPromise + return serverlessExpress({ app }).handler(event, context, callback) +} diff --git a/examples/sails/package-lock.json b/examples/sails-example/package-lock.json similarity index 94% rename from examples/sails/package-lock.json rename to examples/sails-example/package-lock.json index 72099cfb..0d9823d1 100644 --- a/examples/sails/package-lock.json +++ b/examples/sails-example/package-lock.json @@ -1,5 +1,5 @@ { - "name": "sails", + "name": "sails-example", "version": "0.0.0", "lockfileVersion": 1, "requires": true, @@ -34,9 +34,9 @@ } }, "@sailshq/lodash": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.3.tgz", - "integrity": "sha512-XTF5BtsTSiSpTnfqrCGS5Q8FvSHWCywA0oRxFAZo8E1a8k1MMFUvk3VlRk3q/SusEYwy7gvVdyt9vvNlTa2VuA==" + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.4.tgz", + "integrity": "sha512-YXJqp9gdHcZKAmBY/WnwFpPtNQp2huD/ME2YMurH2YHJvxrVzYsmpKw/pb7yINArRpp8E++fwbQd3ajYXGA45Q==" }, "@sailshq/socket.io-redis": { "version": "5.2.0", @@ -51,12 +51,9 @@ } }, "@vendia/serverless-express": { - "version": "4.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0-rc.5.tgz", - "integrity": "sha512-xgd7pcitDqsNC6vVsLPnZXYR22gkBAYs+3qfX5U+Hy/M1to93gJf2rvvaxicDwsSfYJgssEFgetSZZCuVW8WuA==", - "requires": { - "type-is": "^1.6.16" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.0.0.tgz", + "integrity": "sha512-/BQ7sujcNthcJgGUH7USme9TTwur+pXKLR70JmAmatC8My6RFt4l64iIG2JFwz4FImoegNEQKh12+1UAxcnutw==" }, "abbrev": { "version": "1.1.1", @@ -1089,48 +1086,44 @@ "integrity": "sha1-POzzUEkEwwzj55wXCHfok6EZEP0=" }, "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { - "bytes": "3.0.0", + "bytes": "3.1.0", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" }, "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { "depd": "~1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" } }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -1178,9 +1171,9 @@ } }, "captains-log": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/captains-log/-/captains-log-2.0.2.tgz", - "integrity": "sha512-1Epy1ERBPqAX6a2V2tZkKlwMvzUrGznCALk6bBNZ+KKLBLzY9bfMYhcRuNuCvpbmRflLv+N/Z0PMctcqEgJrqg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/captains-log/-/captains-log-2.0.3.tgz", + "integrity": "sha512-hKlNLw/4Qz1vPDhAbn3pRexi8fzY7d3SwX/BtI2lMG09UqK1W1mf2pYFslau3ZPWxdcwBBcsLLi9ngs+xhqD2Q==", "requires": { "@sailshq/lodash": "^3.10.2", "chalk": "1.1.3", @@ -1297,11 +1290,18 @@ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" }, "compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "requires": { - "mime-db": ">= 1.40.0 < 2" + "mime-db": ">= 1.43.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" + } } }, "compression": { @@ -1335,9 +1335,19 @@ } }, "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } }, "content-type": { "version": "1.0.4", @@ -1359,18 +1369,25 @@ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" }, "cookie-parser": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", - "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.4.tgz", + "integrity": "sha512-lo13tqF3JEtFO7FyA49CqbhaFkskRJ0u/UAiINgrIXeRCY41c88/zxtrECl8AKH3B0hj9q10+h3Kt8I7KlW4tw==", "requires": { "cookie": "0.3.1", "cookie-signature": "1.0.6" + }, + "dependencies": { + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + } } }, "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.1.0.tgz", + "integrity": "sha512-Alvs19Vgq07eunykd3Xy2jF0/qSNv2u7KDbAek9H5liV1UMijbqFs5cycZvv5dVsvseT/U4H8/7/w8Koh35C4A==" }, "core-js": { "version": "2.6.9", @@ -1378,11 +1395,6 @@ "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", "dev": true }, - "crc": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz", - "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms=" - }, "cross-spawn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", @@ -1419,34 +1431,31 @@ } }, "csrf": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz", - "integrity": "sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz", + "integrity": "sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==", "requires": { "rndm": "1.2.0", - "tsscmp": "1.0.5", - "uid-safe": "2.1.4" - }, - "dependencies": { - "uid-safe": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz", - "integrity": "sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE=", - "requires": { - "random-bytes": "~1.0.0" - } - } + "tsscmp": "1.0.6", + "uid-safe": "2.1.5" } }, "csurf": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", - "integrity": "sha1-SdLGkl/87Ht95VlZfBU/pTM2QTM=", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.10.0.tgz", + "integrity": "sha512-fh725p0R83wA5JukCik5hdEko/LizW/Vl7pkKDa1WJUVCosg141mqaAWCScB+nkEaRMFMGbutHMOr6oBNc/j9A==", "requires": { "cookie": "0.3.1", "cookie-signature": "1.0.6", - "csrf": "~3.0.3", - "http-errors": "~1.5.0" + "csrf": "3.1.0", + "http-errors": "~1.7.2" + }, + "dependencies": { + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + } } }, "currently-unhandled": { @@ -1841,82 +1850,139 @@ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" }, "express": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", - "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { - "accepts": "~1.3.4", + "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", "content-type": "~1.0.4", - "cookie": "0.3.1", + "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.1", - "encodeurl": "~1.0.1", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.1.0", + "finalhandler": "~1.1.2", "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.2", - "qs": "6.5.1", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.1", - "serve-static": "1.13.1", - "setprototypeof": "1.1.0", - "statuses": "~1.3.1", - "type-is": "~1.6.15", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "dependencies": { + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", "unpipe": "~1.0.0" } }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" } } }, "express-session": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz", - "integrity": "sha512-r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.0.tgz", + "integrity": "sha512-t4oX2z7uoSqATbMfsxWMbNjAL0T5zpvcJCk3Z9wnPPN7ibddhnmDZXHfEcoBMG2ojKXZoCyPMc5FbtK+G7SoDg==", "requires": { - "cookie": "0.3.1", + "cookie": "0.4.0", "cookie-signature": "1.0.6", - "crc": "3.4.4", "debug": "2.6.9", - "depd": "~1.1.1", - "on-headers": "~1.0.1", - "parseurl": "~1.3.2", - "uid-safe": "~2.1.5", - "utils-merge": "1.0.1" + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.0", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } } }, "external-editor": { @@ -2256,19 +2322,21 @@ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" }, "http-errors": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", - "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=", - "requires": { - "inherits": "2.0.3", - "setprototypeof": "1.0.2", - "statuses": ">= 1.3.1 < 2" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" } } }, @@ -2287,17 +2355,17 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "requires": { "ms": "^2.1.1" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, @@ -2441,9 +2509,9 @@ } }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-arrayish": { "version": "0.2.1", @@ -2638,9 +2706,9 @@ } }, "machine-as-action": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/machine-as-action/-/machine-as-action-10.3.0.tgz", - "integrity": "sha512-4DN6/e5L7dTCeOmK6VErxcqS1mfvU1vl9FAvqZuR/j+xHQoJUhwLgkW3CJXyPesL9+rvGWR5eBsv4o4s/DtxXQ==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/machine-as-action/-/machine-as-action-10.3.1.tgz", + "integrity": "sha512-IrX+kSjt4XQTxmZ+7/SJUvRJbwcZ2BqFlwwXLZIjYQmKTyd0vV4ZmKdbNZtrEKD1ZmqgtKSgHaxBET+XQU333A==", "requires": { "@sailshq/lodash": "^3.10.2", "flaverr": "^1.5.1", @@ -2762,9 +2830,9 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.40.0", @@ -2984,9 +3052,9 @@ "dev": true }, "parasails": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/parasails/-/parasails-0.7.11.tgz", - "integrity": "sha512-KCy+uA3iZeSOXFnOsaeke98/xRkd4dm2C6PkMb6bKIbp4rpc26ytIvTwTRLOvUeVxkBzMhAStooS9baTWoJ8Zw==" + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/parasails/-/parasails-0.9.2.tgz", + "integrity": "sha512-LmCj4ZYPefyLWl00WcP1mTpoCLDEsy1BpTUfXFypUbKFnSGu0Z1KKRkCwxEsPb6OwaixoK2VTvgvP83ZO5E52Q==" }, "parent-module": { "version": "1.0.1", @@ -3148,12 +3216,12 @@ } }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" } }, "pseudomap": { @@ -3168,9 +3236,9 @@ "dev": true }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, "random-bytes": { "version": "1.0.0", @@ -3183,46 +3251,42 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "depd": "1.1.1", + "depd": "~1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" } }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" } } }, @@ -3490,9 +3554,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sails": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/sails/-/sails-1.2.3.tgz", - "integrity": "sha512-S40uoH/DzGDmm40OJL/TNLONTPxQcuzBEuceuflNXlGLl07POc8z15Bt8cnsfh7Cr6zbXBTQhIYl3ioZNJEisA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sails/-/sails-1.4.0.tgz", + "integrity": "sha512-ZE2r0yy13HhqhwcpkW1R6xOU/InS4v8CDEENsvkKlCUKW+PiJSa/oIevbevdhhJ91/zMSxqLF9Q8kJyF6+hFTg==", "requires": { "@sailshq/lodash": "^3.10.2", "async": "2.5.0", @@ -3502,24 +3566,24 @@ "common-js-file-extensions": "1.0.2", "compression": "1.7.1", "connect": "3.6.5", - "cookie": "0.3.1", - "cookie-parser": "1.4.3", - "cookie-signature": "1.0.6", - "csurf": "1.9.0", + "cookie": "0.4.0", + "cookie-parser": "1.4.4", + "cookie-signature": "1.1.0", + "csurf": "1.10.0", "ejs": "2.5.7", - "express": "4.16.2", - "express-session": "1.15.6", + "express": "4.17.1", + "express-session": "1.17.0", "flaverr": "^1.10.0", "glob": "7.1.2", "i18n-2": "0.7.3", "include-all": "^4.0.0", "machine": "^15.2.2", - "machine-as-action": "^10.3.0-0", + "machine-as-action": "^10.3.1", "machinepack-process": "^4.0.1", "machinepack-redis": "^2.0.2", "merge-defaults": "0.2.2", "merge-dictionaries": "1.0.0", - "minimist": "0.0.10", + "minimist": "1.2.5", "parley": "^3.3.4", "parseurl": "1.3.2", "path-to-regexp": "1.5.3", @@ -3528,7 +3592,7 @@ "rc": "1.2.8", "router": "1.3.2", "rttc": "^10.0.0-0", - "sails-generate": "^1.16.0-0", + "sails-generate": "^2.0.0", "sails-stringfile": "^0.3.3", "semver": "4.3.6", "serve-favicon": "2.4.5", @@ -3558,6 +3622,11 @@ "supports-color": "^4.0.0" } }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -3577,9 +3646,9 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" }, "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "semver": { "version": "4.3.6", @@ -3618,9 +3687,9 @@ } }, "sails-generate": { - "version": "1.16.13", - "resolved": "https://registry.npmjs.org/sails-generate/-/sails-generate-1.16.13.tgz", - "integrity": "sha512-RDeiNuARxwQPuAiYqIKsrZtd5S7GRq1HhErJY8artt/hqhatmph/+vTJgGHrTUxygr7hZR4JAUKiXxM/YNRRpw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/sails-generate/-/sails-generate-2.0.1.tgz", + "integrity": "sha512-KQiaFcIYmgV1nZHhg1kpcqy2zfx/HnMQ9HvYAkogmvcxNR5SuaFXI0Vog8nKMMis9j6JE0VxWW2jY44eOc6k/g==", "requires": { "@sailshq/lodash": "^3.10.3", "async": "2.0.1", @@ -3629,7 +3698,7 @@ "flaverr": "^1.0.0", "fs-extra": "0.30.0", "machinepack-process": "^4.0.0", - "parasails": "^0.7.1", + "parasails": "^0.9.2", "read": "1.0.7", "reportback": "^2.0.1", "sails.io.js-dist": "^1.0.0" @@ -7123,23 +7192,58 @@ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.1", + "depd": "~1.1.2", "destroy": "~1.0.4", - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.3.1" + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } + }, + "serve-favicon": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.5.tgz", + "integrity": "sha512-s7F8h2NrslMkG50KxvlGdj+ApSwaLex0vexuJ9iFf3GLTIp1ph/l1qZvRe9T9TJEYZgmq72ZwJ2VYiAEtChknw==", + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.0.0", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "requires": { + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.1" }, "dependencies": { "http-errors": { @@ -7165,6 +7269,31 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.1", + "destroy": "~1.0.4", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.3.1" + } + }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -7172,33 +7301,10 @@ } } }, - "serve-favicon": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.5.tgz", - "integrity": "sha512-s7F8h2NrslMkG50KxvlGdj+ApSwaLex0vexuJ9iFf3GLTIp1ph/l1qZvRe9T9TJEYZgmq72ZwJ2VYiAEtChknw==", - "requires": { - "etag": "~1.8.1", - "fresh": "0.5.2", - "ms": "2.0.0", - "parseurl": "~1.3.2", - "safe-buffer": "5.1.1" - } - }, - "serve-static": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", - "requires": { - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.1" - } - }, "setprototypeof": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", - "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "shebang-command": { "version": "1.2.0", @@ -7244,6 +7350,33 @@ "lodash": "^4.8.0" } }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -7252,10 +7385,80 @@ "ms": "2.0.0" } }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, "semver": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" } } }, @@ -7610,6 +7813,11 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -7628,9 +7836,9 @@ "dev": true }, "tsscmp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", - "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc=" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" }, "type-check": { "version": "0.3.2", diff --git a/examples/sails/package.json b/examples/sails-example/package.json similarity index 95% rename from examples/sails/package.json rename to examples/sails-example/package.json index 5950e22f..0244b4fd 100644 --- a/examples/sails/package.json +++ b/examples/sails-example/package.json @@ -1,5 +1,5 @@ { - "name": "sails", + "name": "sails-example", "private": true, "version": "0.0.0", "description": "a Sails application", @@ -13,11 +13,11 @@ }, "dependencies": { "@sailshq/connect-redis": "^3.2.1", - "@sailshq/lodash": "^3.10.3", + "@sailshq/lodash": "^3.10.4", "@sailshq/socket.io-redis": "^5.2.0", - "@vendia/serverless-express": "^4.0.0-rc.5", + "@vendia/serverless-express": "^4.0.0", "grunt": "1.0.4", - "sails": "^1.2.3", + "sails": "^1.4.0", "sails-hook-grunt": "^4.0.0", "sails-hook-orm": "^2.1.1", "sails-hook-sockets": "^2.0.0" diff --git a/examples/sails/sam-template.yaml b/examples/sails-example/sam-template.yaml similarity index 100% rename from examples/sails/sam-template.yaml rename to examples/sails-example/sam-template.yaml diff --git a/examples/sails/scripts/local.js b/examples/sails-example/scripts/local.js similarity index 100% rename from examples/sails/scripts/local.js rename to examples/sails-example/scripts/local.js diff --git a/examples/sails/tasks/config/babel.js b/examples/sails-example/tasks/config/babel.js similarity index 100% rename from examples/sails/tasks/config/babel.js rename to examples/sails-example/tasks/config/babel.js diff --git a/examples/sails/tasks/config/clean.js b/examples/sails-example/tasks/config/clean.js similarity index 100% rename from examples/sails/tasks/config/clean.js rename to examples/sails-example/tasks/config/clean.js diff --git a/examples/sails/tasks/config/concat.js b/examples/sails-example/tasks/config/concat.js similarity index 100% rename from examples/sails/tasks/config/concat.js rename to examples/sails-example/tasks/config/concat.js diff --git a/examples/sails/tasks/config/copy.js b/examples/sails-example/tasks/config/copy.js similarity index 100% rename from examples/sails/tasks/config/copy.js rename to examples/sails-example/tasks/config/copy.js diff --git a/examples/sails/tasks/config/cssmin.js b/examples/sails-example/tasks/config/cssmin.js similarity index 100% rename from examples/sails/tasks/config/cssmin.js rename to examples/sails-example/tasks/config/cssmin.js diff --git a/examples/sails/tasks/config/hash.js b/examples/sails-example/tasks/config/hash.js similarity index 100% rename from examples/sails/tasks/config/hash.js rename to examples/sails-example/tasks/config/hash.js diff --git a/examples/sails/tasks/config/less.js b/examples/sails-example/tasks/config/less.js similarity index 100% rename from examples/sails/tasks/config/less.js rename to examples/sails-example/tasks/config/less.js diff --git a/examples/sails/tasks/config/sails-linker.js b/examples/sails-example/tasks/config/sails-linker.js similarity index 100% rename from examples/sails/tasks/config/sails-linker.js rename to examples/sails-example/tasks/config/sails-linker.js diff --git a/examples/sails/tasks/config/sync.js b/examples/sails-example/tasks/config/sync.js similarity index 100% rename from examples/sails/tasks/config/sync.js rename to examples/sails-example/tasks/config/sync.js diff --git a/examples/sails/tasks/config/uglify.js b/examples/sails-example/tasks/config/uglify.js similarity index 100% rename from examples/sails/tasks/config/uglify.js rename to examples/sails-example/tasks/config/uglify.js diff --git a/examples/sails/tasks/config/watch.js b/examples/sails-example/tasks/config/watch.js similarity index 100% rename from examples/sails/tasks/config/watch.js rename to examples/sails-example/tasks/config/watch.js diff --git a/examples/sails/tasks/pipeline.js b/examples/sails-example/tasks/pipeline.js similarity index 100% rename from examples/sails/tasks/pipeline.js rename to examples/sails-example/tasks/pipeline.js diff --git a/examples/sails/tasks/register/build.js b/examples/sails-example/tasks/register/build.js similarity index 100% rename from examples/sails/tasks/register/build.js rename to examples/sails-example/tasks/register/build.js diff --git a/examples/sails/tasks/register/buildProd.js b/examples/sails-example/tasks/register/buildProd.js similarity index 100% rename from examples/sails/tasks/register/buildProd.js rename to examples/sails-example/tasks/register/buildProd.js diff --git a/examples/sails/tasks/register/compileAssets.js b/examples/sails-example/tasks/register/compileAssets.js similarity index 100% rename from examples/sails/tasks/register/compileAssets.js rename to examples/sails-example/tasks/register/compileAssets.js diff --git a/examples/sails/tasks/register/default.js b/examples/sails-example/tasks/register/default.js similarity index 100% rename from examples/sails/tasks/register/default.js rename to examples/sails-example/tasks/register/default.js diff --git a/examples/sails/tasks/register/linkAssets.js b/examples/sails-example/tasks/register/linkAssets.js similarity index 100% rename from examples/sails/tasks/register/linkAssets.js rename to examples/sails-example/tasks/register/linkAssets.js diff --git a/examples/sails/tasks/register/linkAssetsBuild.js b/examples/sails-example/tasks/register/linkAssetsBuild.js similarity index 100% rename from examples/sails/tasks/register/linkAssetsBuild.js rename to examples/sails-example/tasks/register/linkAssetsBuild.js diff --git a/examples/sails/tasks/register/linkAssetsBuildProd.js b/examples/sails-example/tasks/register/linkAssetsBuildProd.js similarity index 100% rename from examples/sails/tasks/register/linkAssetsBuildProd.js rename to examples/sails-example/tasks/register/linkAssetsBuildProd.js diff --git a/examples/sails/tasks/register/polyfill.js b/examples/sails-example/tasks/register/polyfill.js similarity index 100% rename from examples/sails/tasks/register/polyfill.js rename to examples/sails-example/tasks/register/polyfill.js diff --git a/examples/sails/tasks/register/prod.js b/examples/sails-example/tasks/register/prod.js similarity index 100% rename from examples/sails/tasks/register/prod.js rename to examples/sails-example/tasks/register/prod.js diff --git a/examples/sails/tasks/register/syncAssets.js b/examples/sails-example/tasks/register/syncAssets.js similarity index 100% rename from examples/sails/tasks/register/syncAssets.js rename to examples/sails-example/tasks/register/syncAssets.js diff --git a/examples/sails/views/.eslintrc b/examples/sails-example/views/.eslintrc similarity index 100% rename from examples/sails/views/.eslintrc rename to examples/sails-example/views/.eslintrc diff --git a/examples/sails/views/404.ejs b/examples/sails-example/views/404.ejs similarity index 100% rename from examples/sails/views/404.ejs rename to examples/sails-example/views/404.ejs diff --git a/examples/sails/views/500.ejs b/examples/sails-example/views/500.ejs similarity index 100% rename from examples/sails/views/500.ejs rename to examples/sails-example/views/500.ejs diff --git a/examples/sails/views/layouts/layout.ejs b/examples/sails-example/views/layouts/layout.ejs similarity index 100% rename from examples/sails/views/layouts/layout.ejs rename to examples/sails-example/views/layouts/layout.ejs diff --git a/examples/sails/views/pages/homepage.ejs b/examples/sails-example/views/pages/homepage.ejs similarity index 100% rename from examples/sails/views/pages/homepage.ejs rename to examples/sails-example/views/pages/homepage.ejs diff --git a/examples/sails/lambda.js b/examples/sails/lambda.js deleted file mode 100644 index 933d06fc..00000000 --- a/examples/sails/lambda.js +++ /dev/null @@ -1,20 +0,0 @@ -const serverlessExpress = require('@vendia/serverless-express'); -const appPromise = require('./app'); - -// NOTE: If you get ERR_CONTENT_DECODING_FAILED in your browser, this is likely -// due to a compressed response (e.g. gzip) which has not been handled correctly -// by serverless-express and/or API Gateway. Add the necessary MIME types to -// binaryMimeTypes below, then redeploy (`npm run package-deploy`) -const binaryMimeTypes = [ - // '*/*' -]; - -exports.handler = async (event, context, callback) => { - const app = await appPromise; - const se = serverlessExpress.configure({ - app, - binaryMimeTypes - }); - - return se.proxy({ event, context, callback }); -}; diff --git a/examples/sails/sam-template.packaged.yaml b/examples/sails/sam-template.packaged.yaml deleted file mode 100644 index eb25dcf3..00000000 --- a/examples/sails/sam-template.packaged.yaml +++ /dev/null @@ -1,119 +0,0 @@ -AWSTemplateFormatVersion: '2010-09-09' -Transform: AWS::Serverless-2016-10-31 -Description: Serverless Express Application/API powered by API Gateway and Lambda -Parameters: - DomainName: - Type: String - Description: API Domain name - Default: '' -Conditions: - UseDomainName: - Fn::Not: - - Fn::Equals: - - Ref: DomainName - - '' -Resources: - ExpressApi: - Type: AWS::Serverless::Api - Properties: - StageName: prod - BinaryMediaTypes: - - '*/*' - ExpressLambdaFunction: - Type: AWS::Serverless::Function - Properties: - CodeUri: s3://artifacts-123nsef/fe4ff1b0d3a62f1ed692f83ce8be88a8 - Handler: lambda.handler - MemorySize: 1024 - Runtime: nodejs8.10 - Timeout: 30 - Events: - ProxyApiRoot: - Type: Api - Properties: - RestApiId: - Ref: ExpressApi - Path: / - Method: ANY - ProxyApiGreedy: - Type: Api - Properties: - RestApiId: - Ref: ExpressApi - Path: /{proxy+} - Method: ANY - MyApiCertificate: - Type: AWS::CertificateManager::Certificate - Condition: UseDomainName - Properties: - DomainName: - Fn::Sub: '*.${DomainName}' - DomainValidationOptions: - - DomainName: - Fn::Sub: '*.${DomainName}' - ValidationDomain: - Ref: DomainName - SubjectAlternativeNames: - - Ref: DomainName - MyApiDomainName: - Type: AWS::ApiGateway::DomainName - Condition: UseDomainName - Properties: - CertificateArn: - Ref: MyApiCertificate - DomainName: - Ref: DomainName - MyApiBasePathMapping: - Type: AWS::ApiGateway::BasePathMapping - Condition: UseDomainName - Properties: - RestApiId: - Ref: ExpressApi - DomainName: - Ref: MyApiDomainName - BasePath: (none) - Stage: prod - Route53HostedZone: - Type: AWS::Route53::HostedZone - Condition: UseDomainName - Properties: - Name: - Ref: DomainName - MyApiRoute53RecordSetGroup: - Type: AWS::Route53::RecordSetGroup - Condition: UseDomainName - Properties: - HostedZoneId: - Ref: Route53HostedZone - RecordSets: - - Name: - Fn::Sub: ${DomainName}. - Type: A - AliasTarget: - EvaluateTargetHealth: false - HostedZoneId: - Fn::GetAtt: - - MyApiDomainName - - DistributionHostedZoneId - DNSName: - Fn::GetAtt: - - MyApiDomainName - - DistributionDomainName -Outputs: - LambdaFunctionConsoleUrl: - Description: Console URL for the Lambda Function. - Value: - Fn::Sub: https://${AWS::Region}.console.aws.amazon.com/lambda/home?region=${AWS::Region}#/functions/${ExpressLambdaFunction} - ApiGatewayApiConsoleUrl: - Description: Console URL for the API Gateway API's Stage. - Value: - Fn::Sub: https://${AWS::Region}.console.aws.amazon.com/apigateway/home?region=${AWS::Region}#/apis/${ExpressApi}/stages/prod - ApiUrl: - Description: Invoke URL for your API. Clicking this link will perform a GET request - on the root resource of your API. - Value: - Fn::Sub: https://${ExpressApi}.execute-api.${AWS::Region}.amazonaws.com/prod/ - LambdaFunctionName: - Description: Name of the Serverless Express Lambda Function - Value: - Ref: ExpressLambdaFunction diff --git a/jest-helpers/index.js b/jest-helpers/index.js index 22144119..9742f467 100644 --- a/jest-helpers/index.js +++ b/jest-helpers/index.js @@ -12,6 +12,7 @@ const EVENT_SOURCE_NAMES = [ const FRAMEWORK_NAMES = [ 'express' + // 'koa' ] const EACH_MATRIX = [] diff --git a/src/configure.js b/src/configure.js index 8a88e0c5..8cafc561 100644 --- a/src/configure.js +++ b/src/configure.js @@ -4,14 +4,14 @@ const proxy = require('./proxy') function configure ({ app: configureApp, - framework: configureFramework = getFramework({ app: configureApp }), + log: configureLogger = logger, + framework: configureFramework = getFramework({ app: configureApp, log: configureLogger }), binaryMimeTypes: configureBinaryMimeTypes, binarySettings: configureBinarySettings, resolutionMode: configureResolutionMode = 'PROMISE', eventSourceName: configureEventSourceName, eventSource: configureEventFns, respondWithErrors: configureRespondWithErrors = process.env.NODE_ENV === 'development', - log: configureLogger = logger, proxy: configureProxy = ({ app: configureProxyApp = configureApp, framework: configureProxyFramework = configureFramework, diff --git a/src/frameworks/express.js b/src/frameworks/express.js index 52a8d986..ac2000a2 100644 --- a/src/frameworks/express.js +++ b/src/frameworks/express.js @@ -1,68 +1,7 @@ -const ServerlessRequest = require('../request') -const ServerlessResponse = require('../response') - -function waitForStreamComplete (stream) { - if (stream.complete || stream.writableEnded) { - return stream - } - - return new Promise((resolve, reject) => { - stream.once('error', complete) - stream.once('end', complete) - stream.once('finish', complete) - - let isComplete = false - - function complete (err) { - if (isComplete) { - return - } - - isComplete = true - - stream.removeListener('error', complete) - stream.removeListener('end', complete) - stream.removeListener('finish', complete) - - if (err) { - reject(err) - } else { - resolve(stream) - } - } - }) -} - -async function getExpressRequestResponse ({ - method, - headers, - body, - remoteAddress, - path -}) { - const request = new ServerlessRequest({ - method, - headers, - body, - remoteAddress, - url: path - }) - await waitForStreamComplete(request) - - const response = new ServerlessResponse(request) - - return { request, response } -} - -async function sendExpressRequest ({ app, requestValues }) { - const { request, response } = await getExpressRequestResponse(requestValues) - +async function sendExpressRequest ({ app, request, response }) { app.handle(request, response) - - return waitForStreamComplete(response) } module.exports = { - getRequestResponse: getExpressRequestResponse, sendRequest: sendExpressRequest } diff --git a/src/frameworks/hapi.js b/src/frameworks/hapi.js new file mode 100644 index 00000000..a2541388 --- /dev/null +++ b/src/frameworks/hapi.js @@ -0,0 +1,7 @@ +async function sendHapiRequest ({ app, request, response }) { + app(request, response) +} + +module.exports = { + sendRequest: sendHapiRequest +} diff --git a/src/frameworks/index.js b/src/frameworks/index.js index 75c9a716..22805387 100644 --- a/src/frameworks/index.js +++ b/src/frameworks/index.js @@ -1,11 +1,74 @@ const express = require('./express') +const koa = require('./koa') +const hapi = require('./hapi') + +function getFramework ({ app, log }) { + if (typeof app.callback === 'function') { + log.debug('SERVERLESS_EXPRESS:GET_FRAMEWORK:KOA') + return koa + } -function getFramework ({ app }) { if (typeof app.handle === 'function') { + log.debug('SERVERLESS_EXPRESS:GET_FRAMEWORK:EXPRESS') return express } - throw new Error('Invalid app supplied. Valid frameworks include: Express') + // Framework: ?? + if (typeof app.handler === 'function') { + log.debug('SERVERLESS_EXPRESS:GET_FRAMEWORK:APP_HANDLER_FUNCTION') + return { + sendRequest: ({ request, response }) => { + app.handler(request, response) + } + } + } + + // Framework: ?? + if (typeof app._onRequest === 'function') { + log.debug('SERVERLESS_EXPRESS:GET_FRAMEWORK:APP_ON_REQUEST_FUNCTION') + return { + sendRequest: ({ request, response }) => { + app._onRequest(request, response) + } + } + } + + if (typeof app === 'function') { + log.debug('SERVERLESS_EXPRESS:GET_FRAMEWORK:HAPI') + return hapi + } + + if (app.router && typeof app.router.route === 'function') { + log.debug('SERVERLESS_EXPRESS:GET_FRAMEWORK:APP_ROUTER_ROUTE_FUNCTION') + return { + sendRequest: ({ request, response }) => { + const { url, method, headers, body } = request + app.router.route({ url, method, headers, body }, response) + } + } + } + + if (app._core && typeof app._core._dispatch === 'function') { + log.debug('SERVERLESS_EXPRESS:GET_FRAMEWORK:APP_CORE_DISPATCH_FUNCTION') + return { + sendRequest: ({ request, response }) => { + return app._core._dispatch({ + app + })(request, response) + } + } + } + + if (typeof app.main === 'function') { + log.debug('SERVERLESS_EXPRESS:GET_FRAMEWORK:APP_MAIN_FUNCTION') + return { + sendRequest: ({ request, response }) => { + return app.main(request, response) + } + } + } + + throw new Error('Invalid app supplied. Valid frameworks include: Express, Koa, Hapi') } module.exports.getFramework = getFramework diff --git a/src/frameworks/koa.js b/src/frameworks/koa.js new file mode 100644 index 00000000..91f2979e --- /dev/null +++ b/src/frameworks/koa.js @@ -0,0 +1,7 @@ +async function sendKoaRequest ({ app, request, response }) { + app.callback()(request, response) +} + +module.exports = { + sendRequest: sendKoaRequest +} diff --git a/src/transport.js b/src/transport.js index 16ea4560..ac35ac18 100644 --- a/src/transport.js +++ b/src/transport.js @@ -1,3 +1,5 @@ +const ServerlessRequest = require('./request') +const ServerlessResponse = require('./response') const { getEventSource } = require('./event-sources') const Response = require('./response') const isBinary = require('./is-binary') @@ -64,6 +66,58 @@ function respondToEventSourceWithError ({ resolver.succeed({ response: errorResponse }) } +async function getRequestResponse ({ + method, + headers, + body, + remoteAddress, + path +}) { + const request = new ServerlessRequest({ + method, + headers, + body, + remoteAddress, + url: path + }) + await waitForStreamComplete(request) + + const response = new ServerlessResponse(request) + + return { request, response } +} + +function waitForStreamComplete (stream) { + if (stream.complete || stream.writableEnded) { + return stream + } + + return new Promise((resolve, reject) => { + stream.once('error', complete) + stream.once('end', complete) + stream.once('finish', complete) + + let isComplete = false + + function complete (err) { + if (isComplete) { + return + } + + isComplete = true + + stream.removeListener('error', complete) + stream.removeListener('end', complete) + stream.removeListener('finish', complete) + + if (err) { + reject(err) + } else { + resolve(stream) + } + } + }) +} async function forwardRequestToNodeServer ({ app, framework, @@ -77,7 +131,9 @@ async function forwardRequestToNodeServer ({ }) { const requestValues = eventSource.getRequest({ event, context, log }) log.debug('SERVERLESS_EXPRESS:FORWARD_REQUEST_TO_NODE_SERVER:REQUEST_VALUES', { requestValues }) - const response = await framework.sendRequest({ app, requestValues }) + const { request, response } = await getRequestResponse(requestValues) + await framework.sendRequest({ app, request, response }) + await waitForStreamComplete(response) log.debug('SERVERLESS_EXPRESS:FORWARD_REQUEST_TO_NODE_SERVER:RESPONSE', { response }) forwardResponse({ binarySettings, @@ -92,5 +148,6 @@ async function forwardRequestToNodeServer ({ module.exports = { forwardResponse, respondToEventSourceWithError, - forwardRequestToNodeServer + forwardRequestToNodeServer, + getRequestResponse }