UNPKG

elysia

Version:

Ergonomic Framework for Human

170 lines (169 loc) 5.95 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var request_exports = {}; __export(request_exports, { ElysiaRequest: () => ElysiaRequest }); module.exports = __toCommonJS(request_exports); class ElysiaRequest { constructor(input, init) { this.input = input; this.init = init; this.cache = "default"; this.credentials = "omit"; this.destination = ""; this.integrity = ""; this.method = "GET"; this.mode = "no-cors"; this.redirect = "manual"; this.referrerPolicy = ""; this.keepalive = false; this.duplex = "half"; this.bodyUsed = false; if (typeof input === "string") this.url = input; else if (input instanceof URL) this.url = input.href; else if (input instanceof Request) this.url = input.url; else throw new TypeError("Invalid url"); if (init) { if (init.method) this.method = init.method; if (init.keepalive) this.keepalive = init.keepalive; if (init.redirect) this.redirect = init.redirect; if (init.integrity) this.integrity = init.integrity; if (init.signal) this._signal = init.signal; if (init.credentials) this.credentials = init.credentials; if (init.mode) this.mode = init.mode; if (init.referrerPolicy) this.referrerPolicy = init.referrerPolicy; if (init.duplex) this.duplex = init.duplex; } } get headers() { if (this._headers) return this._headers; if (!this.init?.headers) return this._headers = new Headers(); const headers = this.init.headers; if (Array.isArray(headers)) return this._headers = new Headers(headers); if (headers instanceof Headers) return this._headers = headers; if (headers) return this._headers = new Headers(headers); return this._headers = new Headers(); } get signal() { if (this._signal) return this._signal; return this._signal = new AbortController().signal; } get body() { if (this.method === "GET" || this.method === "HEAD" || !this.init?.body) return null; const body = this.init.body; if (body instanceof ReadableStream) return body; if (body instanceof ArrayBuffer) return new ReadableStream({ start(controller) { controller.enqueue(body); controller.close(); } }); if (body instanceof Blob) return body.stream(); if (typeof body === "string") return new ReadableStream({ start(controller) { controller.enqueue(new TextEncoder().encode(body)); controller.close(); } }); if (body instanceof URLSearchParams || body instanceof FormData) return new ReadableStream({ start(controller) { controller.enqueue( new TextEncoder().encode(body.toString()) ); controller.close(); } }); if (body instanceof DataView) return new ReadableStream({ start(controller) { controller.enqueue(body.buffer); controller.close(); } }); if (Symbol.iterator in body) return new ReadableStream({ start(controller) { for (const chunk of body) controller.enqueue(chunk); controller.close(); } }); if (Symbol.asyncIterator in body) return new ReadableStream({ async start(controller) { for await (const chunk of body) controller.enqueue(chunk); controller.close(); } }); return null; } async arrayBuffer() { if (this.init?.body instanceof ArrayBuffer) return this.init.body; if (!this.body) return new ArrayBuffer(0); const chunks = []; for await (const chunk of this.body) chunks.push(chunk); return Buffer.concat(chunks); } async blob() { if (this.init?.body instanceof Blob) return this.init.body; const buffer = await this.arrayBuffer(); return new Blob([buffer]); } async formData() { if (this.init?.body instanceof FormData) return this.init.body; throw new Error("Unable to parse body as FormData"); } async json() { if (this.init?.body instanceof ReadableStream) return JSON.parse(await readableStreamToString(this.init.body)); if (typeof this.init?.body === "string") return JSON.parse(this.init.body); if (this.init?.body instanceof ArrayBuffer) return JSON.parse(Buffer.from(this.init.body).toString()); return JSON.parse(Buffer.from(await this.arrayBuffer()).toString()); } async text() { if (this.init?.body instanceof ReadableStream) return readableStreamToString(this.init.body); if (typeof this.init?.body === "string") return this.init.body; if (this.init?.body instanceof ArrayBuffer) return Buffer.from(this.init.body).toString(); const buffer = await this.arrayBuffer(); return Buffer.from(buffer).toString(); } clone() { return new ElysiaRequest(this.input, this.init); } } async function readableStreamToString(stream) { const chunks = []; for await (const chunk of stream) chunks.push(chunk); return Buffer.from(Buffer.concat(chunks)).toString(); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { ElysiaRequest });