dx-server 0.1.2 → 0.2.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 +66 -91
- package/cjs/body.d.ts +3 -1
- package/cjs/body.js +10 -6
- package/cjs/context.d.ts +4 -3
- package/cjs/context.js +6 -6
- package/cjs/dx.js +37 -37
- package/cjs/express.d.ts +1 -1
- package/cjs/express.js +9 -9
- package/cjs/file.d.ts +1 -1
- package/cjs/file.js +3 -3
- package/cjs/index.d.ts +2 -2
- package/cjs/index.js +6 -4
- package/cjs/route.js +3 -3
- package/cjs/static.js +2 -2
- package/esm/body.d.ts +3 -1
- package/esm/body.js +11 -7
- package/esm/context.d.ts +4 -3
- package/esm/context.js +4 -4
- package/esm/dx.js +38 -38
- package/esm/express.d.ts +1 -1
- package/esm/express.js +8 -8
- package/esm/file.d.ts +1 -1
- package/esm/file.js +4 -4
- package/esm/index.d.ts +2 -2
- package/esm/index.js +3 -3
- package/esm/route.js +4 -4
- package/esm/static.js +3 -3
- package/package.json +6 -8
package/README.md
CHANGED
|
@@ -9,14 +9,59 @@ yarn add dx-server jchain
|
|
|
9
9
|
|
|
10
10
|
Check below sample with comment for more details.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Simple server
|
|
13
13
|
|
|
14
14
|
```javascript
|
|
15
|
-
import {Server} from 'http'
|
|
16
|
-
import {promisify} from 'util'
|
|
15
|
+
import {Server} from 'node:http'
|
|
17
16
|
import chain from 'jchain'
|
|
18
17
|
import {
|
|
19
|
-
|
|
18
|
+
reqContext, resContext,
|
|
19
|
+
dxContext, setHtml, setJson, setText,
|
|
20
|
+
bufferBodyContext, jsonBodyContext, queryContext, rawBodyContext, textBodyContext, urlencodedBodyContext,
|
|
21
|
+
router,
|
|
22
|
+
} from 'dx-server'
|
|
23
|
+
|
|
24
|
+
new Server().on('request', async (req, res) => {
|
|
25
|
+
await chain(
|
|
26
|
+
reqContext.chain(req),
|
|
27
|
+
resContext.chain(res),
|
|
28
|
+
dxContext.chain(),
|
|
29
|
+
bufferBodyContext.chain(),
|
|
30
|
+
jsonBodyContext.chain(),
|
|
31
|
+
urlencodedBodyContext.chain(),
|
|
32
|
+
textBodyContext.chain(),
|
|
33
|
+
rawBodyContext.chain(),
|
|
34
|
+
queryContext.chain(),
|
|
35
|
+
next => {
|
|
36
|
+
resContext.value.setHeader('Cache-Control', 'no-cache')
|
|
37
|
+
console.log(reqContext.value.method, reqContext.value.url)
|
|
38
|
+
next()
|
|
39
|
+
},
|
|
40
|
+
async next => {
|
|
41
|
+
try {await next()} catch (e) {
|
|
42
|
+
console.error(e)
|
|
43
|
+
setHtml('internal server error (code: internal)', {status: 500})
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
router.get({
|
|
47
|
+
'/'() {setHtml('hello world')},
|
|
48
|
+
'/health'() {setText('ok')}
|
|
49
|
+
}),
|
|
50
|
+
() => {throw new Error('not found')},
|
|
51
|
+
)()
|
|
52
|
+
}).listen(3000, () => console.log('server is listening at 3000'))
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
More complex server with express.
|
|
56
|
+
This sample additionally requires: `yarn install express morgan`
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
```javascript
|
|
60
|
+
import {Server} from 'node:http'
|
|
61
|
+
import {promisify} from 'node:util'
|
|
62
|
+
import chain from 'jchain'
|
|
63
|
+
import {
|
|
64
|
+
makeContext, reqContext, resContext,
|
|
20
65
|
|
|
21
66
|
dxContext,
|
|
22
67
|
setHtml,
|
|
@@ -36,7 +81,7 @@ import {
|
|
|
36
81
|
|
|
37
82
|
router
|
|
38
83
|
} from 'dx-server'
|
|
39
|
-
import {expressApp
|
|
84
|
+
import {expressApp} from 'dx-server/express'
|
|
40
85
|
import express from 'express'
|
|
41
86
|
import morgan from 'morgan'
|
|
42
87
|
|
|
@@ -53,7 +98,7 @@ class ServerError extends Error {
|
|
|
53
98
|
|
|
54
99
|
// makeContext is a convenient way to create context
|
|
55
100
|
const authContext = makeContext(() => {
|
|
56
|
-
const req =
|
|
101
|
+
const req = reqContext.value
|
|
57
102
|
// determine if user is authenticated
|
|
58
103
|
// for e.g.
|
|
59
104
|
if (req.headers.authorization) {
|
|
@@ -66,7 +111,7 @@ const requireAuth = () => {
|
|
|
66
111
|
}
|
|
67
112
|
|
|
68
113
|
const serverChain = chain(
|
|
69
|
-
dxContext.chain({jsonBeautify:
|
|
114
|
+
dxContext.chain({jsonBeautify: process.env.NODE_ENV !== 'production'}), // allows to use setHtml, setJson, setRaw, setBuffer, setFile, setRedirect, etc.
|
|
70
115
|
bufferBodyContext.chain(), // use raw buffer body as Buffer use bufferBodyContext.value. This is required for jsonBodyContext, urlencodedBodyContext, textBodyContext, rawBodyContext
|
|
71
116
|
jsonBodyContext.chain(), // to get body parsed as json use jsonBodyContext.value. Only available if content-type is application/json
|
|
72
117
|
urlencodedBodyContext.chain(), // to get body parsed as urlencoded use urlencodedBodyContext.value. Only available if content-type is application/x-www-form-urlencoded
|
|
@@ -76,58 +121,37 @@ const serverChain = chain(
|
|
|
76
121
|
next => {
|
|
77
122
|
// this is the difference between express and dx-server
|
|
78
123
|
// req, res can be accessed from anywhere via context which uses NodeJS's AsyncLocalStorage under the hood
|
|
79
|
-
|
|
124
|
+
resContext.value.setHeader('Cache-Control', 'no-cache')
|
|
80
125
|
next()
|
|
81
126
|
},
|
|
82
|
-
async next => {
|
|
83
|
-
// global error catching for all following middlewares
|
|
127
|
+
async next => {// global error catching for all following middlewares
|
|
84
128
|
try {
|
|
85
129
|
await next()
|
|
86
|
-
} catch (e) {
|
|
87
|
-
// only app error message should be shown to user
|
|
130
|
+
} catch (e) {// only app error message should be shown to user
|
|
88
131
|
if (e instanceof ServerError) setHtml(`${e.message} (code: ${e.code})`, {status: e.status})
|
|
89
|
-
else {
|
|
90
|
-
// report system error
|
|
132
|
+
else {// report system error
|
|
91
133
|
console.error(e)
|
|
92
134
|
setHtml('internal server error (code: internal)', {status: 500})
|
|
93
135
|
}
|
|
94
136
|
}
|
|
95
137
|
},
|
|
96
|
-
await expressApp(app => {
|
|
97
|
-
// any express feature can be used
|
|
98
|
-
// required express installed, with for e.g., `yarn add express`
|
|
138
|
+
await expressApp(app => {// any express feature can be used. This requires express installed, with for e.g., `yarn add express`
|
|
99
139
|
app.set('trust proxy', true)
|
|
100
140
|
if (process.env.NODE_ENV !== 'production') app.set('json spaces', 2)
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
morgan('common'), // in future, we will provide native implementation of express middlewares
|
|
104
|
-
// cookies, session, etc.
|
|
105
|
-
// session({
|
|
106
|
-
// secret: '123',
|
|
107
|
-
// resave: false,
|
|
108
|
-
// store: redisStore,
|
|
109
|
-
// saveUninitialized: true,
|
|
110
|
-
// // cookie: { secure: true }
|
|
111
|
-
// }),
|
|
112
|
-
),
|
|
113
|
-
await expressRouter(router => {
|
|
114
|
-
// setup express router
|
|
115
|
-
router.use('/public', express.static('public'))
|
|
141
|
+
app.use(morgan('common')) // in future, we will provide native implementation of express middlewares
|
|
142
|
+
app.use('/public', express.static('public'))
|
|
116
143
|
}),
|
|
117
144
|
authContext.chain(),
|
|
118
|
-
// example of catching error for all /api/* routes
|
|
119
|
-
router.post({
|
|
145
|
+
router.post({// example of catching error for all /api/* routes
|
|
120
146
|
async '/api'({next}) {
|
|
121
147
|
try {
|
|
122
148
|
await next()
|
|
123
149
|
} catch (e) {
|
|
124
|
-
// only app error message should be shown to user
|
|
125
|
-
if (e instanceof ServerError) setJson({
|
|
150
|
+
if (e instanceof ServerError) setJson({// only app error message should be shown to user
|
|
126
151
|
error: e.message,
|
|
127
152
|
code: e.code,
|
|
128
153
|
}, {status: e.status})
|
|
129
|
-
else {
|
|
130
|
-
// report system error
|
|
154
|
+
else {// report system error
|
|
131
155
|
console.error(e)
|
|
132
156
|
setJson({
|
|
133
157
|
message: 'internal server error',
|
|
@@ -154,11 +178,6 @@ const serverChain = chain(
|
|
|
154
178
|
setHtml('ok')
|
|
155
179
|
}
|
|
156
180
|
}),
|
|
157
|
-
router.post({ // api not found router
|
|
158
|
-
'/api'() {
|
|
159
|
-
throw new ServerError('not found', 404, 'not_found')
|
|
160
|
-
}
|
|
161
|
-
}, {end: false}),
|
|
162
181
|
() => { // not found router
|
|
163
182
|
throw new ServerError('not found', 404, 'not_found')
|
|
164
183
|
},
|
|
@@ -168,8 +187,8 @@ const tcpServer = new Server()
|
|
|
168
187
|
.on('request', async (req, res) => {
|
|
169
188
|
try {
|
|
170
189
|
await chain(
|
|
171
|
-
|
|
172
|
-
|
|
190
|
+
reqContext.chain(req), // required for most middlewares
|
|
191
|
+
resContext.chain(res), // required for most middlewares
|
|
173
192
|
serverChain,
|
|
174
193
|
)()
|
|
175
194
|
} catch (e) {
|
|
@@ -177,56 +196,12 @@ const tcpServer = new Server()
|
|
|
177
196
|
}
|
|
178
197
|
})
|
|
179
198
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
console.log(`server is listening at ${port}`)
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
Sample error boundary chains:
|
|
186
|
-
```typescript
|
|
187
|
-
import { type Chainable } from 'jchain'
|
|
188
|
-
import {setHtml, setJson} from 'dx-server'
|
|
189
|
-
import {router} from 'dx-server'
|
|
190
|
-
|
|
191
|
-
export const catchError: Chainable = async next => {
|
|
192
|
-
try {
|
|
193
|
-
await next()
|
|
194
|
-
} catch (e) {
|
|
195
|
-
console.error(e)
|
|
196
|
-
setHtml('internal server error', {status: 500})
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
export const catchApiError: Chainable = router.post({
|
|
201
|
-
async '/api'({next}) {
|
|
202
|
-
try {
|
|
203
|
-
await next()
|
|
204
|
-
} catch (e) {
|
|
205
|
-
console.error(e)
|
|
206
|
-
setJson({
|
|
207
|
-
message: 'internal server error',
|
|
208
|
-
code: 'internal_server_error'
|
|
209
|
-
}, {status: 500})
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}, {end: false})
|
|
213
|
-
|
|
214
|
-
export const notFound: Chainable = () => {
|
|
215
|
-
setHtml('not found', {status: 404})
|
|
216
|
-
}
|
|
217
|
-
export const notFoundApi: Chainable = router.post({
|
|
218
|
-
'/api'() {
|
|
219
|
-
setJson({
|
|
220
|
-
message: 'not found',
|
|
221
|
-
code: 'not_found'
|
|
222
|
-
}, {status: 404})
|
|
223
|
-
}
|
|
224
|
-
}, {end: false})
|
|
199
|
+
await promisify(tcpServer.listen.bind(tcpServer))(3000)
|
|
200
|
+
console.log('server is listening at 3000')
|
|
225
201
|
```
|
|
226
202
|
|
|
227
203
|
## TODO
|
|
228
204
|
Until these middlewares are available as native dx-server middlewares, express middlewares can be used with `expressApp()`
|
|
229
205
|
- [ ] native static file serve, like 'static-serve'
|
|
230
206
|
- [ ] logger like morgan
|
|
231
|
-
- [ ] cookie, session
|
|
232
207
|
- [ ] cors
|
package/cjs/body.d.ts
CHANGED
|
@@ -31,6 +31,8 @@ export declare const urlencodedBodyContext: {
|
|
|
31
31
|
};
|
|
32
32
|
export declare const queryContext: {
|
|
33
33
|
readonly value: import("qs").ParsedQs;
|
|
34
|
-
chain(
|
|
34
|
+
chain(params_0?: {
|
|
35
|
+
simplify?: boolean | undefined;
|
|
36
|
+
} | undefined): <V>(next: () => V) => Promise<any>;
|
|
35
37
|
with(value: import("qs").ParsedQs): <V_1>(next: () => V_1) => Promise<any>;
|
|
36
38
|
};
|
package/cjs/body.js
CHANGED
|
@@ -7,7 +7,7 @@ const contentType_js_1 = require("./contentType.js");
|
|
|
7
7
|
const context_js_1 = require("./context.js");
|
|
8
8
|
exports.bufferBodyContext = (0, context_js_1.makeContext)(async ({ limit = 100 << 10, // 100kb
|
|
9
9
|
} = {}) => {
|
|
10
|
-
const req = context_js_1.
|
|
10
|
+
const req = context_js_1.reqContext.value;
|
|
11
11
|
/**
|
|
12
12
|
* Check if a request has a request body.
|
|
13
13
|
* A request with a body __must__ either have `transfer-encoding`
|
|
@@ -29,7 +29,7 @@ exports.bufferBodyContext = (0, context_js_1.makeContext)(async ({ limit = 100 <
|
|
|
29
29
|
});
|
|
30
30
|
});
|
|
31
31
|
const forceGetContentTypeParams = (expected) => {
|
|
32
|
-
const req = context_js_1.
|
|
32
|
+
const req = context_js_1.reqContext.value;
|
|
33
33
|
const contentTypeRaw = req.headers['content-type'];
|
|
34
34
|
if (!contentTypeRaw)
|
|
35
35
|
return;
|
|
@@ -83,9 +83,13 @@ exports.urlencodedBodyContext = (0, context_js_1.makeContext)(async ({ simplify
|
|
|
83
83
|
: (0, qs_1.parse)(str);
|
|
84
84
|
}
|
|
85
85
|
});
|
|
86
|
-
exports.queryContext = (0, context_js_1.makeContext)(() => {
|
|
87
|
-
const req = context_js_1.
|
|
86
|
+
exports.queryContext = (0, context_js_1.makeContext)(({ simplify } = {}) => {
|
|
87
|
+
const req = context_js_1.reqContext.value;
|
|
88
88
|
const query = req.url?.split('?', 2)?.[1];
|
|
89
|
-
return query
|
|
89
|
+
return query
|
|
90
|
+
? simplify
|
|
91
|
+
? Object.fromEntries(new URLSearchParams(query))
|
|
92
|
+
: (0, qs_1.parse)(query)
|
|
93
|
+
: {};
|
|
90
94
|
});
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF3RDtBQUN4RCwyQkFBd0I7QUFDeEIscURBQWlEO0FBQ2pELDZDQUFvRDtBQUV2QyxRQUFBLGlCQUFpQixHQUFHLElBQUEsd0JBQVcsRUFBQyxLQUFLLEVBQ2pELEVBQ0MsS0FBSyxHQUFHLEdBQUcsSUFBSSxFQUFFLEVBQUUsUUFBUTtLQUd4QixFQUFFLEVBQ0wsRUFBRTtJQUNILE1BQU0sR0FBRyxHQUFHLHVCQUFVLENBQUMsS0FBSyxDQUFBO0lBRTVCOzs7OztPQUtHO0lBQ0YsK0ZBQStGO0lBQ2hHLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDN0UsSUFDQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssU0FBUztXQUMzQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDNUIsT0FBTTtJQUNSLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFBO0lBRWxGLE9BQU87SUFDUCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM5RSxNQUFNLE1BQU0sR0FBRyxJQUFBLDRCQUFnQixFQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUM5QyxPQUFPLE1BQU0sSUFBQSxzQkFBVSxFQUN0QixNQUFNLEVBQ047UUFDQyxNQUFNLEVBQUUsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzNELEtBQUs7S0FD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
|
package/cjs/context.d.ts
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { Promisable } from 'type-fest';
|
|
3
2
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
3
|
+
type Promisable<T> = T | PromiseLike<T>;
|
|
4
4
|
export declare const makeContext: <T, Params extends any[] = unknown[]>(maker: (...params: Params) => Promisable<T>, end?: (result: any, value: T) => any) => {
|
|
5
5
|
readonly value: T;
|
|
6
6
|
chain(...params: Params): <V>(next: () => V) => Promise<any>;
|
|
7
7
|
with(value: T): <V_1>(next: () => V_1) => Promise<any>;
|
|
8
8
|
};
|
|
9
|
-
export declare const
|
|
9
|
+
export declare const reqContext: {
|
|
10
10
|
readonly value: IncomingMessage;
|
|
11
11
|
chain(params_0: IncomingMessage): <V>(next: () => V) => Promise<any>;
|
|
12
12
|
with(value: IncomingMessage): <V_1>(next: () => V_1) => Promise<any>;
|
|
13
13
|
};
|
|
14
|
-
export declare const
|
|
14
|
+
export declare const resContext: {
|
|
15
15
|
readonly value: ServerResponse<IncomingMessage>;
|
|
16
16
|
chain(params_0: ServerResponse<IncomingMessage>): <V>(next: () => V) => Promise<any>;
|
|
17
17
|
with(value: ServerResponse<IncomingMessage>): <V_1>(next: () => V_1) => Promise<any>;
|
|
18
18
|
};
|
|
19
|
+
export {};
|
package/cjs/context.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.resContext = exports.reqContext = exports.makeContext = void 0;
|
|
4
4
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
5
|
-
|
|
6
|
-
const makeContext = (maker, end =
|
|
5
|
+
function identity(x) { return x; }
|
|
6
|
+
const makeContext = (maker, end = identity) => {
|
|
7
7
|
const asyncLocalStorage = new node_async_hooks_1.AsyncLocalStorage();
|
|
8
8
|
return {
|
|
9
9
|
get value() {
|
|
@@ -27,6 +27,6 @@ exports.makeContext = makeContext;
|
|
|
27
27
|
// url: full url without server, protocol, port.
|
|
28
28
|
// headers: if headers are repeated, they are joined by comma. Header names are lowercased.
|
|
29
29
|
// rawHeaders: list of header name and value in a flat array. Case is preserved.
|
|
30
|
-
exports.
|
|
31
|
-
exports.
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
exports.reqContext = (0, exports.makeContext)(identity);
|
|
31
|
+
exports.resContext = (0, exports.makeContext)(identity);
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUFrRDtBQUdsRCxTQUFTLFFBQVEsQ0FBSSxDQUFJLElBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFDO0FBRzlCLE1BQU0sV0FBVyxHQUFHLENBQzFCLEtBQTJDLEVBQzNDLE1BQXNDLFFBQVEsRUFDN0MsRUFBRTtJQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxvQ0FBaUIsRUFBSyxDQUFBO0lBQ3BELE9BQU87UUFDTixJQUFJLEtBQUs7WUFDUixPQUFPLGlCQUFpQixDQUFDLFFBQVEsRUFBRyxDQUFBO1FBQ3JDLENBQUM7UUFDRCxLQUFLLENBQUMsR0FBRyxNQUFjO1lBQ3RCLE9BQU8sS0FBSyxFQUFLLElBQWEsRUFBRSxFQUFFO2dCQUNqQyxNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFBO2dCQUNwQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDNUQsQ0FBQyxDQUFBO1FBQ0YsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFRO1lBQ1osT0FBTyxLQUFLLEVBQUssSUFBYSxFQUFFLEVBQUU7Z0JBQ2pDLE9BQU8sR0FBRyxDQUFDLE1BQU0saUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUM1RCxDQUFDLENBQUE7UUFDRixDQUFDO0tBQ0QsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQXJCWSxRQUFBLFdBQVcsZUFxQnZCO0FBRUQsZUFBZTtBQUNmLGdEQUFnRDtBQUNoRCwyRkFBMkY7QUFDM0YsZ0ZBQWdGO0FBQ25FLFFBQUEsVUFBVSxHQUFHLElBQUEsbUJBQVcsRUFBcUMsUUFBUSxDQUFDLENBQUE7QUFDdEUsUUFBQSxVQUFVLEdBQUcsSUFBQSxtQkFBVyxFQUFtQyxRQUFRLENBQUMsQ0FBQSJ9
|
package/cjs/dx.js
CHANGED
|
@@ -15,7 +15,7 @@ exports.dxContext = (0, context_js_1.makeContext)(async ({ jsonBeautify, disable
|
|
|
15
15
|
disableEtag,
|
|
16
16
|
};
|
|
17
17
|
}, async (ret, { type, data, charset, jsonBeautify, disableEtag }) => {
|
|
18
|
-
const res = context_js_1.
|
|
18
|
+
const res = context_js_1.resContext.value;
|
|
19
19
|
const setContentType = (contentType) => {
|
|
20
20
|
if (res.headersSent || res.getHeader('content-type'))
|
|
21
21
|
return;
|
|
@@ -58,7 +58,7 @@ exports.dxContext = (0, context_js_1.makeContext)(async ({ jsonBeautify, disable
|
|
|
58
58
|
res.setHeader('content-type', 'text/plain');
|
|
59
59
|
throw new Error(`unsupported response type ${type}`);
|
|
60
60
|
}
|
|
61
|
-
const req = context_js_1.
|
|
61
|
+
const req = context_js_1.reqContext.value;
|
|
62
62
|
if (res.headersSent) {
|
|
63
63
|
if (res.writableFinished) {
|
|
64
64
|
// skipped: response is already finished
|
|
@@ -112,7 +112,7 @@ exports.dxContext = (0, context_js_1.makeContext)(async ({ jsonBeautify, disable
|
|
|
112
112
|
else {
|
|
113
113
|
bufferOrStream.pipe(res);
|
|
114
114
|
}
|
|
115
|
-
//
|
|
115
|
+
// we do not support content-encoding (gzip, deflate, br) and leave it to reverse proxy or CDN
|
|
116
116
|
}
|
|
117
117
|
await (0, node_util_1.promisify)(res.end.bind(res))(undefined); // some express middleware, such as express-session, requires explicitly passing chunk
|
|
118
118
|
}
|
|
@@ -120,64 +120,64 @@ exports.dxContext = (0, context_js_1.makeContext)(async ({ jsonBeautify, disable
|
|
|
120
120
|
});
|
|
121
121
|
// todo: support setFile (with stream or with buffer)
|
|
122
122
|
function setText(text, { status } = {}) {
|
|
123
|
-
const
|
|
124
|
-
const
|
|
123
|
+
const res = context_js_1.resContext.value;
|
|
124
|
+
const dx = exports.dxContext.value;
|
|
125
125
|
if (status)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
res.statusCode = status;
|
|
127
|
+
dx.data = text;
|
|
128
|
+
dx.type = 'text';
|
|
129
129
|
}
|
|
130
130
|
exports.setText = setText;
|
|
131
131
|
function setHtml(html, opts = {}) {
|
|
132
132
|
setText(html, opts);
|
|
133
|
-
const
|
|
134
|
-
|
|
133
|
+
const dx = exports.dxContext.value;
|
|
134
|
+
dx.type = 'html';
|
|
135
135
|
}
|
|
136
136
|
exports.setHtml = setHtml;
|
|
137
137
|
function setBuffer(buffer, { status } = {}) {
|
|
138
|
-
const
|
|
139
|
-
const
|
|
138
|
+
const res = context_js_1.resContext.value;
|
|
139
|
+
const dx = exports.dxContext.value;
|
|
140
140
|
if (status)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
res.statusCode = status;
|
|
142
|
+
dx.data = buffer;
|
|
143
|
+
dx.type = 'buffer';
|
|
144
144
|
}
|
|
145
145
|
exports.setBuffer = setBuffer;
|
|
146
146
|
function setNodeStream(stream, { status } = {}) {
|
|
147
|
-
const
|
|
148
|
-
const
|
|
147
|
+
const res = context_js_1.resContext.value;
|
|
148
|
+
const dx = exports.dxContext.value;
|
|
149
149
|
if (status)
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
150
|
+
res.statusCode = status;
|
|
151
|
+
dx.data = stream;
|
|
152
|
+
dx.type = 'nodeStream';
|
|
153
153
|
}
|
|
154
154
|
exports.setNodeStream = setNodeStream;
|
|
155
155
|
function setWebStream(stream, { status } = {}) {
|
|
156
|
-
const
|
|
157
|
-
const
|
|
156
|
+
const res = context_js_1.resContext.value;
|
|
157
|
+
const dx = exports.dxContext.value;
|
|
158
158
|
if (status)
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
159
|
+
res.statusCode = status;
|
|
160
|
+
dx.data = stream;
|
|
161
|
+
dx.type = 'webStream';
|
|
162
162
|
}
|
|
163
163
|
exports.setWebStream = setWebStream;
|
|
164
164
|
function setJson(json, { status, beautify } = {}) {
|
|
165
|
-
const
|
|
165
|
+
const res = context_js_1.resContext.value;
|
|
166
166
|
if (status)
|
|
167
|
-
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
167
|
+
res.statusCode = status;
|
|
168
|
+
const dx = exports.dxContext.value;
|
|
169
|
+
dx.data = json;
|
|
170
|
+
dx.type = 'json';
|
|
171
171
|
if (beautify !== undefined)
|
|
172
|
-
|
|
172
|
+
dx.jsonBeautify = beautify;
|
|
173
173
|
}
|
|
174
174
|
exports.setJson = setJson;
|
|
175
175
|
function setRedirect(url, status) {
|
|
176
|
-
const
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
176
|
+
const res = context_js_1.resContext.value;
|
|
177
|
+
const dx = exports.dxContext.value;
|
|
178
|
+
res.statusCode = status;
|
|
179
|
+
dx.data = url;
|
|
180
|
+
dx.type = 'redirect';
|
|
181
181
|
}
|
|
182
182
|
exports.setRedirect = setRedirect;
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQThCO0FBQzlCLHlDQUFtQztBQUNuQyx1Q0FBZ0Q7QUFDaEQsNkNBQWdFO0FBQ2hFLDZDQUFvQztBQUV2QixRQUFBLFNBQVMsR0FBRyxJQUFBLHdCQUFXLEVBQUMsS0FBSyxFQUN6QyxFQUFDLFlBQVksRUFBRSxXQUFXLEtBR3RCLEVBQUUsRUFDTCxFQUFFO0lBQ0gsT0FBTztRQUNOLFlBQVk7UUFDWixXQUFXO0tBbUNWLENBQUE7QUFDSCxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUMsRUFBRSxFQUFFO0lBQ2xFLE1BQU0sR0FBRyxHQUFHLHVCQUFVLENBQUMsS0FBSyxDQUFBO0lBQzVCLE1BQU0sY0FBYyxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFO1FBQzlDLElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztZQUFFLE9BQU07UUFDNUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsR0FBRyxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3hGLENBQUMsQ0FBQTtJQUNELElBQUksY0FBYyxDQUFBO0lBRWxCLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDZCxLQUFLLE1BQU07WUFDVixjQUFjLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDN0IsS0FBSyxNQUFNO1lBQ1YsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQzNCLG1CQUFtQjtZQUNuQixjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFD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
|
package/cjs/express.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type Express, type Request, type Response, type Router } from 'express';
|
|
2
2
|
export declare const expressApp: (setup: (app: Express) => any) => Promise<(next: any) => Promise<void>>;
|
|
3
3
|
export declare const expressRouter: (setup: (router: Router) => any) => Promise<(next: any) => Promise<void>>;
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const expressMiddlewares: (...middlewares: Array<(req: Request, res: Response, next: () => any) => any>) => Promise<(next: any) => Promise<void>>;
|
package/cjs/express.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.expressMiddlewares = exports.expressRouter = exports.expressApp = void 0;
|
|
7
7
|
const express_1 = __importDefault(require("express"));
|
|
8
8
|
const context_js_1 = require("./context.js");
|
|
9
9
|
const jdefer_1 = __importDefault(require("jdefer"));
|
|
@@ -14,10 +14,10 @@ const expressApp = async (setup) => {
|
|
|
14
14
|
app.use((req, _res, _next) => req[symbol].resolve());
|
|
15
15
|
app.use((err, req, _res, _next) => req[symbol].reject(err));
|
|
16
16
|
return async (next) => {
|
|
17
|
-
const req = context_js_1.
|
|
17
|
+
const req = context_js_1.reqContext.value;
|
|
18
18
|
const defer = (0, jdefer_1.default)();
|
|
19
19
|
req[symbol] = defer;
|
|
20
|
-
app(req, context_js_1.
|
|
20
|
+
app(req, context_js_1.resContext.value);
|
|
21
21
|
await defer.promise;
|
|
22
22
|
await next();
|
|
23
23
|
};
|
|
@@ -30,15 +30,15 @@ const expressRouter = async (setup) => {
|
|
|
30
30
|
router.use((req, _res, _next) => req[symbol].resolve());
|
|
31
31
|
router.use((err, req, _res, _next) => req[symbol].reject(err));
|
|
32
32
|
return async (next) => {
|
|
33
|
-
const req = context_js_1.
|
|
33
|
+
const req = context_js_1.reqContext.value;
|
|
34
34
|
const defer = (0, jdefer_1.default)();
|
|
35
35
|
req[symbol] = defer;
|
|
36
|
-
router(req, context_js_1.
|
|
37
|
-
await defer.promise;
|
|
36
|
+
router(req, context_js_1.resContext.value);
|
|
37
|
+
await defer.promise; // if express middleware handles the request, this will never resolve.
|
|
38
38
|
await next();
|
|
39
39
|
};
|
|
40
40
|
};
|
|
41
41
|
exports.expressRouter = expressRouter;
|
|
42
|
-
const
|
|
43
|
-
exports.
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
const expressMiddlewares = (...middlewares) => (0, exports.expressRouter)(router => router.use(...middlewares));
|
|
43
|
+
exports.expressMiddlewares = expressMiddlewares;
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHByZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHNEQUF1RjtBQUN2Riw2Q0FBbUQ7QUFDbkQsb0RBQThCO0FBRXZCLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxLQUE0QixFQUFFLEVBQUU7SUFDaEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRW5DLE1BQU0sR0FBRyxHQUFHLElBQUEsaUJBQU8sR0FBRSxDQUFBO0lBQ3JCLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDcEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzNELE9BQU8sS0FBSyxFQUFDLElBQUksRUFBQyxFQUFFO1FBQ25CLE1BQU0sR0FBRyxHQUFHLHVCQUFVLENBQUMsS0FBSyxDQUFBO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQVMsR0FBRSxDQUFBO1FBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDbkIsR0FBRyxDQUFDLEdBQUcsRUFBRSx1QkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzFCLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUNuQixNQUFNLElBQUksRUFBRSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0FBQ0YsQ0FBQyxDQUFBO0FBZlksUUFBQSxVQUFVLGNBZXRCO0FBRU0sTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLEtBQThCLEVBQUUsRUFBRTtJQUNyRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7SUFFdEMsTUFBTSxNQUFNLEdBQUcsaUJBQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMvQixNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNuQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUM5RCxPQUFPLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtRQUNuQixNQUFNLEdBQUcsR0FBRyx1QkFBVSxDQUFDLEtBQUssQ0FBQTtRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFTLEdBQUUsQ0FBQTtRQUN6QixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLEVBQUUsdUJBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM3QixNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQyxzRUFBc0U7UUFDMUYsTUFBTSxJQUFJLEVBQUUsQ0FBQTtJQUNiLENBQUMsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQWZZLFFBQUEsYUFBYSxpQkFlekI7QUFFTSxNQUFNLGtCQUFrQixHQUFHLENBQ2pDLEdBQUcsV0FBeUUsRUFDM0UsRUFBRSxDQUFDLElBQUEscUJBQWEsRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFBO0FBRjNDLFFBQUEsa0JBQWtCLHNCQUV5QiJ9
|
package/cjs/file.d.ts
CHANGED
package/cjs/file.js
CHANGED
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.serveFile = void 0;
|
|
4
4
|
const context_js_1 = require("./context.js");
|
|
5
5
|
const serveFile = ({ prefix = '' }) => next => {
|
|
6
|
-
const req = context_js_1.
|
|
7
|
-
const res = context_js_1.
|
|
6
|
+
const req = context_js_1.reqContext.value;
|
|
7
|
+
const res = context_js_1.resContext.value;
|
|
8
8
|
if (req.method !== 'GET' && req.method !== 'HEAD')
|
|
9
9
|
return next();
|
|
10
10
|
};
|
|
11
11
|
exports.serveFile = serveFile;
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFtRDtBQUc1QyxNQUFNLFNBQVMsR0FBRyxDQUN4QixFQUFDLE1BQU0sR0FBRyxFQUFFLEVBRVgsRUFDVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDdEIsTUFBTSxHQUFHLEdBQUcsdUJBQVUsQ0FBQyxLQUFLLENBQUE7SUFDNUIsTUFBTSxHQUFHLEdBQUcsdUJBQVUsQ0FBQyxLQUFLLENBQUE7SUFDNUIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU07UUFBRSxPQUFPLElBQUksRUFBRSxDQUFBO0FBQ2pFLENBQUMsQ0FBQTtBQVJZLFFBQUEsU0FBUyxhQVFyQiJ9
|
package/cjs/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { makeContext,
|
|
2
|
-
export { dxContext, setHtml, setJson, setBuffer, setRedirect, setText } from './dx.js';
|
|
1
|
+
export { makeContext, reqContext, resContext } from './context.js';
|
|
2
|
+
export { dxContext, setHtml, setNodeStream, setWebStream, setJson, setBuffer, setRedirect, setText } from './dx.js';
|
|
3
3
|
export { bufferBodyContext, jsonBodyContext, queryContext, rawBodyContext, textBodyContext, urlencodedBodyContext } from './body.js';
|
|
4
4
|
export { router } from './route.js';
|
package/cjs/index.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.router = exports.urlencodedBodyContext = exports.textBodyContext = exports.rawBodyContext = exports.queryContext = exports.jsonBodyContext = exports.bufferBodyContext = exports.setText = exports.setRedirect = exports.setBuffer = exports.setJson = exports.setHtml = exports.dxContext = exports.
|
|
3
|
+
exports.router = exports.urlencodedBodyContext = exports.textBodyContext = exports.rawBodyContext = exports.queryContext = exports.jsonBodyContext = exports.bufferBodyContext = exports.setText = exports.setRedirect = exports.setBuffer = exports.setJson = exports.setWebStream = exports.setNodeStream = exports.setHtml = exports.dxContext = exports.resContext = exports.reqContext = exports.makeContext = void 0;
|
|
4
4
|
var context_js_1 = require("./context.js");
|
|
5
5
|
Object.defineProperty(exports, "makeContext", { enumerable: true, get: function () { return context_js_1.makeContext; } });
|
|
6
|
-
Object.defineProperty(exports, "
|
|
7
|
-
Object.defineProperty(exports, "
|
|
6
|
+
Object.defineProperty(exports, "reqContext", { enumerable: true, get: function () { return context_js_1.reqContext; } });
|
|
7
|
+
Object.defineProperty(exports, "resContext", { enumerable: true, get: function () { return context_js_1.resContext; } });
|
|
8
8
|
var dx_js_1 = require("./dx.js");
|
|
9
9
|
Object.defineProperty(exports, "dxContext", { enumerable: true, get: function () { return dx_js_1.dxContext; } });
|
|
10
10
|
Object.defineProperty(exports, "setHtml", { enumerable: true, get: function () { return dx_js_1.setHtml; } });
|
|
11
|
+
Object.defineProperty(exports, "setNodeStream", { enumerable: true, get: function () { return dx_js_1.setNodeStream; } });
|
|
12
|
+
Object.defineProperty(exports, "setWebStream", { enumerable: true, get: function () { return dx_js_1.setWebStream; } });
|
|
11
13
|
Object.defineProperty(exports, "setJson", { enumerable: true, get: function () { return dx_js_1.setJson; } });
|
|
12
14
|
Object.defineProperty(exports, "setBuffer", { enumerable: true, get: function () { return dx_js_1.setBuffer; } });
|
|
13
15
|
Object.defineProperty(exports, "setRedirect", { enumerable: true, get: function () { return dx_js_1.setRedirect; } });
|
|
@@ -21,4 +23,4 @@ Object.defineProperty(exports, "textBodyContext", { enumerable: true, get: funct
|
|
|
21
23
|
Object.defineProperty(exports, "urlencodedBodyContext", { enumerable: true, get: function () { return body_js_1.urlencodedBodyContext; } });
|
|
22
24
|
var route_js_1 = require("./route.js");
|
|
23
25
|
Object.defineProperty(exports, "router", { enumerable: true, get: function () { return route_js_1.router; } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQWdFO0FBQXhELHlHQUFBLFdBQVcsT0FBQTtBQUFFLHdHQUFBLFVBQVUsT0FBQTtBQUFFLHdHQUFBLFVBQVUsT0FBQTtBQUMzQyxpQ0FTZ0I7QUFSZixrR0FBQSxTQUFTLE9BQUE7QUFDVCxnR0FBQSxPQUFPLE9BQUE7QUFDUCxzR0FBQSxhQUFhLE9BQUE7QUFDYixxR0FBQSxZQUFZLE9BQUE7QUFDWixnR0FBQSxPQUFPLE9BQUE7QUFDUCxrR0FBQSxTQUFTLE9BQUE7QUFDVCxvR0FBQSxXQUFXLE9BQUE7QUFDWCxnR0FBQSxPQUFPLE9BQUE7QUFFUixxQ0FPa0I7QUFOakIsNEdBQUEsaUJBQWlCLE9BQUE7QUFDakIsMEdBQUEsZUFBZSxPQUFBO0FBQ2YsdUdBQUEsWUFBWSxPQUFBO0FBQ1oseUdBQUEsY0FBYyxPQUFBO0FBQ2QsMEdBQUEsZUFBZSxPQUFBO0FBQ2YsZ0hBQUEscUJBQXFCLE9BQUE7QUFFdEIsdUNBQWlDO0FBQXpCLGtHQUFBLE1BQU0sT0FBQSJ9
|
package/cjs/route.js
CHANGED
|
@@ -52,7 +52,7 @@ const allMethods = [
|
|
|
52
52
|
exports.router = {
|
|
53
53
|
method(method, router, { prefix = '', ...options } = {}) {
|
|
54
54
|
return next => {
|
|
55
|
-
const req = context_js_1.
|
|
55
|
+
const req = context_js_1.reqContext.value;
|
|
56
56
|
if (req.method !== method.toUpperCase())
|
|
57
57
|
return next();
|
|
58
58
|
for (const [pattern, handler] of Object.entries(router)) {
|
|
@@ -68,7 +68,7 @@ exports.router = {
|
|
|
68
68
|
},
|
|
69
69
|
all(router, { prefix = '', ...options } = {}) {
|
|
70
70
|
return next => {
|
|
71
|
-
const req = context_js_1.
|
|
71
|
+
const req = context_js_1.reqContext.value;
|
|
72
72
|
for (const [pattern, handler] of Object.entries(router)) {
|
|
73
73
|
const match = matchPattern(req.url ?? '', `${prefix}${pattern}`, options);
|
|
74
74
|
if (match)
|
|
@@ -83,4 +83,4 @@ exports.router = {
|
|
|
83
83
|
};
|
|
84
84
|
for (const method of allMethods)
|
|
85
85
|
exports.router[method] = exports.router.method.bind(exports.router, method);
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQTJDO0FBQzNDLDZDQUF1QztBQUV2QyxNQUFNLEtBQUssR0FBd0IsRUFBRSxDQUFBO0FBQ3JDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQTtBQUN4QixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUE7QUFjbEIsU0FBUyxXQUFXLENBQUMsSUFBWSxFQUFFLE9BQTRCO0lBQzlELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQzNELElBQUksU0FBUyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRTNDLE1BQU0sSUFBSSxHQUFVLEVBQUUsQ0FBQTtJQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFBLDZCQUFZLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNoRCxNQUFNLE1BQU0sR0FBRztRQUNkLE1BQU07UUFDTixJQUFJO0tBQ0osQ0FBQTtJQUVELElBQUksVUFBVSxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUE7UUFDeEIsVUFBVSxFQUFFLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZCxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUMzQixRQUFnQixFQUNoQixPQUFlLEVBQ2YsT0FBNkI7SUFFN0IsT0FBTyxHQUFHLEVBQUMsR0FBRyxPQUFPLEVBQUMsQ0FBQTtJQUN0QixPQUFPLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQTtJQUNwQixPQUFPLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQTtJQUN4QixPQUFPLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQTtJQUMzQixPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQTtJQUV0QixJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sS0FBSyxFQUFFO1FBQUUsT0FBTTtJQUV0QyxNQUFNLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNuQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU07SUFFbEIsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUVsQyxPQUFPO1FBQ04sT0FBTyxFQUFFLGlDQUFpQztRQUMxQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQWdDLEVBQUUsR0FBUSxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ2pGLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzdCLE9BQU8sR0FBRyxDQUFBO1FBQ1gsQ0FBQyxFQUFFLEVBQVksQ0FBQztLQUNoQixDQUFBO0FBQ0YsQ0FBQztBQTFCRCxvQ0EwQkM7QUF1QkQsNERBQTREO0FBQzVELE1BQU0sVUFBVSxHQUFHO0lBQ2xCLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTztDQUNyRSxDQUFBO0FBUUcsUUFBQSxNQUFNLEdBQVk7SUFDOUIsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxLQUFtQixFQUFFO1FBQ25FLE9BQU8sSUFBSSxDQUFDLEVBQUU7WUFDYixNQUFNLEdBQUcsR0FBRyx1QkFBVSxDQUFDLEtBQUssQ0FBQTtZQUM1QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFBRSxPQUFPLElBQUksRUFBRSxDQUFBO1lBQ3RELEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sR0FBRyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDbEgsSUFBSSxLQUFLO29CQUFFLE9BQU8sT0FBTyxDQUFDO3dCQUN6QixHQUFHLEtBQUs7d0JBQ1IsSUFBSTtxQkFDSixDQUFDLENBQUE7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLEVBQUUsQ0FBQTtRQUNkLENBQUMsQ0FBQTtJQUNGLENBQUM7SUFDRCxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sS0FBbUIsRUFBRTtRQUN4RCxPQUFPLElBQUksQ0FBQyxFQUFFO1lBQ2IsTUFBTSxHQUFHLEdBQUcsdUJBQVUsQ0FBQyxLQUFLLENBQUE7WUFDNUIsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsTUFBTSxHQUFHLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUN6RSxJQUFJLEtBQUs7b0JBQUUsT0FBTyxPQUFPLENBQUM7d0JBQ3pCLEdBQUcsS0FBSzt3QkFDUixJQUFJO3FCQUNKLENBQUMsQ0FBQTtZQUNILENBQUM7WUFDRCxPQUFPLElBQUksRUFBRSxDQUFBO1FBQ2QsQ0FBQyxDQUFBO0lBQ0YsQ0FBQztDQUNELENBQUE7QUFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLFVBQVU7SUFBRSxjQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsY0FBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBIn0=
|
package/cjs/static.js
CHANGED
|
@@ -5,7 +5,7 @@ exports.staticMiddleware = void 0;
|
|
|
5
5
|
const context_js_1 = require("./context.js");
|
|
6
6
|
function staticMiddleware({ root }) {
|
|
7
7
|
return async (next) => {
|
|
8
|
-
const req = context_js_1.
|
|
8
|
+
const req = context_js_1.reqContext.value;
|
|
9
9
|
if (req.method !== 'GET' && req.method !== 'HEAD')
|
|
10
10
|
return next();
|
|
11
11
|
var forwardError = !fallthrough;
|
|
@@ -57,4 +57,4 @@ function collapseLeadingSlashes(str) {
|
|
|
57
57
|
? '/' + str.slice(i)
|
|
58
58
|
: str;
|
|
59
59
|
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0YXRpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxjQUFjO0FBQ2QsNkNBQXVDO0FBRXZDLFNBQWdCLGdCQUFnQixDQUMvQixFQUFDLElBQUksRUFHSjtJQUVELE9BQU8sS0FBSyxFQUFFLElBQWUsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLHVCQUFVLENBQUMsS0FBSyxDQUFBO1FBQzVCLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNO1lBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQTtRQUVoRSxJQUFJLFlBQVksR0FBRyxDQUFDLFdBQVcsQ0FBQTtRQUMvQixJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3hDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUE7UUFFakMscUNBQXFDO1FBQ3JDLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzdELElBQUksR0FBRyxFQUFFLENBQUE7UUFDVixDQUFDO1FBRUQscUJBQXFCO1FBQ3JCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBRWxDLHdCQUF3QjtRQUN4QixNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUVuQyx1QkFBdUI7UUFDdkIsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUNqQyxDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxNQUFNO2dCQUNoQyxnREFBZ0Q7Z0JBQ2hELFlBQVksR0FBRyxJQUFJLENBQUE7WUFDcEIsQ0FBQyxDQUFDLENBQUE7UUFDSCxDQUFDO1FBRUQsaUJBQWlCO1FBQ2pCLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsS0FBSyxDQUFDLEdBQUc7WUFDcEMsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNULE9BQU07WUFDUCxDQUFDO1lBRUQsSUFBSSxFQUFFLENBQUE7UUFDUCxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU87UUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pCLENBQUMsQ0FBQTtBQUNGLENBQUM7QUFuREQsNENBbURDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBRSxHQUFXO0lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QyxNQUFLO1FBQ04sQ0FBQztJQUNGLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsR0FBRyxDQUFBO0FBQ1AsQ0FBQyJ9
|
package/esm/body.d.ts
CHANGED
|
@@ -31,6 +31,8 @@ export declare const urlencodedBodyContext: {
|
|
|
31
31
|
};
|
|
32
32
|
export declare const queryContext: {
|
|
33
33
|
readonly value: import("qs").ParsedQs;
|
|
34
|
-
chain(
|
|
34
|
+
chain(params_0?: {
|
|
35
|
+
simplify?: boolean | undefined;
|
|
36
|
+
} | undefined): <V>(next: () => V) => Promise<any>;
|
|
35
37
|
with(value: import("qs").ParsedQs): <V_1>(next: () => V_1) => Promise<any>;
|
|
36
38
|
};
|
package/esm/body.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getContentStream, readStream } from './stream.js';
|
|
2
2
|
import { parse } from 'qs';
|
|
3
3
|
import { parseContentType } from './contentType.js';
|
|
4
|
-
import { makeContext,
|
|
4
|
+
import { makeContext, reqContext } from './context.js';
|
|
5
5
|
export const bufferBodyContext = makeContext(async ({ limit = 100 << 10, // 100kb
|
|
6
6
|
} = {}) => {
|
|
7
|
-
const req =
|
|
7
|
+
const req = reqContext.value;
|
|
8
8
|
/**
|
|
9
9
|
* Check if a request has a request body.
|
|
10
10
|
* A request with a body __must__ either have `transfer-encoding`
|
|
@@ -26,7 +26,7 @@ export const bufferBodyContext = makeContext(async ({ limit = 100 << 10, // 100k
|
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
28
|
const forceGetContentTypeParams = (expected) => {
|
|
29
|
-
const req =
|
|
29
|
+
const req = reqContext.value;
|
|
30
30
|
const contentTypeRaw = req.headers['content-type'];
|
|
31
31
|
if (!contentTypeRaw)
|
|
32
32
|
return;
|
|
@@ -80,9 +80,13 @@ export const urlencodedBodyContext = makeContext(async ({ simplify } = {}) => {
|
|
|
80
80
|
: parse(str);
|
|
81
81
|
}
|
|
82
82
|
});
|
|
83
|
-
export const queryContext = makeContext(() => {
|
|
84
|
-
const req =
|
|
83
|
+
export const queryContext = makeContext(({ simplify } = {}) => {
|
|
84
|
+
const req = reqContext.value;
|
|
85
85
|
const query = req.url?.split('?', 2)?.[1];
|
|
86
|
-
return query
|
|
86
|
+
return query
|
|
87
|
+
? simplify
|
|
88
|
+
? Object.fromEntries(new URLSearchParams(query))
|
|
89
|
+
: parse(query)
|
|
90
|
+
: {};
|
|
87
91
|
});
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDeEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUVwRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUNqRCxFQUNDLEtBQUssR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLFFBQVE7S0FHeEIsRUFBRSxFQUNMLEVBQUU7SUFDSCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFBO0lBRTVCOzs7OztPQUtHO0lBQ0YsK0ZBQStGO0lBQ2hHLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDN0UsSUFDQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssU0FBUztXQUMzQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDNUIsT0FBTTtJQUNSLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFBO0lBRWxGLE9BQU87SUFDUCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM5RSxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFD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
|
package/esm/context.d.ts
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { Promisable } from 'type-fest';
|
|
3
2
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
3
|
+
type Promisable<T> = T | PromiseLike<T>;
|
|
4
4
|
export declare const makeContext: <T, Params extends any[] = unknown[]>(maker: (...params: Params) => Promisable<T>, end?: (result: any, value: T) => any) => {
|
|
5
5
|
readonly value: T;
|
|
6
6
|
chain(...params: Params): <V>(next: () => V) => Promise<any>;
|
|
7
7
|
with(value: T): <V_1>(next: () => V_1) => Promise<any>;
|
|
8
8
|
};
|
|
9
|
-
export declare const
|
|
9
|
+
export declare const reqContext: {
|
|
10
10
|
readonly value: IncomingMessage;
|
|
11
11
|
chain(params_0: IncomingMessage): <V>(next: () => V) => Promise<any>;
|
|
12
12
|
with(value: IncomingMessage): <V_1>(next: () => V_1) => Promise<any>;
|
|
13
13
|
};
|
|
14
|
-
export declare const
|
|
14
|
+
export declare const resContext: {
|
|
15
15
|
readonly value: ServerResponse<IncomingMessage>;
|
|
16
16
|
chain(params_0: ServerResponse<IncomingMessage>): <V>(next: () => V) => Promise<any>;
|
|
17
17
|
with(value: ServerResponse<IncomingMessage>): <V_1>(next: () => V_1) => Promise<any>;
|
|
18
18
|
};
|
|
19
|
+
export {};
|
package/esm/context.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
-
|
|
2
|
+
function identity(x) { return x; }
|
|
3
3
|
export const makeContext = (maker, end = identity) => {
|
|
4
4
|
const asyncLocalStorage = new AsyncLocalStorage();
|
|
5
5
|
return {
|
|
@@ -23,6 +23,6 @@ export const makeContext = (maker, end = identity) => {
|
|
|
23
23
|
// url: full url without server, protocol, port.
|
|
24
24
|
// headers: if headers are repeated, they are joined by comma. Header names are lowercased.
|
|
25
25
|
// rawHeaders: list of header name and value in a flat array. Case is preserved.
|
|
26
|
-
export const
|
|
27
|
-
export const
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
export const reqContext = makeContext(identity);
|
|
27
|
+
export const resContext = makeContext(identity);
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBR2xELFNBQVMsUUFBUSxDQUFJLENBQUksSUFBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUM7QUFHckMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQzFCLEtBQTJDLEVBQzNDLE1BQXNDLFFBQVEsRUFDN0MsRUFBRTtJQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsRUFBSyxDQUFBO0lBQ3BELE9BQU87UUFDTixJQUFJLEtBQUs7WUFDUixPQUFPLGlCQUFpQixDQUFDLFFBQVEsRUFBRyxDQUFBO1FBQ3JDLENBQUM7UUFDRCxLQUFLLENBQUMsR0FBRyxNQUFjO1lBQ3RCLE9BQU8sS0FBSyxFQUFLLElBQWEsRUFBRSxFQUFFO2dCQUNqQyxNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFBO2dCQUNwQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDNUQsQ0FBQyxDQUFBO1FBQ0YsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFRO1lBQ1osT0FBTyxLQUFLLEVBQUssSUFBYSxFQUFFLEVBQUU7Z0JBQ2pDLE9BQU8sR0FBRyxDQUFDLE1BQU0saUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUM1RCxDQUFDLENBQUE7UUFDRixDQUFDO0tBQ0QsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQUVELGVBQWU7QUFDZixnREFBZ0Q7QUFDaEQsMkZBQTJGO0FBQzNGLGdGQUFnRjtBQUNoRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFxQyxRQUFRLENBQUMsQ0FBQTtBQUNuRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFtQyxRQUFRLENBQUMsQ0FBQSJ9
|
package/esm/dx.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import makeDefer from 'jdefer';
|
|
2
2
|
import { promisify } from 'node:util';
|
|
3
3
|
import { entityTag, isFreshETag } from './etag.js';
|
|
4
|
-
import { makeContext,
|
|
4
|
+
import { makeContext, reqContext, resContext } from './context.js';
|
|
5
5
|
import { Readable } from 'node:stream';
|
|
6
6
|
export const dxContext = makeContext(async ({ jsonBeautify, disableEtag } = {}) => {
|
|
7
7
|
return {
|
|
@@ -9,7 +9,7 @@ export const dxContext = makeContext(async ({ jsonBeautify, disableEtag } = {})
|
|
|
9
9
|
disableEtag,
|
|
10
10
|
};
|
|
11
11
|
}, async (ret, { type, data, charset, jsonBeautify, disableEtag }) => {
|
|
12
|
-
const res =
|
|
12
|
+
const res = resContext.value;
|
|
13
13
|
const setContentType = (contentType) => {
|
|
14
14
|
if (res.headersSent || res.getHeader('content-type'))
|
|
15
15
|
return;
|
|
@@ -52,7 +52,7 @@ export const dxContext = makeContext(async ({ jsonBeautify, disableEtag } = {})
|
|
|
52
52
|
res.setHeader('content-type', 'text/plain');
|
|
53
53
|
throw new Error(`unsupported response type ${type}`);
|
|
54
54
|
}
|
|
55
|
-
const req =
|
|
55
|
+
const req = reqContext.value;
|
|
56
56
|
if (res.headersSent) {
|
|
57
57
|
if (res.writableFinished) {
|
|
58
58
|
// skipped: response is already finished
|
|
@@ -106,7 +106,7 @@ export const dxContext = makeContext(async ({ jsonBeautify, disableEtag } = {})
|
|
|
106
106
|
else {
|
|
107
107
|
bufferOrStream.pipe(res);
|
|
108
108
|
}
|
|
109
|
-
//
|
|
109
|
+
// we do not support content-encoding (gzip, deflate, br) and leave it to reverse proxy or CDN
|
|
110
110
|
}
|
|
111
111
|
await promisify(res.end.bind(res))(undefined); // some express middleware, such as express-session, requires explicitly passing chunk
|
|
112
112
|
}
|
|
@@ -114,57 +114,57 @@ export const dxContext = makeContext(async ({ jsonBeautify, disableEtag } = {})
|
|
|
114
114
|
});
|
|
115
115
|
// todo: support setFile (with stream or with buffer)
|
|
116
116
|
export function setText(text, { status } = {}) {
|
|
117
|
-
const
|
|
118
|
-
const
|
|
117
|
+
const res = resContext.value;
|
|
118
|
+
const dx = dxContext.value;
|
|
119
119
|
if (status)
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
res.statusCode = status;
|
|
121
|
+
dx.data = text;
|
|
122
|
+
dx.type = 'text';
|
|
123
123
|
}
|
|
124
124
|
export function setHtml(html, opts = {}) {
|
|
125
125
|
setText(html, opts);
|
|
126
|
-
const
|
|
127
|
-
|
|
126
|
+
const dx = dxContext.value;
|
|
127
|
+
dx.type = 'html';
|
|
128
128
|
}
|
|
129
129
|
export function setBuffer(buffer, { status } = {}) {
|
|
130
|
-
const
|
|
131
|
-
const
|
|
130
|
+
const res = resContext.value;
|
|
131
|
+
const dx = dxContext.value;
|
|
132
132
|
if (status)
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
133
|
+
res.statusCode = status;
|
|
134
|
+
dx.data = buffer;
|
|
135
|
+
dx.type = 'buffer';
|
|
136
136
|
}
|
|
137
137
|
export function setNodeStream(stream, { status } = {}) {
|
|
138
|
-
const
|
|
139
|
-
const
|
|
138
|
+
const res = resContext.value;
|
|
139
|
+
const dx = dxContext.value;
|
|
140
140
|
if (status)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
res.statusCode = status;
|
|
142
|
+
dx.data = stream;
|
|
143
|
+
dx.type = 'nodeStream';
|
|
144
144
|
}
|
|
145
145
|
export function setWebStream(stream, { status } = {}) {
|
|
146
|
-
const
|
|
147
|
-
const
|
|
146
|
+
const res = resContext.value;
|
|
147
|
+
const dx = dxContext.value;
|
|
148
148
|
if (status)
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
res.statusCode = status;
|
|
150
|
+
dx.data = stream;
|
|
151
|
+
dx.type = 'webStream';
|
|
152
152
|
}
|
|
153
153
|
export function setJson(json, { status, beautify } = {}) {
|
|
154
|
-
const
|
|
154
|
+
const res = resContext.value;
|
|
155
155
|
if (status)
|
|
156
|
-
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
res.statusCode = status;
|
|
157
|
+
const dx = dxContext.value;
|
|
158
|
+
dx.data = json;
|
|
159
|
+
dx.type = 'json';
|
|
160
160
|
if (beautify !== undefined)
|
|
161
|
-
|
|
161
|
+
dx.jsonBeautify = beautify;
|
|
162
162
|
}
|
|
163
163
|
export function setRedirect(url, status) {
|
|
164
|
-
const
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
164
|
+
const res = resContext.value;
|
|
165
|
+
const dx = dxContext.value;
|
|
166
|
+
res.statusCode = status;
|
|
167
|
+
dx.data = url;
|
|
168
|
+
dx.type = 'redirect';
|
|
169
169
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sUUFBUSxDQUFBO0FBQzlCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ2hFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQ3pDLEVBQUMsWUFBWSxFQUFFLFdBQVcsS0FHdEIsRUFBRSxFQUNMLEVBQUU7SUFDSCxPQUFPO1FBQ04sWUFBWTtRQUNaLFdBQVc7S0FtQ1YsQ0FBQTtBQUNILENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBQyxFQUFFLEVBQUU7SUFDbEUsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQTtJQUM1QixNQUFNLGNBQWMsR0FBRyxDQUFDLFdBQW1CLEVBQUUsRUFBRTtRQUM5QyxJQUFJLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7WUFBRSxPQUFNO1FBQzVELEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLEdBQUcsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN4RixDQUFDLENBQUE7SUFDRCxJQUFJLGNBQWMsQ0FBQTtJQUVsQixRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2QsS0FBSyxN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
|
package/esm/express.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type Express, type Request, type Response, type Router } from 'express';
|
|
2
2
|
export declare const expressApp: (setup: (app: Express) => any) => Promise<(next: any) => Promise<void>>;
|
|
3
3
|
export declare const expressRouter: (setup: (router: Router) => any) => Promise<(next: any) => Promise<void>>;
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const expressMiddlewares: (...middlewares: Array<(req: Request, res: Response, next: () => any) => any>) => Promise<(next: any) => Promise<void>>;
|
package/esm/express.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
|
-
import {
|
|
2
|
+
import { reqContext, resContext } from './context.js';
|
|
3
3
|
import makeDefer from 'jdefer';
|
|
4
4
|
export const expressApp = async (setup) => {
|
|
5
5
|
const symbol = Symbol('expressApp');
|
|
@@ -8,10 +8,10 @@ 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 =
|
|
11
|
+
const req = reqContext.value;
|
|
12
12
|
const defer = makeDefer();
|
|
13
13
|
req[symbol] = defer;
|
|
14
|
-
app(req,
|
|
14
|
+
app(req, resContext.value);
|
|
15
15
|
await defer.promise;
|
|
16
16
|
await next();
|
|
17
17
|
};
|
|
@@ -23,13 +23,13 @@ export const expressRouter = async (setup) => {
|
|
|
23
23
|
router.use((req, _res, _next) => req[symbol].resolve());
|
|
24
24
|
router.use((err, req, _res, _next) => req[symbol].reject(err));
|
|
25
25
|
return async (next) => {
|
|
26
|
-
const req =
|
|
26
|
+
const req = reqContext.value;
|
|
27
27
|
const defer = makeDefer();
|
|
28
28
|
req[symbol] = defer;
|
|
29
|
-
router(req,
|
|
30
|
-
await defer.promise;
|
|
29
|
+
router(req, resContext.value);
|
|
30
|
+
await defer.promise; // if express middleware handles the request, this will never resolve.
|
|
31
31
|
await next();
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
|
-
export const
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
export const expressMiddlewares = (...middlewares) => expressRouter(router => router.use(...middlewares));
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHByZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBaUUsTUFBTSxTQUFTLENBQUE7QUFDdkYsT0FBTyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkQsT0FBTyxTQUFTLE1BQU0sUUFBUSxDQUFBO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsS0FBNEIsRUFBRSxFQUFFO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUVuQyxNQUFNLEdBQUcsR0FBRyxPQUFPLEVBQUUsQ0FBQTtJQUNyQixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNoQixHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUMzRCxPQUFPLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtRQUNuQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFBO1FBQzVCLE1BQU0sS0FBSyxHQUFHLFNBQVMsRUFBRSxDQUFBO1FBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDbkIsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUIsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQ25CLE1BQU0sSUFBSSxFQUFFLENBQUE7SUFDYixDQUFDLENBQUE7QUFDRixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLEtBQThCLEVBQUUsRUFBRTtJQUNyRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7SUFFdEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQy9CLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDdkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzlELE9BQU8sS0FBSyxFQUFDLElBQUksRUFBQyxFQUFFO1FBQ25CLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUE7UUFDNUIsTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLENBQUE7UUFDekIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQTtRQUNuQixNQUFNLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM3QixNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQyxzRUFBc0U7UUFDMUYsTUFBTSxJQUFJLEVBQUUsQ0FBQTtJQUNiLENBQUMsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQ2pDLEdBQUcsV0FBeUUsRUFDM0UsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFBIn0=
|
package/esm/file.d.ts
CHANGED
package/esm/file.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { reqContext, resContext } from './context.js';
|
|
2
2
|
export const serveFile = ({ prefix = '' }) => next => {
|
|
3
|
-
const req =
|
|
4
|
-
const res =
|
|
3
|
+
const req = reqContext.value;
|
|
4
|
+
const res = resContext.value;
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBR25ELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN4QixFQUFDLE1BQU0sR0FBRyxFQUFFLEVBRVgsRUFDVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDdEIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQTtJQUM1QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFBO0lBQzVCLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNO1FBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQTtBQUNqRSxDQUFDLENBQUEifQ==
|
package/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { makeContext,
|
|
2
|
-
export { dxContext, setHtml, setJson, setBuffer, setRedirect, setText } from './dx.js';
|
|
1
|
+
export { makeContext, reqContext, resContext } from './context.js';
|
|
2
|
+
export { dxContext, setHtml, setNodeStream, setWebStream, setJson, setBuffer, setRedirect, setText } from './dx.js';
|
|
3
3
|
export { bufferBodyContext, jsonBodyContext, queryContext, rawBodyContext, textBodyContext, urlencodedBodyContext } from './body.js';
|
|
4
4
|
export { router } from './route.js';
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { makeContext,
|
|
2
|
-
export { dxContext, setHtml, setJson, setBuffer, setRedirect, setText } from './dx.js';
|
|
1
|
+
export { makeContext, reqContext, resContext } from './context.js';
|
|
2
|
+
export { dxContext, setHtml, setNodeStream, setWebStream, setJson, setBuffer, setRedirect, setText } from './dx.js';
|
|
3
3
|
export { bufferBodyContext, jsonBodyContext, queryContext, rawBodyContext, textBodyContext, urlencodedBodyContext } from './body.js';
|
|
4
4
|
export { router } from './route.js';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ2hFLE9BQU8sRUFDTixTQUFTLEVBQ1QsT0FBTyxFQUNQLGFBQWEsRUFDYixZQUFZLEVBQ1osT0FBTyxFQUNQLFNBQVMsRUFDVCxXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sU0FBUyxDQUFBO0FBQ2hCLE9BQU8sRUFDTixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFlBQVksRUFDWixjQUFjLEVBQ2QsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixNQUFNLFdBQVcsQ0FBQTtBQUNsQixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sWUFBWSxDQUFBIn0=
|
package/esm/route.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { pathToRegexp } from 'path-to-regexp';
|
|
2
|
-
import {
|
|
2
|
+
import { reqContext } from './context.js';
|
|
3
3
|
const cache = {};
|
|
4
4
|
const cacheLimit = 10000;
|
|
5
5
|
let cacheCount = 0;
|
|
@@ -48,7 +48,7 @@ const allMethods = [
|
|
|
48
48
|
export const router = {
|
|
49
49
|
method(method, router, { prefix = '', ...options } = {}) {
|
|
50
50
|
return next => {
|
|
51
|
-
const req =
|
|
51
|
+
const req = reqContext.value;
|
|
52
52
|
if (req.method !== method.toUpperCase())
|
|
53
53
|
return next();
|
|
54
54
|
for (const [pattern, handler] of Object.entries(router)) {
|
|
@@ -64,7 +64,7 @@ export const router = {
|
|
|
64
64
|
},
|
|
65
65
|
all(router, { prefix = '', ...options } = {}) {
|
|
66
66
|
return next => {
|
|
67
|
-
const req =
|
|
67
|
+
const req = reqContext.value;
|
|
68
68
|
for (const [pattern, handler] of Object.entries(router)) {
|
|
69
69
|
const match = matchPattern(req.url ?? '', `${prefix}${pattern}`, options);
|
|
70
70
|
if (match)
|
|
@@ -79,4 +79,4 @@ export const router = {
|
|
|
79
79
|
};
|
|
80
80
|
for (const method of allMethods)
|
|
81
81
|
router[method] = router.method.bind(router, method);
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFBO0FBQzNDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFFdkMsTUFBTSxLQUFLLEdBQXdCLEVBQUUsQ0FBQTtBQUNyQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUE7QUFDeEIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFBO0FBY2xCLFNBQVMsV0FBVyxDQUFDLElBQVksRUFBRSxPQUE0QjtJQUM5RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUMzRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUUzQyxNQUFNLElBQUksR0FBVSxFQUFFLENBQUE7SUFDdEIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDaEQsTUFBTSxNQUFNLEdBQUc7UUFDZCxNQUFNO1FBQ04sSUFBSTtLQUNKLENBQUE7SUFFRCxJQUFJLFVBQVUsR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFBO1FBQ3hCLFVBQVUsRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQzNCLFFBQWdCLEVBQ2hCLE9BQWUsRUFDZixPQUE2QjtJQUU3QixPQUFPLEdBQUcsRUFBQyxHQUFHLE9BQU8sRUFB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
|
package/esm/static.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import {
|
|
2
|
+
import { reqContext } from './context.js';
|
|
3
3
|
export function staticMiddleware({ root }) {
|
|
4
4
|
return async (next) => {
|
|
5
|
-
const req =
|
|
5
|
+
const req = reqContext.value;
|
|
6
6
|
if (req.method !== 'GET' && req.method !== 'HEAD')
|
|
7
7
|
return next();
|
|
8
8
|
var forwardError = !fallthrough;
|
|
@@ -53,4 +53,4 @@ function collapseLeadingSlashes(str) {
|
|
|
53
53
|
? '/' + str.slice(i)
|
|
54
54
|
: str;
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0YXRpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBQ2QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUV2QyxNQUFNLFVBQVUsZ0JBQWdCLENBQy9CLEVBQUMsSUFBSSxFQUdKO0lBRUQsT0FBTyxLQUFLLEVBQUUsSUFBZSxFQUFFLEVBQUU7UUFDaEMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQTtRQUM1QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTTtZQUFFLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFFaEUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxXQUFXLENBQUE7UUFDL0IsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN4QyxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFBO1FBRWpDLHFDQUFxQztRQUNyQyxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM3RCxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ1YsQ0FBQztRQUVELHFCQUFxQjtRQUNyQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUVsQyx3QkFBd0I7UUFDeEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFFbkMsdUJBQXVCO1FBQ3ZCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDakMsQ0FBQztRQUVELG9DQUFvQztRQUNwQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFNBQVMsTUFBTTtnQkFDaEMsZ0RBQWdEO2dCQUNoRCxZQUFZLEdBQUcsSUFBSSxDQUFBO1lBQ3BCLENBQUMsQ0FBQyxDQUFBO1FBQ0gsQ0FBQztRQUVELGlCQUFpQjtRQUNqQixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEtBQUssQ0FBQyxHQUFHO1lBQ3BDLElBQUksWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDVCxPQUFNO1lBQ1AsQ0FBQztZQUVELElBQUksRUFBRSxDQUFBO1FBQ1AsQ0FBQyxDQUFDLENBQUE7UUFFRixPQUFPO1FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNqQixDQUFDLENBQUE7QUFDRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBRSxHQUFXO0lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QyxNQUFLO1FBQ04sQ0FBQztJQUNGLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsR0FBRyxDQUFBO0FBQ1AsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dx-server",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"main": "./cjs/index.js",
|
|
5
5
|
"repository": "https://github.com/tranvansang/dx-server",
|
|
6
6
|
"author": "Sang Tran <t@sang.jp>",
|
|
@@ -25,17 +25,15 @@
|
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"packageManager": "yarn@4.1.1",
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@types/node": "^20.
|
|
28
|
+
"@types/node": "^20.12.7",
|
|
29
29
|
"@types/path-to-regexp": "^1.7.0",
|
|
30
|
-
"@types/qs": "^6.9.
|
|
31
|
-
"
|
|
32
|
-
"typescript": "^5.3.3"
|
|
30
|
+
"@types/qs": "^6.9.15",
|
|
31
|
+
"typescript": "^5.4.5"
|
|
33
32
|
},
|
|
34
33
|
"dependencies": {
|
|
35
34
|
"jchain": "^0.0.6",
|
|
36
35
|
"jdefer": "^0.0.14",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"qs": "^6.11.2"
|
|
36
|
+
"path-to-regexp": "^6.2.2",
|
|
37
|
+
"qs": "^6.12.1"
|
|
40
38
|
}
|
|
41
39
|
}
|