elysia 2.0.0-exp.2 → 2.0.0-exp.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.js +2 -0
- package/dist/adapter/bun/index.d.ts +2 -25
- package/dist/adapter/bun/index.js +18 -12
- package/dist/adapter/bun/index.mjs +19 -13
- package/dist/adapter/bun/router.js +1 -1
- package/dist/adapter/bun/router.mjs +1 -1
- package/dist/adapter/constants.d.ts +3 -26
- package/dist/adapter/index.d.ts +1 -26
- package/dist/adapter/index.js +1 -17
- package/dist/adapter/index.mjs +1 -17
- package/dist/adapter/types.d.ts +1 -0
- package/dist/adapter/utils.d.ts +3 -4
- package/dist/adapter/utils.js +83 -81
- package/dist/adapter/utils.mjs +82 -80
- package/dist/adapter/web-standard/handler.js +6 -3
- package/dist/adapter/web-standard/handler.mjs +6 -3
- package/dist/adapter/web-standard/index.d.ts +2 -26
- package/dist/adapter/web-standard/index.js +12 -1
- package/dist/adapter/web-standard/index.mjs +12 -1
- package/dist/base.d.ts +38 -68
- package/dist/base.js +133 -97
- package/dist/base.mjs +133 -97
- package/dist/compile/aot.d.ts +22 -1
- package/dist/compile/aot.js +22 -0
- package/dist/compile/aot.mjs +22 -0
- package/dist/compile/handler/index.d.ts +2 -2
- package/dist/compile/handler/index.js +85 -456
- package/dist/compile/handler/index.mjs +86 -457
- package/dist/compile/handler/jit.d.ts +35 -0
- package/dist/compile/handler/jit.js +445 -0
- package/dist/compile/handler/jit.mjs +443 -0
- package/dist/compile/handler/params.js +3 -2
- package/dist/compile/handler/params.mjs +4 -3
- package/dist/compile/handler/reconstruct.d.ts +13 -0
- package/dist/compile/handler/reconstruct.js +29 -0
- package/dist/compile/handler/reconstruct.mjs +28 -0
- package/dist/compile/handler/utils.d.ts +2 -1
- package/dist/compile/handler/utils.js +9 -3
- package/dist/compile/handler/utils.mjs +9 -4
- package/dist/compile/jit-probe.d.ts +19 -0
- package/dist/compile/jit-probe.js +38 -0
- package/dist/compile/jit-probe.mjs +36 -0
- package/dist/cookie/index.d.ts +4 -3
- package/dist/cookie/index.js +2 -1
- package/dist/cookie/index.mjs +2 -1
- package/dist/cookie/serialize.d.ts +6 -0
- package/dist/cookie/serialize.js +28 -0
- package/dist/cookie/serialize.mjs +27 -0
- package/dist/cookie/utils.d.ts +1 -2
- package/dist/cookie/utils.js +2 -23
- package/dist/cookie/utils.mjs +5 -25
- package/dist/handler/error.js +2 -2
- package/dist/handler/error.mjs +3 -3
- package/dist/handler/fetch.js +49 -42
- package/dist/handler/fetch.mjs +50 -43
- package/dist/index.d.ts +13 -8
- package/dist/index.js +11 -4
- package/dist/index.mjs +7 -6
- package/dist/parse-query.js +1 -1
- package/dist/parse-query.mjs +1 -1
- package/dist/plugin/bun.d.ts +10 -0
- package/dist/plugin/bun.js +18 -1
- package/dist/plugin/bun.mjs +19 -2
- package/dist/plugin/core.d.ts +61 -1
- package/dist/plugin/core.js +90 -10
- package/dist/plugin/core.mjs +90 -12
- package/dist/plugin/esbuild.d.ts +10 -0
- package/dist/plugin/esbuild.js +18 -1
- package/dist/plugin/esbuild.mjs +19 -2
- package/dist/plugin/source.d.ts +38 -1
- package/dist/plugin/source.js +104 -13
- package/dist/plugin/source.mjs +102 -14
- package/dist/plugin/vite.d.ts +7 -0
- package/dist/plugin/vite.js +22 -1
- package/dist/plugin/vite.mjs +23 -2
- package/dist/sucrose.js +23 -10
- package/dist/sucrose.mjs +23 -10
- package/dist/trace.d.ts +1 -1
- package/dist/trace.js +4 -6
- package/dist/trace.mjs +4 -6
- package/dist/type/bridge.d.ts +9 -8
- package/dist/type/coerce.d.ts +20 -2
- package/dist/type/coerce.js +110 -0
- package/dist/type/coerce.mjs +109 -2
- package/dist/type/compat.js +4 -3
- package/dist/type/compat.mjs +2 -1
- package/dist/type/constants.d.ts +1 -1
- package/dist/type/elysia/boolean-string.js +1 -1
- package/dist/type/elysia/boolean-string.mjs +1 -1
- package/dist/type/elysia/file-type.js +1 -1
- package/dist/type/elysia/file-type.mjs +1 -1
- package/dist/type/elysia/integer-string.js +1 -1
- package/dist/type/elysia/integer-string.mjs +1 -1
- package/dist/type/exports.js +29 -2059
- package/dist/type/exports.mjs +7 -295
- package/dist/type/index.d.ts +6 -2
- package/dist/type/index.js +4 -0
- package/dist/type/index.mjs +3 -1
- package/dist/type/types.d.ts +1 -1
- package/dist/type/utils.js +4 -4
- package/dist/type/utils.mjs +4 -4
- package/dist/type/validator/custom-error.d.ts +10 -0
- package/dist/type/validator/custom-error.js +113 -0
- package/dist/type/validator/custom-error.mjs +110 -0
- package/dist/type/validator/default-precompute.d.ts +22 -0
- package/dist/type/validator/default-precompute.js +476 -0
- package/dist/type/validator/default-precompute.mjs +465 -0
- package/dist/type/validator/frozen-check.d.ts +11 -0
- package/dist/type/validator/frozen-check.js +19 -0
- package/dist/type/validator/frozen-check.mjs +18 -0
- package/dist/type/{validator.d.ts → validator/index.d.ts} +7 -20
- package/dist/type/validator/index.js +572 -0
- package/dist/type/validator/index.mjs +567 -0
- package/dist/type/validator/string-codec-aot.d.ts +9 -0
- package/dist/type/validator/string-codec-aot.js +106 -0
- package/dist/type/validator/string-codec-aot.mjs +102 -0
- package/dist/type/validator/validator-cache.d.ts +21 -0
- package/dist/type/validator/validator-cache.js +163 -0
- package/dist/type/validator/validator-cache.mjs +161 -0
- package/dist/types.d.ts +22 -14
- package/dist/universal/file.d.ts +1 -1
- package/dist/universal/file.js +35 -29
- package/dist/universal/file.mjs +35 -29
- package/dist/utils.d.ts +12 -1
- package/dist/utils.js +89 -45
- package/dist/utils.mjs +88 -46
- package/dist/validator/index.d.ts +1 -1
- package/dist/validator/index.js +15 -2
- package/dist/validator/index.mjs +15 -2
- package/dist/validator/route.d.ts +0 -1
- package/dist/ws/route.js +47 -24
- package/dist/ws/route.mjs +48 -25
- package/package.json +10 -4
- package/dist/type/validator.js +0 -1033
- package/dist/type/validator.mjs +0 -1029
package/dist/adapter/utils.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { hasHeaderShorthand, isBun } from "../universal/constants.mjs";
|
|
2
2
|
import { StatusMap } from "../constants.mjs";
|
|
3
3
|
import { isNotEmpty, nullObject } from "../utils.mjs";
|
|
4
|
-
import { serializeCookie } from "../cookie/
|
|
4
|
+
import { serializeCookie } from "../cookie/serialize.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/adapter/utils.ts
|
|
7
7
|
const setCookie = "set-cookie";
|
|
@@ -100,7 +100,7 @@ function responseToSetHeaders(response, set) {
|
|
|
100
100
|
} else if (set.headers["content-encoding"]) delete set.headers["content-encoding"];
|
|
101
101
|
return set;
|
|
102
102
|
}
|
|
103
|
-
|
|
103
|
+
function enqueueBinaryChunk(controller, chunk) {
|
|
104
104
|
if (chunk instanceof Blob) return chunk.arrayBuffer().then((buffer) => {
|
|
105
105
|
controller.enqueue(new Uint8Array(buffer));
|
|
106
106
|
return true;
|
|
@@ -118,91 +118,93 @@ const enqueueBinaryChunk = (controller, chunk) => {
|
|
|
118
118
|
return true;
|
|
119
119
|
}
|
|
120
120
|
return false;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const isSSE = !skipFormat && (init?.value?.sse ?? generator?.sse ?? set?.headers["content-type"]?.startsWith("text/event-stream"));
|
|
132
|
-
const format = isSSE ? (data) => `data: ${data}\n\n` : (data) => data;
|
|
133
|
-
const contentType = isSSE ? "text/event-stream" : init?.value && typeof init?.value === "object" ? ArrayBuffer.isView(init.value) ? "application/octet-stream" : "application/json" : "text/plain";
|
|
134
|
-
const headers = set?.headers;
|
|
135
|
-
if (headers) {
|
|
136
|
-
if (!headers["transfer-encoding"]) headers["transfer-encoding"] = "chunked";
|
|
137
|
-
if (!headers["content-type"]) headers["content-type"] = contentType;
|
|
138
|
-
if (!headers["cache-control"]) headers["cache-control"] = "no-cache";
|
|
139
|
-
} else set = {
|
|
140
|
-
status: 200,
|
|
141
|
-
headers: {
|
|
142
|
-
"content-type": contentType,
|
|
143
|
-
"transfer-encoding": "chunked",
|
|
144
|
-
"cache-control": "no-cache",
|
|
145
|
-
connection: "keep-alive"
|
|
121
|
+
}
|
|
122
|
+
function createStreamHandler({ mapResponse, mapCompactResponse }) {
|
|
123
|
+
return async (generator, set, request, skipFormat) => {
|
|
124
|
+
let init = generator.next?.();
|
|
125
|
+
if (set) handleSet(set);
|
|
126
|
+
if (init instanceof Promise) init = await init;
|
|
127
|
+
if (init?.value instanceof ReadableStream) generator = init.value;
|
|
128
|
+
else if (init && (typeof init?.done === "undefined" || init?.done)) {
|
|
129
|
+
if (set) return mapResponse(init.value, set, request);
|
|
130
|
+
return mapCompactResponse(init.value, request);
|
|
146
131
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
else if (typeof init.value === "object") try {
|
|
163
|
-
controller.enqueue(format(JSON.stringify(init.value)));
|
|
164
|
-
} catch {
|
|
165
|
-
controller.enqueue(format(init.value.toString()));
|
|
132
|
+
const isSSE = !skipFormat && (init?.value?.sse ?? generator?.sse ?? set?.headers["content-type"]?.startsWith("text/event-stream"));
|
|
133
|
+
const format = isSSE ? (data) => `data: ${data}\n\n` : (data) => data;
|
|
134
|
+
const contentType = isSSE ? "text/event-stream" : init?.value && typeof init?.value === "object" ? ArrayBuffer.isView(init.value) ? "application/octet-stream" : "application/json" : "text/plain";
|
|
135
|
+
const headers = set?.headers;
|
|
136
|
+
if (headers) {
|
|
137
|
+
if (!headers["transfer-encoding"]) headers["transfer-encoding"] = "chunked";
|
|
138
|
+
if (!headers["content-type"]) headers["content-type"] = contentType;
|
|
139
|
+
if (!headers["cache-control"]) headers["cache-control"] = "no-cache";
|
|
140
|
+
} else set = {
|
|
141
|
+
status: 200,
|
|
142
|
+
headers: {
|
|
143
|
+
"content-type": contentType,
|
|
144
|
+
"transfer-encoding": "chunked",
|
|
145
|
+
"cache-control": "no-cache",
|
|
146
|
+
connection: "keep-alive"
|
|
166
147
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
try {
|
|
177
|
-
const { value: chunk, done } = await iterator.next();
|
|
178
|
-
if (done || end) {
|
|
148
|
+
};
|
|
149
|
+
const iterator = typeof generator.next === "function" ? generator : generator[Symbol.asyncIterator]();
|
|
150
|
+
let end = false;
|
|
151
|
+
return new Response(new ReadableStream({
|
|
152
|
+
start(controller) {
|
|
153
|
+
request?.signal?.addEventListener("abort", () => {
|
|
154
|
+
end = true;
|
|
155
|
+
iterator.return?.();
|
|
179
156
|
try {
|
|
180
157
|
controller.close();
|
|
181
158
|
} catch {}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
if (
|
|
185
|
-
if (
|
|
186
|
-
else if (
|
|
187
|
-
|
|
188
|
-
controller.enqueue(format(JSON.stringify(chunk)));
|
|
159
|
+
});
|
|
160
|
+
if (!init || init.value instanceof ReadableStream || init.value === void 0 || init.value === null) return;
|
|
161
|
+
if (init.value.toSSE) controller.enqueue(init.value.toSSE());
|
|
162
|
+
else if (enqueueBinaryChunk(controller, init.value)) return;
|
|
163
|
+
else if (typeof init.value === "object") try {
|
|
164
|
+
controller.enqueue(format(JSON.stringify(init.value)));
|
|
189
165
|
} catch {
|
|
190
|
-
controller.enqueue(format(
|
|
166
|
+
controller.enqueue(format(init.value.toString()));
|
|
167
|
+
}
|
|
168
|
+
else controller.enqueue(format(init.value.toString()));
|
|
169
|
+
},
|
|
170
|
+
async pull(controller) {
|
|
171
|
+
if (end) {
|
|
172
|
+
try {
|
|
173
|
+
controller.close();
|
|
174
|
+
} catch {}
|
|
175
|
+
return;
|
|
191
176
|
}
|
|
192
|
-
else controller.enqueue(format(chunk.toString()));
|
|
193
|
-
} catch (error) {
|
|
194
|
-
console.warn(error);
|
|
195
177
|
try {
|
|
196
|
-
|
|
197
|
-
|
|
178
|
+
const { value: chunk, done } = await iterator.next();
|
|
179
|
+
if (done || end) {
|
|
180
|
+
try {
|
|
181
|
+
controller.close();
|
|
182
|
+
} catch {}
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (chunk === void 0 || chunk === null) return;
|
|
186
|
+
if (chunk.toSSE) controller.enqueue(chunk.toSSE());
|
|
187
|
+
else if (enqueueBinaryChunk(controller, chunk)) return;
|
|
188
|
+
else if (typeof chunk === "object") try {
|
|
189
|
+
controller.enqueue(format(JSON.stringify(chunk)));
|
|
190
|
+
} catch {
|
|
191
|
+
controller.enqueue(format(chunk.toString()));
|
|
192
|
+
}
|
|
193
|
+
else controller.enqueue(format(chunk.toString()));
|
|
194
|
+
} catch (error) {
|
|
195
|
+
console.warn(error);
|
|
196
|
+
try {
|
|
197
|
+
controller.close();
|
|
198
|
+
} catch {}
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
cancel() {
|
|
202
|
+
end = true;
|
|
203
|
+
iterator.return?.();
|
|
198
204
|
}
|
|
199
|
-
},
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
iterator.return?.();
|
|
203
|
-
}
|
|
204
|
-
}), set);
|
|
205
|
-
};
|
|
205
|
+
}), set);
|
|
206
|
+
};
|
|
207
|
+
}
|
|
206
208
|
async function* streamResponse(response) {
|
|
207
209
|
const body = response.body;
|
|
208
210
|
if (body) yield* body;
|
|
@@ -240,7 +242,7 @@ function mergeStatus(responseStatus, setStatus) {
|
|
|
240
242
|
if (responseStatus === 200) return setStatus;
|
|
241
243
|
return responseStatus;
|
|
242
244
|
}
|
|
243
|
-
|
|
245
|
+
function createResponseHandler(handler) {
|
|
244
246
|
const handleStream = createStreamHandler(handler);
|
|
245
247
|
return (response, set, request) => {
|
|
246
248
|
if (set) {
|
|
@@ -264,7 +266,7 @@ const createResponseHandler = (handler) => {
|
|
|
264
266
|
if (!newResponse.headers.has("content-length") && newResponse.headers.get("transfer-encoding") === "chunked") return handleStream(streamResponse(newResponse), responseToSetHeaders(newResponse, set), request, true);
|
|
265
267
|
return newResponse;
|
|
266
268
|
};
|
|
267
|
-
}
|
|
269
|
+
}
|
|
268
270
|
/**
|
|
269
271
|
* Split async source into `branches` independent iterators
|
|
270
272
|
*
|
|
@@ -2,13 +2,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
2
2
|
const require_universal_constants = require('../../universal/constants.js');
|
|
3
3
|
const require_universal_file = require('../../universal/file.js');
|
|
4
4
|
const require_utils = require('../../utils.js');
|
|
5
|
-
const require_error = require('../../error.js');
|
|
6
5
|
const require_adapter_utils = require('../utils.js');
|
|
6
|
+
const require_error = require('../../error.js');
|
|
7
7
|
|
|
8
8
|
//#region src/adapter/web-standard/handler.ts
|
|
9
9
|
function handleElysiaFile(file, set = { headers: require_utils.nullObject() }, request) {
|
|
10
10
|
const path = file.path;
|
|
11
|
-
const contentType = require_universal_file.mime[path.slice(path.lastIndexOf(".") + 1)];
|
|
11
|
+
const contentType = require_universal_file.mime[path.slice(path.lastIndexOf(".") + 1).toLowerCase()];
|
|
12
12
|
const headers = set.headers;
|
|
13
13
|
if (contentType) headers["content-type"] = contentType;
|
|
14
14
|
if (file.stats && set.status !== 206 && set.status !== 304 && set.status !== 412 && set.status !== 416) return file.stats.then((stat) => {
|
|
@@ -97,7 +97,10 @@ function errorToResponse(error, set) {
|
|
|
97
97
|
return typeof raw?.then === "function" ? raw.then(apply) : apply(raw);
|
|
98
98
|
}
|
|
99
99
|
const headers = set?.headers ?? require_utils.nullObject();
|
|
100
|
-
return Response.json({
|
|
100
|
+
return Response.json(require_error.isProduction() ? {
|
|
101
|
+
name: error?.name,
|
|
102
|
+
message: "Internal Server Error"
|
|
103
|
+
} : {
|
|
101
104
|
name: error?.name,
|
|
102
105
|
message: error?.message,
|
|
103
106
|
cause: error?.cause
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { isBun } from "../../universal/constants.mjs";
|
|
2
2
|
import { mime } from "../../universal/file.mjs";
|
|
3
3
|
import { formToFormData, isNotEmpty, nullObject } from "../../utils.mjs";
|
|
4
|
-
import { ElysiaStatus } from "../../error.mjs";
|
|
5
4
|
import { createResponseHandler, createStreamHandler, handleFile, handleSet } from "../utils.mjs";
|
|
5
|
+
import { ElysiaStatus, isProduction } from "../../error.mjs";
|
|
6
6
|
|
|
7
7
|
//#region src/adapter/web-standard/handler.ts
|
|
8
8
|
function handleElysiaFile(file, set = { headers: nullObject() }, request) {
|
|
9
9
|
const path = file.path;
|
|
10
|
-
const contentType = mime[path.slice(path.lastIndexOf(".") + 1)];
|
|
10
|
+
const contentType = mime[path.slice(path.lastIndexOf(".") + 1).toLowerCase()];
|
|
11
11
|
const headers = set.headers;
|
|
12
12
|
if (contentType) headers["content-type"] = contentType;
|
|
13
13
|
if (file.stats && set.status !== 206 && set.status !== 304 && set.status !== 412 && set.status !== 416) return file.stats.then((stat) => {
|
|
@@ -96,7 +96,10 @@ function errorToResponse(error, set) {
|
|
|
96
96
|
return typeof raw?.then === "function" ? raw.then(apply) : apply(raw);
|
|
97
97
|
}
|
|
98
98
|
const headers = set?.headers ?? nullObject();
|
|
99
|
-
return Response.json({
|
|
99
|
+
return Response.json(isProduction() ? {
|
|
100
|
+
name: error?.name,
|
|
101
|
+
message: "Internal Server Error"
|
|
102
|
+
} : {
|
|
100
103
|
name: error?.name,
|
|
101
104
|
message: error?.message,
|
|
102
105
|
cause: error?.cause
|
|
@@ -1,29 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AnyLocalHook, MaybePromise } from "../../types.js";
|
|
3
|
-
import { Context } from "../../context.js";
|
|
4
|
-
import { AnyElysia } from "../../base.js";
|
|
1
|
+
import { ElysiaAdapterOptions } from "../types.js";
|
|
5
2
|
//#region src/adapter/web-standard/index.d.ts
|
|
6
|
-
declare const WebStandardAdapter:
|
|
7
|
-
parse: {
|
|
8
|
-
default: (context: Context, contentType: string) => string | unknown[] | ArrayBuffer | Record<string, unknown> | Promise<Record<string, unknown>> | Promise<ArrayBuffer> | Promise<string> | Promise<unknown[] | Record<string | number | symbol, undefined>> | undefined;
|
|
9
|
-
json: (context: Context) => MaybePromise<Record<keyof any, undefined> | unknown[]>;
|
|
10
|
-
text: (context: Context) => MaybePromise<string>;
|
|
11
|
-
urlencoded: (context: Context) => MaybePromise<Record<string, string | string[]>>;
|
|
12
|
-
arrayBuffer: (context: Context) => MaybePromise<ArrayBuffer>;
|
|
13
|
-
formData: (context: Context) => MaybePromise<Record<string, unknown>>;
|
|
14
|
-
};
|
|
15
|
-
name: string;
|
|
16
|
-
runtime: "node" | "deno" | "bun" | "cloudflare-worker" | "browser" | "vercel" | "netlify" | "lambda" | "fastly" | "edge" | "unknown" | (string & {});
|
|
17
|
-
isWebStandard: boolean;
|
|
18
|
-
listen?(app: AnyElysia, options: string | number | Partial<Serve>, callback?: ListenCallback): void;
|
|
19
|
-
stop?(app: AnyElysia, closeActiveConnections?: boolean): Promise<void>;
|
|
20
|
-
response: {
|
|
21
|
-
map(response: unknown, set: Context["set"], ...params: unknown[]): unknown;
|
|
22
|
-
compact?(response: unknown, ...params: unknown[]): unknown;
|
|
23
|
-
static?(handle: unknown, hooks: AnyLocalHook, setHeaders?: Context["set"]["headers"], ...params: unknown[]): (() => unknown) | undefined;
|
|
24
|
-
nativeStatic?(handle: unknown, hooks: AnyLocalHook, set?: Context["set"]): (() => MaybePromise<Response>) | undefined;
|
|
25
|
-
};
|
|
26
|
-
fetch?(app: AnyElysia): (request: Request) => MaybePromise<Response>;
|
|
27
|
-
};
|
|
3
|
+
declare const WebStandardAdapter: ElysiaAdapterOptions;
|
|
28
4
|
//#endregion
|
|
29
5
|
export { WebStandardAdapter };
|
|
@@ -14,7 +14,18 @@ const WebStandardAdapter = require_adapter_index.createAdapter({
|
|
|
14
14
|
formData: (context) => context.request.formData().then(require_adapter_web_standard_utils.formDataToObject),
|
|
15
15
|
json: (context) => context.request.json(),
|
|
16
16
|
text: (context) => context.request.text(),
|
|
17
|
-
urlencoded: (context) => context.request.text().then(require_parse_query.parseQuery)
|
|
17
|
+
urlencoded: (context) => context.request.text().then(require_parse_query.parseQuery),
|
|
18
|
+
default(context, contentType) {
|
|
19
|
+
switch (contentType.charCodeAt(12)) {
|
|
20
|
+
case 106: return context.request.json();
|
|
21
|
+
case 120:
|
|
22
|
+
if (contentType.charCodeAt(13) === 45) return context.request.text().then(require_parse_query.parseQuery);
|
|
23
|
+
break;
|
|
24
|
+
case 111: return context.request.arrayBuffer();
|
|
25
|
+
case 114: return context.request.formData().then(require_adapter_web_standard_utils.formDataToObject);
|
|
26
|
+
default: if (contentType.charCodeAt(0) === 116) return context.request.text();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
18
29
|
},
|
|
19
30
|
response: {
|
|
20
31
|
map: require_adapter_web_standard_handler.mapResponse,
|
|
@@ -13,7 +13,18 @@ const WebStandardAdapter = createAdapter({
|
|
|
13
13
|
formData: (context) => context.request.formData().then(formDataToObject),
|
|
14
14
|
json: (context) => context.request.json(),
|
|
15
15
|
text: (context) => context.request.text(),
|
|
16
|
-
urlencoded: (context) => context.request.text().then(parseQuery)
|
|
16
|
+
urlencoded: (context) => context.request.text().then(parseQuery),
|
|
17
|
+
default(context, contentType) {
|
|
18
|
+
switch (contentType.charCodeAt(12)) {
|
|
19
|
+
case 106: return context.request.json();
|
|
20
|
+
case 120:
|
|
21
|
+
if (contentType.charCodeAt(13) === 45) return context.request.text().then(parseQuery);
|
|
22
|
+
break;
|
|
23
|
+
case 111: return context.request.arrayBuffer();
|
|
24
|
+
case 114: return context.request.formData().then(formDataToObject);
|
|
25
|
+
default: if (contentType.charCodeAt(0) === 116) return context.request.text();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
17
28
|
},
|
|
18
29
|
response: {
|
|
19
30
|
map: mapResponse,
|
package/dist/base.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ElysiaStatus } from "./error.js";
|
|
2
2
|
import { TraceHandler } from "./trace.js";
|
|
3
3
|
import { ListenCallback, Serve, Server } from "./universal/server.js";
|
|
4
|
-
import { AddRoute, AddWSRoute, AfterHandler, AfterResponseHandler, AnyErrorConstructor, AnyLocalHook,
|
|
4
|
+
import { AddRoute, AddWSRoute, AfterHandler, AfterResponseHandler, AnyErrorConstructor, AnyLocalHook, BodyHandler, CompiledHandler, CreateEden, DefaultEphemeral, DefaultMetadata, DefaultSingleton, DefinitionBase, DocumentDecoration, ElysiaConfig, ElysiaHandlerToResponseSchemaAmbiguous, EphemeralType, ErrorDefinitionEntry, ErrorHandler, EventScope, ExcludeElysiaResponse, ExtractErrorFromHandle, GracefulHandler, GuardLocalHook, HTTPMethod, InlineHandler, InlineHandlerNonMacro, InputSchema, InputSchemaKey, InternalRoute, IntersectIfObjectSchema, JoinPath, LocalHook, Macro, MacroSchemaChannel, MacroToContext, MacroToProperty, MapResponse, MaybeArray, MaybePromise, MergeElysiaInstances, MergeSchema, MergeScopedSchemas, MetadataBase, NonResolvableMacroKey, ObjectMacroDefs, OptionalHandler, PreHandler, Prettify, PublicRoute, ResolveRouteErrors, RouteBase, SingletonBase, TransformHandler, UnionResponseStatus, UnwrapRoute, WrapFn } from "./types.js";
|
|
5
5
|
import { AnySchema } from "./type/types.js";
|
|
6
6
|
import { ChainNode } from "./utils.js";
|
|
7
7
|
import { Context, ErrorContext, LifecycleContext } from "./context.js";
|
|
@@ -34,6 +34,8 @@ declare class Elysia<const in out BasePath extends string = '', const in out Sco
|
|
|
34
34
|
error?: Map<AnyErrorConstructor, string>;
|
|
35
35
|
parser?: Record<string, BodyHandler<any, any>>;
|
|
36
36
|
hoc?: WrapFn<any>[];
|
|
37
|
+
setup?: GracefulHandler<any>[];
|
|
38
|
+
cleanup?: GracefulHandler<any>[];
|
|
37
39
|
};
|
|
38
40
|
'~hookChain'?: ChainNode;
|
|
39
41
|
server?: Server;
|
|
@@ -43,11 +45,11 @@ declare class Elysia<const in out BasePath extends string = '', const in out Sco
|
|
|
43
45
|
'~map'?: {
|
|
44
46
|
[method: string]: {
|
|
45
47
|
[path: string]: CompiledHandler;
|
|
46
|
-
};
|
|
48
|
+
} | undefined;
|
|
47
49
|
};
|
|
48
50
|
'~staticResponse'?: {
|
|
49
|
-
[
|
|
50
|
-
[
|
|
51
|
+
[method: string]: {
|
|
52
|
+
[path: string]: Response | Promise<Response>;
|
|
51
53
|
};
|
|
52
54
|
};
|
|
53
55
|
'~hasWS'?: boolean;
|
|
@@ -148,11 +150,7 @@ declare class Elysia<const in out BasePath extends string = '', const in out Sco
|
|
|
148
150
|
derive: Singleton['derive'];
|
|
149
151
|
}, Definitions, Metadata, Routes, Ephemeral, Volatile>;
|
|
150
152
|
headers(headers: Record<string, string>): this;
|
|
151
|
-
on<Event extends AppEvent>(event: Event, fn: EventFn<Event>): this;
|
|
152
153
|
request(fn: MaybeArray<PreHandler<{}, Singleton>>): this;
|
|
153
|
-
request(scope: 'local', fn: MaybeArray<PreHandler<{}, Singleton>>): this;
|
|
154
|
-
request(scope: 'plugin', fn: MaybeArray<PreHandler<{}, Singleton>>): this;
|
|
155
|
-
request(scope: 'global', fn: MaybeArray<PreHandler<{}, Singleton>>): this;
|
|
156
154
|
parse(fn: MaybeArray<BodyHandler<MergeSchema<{}, {}, BasePath>, Singleton & {
|
|
157
155
|
derive: Ephemeral['derive'] & Volatile['derive'];
|
|
158
156
|
}>>): this;
|
|
@@ -176,8 +174,21 @@ declare class Elysia<const in out BasePath extends string = '', const in out Sco
|
|
|
176
174
|
parser: Metadata['parser'] & { [name in Name]: BodyHandler<any, any> };
|
|
177
175
|
response: Metadata['response'];
|
|
178
176
|
}, Routes, Ephemeral, Volatile>;
|
|
179
|
-
|
|
180
|
-
|
|
177
|
+
/**
|
|
178
|
+
* ### setup | Life cycle event
|
|
179
|
+
* Called after server is ready for serving
|
|
180
|
+
*
|
|
181
|
+
* ---
|
|
182
|
+
* @example
|
|
183
|
+
* ```typescript
|
|
184
|
+
* new Elysia()
|
|
185
|
+
* .setup(({ server }) => {
|
|
186
|
+
* console.log("Running at ${server?.url}:${server?.port}")
|
|
187
|
+
* })
|
|
188
|
+
* .listen(3000)
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
setup(handler: MaybeArray<GracefulHandler<this>>): this;
|
|
181
192
|
transform(fn: MaybeArray<TransformHandler<MergeSchema<{}, {}, BasePath>, Singleton & {
|
|
182
193
|
derive: Ephemeral['derive'] & Volatile['derive'];
|
|
183
194
|
}>>): this;
|
|
@@ -496,62 +507,6 @@ declare class Elysia<const in out BasePath extends string = '', const in out Sco
|
|
|
496
507
|
parser: Metadata['parser'];
|
|
497
508
|
response: UnionResponseStatus<Metadata['response'], UnionResponseStatus<Ephemeral['response'], Volatile['response']>>;
|
|
498
509
|
}, Routes, DefaultEphemeral, DefaultEphemeral>;
|
|
499
|
-
guard<const Input extends Metadata['macro'] & InputSchema<keyof Definitions['typebox'] & string>, const Schema extends MergeSchema<UnwrapRoute<Input, Definitions['typebox'], BasePath>, MergeSchema<Volatile['schema'], MergeSchema<Ephemeral['schema'], Metadata['schema']>>> & Metadata['schemas'] & Ephemeral['schemas'] & Volatile['schemas'], const MacroContext extends ({} extends Metadata['macroFn'] ? {} : MacroToContext<Metadata['macroFn'], Omit<Input, NonResolvableMacroKey>, Definitions['typebox']>), const BeforeHandle extends MaybeArray<OptionalHandler<Schema, Singleton>>, const AfterHandle extends MaybeArray<AfterHandler<Schema, Singleton>>, const ErrorHandle extends MaybeArray<ErrorHandler<Definitions['error'], Schema, Singleton>>>(hook: GuardLocalHook<Input, Schema & MacroContext, Singleton & {
|
|
500
|
-
derive: Ephemeral['derive'] & Volatile['derive'] & MacroContext['response'];
|
|
501
|
-
}, keyof Metadata['parser'], BeforeHandle, AfterHandle, ErrorHandle> & {
|
|
502
|
-
as: 'plugin';
|
|
503
|
-
schema: 'standalone';
|
|
504
|
-
}): Elysia<BasePath, Scope, Singleton, Definitions, Metadata, Routes, {
|
|
505
|
-
derive: Ephemeral['derive'] & MacroContext['resolve'];
|
|
506
|
-
schema: Ephemeral['schema'];
|
|
507
|
-
schemas: Ephemeral['schemas'] & UnwrapRoute<Input, Definitions['typebox']> & MacroContext;
|
|
508
|
-
response: UnionResponseStatus<Ephemeral['response'], ElysiaHandlerToResponseSchemaAmbiguous<BeforeHandle> & ElysiaHandlerToResponseSchemaAmbiguous<AfterHandle> & ElysiaHandlerToResponseSchemaAmbiguous<ErrorHandle> & MacroContext['return']>;
|
|
509
|
-
error: Ephemeral['error'];
|
|
510
|
-
}, Volatile>;
|
|
511
|
-
guard<const Input extends Metadata['macro'] & InputSchema<keyof Definitions['typebox'] & string>, const Schema extends MergeSchema<UnwrapRoute<Input, Definitions['typebox'], BasePath>, MergeSchema<Volatile['schema'], MergeSchema<Ephemeral['schema'], Metadata['schema']>>> & Metadata['schemas'] & Ephemeral['schemas'] & Volatile['schemas'], const MacroContext extends ({} extends Metadata['macroFn'] ? {} : MacroToContext<Metadata['macroFn'], Omit<Input, NonResolvableMacroKey>, Definitions['typebox']>), const BeforeHandle extends MaybeArray<OptionalHandler<Schema, Singleton>>, const AfterHandle extends MaybeArray<AfterHandler<Schema, Singleton>>, const ErrorHandle extends MaybeArray<ErrorHandler<Definitions['error'], Schema, Singleton>>>(hook: GuardLocalHook<Input, Schema & MacroContext, Singleton & {
|
|
512
|
-
derive: Ephemeral['derive'] & Volatile['derive'] & MacroContext['response'];
|
|
513
|
-
}, keyof Metadata['parser'], BeforeHandle, AfterHandle, ErrorHandle, 'override'> & {
|
|
514
|
-
as: 'plugin';
|
|
515
|
-
}): Elysia<BasePath, Scope, Singleton, Definitions, Metadata, Routes, {
|
|
516
|
-
derive: Ephemeral['derive'] & MacroContext['resolve'];
|
|
517
|
-
schema: {} extends Pick<Input, Extract<keyof Input, InputSchemaKey>> ? Ephemeral['schema'] : MergeSchema<UnwrapRoute<Input, Definitions['typebox']>, Ephemeral['schema']>;
|
|
518
|
-
schemas: Ephemeral['schemas'] & MacroContext;
|
|
519
|
-
response: UnionResponseStatus<Ephemeral['response'], ElysiaHandlerToResponseSchemaAmbiguous<BeforeHandle> & ElysiaHandlerToResponseSchemaAmbiguous<AfterHandle> & ElysiaHandlerToResponseSchemaAmbiguous<ErrorHandle> & MacroContext['return']>;
|
|
520
|
-
error: Ephemeral['error'];
|
|
521
|
-
}, Volatile>;
|
|
522
|
-
guard<const Input extends Metadata['macro'] & InputSchema<keyof Definitions['typebox'] & string>, const Schema extends MergeSchema<UnwrapRoute<Input, Definitions['typebox'], BasePath>, MergeSchema<Volatile['schema'], MergeSchema<Ephemeral['schema'], Metadata['schema']>>> & Metadata['schemas'] & Ephemeral['schemas'] & Volatile['schemas'], const MacroContext extends ({} extends Metadata['macroFn'] ? {} : MacroToContext<Metadata['macroFn'], Omit<Input, NonResolvableMacroKey>, Definitions['typebox']>), const BeforeHandle extends MaybeArray<OptionalHandler<Schema, Singleton>>, const AfterHandle extends MaybeArray<AfterHandler<Schema, Singleton>>, const ErrorHandle extends MaybeArray<ErrorHandler<Definitions['error'], Schema, Singleton>>>(hook: GuardLocalHook<Input, Schema & MacroContext, Singleton & {
|
|
523
|
-
derive: Ephemeral['derive'] & Volatile['derive'] & MacroContext['response'];
|
|
524
|
-
}, keyof Metadata['parser'], BeforeHandle, AfterHandle, ErrorHandle> & {
|
|
525
|
-
as: 'global';
|
|
526
|
-
schema: 'standalone';
|
|
527
|
-
}): Elysia<BasePath, Scope, {
|
|
528
|
-
decorator: Singleton['decorator'];
|
|
529
|
-
store: Singleton['store'];
|
|
530
|
-
derive: Singleton['derive'] & MacroContext['resolve'];
|
|
531
|
-
}, Definitions, {
|
|
532
|
-
schema: Metadata['schema'];
|
|
533
|
-
schemas: Metadata['schemas'] & UnwrapRoute<Input, Definitions['typebox']> & MacroContext;
|
|
534
|
-
macro: Metadata['macro'];
|
|
535
|
-
macroFn: Metadata['macroFn'];
|
|
536
|
-
parser: Metadata['parser'];
|
|
537
|
-
response: UnionResponseStatus<Metadata['response'], ElysiaHandlerToResponseSchemaAmbiguous<BeforeHandle> & ElysiaHandlerToResponseSchemaAmbiguous<AfterHandle> & ElysiaHandlerToResponseSchemaAmbiguous<ErrorHandle> & MacroContext['return']>;
|
|
538
|
-
}, Routes, Ephemeral, Volatile>;
|
|
539
|
-
guard<const Input extends Metadata['macro'] & InputSchema<keyof Definitions['typebox'] & string>, const Schema extends MergeSchema<UnwrapRoute<Input, Definitions['typebox'], BasePath>, MergeSchema<Volatile['schema'], MergeSchema<Ephemeral['schema'], Metadata['schema']>>> & Metadata['schemas'] & Ephemeral['schemas'] & Volatile['schemas'], const MacroContext extends ({} extends Metadata['macroFn'] ? {} : MacroToContext<Metadata['macroFn'], Omit<Input, NonResolvableMacroKey>, Definitions['typebox']>), const BeforeHandle extends MaybeArray<OptionalHandler<Schema, Singleton>>, const AfterHandle extends MaybeArray<AfterHandler<Schema, Singleton>>, const ErrorHandle extends MaybeArray<ErrorHandler<Definitions['error'], Schema, Singleton>>>(hook: GuardLocalHook<Input, Schema & MacroContext, Singleton & {
|
|
540
|
-
derive: Ephemeral['derive'] & Volatile['derive'] & MacroContext['response'];
|
|
541
|
-
}, keyof Metadata['parser'], BeforeHandle, AfterHandle, ErrorHandle, 'override'> & {
|
|
542
|
-
as: 'global';
|
|
543
|
-
}): Elysia<BasePath, Scope, {
|
|
544
|
-
decorator: Singleton['decorator'];
|
|
545
|
-
store: Singleton['store'];
|
|
546
|
-
derive: Singleton['derive'] & MacroContext['resolve'];
|
|
547
|
-
}, Definitions, {
|
|
548
|
-
schema: {} extends Pick<Input, Extract<keyof Input, InputSchemaKey>> ? Metadata['schema'] : MergeSchema<UnwrapRoute<Input, Definitions['typebox']>, Metadata['schema']>;
|
|
549
|
-
schemas: Metadata['schemas'] & MacroContext;
|
|
550
|
-
macro: Metadata['macro'];
|
|
551
|
-
macroFn: Metadata['macroFn'];
|
|
552
|
-
parser: Metadata['parser'];
|
|
553
|
-
response: UnionResponseStatus<Metadata['response'], ElysiaHandlerToResponseSchemaAmbiguous<BeforeHandle> & ElysiaHandlerToResponseSchemaAmbiguous<AfterHandle> & ElysiaHandlerToResponseSchemaAmbiguous<ErrorHandle> & MacroContext['return']>;
|
|
554
|
-
}, Routes, Ephemeral, Volatile>;
|
|
555
510
|
guard<const Input extends Metadata['macro'] & InputSchema<keyof Definitions['typebox'] & string>, const Schema extends MergeSchema<UnwrapRoute<Input, Definitions['typebox'], BasePath>, MergeSchema<Volatile['schema'], MergeSchema<Ephemeral['schema'], Metadata['schema']>>> & Metadata['schemas'] & Ephemeral['schemas'] & Volatile['schemas'], const MacroContext extends ({} extends Metadata['macroFn'] ? {} : MacroToContext<Metadata['macroFn'], Omit<Input, NonResolvableMacroKey>, Definitions['typebox']>), const BeforeHandle extends MaybeArray<OptionalHandler<Schema, Singleton>>, const AfterHandle extends MaybeArray<AfterHandler<Schema, Singleton>>, const ErrorHandle extends MaybeArray<ErrorHandler<Definitions['error'], Schema, Singleton>>>(hook: GuardLocalHook<Input, Schema & MacroContext, Singleton & {
|
|
556
511
|
derive: Ephemeral['derive'] & Volatile['derive'] & MacroContext['response'];
|
|
557
512
|
}, keyof Metadata['parser'], BeforeHandle, AfterHandle, ErrorHandle> & {
|
|
@@ -730,7 +685,7 @@ declare class Elysia<const in out BasePath extends string = '', const in out Sco
|
|
|
730
685
|
* .get('/', ({ user }) => user, { auth: true, role: 'admin' })
|
|
731
686
|
* ```
|
|
732
687
|
*/
|
|
733
|
-
macro<const Body
|
|
688
|
+
macro<const Body extends MacroSchemaChannel<Definitions>, const Headers extends MacroSchemaChannel<Definitions>, const Query extends MacroSchemaChannel<Definitions>, const Params extends MacroSchemaChannel<Definitions>, const Cookie extends MacroSchemaChannel<Definitions>, const NewMacro>(macro: ObjectMacroDefs<Body, Headers, Query, Params, Cookie, NewMacro, MergeSchema<Volatile['schema'], MergeSchema<Ephemeral['schema'], Metadata['schema']>>, MergeScopedSchemas<Metadata['schemas'], Ephemeral['schemas'], Volatile['schemas']>, Singleton & {
|
|
734
689
|
derive: Partial<Ephemeral['derive'] & Volatile['derive']>;
|
|
735
690
|
}, Definitions, Metadata['macro']>): Elysia<BasePath, Scope, Singleton, Definitions, {
|
|
736
691
|
schema: Metadata['schema'];
|
|
@@ -1047,7 +1002,22 @@ declare class Elysia<const in out BasePath extends string = '', const in out Sco
|
|
|
1047
1002
|
listen(options: string | number | Partial<Serve>, callback?: ListenCallback): this;
|
|
1048
1003
|
wrap<T extends (...params: any) => MaybePromise<Response> = (request: Request, ...rest: any[]) => MaybePromise<Response>>(callback: WrapFn<T>): this;
|
|
1049
1004
|
/**
|
|
1050
|
-
*
|
|
1005
|
+
* ### cleanup | Life cycle event
|
|
1006
|
+
* Called after server stop serving request
|
|
1007
|
+
*
|
|
1008
|
+
* ---
|
|
1009
|
+
* @example
|
|
1010
|
+
* ```typescript
|
|
1011
|
+
* new Elysia()
|
|
1012
|
+
* .cleanup((app) => {
|
|
1013
|
+
* closeDatabase()
|
|
1014
|
+
* })
|
|
1015
|
+
* ```
|
|
1016
|
+
*/
|
|
1017
|
+
cleanup(handler: MaybeArray<GracefulHandler<this>>): this;
|
|
1018
|
+
/**
|
|
1019
|
+
* Stop the underlying server (if any), running every `cleanup` handler once
|
|
1020
|
+
* it has stopped. Mirrors `Server.stop()`.
|
|
1051
1021
|
*
|
|
1052
1022
|
* @param closeActiveConnections Pass `true` to terminate in-flight
|
|
1053
1023
|
* requests and WebSocket connections immediately. Defaults to
|