36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
|
import { assert } from '@tldraw/utils'
|
||
|
import { T } from '@tldraw/validate'
|
||
|
import { NextApiRequest, NextApiResponse } from 'next'
|
||
|
import { TLDRAW_ORG } from '../../src/config'
|
||
|
import { standaloneExamplesBranch } from '../../src/flows/standaloneExamplesBranch'
|
||
|
import { getCtxForOrg } from '../../src/getCtxForOrg'
|
||
|
import { wrapRequest } from '../../src/requestWrapper'
|
||
|
|
||
|
const bodySchema = T.object({
|
||
|
tagToRelease: T.string,
|
||
|
apiKey: T.string,
|
||
|
canary: T.boolean.optional(),
|
||
|
})
|
||
|
|
||
|
const handler = wrapRequest(
|
||
|
'/api/on-release',
|
||
|
async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||
|
assert(req.method === 'POST')
|
||
|
const body = bodySchema.validate(req.body)
|
||
|
assert(typeof process.env.DEVELOPER_ACCESS_KEY === 'string')
|
||
|
if (body.apiKey !== process.env.DEVELOPER_ACCESS_KEY) {
|
||
|
res.status(401).send('Bad api key')
|
||
|
return
|
||
|
}
|
||
|
|
||
|
const { tagToRelease } = body
|
||
|
await standaloneExamplesBranch.onCustomHook(await getCtxForOrg(TLDRAW_ORG), {
|
||
|
tagToRelease,
|
||
|
canary: !!body.canary,
|
||
|
})
|
||
|
res.send('Created standalone examples branch')
|
||
|
}
|
||
|
)
|
||
|
|
||
|
export default handler
|