abi.js
Version:
[![typescript-icon]][typescript-link] [![license-icon]][license-link] [![status-icon]][status-link] [![ci-icon]][ci-link] [![twitter-icon]][twitter-link]
56 lines (55 loc) • 2.06 kB
JavaScript
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _Server_handlers;
import { serve } from './serve.js';
export class Server {
constructor(root, assets = '') {
Object.defineProperty(this, "root", {
enumerable: true,
configurable: true,
writable: true,
value: root
});
Object.defineProperty(this, "assets", {
enumerable: true,
configurable: true,
writable: true,
value: assets
});
_Server_handlers.set(this, new Set());
this.fetch = this.fetch.bind(this);
}
pipe(handler, ...handlers) {
__classPrivateFieldGet(this, _Server_handlers, "f").add(handler);
for (const _handler of handlers) {
__classPrivateFieldGet(this, _Server_handlers, "f").add(_handler);
}
return this;
}
async fetch(request) {
for (const handler of __classPrivateFieldGet(this, _Server_handlers, "f")) {
const response = await handler(request);
if (response.ok) {
return response;
}
}
return this.error(`Cannot ${request.method} ${request.url}`);
}
start() {
serve(this.fetch);
}
listen(arg1, arg2) {
const args = [arg1, arg2].filter((arg) => arg !== undefined && arg !== null);
serve(...args, this.fetch);
}
error(err) {
console.log(`Unexpected server error: ${err}`);
return new Response('Error 500: Server error.', {
status: 500,
});
}
}
_Server_handlers = new WeakMap();