Spaces:
Running
Running
| // src/utils/RequestController.ts | |
| import { invariant } from "outvariant"; | |
| import { DeferredPromise } from "@open-draft/deferred-promise"; | |
| var RequestController = class { | |
| constructor(request) { | |
| this.request = request; | |
| this.responsePromise = new DeferredPromise(); | |
| } | |
| respondWith(response) { | |
| invariant( | |
| this.responsePromise.state === "pending", | |
| 'Failed to respond to "%s %s" request: the "request" event has already been responded to.', | |
| this.request.method, | |
| this.request.url | |
| ); | |
| this.responsePromise.resolve(response); | |
| } | |
| }; | |
| // src/utils/toInteractiveRequest.ts | |
| function toInteractiveRequest(request) { | |
| const requestController = new RequestController(request); | |
| Reflect.set( | |
| request, | |
| "respondWith", | |
| requestController.respondWith.bind(requestController) | |
| ); | |
| return { | |
| interactiveRequest: request, | |
| requestController | |
| }; | |
| } | |
| // src/utils/emitAsync.ts | |
| async function emitAsync(emitter, eventName, ...data) { | |
| const listners = emitter.listeners(eventName); | |
| if (listners.length === 0) { | |
| return; | |
| } | |
| for (const listener of listners) { | |
| await listener.apply(emitter, data); | |
| } | |
| } | |
| export { | |
| toInteractiveRequest, | |
| emitAsync | |
| }; | |
| //# sourceMappingURL=chunk-OUWBQF3Z.mjs.map |