@tstdl/base 0.78.0-beta66 → 0.78.0-beta68
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/api/client/client.js +30 -4
- package/api/client/client.js.map +1 -1
- package/api/server/gateway.d.ts +5 -0
- package/api/server/gateway.js +31 -22
- package/api/server/gateway.js.map +1 -1
- package/api/types.d.ts +14 -6
- package/api/types.js.map +1 -1
- package/application/application.d.ts +2 -0
- package/application/application.js +3 -0
- package/application/application.js.map +1 -1
- package/error/max-bytes-exceeded.error.d.ts +1 -0
- package/error/max-bytes-exceeded.error.js +3 -0
- package/error/max-bytes-exceeded.error.js.map +1 -1
- package/error/unsupported-media-type.error.js +1 -1
- package/error/unsupported-media-type.error.js.map +1 -1
- package/examples/api/basic-overview.js +17 -24
- package/examples/api/basic-overview.js.map +1 -1
- package/examples/api/streaming.d.ts +1 -0
- package/examples/api/streaming.js +79 -0
- package/examples/api/streaming.js.map +1 -0
- package/http/client/adapters/undici-http-client.adapter.js +4 -4
- package/http/client/adapters/undici-http-client.adapter.js.map +1 -1
- package/http/client/http-client-request.d.ts +2 -2
- package/http/client/http-client-response.d.ts +2 -4
- package/http/client/http-client-response.js +3 -0
- package/http/client/http-client-response.js.map +1 -1
- package/http/http-body.d.ts +8 -7
- package/http/http-body.js +14 -14
- package/http/http-body.js.map +1 -1
- package/http/http-headers.d.ts +1 -0
- package/http/http-headers.js.map +1 -1
- package/http/server/http-server-request.d.ts +2 -8
- package/http/server/http-server-request.js +0 -23
- package/http/server/http-server-request.js.map +1 -1
- package/http/server/http-server-response.d.ts +4 -4
- package/http/server/node/node-http-server.js +2 -1
- package/http/server/node/node-http-server.js.map +1 -1
- package/http/utils.d.ts +10 -7
- package/http/utils.js +41 -22
- package/http/utils.js.map +1 -1
- package/package.json +2 -2
- package/schema/types.d.ts +0 -1
- package/schema/types.js.map +1 -1
- package/serializer/handlers/register.js +2 -1
- package/serializer/handlers/register.js.map +1 -1
- package/supports.d.ts +1 -0
- package/supports.js +2 -1
- package/supports.js.map +1 -1
- package/utils/base64.js +3 -2
- package/utils/base64.js.map +1 -1
- package/utils/binary.js +3 -2
- package/utils/binary.js.map +1 -1
- package/utils/compression.d.ts +3 -3
- package/utils/compression.js +3 -2
- package/utils/compression.js.map +1 -1
- package/utils/encoding.d.ts +6 -3
- package/utils/encoding.js +11 -6
- package/utils/encoding.js.map +1 -1
- package/utils/stream/index.d.ts +1 -0
- package/utils/stream/index.js +1 -0
- package/utils/stream/index.js.map +1 -1
- package/utils/stream/size-limited-stream.d.ts +2 -0
- package/utils/stream/size-limited-stream.js +18 -0
- package/utils/stream/size-limited-stream.js.map +1 -0
- package/utils/stream/stream-reader.d.ts +1 -1
- package/utils/stream/stream-reader.js +3 -10
- package/utils/stream/stream-reader.js.map +1 -1
- package/http/client/adapters/got-http-client.adapter.d.ts +0 -10
- package/http/client/adapters/got-http-client.adapter.js +0 -148
- package/http/client/adapters/got-http-client.adapter.js.map +0 -1
package/api/client/client.js
CHANGED
|
@@ -35,17 +35,18 @@ function compileClient(definition, options = {}) {
|
|
|
35
35
|
const hasGet = methods.includes('GET');
|
|
36
36
|
const fallbackMethod = methods.filter((method) => method != 'GET')[0] ?? 'GET';
|
|
37
37
|
const apiEndpointFunction = {
|
|
38
|
-
async [name](parameters) {
|
|
38
|
+
async [name](parameters, requestBody) {
|
|
39
39
|
const context = { endpoint };
|
|
40
40
|
const method = (hasGet && (0, type_guards_1.isUndefined)(parameters)) ? 'GET' : fallbackMethod;
|
|
41
41
|
const request = new client_1.HttpClientRequest({
|
|
42
42
|
method,
|
|
43
43
|
url: resource,
|
|
44
44
|
parameters,
|
|
45
|
+
body: getRequestBody(requestBody),
|
|
45
46
|
context
|
|
46
47
|
});
|
|
47
48
|
const response = await this[exports.httpClientSymbol].rawRequest(request);
|
|
48
|
-
return
|
|
49
|
+
return getResponseBody(response, endpoint.result);
|
|
49
50
|
}
|
|
50
51
|
}[name];
|
|
51
52
|
Object.defineProperty(api.prototype, name, {
|
|
@@ -58,10 +59,35 @@ function compileClient(definition, options = {}) {
|
|
|
58
59
|
return api;
|
|
59
60
|
}
|
|
60
61
|
exports.compileClient = compileClient;
|
|
61
|
-
function
|
|
62
|
+
function getRequestBody(body) {
|
|
63
|
+
if ((0, type_guards_1.isUndefined)(body)) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
if ((0, type_guards_1.isUint8Array)(body)) {
|
|
67
|
+
return { buffer: body };
|
|
68
|
+
}
|
|
69
|
+
if ((0, type_guards_1.isReadableStream)(body)) {
|
|
70
|
+
return { stream: body };
|
|
71
|
+
}
|
|
72
|
+
if ((0, type_guards_1.isString)(body)) {
|
|
73
|
+
return { text: body };
|
|
74
|
+
}
|
|
75
|
+
return { json: body };
|
|
76
|
+
}
|
|
77
|
+
async function getResponseBody(response, schema) {
|
|
62
78
|
if ((0, type_guards_1.isUndefined)(schema)) {
|
|
79
|
+
response.close();
|
|
63
80
|
return undefined;
|
|
64
81
|
}
|
|
65
|
-
|
|
82
|
+
const body = response.hasBody
|
|
83
|
+
? (schema == ReadableStream)
|
|
84
|
+
? response.body.readAsBinaryStream()
|
|
85
|
+
: (schema == Uint8Array)
|
|
86
|
+
? await response.body.readAsBuffer()
|
|
87
|
+
: (schema == String)
|
|
88
|
+
? await response.body.readAsText()
|
|
89
|
+
: await response.body.read()
|
|
90
|
+
: undefined;
|
|
91
|
+
return schema_1.Schema.parse(schema, body, { mask: true });
|
|
66
92
|
}
|
|
67
93
|
//# sourceMappingURL=client.js.map
|
package/api/client/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../source/api/client/client.ts"],"names":[],"mappings":";;;AACA,+CAA6D;AAE7D,8CAA8D;AAC9D,yCAAkC;AAElC,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../source/api/client/client.ts"],"names":[],"mappings":"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"}
|
package/api/server/gateway.d.ts
CHANGED
|
@@ -29,6 +29,11 @@ export declare type ApiGatewayOptions = {
|
|
|
29
29
|
supressedErrors?: Type<Error>[];
|
|
30
30
|
/** Cors middleware options */
|
|
31
31
|
cors?: CorsMiddlewareOptions;
|
|
32
|
+
/**
|
|
33
|
+
* Maximum size of request body. Useful to prevent harmful requests.
|
|
34
|
+
* @default 10 MB
|
|
35
|
+
*/
|
|
36
|
+
defaultMaxBytes?: number;
|
|
32
37
|
};
|
|
33
38
|
export declare type GatewayEndpoint = {
|
|
34
39
|
definition: ApiEndpointDefinition;
|
package/api/server/gateway.js
CHANGED
|
@@ -25,6 +25,7 @@ const array_1 = require("../../utils/array");
|
|
|
25
25
|
const middleware_1 = require("../../utils/middleware");
|
|
26
26
|
const throw_1 = require("../../utils/throw");
|
|
27
27
|
const type_guards_1 = require("../../utils/type-guards");
|
|
28
|
+
const units_1 = require("../../utils/units");
|
|
28
29
|
require("urlpattern-polyfill");
|
|
29
30
|
const types_1 = require("../types");
|
|
30
31
|
const utils_1 = require("../utils");
|
|
@@ -32,6 +33,7 @@ const api_controller_1 = require("./api-controller");
|
|
|
32
33
|
const error_handler_1 = require("./error-handler");
|
|
33
34
|
const middlewares_1 = require("./middlewares");
|
|
34
35
|
const tokens_1 = require("./tokens");
|
|
36
|
+
const defaultMaxBytes = 10 * units_1.mebibyte;
|
|
35
37
|
/**
|
|
36
38
|
* router for {@link ApiTransport} requests to {@link ApiImplementation}
|
|
37
39
|
* @todo error handling (standardized format, serialization etc.)
|
|
@@ -128,11 +130,12 @@ let ApiGateway = ApiGateway_1 = class ApiGateway {
|
|
|
128
130
|
this.handler = (0, middleware_1.composeAsyncMiddleware)(middlewares, async (request, context) => this.middlewareHandler(request, context));
|
|
129
131
|
}
|
|
130
132
|
async middlewareHandler(request, context) {
|
|
133
|
+
const readBodyOptions = { maxBytes: context.endpoint.definition.maxBytes ?? this.options.defaultMaxBytes ?? defaultMaxBytes };
|
|
131
134
|
const body = (0, type_guards_1.isDefined)(context.endpoint.definition.body)
|
|
132
|
-
? await this.getBody(request, context.endpoint.definition.body)
|
|
135
|
+
? await this.getBody(request, readBodyOptions, context.endpoint.definition.body)
|
|
133
136
|
: undefined;
|
|
134
137
|
const bodyAsParameters = ((0, type_guards_1.isUndefined)(context.endpoint.definition.body) && (request.headers.contentType?.includes('json') == true))
|
|
135
|
-
? await request.
|
|
138
|
+
? await request.body.readAsJson(readBodyOptions)
|
|
136
139
|
: undefined;
|
|
137
140
|
if ((0, type_guards_1.isDefined)(bodyAsParameters) && !(0, type_guards_1.isObject)(bodyAsParameters)) {
|
|
138
141
|
throw new bad_request_error_1.BadRequestError('expected json object as body');
|
|
@@ -143,7 +146,7 @@ let ApiGateway = ApiGateway_1 = class ApiGateway {
|
|
|
143
146
|
: parameters;
|
|
144
147
|
const requestData = {
|
|
145
148
|
parameters: validatedParameters,
|
|
146
|
-
body
|
|
149
|
+
body,
|
|
147
150
|
request
|
|
148
151
|
};
|
|
149
152
|
const result = await context.endpoint.implementation(requestData);
|
|
@@ -151,19 +154,34 @@ let ApiGateway = ApiGateway_1 = class ApiGateway {
|
|
|
151
154
|
return result;
|
|
152
155
|
}
|
|
153
156
|
const response = new server_1.HttpServerResponse({
|
|
154
|
-
body: (
|
|
155
|
-
: (
|
|
156
|
-
: {
|
|
157
|
+
body: (context.endpoint.definition.result == String) ? { text: result }
|
|
158
|
+
: (context.endpoint.definition.result == Uint8Array) ? { buffer: result }
|
|
159
|
+
: (context.endpoint.definition.result == ReadableStream) ? { stream: result }
|
|
160
|
+
: { json: result }
|
|
157
161
|
});
|
|
158
162
|
return response;
|
|
159
163
|
}
|
|
160
|
-
async getBody(request, schema) {
|
|
161
|
-
|
|
162
|
-
if (
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
async getBody(request, options, schema) {
|
|
165
|
+
let body;
|
|
166
|
+
if (request.hasBody) {
|
|
167
|
+
if (schema == ReadableStream) {
|
|
168
|
+
body = request.body.readAsBinaryStream(options);
|
|
169
|
+
}
|
|
170
|
+
else if (schema == Uint8Array) {
|
|
171
|
+
body = await request.body.readAsBuffer(options);
|
|
172
|
+
}
|
|
173
|
+
else if (schema == String) {
|
|
174
|
+
body = await request.body.readAsText(options);
|
|
175
|
+
}
|
|
176
|
+
else if (request.headers.contentType?.startsWith('text') == true) {
|
|
177
|
+
body = await request.body.readAsText(options);
|
|
178
|
+
}
|
|
179
|
+
else if (request.headers.contentType?.includes('json') == true) {
|
|
180
|
+
body = await request.body.readAsJson(options);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
body = await request.body.readAsBuffer(options);
|
|
184
|
+
}
|
|
167
185
|
}
|
|
168
186
|
return schema_1.Schema.parse(schema, body);
|
|
169
187
|
}
|
|
@@ -177,13 +195,4 @@ ApiGateway = ApiGateway_1 = __decorate([
|
|
|
177
195
|
__metadata("design:paramtypes", [logger_1.Logger, Object])
|
|
178
196
|
], ApiGateway);
|
|
179
197
|
exports.ApiGateway = ApiGateway;
|
|
180
|
-
async function getRequestBody(request) {
|
|
181
|
-
if (request.headers.contentType?.startsWith('text') == true) {
|
|
182
|
-
return request.bodyAsText();
|
|
183
|
-
}
|
|
184
|
-
if (request.headers.contentType?.includes('json') == true) {
|
|
185
|
-
return request.bodyAsJson();
|
|
186
|
-
}
|
|
187
|
-
return request.bodyAsBytes();
|
|
188
|
-
}
|
|
189
198
|
//# sourceMappingURL=gateway.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../source/api/server/gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,+CAA+F;AAC/F,qEAA4D;AAC5D,iEAAwD;AACxD,6EAAoE;AAEpE,8CAAmD;
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../source/api/server/gateway.ts"],"names":[],"mappings":"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"}
|
package/api/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { HttpServerRequest, HttpServerResponse } from "../http/server";
|
|
2
2
|
import type { HttpMethod } from "../http/types";
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
3
|
+
import type { SchemaOutput, SchemaTestable } from "../schema";
|
|
4
|
+
import type { NonUndefinable, OneOrMany, Record, ReturnTypeOrT, UndefinableJson } from "../types";
|
|
5
5
|
import type { ApiGatewayMiddlewareContext } from './server';
|
|
6
6
|
export declare type ApiRegistrationOptions = {
|
|
7
7
|
name?: string;
|
|
@@ -19,8 +19,8 @@ export declare type EndpointRegistrationOptions = {
|
|
|
19
19
|
};
|
|
20
20
|
export declare type ApiEndpointMethod = HttpMethod;
|
|
21
21
|
export declare type ApiEndpointDefinitionParameters = SchemaTestable;
|
|
22
|
-
export declare type ApiEndpointDefinitionBody = SchemaTestable<
|
|
23
|
-
export declare type ApiEndpointDefinitionResult = SchemaTestable;
|
|
22
|
+
export declare type ApiEndpointDefinitionBody = SchemaTestable<UndefinableJson> | typeof String | typeof Uint8Array | typeof ReadableStream;
|
|
23
|
+
export declare type ApiEndpointDefinitionResult = SchemaTestable | typeof String | typeof Uint8Array | typeof ReadableStream;
|
|
24
24
|
export declare type ApiEndpointDataProvider<T> = T | ((request: HttpServerRequest, context: ApiGatewayMiddlewareContext) => T | Promise<T>);
|
|
25
25
|
export declare type ApiEndpointDefinitionCors = {
|
|
26
26
|
accessControlAllowCredentials?: ApiEndpointDataProvider<boolean>;
|
|
@@ -31,6 +31,10 @@ export declare type ApiEndpointDefinitionCors = {
|
|
|
31
31
|
accessControlMaxAge?: ApiEndpointDataProvider<number>;
|
|
32
32
|
};
|
|
33
33
|
export declare type ApiEndpointDefinition = {
|
|
34
|
+
/**
|
|
35
|
+
* Http Method
|
|
36
|
+
* @default GET
|
|
37
|
+
*/
|
|
34
38
|
method?: OneOrMany<ApiEndpointMethod>;
|
|
35
39
|
/**
|
|
36
40
|
* Root resource path. Overwrites default from {@link ApiDefinition}.
|
|
@@ -49,6 +53,10 @@ export declare type ApiEndpointDefinition = {
|
|
|
49
53
|
parameters?: ApiEndpointDefinitionParameters;
|
|
50
54
|
body?: ApiEndpointDefinitionBody;
|
|
51
55
|
result?: ApiEndpointDefinitionResult;
|
|
56
|
+
/**
|
|
57
|
+
* Maximum size of request body. Useful to prevent harmful requests.
|
|
58
|
+
*/
|
|
59
|
+
maxBytes?: number;
|
|
52
60
|
description?: string;
|
|
53
61
|
data?: any;
|
|
54
62
|
cors?: ApiEndpointDefinitionCors;
|
|
@@ -65,7 +73,7 @@ export declare type ApiEndpoint<T extends ApiDefinition, K extends ApiEndpointKe
|
|
|
65
73
|
export declare type ApiEndpointParametersSchema<T extends ApiDefinition, K extends ApiEndpointKeys<T>> = NonUndefinable<ApiEndpoint<T, K>['parameters']>;
|
|
66
74
|
export declare type ApiEndpointBodySchema<T extends ApiDefinition, K extends ApiEndpointKeys<T>> = NonUndefinable<ApiEndpoint<T, K>['body']>;
|
|
67
75
|
export declare type ApiEndpointResultSchema<T extends ApiDefinition, K extends ApiEndpointKeys<T>> = NonUndefinable<ApiEndpoint<T, K>['result']>;
|
|
68
|
-
declare type ApiType<T extends SchemaTestable> = T extends
|
|
76
|
+
declare type ApiType<T extends SchemaTestable> = T extends typeof ReadableStream ? ReadableStream<Uint8Array> : T extends SchemaTestable ? SchemaOutput<T> : never;
|
|
69
77
|
export declare type ApiParameters<T extends ApiDefinition, K extends ApiEndpointKeys<T>> = ApiType<ApiEndpointParametersSchema<T, K>>;
|
|
70
78
|
export declare type ApiBody<T extends ApiDefinition, K extends ApiEndpointKeys<T>> = ApiType<ApiEndpointBodySchema<T, K>>;
|
|
71
79
|
export declare type ApiServerResult<T extends ApiDefinition, K extends ApiEndpointKeys<T>> = ApiType<ApiEndpointResultSchema<T, K>> | HttpServerResponse;
|
|
@@ -76,7 +84,7 @@ export declare type ApiRequestData<T extends ApiDefinition = ApiDefinition, K ex
|
|
|
76
84
|
request: HttpServerRequest;
|
|
77
85
|
};
|
|
78
86
|
export declare type ApiEndpointServerImplementation<T extends ApiDefinition = ApiDefinition, K extends ApiEndpointKeys<T> = ApiEndpointKeys<T>> = (requestData: ApiRequestData<T, K>) => ApiServerResult<T, K> | Promise<ApiServerResult<T, K>>;
|
|
79
|
-
export declare type ApiEndpointClientImplementation<T extends ApiDefinition = ApiDefinition, K extends ApiEndpointKeys<T> = ApiEndpointKeys<T>> = ApiBody<T, K> extends never ? ApiParameters<T, K> extends never ? () => Promise<ApiClientResult<T, K>> : (parameters: ApiParameters<T, K>) => Promise<ApiClientResult<T, K>> : (parameters: ApiParameters<T, K>, body: ApiBody<T, K>) => Promise<ApiClientResult<T, K>>;
|
|
87
|
+
export declare type ApiEndpointClientImplementation<T extends ApiDefinition = ApiDefinition, K extends ApiEndpointKeys<T> = ApiEndpointKeys<T>> = ApiBody<T, K> extends never ? ApiParameters<T, K> extends never ? () => Promise<ApiClientResult<T, K>> : (parameters: ApiParameters<T, K>) => Promise<ApiClientResult<T, K>> : (parameters: ApiParameters<T, K> extends never ? undefined | Record<never, never> : ApiParameters<T, K>, body: ApiBody<T, K>) => Promise<ApiClientResult<T, K>>;
|
|
80
88
|
export declare type ApiController<T extends ApiDefinition = any> = {
|
|
81
89
|
[P in ApiEndpointKeys<T>]: ApiEndpointServerImplementation<T, P>;
|
|
82
90
|
};
|
package/api/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../source/api/types.ts"],"names":[],"mappings":";;;AAIA,sDAAiD;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../source/api/types.ts"],"names":[],"mappings":";;;AAIA,sDAAiD;AA0HjD,SAAgB,SAAS,CAA0B,UAAa;IAC9D,OAAO,UAAU,CAAC;AACpB,CAAC;AAFD,8BAEC;AAEM,KAAK,UAAU,8BAA8B,CAAI,OAA0B,EAAE,OAAoC,EAAE,QAAoC;IAC5J,IAAI,IAAA,wBAAU,EAAC,QAAQ,CAAC,EAAE;QACxB,OAAO,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACnC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAND,wEAMC;AAED,SAAgB,gCAAgC,CAAuC,sBAAyB;IAC9G,MAAM,OAAO,GAAG,uCAAuC,CAAC,sBAAsB,CAAC,CAAC;IAChF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAA8B,CAAC;AAClE,CAAC;AAHD,4EAGC;AAED,SAAgB,uCAAuC,CAAuC,aAAgB;IAC5G,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAmC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClI,CAAC;AAFD,0FAEC"}
|
|
@@ -2,6 +2,7 @@ import { Logger } from "../logger";
|
|
|
2
2
|
import type { Module } from "../module";
|
|
3
3
|
import type { FunctionModuleFunction } from "../module/modules";
|
|
4
4
|
import type { OneOrMany, Type } from "../types";
|
|
5
|
+
import type { CancellationToken } from "../utils/cancellation-token";
|
|
5
6
|
export declare class Application {
|
|
6
7
|
private static _instance;
|
|
7
8
|
private static get instance();
|
|
@@ -9,6 +10,7 @@ export declare class Application {
|
|
|
9
10
|
private readonly moduleTypes;
|
|
10
11
|
private readonly moduleInstances;
|
|
11
12
|
private readonly shutdownPromise;
|
|
13
|
+
static get shutdownToken(): CancellationToken;
|
|
12
14
|
constructor(logger: Logger);
|
|
13
15
|
static registerModule(moduleType: Type<Module>): void;
|
|
14
16
|
static registerModuleInstance(module: Module): void;
|
|
@@ -37,6 +37,9 @@ let Application = Application_1 = class Application {
|
|
|
37
37
|
}
|
|
38
38
|
return this._instance;
|
|
39
39
|
}
|
|
40
|
+
static get shutdownToken() {
|
|
41
|
+
return process_shutdown_1.shutdownToken;
|
|
42
|
+
}
|
|
40
43
|
static registerModule(moduleType) {
|
|
41
44
|
Application_1.instance.registerModule(moduleType);
|
|
42
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../source/application/application.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA+D;AAC/D,kCAA0C;AAE1C,sCAAkC;AAElC,sCAAuC;AAEvC,+CAAkD;AAClD,0DAAuF;AACvF,wCAA4C;AAE5C,4EAAwE;
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../source/application/application.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,9 @@ class MaxBytesExceededError extends custom_error_1.CustomError {
|
|
|
6
6
|
constructor(message = 'max bytes exceeded') {
|
|
7
7
|
super({ message });
|
|
8
8
|
}
|
|
9
|
+
static fromBytes(bytes) {
|
|
10
|
+
return new MaxBytesExceededError(`Maximum bytes of ${bytes} exceeded.`);
|
|
11
|
+
}
|
|
9
12
|
}
|
|
10
13
|
exports.MaxBytesExceededError = MaxBytesExceededError;
|
|
11
14
|
MaxBytesExceededError.errorName = 'MaxBytesExceededError';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max-bytes-exceeded.error.js","sourceRoot":"","sources":["../../source/error/max-bytes-exceeded.error.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAE7C,MAAa,qBAAsB,SAAQ,0BAAW;IAGpD,YAAY,UAAkB,oBAAoB;QAChD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACrB,CAAC;;
|
|
1
|
+
{"version":3,"file":"max-bytes-exceeded.error.js","sourceRoot":"","sources":["../../source/error/max-bytes-exceeded.error.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAE7C,MAAa,qBAAsB,SAAQ,0BAAW;IAGpD,YAAY,UAAkB,oBAAoB;QAChD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAa;QAC5B,OAAO,IAAI,qBAAqB,CAAC,oBAAoB,KAAK,YAAY,CAAC,CAAC;IAC1E,CAAC;;AATH,sDAUC;AATiB,+BAAS,GAAG,uBAAuB,CAAC"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.UnsupportedMediaTypeError = void 0;
|
|
4
4
|
const custom_error_1 = require("./custom.error");
|
|
5
5
|
class UnsupportedMediaTypeError extends custom_error_1.CustomError {
|
|
6
|
-
constructor(message = '
|
|
6
|
+
constructor(message = 'Unsupported media type.') {
|
|
7
7
|
super({ message });
|
|
8
8
|
}
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsupported-media-type.error.js","sourceRoot":"","sources":["../../source/error/unsupported-media-type.error.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAE7C,MAAa,yBAA0B,SAAQ,0BAAW;IAGxD,YAAY,UAAkB,
|
|
1
|
+
{"version":3,"file":"unsupported-media-type.error.js","sourceRoot":"","sources":["../../source/error/unsupported-media-type.error.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAE7C,MAAa,yBAA0B,SAAQ,0BAAW;IAGxD,YAAY,UAAkB,yBAAyB;QACrD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACrB,CAAC;;AALH,8DAMC;AALiB,mCAAS,GAAG,2BAA2B,CAAC"}
|
|
@@ -38,32 +38,25 @@ const users = [
|
|
|
38
38
|
const usersApiDefinition = (0, api_1.defineApi)({
|
|
39
39
|
resource: 'users',
|
|
40
40
|
endpoints: {
|
|
41
|
-
load
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
result: User
|
|
50
|
-
};
|
|
41
|
+
load: {
|
|
42
|
+
method: 'GET',
|
|
43
|
+
resource: ':id',
|
|
44
|
+
version: 1,
|
|
45
|
+
parameters: (0, schema_1.object)({
|
|
46
|
+
id: (0, schema_1.number)({ coerce: true })
|
|
47
|
+
}),
|
|
48
|
+
result: User
|
|
51
49
|
},
|
|
52
|
-
loadAll
|
|
53
|
-
|
|
54
|
-
method: 'GET',
|
|
55
|
-
result: (0, schema_1.array)(User)
|
|
56
|
-
};
|
|
50
|
+
loadAll: {
|
|
51
|
+
result: (0, schema_1.array)(User)
|
|
57
52
|
},
|
|
58
|
-
delete
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
result: (0, schema_1.boolean)()
|
|
66
|
-
};
|
|
53
|
+
delete: {
|
|
54
|
+
method: 'DELETE',
|
|
55
|
+
resource: ':id',
|
|
56
|
+
parameters: (0, schema_1.object)({
|
|
57
|
+
id: (0, schema_1.number)({ coerce: true })
|
|
58
|
+
}),
|
|
59
|
+
result: (0, schema_1.boolean)()
|
|
67
60
|
}
|
|
68
61
|
}
|
|
69
62
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic-overview.js","sourceRoot":"","sources":["../../../source/examples/api/basic-overview.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,mCAAkC;AAClC,6CAA6C;AAC7C,6CAAiE;AACjE,mDAA4C;AAC5C,+CAAwC;AACxC,qCAA6C;AAC7C,sGAAqG;AACrG,iDAA6D;AAC7D,kDAAmD;AACnD,yCAAoE;AACpE,uCAAkC;AAClC,mCAA+B;AAE/B,MAAM,IAAI;CAMT;AALC;IAAC,IAAA,iBAAQ,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;gCAChB;AAEX;IAAC,IAAA,iBAAQ,GAAE;;kCACE;AAGf,MAAM,KAAK,GAAW;IACpB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IACxB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;CACvB,CAAC;AAIF,MAAM,kBAAkB,GAAG,IAAA,eAAS,EAAC;IACnC,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE;QACT,IAAI
|
|
1
|
+
{"version":3,"file":"basic-overview.js","sourceRoot":"","sources":["../../../source/examples/api/basic-overview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const api_1 = require("../../api");
|
|
10
|
+
const client_1 = require("../../api/client");
|
|
11
|
+
const server_1 = require("../../api/server");
|
|
12
|
+
const application_1 = require("../../application");
|
|
13
|
+
const container_1 = require("../../container");
|
|
14
|
+
const core_1 = require("../../core");
|
|
15
|
+
const http_1 = require("../../http");
|
|
16
|
+
const undici_http_client_adapter_1 = require("../../http/client/adapters/undici-http-client.adapter");
|
|
17
|
+
const server_2 = require("../../http/server");
|
|
18
|
+
const node_1 = require("../../http/server/node");
|
|
19
|
+
const modules_1 = require("../../module/modules");
|
|
20
|
+
const utils_1 = require("../../utils");
|
|
21
|
+
const stream_1 = require("../../utils/stream");
|
|
22
|
+
const undici_1 = require("undici");
|
|
23
|
+
const logger = container_1.container.resolve(core_1.CORE_LOGGER);
|
|
24
|
+
const streamingApiDefinition = (0, api_1.defineApi)({
|
|
25
|
+
resource: 'streams',
|
|
26
|
+
endpoints: {
|
|
27
|
+
echo: {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
resource: 'echo',
|
|
30
|
+
body: ReadableStream,
|
|
31
|
+
result: ReadableStream
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
let StreamingApi = class StreamingApi {
|
|
36
|
+
echo({ request, body }) {
|
|
37
|
+
return server_2.HttpServerResponse.fromObject({
|
|
38
|
+
headers: {
|
|
39
|
+
'Content-Type': request.headers.contentType,
|
|
40
|
+
'Content-Length': request.headers.contentLength
|
|
41
|
+
},
|
|
42
|
+
body: {
|
|
43
|
+
stream: body
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
StreamingApi = __decorate([
|
|
49
|
+
(0, server_1.apiController)(streamingApiDefinition)
|
|
50
|
+
], StreamingApi);
|
|
51
|
+
async function* counter() {
|
|
52
|
+
let currentNumber = 0;
|
|
53
|
+
while (application_1.Application.shutdownToken.isUnset && (currentNumber < 15)) {
|
|
54
|
+
yield (`${++currentNumber}`).toString();
|
|
55
|
+
logger.info(`yield: "${currentNumber}"`);
|
|
56
|
+
await (0, utils_1.cancelableTimeout)(1000, application_1.Application.shutdownToken);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const StreamingApiClient = (0, client_1.compileClient)(streamingApiDefinition);
|
|
60
|
+
async function clientTest() {
|
|
61
|
+
await (0, utils_1.timeout)(250); // allow server to start
|
|
62
|
+
const streamingApiClient = container_1.container.resolve(StreamingApiClient);
|
|
63
|
+
const response = await streamingApiClient.echo(undefined, (0, stream_1.getReadableStreamFromIterable)(counter()).pipeThrough((0, utils_1.encodeUtf8Stream)()));
|
|
64
|
+
for await (const responseChunk of (0, stream_1.getReadableStreamIterable)(response.pipeThrough((0, utils_1.decodeTextStream)()))) {
|
|
65
|
+
logger.info(`response: "${responseChunk}"\n`);
|
|
66
|
+
}
|
|
67
|
+
await application_1.Application.shutdown();
|
|
68
|
+
}
|
|
69
|
+
async function main() {
|
|
70
|
+
(0, node_1.configureNodeHttpServer)(true);
|
|
71
|
+
(0, server_1.configureApiServer)({ controllers: [StreamingApi] });
|
|
72
|
+
(0, undici_http_client_adapter_1.configureUndiciHttpClientAdapter)({ dispatcher: new undici_1.Agent({ keepAliveMaxTimeout: 1 }) });
|
|
73
|
+
container_1.container.register(http_1.HTTP_CLIENT_OPTIONS, { useValue: { baseUrl: 'http://localhost:8000' } });
|
|
74
|
+
application_1.Application.registerModule(modules_1.WebServerModule);
|
|
75
|
+
await application_1.Application.run();
|
|
76
|
+
}
|
|
77
|
+
void main();
|
|
78
|
+
void clientTest().catch((error) => logger.error(error));
|
|
79
|
+
//# sourceMappingURL=streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../source/examples/api/streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ const container_1 = require("../../../container");
|
|
|
17
17
|
const http_1 = require("../..");
|
|
18
18
|
const array_1 = require("../../../utils/array");
|
|
19
19
|
const type_guards_1 = require("../../../utils/type-guards");
|
|
20
|
+
const stream_1 = require("stream");
|
|
20
21
|
const undici_1 = require("undici");
|
|
21
22
|
const http_client_response_1 = require("../http-client-response");
|
|
22
23
|
const http_client_adapter_1 = require("../http-client.adapter");
|
|
@@ -39,16 +40,15 @@ let UndiciHttpClientAdapter = class UndiciHttpClientAdapter extends http_client_
|
|
|
39
40
|
body = httpClientRequest.body.text;
|
|
40
41
|
}
|
|
41
42
|
else if ((0, type_guards_1.isDefined)(httpClientRequest.body?.stream)) {
|
|
42
|
-
body = httpClientRequest.body.stream;
|
|
43
|
+
body = stream_1.Readable.from(httpClientRequest.body.stream);
|
|
43
44
|
}
|
|
44
45
|
else if ((0, type_guards_1.isDefined)(httpClientRequest.body?.form)) {
|
|
45
|
-
|
|
46
|
+
body = new undici_1.FormData();
|
|
46
47
|
for (const [key, entry] of httpClientRequest.body.form.normalizedEntries()) {
|
|
47
48
|
for (const value of (0, array_1.toArray)(entry)) {
|
|
48
|
-
|
|
49
|
+
body.append(key, value);
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
body = searchParams.toString();
|
|
52
52
|
}
|
|
53
53
|
try {
|
|
54
54
|
const response = await (0, undici_1.request)(httpClientRequest.url, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undici-http-client.adapter.js","sourceRoot":"","sources":["../../../../source/http/client/adapters/undici-http-client.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA8D;AAC9D,gCAAiE;AACjE,gDAAwC;AACxC,4DAAgD;
|
|
1
|
+
{"version":3,"file":"undici-http-client.adapter.js","sourceRoot":"","sources":["../../../../source/http/client/adapters/undici-http-client.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export declare type HttpRequestBody = {
|
|
|
17
17
|
json?: UndefinableJson;
|
|
18
18
|
form?: HttpForm;
|
|
19
19
|
buffer?: Uint8Array;
|
|
20
|
-
stream?:
|
|
20
|
+
stream?: ReadableStream<Uint8Array>;
|
|
21
21
|
};
|
|
22
22
|
export declare type HttpRequestAuthorization = {
|
|
23
23
|
basic?: {
|
|
@@ -37,7 +37,7 @@ export declare type HttpClientRequestOptions = Partial<TypedOmit<HttpClientReque
|
|
|
37
37
|
json?: UndefinableJson;
|
|
38
38
|
form?: HttpFormObject | HttpForm;
|
|
39
39
|
buffer?: Uint8Array;
|
|
40
|
-
stream?:
|
|
40
|
+
stream?: ReadableStream<Uint8Array>;
|
|
41
41
|
};
|
|
42
42
|
abortToken?: ReadonlyCancellationToken;
|
|
43
43
|
};
|