dx-server 0.4.0 → 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 +31 -38
- package/cjs/body.js +10 -10
- 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 +3 -2
- package/cjs/index.js +6 -7
- package/cjs/route.js +4 -4
- package/cjs/static.js +4 -4
- package/esm/body.js +10 -10
- 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 +3 -2
- package/esm/index.js +4 -3
- package/esm/route.js +4 -4
- package/esm/static.js +3 -3
- package/package.json +1 -2
- 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.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getContentStream, readStream } from './stream.js';
|
|
2
2
|
import { parse } from 'qs';
|
|
3
3
|
import { parseContentType } from './contentType.js';
|
|
4
|
-
import {
|
|
4
|
+
import { getReq } from './dx.js';
|
|
5
5
|
let bufferBodyDefaultOptions = { limit: 100 << 10 }; // 100kb
|
|
6
6
|
export function setBufferBodyDefaultOptions(options) {
|
|
7
7
|
bufferBodyDefaultOptions = { ...bufferBodyDefaultOptions, ...options };
|
|
@@ -9,7 +9,7 @@ export function setBufferBodyDefaultOptions(options) {
|
|
|
9
9
|
const bufferBodySymbol = Symbol('bufferBody');
|
|
10
10
|
export async function getBuffer(options) {
|
|
11
11
|
const { limit } = { ...bufferBodyDefaultOptions, ...options };
|
|
12
|
-
const req =
|
|
12
|
+
const req = getReq();
|
|
13
13
|
return req[bufferBodySymbol] ??= (async () => {
|
|
14
14
|
/**
|
|
15
15
|
* Check if a request has a request body.
|
|
@@ -34,7 +34,7 @@ export async function getBuffer(options) {
|
|
|
34
34
|
}
|
|
35
35
|
// if content-type is not as expected, return undefined
|
|
36
36
|
function forceGetContentTypeParams(expected) {
|
|
37
|
-
const req =
|
|
37
|
+
const req = getReq();
|
|
38
38
|
const contentTypeRaw = req.headers['content-type'];
|
|
39
39
|
if (!contentTypeRaw)
|
|
40
40
|
return;
|
|
@@ -55,7 +55,7 @@ function forceGetCharset(expected) {
|
|
|
55
55
|
}
|
|
56
56
|
const jsonBodySymbol = Symbol('jsonBody');
|
|
57
57
|
export async function getJson(options) {
|
|
58
|
-
return
|
|
58
|
+
return getReq()[jsonBodySymbol] ??= (async () => {
|
|
59
59
|
const charset = forceGetCharset('application/json');
|
|
60
60
|
if (!charset)
|
|
61
61
|
return;
|
|
@@ -68,7 +68,7 @@ export async function getJson(options) {
|
|
|
68
68
|
}
|
|
69
69
|
const rawBodySymbol = Symbol('rawBody');
|
|
70
70
|
export async function getRaw(options) {
|
|
71
|
-
return
|
|
71
|
+
return getReq()[rawBodySymbol] ??= (async () => {
|
|
72
72
|
if (!forceGetContentTypeParams('application/octet-stream'))
|
|
73
73
|
return;
|
|
74
74
|
return await getBuffer(options);
|
|
@@ -76,7 +76,7 @@ export async function getRaw(options) {
|
|
|
76
76
|
}
|
|
77
77
|
const textBodySymbol = Symbol('textBody');
|
|
78
78
|
export async function getText(options) {
|
|
79
|
-
return
|
|
79
|
+
return getReq()[textBodySymbol] ??= (async () => {
|
|
80
80
|
const charset = forceGetCharset('text/plain');
|
|
81
81
|
if (!charset)
|
|
82
82
|
return;
|
|
@@ -87,7 +87,7 @@ export async function getText(options) {
|
|
|
87
87
|
}
|
|
88
88
|
const urlEncodedBodySymbol = Symbol('urlencodedBody');
|
|
89
89
|
export async function getUrlEncoded({ simplify, ...options } = {}) {
|
|
90
|
-
return
|
|
90
|
+
return getReq()[urlEncodedBodySymbol] ??= (async () => {
|
|
91
91
|
const charset = forceGetCharset('application/x-www-form-urlencoded');
|
|
92
92
|
if (!charset)
|
|
93
93
|
return;
|
|
@@ -102,8 +102,8 @@ export async function getUrlEncoded({ simplify, ...options } = {}) {
|
|
|
102
102
|
}
|
|
103
103
|
const querySymbol = Symbol('query');
|
|
104
104
|
export async function getQuery({ simplify, ...options } = {}) {
|
|
105
|
-
return
|
|
106
|
-
const query =
|
|
105
|
+
return getReq()[querySymbol] ??= (async () => {
|
|
106
|
+
const query = getReq().url?.split('?', 2)?.[1];
|
|
107
107
|
return query
|
|
108
108
|
? simplify
|
|
109
109
|
? Object.fromEntries(new URLSearchParams(query))
|
|
@@ -111,4 +111,4 @@ export async function getQuery({ simplify, ...options } = {}) {
|
|
|
111
111
|
: {};
|
|
112
112
|
})();
|
|
113
113
|
}
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDeEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sU0FBUyxDQUFBO0FBSzlCLElBQUksd0JBQXdCLEdBQXNCLEVBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUMsQ0FBQSxDQUFDLFFBQVE7QUFDN0UsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE9BQW1DO0lBQzlFLHdCQUF3QixHQUFHLEVBQUMsR0FBRyx3QkFBd0IsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFBO0FBQ3JFLENBQUM7QUFDRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUM3QyxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxPQUFvQztJQUNuRSxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxHQUFHLHdCQUF3QixFQUFFLEdBQUcsT0FBTyxFQUFDLENBQUE7SUFDekQsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUE7SUFDcEIsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQzVDOzs7OztXQUtHO1FBQ0YsK0ZBQStGO1FBQ2hHLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDN0UsSUFDQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssU0FBUztlQUMzQyxLQUFLLENB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
|
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 {};
|
package/esm/dx.js
CHANGED
|
@@ -1,121 +1,132 @@
|
|
|
1
1
|
import makeDefer from 'jdefer';
|
|
2
2
|
import { promisify } from 'node:util';
|
|
3
3
|
import { entityTag, isFreshETag } from './etag.js';
|
|
4
|
-
import { makeContext, reqContext, resContext } from './context.js';
|
|
5
4
|
import { Readable } from 'node:stream';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (res.headersSent) {
|
|
57
|
-
if (res.writableFinished) {
|
|
58
|
-
// skipped: response is already finished
|
|
59
|
-
}
|
|
60
|
-
else if (res.writableEnded) {
|
|
61
|
-
const defer = makeDefer();
|
|
62
|
-
res.addListener('finish', defer.resolve);
|
|
63
|
-
await defer.promise;
|
|
64
|
-
// skipped: response is already ended
|
|
65
|
-
// chunk is not fully flushed yet
|
|
66
|
-
}
|
|
67
|
-
else
|
|
68
|
-
await promisify(res.end.bind(res))(undefined); // to be consistent, we end the response immediately
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
// https://github.com/expressjs/express/blob/980d881e3b023db079de60477a2588a91f046ca5/lib/response.js#L210
|
|
72
|
-
if (res.statusCode === 204) { // No Content
|
|
73
|
-
res.removeHeader('content-type');
|
|
74
|
-
res.removeHeader('content-length');
|
|
75
|
-
res.removeHeader('transfer-encoding');
|
|
76
|
-
// write nothing
|
|
77
|
-
}
|
|
78
|
-
if (res.statusCode === 205) { // reset content. Tell client to clear the form, etc.
|
|
79
|
-
res.setHeader('content-length', 0);
|
|
80
|
-
res.removeHeader('transfer-encoding');
|
|
5
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
6
|
+
const reqStorage = new AsyncLocalStorage();
|
|
7
|
+
const resStorage = new AsyncLocalStorage();
|
|
8
|
+
const dxStorage = new AsyncLocalStorage();
|
|
9
|
+
export function dxServer(req, res, options = {}) {
|
|
10
|
+
return async (next) => {
|
|
11
|
+
const dx = { ...options };
|
|
12
|
+
const result = await dxStorage.run(dx, () => reqStorage.run(req, () => resStorage.run(res, next)));
|
|
13
|
+
const { type, data, charset, jsonBeautify, disableEtag } = dx;
|
|
14
|
+
const setContentType = (contentType) => {
|
|
15
|
+
if (res.headersSent || res.getHeader('content-type'))
|
|
16
|
+
return;
|
|
17
|
+
res.setHeader('content-type', `${contentType}${charset ? `; charset=${charset}` : ''}`);
|
|
18
|
+
};
|
|
19
|
+
let bufferOrStream;
|
|
20
|
+
switch (type) {
|
|
21
|
+
case 'text':
|
|
22
|
+
setContentType('text/plain');
|
|
23
|
+
case 'html':
|
|
24
|
+
setContentType('text/html');
|
|
25
|
+
// shared with text
|
|
26
|
+
bufferOrStream = Buffer.from(data, charset);
|
|
27
|
+
break;
|
|
28
|
+
case 'buffer':
|
|
29
|
+
setContentType('application/octet-stream');
|
|
30
|
+
bufferOrStream = data;
|
|
31
|
+
break;
|
|
32
|
+
case 'nodeStream':
|
|
33
|
+
setContentType('application/octet-stream');
|
|
34
|
+
bufferOrStream = data;
|
|
35
|
+
break;
|
|
36
|
+
case 'webStream':
|
|
37
|
+
setContentType('application/octet-stream');
|
|
38
|
+
bufferOrStream = Readable.fromWeb(data);
|
|
39
|
+
break;
|
|
40
|
+
case 'json':
|
|
41
|
+
setContentType('application/json');
|
|
42
|
+
bufferOrStream = Buffer.from(jsonBeautify ? JSON.stringify(data, null, 2) : JSON.stringify(data), charset);
|
|
43
|
+
break;
|
|
44
|
+
case 'redirect':
|
|
45
|
+
res.setHeader('location', data);
|
|
46
|
+
bufferOrStream = Buffer.from('', charset);
|
|
47
|
+
break;
|
|
48
|
+
case undefined:
|
|
49
|
+
// skip response. Some middleware may handle it outside the chain. For example, express middleware
|
|
50
|
+
return result;
|
|
51
|
+
default:
|
|
52
|
+
if (!res.getHeader('content-type'))
|
|
53
|
+
res.setHeader('content-type', 'text/plain');
|
|
54
|
+
throw new Error(`unsupported response type ${type}`);
|
|
81
55
|
}
|
|
82
|
-
|
|
83
|
-
|
|
56
|
+
if (res.headersSent) {
|
|
57
|
+
if (res.writableFinished) {
|
|
58
|
+
// skipped: response is already finished
|
|
59
|
+
}
|
|
60
|
+
else if (res.writableEnded) {
|
|
61
|
+
const defer = makeDefer();
|
|
62
|
+
res.addListener('finish', defer.resolve);
|
|
63
|
+
await defer.promise;
|
|
64
|
+
// skipped: response is already ended
|
|
65
|
+
// chunk is not fully flushed yet
|
|
66
|
+
}
|
|
67
|
+
else
|
|
68
|
+
await promisify(res.end.bind(res))(undefined); // to be consistent, we end the response immediately
|
|
84
69
|
}
|
|
85
70
|
else {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
res.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
71
|
+
// https://github.com/expressjs/express/blob/980d881e3b023db079de60477a2588a91f046ca5/lib/response.js#L210
|
|
72
|
+
if (res.statusCode === 204) { // No Content
|
|
73
|
+
res.removeHeader('content-type');
|
|
74
|
+
res.removeHeader('content-length');
|
|
75
|
+
res.removeHeader('transfer-encoding');
|
|
76
|
+
// write nothing
|
|
77
|
+
}
|
|
78
|
+
if (res.statusCode === 205) { // reset content. Tell client to clear the form, etc.
|
|
79
|
+
res.setHeader('content-length', 0);
|
|
80
|
+
res.removeHeader('transfer-encoding');
|
|
81
|
+
}
|
|
82
|
+
else if (req.method === 'HEAD') {
|
|
83
|
+
// write nothing
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
if (Buffer.isBuffer(bufferOrStream)) {
|
|
87
|
+
// support: 304 (etag), zipping, file etag and last modified
|
|
88
|
+
res.setHeader('content-length', bufferOrStream.length);
|
|
89
|
+
if (!disableEtag) {
|
|
90
|
+
const etag = entityTag(bufferOrStream);
|
|
91
|
+
const lastModified = res.getHeader('last-modified');
|
|
92
|
+
res.setHeader('ETag', etag);
|
|
93
|
+
if (isFreshETag(req, etag)) {
|
|
94
|
+
res.removeHeader('content-type');
|
|
95
|
+
res.removeHeader('content-length');
|
|
96
|
+
res.removeHeader('transfer-encoding');
|
|
97
|
+
res.statusCode = 304;
|
|
98
|
+
// write nothing
|
|
99
|
+
}
|
|
100
|
+
else
|
|
101
|
+
res.write(bufferOrStream);
|
|
99
102
|
}
|
|
100
103
|
else
|
|
101
104
|
res.write(bufferOrStream);
|
|
102
105
|
}
|
|
103
|
-
else
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
bufferOrStream.pipe(res);
|
|
106
|
+
else {
|
|
107
|
+
bufferOrStream.pipe(res);
|
|
108
|
+
}
|
|
109
|
+
// we do not support content-encoding (gzip, deflate, br) and leave it to reverse proxy or CDN
|
|
108
110
|
}
|
|
109
|
-
|
|
111
|
+
await promisify(res.end.bind(res))(undefined); // some express middleware, such as express-session, requires explicitly passing chunk
|
|
110
112
|
}
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
return result;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// method: verb
|
|
117
|
+
// url: full url without server, protocol, port.
|
|
118
|
+
// headers: if headers are repeated, they are joined by comma. Header names are lowercased.
|
|
119
|
+
// rawHeaders: list of header name and value in a flat array. Case is preserved.
|
|
120
|
+
export function getReq() {
|
|
121
|
+
return reqStorage.getStore();
|
|
122
|
+
}
|
|
123
|
+
export function getRes() {
|
|
124
|
+
return resStorage.getStore();
|
|
125
|
+
}
|
|
115
126
|
// todo: support setFile (with stream or with buffer)
|
|
116
127
|
export function setText(text, { status } = {}) {
|
|
117
|
-
const res =
|
|
118
|
-
const dx =
|
|
128
|
+
const res = getRes();
|
|
129
|
+
const dx = dxStorage.getStore();
|
|
119
130
|
if (status)
|
|
120
131
|
res.statusCode = status;
|
|
121
132
|
dx.data = text;
|
|
@@ -123,48 +134,48 @@ export function setText(text, { status } = {}) {
|
|
|
123
134
|
}
|
|
124
135
|
export function setHtml(html, opts = {}) {
|
|
125
136
|
setText(html, opts);
|
|
126
|
-
const dx =
|
|
137
|
+
const dx = dxStorage.getStore();
|
|
127
138
|
dx.type = 'html';
|
|
128
139
|
}
|
|
129
140
|
export function setBuffer(buffer, { status } = {}) {
|
|
130
|
-
const res =
|
|
131
|
-
const dx =
|
|
141
|
+
const res = getRes();
|
|
142
|
+
const dx = dxStorage.getStore();
|
|
132
143
|
if (status)
|
|
133
144
|
res.statusCode = status;
|
|
134
145
|
dx.data = buffer;
|
|
135
146
|
dx.type = 'buffer';
|
|
136
147
|
}
|
|
137
148
|
export function setNodeStream(stream, { status } = {}) {
|
|
138
|
-
const res =
|
|
139
|
-
const dx =
|
|
149
|
+
const res = getRes();
|
|
150
|
+
const dx = dxStorage.getStore();
|
|
140
151
|
if (status)
|
|
141
152
|
res.statusCode = status;
|
|
142
153
|
dx.data = stream;
|
|
143
154
|
dx.type = 'nodeStream';
|
|
144
155
|
}
|
|
145
156
|
export function setWebStream(stream, { status } = {}) {
|
|
146
|
-
const res =
|
|
147
|
-
const dx =
|
|
157
|
+
const res = getRes();
|
|
158
|
+
const dx = dxStorage.getStore();
|
|
148
159
|
if (status)
|
|
149
160
|
res.statusCode = status;
|
|
150
161
|
dx.data = stream;
|
|
151
162
|
dx.type = 'webStream';
|
|
152
163
|
}
|
|
153
164
|
export function setJson(json, { status, beautify } = {}) {
|
|
154
|
-
const res =
|
|
165
|
+
const res = getRes();
|
|
155
166
|
if (status)
|
|
156
167
|
res.statusCode = status;
|
|
157
|
-
const dx =
|
|
168
|
+
const dx = dxStorage.getStore();
|
|
158
169
|
dx.data = json;
|
|
159
170
|
dx.type = 'json';
|
|
160
171
|
if (beautify !== undefined)
|
|
161
172
|
dx.jsonBeautify = beautify;
|
|
162
173
|
}
|
|
163
174
|
export function setRedirect(url, status) {
|
|
164
|
-
const res =
|
|
165
|
-
const dx =
|
|
175
|
+
const res = getRes();
|
|
176
|
+
const dx = dxStorage.getStore();
|
|
166
177
|
res.statusCode = status;
|
|
167
178
|
dx.data = url;
|
|
168
179
|
dx.type = 'redirect';
|
|
169
180
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sUUFBUSxDQUFBO0FBQzlCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQTtBQTJDbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxpQkFBaUIsRUFBbUIsQ0FBQTtBQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLGlCQUFpQixFQUFrQixDQUFBO0FBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksaUJBQWlCLEVBQWEsQ0FBQTtBQUNwRCxNQUFNLFVBQVUsUUFBUSxDQUN2QixHQUFvQixFQUNwQixHQUFtQixFQUNuQixVQUdJLEVBQUU7SUFFTixPQUFPLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtRQUNuQixNQUFNLEVBQUUsR0FBYyxFQUFDLEdBQUcsT0FBTyxFQUFDLENBQUE7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUNqQyxFQUFFLEVBQ0YsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDbkIsR0FBRyxFQUNILEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUMvQixDQUNELENBQUE7UUFDRCxNQUFNLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBQyxHQUFHLEVBQUUsQ0FBQTtRQUMzRCxNQUFNLGNBQWMsR0FBRyxDQUFDLFdBQW1CLEVBQUUsRUFBRTtZQUM5QyxJQUFJLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7Z0JBQUUsT0FBTTtZQUM1RCxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDeEYsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxjQUFjLENBQUE7UUFFbEIsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNkLEtBQUssTUFBTTtnQkFDVixjQUFjLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDN0IsS0FBSyxNQUFNO2dCQUNWLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDM0IsbUJBQW1CO2dCQUNuQixjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7Z0JBQzNDLE1BQUs7WUFDTixLQUFLLFFBQVE7Z0JBQ1osY0FBYyxDQUFDLDBCQUEwQixDQUFDLENBQUE7Z0JBQzFDLGNBQWMsR0FBRyxJQUFJLENBQUE7Z0JBQ3JCLE1BQUs7WUFDTixLQUFLLFlBQVk7Z0JBQ2hCLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO2dCQUMxQyxjQUFjLEdBQUcsSUFBSSxDQUFBO2dCQUNyQixNQUFLO1lBQ04sS0FBSyxXQUFXO2dCQUNmLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO2dCQUMxQyxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFnRCxDQUFDLENBQUE7Z0JBQ25GLE1BQUs7WUFDTixLQUFLLE1BQU07Z0JBQ1YsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUE7Z0JBQ2xDLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUMxRyxNQUFLO1lBQ04sS0FBSyxVQUFVO2dCQUNkLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUMvQixjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7Z0JBQ3pDLE1BQUs7WUFDTixLQUFLLFNBQVM7Z0JBQ2Isa0dBQWtHO2dCQUNsRyxPQUFPLE1BQU0sQ0FBQTtZQUNkO2dCQUNDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztvQkFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQTtnQkFDL0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUN0RCxDQUFDO1FBRUQsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDMUIsd0NBQXdDO1lBQ3pDLENBQUM7aUJBQU0sSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sS0FBSyxHQUFHLFNBQVMsRUFBUSxDQUFBO2dCQUMvQixHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQ3hDLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQTtnQkFDbkIscUNBQXFDO2dCQUNyQyxpQ0FBaUM7WUFDbEMsQ0FBQzs7Z0JBQU0sTUFBTSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFDLG9EQUFvRDtRQUMxRyxDQUFDO2FBQU0sQ0FBQztZQUNQLDBHQUEwRztZQUMxRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxhQUFhO2dCQUMxQyxHQUFHLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFBO2dCQUNoQyxHQUFHLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUE7Z0JBQ2xDLEdBQUcsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtnQkFDckMsZ0JBQWdCO1lBQ2pCLENBQUM7WUFDRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxxREFBcUQ7Z0JBQ2xGLEdBQUcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUE7Z0JBQ2xDLEdBQUcsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtZQUN0QyxDQUFDO2lCQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDbEMsZ0JBQWdCO1lBQ2pCLENBQUM7aUJBQU0sQ0FBQztnQkFDUCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztvQkFDckMsNERBQTREO29CQUM1RCxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFFdEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNsQixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUE7d0JBQ3RDLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUE7d0JBRW5ELEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUMzQixJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQzs0QkFDNUIsR0FBRyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQTs0QkFDaEMsR0FBRyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBOzRCQUNsQyxHQUFHLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUE7NEJBQ3JDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFBOzRCQUNwQixnQkFBZ0I7d0JBQ2pCLENBQUM7OzRCQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUE7b0JBQ2pDLENBQUM7O3dCQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUE7Z0JBQ2pDLENBQUM7cUJBQU0sQ0FBQztvQkFDUCxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN6QixDQUFDO2dCQUNELDhGQUE4RjtZQUMvRixDQUFDO1lBRUQsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFDLHNGQUFzRjtRQUNySSxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZCxDQUFDLENBQUE7QUFDRixDQUFDO0FBRUQsZUFBZTtBQUNmLGdEQUFnRDtBQUNoRCwyRkFBMkY7QUFDM0YsZ0ZBQWdGO0FBQ2hGLE1BQU0sVUFBVSxNQUFNO0lBQ3JCLE9BQU8sVUFBVSxDQUFDLFFBQVEsRUFBRyxDQUFBO0FBQzlCLENBQUM7QUFDRCxNQUFNLFVBQVUsTUFBTTtJQUNyQixPQUFPLFVBQVUsQ0FBQyxRQUFRLEVBQUcsQ0FBQTtBQUM5QixDQUFDO0FBRUQscURBQXFEO0FBRXJELE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBWSxFQUFFLEVBQUMsTUFBTSxLQUF5QixFQUFFO0lBQ3ZFLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFBO0lBQ3BCLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUcsQ0FBQTtJQUNoQyxJQUFJLE1BQU07UUFBRSxHQUFHLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQTtJQUNuQyxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNkLEVBQUUsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFBO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLElBQVksRUFBRSxPQUE0QixFQUFFO0lBQ25FLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDbkIsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRyxDQUFBO0lBQ2hDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFBO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQWMsRUFBRSxFQUFDLE1BQU0sS0FBeUIsRUFBRTtJQUMzRSxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtJQUNwQixNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFHLENBQUE7SUFDaEMsSUFBSSxNQUFNO1FBQUUsR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUE7SUFDbkMsRUFBRSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUE7SUFDaEIsRUFBRSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUE7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBZ0IsRUFBRSxFQUFDLE1BQU0sS0FBeUIsRUFBRTtJQUNqRixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtJQUNwQixNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFHLENBQUE7SUFDaEMsSUFBSSxNQUFNO1FBQUUsR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUE7SUFDbkMsRUFBRSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUE7SUFDaEIsRUFBRSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUE7QUFDdkIsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBc0IsRUFBRSxFQUFDLE1BQU0sS0FBeUIsRUFBRTtJQUN0RixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtJQUNwQixNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFHLENBQUE7SUFDaEMsSUFBSSxNQUFNO1FBQUUsR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUE7SUFDbkMsRUFBRSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUE7SUFDaEIsRUFBRSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUE7QUFDdEIsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBUyxFQUFFLEVBQUMsTUFBTSxFQUFFLFFBQVEsS0FHaEQsRUFBRTtJQUNMLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFBO0lBQ3BCLElBQUksTUFBTTtRQUFFLEdBQUcsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFBO0lBRW5DLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUcsQ0FBQTtJQUNoQyxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNkLEVBQUUsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFBO0lBQ2hCLElBQUksUUFBUSxLQUFLLFNBQVM7UUFBRSxFQUFFLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQTtBQUN2RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFXLEVBQUUsTUFBaUI7SUFDekQsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUE7SUFDcEIsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRyxDQUFBO0lBQ2hDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFBO0lBQ3ZCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFBO0lBQ2IsRUFBRSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUE7QUFDckIsQ0FBQyJ9
|
package/esm/etag.js
CHANGED
|
@@ -87,4 +87,4 @@ function parseTokenList(str) {
|
|
|
87
87
|
list.push(str.substring(start, end));
|
|
88
88
|
return list;
|
|
89
89
|
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRhZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ldGFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtHQUFrRztBQUNsRyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFHaEMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFXLEVBQUUsSUFBYztJQUNwRCxxQkFBcUI7SUFDckIsT0FBTyxHQUFHLENBQUMsTUFBTTtRQUNoQixDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNO2FBQ3BDLFVBQVUsQ0FBQyxNQUFNLENBQUM7YUFDbEIsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUNYLE1BQU0sQ0FBQyxRQUFRLENBQUM7YUFDaEIsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRztRQUNyQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxpQ0FBaUMsQ0FBQTtJQUN2RCw0RUFBNEU7SUFDNUUseUJBQXlCO0lBQ3pCLGdHQUFnRztBQUNqRyxDQUFDO0FBRUQsTUFBTSw2QkFBNkIsR0FBRyxnQ0FBZ0MsQ0FBQTtBQUN0RSxNQUFNLFVBQVUsT0FBTyxDQUFDLElBQUk7SUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFbkMsT0FBTyxJQUFJLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQTtBQUM1QixDQUFDO0FBQ0QsNkZBQTZGO0FBQzdGLE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBb0IsRUFBRSxJQUFZO0lBQzdELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFB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
|
package/esm/express.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
|
-
import { reqContext, resContext } from './context.js';
|
|
3
2
|
import makeDefer from 'jdefer';
|
|
3
|
+
import { getReq, getRes } from './dx.js';
|
|
4
4
|
export const expressApp = async (setup) => {
|
|
5
5
|
const symbol = Symbol('expressApp');
|
|
6
6
|
const app = express();
|
|
@@ -8,10 +8,9 @@ export const expressApp = async (setup) => {
|
|
|
8
8
|
app.use((req, _res, _next) => req[symbol].resolve());
|
|
9
9
|
app.use((err, req, _res, _next) => req[symbol].reject(err));
|
|
10
10
|
return async (next) => {
|
|
11
|
-
const req = reqContext.value;
|
|
12
11
|
const defer = makeDefer();
|
|
13
|
-
|
|
14
|
-
app(
|
|
12
|
+
getReq()[symbol] = defer;
|
|
13
|
+
app(getReq(), getRes());
|
|
15
14
|
await defer.promise;
|
|
16
15
|
await next();
|
|
17
16
|
};
|
|
@@ -23,13 +22,12 @@ export const expressRouter = async (setup) => {
|
|
|
23
22
|
router.use((req, _res, _next) => req[symbol].resolve());
|
|
24
23
|
router.use((err, req, _res, _next) => req[symbol].reject(err));
|
|
25
24
|
return async (next) => {
|
|
26
|
-
const req = reqContext.value;
|
|
27
25
|
const defer = makeDefer();
|
|
28
|
-
|
|
29
|
-
router(
|
|
26
|
+
getReq()[symbol] = defer;
|
|
27
|
+
router(getReq(), getRes());
|
|
30
28
|
await defer.promise; // if express middleware handles the request, this will never resolve.
|
|
31
29
|
await next();
|
|
32
30
|
};
|
|
33
31
|
};
|
|
34
32
|
export const expressMiddlewares = (...middlewares) => expressRouter(router => router.use(...middlewares));
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHByZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBaUUsTUFBTSxTQUFTLENBQUE7QUFDdkYsT0FBTyxTQUFTLE1BQU0sUUFBUSxDQUFBO0FBQzlCLE9BQU8sRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sU0FBUyxDQUFBO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsS0FBNEIsRUFBRSxFQUFFO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUVuQyxNQUFNLEdBQUcsR0FBRyxPQUFPLEVBQUUsQ0FBQTtJQUNyQixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNoQixHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUMzRCxPQUFPLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtRQUNuQixNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsQ0FBQTtRQUN6QixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDeEIsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdkIsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQ25CLE1BQU0sSUFBSSxFQUFFLENBQUE7SUFDYixDQUFDLENBQUE7QUFDRixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLEtBQThCLEVBQUUsRUFBRTtJQUNyRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7SUFFdEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQy9CLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDdkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzlELE9BQU8sS0FBSyxFQUFDLElBQUksRUFBQyxFQUFFO1FBQ25CLE1BQU0sS0FBSyxHQUFHLFNBQVMsRUFBRSxDQUFBO1FBQ3pCLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQTtRQUN4QixNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUMxQixNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQyxzRUFBc0U7UUFDMUYsTUFBTSxJQUFJLEVBQUUsQ0FBQTtJQUNiLENBQUMsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQ2pDLEdBQUcsV0FBeUUsRUFDM0UsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFBIn0=
|
package/esm/file.d.ts
CHANGED
package/esm/file.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getReq, getRes } from './dx.js';
|
|
2
2
|
export const serveFile = ({ prefix = '' }) => next => {
|
|
3
|
-
const req =
|
|
4
|
-
const res =
|
|
3
|
+
const req = getReq();
|
|
4
|
+
const res = getRes();
|
|
5
5
|
if (req.method !== 'GET' && req.method !== 'HEAD')
|
|
6
6
|
return next();
|
|
7
7
|
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sU0FBUyxDQUFBO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN4QixFQUFDLE1BQU0sR0FBRyxFQUFFLEVBRVgsRUFDQSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDWCxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtJQUNwQixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtJQUNwQixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTTtRQUFFLE9BQU8sSUFBSSxFQUFFLENBQUE7QUFDakUsQ0FBQyxDQUFBIn0=
|
package/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
1
|
+
export { getReq, getRes, setHtml, setNodeStream, setWebStream, setJson, setBuffer, setRedirect, setText } from './dx.js';
|
|
2
|
+
import { dxServer } from './dx.js';
|
|
3
3
|
export { setBufferBodyDefaultOptions, getBuffer, getJson, getRaw, getText, getUrlEncoded, getQuery, } from './body.js';
|
|
4
4
|
export { router } from './route.js';
|
|
5
|
+
export default dxServer;
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
1
|
+
export { getReq, getRes, setHtml, setNodeStream, setWebStream, setJson, setBuffer, setRedirect, setText } from './dx.js';
|
|
2
|
+
import { dxServer } from './dx.js';
|
|
3
3
|
export { setBufferBodyDefaultOptions, getBuffer, getJson, getRaw, getText, getUrlEncoded, getQuery, } from './body.js';
|
|
4
4
|
export { router } from './route.js';
|
|
5
|
-
|
|
5
|
+
export default dxServer;
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sT0FBTyxFQUNQLGFBQWEsRUFDYixZQUFZLEVBQ1osT0FBTyxFQUNQLFNBQVMsRUFDVCxXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sU0FBUyxDQUFBO0FBQ2hCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUE7QUFDaEMsT0FBTyxFQUNOLDJCQUEyQixFQUMzQixTQUFTLEVBQ1QsT0FBTyxFQUNQLE1BQU0sRUFDTixPQUFPLEVBQ1AsYUFBYSxFQUNiLFFBQVEsR0FDUixNQUFNLFdBQVcsQ0FBQTtBQUNsQixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sWUFBWSxDQUFBO0FBRWpDLGVBQWUsUUFBUSxDQUFBIn0=
|