@fluojs/runtime 1.0.0-beta.2 → 1.0.0-beta.4
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.ko.md +7 -0
- package/README.md +7 -0
- package/dist/adapters/request-response-factory.d.ts +9 -0
- package/dist/adapters/request-response-factory.d.ts.map +1 -1
- package/dist/adapters/request-response-factory.js +11 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +220 -46
- package/dist/health/diagnostics.d.ts +38 -0
- package/dist/health/diagnostics.d.ts.map +1 -1
- package/dist/health/diagnostics.js +48 -0
- package/dist/health/health.d.ts +21 -0
- package/dist/health/health.d.ts.map +1 -1
- package/dist/health/health.js +27 -0
- package/dist/logging/json-logger.d.ts +5 -0
- package/dist/logging/json-logger.d.ts.map +1 -1
- package/dist/logging/json-logger.js +6 -0
- package/dist/logging/logger.d.ts +5 -0
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +6 -0
- package/dist/module-graph.d.ts.map +1 -1
- package/dist/module-graph.js +17 -7
- package/dist/node/internal-node-compression.d.ts +15 -0
- package/dist/node/internal-node-compression.d.ts.map +1 -1
- package/dist/node/internal-node-compression.js +16 -0
- package/dist/node/internal-node-request.d.ts +21 -0
- package/dist/node/internal-node-request.d.ts.map +1 -1
- package/dist/node/internal-node-request.js +100 -29
- package/dist/node/internal-node-response.d.ts +21 -1
- package/dist/node/internal-node-response.d.ts.map +1 -1
- package/dist/node/internal-node-response.js +42 -3
- package/dist/node/internal-node.d.ts +40 -0
- package/dist/node/internal-node.d.ts.map +1 -1
- package/dist/node/internal-node.js +56 -3
- package/dist/node/node-request.d.ts +1 -1
- package/dist/node/node-request.d.ts.map +1 -1
- package/dist/node/node-request.js +1 -1
- package/dist/platform-shell.d.ts +4 -0
- package/dist/platform-shell.d.ts.map +1 -1
- package/dist/platform-shell.js +72 -20
- package/dist/request-transaction.d.ts +28 -0
- package/dist/request-transaction.d.ts.map +1 -1
- package/dist/request-transaction.js +33 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/web.d.ts.map +1 -1
- package/dist/web.js +116 -40
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-node.d.ts","sourceRoot":"","sources":["../../src/node/internal-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAA6C,MAAM,WAAW,CAAC;AACxG,OAAO,EAAE,YAAY,IAAI,iBAAiB,EAAE,KAAK,aAAa,IAAI,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGzG,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"internal-node.d.ts","sourceRoot":"","sources":["../../src/node/internal-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,36 @@ import { createServer as createHttpsServer } from 'node:https';
|
|
|
3
3
|
import { createServerBackedHttpAdapterRealtimeCapability } from '@fluojs/http';
|
|
4
4
|
import { bootstrapHttpAdapterApplication, runHttpAdapterApplication } from '../http-adapter-shared.js';
|
|
5
5
|
import { createNodeResponseCompression, compressNodeResponse } from './internal-node-compression.js';
|
|
6
|
-
import {
|
|
6
|
+
import { createDeferredFrameworkRequest, NodeRequestPayloadTooLargeException, createRequestSignal, materializeFrameworkRequestBody, resolveRequestIdFromHeaders } from './internal-node-request.js';
|
|
7
7
|
import { createFrameworkResponse, writeNodeAdapterErrorResponse } from './internal-node-response.js';
|
|
8
8
|
import { createNodeShutdownSignalRegistration, defaultNodeShutdownSignals, registerShutdownSignals } from './internal-node-shutdown.js';
|
|
9
9
|
import { dispatchWithRequestResponseFactory } from '../adapters/request-response-factory.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Describes the node http adapter options contract.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Defines the node application signal type.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Defines the cors input type.
|
|
21
|
+
*/
|
|
22
|
+
|
|
10
23
|
const DEFAULT_SHUTDOWN_TIMEOUT_MS = 10_000;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Describes the bootstrap node application options contract.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Describes the run node application options contract.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Represents the node http application adapter.
|
|
35
|
+
*/
|
|
11
36
|
export class NodeHttpApplicationAdapter {
|
|
12
37
|
server;
|
|
13
38
|
dispatcher;
|
|
@@ -75,13 +100,16 @@ export class NodeHttpApplicationAdapter {
|
|
|
75
100
|
function createNodeRequestResponseFactory(compression, multipartOptions, maxBodySize, preserveRawBody) {
|
|
76
101
|
return {
|
|
77
102
|
async createRequest(request, signal) {
|
|
78
|
-
return
|
|
103
|
+
return createDeferredFrameworkRequest(request, signal, multipartOptions, maxBodySize, preserveRawBody);
|
|
104
|
+
},
|
|
105
|
+
materializeRequest(request) {
|
|
106
|
+
return materializeFrameworkRequestBody(request);
|
|
79
107
|
},
|
|
80
108
|
createRequestSignal(response) {
|
|
81
109
|
return createRequestSignal(response);
|
|
82
110
|
},
|
|
83
111
|
createResponse(response, request) {
|
|
84
|
-
return createFrameworkResponse(response, compression ? createNodeResponseCompression(response, request.headers['accept-encoding']) : undefined);
|
|
112
|
+
return createFrameworkResponse(response, compression ? () => createNodeResponseCompression(response, request.headers['accept-encoding']) : undefined);
|
|
85
113
|
},
|
|
86
114
|
resolveRequestId(request) {
|
|
87
115
|
return resolveRequestIdFromHeaders(request.headers);
|
|
@@ -94,12 +122,37 @@ function createNodeRequestResponseFactory(compression, multipartOptions, maxBody
|
|
|
94
122
|
}
|
|
95
123
|
};
|
|
96
124
|
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Create node http adapter.
|
|
128
|
+
*
|
|
129
|
+
* @param options The options.
|
|
130
|
+
* @param compression The compression.
|
|
131
|
+
* @param multipartOptions The multipart options.
|
|
132
|
+
* @returns The create node http adapter result.
|
|
133
|
+
*/
|
|
97
134
|
export function createNodeHttpAdapter(options = {}, compression = false, multipartOptions) {
|
|
98
135
|
return new NodeHttpApplicationAdapter(resolveNodePort(options.port), options.host, options.retryDelayMs, options.retryLimit, compression, options.https, multipartOptions, options.maxBodySize, options.rawBody, options.shutdownTimeoutMs);
|
|
99
136
|
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Bootstrap node application.
|
|
140
|
+
*
|
|
141
|
+
* @param rootModule The root module.
|
|
142
|
+
* @param options The options.
|
|
143
|
+
* @returns The bootstrap node application result.
|
|
144
|
+
*/
|
|
100
145
|
export async function bootstrapNodeApplication(rootModule, options) {
|
|
101
146
|
return bootstrapHttpAdapterApplication(rootModule, options, createNodeHttpAdapter(options, options.compression ?? false, options.multipart));
|
|
102
147
|
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Run node application.
|
|
151
|
+
*
|
|
152
|
+
* @param rootModule The root module.
|
|
153
|
+
* @param options The options.
|
|
154
|
+
* @returns The run node application result.
|
|
155
|
+
*/
|
|
103
156
|
export async function runNodeApplication(rootModule, options) {
|
|
104
157
|
const adapter = createNodeHttpAdapter(options, options.compression ?? false, options.multipart);
|
|
105
158
|
return runHttpAdapterApplication(rootModule, {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { createFrameworkRequest, createRequestSignal, resolveRequestIdFromHeaders, } from './internal-node-request.js';
|
|
1
|
+
export { createDeferredFrameworkRequest, createFrameworkRequest, createRequestSignal, materializeFrameworkRequestBody, resolveRequestIdFromHeaders, } from './internal-node-request.js';
|
|
2
2
|
//# sourceMappingURL=node-request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-request.d.ts","sourceRoot":"","sources":["../../src/node/node-request.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"node-request.d.ts","sourceRoot":"","sources":["../../src/node/node-request.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,EACtB,mBAAmB,EACnB,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createFrameworkRequest, createRequestSignal, resolveRequestIdFromHeaders } from './internal-node-request.js';
|
|
1
|
+
export { createDeferredFrameworkRequest, createFrameworkRequest, createRequestSignal, materializeFrameworkRequestBody, resolveRequestIdFromHeaders } from './internal-node-request.js';
|
package/dist/platform-shell.d.ts
CHANGED
|
@@ -28,6 +28,10 @@ export declare class RuntimePlatformShell implements PlatformShell {
|
|
|
28
28
|
ready(): Promise<PlatformReadinessReport>;
|
|
29
29
|
health(): Promise<PlatformHealthReport>;
|
|
30
30
|
snapshot(): Promise<PlatformShellSnapshot>;
|
|
31
|
+
private collectSnapshotProbe;
|
|
32
|
+
private collectComponentSnapshot;
|
|
33
|
+
private collectComponentReadiness;
|
|
34
|
+
private collectComponentHealth;
|
|
31
35
|
assertCriticalReadiness(): Promise<void>;
|
|
32
36
|
private validateIdentityAndDependencies;
|
|
33
37
|
private validateComponents;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-shell.d.ts","sourceRoot":"","sources":["../src/platform-shell.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EAGtB,oBAAoB,EACpB,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EAGtB,MAAM,wBAAwB,CAAC;AAEhC,UAAU,2BAA2B;IACnC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;
|
|
1
|
+
{"version":3,"file":"platform-shell.d.ts","sourceRoot":"","sources":["../src/platform-shell.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EAGtB,oBAAoB,EACpB,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EAGtB,MAAM,wBAAwB,CAAC;AAEhC,UAAU,2BAA2B;IACnC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAwID;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IAO5C,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IANjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAqC;IAC9D,OAAO,CAAC,yBAAyB,CAAqC;IACtE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;gBAEhC,oBAAoB,EAAE,2BAA2B,EAAE;IAEhF;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,GAAG,SAAS,GAAG,oBAAoB;IAIlG,uBAAuB,IAAI,OAAO;IAI5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiDtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrB,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAAC;IA2BzC,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAyBvC,QAAQ,IAAI,OAAO,CAAC,qBAAqB,CAAC;YAuBlC,oBAAoB;IAmBlC,OAAO,CAAC,wBAAwB;YAuClB,yBAAyB;YAmBzB,sBAAsB;IAkB9B,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9C,OAAO,CAAC,+BAA+B;YAgCzB,kBAAkB;IA4BhC,OAAO,CAAC,iBAAiB;YAsCX,qBAAqB;CAgBpC;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,GAAG,SAAS,GAAG,oBAAoB,CAE1H"}
|
package/dist/platform-shell.js
CHANGED
|
@@ -96,7 +96,6 @@ function normalizeSnapshot(snapshot, component, dependencies) {
|
|
|
96
96
|
kind: component.kind
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
|
-
|
|
100
99
|
/**
|
|
101
100
|
* A runtime implementation of the {@link PlatformShell} that manages the lifecycle
|
|
102
101
|
* of registered platform components, including dependency ordering and diagnostics.
|
|
@@ -219,15 +218,41 @@ export class RuntimePlatformShell {
|
|
|
219
218
|
if (!this.hasRegisteredComponents()) {
|
|
220
219
|
return createEmptyShellSnapshot([...this.diagnostics]);
|
|
221
220
|
}
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
221
|
+
const probeResults = await Promise.all(this.registeredComponents.map(registration => this.collectSnapshotProbe(registration)));
|
|
222
|
+
const components = probeResults.map(result => result.snapshot);
|
|
223
|
+
const readiness = aggregateReadiness(probeResults.map(result => result.readiness));
|
|
224
|
+
const health = aggregateHealth(probeResults.map(result => result.health));
|
|
225
|
+
const diagnostics = probeResults.flatMap(result => result.diagnostics);
|
|
226
|
+
this.diagnostics.push(...diagnostics);
|
|
227
|
+
return {
|
|
228
|
+
components,
|
|
229
|
+
diagnostics: [...this.diagnostics],
|
|
230
|
+
generatedAt: new Date().toISOString(),
|
|
231
|
+
health,
|
|
232
|
+
readiness
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
async collectSnapshotProbe(registration) {
|
|
236
|
+
const [snapshot, readiness, health] = await Promise.all([this.collectComponentSnapshot(registration), this.collectComponentReadiness(registration), this.collectComponentHealth(registration)]);
|
|
237
|
+
return {
|
|
238
|
+
diagnostics: [...snapshot.diagnostics, ...readiness.diagnostics, ...health.diagnostics],
|
|
239
|
+
health: health.health,
|
|
240
|
+
readiness: readiness.readiness,
|
|
241
|
+
snapshot: snapshot.snapshot
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
collectComponentSnapshot(registration) {
|
|
245
|
+
try {
|
|
246
|
+
const snapshot = registration.component.snapshot();
|
|
247
|
+
return {
|
|
248
|
+
diagnostics: [],
|
|
249
|
+
snapshot: normalizeSnapshot(snapshot, registration.component, registration.dependencies)
|
|
250
|
+
};
|
|
251
|
+
} catch (error) {
|
|
252
|
+
const issue = createUnknownFailureIssue(registration.component.id, 'snapshot', error);
|
|
253
|
+
return {
|
|
254
|
+
diagnostics: [issue],
|
|
255
|
+
snapshot: {
|
|
231
256
|
dependencies: [...registration.dependencies],
|
|
232
257
|
details: {},
|
|
233
258
|
health: {
|
|
@@ -250,17 +275,44 @@ export class RuntimePlatformShell {
|
|
|
250
275
|
namespace: 'fluo.platform',
|
|
251
276
|
tags: {}
|
|
252
277
|
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
async collectComponentReadiness(registration) {
|
|
283
|
+
try {
|
|
284
|
+
return {
|
|
285
|
+
diagnostics: [],
|
|
286
|
+
readiness: await registration.component.ready()
|
|
287
|
+
};
|
|
288
|
+
} catch (error) {
|
|
289
|
+
const issue = createUnknownFailureIssue(registration.component.id, 'ready', error);
|
|
290
|
+
return {
|
|
291
|
+
diagnostics: [issue],
|
|
292
|
+
readiness: {
|
|
293
|
+
critical: true,
|
|
294
|
+
reason: issue.cause,
|
|
295
|
+
status: 'not-ready'
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
async collectComponentHealth(registration) {
|
|
301
|
+
try {
|
|
302
|
+
return {
|
|
303
|
+
diagnostics: [],
|
|
304
|
+
health: await registration.component.health()
|
|
305
|
+
};
|
|
306
|
+
} catch (error) {
|
|
307
|
+
const issue = createUnknownFailureIssue(registration.component.id, 'health', error);
|
|
308
|
+
return {
|
|
309
|
+
diagnostics: [issue],
|
|
310
|
+
health: {
|
|
311
|
+
reason: issue.cause,
|
|
312
|
+
status: 'unhealthy'
|
|
313
|
+
}
|
|
314
|
+
};
|
|
255
315
|
}
|
|
256
|
-
const [readiness, health] = await Promise.all([this.ready(), this.health()]);
|
|
257
|
-
return {
|
|
258
|
-
components,
|
|
259
|
-
diagnostics: [...this.diagnostics],
|
|
260
|
-
generatedAt: new Date().toISOString(),
|
|
261
|
-
health,
|
|
262
|
-
readiness
|
|
263
|
-
};
|
|
264
316
|
}
|
|
265
317
|
async assertCriticalReadiness() {
|
|
266
318
|
const readiness = await this.ready();
|
|
@@ -1,17 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines the request abort context type.
|
|
3
|
+
*/
|
|
1
4
|
export type RequestAbortContext = {
|
|
2
5
|
controller: AbortController;
|
|
3
6
|
cleanup(): void;
|
|
4
7
|
signal: AbortSignal;
|
|
5
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Defines the active request transaction type.
|
|
11
|
+
*/
|
|
6
12
|
export type ActiveRequestTransaction = {
|
|
7
13
|
abort(reason?: unknown): void;
|
|
8
14
|
settled: Promise<void>;
|
|
9
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Defines the active request transaction handle type.
|
|
18
|
+
*/
|
|
10
19
|
export type ActiveRequestTransactionHandle = {
|
|
11
20
|
active: ActiveRequestTransaction;
|
|
12
21
|
settle(): void;
|
|
13
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Create request abort context.
|
|
25
|
+
*
|
|
26
|
+
* @param signal The signal.
|
|
27
|
+
* @returns The create request abort context result.
|
|
28
|
+
*/
|
|
14
29
|
export declare function createRequestAbortContext(signal?: AbortSignal): RequestAbortContext;
|
|
30
|
+
/**
|
|
31
|
+
* Track active request transaction.
|
|
32
|
+
*
|
|
33
|
+
* @param activeRequestTransactions The active request transactions.
|
|
34
|
+
* @param controller The controller.
|
|
35
|
+
* @returns The track active request transaction result.
|
|
36
|
+
*/
|
|
15
37
|
export declare function trackActiveRequestTransaction(activeRequestTransactions: Set<ActiveRequestTransaction>, controller: AbortController): ActiveRequestTransactionHandle;
|
|
38
|
+
/**
|
|
39
|
+
* Untrack active request transaction.
|
|
40
|
+
*
|
|
41
|
+
* @param activeRequestTransactions The active request transactions.
|
|
42
|
+
* @param handle The handle.
|
|
43
|
+
*/
|
|
16
44
|
export declare function untrackActiveRequestTransaction(activeRequestTransactions: Set<ActiveRequestTransaction>, handle: ActiveRequestTransactionHandle): void;
|
|
17
45
|
//# sourceMappingURL=request-transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-transaction.d.ts","sourceRoot":"","sources":["../src/request-transaction.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,wBAAwB,CAAC;IACjC,MAAM,IAAI,IAAI,CAAC;CAChB,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAiBnF;AAED,wBAAgB,6BAA6B,CAC3C,yBAAyB,EAAE,GAAG,CAAC,wBAAwB,CAAC,EACxD,UAAU,EAAE,eAAe,GAC1B,8BAA8B,CAgBhC;AAED,wBAAgB,+BAA+B,CAC7C,yBAAyB,EAAE,GAAG,CAAC,wBAAwB,CAAC,EACxD,MAAM,EAAE,8BAA8B,GACrC,IAAI,CAGN"}
|
|
1
|
+
{"version":3,"file":"request-transaction.d.ts","sourceRoot":"","sources":["../src/request-transaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,wBAAwB,CAAC;IACjC,MAAM,IAAI,IAAI,CAAC;CAChB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAiBnF;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,yBAAyB,EAAE,GAAG,CAAC,wBAAwB,CAAC,EACxD,UAAU,EAAE,eAAe,GAC1B,8BAA8B,CAgBhC;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,yBAAyB,EAAE,GAAG,CAAC,wBAAwB,CAAC,EACxD,MAAM,EAAE,8BAA8B,GACrC,IAAI,CAGN"}
|
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines the request abort context type.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Defines the active request transaction type.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Defines the active request transaction handle type.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Create request abort context.
|
|
15
|
+
*
|
|
16
|
+
* @param signal The signal.
|
|
17
|
+
* @returns The create request abort context result.
|
|
18
|
+
*/
|
|
1
19
|
export function createRequestAbortContext(signal) {
|
|
2
20
|
const controller = new AbortController();
|
|
3
21
|
const forwardAbort = () => controller.abort(signal?.reason);
|
|
@@ -16,6 +34,14 @@ export function createRequestAbortContext(signal) {
|
|
|
16
34
|
signal: controller.signal
|
|
17
35
|
};
|
|
18
36
|
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Track active request transaction.
|
|
40
|
+
*
|
|
41
|
+
* @param activeRequestTransactions The active request transactions.
|
|
42
|
+
* @param controller The controller.
|
|
43
|
+
* @returns The track active request transaction result.
|
|
44
|
+
*/
|
|
19
45
|
export function trackActiveRequestTransaction(activeRequestTransactions, controller) {
|
|
20
46
|
let settle;
|
|
21
47
|
const settled = new Promise(resolve => {
|
|
@@ -33,6 +59,13 @@ export function trackActiveRequestTransaction(activeRequestTransactions, control
|
|
|
33
59
|
settle
|
|
34
60
|
};
|
|
35
61
|
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Untrack active request transaction.
|
|
65
|
+
*
|
|
66
|
+
* @param activeRequestTransactions The active request transactions.
|
|
67
|
+
* @param handle The handle.
|
|
68
|
+
*/
|
|
36
69
|
export function untrackActiveRequestTransaction(activeRequestTransactions, handle) {
|
|
37
70
|
activeRequestTransactions.delete(handle.active);
|
|
38
71
|
handle.settle();
|
package/dist/types.d.ts
CHANGED
|
@@ -29,12 +29,21 @@ export interface BootstrapModuleOptions {
|
|
|
29
29
|
export interface CompiledModule {
|
|
30
30
|
type: ModuleType;
|
|
31
31
|
definition: ModuleDefinition;
|
|
32
|
+
accessibleTokens: Set<Token>;
|
|
32
33
|
exportedTokens: Set<Token>;
|
|
34
|
+
importedExportedTokens: Set<Token>;
|
|
33
35
|
providerTokens: Set<Token>;
|
|
34
36
|
}
|
|
37
|
+
/** Provider declarations that actually win runtime bootstrap registration after duplicate-policy selection. */
|
|
38
|
+
export interface BootstrapEffectiveProviders {
|
|
39
|
+
moduleProviders: Provider[];
|
|
40
|
+
rootModuleProviders: Provider[];
|
|
41
|
+
runtimeProviders: Provider[];
|
|
42
|
+
}
|
|
35
43
|
/** Result returned by low-level bootstrap compilation helpers. */
|
|
36
44
|
export interface BootstrapResult {
|
|
37
45
|
container: Container;
|
|
46
|
+
effectiveProviders: BootstrapEffectiveProviders;
|
|
38
47
|
modules: CompiledModule[];
|
|
39
48
|
rootModule: ModuleType;
|
|
40
49
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG;IAAE,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC;AACzE,yEAAyE;AACzE,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC;AAEzC,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,uEAAuE;AACvE,MAAM,WAAW,sBAAsB;IACrC,uBAAuB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC;CAC5B;AAED,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,sBAAsB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;CAC5B;AAED,+GAA+G;AAC/G,MAAM,WAAW,2BAA2B;IAC1C,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,mBAAmB,EAAE,QAAQ,EAAE,CAAC;IAChC,gBAAgB,EAAE,QAAQ,EAAE,CAAC;CAC9B;AAED,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,kBAAkB,EAAE,2BAA2B,CAAC;IAChD,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CACpC;AAED,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,sBAAsB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,eAAe,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,iFAAiF;AACjF,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,+EAA+E;AAC/E,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,sBAAsB,GACtB,eAAe,GACf,qBAAqB,CAAC;AAE1B,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sEAAsE;AACtE,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,GAAG,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACtF;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtD;;;;OAIG;IACH,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;KAChD,CAAC;IACF,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,qDAAqD;AACrD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;AAEvF,uEAAuE;AACvE,MAAM,WAAW,+BACf,SAAQ,IAAI,CAAC,2BAA2B,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;CAC5H;AAED,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CACvF;AAED,kEAAkE;AAClE,MAAM,WAAW,yBAA0B,SAAQ,+BAA+B;IAChF,iBAAiB,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;CAChD;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,0BAA0B,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACrC;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,0BAA0B,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,mBAAmB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC3F,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACjC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,8EAA8E;AAC9E,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAEjC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjF"}
|
package/dist/web.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,wCAAwC,CAAC;AAEhD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,gBAAgB;QACxB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB;CACF;AAOD;;GAEG;AACH,MAAM,WAAW,sCAAsC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,sCAAsC;IACvF,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,UAAU,IAAI,QAAQ,CAAC;CACxB;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,wCAAwC,CAAC;AAEhD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,gBAAgB;QACxB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB;CACF;AAOD;;GAEG;AACH,MAAM,WAAW,sCAAsC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,sCAAsC;IACvF,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,UAAU,IAAI,QAAQ,CAAC;CACxB;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAgMhD;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,GAAE,sCAA2C,GACnD,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,EAAE,oBAAoB,CAAC,CA6BhF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,UAAU,EACV,yBAAiG,EACjG,OAAO,EACP,GAAG,OAAO,EACX,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAU/C;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,SAAwB,EACnC,eAAe,UAAQ,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAW3B"}
|
package/dist/web.js
CHANGED
|
@@ -93,12 +93,12 @@ class MutableWebFrameworkResponse {
|
|
|
93
93
|
statusCode;
|
|
94
94
|
statusSet;
|
|
95
95
|
finalizedResponse;
|
|
96
|
-
responseStream
|
|
97
|
-
this.streamActive = true;
|
|
98
|
-
});
|
|
96
|
+
responseStream;
|
|
99
97
|
responseBody;
|
|
100
98
|
streamActive = false;
|
|
101
|
-
stream
|
|
99
|
+
get stream() {
|
|
100
|
+
return this.getOrCreateResponseStream();
|
|
101
|
+
}
|
|
102
102
|
redirect(status, location) {
|
|
103
103
|
this.setStatus(status);
|
|
104
104
|
this.setHeader('Location', location);
|
|
@@ -135,12 +135,18 @@ class MutableWebFrameworkResponse {
|
|
|
135
135
|
status: this.statusCode ?? 200
|
|
136
136
|
};
|
|
137
137
|
const responseBody = this.responseBody instanceof Uint8Array ? this.responseBody.slice().buffer : this.responseBody;
|
|
138
|
-
this.finalizedResponse = this.streamActive ? new Response(this.
|
|
138
|
+
this.finalizedResponse = this.streamActive ? new Response(this.getOrCreateResponseStream().readable, init) : new Response(responseBody ?? '', init);
|
|
139
139
|
this.raw = this.finalizedResponse;
|
|
140
140
|
this.committed = true;
|
|
141
141
|
}
|
|
142
142
|
return this.finalizedResponse;
|
|
143
143
|
}
|
|
144
|
+
getOrCreateResponseStream() {
|
|
145
|
+
this.responseStream ??= new WebResponseStream(() => {
|
|
146
|
+
this.streamActive = true;
|
|
147
|
+
});
|
|
148
|
+
return this.responseStream;
|
|
149
|
+
}
|
|
144
150
|
}
|
|
145
151
|
|
|
146
152
|
/**
|
|
@@ -152,7 +158,10 @@ class MutableWebFrameworkResponse {
|
|
|
152
158
|
export function createWebRequestResponseFactory(options = {}) {
|
|
153
159
|
return {
|
|
154
160
|
async createRequest(request, signal) {
|
|
155
|
-
return
|
|
161
|
+
return createDeferredWebFrameworkRequest(request, signal, options.multipart, options.maxBodySize ?? DEFAULT_MAX_BODY_SIZE, options.rawBody ?? false);
|
|
162
|
+
},
|
|
163
|
+
materializeRequest(request) {
|
|
164
|
+
return materializeWebFrameworkRequestBody(request);
|
|
156
165
|
},
|
|
157
166
|
createRequestSignal(signal) {
|
|
158
167
|
return signal ?? new AbortController().signal;
|
|
@@ -204,44 +213,117 @@ export async function dispatchWebRequest({
|
|
|
204
213
|
* @returns The normalized framework request used by the dispatcher.
|
|
205
214
|
*/
|
|
206
215
|
export async function createWebFrameworkRequest(request, signal, multipartOptions, maxBodySize = DEFAULT_MAX_BODY_SIZE, preserveRawBody = false) {
|
|
216
|
+
const frameworkRequest = createDeferredWebFrameworkRequest(request, signal, multipartOptions, maxBodySize, preserveRawBody);
|
|
217
|
+
await materializeWebFrameworkRequestBody(frameworkRequest);
|
|
218
|
+
return frameworkRequest;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Creates the cheap Web framework request shell before consuming the body stream.
|
|
223
|
+
*
|
|
224
|
+
* @param request - Native Web request to normalize.
|
|
225
|
+
* @param signal - Abort signal propagated to the framework request.
|
|
226
|
+
* @param multipartOptions - Multipart parser options applied when materializing multipart requests.
|
|
227
|
+
* @param maxBodySize - Maximum allowed non-multipart body size in bytes.
|
|
228
|
+
* @param preserveRawBody - Whether materialization should retain raw request body bytes.
|
|
229
|
+
* @returns The framework request shell with metadata snapshotted and body materialization deferred.
|
|
230
|
+
*/
|
|
231
|
+
function createDeferredWebFrameworkRequest(request, signal, multipartOptions, maxBodySize = DEFAULT_MAX_BODY_SIZE, preserveRawBody = false) {
|
|
207
232
|
const url = new URL(request.url);
|
|
208
|
-
const
|
|
233
|
+
const headerEntries = Array.from(request.headers.entries());
|
|
234
|
+
const method = request.method;
|
|
235
|
+
const cookieHeader = request.headers.get('cookie') ?? undefined;
|
|
236
|
+
const searchParams = new URLSearchParams(url.searchParams);
|
|
237
|
+
const headers = createMemoizedValue(() => cloneWebHeaders(headerEntries));
|
|
238
|
+
const cookies = createMemoizedValue(() => parseCookieHeader(cookieHeader));
|
|
239
|
+
const query = createMemoizedValue(() => parseQueryParams(searchParams));
|
|
209
240
|
const contentType = request.headers.get('content-type') ?? undefined;
|
|
210
241
|
const isMultipart = typeof contentType === 'string' && contentType.includes('multipart/form-data');
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
242
|
+
const materializeBody = createMemoizedAsyncValue(async () => {
|
|
243
|
+
if (isMultipart) {
|
|
244
|
+
const materializedRequest = request.clone();
|
|
245
|
+
const result = await parseMultipart({
|
|
246
|
+
body: materializedRequest.body,
|
|
247
|
+
headers: new Headers(headerEntries),
|
|
248
|
+
method,
|
|
249
|
+
url: url.toString()
|
|
250
|
+
}, {
|
|
251
|
+
...multipartOptions,
|
|
252
|
+
maxTotalSize: multipartOptions?.maxTotalSize ?? maxBodySize
|
|
253
|
+
});
|
|
254
|
+
frameworkRequest.body = result.fields;
|
|
255
|
+
frameworkRequest.files = result.files;
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
validateWebRequestContentLength(request, maxBodySize);
|
|
259
|
+
if (!request.body) {
|
|
260
|
+
frameworkRequest.body = undefined;
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
222
263
|
const bodyResult = await readWebRequestBody(request.clone(), contentType, maxBodySize, preserveRawBody);
|
|
223
|
-
body = bodyResult.body;
|
|
224
|
-
|
|
225
|
-
|
|
264
|
+
frameworkRequest.body = bodyResult.body;
|
|
265
|
+
if (bodyResult.rawBody) {
|
|
266
|
+
frameworkRequest.rawBody = bodyResult.rawBody;
|
|
267
|
+
}
|
|
268
|
+
});
|
|
226
269
|
const frameworkRequest = {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
270
|
+
get cookies() {
|
|
271
|
+
return cookies();
|
|
272
|
+
},
|
|
273
|
+
get headers() {
|
|
274
|
+
return headers();
|
|
275
|
+
},
|
|
276
|
+
method,
|
|
231
277
|
params: {},
|
|
232
278
|
path: url.pathname,
|
|
233
|
-
query
|
|
279
|
+
get query() {
|
|
280
|
+
return query();
|
|
281
|
+
},
|
|
234
282
|
raw: request,
|
|
235
283
|
signal,
|
|
236
|
-
url: url.pathname + url.search
|
|
284
|
+
url: url.pathname + url.search,
|
|
285
|
+
materializeBody
|
|
237
286
|
};
|
|
238
|
-
|
|
239
|
-
|
|
287
|
+
return frameworkRequest;
|
|
288
|
+
}
|
|
289
|
+
function validateWebRequestContentLength(request, maxBodySize) {
|
|
290
|
+
const contentLength = request.headers.get('content-length');
|
|
291
|
+
if (contentLength === null) {
|
|
292
|
+
return;
|
|
240
293
|
}
|
|
241
|
-
|
|
242
|
-
|
|
294
|
+
const parsedContentLength = Number(contentLength);
|
|
295
|
+
if (Number.isFinite(parsedContentLength) && parsedContentLength > maxBodySize) {
|
|
296
|
+
throw new PayloadTooLargeException(REQUEST_BODY_LIMIT_MESSAGE);
|
|
243
297
|
}
|
|
244
|
-
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Materializes a deferred Web framework request body exactly once.
|
|
302
|
+
*
|
|
303
|
+
* @param request - Framework request returned by {@link createDeferredWebFrameworkRequest}.
|
|
304
|
+
* @returns A promise that settles after body, rawBody, and files fields are populated when applicable.
|
|
305
|
+
*/
|
|
306
|
+
async function materializeWebFrameworkRequestBody(request) {
|
|
307
|
+
await request.materializeBody?.();
|
|
308
|
+
delete request.materializeBody;
|
|
309
|
+
}
|
|
310
|
+
function createMemoizedValue(factory) {
|
|
311
|
+
let initialized = false;
|
|
312
|
+
let value;
|
|
313
|
+
return () => {
|
|
314
|
+
if (!initialized) {
|
|
315
|
+
value = factory();
|
|
316
|
+
initialized = true;
|
|
317
|
+
}
|
|
318
|
+
return value;
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
function createMemoizedAsyncValue(factory) {
|
|
322
|
+
let promise;
|
|
323
|
+
return () => {
|
|
324
|
+
promise ??= factory();
|
|
325
|
+
return promise;
|
|
326
|
+
};
|
|
245
327
|
}
|
|
246
328
|
function parseQueryParams(searchParams) {
|
|
247
329
|
const query = {};
|
|
@@ -261,7 +343,7 @@ function parseQueryParams(searchParams) {
|
|
|
261
343
|
}
|
|
262
344
|
function cloneWebHeaders(headers) {
|
|
263
345
|
const clonedHeaders = {};
|
|
264
|
-
for (const [name, value] of headers
|
|
346
|
+
for (const [name, value] of headers) {
|
|
265
347
|
clonedHeaders[name] = value;
|
|
266
348
|
}
|
|
267
349
|
return clonedHeaders;
|
|
@@ -286,13 +368,7 @@ function parseCookieHeader(cookieHeader) {
|
|
|
286
368
|
}));
|
|
287
369
|
}
|
|
288
370
|
async function readWebRequestBody(request, contentType, maxBodySize = DEFAULT_MAX_BODY_SIZE, preserveRawBody = false) {
|
|
289
|
-
|
|
290
|
-
if (contentLength !== null) {
|
|
291
|
-
const parsedContentLength = Number(contentLength);
|
|
292
|
-
if (Number.isFinite(parsedContentLength) && parsedContentLength > maxBodySize) {
|
|
293
|
-
throw new PayloadTooLargeException(REQUEST_BODY_LIMIT_MESSAGE);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
371
|
+
validateWebRequestContentLength(request, maxBodySize);
|
|
296
372
|
if (!request.body) {
|
|
297
373
|
return {
|
|
298
374
|
body: undefined
|