diff --git a/handler.js b/handler.js index 27602ac..60fd79a 100644 --- a/handler.js +++ b/handler.js @@ -1,41 +1,10 @@ -"use strict"; +const { + createLambdaFunction, + createProbot, +} = require("@probot/adapter-aws-lambda-serverless"); -const { createProbot } = require("probot"); -const app = require("./app"); +const appFn = require("./"); -const probot = createProbot(); -const loadingApp = probot.load(app); - -module.exports.webhooks = async (event, context) => { - try { - await loadingApp; - - // Ends function immediately after callback - context.callbackWaitsForEmptyEventLoop = false; - - // this could will be simpler once we ship `verifyAndParse()` - // see https://github.com/octokit/webhooks.js/issues/379 - await probot.webhooks.verifyAndReceive({ - id: - event.headers["X-GitHub-Delivery"] || - event.headers["x-github-delivery"], - name: event.headers["X-GitHub-Event"] || event.headers["x-github-event"], - signature: - event.headers["X-Hub-Signature-256"] || - event.headers["x-hub-signature-256"], - payload: JSON.parse(event.body), - }); - - return { - statusCode: 200, - body: '{"ok":true}', - }; - } catch (error) { - console.log(error); - - return { - statusCode: error.status || 500, - error: "ooops", - }; - } -}; +module.exports.webhooks = createLambdaFunction(appFn, { + probot: createProbot(), +}); diff --git a/package-lock.json b/package-lock.json index 4c06ad7..9343d06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "example-aws-lambda-serverless", + "name": "@probot/example-aws-lambda-serverless", "version": "1.0.0", "lockfileVersion": 1, "requires": true, @@ -167,6 +167,59 @@ "debug": "^4.0.0" } }, + "@probot/adapter-aws-lambda-serverless": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@probot/adapter-aws-lambda-serverless/-/adapter-aws-lambda-serverless-2.0.0.tgz", + "integrity": "sha512-qz+9oCsAL1JQ9IEt48E/fnV0Md2ujHBoI1fB+XOgUooGx3xwTQpLM7I08bu1Q/N5zhiSvbF+X9rHvBUGz8w3Sg==", + "requires": { + "@probot/get-private-key": "^1.1.0", + "probot": "^11.0.6" + }, + "dependencies": { + "probot": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/probot/-/probot-11.0.6.tgz", + "integrity": "sha512-KvX931ZXno/jveNbMk+1QeWa63XOJWfnGHDGiE1R+r54VHEg7dQAeLpaOjTX34DiZpTlFUvyulXZoFMDFnQsYQ==", + "requires": { + "@octokit/core": "^3.2.4", + "@octokit/plugin-enterprise-compatibility": "^1.2.8", + "@octokit/plugin-paginate-rest": "^2.6.2", + "@octokit/plugin-rest-endpoint-methods": "^4.4.1", + "@octokit/plugin-retry": "^3.0.6", + "@octokit/plugin-throttling": "^3.3.4", + "@octokit/types": "^6.1.1", + "@octokit/webhooks": "7.21.0", + "@probot/get-private-key": "^1.1.0", + "@probot/octokit-plugin-config": "^1.0.0", + "@probot/pino": "^2.2.0", + "@types/express": "^4.17.9", + "@types/ioredis": "^4.17.8", + "@types/pino": "^6.3.4", + "@types/pino-http": "^5.0.6", + "@types/update-notifier": "^5.0.0", + "commander": "^6.2.0", + "deepmerge": "^4.2.2", + "deprecation": "^2.3.1", + "dotenv": "^8.2.0", + "eventsource": "^1.0.7", + "express": "^4.17.1", + "hbs": "^4.1.1", + "ioredis": "^4.19.2", + "js-yaml": "^3.14.1", + "lru-cache": "^6.0.0", + "octokit-auth-probot": "^1.2.2", + "pino": "^6.7.0", + "pino-http": "^5.3.0", + "pkg-conf": "^3.1.0", + "resolve": "^1.19.0", + "semver": "^7.3.4", + "update-dotenv": "^1.1.1", + "update-notifier": "^5.0.1", + "uuid": "^8.3.2" + } + } + } + }, "@probot/get-private-key": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@probot/get-private-key/-/get-private-key-1.1.0.tgz", @@ -1969,48 +2022,6 @@ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, - "probot": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/probot/-/probot-11.0.5.tgz", - "integrity": "sha512-o8euQLHiJobgbKwbJb/1fg+ghC5Rf1gzSAk1qFH55tUhBkmTIxgVp1P21mkuFbyyTVlw9MZ0AwaVmdJJc6tpxQ==", - "requires": { - "@octokit/core": "^3.2.4", - "@octokit/plugin-enterprise-compatibility": "^1.2.8", - "@octokit/plugin-paginate-rest": "^2.6.2", - "@octokit/plugin-rest-endpoint-methods": "^4.4.1", - "@octokit/plugin-retry": "^3.0.6", - "@octokit/plugin-throttling": "^3.3.4", - "@octokit/types": "^6.1.1", - "@octokit/webhooks": "^7.18.1", - "@probot/get-private-key": "^1.1.0", - "@probot/octokit-plugin-config": "^1.0.0", - "@probot/pino": "^2.2.0", - "@types/express": "^4.17.9", - "@types/ioredis": "^4.17.8", - "@types/pino": "^6.3.4", - "@types/pino-http": "^5.0.6", - "@types/update-notifier": "^5.0.0", - "commander": "^6.2.0", - "deepmerge": "^4.2.2", - "deprecation": "^2.3.1", - "dotenv": "^8.2.0", - "eventsource": "^1.0.7", - "express": "^4.17.1", - "hbs": "^4.1.1", - "ioredis": "^4.19.2", - "js-yaml": "^3.14.1", - "lru-cache": "^6.0.0", - "octokit-auth-probot": "^1.2.2", - "pino": "^6.7.0", - "pino-http": "^5.3.0", - "pkg-conf": "^3.1.0", - "resolve": "^1.19.0", - "semver": "^7.3.4", - "update-dotenv": "^1.1.1", - "update-notifier": "^5.0.1", - "uuid": "^8.3.2" - } - }, "propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", diff --git a/package.json b/package.json index 12b0117..f386ccc 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "test": "node test.js" }, "dependencies": { - "probot": "^11.0.5" + "@probot/adapter-aws-lambda-serverless": "^2.0.0" }, "repository": "https://github.com/probot/example-aws-lambda-serverless", "keywords": [], diff --git a/test.js b/test.js index bd1ab35..62e95ad 100644 --- a/test.js +++ b/test.js @@ -4,7 +4,10 @@ const assert = require("uvu/assert"); const nock = require("nock"); nock.disableNetConnect(); -const { Probot, ProbotOctokit } = require("probot"); +const { + Probot, + ProbotOctokit, +} = require("@probot/adapter-aws-lambda-serverless"); const app = require("./app");