import * as plugins from '../plugins.js'; /** * SW-TypedRequest controller for service worker type-safe RPC endpoint * This provides a separate endpoint for service worker communication */ @plugins.smartserve.Route('/sw-typedrequest') export class SwTypedRequestController { private typedRouter: plugins.typedrequest.TypedRouter; constructor(typedRouter: plugins.typedrequest.TypedRouter) { this.typedRouter = typedRouter; } @plugins.smartserve.Post('/') async handleSwTypedRequest(ctx: plugins.smartserve.IRequestContext): Promise { try { const response = await this.typedRouter.routeAndAddResponse(ctx.body as plugins.typedrequestInterfaces.ITypedRequest); return new Response(plugins.smartjson.stringify(response), { status: 200, headers: { 'Content-Type': 'application/json', }, }); } catch (error) { return new Response(JSON.stringify({ error: 'Invalid request' }), { status: 400, headers: { 'Content-Type': 'application/json', }, }); } } @plugins.smartserve.Head('/') async handleSwTypedRequestHead(): Promise { // HEAD request for online checking from service worker return new Response(null, { status: 200, headers: { 'Content-Type': 'application/json', }, }); } }