@bool-ts/core 2.3.7 → 2.3.8
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/package.json
CHANGED
|
@@ -12,40 +12,53 @@ import {
|
|
|
12
12
|
responseHeadersArgsKey,
|
|
13
13
|
routeModelArgsKey
|
|
14
14
|
} from "../constants/keys";
|
|
15
|
+
import type { IContext } from "../interfaces";
|
|
15
16
|
|
|
16
17
|
export type TArgumentsMetadata<TValidationSchema = unknown> =
|
|
17
18
|
| {
|
|
18
19
|
index: number;
|
|
19
20
|
type: typeof requestHeadersArgsKey;
|
|
20
|
-
validationSchema?:
|
|
21
|
+
validationSchema?:
|
|
22
|
+
| TValidationSchema
|
|
23
|
+
| ((context: IContext) => Promise<TValidationSchema> | TValidationSchema);
|
|
21
24
|
}
|
|
22
25
|
| {
|
|
23
26
|
index: number;
|
|
24
27
|
type: typeof requestHeaderArgsKey;
|
|
25
28
|
key: string;
|
|
26
|
-
validationSchema?:
|
|
29
|
+
validationSchema?:
|
|
30
|
+
| TValidationSchema
|
|
31
|
+
| ((context: IContext) => Promise<TValidationSchema> | TValidationSchema);
|
|
27
32
|
}
|
|
28
33
|
| {
|
|
29
34
|
index: number;
|
|
30
35
|
type: typeof requestBodyArgsKey;
|
|
31
|
-
validationSchema?:
|
|
36
|
+
validationSchema?:
|
|
37
|
+
| TValidationSchema
|
|
38
|
+
| ((context: IContext) => Promise<TValidationSchema> | TValidationSchema);
|
|
32
39
|
parser?: "arrayBuffer" | "blob" | "formData" | "json" | "text";
|
|
33
40
|
}
|
|
34
41
|
| {
|
|
35
42
|
index: number;
|
|
36
43
|
type: typeof paramsArgsKey;
|
|
37
|
-
validationSchema?:
|
|
44
|
+
validationSchema?:
|
|
45
|
+
| TValidationSchema
|
|
46
|
+
| ((context: IContext) => Promise<TValidationSchema> | TValidationSchema);
|
|
38
47
|
}
|
|
39
48
|
| {
|
|
40
49
|
index: number;
|
|
41
50
|
type: typeof paramArgsKey;
|
|
42
51
|
key: string;
|
|
43
|
-
validationSchema?:
|
|
52
|
+
validationSchema?:
|
|
53
|
+
| TValidationSchema
|
|
54
|
+
| ((context: IContext) => Promise<TValidationSchema> | TValidationSchema);
|
|
44
55
|
}
|
|
45
56
|
| {
|
|
46
57
|
index: number;
|
|
47
58
|
type: typeof queryArgsKey;
|
|
48
|
-
validationSchema?:
|
|
59
|
+
validationSchema?:
|
|
60
|
+
| TValidationSchema
|
|
61
|
+
| ((context: IContext) => Promise<TValidationSchema> | TValidationSchema);
|
|
49
62
|
}
|
|
50
63
|
| {
|
|
51
64
|
index: number;
|
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
} from "../decorators";
|
|
11
11
|
import type { THttpMethods } from "../http";
|
|
12
12
|
import type {
|
|
13
|
+
IContext,
|
|
13
14
|
IController,
|
|
14
15
|
ICustomValidator,
|
|
15
16
|
IGuard,
|
|
@@ -75,7 +76,7 @@ import {
|
|
|
75
76
|
HttpServerError,
|
|
76
77
|
jsonErrorInfer
|
|
77
78
|
} from "../http";
|
|
78
|
-
import { ansiText, inferStatusText, isWebSocketUpgrade } from "../utils";
|
|
79
|
+
import { ansiText, hasCallSignature, inferStatusText, isWebSocketUpgrade } from "../utils";
|
|
79
80
|
import { Context } from "./context";
|
|
80
81
|
import { HttpRouter } from "./httpRouter";
|
|
81
82
|
import { HttpRouterGroup } from "./httpRouterGroup";
|
|
@@ -1659,24 +1660,37 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
1659
1660
|
* @returns
|
|
1660
1661
|
*/
|
|
1661
1662
|
async #argumentsResolver<TValidationSchema = unknown>({
|
|
1663
|
+
context,
|
|
1662
1664
|
data,
|
|
1663
1665
|
validationSchema,
|
|
1664
1666
|
argumentIndex,
|
|
1665
1667
|
funcName
|
|
1666
1668
|
}: {
|
|
1669
|
+
context: IContext;
|
|
1667
1670
|
data: unknown;
|
|
1668
|
-
validationSchema:
|
|
1671
|
+
validationSchema:
|
|
1672
|
+
| TValidationSchema
|
|
1673
|
+
| ((context: IContext) => TValidationSchema | Promise<TValidationSchema>);
|
|
1669
1674
|
argumentIndex: number;
|
|
1670
1675
|
funcName: string | symbol;
|
|
1671
1676
|
}) {
|
|
1672
|
-
if (
|
|
1677
|
+
if (
|
|
1678
|
+
!this.#customValidator ||
|
|
1679
|
+
!validationSchema ||
|
|
1680
|
+
Object.getOwnPropertyDescriptor(validationSchema, "prototype")
|
|
1681
|
+
) {
|
|
1673
1682
|
return data;
|
|
1674
1683
|
}
|
|
1675
1684
|
|
|
1676
1685
|
try {
|
|
1686
|
+
const inferValidationSchema =
|
|
1687
|
+
typeof validationSchema === "function" && hasCallSignature(validationSchema)
|
|
1688
|
+
? await validationSchema(context)
|
|
1689
|
+
: validationSchema;
|
|
1690
|
+
|
|
1677
1691
|
const validation = await this.#customValidator.validate(
|
|
1678
1692
|
data,
|
|
1679
|
-
|
|
1693
|
+
inferValidationSchema,
|
|
1680
1694
|
argumentIndex,
|
|
1681
1695
|
funcName
|
|
1682
1696
|
);
|
|
@@ -1913,6 +1927,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
1913
1927
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
1914
1928
|
? await request?.[argMetadata.parser || "json"]()
|
|
1915
1929
|
: await this.#argumentsResolver({
|
|
1930
|
+
context: context,
|
|
1916
1931
|
data: await request?.[argMetadata.parser || "json"](),
|
|
1917
1932
|
validationSchema: argMetadata.validationSchema,
|
|
1918
1933
|
argumentIndex: argMetadata.index,
|
|
@@ -1923,6 +1938,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
1923
1938
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
1924
1939
|
? requestHeaders
|
|
1925
1940
|
: await this.#argumentsResolver({
|
|
1941
|
+
context: context,
|
|
1926
1942
|
data: requestHeaders?.toJSON(),
|
|
1927
1943
|
validationSchema: argMetadata.validationSchema,
|
|
1928
1944
|
argumentIndex: argMetadata.index,
|
|
@@ -1933,6 +1949,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
1933
1949
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
1934
1950
|
? requestHeaders?.get(argMetadata.key) || undefined
|
|
1935
1951
|
: await this.#argumentsResolver({
|
|
1952
|
+
context: context,
|
|
1936
1953
|
data: requestHeaders?.get(argMetadata.key) || undefined,
|
|
1937
1954
|
validationSchema: argMetadata.validationSchema,
|
|
1938
1955
|
argumentIndex: argMetadata.index,
|
|
@@ -1943,6 +1960,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
1943
1960
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
1944
1961
|
? parameters?.[argMetadata.key] || undefined
|
|
1945
1962
|
: await this.#argumentsResolver({
|
|
1963
|
+
context: context,
|
|
1946
1964
|
data: parameters?.[argMetadata.key] || undefined,
|
|
1947
1965
|
validationSchema: argMetadata.validationSchema,
|
|
1948
1966
|
argumentIndex: argMetadata.index,
|
|
@@ -1962,6 +1980,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
1962
1980
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
1963
1981
|
? context.get(argMetadata.type, contextOptions)
|
|
1964
1982
|
: await this.#argumentsResolver({
|
|
1983
|
+
context: context,
|
|
1965
1984
|
data: context.get(argMetadata.type, contextOptions),
|
|
1966
1985
|
validationSchema: argMetadata.validationSchema,
|
|
1967
1986
|
argumentIndex: argMetadata.index,
|
|
@@ -1991,6 +2010,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
1991
2010
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
1992
2011
|
? await request?.[argMetadata.parser || "json"]()
|
|
1993
2012
|
: await this.#argumentsResolver({
|
|
2013
|
+
context: context,
|
|
1994
2014
|
data: await request?.[argMetadata.parser || "json"](),
|
|
1995
2015
|
validationSchema: argMetadata.validationSchema,
|
|
1996
2016
|
argumentIndex: argMetadata.index,
|
|
@@ -2006,6 +2026,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2006
2026
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
2007
2027
|
? requestHeaders
|
|
2008
2028
|
: await this.#argumentsResolver({
|
|
2029
|
+
context: context,
|
|
2009
2030
|
data: requestHeaders?.toJSON(),
|
|
2010
2031
|
validationSchema: argMetadata.validationSchema,
|
|
2011
2032
|
argumentIndex: argMetadata.index,
|
|
@@ -2019,6 +2040,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2019
2040
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
2020
2041
|
? requestHeaders?.get(argMetadata.key) || undefined
|
|
2021
2042
|
: await this.#argumentsResolver({
|
|
2043
|
+
context: context,
|
|
2022
2044
|
data: requestHeaders?.get(argMetadata.key) || undefined,
|
|
2023
2045
|
validationSchema: argMetadata.validationSchema,
|
|
2024
2046
|
argumentIndex: argMetadata.index,
|
|
@@ -2029,6 +2051,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2029
2051
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
2030
2052
|
? parameters?.[argMetadata.key] || undefined
|
|
2031
2053
|
: await this.#argumentsResolver({
|
|
2054
|
+
context: context,
|
|
2032
2055
|
data: parameters?.[argMetadata.key],
|
|
2033
2056
|
validationSchema: argMetadata.validationSchema,
|
|
2034
2057
|
argumentIndex: argMetadata.index,
|
|
@@ -2045,6 +2068,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2045
2068
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
2046
2069
|
? context.get(argMetadata.type)
|
|
2047
2070
|
: await this.#argumentsResolver({
|
|
2071
|
+
context: context,
|
|
2048
2072
|
data: context.get(argMetadata.type),
|
|
2049
2073
|
validationSchema: argMetadata.validationSchema,
|
|
2050
2074
|
argumentIndex: argMetadata.index,
|
|
@@ -2089,6 +2113,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2089
2113
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
2090
2114
|
? await request?.[argMetadata.parser || "json"]()
|
|
2091
2115
|
: await this.#argumentsResolver({
|
|
2116
|
+
context: context,
|
|
2092
2117
|
data: await request?.[argMetadata.parser || "json"](),
|
|
2093
2118
|
validationSchema: argMetadata.validationSchema,
|
|
2094
2119
|
argumentIndex: argMetadata.index,
|
|
@@ -2104,6 +2129,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2104
2129
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
2105
2130
|
? requestHeaders
|
|
2106
2131
|
: await this.#argumentsResolver({
|
|
2132
|
+
context: context,
|
|
2107
2133
|
data: requestHeaders?.toJSON(),
|
|
2108
2134
|
validationSchema: argMetadata.validationSchema,
|
|
2109
2135
|
argumentIndex: argMetadata.index,
|
|
@@ -2114,6 +2140,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2114
2140
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
2115
2141
|
? requestHeaders?.get(argMetadata.key) || undefined
|
|
2116
2142
|
: await this.#argumentsResolver({
|
|
2143
|
+
context: context,
|
|
2117
2144
|
data: requestHeaders?.get(argMetadata.key) || undefined,
|
|
2118
2145
|
validationSchema: argMetadata.validationSchema,
|
|
2119
2146
|
argumentIndex: argMetadata.index,
|
|
@@ -2127,6 +2154,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2127
2154
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
2128
2155
|
? parameters?.[argMetadata.key] || undefined
|
|
2129
2156
|
: await this.#argumentsResolver({
|
|
2157
|
+
context: context,
|
|
2130
2158
|
data: parameters?.[argMetadata.key] || undefined,
|
|
2131
2159
|
validationSchema: argMetadata.validationSchema,
|
|
2132
2160
|
argumentIndex: argMetadata.index,
|
|
@@ -2143,6 +2171,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2143
2171
|
args[argMetadata.index] = !argMetadata.validationSchema
|
|
2144
2172
|
? context.get(argMetadata.type)
|
|
2145
2173
|
: await this.#argumentsResolver({
|
|
2174
|
+
context: context,
|
|
2146
2175
|
data: context.get(argMetadata.type),
|
|
2147
2176
|
validationSchema: argMetadata.validationSchema,
|
|
2148
2177
|
argumentIndex: argMetadata.index,
|
|
@@ -2180,6 +2209,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2180
2209
|
controllerActionArguments[argMetadata.index] = !argMetadata.validationSchema
|
|
2181
2210
|
? await request?.[argMetadata.parser || "json"]()
|
|
2182
2211
|
: await this.#argumentsResolver({
|
|
2212
|
+
context: context,
|
|
2183
2213
|
data: await request?.[argMetadata.parser || "json"](),
|
|
2184
2214
|
validationSchema: argMetadata.validationSchema,
|
|
2185
2215
|
argumentIndex: argMetadata.index,
|
|
@@ -2195,6 +2225,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2195
2225
|
controllerActionArguments[argMetadata.index] = !argMetadata.validationSchema
|
|
2196
2226
|
? requestHeaders
|
|
2197
2227
|
: await this.#argumentsResolver({
|
|
2228
|
+
context: context,
|
|
2198
2229
|
data: requestHeaders?.toJSON(),
|
|
2199
2230
|
validationSchema: argMetadata.validationSchema,
|
|
2200
2231
|
argumentIndex: argMetadata.index,
|
|
@@ -2205,6 +2236,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2205
2236
|
controllerActionArguments[argMetadata.index] = !argMetadata.validationSchema
|
|
2206
2237
|
? requestHeaders?.get(argMetadata.key) || undefined
|
|
2207
2238
|
: await this.#argumentsResolver({
|
|
2239
|
+
context: context,
|
|
2208
2240
|
data: requestHeaders?.get(argMetadata.key) || undefined,
|
|
2209
2241
|
validationSchema: argMetadata.validationSchema,
|
|
2210
2242
|
argumentIndex: argMetadata.index,
|
|
@@ -2218,6 +2250,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2218
2250
|
controllerActionArguments[argMetadata.index] = !argMetadata.validationSchema
|
|
2219
2251
|
? parameters?.[argMetadata.key] || undefined
|
|
2220
2252
|
: await this.#argumentsResolver({
|
|
2253
|
+
context: context,
|
|
2221
2254
|
data: parameters?.[argMetadata.key] || undefined,
|
|
2222
2255
|
validationSchema: argMetadata.validationSchema,
|
|
2223
2256
|
argumentIndex: argMetadata.index,
|
|
@@ -2234,6 +2267,7 @@ export class Application<TRootClass extends Object = Object> {
|
|
|
2234
2267
|
controllerActionArguments[argMetadata.index] = !argMetadata.validationSchema
|
|
2235
2268
|
? context.get(argMetadata.type)
|
|
2236
2269
|
: await this.#argumentsResolver({
|
|
2270
|
+
context: context,
|
|
2237
2271
|
data: context.get(argMetadata.type),
|
|
2238
2272
|
validationSchema: argMetadata.validationSchema,
|
|
2239
2273
|
argumentIndex: argMetadata.index,
|
package/src/utils/functions.ts
CHANGED
|
@@ -11,3 +11,15 @@ export const inferStatusText = (httpCode: number): string => {
|
|
|
11
11
|
|
|
12
12
|
return "Unknown error";
|
|
13
13
|
};
|
|
14
|
+
|
|
15
|
+
type TCallable = <T>(...args: T[]) => unknown;
|
|
16
|
+
|
|
17
|
+
export const hasCallSignature = (value: any): value is TCallable => {
|
|
18
|
+
return (
|
|
19
|
+
typeof value === "function" &&
|
|
20
|
+
!(
|
|
21
|
+
value.prototype &&
|
|
22
|
+
Object.getOwnPropertyDescriptor(value, "prototype")?.writable === false
|
|
23
|
+
)
|
|
24
|
+
);
|
|
25
|
+
};
|