From 123f2b78eec0c3f21701779fe0a9d25bce0aa72a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20P=C4=99dzich?= Date: Thu, 6 Jul 2023 13:08:59 +0200 Subject: [PATCH] Replace AWS Lambda adapter with custom function --- appFn.ts | 4 +-- netlify/functions/validate-pr.ts | 22 ++++++++++++++++ netlify/functions/validate-pr/index.ts | 14 ----------- netlify/functions/validate-pr/package.json | 4 --- package-lock.json | 29 ++++++++++++++++++++++ package.json | 1 + 6 files changed, 54 insertions(+), 20 deletions(-) create mode 100644 netlify/functions/validate-pr.ts delete mode 100644 netlify/functions/validate-pr/index.ts delete mode 100644 netlify/functions/validate-pr/package.json diff --git a/appFn.ts b/appFn.ts index fa185ad..8570f52 100644 --- a/appFn.ts +++ b/appFn.ts @@ -1,11 +1,11 @@ -import { ApplicationFunction } from 'probot'; import getMetaData from 'metadata-scraper'; import { getPlaylistIdFromUrl } from './getPlaylistIdFromUrl'; +import { Probot } from 'probot'; type ReviewEvent = 'REQUEST_CHANGES' | 'COMMENT' | 'APPROVE'; -export const appFn: ApplicationFunction = (app) => { +export const appFn = (app: Probot) => { app.on( ['pull_request.opened', 'pull_request.synchronize'], async ({ payload, octokit }) => { diff --git a/netlify/functions/validate-pr.ts b/netlify/functions/validate-pr.ts new file mode 100644 index 0000000..ac518ba --- /dev/null +++ b/netlify/functions/validate-pr.ts @@ -0,0 +1,22 @@ +import type { Handler, HandlerEvent, HandlerContext } from '@netlify/functions'; +import { createProbot } from 'probot'; + +import { appFn } from '../../appFn'; + +const privateKey = (process.env.PRIVATE_KEY as string).replace(/\\n/gm, '\n'); + +const handler: Handler = async ( + event: HandlerEvent, + context: HandlerContext +) => { + const probot = createProbot({ overrides: { privateKey } }); + + await appFn(probot); + + return { + statusCode: 200, + body: 'Playlist Entry Validator by Maciej Pędzich' + }; +}; + +export { handler }; diff --git a/netlify/functions/validate-pr/index.ts b/netlify/functions/validate-pr/index.ts deleted file mode 100644 index f62dba8..0000000 --- a/netlify/functions/validate-pr/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - createLambdaFunction, - createProbot -} from '@probot/adapter-aws-lambda-serverless'; - -import { appFn } from '../../../appFn'; - -const privateKey = (process.env.PRIVATE_KEY as string).replace(/\\n/gm, '\n'); - -const handler = createLambdaFunction(appFn, { - probot: createProbot({ overrides: { privateKey } }) -}); - -export { handler }; diff --git a/netlify/functions/validate-pr/package.json b/netlify/functions/validate-pr/package.json deleted file mode 100644 index 1c40cbf..0000000 --- a/netlify/functions/validate-pr/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "dummy-package-json", - "version": "1.0.0" -} diff --git a/package-lock.json b/package-lock.json index 3a829e0..0dcefa8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "MIT", "dependencies": { + "@netlify/functions": "github:netlify/functions", "@probot/adapter-aws-lambda-serverless": "^3.0.3", "metadata-scraper": "^0.2.60", "probot": "^12.2.8" @@ -64,6 +65,17 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@netlify/functions": { + "version": "1.6.0", + "resolved": "git+ssh://git@github.com/netlify/functions.git#3e1d890892fb6f1975ffaf92a78de68253432602", + "license": "MIT", + "dependencies": { + "is-promise": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@octokit/auth-app": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.5.tgz", @@ -2286,6 +2298,11 @@ "node": ">=0.10.0" } }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, "node_modules/jmespath": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", @@ -3828,6 +3845,13 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@netlify/functions": { + "version": "git+ssh://git@github.com/netlify/functions.git#3e1d890892fb6f1975ffaf92a78de68253432602", + "from": "@netlify/functions@github:netlify/functions", + "requires": { + "is-promise": "^4.0.0" + } + }, "@octokit/auth-app": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.5.tgz", @@ -5674,6 +5698,11 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" }, + "is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, "jmespath": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", diff --git a/package.json b/package.json index 77e7fa7..16ae4ab 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ }, "homepage": "https://github.com/maciejpedzich/mackorone-playlist-pr-bot#readme", "dependencies": { + "@netlify/functions": "github:netlify/functions", "@probot/adapter-aws-lambda-serverless": "^3.0.3", "metadata-scraper": "^0.2.60", "probot": "^12.2.8"