@tsed/platform-response-filter 8.8.2 → 8.8.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/lib/esm/services/PlatformContentTypeResolver.js +3 -4
- package/lib/esm/services/PlatformContentTypeResolver.js.map +1 -1
- package/lib/esm/services/PlatformContentTypesContainer.js +4 -3
- package/lib/esm/services/PlatformContentTypesContainer.js.map +1 -1
- package/lib/esm/services/PlatformResponseFilter.js.map +1 -1
- package/lib/types/services/PlatformContentTypeResolver.d.ts +3 -8
- package/lib/types/services/PlatformContentTypesContainer.d.ts +3 -5
- package/lib/types/services/PlatformResponseFilter.d.ts +1 -1
- package/package.json +13 -13
- package/src/services/PlatformContentTypeResolver.ts +14 -18
- package/src/services/PlatformContentTypesContainer.ts +20 -19
- package/src/services/PlatformResponseFilter.ts +2 -2
|
@@ -22,7 +22,8 @@ export function getContentType(data, ctx) {
|
|
|
22
22
|
/**
|
|
23
23
|
* @ignore
|
|
24
24
|
*/
|
|
25
|
-
|
|
25
|
+
export const PLATFORM_CONTENT_TYPE_RESOLVER = injectable(Symbol.for("PLATFORM_CONTENT_TYPE_RESOLVER"))
|
|
26
|
+
.factory(() => (data, ctx) => {
|
|
26
27
|
const contentType = getContentType(data, ctx);
|
|
27
28
|
if (ctx.request.get("Accept")) {
|
|
28
29
|
const { contentTypes } = inject(PLATFORM_CONTENT_TYPES_CONTAINER);
|
|
@@ -32,8 +33,6 @@ function resolver(data, ctx) {
|
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
return contentType;
|
|
35
|
-
}
|
|
36
|
-
export const PLATFORM_CONTENT_TYPE_RESOLVER = injectable(Symbol.for("PLATFORM_CONTENT_TYPE_RESOLVER"))
|
|
37
|
-
.factory(() => resolver)
|
|
36
|
+
})
|
|
38
37
|
.token();
|
|
39
38
|
//# sourceMappingURL=PlatformContentTypeResolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformContentTypeResolver.js","sourceRoot":"","sources":["../../../src/services/PlatformContentTypeResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"PlatformContentTypeResolver.js","sourceRoot":"","sources":["../../../src/services/PlatformContentTypeResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAC;AACnE,OAAO,EAA8C,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAEzF,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAC;AAEpF,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,EAAE;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5G,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa,EAAE,GAAgB;IAC5D,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,GAAG,CAAC;IACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE1G,IAAI,WAAW,IAAI,WAAW,KAAK,YAAY,CAAC,GAAG,EAAE,CAAC;QACpD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;AAChG,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;KACnG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAS,EAAE,GAAgB,EAAU,EAAE;IACrD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAE9C,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAC,YAAY,EAAC,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAEhE,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAEhG,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC,MAAM,CAAC,eAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { constant, inject, injectable } from "@tsed/di";
|
|
2
2
|
import { ContentTypes } from "../constants/ContentTypes.js";
|
|
3
3
|
import { ResponseFiltersContainer } from "../domain/ResponseFiltersContainer.js";
|
|
4
|
-
|
|
4
|
+
export const PLATFORM_CONTENT_TYPES_CONTAINER = injectable(Symbol.for("PLATFORM_CONTENT_TYPES_CONTAINER"))
|
|
5
|
+
.factory(() => {
|
|
5
6
|
const responseFilters = constant("responseFilters", []);
|
|
6
7
|
const containers = new Map();
|
|
7
8
|
ResponseFiltersContainer.forEach((token, type) => {
|
|
@@ -18,6 +19,6 @@ function factory() {
|
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
21
|
};
|
|
21
|
-
}
|
|
22
|
-
|
|
22
|
+
})
|
|
23
|
+
.token();
|
|
23
24
|
//# sourceMappingURL=PlatformContentTypesContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformContentTypesContainer.js","sourceRoot":"","sources":["../../../src/services/PlatformContentTypesContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAqB,MAAM,UAAU,CAAC;AAE1E,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAoB,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AAGlG,
|
|
1
|
+
{"version":3,"file":"PlatformContentTypesContainer.js","sourceRoot":"","sources":["../../../src/services/PlatformContentTypesContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAqB,MAAM,UAAU,CAAC;AAE1E,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAoB,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AAGlG,MAAM,CAAC,MAAM,gCAAgC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;KACvG,OAAO,CAAC,GAAG,EAAE;IACZ,MAAM,eAAe,GAAG,QAAQ,CAAgC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACvF,MAAM,UAAU,GAA0C,IAAI,GAAG,EAAE,CAAC;IAEpE,wBAAwB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC/C,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,CAAC,eAAuB;YAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAElF,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,MAAM,CAAwB,KAAK,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformResponseFilter.js","sourceRoot":"","sources":["../../../src/services/PlatformResponseFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAc,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AACnE,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAC,8BAA8B,EAAC,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,OAAO,sBAAsB;IAAnC;QACY,yBAAoB,GAAG,QAAQ,CAAU,sBAAsB,CAAC,CAAC;QACjE,cAAS,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"PlatformResponseFilter.js","sourceRoot":"","sources":["../../../src/services/PlatformResponseFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type BaseContext } from "@tsed/di";
|
|
1
|
+
import { type BaseContext, type FactoryTokenProvider } from "@tsed/di";
|
|
2
2
|
/**
|
|
3
3
|
* Determine the content type of the response based on the data and the context.
|
|
4
4
|
* @param {unknown} data
|
|
@@ -9,10 +9,5 @@ export declare function getContentType(data: unknown, ctx: BaseContext): any;
|
|
|
9
9
|
/**
|
|
10
10
|
* @ignore
|
|
11
11
|
*/
|
|
12
|
-
declare
|
|
13
|
-
|
|
14
|
-
* @ignore
|
|
15
|
-
*/
|
|
16
|
-
export type PLATFORM_CONTENT_TYPE_RESOLVER = typeof resolver;
|
|
17
|
-
export declare const PLATFORM_CONTENT_TYPE_RESOLVER: any;
|
|
18
|
-
export {};
|
|
12
|
+
export declare const PLATFORM_CONTENT_TYPE_RESOLVER: FactoryTokenProvider<(data: any, ctx: BaseContext) => string>;
|
|
13
|
+
export type PLATFORM_CONTENT_TYPE_RESOLVER = typeof PLATFORM_CONTENT_TYPE_RESOLVER;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { ResponseFilterMethods } from "../interfaces/ResponseFilterMethods.js";
|
|
2
|
-
declare
|
|
2
|
+
export declare const PLATFORM_CONTENT_TYPES_CONTAINER: import("@tsed/di").FactoryTokenProvider<{
|
|
3
3
|
contentTypes: string[];
|
|
4
4
|
resolve(bestContentType: string): ResponseFilterMethods<unknown> | undefined;
|
|
5
|
-
}
|
|
6
|
-
export type PLATFORM_CONTENT_TYPES_CONTAINER =
|
|
7
|
-
export declare const PLATFORM_CONTENT_TYPES_CONTAINER: any;
|
|
8
|
-
export {};
|
|
5
|
+
}>;
|
|
6
|
+
export type PLATFORM_CONTENT_TYPES_CONTAINER = typeof PLATFORM_CONTENT_TYPES_CONTAINER;
|
|
@@ -11,7 +11,7 @@ export declare class PlatformResponseFilter {
|
|
|
11
11
|
contentTypes: string[];
|
|
12
12
|
resolve(bestContentType: string): import("../index.js").ResponseFilterMethods<unknown> | undefined;
|
|
13
13
|
};
|
|
14
|
-
protected contentTypeResolver: (data: any, ctx: BaseContext) =>
|
|
14
|
+
protected contentTypeResolver: (data: any, ctx: BaseContext) => string;
|
|
15
15
|
/**
|
|
16
16
|
* Transform the data to the right format.
|
|
17
17
|
* @param data The data to transform.
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@tsed/platform-response-filter",
|
|
3
3
|
"description": "Platform response filter module for Ts.ED Framework",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "8.8.
|
|
5
|
+
"version": "8.8.4",
|
|
6
6
|
"source": "./src/index.ts",
|
|
7
7
|
"main": "./lib/esm/index.js",
|
|
8
8
|
"module": "./lib/esm/index.js",
|
|
@@ -26,23 +26,23 @@
|
|
|
26
26
|
"tslib": "2.7.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@tsed/barrels": "8.8.
|
|
30
|
-
"@tsed/core": "8.8.
|
|
31
|
-
"@tsed/di": "8.8.
|
|
32
|
-
"@tsed/exceptions": "8.8.
|
|
33
|
-
"@tsed/json-mapper": "8.8.
|
|
34
|
-
"@tsed/schema": "8.8.
|
|
35
|
-
"@tsed/typescript": "8.8.
|
|
29
|
+
"@tsed/barrels": "8.8.4",
|
|
30
|
+
"@tsed/core": "8.8.4",
|
|
31
|
+
"@tsed/di": "8.8.4",
|
|
32
|
+
"@tsed/exceptions": "8.8.4",
|
|
33
|
+
"@tsed/json-mapper": "8.8.4",
|
|
34
|
+
"@tsed/schema": "8.8.4",
|
|
35
|
+
"@tsed/typescript": "8.8.4",
|
|
36
36
|
"eslint": "9.12.0",
|
|
37
37
|
"typescript": "5.4.5",
|
|
38
38
|
"vitest": "3.1.1"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@tsed/core": ">=8.8.
|
|
42
|
-
"@tsed/di": ">=8.8.
|
|
43
|
-
"@tsed/exceptions": ">=8.8.
|
|
44
|
-
"@tsed/json-mapper": ">=8.8.
|
|
45
|
-
"@tsed/schema": ">=8.8.
|
|
41
|
+
"@tsed/core": ">=8.8.4",
|
|
42
|
+
"@tsed/di": ">=8.8.4",
|
|
43
|
+
"@tsed/exceptions": ">=8.8.4",
|
|
44
|
+
"@tsed/json-mapper": ">=8.8.4",
|
|
45
|
+
"@tsed/schema": ">=8.8.4"
|
|
46
46
|
},
|
|
47
47
|
"peerDependenciesMeta": {
|
|
48
48
|
"@tsed/core": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {isBoolean, isNumber, isObject, isStream} from "@tsed/core";
|
|
2
|
-
import {type BaseContext, inject, injectable} from "@tsed/di";
|
|
2
|
+
import {type BaseContext, type FactoryTokenProvider, inject, injectable} from "@tsed/di";
|
|
3
3
|
|
|
4
4
|
import {ContentTypes} from "../constants/ContentTypes.js";
|
|
5
5
|
import {PLATFORM_CONTENT_TYPES_CONTAINER} from "./PlatformContentTypesContainer.js";
|
|
@@ -28,26 +28,22 @@ export function getContentType(data: unknown, ctx: BaseContext) {
|
|
|
28
28
|
/**
|
|
29
29
|
* @ignore
|
|
30
30
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
export const PLATFORM_CONTENT_TYPE_RESOLVER = injectable(Symbol.for("PLATFORM_CONTENT_TYPE_RESOLVER"))
|
|
32
|
+
.factory(() => (data: any, ctx: BaseContext): string => {
|
|
33
|
+
const contentType = getContentType(data, ctx);
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
if (ctx.request.get("Accept")) {
|
|
36
|
+
const {contentTypes} = inject(PLATFORM_CONTENT_TYPES_CONTAINER);
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
const bestContentType = ctx.request.accepts([contentType].concat(contentTypes).filter(Boolean));
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
if (bestContentType) {
|
|
41
|
+
return [].concat(bestContentType as any).filter((type) => type !== ContentTypes.ANY)[0];
|
|
42
|
+
}
|
|
41
43
|
}
|
|
42
|
-
}
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* @ignore
|
|
49
|
-
*/
|
|
50
|
-
export type PLATFORM_CONTENT_TYPE_RESOLVER = typeof resolver;
|
|
51
|
-
export const PLATFORM_CONTENT_TYPE_RESOLVER = injectable(Symbol.for("PLATFORM_CONTENT_TYPE_RESOLVER"))
|
|
52
|
-
.factory(() => resolver)
|
|
45
|
+
return contentType;
|
|
46
|
+
})
|
|
53
47
|
.token();
|
|
48
|
+
|
|
49
|
+
export type PLATFORM_CONTENT_TYPE_RESOLVER = typeof PLATFORM_CONTENT_TYPE_RESOLVER;
|
|
@@ -5,27 +5,28 @@ import {ContentTypes} from "../constants/ContentTypes.js";
|
|
|
5
5
|
import {ResponseFilterKey, ResponseFiltersContainer} from "../domain/ResponseFiltersContainer.js";
|
|
6
6
|
import type {ResponseFilterMethods} from "../interfaces/ResponseFilterMethods.js";
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
export const PLATFORM_CONTENT_TYPES_CONTAINER = injectable(Symbol.for("PLATFORM_CONTENT_TYPES_CONTAINER"))
|
|
9
|
+
.factory(() => {
|
|
10
|
+
const responseFilters = constant<Type<ResponseFilterMethods>[]>("responseFilters", []);
|
|
11
|
+
const containers: Map<ResponseFilterKey, TokenProvider> = new Map();
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
ResponseFiltersContainer.forEach((token, type) => {
|
|
14
|
+
if (responseFilters.includes(token)) {
|
|
15
|
+
containers.set(type, token);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
return {
|
|
20
|
+
contentTypes: [...containers.keys()],
|
|
21
|
+
resolve(bestContentType: string) {
|
|
22
|
+
const token = containers.get(bestContentType) || containers.get(ContentTypes.ANY);
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
if (token) {
|
|
25
|
+
return inject<ResponseFilterMethods>(token);
|
|
26
|
+
}
|
|
25
27
|
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
28
|
+
};
|
|
29
|
+
})
|
|
30
|
+
.token();
|
|
29
31
|
|
|
30
|
-
export type PLATFORM_CONTENT_TYPES_CONTAINER =
|
|
31
|
-
export const PLATFORM_CONTENT_TYPES_CONTAINER = injectable(Symbol.for("PLATFORM_CONTENT_TYPES_CONTAINER")).factory(factory).token();
|
|
32
|
+
export type PLATFORM_CONTENT_TYPES_CONTAINER = typeof PLATFORM_CONTENT_TYPES_CONTAINER;
|
|
@@ -14,8 +14,8 @@ import {PLATFORM_CONTENT_TYPES_CONTAINER} from "./PlatformContentTypesContainer.
|
|
|
14
14
|
*/
|
|
15
15
|
export class PlatformResponseFilter {
|
|
16
16
|
protected additionalProperties = constant<boolean>("additionalProperties");
|
|
17
|
-
protected container = inject
|
|
18
|
-
protected contentTypeResolver = inject
|
|
17
|
+
protected container = inject(PLATFORM_CONTENT_TYPES_CONTAINER);
|
|
18
|
+
protected contentTypeResolver = inject(PLATFORM_CONTENT_TYPE_RESOLVER);
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Transform the data to the right format.
|