dx-server 0.9.0 → 0.10.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 +245 -250
- package/cjs/body.d.ts +7 -7
- package/cjs/body.js +8 -8
- package/cjs/bodyHelpers.js +6 -6
- package/cjs/connect.d.ts +2 -2
- package/cjs/connect.js +5 -5
- package/cjs/dx.d.ts +1 -1
- package/cjs/dx.js +22 -13
- package/cjs/dxHelpers.d.ts +2 -2
- package/cjs/dxHelpers.js +12 -7
- package/cjs/express.d.ts +1 -1
- package/cjs/express.js +16 -14
- package/cjs/helpers.d.ts +2 -2
- package/cjs/helpers.js +10 -10
- package/cjs/index.d.ts +6 -6
- package/cjs/index.js +28 -28
- package/cjs/polyfillWithResolvers.js +2 -3
- package/cjs/router.js +7 -6
- package/cjs/static.d.ts +5 -0
- package/cjs/static.js +12 -12
- package/cjs/staticHelpers.d.ts +16 -4
- package/cjs/staticHelpers.js +191 -9
- package/cjs/stream.d.ts +1 -1
- package/cjs/stream.js +3 -3
- 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 +7 -7
- package/esm/body.js +2 -2
- package/esm/bodyHelpers.js +3 -3
- package/esm/connect.d.ts +2 -2
- package/esm/connect.js +3 -3
- package/esm/dx.d.ts +1 -1
- package/esm/dx.js +21 -12
- package/esm/dxHelpers.d.ts +2 -2
- package/esm/dxHelpers.js +10 -5
- package/esm/express.d.ts +1 -1
- package/esm/express.js +16 -14
- package/esm/helpers.d.ts +2 -2
- package/esm/helpers.js +2 -2
- package/esm/index.d.ts +6 -6
- package/esm/index.js +6 -6
- package/esm/polyfillWithResolvers.js +2 -3
- package/esm/router.js +6 -5
- package/esm/static.d.ts +5 -0
- package/esm/static.js +10 -10
- package/esm/staticHelpers.d.ts +16 -4
- package/esm/staticHelpers.js +191 -9
- package/esm/stream.d.ts +1 -1
- package/esm/stream.js +3 -3
- 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,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { BufferBodyOptions } from './bodyHelpers.
|
|
3
|
-
export declare const getBuffer: import("./dx.
|
|
4
|
-
export declare const getJson: import("./dx.
|
|
5
|
-
export declare const getRaw: import("./dx.
|
|
6
|
-
export declare const getText: import("./dx.
|
|
7
|
-
export declare const getUrlEncoded: import("./dx.
|
|
8
|
-
export declare const getQuery: import("./dx.
|
|
2
|
+
import { type BufferBodyOptions } from './bodyHelpers.ts';
|
|
3
|
+
export declare const getBuffer: import("./dx.ts").Context<Buffer | undefined, [options?: Partial<BufferBodyOptions> | undefined], any, (...np: any[]) => any>;
|
|
4
|
+
export declare const getJson: import("./dx.ts").Context<any, [options?: Partial<BufferBodyOptions> | undefined], any, (...np: any[]) => any>;
|
|
5
|
+
export declare const getRaw: import("./dx.ts").Context<Buffer | undefined, [options?: Partial<BufferBodyOptions> | undefined], any, (...np: any[]) => any>;
|
|
6
|
+
export declare const getText: import("./dx.ts").Context<string | undefined, [options?: Partial<BufferBodyOptions> | undefined], any, (...np: any[]) => any>;
|
|
7
|
+
export declare const getUrlEncoded: import("./dx.ts").Context<any, [options?: Partial<BufferBodyOptions> | undefined], any, (...np: any[]) => any>;
|
|
8
|
+
export declare const getQuery: import("./dx.ts").Context<any, [options?: Partial<BufferBodyOptions> | undefined], any, (...np: any[]) => any>;
|
package/esm/body.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getReq, makeDxContext } from './dx.
|
|
2
|
-
import { bufferFromReq, jsonFromReq, queryFromReq, rawFromReq, textFromReq, urlEncodedFromReq } from './bodyHelpers.
|
|
1
|
+
import { getReq, makeDxContext } from './dx.ts';
|
|
2
|
+
import { bufferFromReq, jsonFromReq, queryFromReq, rawFromReq, textFromReq, urlEncodedFromReq } from './bodyHelpers.ts';
|
|
3
3
|
export const getBuffer = makeDxContext((options) => bufferFromReq(getReq(), options));
|
|
4
4
|
export const getJson = makeDxContext((options) => jsonFromReq(getReq(), options));
|
|
5
5
|
export const getRaw = makeDxContext((options) => rawFromReq(getReq(), options));
|
package/esm/bodyHelpers.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getContentStream, readStream } from './stream.
|
|
2
|
-
import { parseContentType } from './contentType.
|
|
1
|
+
import { getContentStream, readStream } from './stream.ts';
|
|
2
|
+
import { parseContentType } from './vendors/contentType.ts';
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keUhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm9keUhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBQyxNQUFNLGFBQWEsQ0FBQTtBQUN4RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQTtBQVF6RCxTQUFTLGtCQUFrQixDQUFDLE1BQWM7SUFDekMsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQyxpQ0FBaUM7QUFDekYsQ0FBQztBQUVELElBQUksa0JBQWtCLEdBQXNCLEVBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUMsQ0FBQSxDQUFDLFFBQVE7QUFDM0UsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE9BQW1DO0lBQzlFLGtCQUFrQixHQUFHLEVBQUMsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFBO0FBQ3pELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFvQixFQUFFLE9BQW9DO0lBQzdGLE1BQU0sRUFBQyxTQUFTLEVBQUMsR0FBRyxFQUFDLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxPQUFPLEVBQUMsQ0FBQTtJQUN2RDs7Ozs7T0FLRztJQUNGLCtGQUErRjtJQUNoRyxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzdFLElBQ0MsR0FBRyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLFNBQVM7V0FDM0MsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQzVCLE9BQU07SUFDUixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQTtJQUVsRixPQUFPO0lBQ1AsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDOUUsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzlDLE9BQU8sTUFBTSxVQUFVLENBQ3RCLE1BQU0sRUFDTjtRQUNDLE1BQU0sRUFBRSxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDM0QsS0FBSyxFQUFFLFNBQVM7S0FDaEIsQ0FDRCxDQUFBO0FBQ0YsQ0FBQztBQUVELHVEQUF1RDtBQUN2RCxTQUFTLHlCQUF5QixDQUFDLEdBQW9CLEVBQUUsUUFBZ0I7SUFDeEUsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNsRCxJQUFJLENBQUMsY0FBYztRQUFFLE9BQU07SUFDM0IsTUFBTSxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNoRSxJQUFJLFNBQVMsS0FBSyxRQUFRO1FBQUUsT0FBTTtJQUVsQyxPQUFPLFVBQVUsQ0FBQTtBQUNsQixDQUFDO0FBQ0QsU0FBUyxlQUFlLENBQUMsR0FBb0IsRUFBRSxRQUFnQjtJQUM5RCxNQUFNLFVBQVUsR0FBRyx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDM0QsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFNO0lBQ3ZCLHNDQUFzQztJQUN0QyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBb0IsSUFBSSxPQUFPLENBQUE7SUFDOUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUVsRyxPQUFPLE9BQU8sQ0FBQTtBQUNmLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxHQUFvQixFQUFFLE9BQW9DO0lBQzNGLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUN4RCxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU07SUFDcEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ2hELElBQUksTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3BDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDekMsQ0FBQztBQUNGLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FBQyxHQUFvQixFQUFFLE9BQW9DO0lBQzFGLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7UUFBRSxPQUFNO0lBQ3ZFLE9BQU8sTUFBTSxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ3pDLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxHQUFvQixFQUFFLE9BQW9DO0lBQzNGLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDbEQsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFNO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNoRCxJQUFJLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDNUMsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsR0FBb0IsRUFBRSxPQUFvQztJQUNqRyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLG1DQUFtQyxDQUFDLENBQUE7SUFDekUsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFNO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNoRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTyxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixJQUFJLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUMxSCxDQUFDO0FBQ0YsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBb0I7SUFDOUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFBO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQW9CLEVBQUUsT0FBb0M7SUFDdEYsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsSUFBSSxPQUFPLEVBQUUsV0FBVyxJQUFJLGtCQUFrQixDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0FBQy9ILENBQUMifQ==
|
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.
|
|
4
|
-
import './polyfillWithResolvers.
|
|
3
|
+
import { type Chainable } from './dx.ts';
|
|
4
|
+
import './polyfillWithResolvers.ts';
|
|
5
5
|
export declare function connectMiddlewares(...middlewares: Array<(req: IncomingMessage, res: ServerResponse, next: () => any) => any>): Chainable;
|
package/esm/connect.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getReq, getRes } from './dx.
|
|
2
|
-
import './polyfillWithResolvers.
|
|
1
|
+
import { getReq, getRes } from './dx.ts';
|
|
2
|
+
import './polyfillWithResolvers.ts';
|
|
3
3
|
// support async middleware
|
|
4
4
|
// do not support error middleware (the one with 4 arguments)
|
|
5
5
|
export function connectMiddlewares(...middlewares) {
|
|
@@ -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.ts';
|
|
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
|
-
import { writeRes } from './dxHelpers.
|
|
2
|
+
import { writeRes } from './dxHelpers.ts';
|
|
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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
|