dx-server 0.9.0 → 0.10.1
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 +246 -252
- package/cjs/body.d.ts +1 -1
- package/cjs/bodyHelpers.js +2 -2
- package/cjs/connect.d.ts +1 -1
- package/cjs/connect.js +1 -1
- package/cjs/dx.d.ts +1 -1
- package/cjs/dx.js +20 -11
- package/cjs/dxHelpers.d.ts +1 -1
- package/cjs/dxHelpers.js +8 -3
- package/cjs/express.js +14 -12
- package/cjs/polyfillWithResolvers.js +2 -3
- package/cjs/router.js +4 -3
- package/cjs/static.d.ts +5 -0
- package/cjs/static.js +8 -8
- package/cjs/staticHelpers.d.ts +15 -3
- package/cjs/staticHelpers.js +190 -8
- package/cjs/stream.js +2 -2
- package/{esm → cjs/vendors}/contentType.js +7 -3
- package/{esm → cjs/vendors}/etag.d.ts +3 -1
- package/cjs/{etag.js → vendors/etag.js} +1 -1
- package/cjs/vendors/fresh.d.ts +23 -0
- package/cjs/vendors/fresh.js +102 -0
- package/cjs/vendors/mime.d.ts +1 -0
- package/cjs/vendors/mime.js +42 -0
- package/cjs/vendors/mimeDb.d.ts +9413 -0
- package/cjs/vendors/mimeDb.js +9417 -0
- package/cjs/vendors/mimeScore.d.ts +5 -0
- package/cjs/vendors/mimeScore.js +50 -0
- package/cjs/vendors/onFinished.d.ts +14 -0
- package/cjs/vendors/onFinished.js +245 -0
- package/cjs/vendors/rangeParser.d.ts +10 -0
- package/cjs/vendors/rangeParser.js +125 -0
- package/esm/body.d.ts +1 -1
- package/esm/bodyHelpers.js +2 -2
- package/esm/connect.d.ts +1 -1
- package/esm/connect.js +1 -1
- package/esm/dx.d.ts +1 -1
- package/esm/dx.js +20 -11
- package/esm/dxHelpers.d.ts +1 -1
- package/esm/dxHelpers.js +8 -3
- package/esm/express.js +14 -12
- package/esm/polyfillWithResolvers.js +2 -3
- package/esm/router.js +4 -3
- package/esm/static.d.ts +5 -0
- package/esm/static.js +8 -8
- package/esm/staticHelpers.d.ts +15 -3
- package/esm/staticHelpers.js +190 -8
- package/esm/stream.js +2 -2
- package/{cjs → esm/vendors}/contentType.js +3 -7
- package/{cjs → esm/vendors}/etag.d.ts +3 -1
- package/esm/vendors/etag.js +90 -0
- package/esm/vendors/fresh.d.ts +23 -0
- package/esm/vendors/fresh.js +96 -0
- package/esm/vendors/mime.d.ts +1 -0
- package/esm/vendors/mime.js +35 -0
- package/esm/vendors/mimeDb.d.ts +9413 -0
- package/esm/vendors/mimeDb.js +9415 -0
- package/esm/vendors/mimeScore.d.ts +5 -0
- package/esm/vendors/mimeScore.js +46 -0
- package/esm/vendors/onFinished.d.ts +14 -0
- package/esm/vendors/onFinished.js +241 -0
- package/esm/vendors/rangeParser.d.ts +10 -0
- package/esm/vendors/rangeParser.js +121 -0
- package/package.json +1 -5
- package/cjs/file.d.ts +0 -3
- package/cjs/file.js +0 -12
- package/esm/etag.js +0 -90
- package/esm/file.d.ts +0 -3
- package/esm/file.js +0 -8
- /package/cjs/{contentType.d.ts → vendors/contentType.d.ts} +0 -0
- /package/esm/{contentType.d.ts → vendors/contentType.d.ts} +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// 'mime-score' back-ported to CommonJS
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.mimeScore = void 0;
|
|
5
|
+
// Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3)
|
|
6
|
+
const FACET_SCORES = {
|
|
7
|
+
'prs.': 100,
|
|
8
|
+
'x-': 200,
|
|
9
|
+
'x.': 300,
|
|
10
|
+
'vnd.': 400,
|
|
11
|
+
default: 900
|
|
12
|
+
};
|
|
13
|
+
// Score mime source (Logic originally from `jshttp/mime-types` module)
|
|
14
|
+
const SOURCE_SCORES = {
|
|
15
|
+
nginx: 10,
|
|
16
|
+
apache: 20,
|
|
17
|
+
iana: 40,
|
|
18
|
+
default: 30 // definitions added by `jshttp/mime-db` project?
|
|
19
|
+
};
|
|
20
|
+
const TYPE_SCORES = {
|
|
21
|
+
// prefer application/xml over text/xml
|
|
22
|
+
// prefer application/rtf over text/rtf
|
|
23
|
+
application: 1,
|
|
24
|
+
// prefer font/woff over application/font-woff
|
|
25
|
+
font: 2,
|
|
26
|
+
// prefer video/mp4 over audio/mp4 over application/mp4
|
|
27
|
+
// See https://www.rfc-editor.org/rfc/rfc4337.html#section-2
|
|
28
|
+
audio: 2,
|
|
29
|
+
video: 3,
|
|
30
|
+
default: 0
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Get each component of the score for a mime type. The sum of these is the
|
|
34
|
+
* total score. The higher the score, the more "official" the type.
|
|
35
|
+
*/
|
|
36
|
+
function mimeScore(mimeType, source = 'default') {
|
|
37
|
+
if (mimeType === 'application/octet-stream') {
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
const [type, subtype] = mimeType.split('/');
|
|
41
|
+
const facet = subtype.replace(/(\.|x-).*/, '$1');
|
|
42
|
+
const facetScore = FACET_SCORES[facet] || FACET_SCORES.default;
|
|
43
|
+
const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default;
|
|
44
|
+
const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default;
|
|
45
|
+
// All else being equal prefer shorter types
|
|
46
|
+
const lengthScore = 1 - mimeType.length / 100;
|
|
47
|
+
return facetScore + sourceScore + typeScore + lengthScore;
|
|
48
|
+
}
|
|
49
|
+
exports.mimeScore = mimeScore;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWltZVNjb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZlbmRvcnMvbWltZVNjb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1Q0FBdUM7OztBQUV2Qyx1RUFBdUU7QUFDdkUsTUFBTSxZQUFZLEdBQUc7SUFDcEIsTUFBTSxFQUFFLEdBQUc7SUFDWCxJQUFJLEVBQUUsR0FBRztJQUNULElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLEdBQUc7SUFDWCxPQUFPLEVBQUUsR0FBRztDQUNaLENBQUE7QUFFRCx1RUFBdUU7QUFDdkUsTUFBTSxhQUFhLEdBQUc7SUFDckIsS0FBSyxFQUFFLEVBQUU7SUFDVCxNQUFNLEVBQUUsRUFBRTtJQUNWLElBQUksRUFBRSxFQUFFO0lBQ1IsT0FBTyxFQUFFLEVBQUUsQ0FBQyxpREFBaUQ7Q0FDN0QsQ0FBQTtBQUVELE1BQU0sV0FBVyxHQUFHO0lBQ25CLHVDQUF1QztJQUN2Qyx1Q0FBdUM7SUFDdkMsV0FBVyxFQUFFLENBQUM7SUFFZCw4Q0FBOEM7SUFDOUMsSUFBSSxFQUFFLENBQUM7SUFFUCx1REFBdUQ7SUFDdkQsNERBQTREO0lBQzVELEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLENBQUM7SUFFUixPQUFPLEVBQUUsQ0FBQztDQUNWLENBQUE7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxTQUFTO0lBQ3JELElBQUksUUFBUSxLQUFLLDBCQUEwQixFQUFFLENBQUM7UUFDN0MsT0FBTyxDQUFDLENBQUE7SUFDVCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTNDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRWhELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFBO0lBQzlELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFBO0lBQ2xFLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFBO0lBRTFELDRDQUE0QztJQUM1QyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUE7SUFFN0MsT0FBTyxVQUFVLEdBQUcsV0FBVyxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUE7QUFDMUQsQ0FBQztBQWpCRCw4QkFpQkMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variables.
|
|
3
|
+
* @private
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Invoke callback when the response has finished, useful for
|
|
7
|
+
* cleaning up resources afterwards.
|
|
8
|
+
*
|
|
9
|
+
* @param {object} msg
|
|
10
|
+
* @param {function} listener
|
|
11
|
+
* @return {object}
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export declare function onFinished(msg: any, listener: any): any;
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Variables.
|
|
4
|
+
* @private
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.onFinished = void 0;
|
|
8
|
+
/* istanbul ignore next */
|
|
9
|
+
const node_async_hooks_1 = require("node:async_hooks");
|
|
10
|
+
const defer = typeof setImmediate === 'function'
|
|
11
|
+
? setImmediate
|
|
12
|
+
: function (fn) {
|
|
13
|
+
process.nextTick(fn.bind.apply(fn, arguments));
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Invoke callback when the response has finished, useful for
|
|
17
|
+
* cleaning up resources afterwards.
|
|
18
|
+
*
|
|
19
|
+
* @param {object} msg
|
|
20
|
+
* @param {function} listener
|
|
21
|
+
* @return {object}
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
function onFinished(msg, listener) {
|
|
25
|
+
if (isFinished(msg) !== false) {
|
|
26
|
+
defer(listener, null, msg);
|
|
27
|
+
return msg;
|
|
28
|
+
}
|
|
29
|
+
// attach the listener to the message
|
|
30
|
+
attachListener(msg, wrap(listener));
|
|
31
|
+
return msg;
|
|
32
|
+
}
|
|
33
|
+
exports.onFinished = onFinished;
|
|
34
|
+
/**
|
|
35
|
+
* Determine if message is already finished.
|
|
36
|
+
*
|
|
37
|
+
* @param {object} msg
|
|
38
|
+
* @return {boolean}
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
41
|
+
function isFinished(msg) {
|
|
42
|
+
const socket = msg.socket;
|
|
43
|
+
if (typeof msg.finished === 'boolean') {
|
|
44
|
+
// OutgoingMessage
|
|
45
|
+
return Boolean(msg.finished || (socket && !socket.writable));
|
|
46
|
+
}
|
|
47
|
+
if (typeof msg.complete === 'boolean') {
|
|
48
|
+
// IncomingMessage
|
|
49
|
+
return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable));
|
|
50
|
+
}
|
|
51
|
+
// don't know
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Attach a finished listener to the message.
|
|
56
|
+
*
|
|
57
|
+
* @param {object} msg
|
|
58
|
+
* @param {function} callback
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
function attachFinishedListener(msg, callback) {
|
|
62
|
+
let eeMsg;
|
|
63
|
+
let eeSocket;
|
|
64
|
+
let finished = false;
|
|
65
|
+
function onFinish(error) {
|
|
66
|
+
eeMsg.cancel();
|
|
67
|
+
eeSocket.cancel();
|
|
68
|
+
finished = true;
|
|
69
|
+
callback(error);
|
|
70
|
+
}
|
|
71
|
+
// finished on first message event
|
|
72
|
+
eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish);
|
|
73
|
+
function onSocket(socket) {
|
|
74
|
+
// remove listener
|
|
75
|
+
msg.removeListener('socket', onSocket);
|
|
76
|
+
if (finished)
|
|
77
|
+
return;
|
|
78
|
+
if (eeMsg !== eeSocket)
|
|
79
|
+
return;
|
|
80
|
+
// finished on first socket event
|
|
81
|
+
eeSocket = first([[socket, 'error', 'close']], onFinish);
|
|
82
|
+
}
|
|
83
|
+
if (msg.socket) {
|
|
84
|
+
// socket already assigned
|
|
85
|
+
onSocket(msg.socket);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// wait for socket to be assigned
|
|
89
|
+
msg.on('socket', onSocket);
|
|
90
|
+
if (msg.socket === undefined) {
|
|
91
|
+
// istanbul ignore next: node.js 0.8 patch
|
|
92
|
+
patchAssignSocket(msg, onSocket);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Attach the listener to the message.
|
|
97
|
+
*
|
|
98
|
+
* @param {object} msg
|
|
99
|
+
* @return {function}
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
function attachListener(msg, listener) {
|
|
103
|
+
let attached = msg.__onFinished;
|
|
104
|
+
// create a private single listener with queue
|
|
105
|
+
if (!attached || !attached.queue) {
|
|
106
|
+
attached = msg.__onFinished = createListener(msg);
|
|
107
|
+
attachFinishedListener(msg, attached);
|
|
108
|
+
}
|
|
109
|
+
attached.queue.push(listener);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Create listener on message.
|
|
113
|
+
*
|
|
114
|
+
* @param {object} msg
|
|
115
|
+
* @return {function}
|
|
116
|
+
* @private
|
|
117
|
+
*/
|
|
118
|
+
function createListener(msg) {
|
|
119
|
+
function listener(err) {
|
|
120
|
+
if (msg.__onFinished === listener)
|
|
121
|
+
msg.__onFinished = null;
|
|
122
|
+
if (!listener.queue)
|
|
123
|
+
return;
|
|
124
|
+
const queue = listener.queue;
|
|
125
|
+
listener.queue = null;
|
|
126
|
+
for (let i = 0; i < queue.length; i++) {
|
|
127
|
+
queue[i](err, msg);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
listener.queue = [];
|
|
131
|
+
return listener;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Patch ServerResponse.prototype.assignSocket for node.js 0.8.
|
|
135
|
+
*
|
|
136
|
+
* @param {ServerResponse} res
|
|
137
|
+
* @param {function} callback
|
|
138
|
+
* @private
|
|
139
|
+
*/
|
|
140
|
+
// istanbul ignore next: node.js 0.8 patch
|
|
141
|
+
function patchAssignSocket(res, callback) {
|
|
142
|
+
const assignSocket = res.assignSocket;
|
|
143
|
+
if (typeof assignSocket !== 'function')
|
|
144
|
+
return;
|
|
145
|
+
// res.on('socket', callback) is broken in 0.8
|
|
146
|
+
res.assignSocket = function _assignSocket(socket) {
|
|
147
|
+
assignSocket.call(this, socket);
|
|
148
|
+
callback(socket);
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Try to require async_hooks
|
|
153
|
+
* @private
|
|
154
|
+
*/
|
|
155
|
+
function tryRequireAsyncHooks() {
|
|
156
|
+
try {
|
|
157
|
+
return require('async_hooks');
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
return {};
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Wrap function with async resource, if possible.
|
|
165
|
+
* AsyncResource.bind static method backported.
|
|
166
|
+
* @private
|
|
167
|
+
*/
|
|
168
|
+
function wrap(fn) {
|
|
169
|
+
let res;
|
|
170
|
+
// create anonymous resource
|
|
171
|
+
res = new node_async_hooks_1.AsyncResource(fn.name || 'bound-anonymous-fn');
|
|
172
|
+
// incompatible node.js
|
|
173
|
+
if (!res || !res.runInAsyncScope) {
|
|
174
|
+
return fn;
|
|
175
|
+
}
|
|
176
|
+
// return bound function
|
|
177
|
+
return res.runInAsyncScope.bind(res, fn, null);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get the first event in a set of event emitters and event pairs.
|
|
181
|
+
*
|
|
182
|
+
* @param {array} stuff
|
|
183
|
+
* @param {function} done
|
|
184
|
+
* @public
|
|
185
|
+
*/
|
|
186
|
+
function first(stuff, done) {
|
|
187
|
+
if (!Array.isArray(stuff)) {
|
|
188
|
+
throw new TypeError('arg must be an array of [ee, events...] arrays');
|
|
189
|
+
}
|
|
190
|
+
const cleanups = [];
|
|
191
|
+
for (let i = 0; i < stuff.length; i++) {
|
|
192
|
+
const arr = stuff[i];
|
|
193
|
+
if (!Array.isArray(arr) || arr.length < 2) {
|
|
194
|
+
throw new TypeError('each array member must be [ee, events...]');
|
|
195
|
+
}
|
|
196
|
+
const ee = arr[0];
|
|
197
|
+
for (let j = 1; j < arr.length; j++) {
|
|
198
|
+
const event = arr[j];
|
|
199
|
+
const fn = listener(event, callback);
|
|
200
|
+
// listen to the event
|
|
201
|
+
ee.on(event, fn);
|
|
202
|
+
// push this listener to the list of cleanups
|
|
203
|
+
cleanups.push({
|
|
204
|
+
ee: ee,
|
|
205
|
+
event: event,
|
|
206
|
+
fn: fn
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function callback() {
|
|
211
|
+
cleanup();
|
|
212
|
+
done.apply(null, arguments);
|
|
213
|
+
}
|
|
214
|
+
function cleanup() {
|
|
215
|
+
let x;
|
|
216
|
+
for (let i = 0; i < cleanups.length; i++) {
|
|
217
|
+
x = cleanups[i];
|
|
218
|
+
x.ee.removeListener(x.event, x.fn);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function thunk(fn) {
|
|
222
|
+
done = fn;
|
|
223
|
+
}
|
|
224
|
+
thunk.cancel = cleanup;
|
|
225
|
+
return thunk;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Create the event listener.
|
|
229
|
+
* @private
|
|
230
|
+
*/
|
|
231
|
+
function listener(event, done) {
|
|
232
|
+
return function onevent(arg1) {
|
|
233
|
+
const args = new Array(arguments.length);
|
|
234
|
+
const ee = this;
|
|
235
|
+
const err = event === 'error'
|
|
236
|
+
? arg1
|
|
237
|
+
: null;
|
|
238
|
+
// copy args to prevent arguments escaping scope
|
|
239
|
+
for (let i = 0; i < args.length; i++) {
|
|
240
|
+
args[i] = arguments[i];
|
|
241
|
+
}
|
|
242
|
+
done(err, ee, event, args);
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25GaW5pc2hlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZW5kb3JzL29uRmluaXNoZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBRUgsMEJBQTBCO0FBQzFCLHVEQUE4QztBQUU5QyxNQUFNLEtBQUssR0FBRyxPQUFPLFlBQVksS0FBSyxVQUFVO0lBQy9DLENBQUMsQ0FBQyxZQUFZO0lBQ2QsQ0FBQyxDQUFDLFVBQVUsRUFBRTtRQUNiLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDL0MsQ0FBQyxDQUFBO0FBRUY7Ozs7Ozs7O0dBUUc7QUFFSCxTQUFnQixVQUFVLENBQUUsR0FBRyxFQUFFLFFBQVE7SUFDeEMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDL0IsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDMUIsT0FBTyxHQUFHLENBQUE7SUFDWCxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFFbkMsT0FBTyxHQUFHLENBQUE7QUFDWCxDQUFDO0FBVkQsZ0NBVUM7QUFFRDs7Ozs7O0dBTUc7QUFFSCxTQUFTLFVBQVUsQ0FBRSxHQUFHO0lBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFekIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdkMsa0JBQWtCO1FBQ2xCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBRUQsSUFB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
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse "Range" header `str` relative to the given file `size`.
|
|
3
|
+
*
|
|
4
|
+
* @param {Number} size
|
|
5
|
+
* @param {String} str
|
|
6
|
+
* @param {Object} [options]
|
|
7
|
+
* @return {Array}
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseRange(size: any, str: any, options: any): any;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Parse "Range" header `str` relative to the given file `size`.
|
|
4
|
+
*
|
|
5
|
+
* @param {Number} size
|
|
6
|
+
* @param {String} str
|
|
7
|
+
* @param {Object} [options]
|
|
8
|
+
* @return {Array}
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.parseRange = void 0;
|
|
13
|
+
function parseRange(size, str, options) {
|
|
14
|
+
if (typeof str !== 'string') {
|
|
15
|
+
throw new TypeError('argument str must be a string');
|
|
16
|
+
}
|
|
17
|
+
const index = str.indexOf('=');
|
|
18
|
+
if (index === -1) {
|
|
19
|
+
return -2;
|
|
20
|
+
}
|
|
21
|
+
// split the range string
|
|
22
|
+
const arr = str.slice(index + 1).split(',');
|
|
23
|
+
const ranges = [];
|
|
24
|
+
// add ranges type
|
|
25
|
+
ranges.type = str.slice(0, index);
|
|
26
|
+
// parse all ranges
|
|
27
|
+
for (let i = 0; i < arr.length; i++) {
|
|
28
|
+
const range = arr[i].split('-');
|
|
29
|
+
let start = parseInt(range[0], 10);
|
|
30
|
+
let end = parseInt(range[1], 10);
|
|
31
|
+
// -nnn
|
|
32
|
+
if (isNaN(start)) {
|
|
33
|
+
start = size - end;
|
|
34
|
+
end = size - 1;
|
|
35
|
+
// nnn-
|
|
36
|
+
}
|
|
37
|
+
else if (isNaN(end)) {
|
|
38
|
+
end = size - 1;
|
|
39
|
+
}
|
|
40
|
+
// limit last-byte-pos to current length
|
|
41
|
+
if (end > size - 1) {
|
|
42
|
+
end = size - 1;
|
|
43
|
+
}
|
|
44
|
+
// invalid or unsatisifiable
|
|
45
|
+
if (isNaN(start) || isNaN(end) || start > end || start < 0) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
// add range
|
|
49
|
+
ranges.push({
|
|
50
|
+
start: start,
|
|
51
|
+
end: end
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (ranges.length < 1) {
|
|
55
|
+
// unsatisifiable
|
|
56
|
+
return -1;
|
|
57
|
+
}
|
|
58
|
+
return options && options.combine
|
|
59
|
+
? combineRanges(ranges)
|
|
60
|
+
: ranges;
|
|
61
|
+
}
|
|
62
|
+
exports.parseRange = parseRange;
|
|
63
|
+
/**
|
|
64
|
+
* Combine overlapping & adjacent ranges.
|
|
65
|
+
* @private
|
|
66
|
+
*/
|
|
67
|
+
function combineRanges(ranges) {
|
|
68
|
+
const ordered = ranges.map(mapWithIndex).sort(sortByRangeStart);
|
|
69
|
+
for (let j = 0, i = 1; i < ordered.length; i++) {
|
|
70
|
+
const range = ordered[i];
|
|
71
|
+
const current = ordered[j];
|
|
72
|
+
if (range.start > current.end + 1) {
|
|
73
|
+
// next range
|
|
74
|
+
ordered[++j] = range;
|
|
75
|
+
}
|
|
76
|
+
else if (range.end > current.end) {
|
|
77
|
+
// extend range
|
|
78
|
+
current.end = range.end;
|
|
79
|
+
current.index = Math.min(current.index, range.index);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// trim ordered array
|
|
83
|
+
ordered.length = j + 1;
|
|
84
|
+
// generate combined range
|
|
85
|
+
const combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex);
|
|
86
|
+
// copy ranges type
|
|
87
|
+
combined.type = ranges.type;
|
|
88
|
+
return combined;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Map function to add index value to ranges.
|
|
92
|
+
* @private
|
|
93
|
+
*/
|
|
94
|
+
function mapWithIndex(range, index) {
|
|
95
|
+
return {
|
|
96
|
+
start: range.start,
|
|
97
|
+
end: range.end,
|
|
98
|
+
index: index
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Map function to remove index value from ranges.
|
|
103
|
+
* @private
|
|
104
|
+
*/
|
|
105
|
+
function mapWithoutIndex(range) {
|
|
106
|
+
return {
|
|
107
|
+
start: range.start,
|
|
108
|
+
end: range.end
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Sort function to sort ranges by index.
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
function sortByRangeIndex(a, b) {
|
|
116
|
+
return a.index - b.index;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Sort function to sort ranges by start position.
|
|
120
|
+
* @private
|
|
121
|
+
*/
|
|
122
|
+
function sortByRangeStart(a, b) {
|
|
123
|
+
return a.start - b.start;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2VQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVuZG9ycy9yYW5nZVBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQUVILFNBQWdCLFVBQVUsQ0FBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU87SUFDN0MsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksU0FBUyxDQUFDLCtCQUErQixDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFOUIsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0MsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBRWpCLGtCQUFrQjtJQUNsQixNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBRWpDLG1CQUFtQjtJQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNsQyxJQUFJLEdBQUcsR0FBRyxRQUFR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Q2xDLE9BQU87UUFDTixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDbEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1FBQ2QsS0FBSyxFQUFFLEtBQUs7S0FDWixDQUFBO0FBQ0YsQ0FBQztBQUVEOzs7R0FHRztBQUVILFNBQVMsZUFBZSxDQUFFLEtBQUs7SUFDOUIsT0FBTztRQUNOLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztRQUNsQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7S0FDZCxDQUFBO0FBQ0YsQ0FBQztBQUVEOzs7R0FHRztBQUVILFNBQVMsZ0JBQWdCLENBQUUsQ0FBQyxFQUFFLENBQUM7SUFDOUIsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFDekIsQ0FBQztBQUVEOzs7R0FHRztBQUVILFNBQVMsZ0JBQWdCLENBQUUsQ0FBQyxFQUFFLENBQUM7SUFDOUIsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFDekIsQ0FBQyJ9
|
package/esm/body.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { BufferBodyOptions } from './bodyHelpers.js';
|
|
2
|
+
import { type BufferBodyOptions } from './bodyHelpers.js';
|
|
3
3
|
export declare const getBuffer: import("./dx.js").Context<Buffer | undefined, [options?: Partial<BufferBodyOptions> | undefined], any, (...np: any[]) => any>;
|
|
4
4
|
export declare const getJson: import("./dx.js").Context<any, [options?: Partial<BufferBodyOptions> | undefined], any, (...np: any[]) => any>;
|
|
5
5
|
export declare const getRaw: import("./dx.js").Context<Buffer | undefined, [options?: Partial<BufferBodyOptions> | undefined], any, (...np: any[]) => any>;
|
package/esm/bodyHelpers.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getContentStream, readStream } from './stream.js';
|
|
2
|
-
import { parseContentType } from './contentType.js';
|
|
2
|
+
import { parseContentType } from './vendors/contentType.js';
|
|
3
3
|
function defaultQueryParser(search) {
|
|
4
4
|
return Object.fromEntries(new URLSearchParams(search)); // support both leading ? and not
|
|
5
5
|
}
|
|
@@ -87,4 +87,4 @@ export function urlFromReq(req) {
|
|
|
87
87
|
export function queryFromReq(req, options) {
|
|
88
88
|
return (bodyDefaultOptions.queryParser ?? options?.queryParser ?? defaultQueryParser)(urlFromReq(req).searchParams.toString());
|
|
89
89
|
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keUhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm9keUhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBQyxNQUFNLGFBQWEsQ0FBQTtBQUN4RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQTtBQVF6RCxTQUFTLGtCQUFrQixDQUFDLE1BQWM7SUFDekMsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQyxpQ0FBaUM7QUFDekYsQ0FBQztBQUVELElBQUksa0JBQWtCLEdBQXNCLEVBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUMsQ0FBQSxDQUFDLFFBQVE7QUFDM0UsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE9BQW1DO0lBQzlFLGtCQUFrQixHQUFHLEVBQUMsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFBO0FBQ3pELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFvQixFQUFFLE9BQW9DO0lBQzdGLE1BQU0sRUFBQyxTQUFTLEVBQUMsR0FBRyxFQUFDLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxPQUFPLEVBQUMsQ0FBQTtJQUN2RDs7Ozs7T0FLRztJQUNGLCtGQUErRjtJQUNoRyxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzdFLElBQ0MsR0FBRyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLFNBQVM7V0FDM0MsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQzVCLE9BQU07SUFDUixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMs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
|
package/esm/connect.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
3
|
-
import { Chainable } from './dx.js';
|
|
3
|
+
import { type Chainable } from './dx.js';
|
|
4
4
|
import './polyfillWithResolvers.js';
|
|
5
5
|
export declare function connectMiddlewares(...middlewares: Array<(req: IncomingMessage, res: ServerResponse, next: () => any) => any>): Chainable;
|
package/esm/connect.js
CHANGED
|
@@ -37,4 +37,4 @@ export function connectMiddlewares(...middlewares) {
|
|
|
37
37
|
// await run()
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBaUIsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLFNBQVMsQ0FBQTtBQUN0RCxPQUFPLDRCQUE0QixDQUFBO0FBRW5DLDJCQUEyQjtBQUMzQiw2REFBNkQ7QUFDN0QsTUFBTSxVQUFVLGtCQUFrQixDQUNqQyxHQUFHLFdBQXVGO0lBRTFGLE9BQU8sSUFBSSxDQUFDLEVBQUU7UUFDYixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtRQUNwQixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtRQUNwQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDckMsbUVBQW1FO1FBQ25FLHVGQUF1RjtRQUN2RixXQUFXLENBQUMsV0FBVyxDQUN0QixDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFXLEVBQUUsRUFBRTtZQUNsRCx5Q0FBeUM7WUFDekMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJO2dCQUFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNyRSxJQUFJLENBQUM7Z0JBQUEsT0FBTyxNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQUEsQ0FBQztZQUNwRCxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUFBLENBQUM7UUFDdkMsQ0FBQyxFQUNELEtBQUssSUFBSSxFQUFFO1lBQ1Ysd0dBQXdHO1lBQ3hHLElBQUksQ0FBQztnQkFDSixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ25DLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNkLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUN6QixDQUFDO1FBQ0YsQ0FBQyxDQUNELEVBQUUsQ0FBQSxDQUFDLHNFQUFzRTtRQUMxRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUE7UUFDcEIsWUFBWTtRQUNaLDRCQUE0QjtRQUM1QiwrQ0FBK0M7UUFDL0MseUNBQXlDO1FBQ3pDLElBQUk7UUFDSixjQUFjO0lBQ2YsQ0FBQyxDQUFBO0FBQ0YsQ0FBQyJ9
|
package/esm/dx.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/// <reference types="node" resolution-mode="require"/>
|
|
4
4
|
import { Readable } from 'node:stream';
|
|
5
5
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
6
|
-
import { SendOptions } from '
|
|
6
|
+
import type { SendOptions } from './staticHelpers.js';
|
|
7
7
|
export interface Chainable<P extends any[] = any[], R = any, Next = (...np: any[]) => any> {
|
|
8
8
|
(next: Next, ...p: P): R;
|
|
9
9
|
}
|
package/esm/dx.js
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
2
|
import { writeRes } from './dxHelpers.js';
|
|
3
3
|
export function makeDxContext(maker) {
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const promiseMap = new WeakMap();
|
|
5
|
+
const valueMap = new WeakMap();
|
|
6
|
+
const context = (...params) => {
|
|
7
|
+
const req = getReq();
|
|
8
|
+
if (!promiseMap.has(req))
|
|
9
|
+
promiseMap.set(req, (async () => {
|
|
10
|
+
const value = await maker(...params);
|
|
11
|
+
valueMap.set(req, value);
|
|
12
|
+
return value;
|
|
13
|
+
})());
|
|
14
|
+
return promiseMap.get(req);
|
|
15
|
+
};
|
|
8
16
|
Object.defineProperty(context, 'value', {
|
|
9
|
-
get() { return getReq()
|
|
17
|
+
get() { return valueMap.get(getReq()); },
|
|
10
18
|
set(value) {
|
|
11
|
-
|
|
12
|
-
|
|
19
|
+
const req = getReq();
|
|
20
|
+
promiseMap.set(req, Promise.resolve(value));
|
|
21
|
+
valueMap.set(req, value);
|
|
13
22
|
}
|
|
14
23
|
});
|
|
15
24
|
context.chain = (...params) => async (next) => {
|
|
@@ -17,10 +26,10 @@ export function makeDxContext(maker) {
|
|
|
17
26
|
return next();
|
|
18
27
|
};
|
|
19
28
|
context.set = (req, value) => {
|
|
20
|
-
req
|
|
21
|
-
req
|
|
29
|
+
promiseMap.set(req, Promise.resolve(value));
|
|
30
|
+
valueMap.set(req, value);
|
|
22
31
|
};
|
|
23
|
-
context.get = req => req
|
|
32
|
+
context.get = req => valueMap.get(req);
|
|
24
33
|
return context;
|
|
25
34
|
}
|
|
26
35
|
const requestStorage = new AsyncLocalStorage();
|
|
@@ -116,4 +125,4 @@ export function setRedirect(url, status) {
|
|
|
116
125
|
// https://github.com/jshttp/content-disposition/blob/1037e24e4790273da96645ad250061f39e77968c/index.js#L186
|
|
117
126
|
// because in most applications, users can specify a simple filename which usually doesn't need to be validated.
|
|
118
127
|
// we leave setDownload() implementation for users, for now.
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDbEQsT0FBTyxFQUFpQixRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQTtBQXVCdkQsTUFBTSxVQUFVLGFBQWEsQ0FLM0IsS0FBNEM7SUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQStCLENBQUE7SUFDN0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQXNCLENBQUE7SUFDbEQsTUFBTSxPQUFPLEdBQWdDLENBQUMsR0FBRyxNQUFjLEVBQUUsRUFBRTtRQUNsRSxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUN6RCxNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFBO2dCQUNwQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtnQkFDeEIsT0FBTyxLQUFLLENBQUE7WUFDYixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDTCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsQ0FBQyxDQUFBO0lBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFO1FBQ3ZDLEdBQUcsS0FBSSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUM7UUFDckMsR0FBRyxDQUFDLEtBQUs7WUFDUixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQTtZQUNwQixVQUFVLENBQUMsR0FBRyxD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
|
package/esm/dxHelpers.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/// <reference types="node" resolution-mode="require"/>
|
|
4
4
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
5
5
|
import { Readable } from 'node:stream';
|
|
6
|
-
import { SendOptions } from '
|
|
6
|
+
import { type SendOptions } from './staticHelpers.js';
|
|
7
7
|
import './polyfillWithResolvers.js';
|
|
8
8
|
export type DxContext = {
|
|
9
9
|
charset?: BufferEncoding;
|