@tstdl/base 0.81.14 → 0.81.16
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.
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.corsMiddleware = void 0;
|
|
4
4
|
const types_1 = require("../../types");
|
|
5
|
+
const array_1 = require("../../../utils/array");
|
|
5
6
|
const type_guards_1 = require("../../../utils/type-guards");
|
|
6
7
|
function corsMiddleware(options = {}) {
|
|
7
8
|
// eslint-disable-next-line max-statements, @typescript-eslint/no-shadow
|
|
@@ -16,23 +17,31 @@ function corsMiddleware(options = {}) {
|
|
|
16
17
|
if (allowCredentials) {
|
|
17
18
|
response.headers.setIfMissing('Access-Control-Allow-Credentials', 'true');
|
|
18
19
|
}
|
|
19
|
-
if ((0, type_guards_1.isDefined)(cors.accessControlAllowHeaders)) {
|
|
20
|
+
if ((0, type_guards_1.isDefined)(cors.accessControlAllowHeaders) && !request.headers.has('Access-Control-Allow-Headers')) {
|
|
20
21
|
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlAllowHeaders);
|
|
21
22
|
response.headers.setIfMissing('Access-Control-Allow-Headers', value);
|
|
22
23
|
}
|
|
23
|
-
if ((0, type_guards_1.isDefined)(cors.accessControlExposeHeaders)) {
|
|
24
|
+
if ((0, type_guards_1.isDefined)(cors.accessControlExposeHeaders) && !request.headers.has('Access-Control-Expose-Headers')) {
|
|
24
25
|
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlExposeHeaders);
|
|
25
26
|
response.headers.setIfMissing('Access-Control-Expose-Headers', value);
|
|
26
27
|
}
|
|
27
|
-
if ((0, type_guards_1.isDefined)(cors.accessControlMaxAge)) {
|
|
28
|
+
if ((0, type_guards_1.isDefined)(cors.accessControlMaxAge) && !request.headers.has('Access-Control-Max-Age')) {
|
|
28
29
|
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlMaxAge);
|
|
29
30
|
response.headers.setIfMissing('Access-Control-Max-Age', value);
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
|
-
if ((0, type_guards_1.isDefined)(cors.accessControlAllowOrigin)) {
|
|
33
|
+
if ((0, type_guards_1.isDefined)(cors.accessControlAllowOrigin) && !response.headers.has('Access-Control-Allow-Origin')) {
|
|
33
34
|
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.accessControlAllowOrigin);
|
|
34
35
|
response.headers.setIfMissing('Access-Control-Allow-Origin', value);
|
|
35
36
|
}
|
|
37
|
+
if ((0, type_guards_1.isDefined)(cors.autoAccessControlAllowOrigin) && !response.headers.has('Access-Control-Allow-Origin')) {
|
|
38
|
+
const value = await (0, types_1.resolveApiEndpointDataProvider)(request, context, cors.autoAccessControlAllowOrigin);
|
|
39
|
+
const origin = request.headers.tryGetSingle('Origin');
|
|
40
|
+
const allowed = (0, type_guards_1.isDefined)(value) && (0, array_1.toArray)(value).includes(origin);
|
|
41
|
+
if (allowed) {
|
|
42
|
+
response.headers.setIfMissing('Access-Control-Allow-Origin', origin);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
36
45
|
return response;
|
|
37
46
|
}
|
|
38
47
|
return corsMiddleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.middleware.js","sourceRoot":"","sources":["../../../../source/api/server/middlewares/cors.middleware.ts"],"names":[],"mappings":";;;AACA,uCAA6D;
|
|
1
|
+
{"version":3,"file":"cors.middleware.js","sourceRoot":"","sources":["../../../../source/api/server/middlewares/cors.middleware.ts"],"names":[],"mappings":"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"}
|
package/api/types.d.ts
CHANGED
|
@@ -23,12 +23,13 @@ export declare type ApiEndpointDefinitionBody = SchemaTestable | typeof String |
|
|
|
23
23
|
export declare type ApiEndpointDefinitionResult = SchemaTestable | typeof String | typeof Uint8Array | typeof Blob | typeof ReadableStream;
|
|
24
24
|
export declare type ApiEndpointDataProvider<T> = T | ((request: HttpServerRequest, context: ApiGatewayMiddlewareContext) => T | Promise<T>);
|
|
25
25
|
export declare type ApiEndpointDefinitionCors = {
|
|
26
|
-
accessControlAllowCredentials?: ApiEndpointDataProvider<boolean>;
|
|
27
|
-
accessControlAllowHeaders?: ApiEndpointDataProvider<OneOrMany<string
|
|
28
|
-
accessControlAllowMethods?: ApiEndpointDataProvider<OneOrMany<HttpMethod
|
|
29
|
-
accessControlAllowOrigin?: ApiEndpointDataProvider<string>;
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
accessControlAllowCredentials?: ApiEndpointDataProvider<boolean | undefined>;
|
|
27
|
+
accessControlAllowHeaders?: ApiEndpointDataProvider<OneOrMany<string> | undefined>;
|
|
28
|
+
accessControlAllowMethods?: ApiEndpointDataProvider<OneOrMany<HttpMethod> | undefined>;
|
|
29
|
+
accessControlAllowOrigin?: ApiEndpointDataProvider<string | undefined>;
|
|
30
|
+
autoAccessControlAllowOrigin?: ApiEndpointDataProvider<OneOrMany<string> | undefined>;
|
|
31
|
+
accessControlExposeHeaders?: ApiEndpointDataProvider<OneOrMany<string> | undefined>;
|
|
32
|
+
accessControlMaxAge?: ApiEndpointDataProvider<number | undefined>;
|
|
32
33
|
};
|
|
33
34
|
export declare type ApiEndpointDefinition = {
|
|
34
35
|
/**
|
package/api/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../source/api/types.ts"],"names":[],"mappings":";;;AAIA,mDAAsD;AACtD,sDAAiD;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../source/api/types.ts"],"names":[],"mappings":";;;AAIA,mDAAsD;AACtD,sDAAiD;AAkJjD,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,IAAA,sBAAa,EAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAmC,EAAE,CAAC,CAAC,GAAa,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3I,CAAC;AAFD,0FAEC"}
|
package/http/http-value-map.js
CHANGED
|
@@ -27,7 +27,7 @@ class HttpValueMap {
|
|
|
27
27
|
get(key) {
|
|
28
28
|
const lowercasedKey = this.normalizeKey(key);
|
|
29
29
|
if (!this.has(lowercasedKey)) {
|
|
30
|
-
throw new bad_request_error_1.BadRequestError(`
|
|
30
|
+
throw new bad_request_error_1.BadRequestError(`Missing ${lowercasedKey} ${this.valueType}`);
|
|
31
31
|
}
|
|
32
32
|
return this.map.get(lowercasedKey).value;
|
|
33
33
|
}
|
|
@@ -40,7 +40,7 @@ class HttpValueMap {
|
|
|
40
40
|
const lowercasedKey = this.normalizeKey(key);
|
|
41
41
|
const value = this.tryGetSingle(lowercasedKey);
|
|
42
42
|
if ((0, type_guards_1.isUndefined)(value)) {
|
|
43
|
-
throw new bad_request_error_1.BadRequestError(`
|
|
43
|
+
throw new bad_request_error_1.BadRequestError(`Missing ${lowercasedKey} ${this.valueType}`);
|
|
44
44
|
}
|
|
45
45
|
return value;
|
|
46
46
|
}
|
|
@@ -49,7 +49,7 @@ class HttpValueMap {
|
|
|
49
49
|
const lowercasedKey = this.normalizeKey(key);
|
|
50
50
|
const value = this.map.get(lowercasedKey)?.value;
|
|
51
51
|
if ((0, type_guards_1.isArray)(value)) {
|
|
52
|
-
throw new bad_request_error_1.BadRequestError(`
|
|
52
|
+
throw new bad_request_error_1.BadRequestError(`Invalid ${lowercasedKey} ${this.valueType}. Expected single value`);
|
|
53
53
|
}
|
|
54
54
|
return value;
|
|
55
55
|
}
|