dx-server 0.2.1 → 0.5.0
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/README.md +44 -65
- package/cjs/body.d.ts +15 -38
- package/cjs/body.js +104 -75
- package/cjs/dx.d.ts +12 -58
- package/cjs/dx.js +130 -116
- package/cjs/etag.js +1 -1
- package/cjs/express.js +6 -8
- package/cjs/file.d.ts +1 -2
- package/cjs/file.js +4 -4
- package/cjs/index.d.ts +4 -3
- package/cjs/index.js +13 -13
- package/cjs/route.js +4 -4
- package/cjs/static.js +4 -4
- package/esm/body.d.ts +15 -38
- package/esm/body.js +96 -74
- package/esm/dx.d.ts +12 -58
- package/esm/dx.js +126 -115
- package/esm/etag.js +1 -1
- package/esm/express.js +6 -8
- package/esm/file.d.ts +1 -2
- package/esm/file.js +4 -4
- package/esm/index.d.ts +4 -3
- package/esm/index.js +5 -4
- package/esm/route.js +4 -4
- package/esm/static.js +3 -3
- package/package.json +6 -6
- package/cjs/context.d.ts +0 -19
- package/cjs/context.js +0 -32
- package/esm/context.d.ts +0 -19
- package/esm/context.js +0 -28
package/esm/body.d.ts
CHANGED
|
@@ -1,38 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
export
|
|
16
|
-
readonly value: Buffer | undefined;
|
|
17
|
-
chain(): <V>(next: () => V) => Promise<any>;
|
|
18
|
-
with(value: Buffer | undefined): <V_1>(next: () => V_1) => Promise<any>;
|
|
19
|
-
};
|
|
20
|
-
export declare const textBodyContext: {
|
|
21
|
-
readonly value: string | undefined;
|
|
22
|
-
chain(): <V>(next: () => V) => Promise<any>;
|
|
23
|
-
with(value: string | undefined): <V_1>(next: () => V_1) => Promise<any>;
|
|
24
|
-
};
|
|
25
|
-
export declare const urlencodedBodyContext: {
|
|
26
|
-
readonly value: import("qs").ParsedQs | undefined;
|
|
27
|
-
chain(params_0?: {
|
|
28
|
-
simplify?: boolean | undefined;
|
|
29
|
-
} | undefined): <V>(next: () => V) => Promise<any>;
|
|
30
|
-
with(value: import("qs").ParsedQs | undefined): <V_1>(next: () => V_1) => Promise<any>;
|
|
31
|
-
};
|
|
32
|
-
export declare const queryContext: {
|
|
33
|
-
readonly value: import("qs").ParsedQs;
|
|
34
|
-
chain(params_0?: {
|
|
35
|
-
simplify?: boolean | undefined;
|
|
36
|
-
} | undefined): <V>(next: () => V) => Promise<any>;
|
|
37
|
-
with(value: import("qs").ParsedQs): <V_1>(next: () => V_1) => Promise<any>;
|
|
38
|
-
};
|
|
1
|
+
interface BufferBodyOptions {
|
|
2
|
+
limit: number;
|
|
3
|
+
}
|
|
4
|
+
export declare function setBufferBodyDefaultOptions(options: Partial<BufferBodyOptions>): void;
|
|
5
|
+
export declare function getBuffer(options?: Partial<BufferBodyOptions>): Promise<any>;
|
|
6
|
+
export declare function getJson(options?: Partial<BufferBodyOptions>): Promise<any>;
|
|
7
|
+
export declare function getRaw(options?: Partial<BufferBodyOptions>): Promise<any>;
|
|
8
|
+
export declare function getText(options?: Partial<BufferBodyOptions>): Promise<any>;
|
|
9
|
+
export declare function getUrlEncoded({ simplify, ...options }?: Partial<BufferBodyOptions> & {
|
|
10
|
+
simplify?: boolean;
|
|
11
|
+
}): Promise<any>;
|
|
12
|
+
export declare function getQuery({ simplify, ...options }?: Partial<BufferBodyOptions> & {
|
|
13
|
+
simplify?: boolean;
|
|
14
|
+
}): Promise<any>;
|
|
15
|
+
export {};
|
package/esm/body.js
CHANGED
|
@@ -1,32 +1,40 @@
|
|
|
1
1
|
import { getContentStream, readStream } from './stream.js';
|
|
2
2
|
import { parse } from 'qs';
|
|
3
3
|
import { parseContentType } from './contentType.js';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
4
|
+
import { getReq } from './dx.js';
|
|
5
|
+
let bufferBodyDefaultOptions = { limit: 100 << 10 }; // 100kb
|
|
6
|
+
export function setBufferBodyDefaultOptions(options) {
|
|
7
|
+
bufferBodyDefaultOptions = { ...bufferBodyDefaultOptions, ...options };
|
|
8
|
+
}
|
|
9
|
+
const bufferBodySymbol = Symbol('bufferBody');
|
|
10
|
+
export async function getBuffer(options) {
|
|
11
|
+
const { limit } = { ...bufferBodyDefaultOptions, ...options };
|
|
12
|
+
const req = getReq();
|
|
13
|
+
return req[bufferBodySymbol] ??= (async () => {
|
|
14
|
+
/**
|
|
15
|
+
* Check if a request has a request body.
|
|
16
|
+
* A request with a body __must__ either have `transfer-encoding`
|
|
17
|
+
* or `content-length` headers set.
|
|
18
|
+
* http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3
|
|
19
|
+
*/
|
|
20
|
+
// https://github.com/jshttp/type-is/blob/cdcfe23e9833872e425b0aaf71ca0311373b6116/index.js#L92
|
|
21
|
+
const contentLengthParsed = parseInt(req.headers['content-length'] ?? '', 10);
|
|
22
|
+
if (req.headers['transfer-encoding'] === undefined
|
|
23
|
+
&& isNaN(contentLengthParsed))
|
|
24
|
+
return;
|
|
25
|
+
const contentLength = isNaN(contentLengthParsed) ? undefined : contentLengthParsed;
|
|
26
|
+
// read
|
|
27
|
+
const encoding = (req.headers['content-encoding'] ?? 'identity').toLowerCase();
|
|
28
|
+
const stream = getContentStream(req, encoding);
|
|
29
|
+
return await readStream(stream, {
|
|
30
|
+
length: encoding === 'identity' ? contentLength : undefined,
|
|
31
|
+
limit,
|
|
32
|
+
});
|
|
33
|
+
})();
|
|
34
|
+
}
|
|
35
|
+
// if content-type is not as expected, return undefined
|
|
36
|
+
function forceGetContentTypeParams(expected) {
|
|
37
|
+
const req = getReq();
|
|
30
38
|
const contentTypeRaw = req.headers['content-type'];
|
|
31
39
|
if (!contentTypeRaw)
|
|
32
40
|
return;
|
|
@@ -34,8 +42,8 @@ const forceGetContentTypeParams = (expected) => {
|
|
|
34
42
|
if (mediaType !== expected)
|
|
35
43
|
return;
|
|
36
44
|
return parameters;
|
|
37
|
-
}
|
|
38
|
-
|
|
45
|
+
}
|
|
46
|
+
function forceGetCharset(expected) {
|
|
39
47
|
const parameters = forceGetContentTypeParams(expected);
|
|
40
48
|
if (!parameters)
|
|
41
49
|
return;
|
|
@@ -44,49 +52,63 @@ const forceGetCharset = (expected) => {
|
|
|
44
52
|
if (!charset.startsWith('utf-'))
|
|
45
53
|
throw new Error(`unsupported charset "${charset.toUpperCase()}"`);
|
|
46
54
|
return charset;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
55
|
+
}
|
|
56
|
+
const jsonBodySymbol = Symbol('jsonBody');
|
|
57
|
+
export async function getJson(options) {
|
|
58
|
+
return getReq()[jsonBodySymbol] ??= (async () => {
|
|
59
|
+
const charset = forceGetCharset('application/json');
|
|
60
|
+
if (!charset)
|
|
61
|
+
return;
|
|
62
|
+
const buffer = await getBuffer(options);
|
|
63
|
+
if (buffer) {
|
|
64
|
+
const str = buffer.toString(charset);
|
|
65
|
+
return str ? JSON.parse(str) : undefined;
|
|
66
|
+
}
|
|
67
|
+
})();
|
|
68
|
+
}
|
|
69
|
+
const rawBodySymbol = Symbol('rawBody');
|
|
70
|
+
export async function getRaw(options) {
|
|
71
|
+
return getReq()[rawBodySymbol] ??= (async () => {
|
|
72
|
+
if (!forceGetContentTypeParams('application/octet-stream'))
|
|
73
|
+
return;
|
|
74
|
+
return await getBuffer(options);
|
|
75
|
+
})();
|
|
76
|
+
}
|
|
77
|
+
const textBodySymbol = Symbol('textBody');
|
|
78
|
+
export async function getText(options) {
|
|
79
|
+
return getReq()[textBodySymbol] ??= (async () => {
|
|
80
|
+
const charset = forceGetCharset('text/plain');
|
|
81
|
+
if (!charset)
|
|
82
|
+
return;
|
|
83
|
+
const buffer = await getBuffer(options);
|
|
84
|
+
if (buffer)
|
|
85
|
+
return buffer.toString(charset);
|
|
86
|
+
})();
|
|
87
|
+
}
|
|
88
|
+
const urlEncodedBodySymbol = Symbol('urlencodedBody');
|
|
89
|
+
export async function getUrlEncoded({ simplify, ...options } = {}) {
|
|
90
|
+
return getReq()[urlEncodedBodySymbol] ??= (async () => {
|
|
91
|
+
const charset = forceGetCharset('application/x-www-form-urlencoded');
|
|
92
|
+
if (!charset)
|
|
93
|
+
return;
|
|
94
|
+
const buffer = await getBuffer(options);
|
|
95
|
+
if (buffer) {
|
|
96
|
+
const str = buffer.toString(charset);
|
|
97
|
+
return simplify
|
|
98
|
+
? Object.fromEntries(new URLSearchParams(str))
|
|
99
|
+
: parse(str);
|
|
100
|
+
}
|
|
101
|
+
})();
|
|
102
|
+
}
|
|
103
|
+
const querySymbol = Symbol('query');
|
|
104
|
+
export async function getQuery({ simplify, ...options } = {}) {
|
|
105
|
+
return getReq()[querySymbol] ??= (async () => {
|
|
106
|
+
const query = getReq().url?.split('?', 2)?.[1];
|
|
107
|
+
return query
|
|
108
|
+
? simplify
|
|
109
|
+
? Object.fromEntries(new URLSearchParams(query))
|
|
110
|
+
: parse(query)
|
|
111
|
+
: {};
|
|
112
|
+
})();
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDeEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sU0FBUyxDQUFBO0FBSzlCLElBQUksd0JBQXdCLEdBQXNCLEVBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUMsQ0FBQSxDQUFDLFFBQVE7QUFDN0UsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE9BQW1DO0lBQzlFLHdCQUF3QixHQUFHLEVBQUMsR0FBRyx3QkFBd0IsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFBO0FBQ3JFLENBQUM7QUFDRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUM3QyxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxPQUFvQztJQUNuRSxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxHQUFHLHdCQUF3QixFQUFFLEdBQUcsT0FBTyxFQUFDLENBQUE7SUFDekQsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUE7SUFDcEIsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQzVDOzs7OztXQUtHO1FBQ0YsK0ZBQStGO1FBQ2hHLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDN0UsSUFDQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssU0FBUztlQUMzQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7WUFDNUIsT0FBTTtRQUNSLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFBO1FBRWxGLE9BQU87UUFDUCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUM5RSxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDOUMsT0FBTyxNQUFNLFVBQVUsQ0FDdEIsTUFBTSxFQUNOO1lBQ0MsTUFBTSxFQUFFLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMzRCxLQUFLO1NBQ0wsQ0FDRCxDQUFBO0lBQ0YsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUNMLENBQUM7QUFFRCx1REFBdUQ7QUFDdkQsU0FBUyx5QkFBeUIsQ0FBQyxRQUFnQjtJQUNsRCxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtJQUVwQixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2xELElBQUksQ0FBQyxjQUFjO1FBQUUsT0FBTTtJQUMzQixNQUFNLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBQyxHQUFHLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2hFLElBQUksU0FBUyxLQUFLLFFBQVE7UUFBRSxPQUFNO0lBRWxDLE9BQU8sVUFBVSxDQUFBO0FBQ2xCLENBQUM7QUFDRCxTQUFTLGVBQWUsQ0FBQyxRQUFnQjtJQUN4QyxNQUFNLFVBQVUsR0FBRyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN0RCxJQUFJLENBQUMsVUFBVTtRQUFFLE9BQU07SUFDdkIsc0NBQXNDO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFvQixJQUFJLE9BQU8sQ0FBQTtJQUM5RSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBRWxHLE9BQU8sT0FBTyxDQUFBO0FBQ2YsQ0FBQztBQUVELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUN6QyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxPQUFvQztJQUNqRSxPQUFPLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDL0MsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDbkQsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFNO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3BDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFDekMsQ0FBQztJQUNGLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBQ3ZDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTSxDQUFDLE9BQW9DO0lBQ2hFLE9BQU8sTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtRQUM5QyxJQUFJLENBQUMseUJBQXlCLENBQUMsMEJBQTBCLENBQUM7WUFBRSxPQUFNO1FBQ2xFLE9BQU8sTUFBTSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDaEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7QUFDekMsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUMsT0FBb0M7SUFDakUsT0FBTyxNQUFNLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQy9DLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM3QyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU07UUFDcEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkMsSUFBSSxNQUFNO1lBQUUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzVDLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtBQUNyRCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxFQUFDLFFBQVEsRUFBRSxHQUFHLE9BQU8sS0FBdUQsRUFBRTtJQUNqSCxPQUFPLE1BQU0sRUFBRSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNyRCxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU07UUFDcEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDcEMsT0FBTyxRQUFRO2dCQUNkLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2QsQ0FBQztJQUNGLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ25DLE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUFDLEVBQUMsUUFBUSxFQUFFLEdBQUcsT0FBTyxLQUF1RCxFQUFFO0lBQzVHLE9BQU8sTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtRQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlDLE9BQU8sS0FBSztZQUNYLENBQUMsQ0FBQyxRQUFRO2dCQUNULENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoRCxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDTixDQUFDLENBQUMsRUFBRSxDQUFBO0FBQ0wsQ0FBQyJ9
|
package/esm/dx.d.ts
CHANGED
|
@@ -1,64 +1,17 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
4
|
import { Readable } from 'node:stream';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
data: string;
|
|
15
|
-
} | {
|
|
16
|
-
type: 'buffer';
|
|
17
|
-
data: Buffer;
|
|
18
|
-
} | {
|
|
19
|
-
type: 'json';
|
|
20
|
-
data: any;
|
|
21
|
-
} | {
|
|
22
|
-
type: 'redirect';
|
|
23
|
-
data: string;
|
|
24
|
-
} | {
|
|
25
|
-
type: 'nodeStream';
|
|
26
|
-
data: Readable;
|
|
27
|
-
} | {
|
|
28
|
-
type: 'webStream';
|
|
29
|
-
data: ReadableStream;
|
|
30
|
-
});
|
|
31
|
-
chain(params_0?: {
|
|
32
|
-
jsonBeautify?: boolean | undefined;
|
|
33
|
-
disableEtag?: boolean | undefined;
|
|
34
|
-
} | undefined): <V>(next: () => V) => Promise<any>;
|
|
35
|
-
with(value: {
|
|
36
|
-
charset?: BufferEncoding | undefined;
|
|
37
|
-
jsonBeautify?: boolean | undefined;
|
|
38
|
-
disableEtag?: boolean | undefined;
|
|
39
|
-
} & ({
|
|
40
|
-
type: 'text';
|
|
41
|
-
data: string;
|
|
42
|
-
} | {
|
|
43
|
-
type: 'html';
|
|
44
|
-
data: string;
|
|
45
|
-
} | {
|
|
46
|
-
type: 'buffer';
|
|
47
|
-
data: Buffer;
|
|
48
|
-
} | {
|
|
49
|
-
type: 'json';
|
|
50
|
-
data: any;
|
|
51
|
-
} | {
|
|
52
|
-
type: 'redirect';
|
|
53
|
-
data: string;
|
|
54
|
-
} | {
|
|
55
|
-
type: 'nodeStream';
|
|
56
|
-
data: Readable;
|
|
57
|
-
} | {
|
|
58
|
-
type: 'webStream';
|
|
59
|
-
data: ReadableStream;
|
|
60
|
-
})): <V_1>(next: () => V_1) => Promise<any>;
|
|
61
|
-
};
|
|
5
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
6
|
+
interface Chainable<P extends any[] = any[], R = any, Next = (...np: any[]) => any> {
|
|
7
|
+
(next: Next, ...p: P): R;
|
|
8
|
+
}
|
|
9
|
+
export declare function dxServer(req: IncomingMessage, res: ServerResponse, options?: {
|
|
10
|
+
jsonBeautify?: boolean;
|
|
11
|
+
disableEtag?: boolean;
|
|
12
|
+
}): Chainable;
|
|
13
|
+
export declare function getReq(): IncomingMessage;
|
|
14
|
+
export declare function getRes(): ServerResponse;
|
|
62
15
|
export declare function setText(text: string, { status }?: {
|
|
63
16
|
status?: number;
|
|
64
17
|
}): void;
|
|
@@ -79,3 +32,4 @@ export declare function setJson(json: any, { status, beautify }?: {
|
|
|
79
32
|
beautify?: boolean;
|
|
80
33
|
}): void;
|
|
81
34
|
export declare function setRedirect(url: string, status: 301 | 302): void;
|
|
35
|
+
export {};
|