@mochabug/adaptkit
Version:
A cmd to create, emulate and publish Mochabug Adapt plugins
56 lines (54 loc) • 1.69 kB
text/typescript
import {
ConnectError,
mapConnectErrorToHttpStatus,
} from "@mochabug/adapt-sdk/api";
import {
ExternalExecutorRouter,
CronExecutorRouter
} from '@mochabug/adapt-sdk/router';
export default {
external: new ExternalExecutorRouter()
.useRequestLogging()
.useBearerAuthorization(['/api'])
.useErrorHandling(async (e) => {
console.error(e);
if (e instanceof ConnectError) {
return new Response(null, { status: mapConnectErrorToHttpStatus(e) });
}
return new Response(null, {
status: 500,
statusText: 'Internal server error'
});
})
.add('POST', '/api/done', async (req, api, _route, ctx) => {
const sapi = api.getSessionApi(req.headers.get('Authorization')!);
ctx.waitUntil(sapi.send('output', {}));
return new Response();
})
.add('GET', '{/*any}', async (_, api) => {
const res = await api.readFile(
'browser/___VERTEX_NAME___/executor.html'
);
return new Response(res.content, {
headers: { 'Content-Type': 'text/html; charset=utf-8' }
});
}),
internal: new CronExecutorRouter()
.onStart(async (start, _api) => {
console.log('Start has been called');
console.log(start);
})
.onStop(async (stop, _api) => {
console.log('Stop has been called');
console.log(stop);
})
.onExchange(async (res, _api, name) => {
console.log(`Exchange ${name} has been called`);
console.log(res);
})
.onCron(async (cron, api, ctx) => {
console.log('Received cron event');
ctx.waitUntil(api.send('output', {}));
console.log(cron);
})
};