refactor(github-app): 调整github app 在vercel的兼容方案

pull/90/head
moonrailgun 2 years ago
parent 12ac098f96
commit 44fca6f633

@ -0,0 +1,11 @@
const app = require('express')();
const { v4 } = require('uuid');
const { createProbot } = require('probot');
const { appFn, buildRouter } = require('../src/app');
const probot = createProbot();
probot.load(appFn, {
getRouter: (path) => app,
});
module.exports = app;

@ -21,6 +21,7 @@
"axios": "^0.21.1", "axios": "^0.21.1",
"body-parser": "^1.20.1", "body-parser": "^1.20.1",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"express": "^4.18.2",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"probot": "^12.3.0", "probot": "^12.3.0",
"probot-metadata": "^2.1.0" "probot-metadata": "^2.1.0"

@ -207,14 +207,17 @@ function createTailchatClient(tailchatHost = defaultTailchatApiUrl) {
return tailchatClient; return tailchatClient;
} }
function buildRouter( export function buildRouter(
app: Probot, app: Probot,
getRouter: Parameters<ApplicationFunction>[1]['getRouter'] getRouter: Parameters<ApplicationFunction>[1]['getRouter']
) { ) {
if (getRouter) { if (getRouter) {
getRouter('/') getRouter('/')
.get('/', (_req, res) => { .get('/api', (_req, res) => {
res.send('Hello World! Github app server is working!'); res.send('Hello World! Github app api server is working!');
})
.get('/api/message/webhook', (_req, res) => {
res.send('Please use POST method');
}) })
.post('/message/webhook', bodyParser.json(), (req, res) => { .post('/message/webhook', bodyParser.json(), (req, res) => {
(async () => { (async () => {

@ -0,0 +1,6 @@
{
"rewrites": [
{ "source": "/api/(.*)", "destination": "/api" },
{ "source": "/api/github/webhooks", "destination": "/api/github/webhooks" }
]
}

@ -154,6 +154,7 @@ importers:
axios: ^0.21.1 axios: ^0.21.1
body-parser: ^1.20.1 body-parser: ^1.20.1
dotenv: ^16.0.3 dotenv: ^16.0.3
express: ^4.18.2
jest: 27.5.1 jest: 27.5.1
lodash: ^4.17.21 lodash: ^4.17.21
nock: ^13.0.5 nock: ^13.0.5
@ -163,11 +164,12 @@ importers:
smee-client: ^1.2.2 smee-client: ^1.2.2
ts-jest: 27.1.4 ts-jest: 27.1.4
ts-node: ^10.9.1 ts-node: ^10.9.1
typescript: ^4.1.3 typescript: ^4.8.2
dependencies: dependencies:
axios: 0.21.4 axios: 0.21.4
body-parser: 1.20.1 body-parser: 1.20.1
dotenv: 16.0.3 dotenv: 16.0.3
express: 4.18.2
lodash: 4.17.21 lodash: 4.17.21
probot: 12.3.0 probot: 12.3.0
probot-metadata: 2.1.0_probot@12.3.0 probot-metadata: 2.1.0_probot@12.3.0
@ -180,9 +182,9 @@ importers:
nock: 13.2.9 nock: 13.2.9
nodemon: 2.0.20 nodemon: 2.0.20
smee-client: 1.2.3 smee-client: 1.2.3
ts-jest: 27.1.4_ycpvkzuynwz3ym5w5cufqamazq ts-jest: 27.1.4_n4jzo3ixy42kfaqevs43wjx5ui
ts-node: 10.9.1_k2dsl7zculo2nmh5s33pladmoa ts-node: 10.9.1_4hee3ckhxcse3era5mxqjwg7u4
typescript: 4.8.2 typescript: 4.9.5
apps/widget: apps/widget:
specifiers: specifiers:
@ -5547,10 +5549,10 @@ packages:
'@types/node': 18.11.18 '@types/node': 18.11.18
chalk: 4.1.2 chalk: 4.1.2
cosmiconfig: 7.1.0 cosmiconfig: 7.1.0
cosmiconfig-typescript-loader: 2.0.2_awa2wsr5thmg3i7jqycphctjfq cosmiconfig-typescript-loader: 2.0.2_bdgp3l2zgaopogaavxusmetvge
lodash: 4.17.21 lodash: 4.17.21
resolve-from: 5.0.0 resolve-from: 5.0.0
typescript: 4.9.4 typescript: 4.9.5
transitivePeerDependencies: transitivePeerDependencies:
- '@swc/core' - '@swc/core'
- '@swc/wasm' - '@swc/wasm'
@ -12883,7 +12885,7 @@ packages:
resolution: {integrity: sha512-YSLRnAS62iP/vcjHTMbsYtW9RJ7LIMVgp3SwTa8/fV4sE8hjCYQee5LPI4JFbx2oIF5Mw9E1ekkWJu9pHCccrA==} resolution: {integrity: sha512-YSLRnAS62iP/vcjHTMbsYtW9RJ7LIMVgp3SwTa8/fV4sE8hjCYQee5LPI4JFbx2oIF5Mw9E1ekkWJu9pHCccrA==}
dependencies: dependencies:
'@types/bluebird': 3.5.38 '@types/bluebird': 3.5.38
typescript: 4.9.4 typescript: 4.9.5
dev: true dev: true
/@types/ejs/3.1.1: /@types/ejs/3.1.1:
@ -17826,7 +17828,7 @@ packages:
vary: 1.1.2 vary: 1.1.2
dev: false dev: false
/cosmiconfig-typescript-loader/2.0.2_awa2wsr5thmg3i7jqycphctjfq: /cosmiconfig-typescript-loader/2.0.2_bdgp3l2zgaopogaavxusmetvge:
resolution: {integrity: sha512-KmE+bMjWMXJbkWCeY4FJX/npHuZPNr9XF9q9CIQ/bpFwi1qHfCmSiKarrCcRa0LO4fWjk93pVoeRtJAkTGcYNw==} resolution: {integrity: sha512-KmE+bMjWMXJbkWCeY4FJX/npHuZPNr9XF9q9CIQ/bpFwi1qHfCmSiKarrCcRa0LO4fWjk93pVoeRtJAkTGcYNw==}
engines: {node: '>=12', npm: '>=6'} engines: {node: '>=12', npm: '>=6'}
peerDependencies: peerDependencies:
@ -17835,8 +17837,8 @@ packages:
dependencies: dependencies:
'@types/node': 18.11.18 '@types/node': 18.11.18
cosmiconfig: 7.1.0 cosmiconfig: 7.1.0
ts-node: 10.9.1_awa2wsr5thmg3i7jqycphctjfq ts-node: 10.9.1_bdgp3l2zgaopogaavxusmetvge
typescript: 4.9.4 typescript: 4.9.5
transitivePeerDependencies: transitivePeerDependencies:
- '@swc/core' - '@swc/core'
- '@swc/wasm' - '@swc/wasm'
@ -24381,7 +24383,7 @@ packages:
pretty-format: 27.5.1 pretty-format: 27.5.1
slash: 3.0.0 slash: 3.0.0
strip-json-comments: 3.1.1 strip-json-comments: 3.1.1
ts-node: 10.9.1_k2dsl7zculo2nmh5s33pladmoa ts-node: 10.9.1_4hee3ckhxcse3era5mxqjwg7u4
transitivePeerDependencies: transitivePeerDependencies:
- bufferutil - bufferutil
- canvas - canvas
@ -36822,7 +36824,7 @@ packages:
yargs-parser: 20.2.9 yargs-parser: 20.2.9
dev: true dev: true
/ts-jest/27.1.4_r5n7iohbfbguzk5ispbdybm75m: /ts-jest/27.1.4_n4jzo3ixy42kfaqevs43wjx5ui:
resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==} resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
hasBin: true hasBin: true
@ -36843,7 +36845,7 @@ packages:
esbuild: esbuild:
optional: true optional: true
dependencies: dependencies:
'@types/jest': 26.0.24 '@types/jest': 27.5.2
bs-logger: 0.2.6 bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0 fast-json-stable-stringify: 2.1.0
jest: 27.5.1_ts-node@10.9.1 jest: 27.5.1_ts-node@10.9.1
@ -36852,11 +36854,11 @@ packages:
lodash.memoize: 4.1.2 lodash.memoize: 4.1.2
make-error: 1.3.6 make-error: 1.3.6
semver: 7.3.7 semver: 7.3.7
typescript: 4.7.4 typescript: 4.9.5
yargs-parser: 20.2.9 yargs-parser: 20.2.9
dev: true dev: true
/ts-jest/27.1.4_ycpvkzuynwz3ym5w5cufqamazq: /ts-jest/27.1.4_r5n7iohbfbguzk5ispbdybm75m:
resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==} resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
hasBin: true hasBin: true
@ -36877,7 +36879,7 @@ packages:
esbuild: esbuild:
optional: true optional: true
dependencies: dependencies:
'@types/jest': 27.5.2 '@types/jest': 26.0.24
bs-logger: 0.2.6 bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0 fast-json-stable-stringify: 2.1.0
jest: 27.5.1_ts-node@10.9.1 jest: 27.5.1_ts-node@10.9.1
@ -36886,7 +36888,7 @@ packages:
lodash.memoize: 4.1.2 lodash.memoize: 4.1.2
make-error: 1.3.6 make-error: 1.3.6
semver: 7.3.7 semver: 7.3.7
typescript: 4.8.2 typescript: 4.7.4
yargs-parser: 20.2.9 yargs-parser: 20.2.9
dev: true dev: true
@ -36903,6 +36905,37 @@ packages:
tweetnacl: 1.0.3 tweetnacl: 1.0.3
dev: true dev: true
/ts-node/10.9.1_4hee3ckhxcse3era5mxqjwg7u4:
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
hasBin: true
peerDependencies:
'@swc/core': '>=1.2.50'
'@swc/wasm': '>=1.2.50'
'@types/node': '*'
typescript: '>=2.7'
peerDependenciesMeta:
'@swc/core':
optional: true
'@swc/wasm':
optional: true
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.9
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.3
'@types/node': 18.7.11
acorn: 8.8.1
acorn-walk: 8.2.0
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
typescript: 4.9.5
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
dev: true
/ts-node/10.9.1_awa2wsr5thmg3i7jqycphctjfq: /ts-node/10.9.1_awa2wsr5thmg3i7jqycphctjfq:
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
hasBin: true hasBin: true
@ -36932,8 +36965,9 @@ packages:
typescript: 4.9.4 typescript: 4.9.4
v8-compile-cache-lib: 3.0.1 v8-compile-cache-lib: 3.0.1
yn: 3.1.1 yn: 3.1.1
dev: false
/ts-node/10.9.1_k2dsl7zculo2nmh5s33pladmoa: /ts-node/10.9.1_bdgp3l2zgaopogaavxusmetvge:
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -36952,14 +36986,14 @@ packages:
'@tsconfig/node12': 1.0.11 '@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3 '@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.3 '@tsconfig/node16': 1.0.3
'@types/node': 18.7.11 '@types/node': 18.11.18
acorn: 8.8.1 acorn: 8.8.1
acorn-walk: 8.2.0 acorn-walk: 8.2.0
arg: 4.1.3 arg: 4.1.3
create-require: 1.1.1 create-require: 1.1.1
diff: 4.0.2 diff: 4.0.2
make-error: 1.3.6 make-error: 1.3.6
typescript: 4.8.2 typescript: 4.9.5
v8-compile-cache-lib: 3.0.1 v8-compile-cache-lib: 3.0.1
yn: 3.1.1 yn: 3.1.1
dev: true dev: true

Loading…
Cancel
Save