@tstdl/base 0.71.88 → 0.78.0-beta2

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.
Files changed (349) hide show
  1. package/.eslintrc.js +2 -4
  2. package/api/client/client.js +2 -12
  3. package/api/client/client.js.map +1 -1
  4. package/api/default-error-handlers.d.ts +0 -4
  5. package/api/default-error-handlers.js +1 -6
  6. package/api/default-error-handlers.js.map +1 -1
  7. package/api/server/gateway.js +12 -18
  8. package/api/server/gateway.js.map +1 -1
  9. package/api/server/module.d.ts +0 -4
  10. package/api/server/module.js +1 -12
  11. package/api/server/module.js.map +1 -1
  12. package/api/types.d.ts +8 -32
  13. package/api/types.js.map +1 -1
  14. package/container/container.js +2 -2
  15. package/container/container.js.map +1 -1
  16. package/data-structures/index.d.ts +1 -0
  17. package/data-structures/index.js +1 -0
  18. package/data-structures/index.js.map +1 -1
  19. package/data-structures/iterable-weak-map.d.ts +29 -0
  20. package/data-structures/iterable-weak-map.js +128 -0
  21. package/data-structures/iterable-weak-map.js.map +1 -0
  22. package/data-structures/multi-key-map.d.ts +12 -1
  23. package/data-structures/multi-key-map.js +22 -11
  24. package/data-structures/multi-key-map.js.map +1 -1
  25. package/error/custom.error.d.ts +3 -1
  26. package/error/custom.error.js +16 -7
  27. package/error/custom.error.js.map +1 -1
  28. package/examples/api/basic-overview.js +16 -8
  29. package/examples/api/basic-overview.js.map +1 -1
  30. package/image-service/image-service.d.ts +32 -65
  31. package/image-service/image-service.js +73 -15
  32. package/image-service/image-service.js.map +1 -1
  33. package/json-path/json-path.d.ts +8 -3
  34. package/json-path/json-path.js +24 -7
  35. package/json-path/json-path.js.map +1 -1
  36. package/module/modules/index.d.ts +0 -1
  37. package/module/modules/index.js +0 -1
  38. package/module/modules/index.js.map +1 -1
  39. package/openid-connect/oidc-configuration.service.js +7 -7
  40. package/openid-connect/oidc-configuration.service.js.map +1 -1
  41. package/openid-connect/oidc.service.js +7 -7
  42. package/openid-connect/oidc.service.js.map +1 -1
  43. package/package.json +3 -4
  44. package/process-shutdown.js +3 -2
  45. package/process-shutdown.js.map +1 -1
  46. package/reflection/decorators.js +1 -0
  47. package/reflection/decorators.js.map +1 -1
  48. package/reflection/reflection-data-map.d.ts +10 -0
  49. package/reflection/reflection-data-map.js +40 -0
  50. package/reflection/reflection-data-map.js.map +1 -0
  51. package/reflection/registry.d.ts +7 -7
  52. package/reflection/registry.js +7 -6
  53. package/reflection/registry.js.map +1 -1
  54. package/reflection/types.d.ts +1 -0
  55. package/reflection/utils.d.ts +6 -3
  56. package/reflection/utils.js +9 -35
  57. package/reflection/utils.js.map +1 -1
  58. package/schema/array-constraints/index.d.ts +2 -0
  59. package/{old-api/validation/validators → schema/array-constraints}/index.js +2 -1
  60. package/schema/array-constraints/index.js.map +1 -0
  61. package/schema/array-constraints/maximum-length.d.ts +11 -0
  62. package/schema/array-constraints/maximum-length.js +26 -0
  63. package/schema/array-constraints/maximum-length.js.map +1 -0
  64. package/schema/array-constraints/minimum-length.d.ts +11 -0
  65. package/schema/array-constraints/minimum-length.js +26 -0
  66. package/schema/array-constraints/minimum-length.js.map +1 -0
  67. package/schema/coercers/boolean.coercer.d.ts +9 -0
  68. package/schema/coercers/boolean.coercer.js +35 -0
  69. package/schema/coercers/boolean.coercer.js.map +1 -0
  70. package/schema/coercers/date.coercer.d.ts +9 -0
  71. package/schema/coercers/date.coercer.js +24 -0
  72. package/schema/coercers/date.coercer.js.map +1 -0
  73. package/schema/coercers/default-value.coercer.d.ts +9 -0
  74. package/schema/coercers/default-value.coercer.js +16 -0
  75. package/schema/coercers/default-value.coercer.js.map +1 -0
  76. package/schema/coercers/index.d.ts +7 -0
  77. package/schema/coercers/index.js +24 -0
  78. package/schema/coercers/index.js.map +1 -0
  79. package/schema/coercers/number.coercer.d.ts +9 -0
  80. package/schema/coercers/number.coercer.js +22 -0
  81. package/schema/coercers/number.coercer.js.map +1 -0
  82. package/schema/coercers/regexp.coercer.d.ts +11 -0
  83. package/schema/coercers/regexp.coercer.js +24 -0
  84. package/schema/coercers/regexp.coercer.js.map +1 -0
  85. package/schema/coercers/string.coercer.d.ts +9 -0
  86. package/schema/coercers/string.coercer.js +22 -0
  87. package/schema/coercers/string.coercer.js.map +1 -0
  88. package/schema/coercers/uint8-array.coercer.d.ts +9 -0
  89. package/schema/coercers/uint8-array.coercer.js +31 -0
  90. package/schema/coercers/uint8-array.coercer.js.map +1 -0
  91. package/schema/constraints/enumeration.d.ts +13 -0
  92. package/schema/constraints/enumeration.js +29 -0
  93. package/schema/constraints/enumeration.js.map +1 -0
  94. package/schema/constraints/generic.d.ts +22 -0
  95. package/schema/constraints/generic.js +32 -0
  96. package/schema/constraints/generic.js.map +1 -0
  97. package/schema/constraints/index.d.ts +12 -0
  98. package/schema/constraints/index.js +29 -0
  99. package/schema/constraints/index.js.map +1 -0
  100. package/schema/constraints/integer.d.ts +12 -0
  101. package/schema/constraints/integer.js +27 -0
  102. package/schema/constraints/integer.js.map +1 -0
  103. package/schema/constraints/length.d.ts +6 -0
  104. package/schema/constraints/length.js +20 -0
  105. package/schema/constraints/length.js.map +1 -0
  106. package/schema/constraints/literal.d.ts +10 -0
  107. package/schema/constraints/literal.js +26 -0
  108. package/schema/constraints/literal.js.map +1 -0
  109. package/schema/constraints/maximum-date.d.ts +12 -0
  110. package/schema/constraints/maximum-date.js +29 -0
  111. package/schema/constraints/maximum-date.js.map +1 -0
  112. package/schema/constraints/maximum-length.d.ts +12 -0
  113. package/schema/constraints/maximum-length.js +29 -0
  114. package/schema/constraints/maximum-length.js.map +1 -0
  115. package/schema/constraints/maximum.d.ts +12 -0
  116. package/schema/constraints/maximum.js +27 -0
  117. package/schema/constraints/maximum.js.map +1 -0
  118. package/schema/constraints/minimum-date.d.ts +12 -0
  119. package/schema/constraints/minimum-date.js +29 -0
  120. package/schema/constraints/minimum-date.js.map +1 -0
  121. package/schema/constraints/minimum-length.d.ts +12 -0
  122. package/schema/constraints/minimum-length.js +29 -0
  123. package/schema/constraints/minimum-length.js.map +1 -0
  124. package/schema/constraints/minimum.d.ts +12 -0
  125. package/schema/constraints/minimum.js +27 -0
  126. package/schema/constraints/minimum.js.map +1 -0
  127. package/schema/constraints/pattern.d.ts +13 -0
  128. package/schema/constraints/pattern.js +28 -0
  129. package/schema/constraints/pattern.js.map +1 -0
  130. package/schema/decorators/array.d.ts +4 -0
  131. package/schema/decorators/array.js +11 -0
  132. package/schema/decorators/array.js.map +1 -0
  133. package/schema/decorators/coerce.d.ts +2 -0
  134. package/schema/decorators/coerce.js +10 -0
  135. package/schema/decorators/coerce.js.map +1 -0
  136. package/schema/decorators/defaulted.d.ts +3 -0
  137. package/schema/decorators/defaulted.js +11 -0
  138. package/schema/decorators/defaulted.js.map +1 -0
  139. package/schema/decorators/index.d.ts +8 -0
  140. package/{old-api → schema/decorators}/index.js +8 -3
  141. package/schema/decorators/index.js.map +1 -0
  142. package/schema/decorators/nullable.d.ts +2 -0
  143. package/schema/decorators/nullable.js +10 -0
  144. package/schema/decorators/nullable.js.map +1 -0
  145. package/schema/decorators/optional.d.ts +2 -0
  146. package/schema/decorators/optional.js +10 -0
  147. package/schema/decorators/optional.js.map +1 -0
  148. package/schema/decorators/property.d.ts +6 -0
  149. package/schema/decorators/property.js +19 -0
  150. package/schema/decorators/property.js.map +1 -0
  151. package/schema/decorators/type.d.ts +3 -0
  152. package/schema/decorators/type.js +10 -0
  153. package/schema/decorators/type.js.map +1 -0
  154. package/schema/decorators/types.d.ts +18 -0
  155. package/schema/decorators/types.js +3 -0
  156. package/schema/decorators/types.js.map +1 -0
  157. package/schema/decorators/utils.d.ts +10 -0
  158. package/schema/decorators/utils.js +59 -0
  159. package/schema/decorators/utils.js.map +1 -0
  160. package/schema/index.d.ts +7 -1
  161. package/schema/index.js +7 -1
  162. package/schema/index.js.map +1 -1
  163. package/schema/schema.d.ts +19 -0
  164. package/schema/schema.error.d.ts +13 -7
  165. package/schema/schema.error.js +45 -13
  166. package/schema/schema.error.js.map +1 -1
  167. package/schema/schema.js +286 -0
  168. package/schema/schema.js.map +1 -0
  169. package/schema/schemas/any.d.ts +4 -8
  170. package/schema/schemas/any.js +9 -14
  171. package/schema/schemas/any.js.map +1 -1
  172. package/schema/schemas/array.d.ts +7 -13
  173. package/schema/schemas/array.js +14 -43
  174. package/schema/schemas/array.js.map +1 -1
  175. package/schema/schemas/assign.d.ts +8 -0
  176. package/schema/schemas/assign.js +28 -0
  177. package/schema/schemas/assign.js.map +1 -0
  178. package/schema/schemas/boolean.d.ts +5 -9
  179. package/schema/schemas/boolean.js +11 -38
  180. package/schema/schemas/boolean.js.map +1 -1
  181. package/schema/schemas/constraint.d.ts +4 -0
  182. package/schema/schemas/constraint.js +14 -0
  183. package/schema/schemas/constraint.js.map +1 -0
  184. package/schema/schemas/date.d.ts +7 -11
  185. package/schema/schemas/date.js +18 -53
  186. package/schema/schemas/date.js.map +1 -1
  187. package/schema/schemas/defaulted.d.ts +2 -15
  188. package/schema/schemas/defaulted.js +7 -23
  189. package/schema/schemas/defaulted.js.map +1 -1
  190. package/schema/schemas/enumeration.d.ts +6 -18
  191. package/schema/schemas/enumeration.js +13 -50
  192. package/schema/schemas/enumeration.js.map +1 -1
  193. package/schema/schemas/exclude.d.ts +4 -0
  194. package/schema/schemas/exclude.js +17 -0
  195. package/schema/schemas/exclude.js.map +1 -0
  196. package/schema/schemas/index.d.ts +5 -6
  197. package/schema/schemas/index.js +5 -6
  198. package/schema/schemas/index.js.map +1 -1
  199. package/schema/schemas/instance.d.ts +2 -12
  200. package/schema/schemas/instance.js +4 -20
  201. package/schema/schemas/instance.js.map +1 -1
  202. package/schema/schemas/literal.d.ts +4 -11
  203. package/schema/schemas/literal.js +13 -18
  204. package/schema/schemas/literal.js.map +1 -1
  205. package/schema/schemas/nullable.d.ts +3 -13
  206. package/schema/schemas/nullable.js +3 -26
  207. package/schema/schemas/nullable.js.map +1 -1
  208. package/schema/schemas/number.d.ts +7 -14
  209. package/schema/schemas/number.js +23 -44
  210. package/schema/schemas/number.js.map +1 -1
  211. package/schema/schemas/object.d.ts +6 -34
  212. package/schema/schemas/object.js +8 -112
  213. package/schema/schemas/object.js.map +1 -1
  214. package/schema/schemas/optional.d.ts +3 -13
  215. package/schema/schemas/optional.js +3 -26
  216. package/schema/schemas/optional.js.map +1 -1
  217. package/schema/schemas/pick.d.ts +4 -0
  218. package/schema/schemas/pick.js +17 -0
  219. package/schema/schemas/pick.js.map +1 -0
  220. package/schema/schemas/readable-stream.d.ts +4 -9
  221. package/schema/schemas/readable-stream.js +9 -15
  222. package/schema/schemas/readable-stream.js.map +1 -1
  223. package/schema/schemas/record.d.ts +4 -0
  224. package/schema/schemas/record.js +14 -0
  225. package/schema/schemas/record.js.map +1 -0
  226. package/schema/schemas/regexp.d.ts +6 -9
  227. package/schema/schemas/regexp.js +10 -27
  228. package/schema/schemas/regexp.js.map +1 -1
  229. package/schema/schemas/string.d.ts +9 -13
  230. package/schema/schemas/string.js +34 -46
  231. package/schema/schemas/string.js.map +1 -1
  232. package/schema/schemas/transform.d.ts +4 -16
  233. package/schema/schemas/transform.js +7 -36
  234. package/schema/schemas/transform.js.map +1 -1
  235. package/schema/schemas/uint8-array.d.ts +8 -11
  236. package/schema/schemas/uint8-array.js +20 -32
  237. package/schema/schemas/uint8-array.js.map +1 -1
  238. package/schema/schemas/union.d.ts +5 -17
  239. package/schema/schemas/union.js +9 -35
  240. package/schema/schemas/union.js.map +1 -1
  241. package/schema/schemas/unknown.d.ts +4 -8
  242. package/schema/schemas/unknown.js +9 -14
  243. package/schema/schemas/unknown.js.map +1 -1
  244. package/schema/transformers/generic.d.ts +13 -0
  245. package/schema/transformers/generic.js +28 -0
  246. package/schema/transformers/generic.js.map +1 -0
  247. package/schema/transformers/index.d.ts +3 -0
  248. package/{old-api/endpoints → schema/transformers}/index.js +3 -1
  249. package/schema/transformers/index.js.map +1 -0
  250. package/schema/transformers/lowercase.d.ts +9 -0
  251. package/schema/transformers/lowercase.js +22 -0
  252. package/schema/transformers/lowercase.js.map +1 -0
  253. package/schema/transformers/trim.d.ts +9 -0
  254. package/schema/transformers/trim.js +22 -0
  255. package/schema/transformers/trim.js.map +1 -0
  256. package/schema/transformers/uppercase.d.ts +9 -0
  257. package/schema/transformers/uppercase.js +22 -0
  258. package/schema/transformers/uppercase.js.map +1 -0
  259. package/schema/types.d.ts +135 -15
  260. package/schema/types.js +39 -3
  261. package/schema/types.js.map +1 -1
  262. package/schema/utils/index.d.ts +2 -0
  263. package/{old-api/validation → schema/utils}/index.js +2 -1
  264. package/schema/utils/index.js.map +1 -0
  265. package/schema/utils/schema.d.ts +12 -0
  266. package/schema/utils/schema.js +78 -0
  267. package/schema/utils/schema.js.map +1 -0
  268. package/schema/utils/value-type.d.ts +4 -0
  269. package/schema/utils/value-type.js +35 -0
  270. package/schema/utils/value-type.js.map +1 -0
  271. package/templates/providers/file-template.provider.base.d.ts +1 -1
  272. package/templates/providers/file-template.provider.base.js +3 -2
  273. package/templates/providers/file-template.provider.base.js.map +1 -1
  274. package/types.d.ts +6 -3
  275. package/utils/enum.d.ts +1 -1
  276. package/utils/function/memoize.d.ts +6 -2
  277. package/utils/function/memoize.js +28 -20
  278. package/utils/function/memoize.js.map +1 -1
  279. package/utils/index.d.ts +1 -0
  280. package/utils/index.js +1 -0
  281. package/utils/index.js.map +1 -1
  282. package/utils/merge.d.ts +5 -0
  283. package/utils/merge.js +32 -0
  284. package/utils/merge.js.map +1 -0
  285. package/utils/object/dereference.js.map +1 -1
  286. package/utils/object/object.d.ts +4 -0
  287. package/utils/object/object.js +9 -2
  288. package/utils/object/object.js.map +1 -1
  289. package/utils/patterns.d.ts +1 -1
  290. package/utils/patterns.js +3 -3
  291. package/utils/patterns.js.map +1 -1
  292. package/utils/timing.d.ts +0 -8
  293. package/utils/timing.js.map +1 -1
  294. package/utils/type-guards.d.ts +6 -0
  295. package/utils/type-guards.js +16 -4
  296. package/utils/type-guards.js.map +1 -1
  297. package/instance-provider.d.ts +0 -17
  298. package/instance-provider.js +0 -55
  299. package/instance-provider.js.map +0 -1
  300. package/module/modules/old-web-server.module.d.ts +0 -22
  301. package/module/modules/old-web-server.module.js +0 -37
  302. package/module/modules/old-web-server.module.js.map +0 -1
  303. package/old-api/endpoint.d.ts +0 -5
  304. package/old-api/endpoint.js +0 -20
  305. package/old-api/endpoint.js.map +0 -1
  306. package/old-api/endpoints/echo.endpoint.d.ts +0 -2
  307. package/old-api/endpoints/echo.endpoint.js +0 -6
  308. package/old-api/endpoints/echo.endpoint.js.map +0 -1
  309. package/old-api/endpoints/index.d.ts +0 -1
  310. package/old-api/endpoints/index.js.map +0 -1
  311. package/old-api/http-api.d.ts +0 -63
  312. package/old-api/http-api.js +0 -269
  313. package/old-api/http-api.js.map +0 -1
  314. package/old-api/index.d.ts +0 -3
  315. package/old-api/index.js.map +0 -1
  316. package/old-api/validation/index.d.ts +0 -1
  317. package/old-api/validation/index.js.map +0 -1
  318. package/old-api/validation/types.d.ts +0 -6
  319. package/old-api/validation/types.js +0 -6
  320. package/old-api/validation/types.js.map +0 -1
  321. package/old-api/validation/validators/index.d.ts +0 -1
  322. package/old-api/validation/validators/index.js.map +0 -1
  323. package/old-api/validation/validators/noop.d.ts +0 -2
  324. package/old-api/validation/validators/noop.js +0 -8
  325. package/old-api/validation/validators/noop.js.map +0 -1
  326. package/old-api/validation/validators/superstruct.d.ts +0 -14
  327. package/old-api/validation/validators/superstruct.js +0 -66
  328. package/old-api/validation/validators/superstruct.js.map +0 -1
  329. package/old-api/validation/validators/yup.d.ts +0 -7
  330. package/old-api/validation/validators/yup.js +0 -60
  331. package/old-api/validation/validators/yup.js.map +0 -1
  332. package/schema/schema.validator.d.ts +0 -40
  333. package/schema/schema.validator.js +0 -75
  334. package/schema/schema.validator.js.map +0 -1
  335. package/schema/schemas/async-iterable.d.ts +0 -13
  336. package/schema/schemas/async-iterable.js +0 -40
  337. package/schema/schemas/async-iterable.js.map +0 -1
  338. package/schema/schemas/iterable.d.ts +0 -13
  339. package/schema/schemas/iterable.js +0 -40
  340. package/schema/schemas/iterable.js.map +0 -1
  341. package/schema/schemas/never.d.ts +0 -9
  342. package/schema/schemas/never.js +0 -22
  343. package/schema/schemas/never.js.map +0 -1
  344. package/schema/schemas/preprocess.d.ts +0 -16
  345. package/schema/schemas/preprocess.js +0 -35
  346. package/schema/schemas/preprocess.js.map +0 -1
  347. package/schema/schemas/refine.d.ts +0 -24
  348. package/schema/schemas/refine.js +0 -52
  349. package/schema/schemas/refine.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ import type { Decorator } from "../../reflection";
2
+ import type { OneOrMany, TypedOmit } from "../../types";
3
+ import type { TransformResult, ValueType } from '../types';
4
+ import { SchemaValueTransformer } from '../types';
5
+ export declare type GenericTransformFunction<T> = (value: T) => TypedOmit<TransformResult, 'success'>;
6
+ export declare class GenericTransformer<T> extends SchemaValueTransformer {
7
+ readonly sourceType: OneOrMany<ValueType>;
8
+ readonly targetType: ValueType;
9
+ readonly transformFunction: GenericTransformFunction<T>;
10
+ constructor(sourceType: OneOrMany<ValueType>, targetType: ValueType, transformFunction: GenericTransformFunction<T>);
11
+ transform(value: T): TransformResult;
12
+ }
13
+ export declare function Transform<T>(sourceType: OneOrMany<ValueType>, targetType: ValueType, transformFunction: GenericTransformFunction<T>): Decorator<'property' | 'accessor'>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Transform = exports.GenericTransformer = void 0;
5
+ const type_guards_1 = require("../../utils/type-guards");
6
+ const decorators_1 = require("../decorators");
7
+ const types_1 = require("../types");
8
+ class GenericTransformer extends types_1.SchemaValueTransformer {
9
+ constructor(sourceType, targetType, transformFunction) {
10
+ super();
11
+ this.sourceType = sourceType;
12
+ this.targetType = targetType;
13
+ this.transformFunction = transformFunction;
14
+ }
15
+ transform(value) {
16
+ const result = this.transformFunction(value);
17
+ if ((0, type_guards_1.isDefined)(result.error)) {
18
+ return { success: false, error: result.error };
19
+ }
20
+ return { success: true, value: result.value };
21
+ }
22
+ }
23
+ exports.GenericTransformer = GenericTransformer;
24
+ function Transform(sourceType, targetType, transformFunction) {
25
+ return (0, decorators_1.createSchemaValueTransformerDecorator)(new GenericTransformer(sourceType, targetType, transformFunction));
26
+ }
27
+ exports.Transform = Transform;
28
+ //# sourceMappingURL=generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../source/schema/transformers/generic.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAIzD,yDAAgD;AAChD,8CAAsE;AAEtE,oCAAkD;AAIlD,MAAa,kBAAsB,SAAQ,8BAAsB;IAK/D,YAAY,UAAgC,EAAE,UAAqB,EAAE,iBAA8C;QACjH,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,SAAS,CAAC,KAAQ;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,IAAA,uBAAS,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;SAChD;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;CACF;AAtBD,gDAsBC;AAED,SAAgB,SAAS,CAAI,UAAgC,EAAE,UAAqB,EAAE,iBAA8C;IAClI,OAAO,IAAA,kDAAqC,EAAC,IAAI,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAClH,CAAC;AAFD,8BAEC"}
@@ -0,0 +1,3 @@
1
+ export * from './lowercase';
2
+ export * from './trim';
3
+ export * from './uppercase';
@@ -14,5 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./echo.endpoint"), exports);
17
+ __exportStar(require("./lowercase"), exports);
18
+ __exportStar(require("./trim"), exports);
19
+ __exportStar(require("./uppercase"), exports);
18
20
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/schema/transformers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,yCAAuB;AACvB,8CAA4B"}
@@ -0,0 +1,9 @@
1
+ import type { Decorator } from "../../reflection";
2
+ import type { TransformResult } from '../types';
3
+ import { SchemaValueTransformer } from '../types';
4
+ export declare class LowercaseTransformer extends SchemaValueTransformer {
5
+ readonly sourceType: StringConstructor;
6
+ readonly targetType: StringConstructor;
7
+ transform(value: string): TransformResult;
8
+ }
9
+ export declare function Lowercase(): Decorator<'property' | 'accessor'>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Lowercase = exports.LowercaseTransformer = void 0;
5
+ const decorators_1 = require("../decorators");
6
+ const types_1 = require("../types");
7
+ class LowercaseTransformer extends types_1.SchemaValueTransformer {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.sourceType = String;
11
+ this.targetType = String;
12
+ }
13
+ transform(value) {
14
+ return { success: true, value: value.toLowerCase() };
15
+ }
16
+ }
17
+ exports.LowercaseTransformer = LowercaseTransformer;
18
+ function Lowercase() {
19
+ return (0, decorators_1.createSchemaValueTransformerDecorator)(new LowercaseTransformer(), { type: String });
20
+ }
21
+ exports.Lowercase = Lowercase;
22
+ //# sourceMappingURL=lowercase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lowercase.js","sourceRoot":"","sources":["../../../source/schema/transformers/lowercase.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAAsE;AAEtE,oCAAkD;AAElD,MAAa,oBAAqB,SAAQ,8BAAsB;IAAhE;;QACW,eAAU,GAAG,MAAM,CAAC;QACpB,eAAU,GAAG,MAAM,CAAC;IAK/B,CAAC;IAHC,SAAS,CAAC,KAAa;QACrB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;IACvD,CAAC;CACF;AAPD,oDAOC;AAED,SAAgB,SAAS;IACvB,OAAO,IAAA,kDAAqC,EAAC,IAAI,oBAAoB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7F,CAAC;AAFD,8BAEC"}
@@ -0,0 +1,9 @@
1
+ import type { Decorator } from "../../reflection";
2
+ import type { TransformResult } from '../types';
3
+ import { SchemaValueTransformer } from '../types';
4
+ export declare class TrimTransformer extends SchemaValueTransformer {
5
+ readonly sourceType: StringConstructor;
6
+ readonly targetType: StringConstructor;
7
+ transform(value: string): TransformResult;
8
+ }
9
+ export declare function Trim(): Decorator<'property' | 'accessor'>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Trim = exports.TrimTransformer = void 0;
5
+ const decorators_1 = require("../decorators");
6
+ const types_1 = require("../types");
7
+ class TrimTransformer extends types_1.SchemaValueTransformer {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.sourceType = String;
11
+ this.targetType = String;
12
+ }
13
+ transform(value) {
14
+ return { success: true, value: value.trim() };
15
+ }
16
+ }
17
+ exports.TrimTransformer = TrimTransformer;
18
+ function Trim() {
19
+ return (0, decorators_1.createSchemaValueTransformerDecorator)(new TrimTransformer(), { type: String });
20
+ }
21
+ exports.Trim = Trim;
22
+ //# sourceMappingURL=trim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trim.js","sourceRoot":"","sources":["../../../source/schema/transformers/trim.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAAsE;AAEtE,oCAAkD;AAElD,MAAa,eAAgB,SAAQ,8BAAsB;IAA3D;;QACW,eAAU,GAAG,MAAM,CAAC;QACpB,eAAU,GAAG,MAAM,CAAC;IAK/B,CAAC;IAHC,SAAS,CAAC,KAAa;QACrB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAChD,CAAC;CACF;AAPD,0CAOC;AAED,SAAgB,IAAI;IAClB,OAAO,IAAA,kDAAqC,EAAC,IAAI,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACxF,CAAC;AAFD,oBAEC"}
@@ -0,0 +1,9 @@
1
+ import type { Decorator } from "../../reflection";
2
+ import type { TransformResult } from '../types';
3
+ import { SchemaValueTransformer } from '../types';
4
+ export declare class UppercaseTransformer extends SchemaValueTransformer {
5
+ readonly sourceType: StringConstructor;
6
+ readonly targetType: StringConstructor;
7
+ transform(value: string): TransformResult;
8
+ }
9
+ export declare function Uppercase(): Decorator<'property' | 'accessor'>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Uppercase = exports.UppercaseTransformer = void 0;
5
+ const decorators_1 = require("../decorators");
6
+ const types_1 = require("../types");
7
+ class UppercaseTransformer extends types_1.SchemaValueTransformer {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.sourceType = String;
11
+ this.targetType = String;
12
+ }
13
+ transform(value) {
14
+ return { success: true, value: value.toUpperCase() };
15
+ }
16
+ }
17
+ exports.UppercaseTransformer = UppercaseTransformer;
18
+ function Uppercase() {
19
+ return (0, decorators_1.createSchemaValueTransformerDecorator)(new UppercaseTransformer(), { type: String });
20
+ }
21
+ exports.Uppercase = Uppercase;
22
+ //# sourceMappingURL=uppercase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uppercase.js","sourceRoot":"","sources":["../../../source/schema/transformers/uppercase.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAAsE;AAEtE,oCAAkD;AAElD,MAAa,oBAAqB,SAAQ,8BAAsB;IAAhE;;QACW,eAAU,GAAG,MAAM,CAAC;QACpB,eAAU,GAAG,MAAM,CAAC;IAK/B,CAAC;IAHC,SAAS,CAAC,KAAa;QACrB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;IACvD,CAAC;CACF;AAPD,oDAOC;AAED,SAAgB,SAAS;IACvB,OAAO,IAAA,kDAAqC,EAAC,IAAI,oBAAoB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7F,CAAC;AAFD,8BAEC"}
package/schema/types.d.ts CHANGED
@@ -1,30 +1,150 @@
1
- import type { Simplify, TypedOmit } from "../types";
2
- import type { SchemaValidator } from './schema.validator';
3
- declare const schemaTypes: unique symbol;
4
- export declare type SchemaDefinition<Type extends string = string, Input = unknown, Output = unknown> = {
5
- type: Type;
6
- [schemaTypes]?: {
7
- input: Input;
8
- output: Output;
1
+ import type { JsonPath } from "../json-path/json-path";
2
+ import type { OneOrMany, Record, Type } from "../types";
3
+ import type { Schema } from './schema';
4
+ import type { SchemaError } from './schema.error';
5
+ declare const schemaTypeSymbol: unique symbol;
6
+ export declare type SchemaFactoryFunction<T extends Record> = (data: T) => T;
7
+ export declare type SchemaFactory<T extends Record> = {
8
+ type: Type<T, []>;
9
+ builder?: undefined;
10
+ } | {
11
+ type?: undefined;
12
+ builder: SchemaFactoryFunction<T>;
13
+ };
14
+ export declare type ObjectSchemaProperties<T extends Record> = {
15
+ [K in keyof T]-?: MaybeDeferredValueTypes<T[K]>;
16
+ };
17
+ export declare type SchemaOutput<T extends Schema | Type> = T extends ObjectSchema<infer U> ? U : T extends ValueSchema<infer U> ? U : T extends Type<infer U> ? U : never;
18
+ export declare type ObjectSchema<T extends Record = any> = {
19
+ factory?: SchemaFactory<T>;
20
+ properties: ObjectSchemaProperties<T>;
21
+ mask?: boolean;
22
+ allowUnknownProperties?: MaybeDeferredValueTypes;
23
+ };
24
+ export declare type ValueSchema<T = any> = {
25
+ [schemaTypeSymbol]?: T;
26
+ type: MaybeDeferredValueTypes;
27
+ array?: boolean;
28
+ optional?: boolean;
29
+ nullable?: boolean;
30
+ /** use default coercers */
31
+ coerce?: boolean;
32
+ /** custom coercers */
33
+ coercers?: OneOrMany<SchemaValueCoercer>;
34
+ transformers?: OneOrMany<SchemaValueTransformer>;
35
+ arrayConstraints?: OneOrMany<SchemaArrayConstraint>;
36
+ valueConstraints?: OneOrMany<SchemaValueConstraint>;
37
+ };
38
+ export declare type NormalizedObjectSchema<T extends Record = any> = {
39
+ factory?: SchemaFactory<T>;
40
+ properties: {
41
+ [K in keyof T]: Schema<T[K]>;
9
42
  };
43
+ mask?: boolean;
44
+ allowUnknownProperties: Set<Schema>;
45
+ };
46
+ export declare type NormalizedValueSchema<T = any> = {
47
+ type: Set<ValueType<T>>;
48
+ array: boolean;
49
+ optional: boolean;
50
+ nullable: boolean;
51
+ coerce: boolean;
52
+ coercers: Map<ValueType, SchemaValueCoercer[]>;
53
+ transformers: readonly SchemaValueTransformer[];
54
+ arrayConstraints: readonly SchemaArrayConstraint[];
55
+ valueConstraints: readonly SchemaValueConstraint[];
56
+ };
57
+ export declare type SchemaContext = {
58
+ schema: NormalizedValueSchema;
59
+ options: SchemaTestOptions;
10
60
  };
11
- export declare type Schema<T> = SchemaValidator<SchemaDefinition<string, unknown, T>>;
12
- export declare type SchemaOptions<T extends SchemaDefinition, K extends keyof T = never> = Simplify<Partial<TypedOmit<T, keyof SchemaDefinition | K>>>;
13
- export declare type SchemaInput<T extends SchemaDefinition | SchemaValidator> = T extends SchemaDefinition<string, infer I, any> ? I : T extends SchemaValidator ? T['inputType'] : never;
14
- export declare type SchemaOutput<T extends SchemaDefinition | SchemaValidator> = T extends SchemaDefinition<string, any, infer O> ? O : T extends SchemaValidator ? T['outputType'] : never;
61
+ export declare type ConstraintContext = SchemaContext;
62
+ export declare type TransformerContext = SchemaContext;
63
+ export declare type CoercerContext = SchemaContext;
64
+ export declare type ValueType<T = any> = Schema<T> | Type<T> | typeof BigInt | typeof Symbol | typeof Function | 'undefined' | 'null' | 'any';
65
+ export declare type DeferredValueType<T> = {
66
+ deferred: () => ValueType<T>;
67
+ };
68
+ export declare type MaybeDeferredValueType<T = any> = ValueType<T> | DeferredValueType<T>;
69
+ export declare type ValueTypes<T = any> = OneOrMany<ValueType<T>>;
70
+ export declare type DeferredValueTypes<T = any> = {
71
+ deferred: () => ValueTypes<T>;
72
+ };
73
+ export declare type MaybeDeferredValueTypes<T = any> = OneOrMany<ValueTypes<T> | DeferredValueTypes<T>> | MaybeDeferredValueTypes<T>[];
15
74
  export declare type Coercible = {
75
+ coerce?: boolean;
76
+ };
77
+ export declare const primitiveValueTypes: ValueType[];
78
+ export declare const primitiveValueTypesSet: Set<ValueType<any>>;
79
+ export declare abstract class SchemaArrayConstraint {
80
+ abstract validate(value: readonly unknown[], path: JsonPath, context: ConstraintContext): ConstraintResult;
81
+ }
82
+ export declare type OptionKeys<T extends Record> = readonly (keyof T)[];
83
+ export declare abstract class SchemaValueConstraint {
84
+ abstract readonly suitableTypes: ValueTypes;
85
+ abstract readonly expects: OneOrMany<string>;
86
+ abstract validate(value: unknown, path: JsonPath, context: ConstraintContext): ConstraintResult;
87
+ }
88
+ export declare abstract class SchemaValueTransformer {
89
+ abstract readonly sourceType: ValueTypes;
90
+ abstract readonly targetType: ValueType;
91
+ abstract transform(value: unknown, path: JsonPath, context: TransformerContext): TransformResult;
92
+ }
93
+ export declare abstract class SchemaValueCoercer {
94
+ abstract readonly sourceType: ValueTypes;
95
+ abstract readonly targetType: ValueType;
96
+ abstract coerce(value: unknown, path: JsonPath, context: CoercerContext): CoerceResult;
97
+ }
98
+ export declare type SchemaTestOptions = {
16
99
  /**
17
100
  * try to convert wrong input into desired output.
18
101
  * Can be specified on definition and validation. If specified on both, definition has higher priority
19
102
  */
20
103
  coerce?: boolean;
21
- };
22
- export declare type Maskable = {
23
104
  /**
24
105
  * remove unspecified fields on input data instead of raising an error.
25
106
  * Can be specified on definition and validation. If specified on both, definition has higher priority
26
107
  */
27
108
  mask?: boolean;
28
109
  };
29
- export declare function schemaHelper<T extends SchemaDefinition>(schema: TypedOmit<T, typeof schemaTypes>): T;
110
+ export declare type SchemaTestResult<T> = {
111
+ success: true;
112
+ value: T;
113
+ error?: undefined;
114
+ } | {
115
+ success: false;
116
+ value?: undefined;
117
+ error: SchemaError;
118
+ };
119
+ export declare type ConstraintResult = {
120
+ success: true;
121
+ error?: undefined;
122
+ } | {
123
+ success: false;
124
+ error: SchemaError;
125
+ };
126
+ export declare type CoerceResult = {
127
+ success: true;
128
+ value: any;
129
+ error?: undefined;
130
+ } | {
131
+ success: false;
132
+ value?: undefined;
133
+ error: SchemaError;
134
+ };
135
+ export declare type TransformResult = {
136
+ success: true;
137
+ value: any;
138
+ error?: undefined;
139
+ } | {
140
+ success: false;
141
+ value?: undefined;
142
+ error: SchemaError;
143
+ };
144
+ export declare function objectSchema<T extends ObjectSchema>(schema: T): T;
145
+ export declare function valueSchema<T extends ValueSchema>(schema: T): T;
146
+ export declare function isSchema<T>(value: ValueType<T>): value is Schema<T>;
147
+ export declare function isObjectSchema<T>(value: ValueType<T>): value is ObjectSchema<T>;
148
+ export declare function isValueSchema<T>(value: ValueType<T>): value is ValueSchema<T>;
149
+ export declare function isDeferredValueType<T>(value: MaybeDeferredValueTypes<T>): value is (DeferredValueType<T> | DeferredValueTypes<T>);
30
150
  export {};
package/schema/types.js CHANGED
@@ -1,8 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.schemaHelper = void 0;
4
- function schemaHelper(schema) {
3
+ exports.isDeferredValueType = exports.isValueSchema = exports.isObjectSchema = exports.isSchema = exports.valueSchema = exports.objectSchema = exports.SchemaValueCoercer = exports.SchemaValueTransformer = exports.SchemaValueConstraint = exports.SchemaArrayConstraint = exports.primitiveValueTypesSet = exports.primitiveValueTypes = void 0;
4
+ const object_1 = require("../utils/object/object");
5
+ const type_guards_1 = require("../utils/type-guards");
6
+ exports.primitiveValueTypes = [String, Number, Boolean, BigInt, Symbol, Function, 'undefined', 'null', 'any'];
7
+ exports.primitiveValueTypesSet = new Set(exports.primitiveValueTypes);
8
+ class SchemaArrayConstraint {
9
+ }
10
+ exports.SchemaArrayConstraint = SchemaArrayConstraint;
11
+ class SchemaValueConstraint {
12
+ }
13
+ exports.SchemaValueConstraint = SchemaValueConstraint;
14
+ class SchemaValueTransformer {
15
+ }
16
+ exports.SchemaValueTransformer = SchemaValueTransformer;
17
+ class SchemaValueCoercer {
18
+ }
19
+ exports.SchemaValueCoercer = SchemaValueCoercer;
20
+ function objectSchema(schema) {
21
+ return schema;
22
+ }
23
+ exports.objectSchema = objectSchema;
24
+ function valueSchema(schema) {
5
25
  return schema;
6
26
  }
7
- exports.schemaHelper = schemaHelper;
27
+ exports.valueSchema = valueSchema;
28
+ function isSchema(value) {
29
+ return isObjectSchema(value) || isValueSchema(value);
30
+ }
31
+ exports.isSchema = isSchema;
32
+ function isObjectSchema(value) {
33
+ return (0, type_guards_1.isObject)(value?.properties);
34
+ }
35
+ exports.isObjectSchema = isObjectSchema;
36
+ function isValueSchema(value) {
37
+ return (0, type_guards_1.isObject)(value) && (0, type_guards_1.isDefined)(value?.type);
38
+ }
39
+ exports.isValueSchema = isValueSchema;
40
+ function isDeferredValueType(value) {
41
+ return (0, type_guards_1.isObject)(value) && (0, object_1.hasOwnProperty)(value, 'deferred');
42
+ }
43
+ exports.isDeferredValueType = isDeferredValueType;
8
44
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../source/schema/types.ts"],"names":[],"mappings":";;;AAwCA,SAAgB,YAAY,CAA6B,MAAwC;IAC/F,OAAO,MAAW,CAAC;AACrB,CAAC;AAFD,oCAEC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../source/schema/types.ts"],"names":[],"mappings":";;;AAEA,mDAAuD;AACvD,sDAA0D;AAuF7C,QAAA,mBAAmB,GAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACnH,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC,2BAAmB,CAAC,CAAC;AAEnE,MAAsB,qBAAqB;CAE1C;AAFD,sDAEC;AAID,MAAsB,qBAAqB;CAK1C;AALD,sDAKC;AAED,MAAsB,sBAAsB;CAK3C;AALD,wDAKC;AAED,MAAsB,kBAAkB;CAKvC;AALD,gDAKC;AAgCD,SAAgB,YAAY,CAAyB,MAAS;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC;AAFD,oCAEC;AAED,SAAgB,WAAW,CAAwB,MAAS;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAFD,kCAEC;AAED,SAAgB,QAAQ,CAAI,KAAmB;IAC7C,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AAFD,4BAEC;AAED,SAAgB,cAAc,CAAI,KAAmB;IACnD,OAAO,IAAA,sBAAQ,EAAE,KAA2C,EAAE,UAAU,CAAC,CAAC;AAC5E,CAAC;AAFD,wCAEC;AAED,SAAgB,aAAa,CAAI,KAAmB;IAClD,OAAO,IAAA,sBAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,uBAAS,EAAE,KAA0C,EAAE,IAAI,CAAC,CAAC;AACzF,CAAC;AAFD,sCAEC;AAED,SAAgB,mBAAmB,CAAI,KAAiC;IACtE,OAAO,IAAA,sBAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,uBAAc,EAAE,KAA4B,EAAE,UAAU,CAAC,CAAC;AACtF,CAAC;AAFD,kDAEC"}
@@ -0,0 +1,2 @@
1
+ export * from './schema';
2
+ export * from './value-type';
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./types"), exports);
17
+ __exportStar(require("./schema"), exports);
18
+ __exportStar(require("./value-type"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/schema/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B"}
@@ -0,0 +1,12 @@
1
+ import type { Schema } from '../schema';
2
+ import type { MaybeDeferredValueTypes, NormalizedObjectSchema, NormalizedValueSchema, ObjectSchema, ValueSchema, ValueTypes } from '../types';
3
+ export declare const normalizeSchema: typeof _normalizeObjectSchema;
4
+ export declare const normalizeValueSchema: typeof _normalizeValueSchema;
5
+ export declare const getArrayItemSchema: typeof _getArrayItemSchema;
6
+ export declare function _normalizeObjectSchema<T>(objectSchema: ObjectSchema<T>): NormalizedObjectSchema<T>;
7
+ export declare function _normalizeValueSchema<T>(valueSchema: ValueSchema<T>): NormalizedValueSchema<T>;
8
+ declare function _getArrayItemSchema<T>(valueSchema: ValueSchema<T>): ValueSchema<T>;
9
+ export declare function maybeDeferredValueTypesToValueTypes<T>(valueTypes: MaybeDeferredValueTypes<T>): ValueTypes<T>;
10
+ export declare function valueTypesToSchema<T>(valueType: ValueTypes<T>): Schema<T>;
11
+ export declare function maybeDeferredValueTypesToSchema<T>(valueType: MaybeDeferredValueTypes<T>): Schema<T>;
12
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maybeDeferredValueTypesToSchema = exports.valueTypesToSchema = exports.maybeDeferredValueTypesToValueTypes = exports._normalizeValueSchema = exports._normalizeObjectSchema = exports.getArrayItemSchema = exports.normalizeValueSchema = exports.normalizeSchema = void 0;
4
+ const array_1 = require("../../utils/array/array");
5
+ const memoize_1 = require("../../utils/function/memoize");
6
+ const object_1 = require("../../utils/object/object");
7
+ const type_guards_1 = require("../../utils/type-guards");
8
+ const types_1 = require("../types");
9
+ exports.normalizeSchema = (0, memoize_1.memoizeSingle)(_normalizeObjectSchema, { weak: true });
10
+ exports.normalizeValueSchema = (0, memoize_1.memoizeSingle)(_normalizeValueSchema, { weak: true });
11
+ exports.getArrayItemSchema = (0, memoize_1.memoizeSingle)(_getArrayItemSchema, { weak: true });
12
+ function _normalizeObjectSchema(objectSchema) {
13
+ const normalizedObjectSchema = {
14
+ factory: objectSchema.factory,
15
+ properties: (0, object_1.mapObjectValues)(objectSchema.properties, maybeDeferredValueTypesToSchema),
16
+ mask: objectSchema.mask,
17
+ allowUnknownProperties: new Set((0, array_1.toArray)(objectSchema.allowUnknownProperties ?? []).map(maybeDeferredValueTypesToSchema))
18
+ };
19
+ return normalizedObjectSchema;
20
+ }
21
+ exports._normalizeObjectSchema = _normalizeObjectSchema;
22
+ function _normalizeValueSchema(valueSchema) {
23
+ const valueTypes = maybeDeferredValueTypesToValueTypes(valueSchema.type);
24
+ const normalizedValueSchema = {
25
+ type: new Set((0, array_1.toArray)(valueTypes)),
26
+ array: valueSchema.array ?? false,
27
+ optional: valueSchema.optional ?? false,
28
+ nullable: valueSchema.nullable ?? false,
29
+ coerce: valueSchema.coerce ?? false,
30
+ coercers: new Map(),
31
+ transformers: (0, array_1.toArray)(valueSchema.transformers ?? []),
32
+ arrayConstraints: (0, array_1.toArray)(valueSchema.arrayConstraints ?? []),
33
+ valueConstraints: (0, array_1.toArray)(valueSchema.valueConstraints ?? [])
34
+ };
35
+ for (const coercer of (0, array_1.toArray)(valueSchema.coercers ?? [])) {
36
+ for (const sourceType of (0, array_1.toArray)(coercer.sourceType)) {
37
+ if (!normalizedValueSchema.coercers.has(sourceType)) {
38
+ normalizedValueSchema.coercers.set(sourceType, []);
39
+ }
40
+ normalizedValueSchema.coercers.get(sourceType).push(coercer);
41
+ }
42
+ }
43
+ return normalizedValueSchema;
44
+ }
45
+ exports._normalizeValueSchema = _normalizeValueSchema;
46
+ function _getArrayItemSchema(valueSchema) {
47
+ const itemSchema = {
48
+ type: valueSchema.type,
49
+ array: false,
50
+ optional: false,
51
+ nullable: false,
52
+ transformers: valueSchema.transformers,
53
+ valueConstraints: valueSchema.valueConstraints
54
+ };
55
+ return itemSchema;
56
+ }
57
+ function maybeDeferredValueTypesToValueTypes(valueTypes) {
58
+ if ((0, type_guards_1.isArray)(valueTypes)) {
59
+ return valueTypes.flatMap((valueType) => maybeDeferredValueTypesToValueTypes(valueType));
60
+ }
61
+ return (0, types_1.isDeferredValueType)(valueTypes)
62
+ ? valueTypes.deferred()
63
+ : valueTypes;
64
+ }
65
+ exports.maybeDeferredValueTypesToValueTypes = maybeDeferredValueTypesToValueTypes;
66
+ function valueTypesToSchema(valueType) {
67
+ if ((0, type_guards_1.isFunction)(valueType) || (0, type_guards_1.isArray)(valueType) || (0, type_guards_1.isString)(valueType)) {
68
+ return { type: valueType };
69
+ }
70
+ return valueType;
71
+ }
72
+ exports.valueTypesToSchema = valueTypesToSchema;
73
+ function maybeDeferredValueTypesToSchema(valueType) {
74
+ const deferredValueTypes = maybeDeferredValueTypesToValueTypes(valueType);
75
+ return valueTypesToSchema(deferredValueTypes);
76
+ }
77
+ exports.maybeDeferredValueTypesToSchema = maybeDeferredValueTypesToSchema;
78
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../source/schema/utils/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ValueType } from '../types';
2
+ export declare function getValueType(value: unknown): ValueType;
3
+ export declare function getValueTypeName(valueType: ValueType): string;
4
+ export declare function valueTypeHasValueType(valueType: ValueType, typeToCheck: ValueType): boolean;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.valueTypeHasValueType = exports.getValueTypeName = exports.getValueType = void 0;
4
+ const type_guards_1 = require("../../utils/type-guards");
5
+ const types_1 = require("../types");
6
+ const schema_1 = require("./schema");
7
+ function getValueType(value) {
8
+ if ((0, type_guards_1.isUndefined)(value)) {
9
+ return 'undefined';
10
+ }
11
+ if ((0, type_guards_1.isNull)(value)) {
12
+ return 'null';
13
+ }
14
+ return value.constructor;
15
+ }
16
+ exports.getValueType = getValueType;
17
+ function getValueTypeName(valueType) {
18
+ return (0, type_guards_1.isString)(valueType) ? valueType : (0, type_guards_1.isFunction)(valueType) ? valueType.name : 'object';
19
+ }
20
+ exports.getValueTypeName = getValueTypeName;
21
+ function valueTypeHasValueType(valueType, typeToCheck) {
22
+ if ((0, types_1.isValueSchema)(valueType)) {
23
+ const resolvedValueTypes = (0, schema_1.maybeDeferredValueTypesToValueTypes)(valueType.type);
24
+ if ((0, type_guards_1.isArray)(resolvedValueTypes)) {
25
+ return resolvedValueTypes.some((innerType) => valueTypeHasValueType(innerType, typeToCheck));
26
+ }
27
+ return valueTypeHasValueType(resolvedValueTypes, typeToCheck);
28
+ }
29
+ if ((0, types_1.isObjectSchema)(valueType)) {
30
+ return false;
31
+ }
32
+ return valueType == typeToCheck;
33
+ }
34
+ exports.valueTypeHasValueType = valueTypeHasValueType;
35
+ //# sourceMappingURL=value-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-type.js","sourceRoot":"","sources":["../../../source/schema/utils/value-type.ts"],"names":[],"mappings":";;;AACA,yDAAyF;AAEzF,oCAAyD;AACzD,qCAA+D;AAE/D,SAAgB,YAAY,CAAC,KAAc;IACzC,IAAI,IAAA,yBAAW,EAAC,KAAK,CAAC,EAAE;QACtB,OAAO,WAAW,CAAC;KACpB;IAED,IAAI,IAAA,oBAAM,EAAC,KAAK,CAAC,EAAE;QACjB,OAAO,MAAM,CAAC;KACf;IAED,OAAQ,KAAgB,CAAC,WAAmB,CAAC;AAC/C,CAAC;AAVD,oCAUC;AAED,SAAgB,gBAAgB,CAAC,SAAoB;IACnD,OAAO,IAAA,sBAAQ,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,wBAAU,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7F,CAAC;AAFD,4CAEC;AAED,SAAgB,qBAAqB,CAAC,SAAoB,EAAE,WAAsB;IAChF,IAAI,IAAA,qBAAa,EAAC,SAAS,CAAC,EAAE;QAC5B,MAAM,kBAAkB,GAAG,IAAA,4CAAmC,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE/E,IAAI,IAAA,qBAAO,EAAC,kBAAkB,CAAC,EAAE;YAC/B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;SAC9F;QAED,OAAO,qBAAqB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;KAC/D;IAED,IAAI,IAAA,sBAAc,EAAC,SAAS,CAAC,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IAED,OAAO,SAAS,IAAI,WAAW,CAAC;AAClC,CAAC;AAhBD,sDAgBC"}
@@ -1,4 +1,4 @@
1
- import type { Schema } from "../../schema";
1
+ import { Schema } from "../../schema";
2
2
  import type { TypedOmit } from "../../types";
3
3
  import type { Template } from '../template.model';
4
4
  export declare type FileTemplateBase = TypedOmit<Template, 'template'>;
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FileTemplateProviderBase = void 0;
4
4
  const bad_request_error_1 = require("../../error/bad-request.error");
5
+ const schema_1 = require("../../schema");
5
6
  const type_guards_1 = require("../../utils/type-guards");
6
7
  const fs = require("fs/promises");
7
8
  const path = require("path");
8
- const keyPattern = /^[\w\-\/]+$/u;
9
+ const keyPattern = /^[\w\-/]+$/u;
9
10
  class FileTemplateProviderBase {
10
11
  constructor(schema, basePath, fileForwards) {
11
12
  this.schema = schema;
@@ -19,7 +20,7 @@ class FileTemplateProviderBase {
19
20
  const filePath = path.resolve(this.basePath, `${key}.js`);
20
21
  const templateModule = await Promise.resolve().then(() => require(filePath));
21
22
  const fileContent = templateModule.default;
22
- const fileTemplate = this.schema.parse(fileContent);
23
+ const fileTemplate = schema_1.Schema.parse(this.schema, fileContent);
23
24
  const result = {};
24
25
  const entries = Object.entries(fileTemplate);
25
26
  for (const [property, value] of entries) {
@@ -1 +1 @@
1
- {"version":3,"file":"file-template.provider.base.js","sourceRoot":"","sources":["../../../source/templates/providers/file-template.provider.base.ts"],"names":[],"mappings":";;;AAAA,qEAA4D;AAG5D,yDAAkE;AAClE,kCAAkC;AAClC,6BAA6B;AAO7B,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC,MAAa,wBAAwB;IAKnC,YAAY,MAAiB,EAAE,QAAgB,EAAE,YAAiC;QAChF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,mCAAe,CAAC,gEAAgE,CAAC,CAAC;SAC7F;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,2CAAa,QAAQ,EAAyB,CAAC;QACtE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEpD,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAyB,CAAC;QAErE,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;aAC1B;SACF;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;YACpD,IAAI,IAAA,uBAAS,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;gBAChC,IAAI,IAAA,uBAAS,EAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;oBACpC,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,CAAC,QAAQ,EAAE,OAAO,SAAS,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;iBAC7F;gBAED,SAAS;aACV;YAED,IAAI,IAAA,uBAAS,EAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;gBACpC,MAAM,eAAe,GAAG,IAAA,8BAAgB,EAAC,YAAY,CAAC,OAAO,CAAC,EAAE,6BAA6B,CAAC,CAAC;gBAC/F,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEtG,MAAM,CAAC,SAAS,CAAC,GAAG,OAAc,CAAC;gBACnC,SAAS;aACV;YAED,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,CAAC,QAAQ,EAAE,OAAO,SAAS,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;SAC7F;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AApDD,4DAoDC"}
1
+ {"version":3,"file":"file-template.provider.base.js","sourceRoot":"","sources":["../../../source/templates/providers/file-template.provider.base.ts"],"names":[],"mappings":";;;AAAA,qEAA4D;AAC5D,yCAAkC;AAElC,yDAAkE;AAClE,kCAAkC;AAClC,6BAA6B;AAO7B,MAAM,UAAU,GAAG,aAAa,CAAC;AAEjC,MAAa,wBAAwB;IAKnC,YAAY,MAAiB,EAAE,QAAgB,EAAE,YAAiC;QAChF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,mCAAe,CAAC,gEAAgE,CAAC,CAAC;SAC7F;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,2CAAa,QAAQ,EAAyB,CAAC;QACtE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC;QAC3C,MAAM,YAAY,GAAG,eAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAyB,CAAC;QAErE,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;aAC1B;SACF;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;YACpD,IAAI,IAAA,uBAAS,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;gBAChC,IAAI,IAAA,uBAAS,EAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;oBACpC,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,CAAC,QAAQ,EAAE,OAAO,SAAS,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;iBAC7F;gBAED,SAAS;aACV;YAED,IAAI,IAAA,uBAAS,EAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;gBACpC,MAAM,eAAe,GAAG,IAAA,8BAAgB,EAAC,YAAY,CAAC,OAAO,CAAC,EAAE,6BAA6B,CAAC,CAAC;gBAC/F,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEtG,MAAM,CAAC,SAAS,CAAC,GAAG,OAAc,CAAC;gBACnC,SAAS;aACV;YAED,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,CAAC,QAAQ,EAAE,OAAO,SAAS,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;SAC7F;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AApDD,4DAoDC"}
package/types.d.ts CHANGED
@@ -35,10 +35,10 @@ export declare type UndefinableJsonObject = {
35
35
  [key: string]: UndefinableJsonInnerNode;
36
36
  };
37
37
  export declare type UndefinableJsonArray = UndefinableJsonInnerNode[];
38
- export declare type EnumerationValue = string | number;
39
38
  export declare type Enumeration = EnumerationArray | EnumerationObject;
40
- export declare type EnumerationArray = readonly [EnumerationValue, ...(EnumerationValue)[]];
41
- export declare type EnumerationObject = Record<string, EnumerationValue>;
39
+ export declare type EnumerationArray = readonly [string | number, ...(string | number)[]];
40
+ export declare type EnumerationObject = Record<string, string | number>;
41
+ export declare type EnumerationValue<T extends Enumeration = Enumeration> = T extends EnumerationArray ? T[number] : T[Extract<keyof T, string>];
42
42
  export declare type Type<T = any, Arguments extends any[] = any> = Constructor<T, Arguments> & {
43
43
  prototype: T;
44
44
  };
@@ -95,6 +95,9 @@ export declare type Simplify<T> = T extends (Primitive | Function | Date | RegEx
95
95
  export declare type SimplifyObject<T extends Record> = {
96
96
  [K in keyof T]: T[K];
97
97
  } & {};
98
+ export declare type UndefinableObject<T extends Record> = {
99
+ [K in keyof T]: T[K] | undefined;
100
+ };
98
101
  /**
99
102
  * pick properties from a type that extend from a specific type.
100
103
  */