@tstdl/base 0.78.0-beta1 → 0.78.0-beta10

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 (181) hide show
  1. package/api/server/gateway.js +3 -0
  2. package/api/server/gateway.js.map +1 -1
  3. package/api/types.d.ts +11 -8
  4. package/api/types.js.map +1 -1
  5. package/container/container.js.map +1 -1
  6. package/container/resolve-chain.d.ts +5 -5
  7. package/container/resolve-chain.js.map +1 -1
  8. package/database/mongo/mongo-base.repository.js.map +1 -1
  9. package/database/mongo/types.d.ts +2 -2
  10. package/enumerable/async-enumerable.d.ts +2 -1
  11. package/enumerable/async-enumerable.js +3 -0
  12. package/enumerable/async-enumerable.js.map +1 -1
  13. package/enumerable/enumerable-methods.d.ts +1 -0
  14. package/enumerable/enumerable.d.ts +1 -0
  15. package/enumerable/enumerable.js +12 -18
  16. package/enumerable/enumerable.js.map +1 -1
  17. package/http/client/adapters/utils.js.map +1 -1
  18. package/key-value-store/mongo/mongo-key-value.model.d.ts +1 -0
  19. package/mail/template-providers/file-mail-template.provider.js +2 -2
  20. package/mail/template-providers/file-mail-template.provider.js.map +1 -1
  21. package/package.json +5 -6
  22. package/promise/deferred-promise.d.ts +2 -15
  23. package/promise/deferred-promise.js +5 -10
  24. package/promise/deferred-promise.js.map +1 -1
  25. package/promise/lazy-promise.d.ts +11 -0
  26. package/promise/lazy-promise.js +31 -0
  27. package/promise/lazy-promise.js.map +1 -0
  28. package/queue/mongo/mongo-job.repository.js +1 -1
  29. package/queue/mongo/mongo-job.repository.js.map +1 -1
  30. package/reflection/registry.d.ts +8 -8
  31. package/reflection/registry.js.map +1 -1
  32. package/schema/array-constraints/maximum-length.js +2 -2
  33. package/schema/array-constraints/maximum-length.js.map +1 -1
  34. package/schema/array-constraints/minimum-length.js +2 -2
  35. package/schema/array-constraints/minimum-length.js.map +1 -1
  36. package/schema/coercers/default-value.coercer.d.ts +1 -1
  37. package/schema/coercers/default-value.coercer.js +1 -1
  38. package/schema/coercers/default-value.coercer.js.map +1 -1
  39. package/schema/coercers/uint8-array.coercer.js +4 -9
  40. package/schema/coercers/uint8-array.coercer.js.map +1 -1
  41. package/schema/constraints/enumeration.js +2 -2
  42. package/schema/constraints/enumeration.js.map +1 -1
  43. package/schema/constraints/generic.js +2 -2
  44. package/schema/constraints/generic.js.map +1 -1
  45. package/schema/constraints/integer.js +3 -3
  46. package/schema/constraints/integer.js.map +1 -1
  47. package/schema/constraints/literal.js +2 -2
  48. package/schema/constraints/literal.js.map +1 -1
  49. package/schema/constraints/maximum-date.js +3 -3
  50. package/schema/constraints/maximum-date.js.map +1 -1
  51. package/schema/constraints/maximum-length.js +2 -2
  52. package/schema/constraints/maximum-length.js.map +1 -1
  53. package/schema/constraints/maximum.js +3 -3
  54. package/schema/constraints/maximum.js.map +1 -1
  55. package/schema/constraints/minimum-date.js +3 -3
  56. package/schema/constraints/minimum-date.js.map +1 -1
  57. package/schema/constraints/minimum-length.js +2 -2
  58. package/schema/constraints/minimum-length.js.map +1 -1
  59. package/schema/constraints/minimum.js +3 -3
  60. package/schema/constraints/minimum.js.map +1 -1
  61. package/schema/constraints/pattern.js +3 -3
  62. package/schema/constraints/pattern.js.map +1 -1
  63. package/schema/decorators/array.d.ts +3 -2
  64. package/schema/decorators/array.js +1 -1
  65. package/schema/decorators/array.js.map +1 -1
  66. package/schema/decorators/defaulted.d.ts +3 -2
  67. package/schema/decorators/defaulted.js +1 -1
  68. package/schema/decorators/defaulted.js.map +1 -1
  69. package/schema/decorators/property.d.ts +3 -3
  70. package/schema/decorators/property.js +4 -1
  71. package/schema/decorators/property.js.map +1 -1
  72. package/schema/decorators/types.d.ts +3 -3
  73. package/schema/decorators/utils.d.ts +3 -2
  74. package/schema/decorators/utils.js +4 -8
  75. package/schema/decorators/utils.js.map +1 -1
  76. package/schema/schema.d.ts +10 -9
  77. package/schema/schema.js +106 -110
  78. package/schema/schema.js.map +1 -1
  79. package/schema/schemas/any.d.ts +2 -2
  80. package/schema/schemas/any.js +2 -2
  81. package/schema/schemas/any.js.map +1 -1
  82. package/schema/schemas/array.d.ts +4 -2
  83. package/schema/schemas/array.js +1 -2
  84. package/schema/schemas/array.js.map +1 -1
  85. package/schema/schemas/assign.d.ts +5 -5
  86. package/schema/schemas/assign.js +0 -1
  87. package/schema/schemas/assign.js.map +1 -1
  88. package/schema/schemas/boolean.js +2 -3
  89. package/schema/schemas/boolean.js.map +1 -1
  90. package/schema/schemas/constraint.d.ts +1 -1
  91. package/schema/schemas/constraint.js +1 -2
  92. package/schema/schemas/constraint.js.map +1 -1
  93. package/schema/schemas/date.js +2 -3
  94. package/schema/schemas/date.js.map +1 -1
  95. package/schema/schemas/defaulted.d.ts +4 -2
  96. package/schema/schemas/defaulted.js +1 -2
  97. package/schema/schemas/defaulted.js.map +1 -1
  98. package/schema/schemas/enumeration.js +2 -3
  99. package/schema/schemas/enumeration.js.map +1 -1
  100. package/schema/schemas/exclude.js.map +1 -1
  101. package/schema/schemas/index.d.ts +1 -0
  102. package/schema/schemas/index.js +1 -0
  103. package/schema/schemas/index.js.map +1 -1
  104. package/schema/schemas/instance.d.ts +2 -2
  105. package/schema/schemas/instance.js +1 -1
  106. package/schema/schemas/instance.js.map +1 -1
  107. package/schema/schemas/literal.js +2 -3
  108. package/schema/schemas/literal.js.map +1 -1
  109. package/schema/schemas/nullable.d.ts +1 -1
  110. package/schema/schemas/nullable.js +1 -1
  111. package/schema/schemas/nullable.js.map +1 -1
  112. package/schema/schemas/number.d.ts +1 -1
  113. package/schema/schemas/number.js +5 -3
  114. package/schema/schemas/number.js.map +1 -1
  115. package/schema/schemas/object.d.ts +2 -3
  116. package/schema/schemas/object.js.map +1 -1
  117. package/schema/schemas/optional.d.ts +1 -1
  118. package/schema/schemas/optional.js +1 -1
  119. package/schema/schemas/optional.js.map +1 -1
  120. package/schema/schemas/pick.js.map +1 -1
  121. package/schema/schemas/readable-stream.d.ts +2 -2
  122. package/schema/schemas/readable-stream.js +3 -4
  123. package/schema/schemas/readable-stream.js.map +1 -1
  124. package/schema/schemas/record.d.ts +5 -4
  125. package/schema/schemas/record.js +2 -2
  126. package/schema/schemas/record.js.map +1 -1
  127. package/schema/schemas/regexp.js +3 -3
  128. package/schema/schemas/regexp.js.map +1 -1
  129. package/schema/schemas/string.js +2 -3
  130. package/schema/schemas/string.js.map +1 -1
  131. package/schema/schemas/transform.d.ts +4 -3
  132. package/schema/schemas/transform.js +1 -3
  133. package/schema/schemas/transform.js.map +1 -1
  134. package/schema/schemas/uint8-array.d.ts +2 -3
  135. package/schema/schemas/uint8-array.js +4 -4
  136. package/schema/schemas/uint8-array.js.map +1 -1
  137. package/schema/schemas/union.d.ts +9 -4
  138. package/schema/schemas/union.js +5 -4
  139. package/schema/schemas/union.js.map +1 -1
  140. package/schema/schemas/unknown.d.ts +2 -2
  141. package/schema/schemas/unknown.js +2 -2
  142. package/schema/schemas/unknown.js.map +1 -1
  143. package/schema/transformers/generic.d.ts +9 -9
  144. package/schema/transformers/generic.js.map +1 -1
  145. package/schema/transformers/lowercase.d.ts +2 -2
  146. package/schema/transformers/lowercase.js +1 -1
  147. package/schema/transformers/lowercase.js.map +1 -1
  148. package/schema/transformers/trim.d.ts +2 -2
  149. package/schema/transformers/trim.js +1 -1
  150. package/schema/transformers/trim.js.map +1 -1
  151. package/schema/transformers/uppercase.d.ts +2 -2
  152. package/schema/transformers/uppercase.js +1 -1
  153. package/schema/transformers/uppercase.js.map +1 -1
  154. package/schema/types.d.ts +70 -52
  155. package/schema/types.js +47 -12
  156. package/schema/types.js.map +1 -1
  157. package/schema/utils/schema.d.ts +10 -9
  158. package/schema/utils/schema.js +43 -47
  159. package/schema/utils/schema.js.map +1 -1
  160. package/schema/utils/value-type.d.ts +4 -3
  161. package/schema/utils/value-type.js +18 -14
  162. package/schema/utils/value-type.js.map +1 -1
  163. package/templates/providers/file-template.provider.js.map +1 -1
  164. package/types.d.ts +35 -1
  165. package/utils/async-iterable-helpers/includes.d.ts +2 -0
  166. package/utils/async-iterable-helpers/includes.js +13 -0
  167. package/utils/async-iterable-helpers/includes.js.map +1 -0
  168. package/utils/async-iterable-helpers/index.d.ts +1 -0
  169. package/utils/async-iterable-helpers/index.js +1 -0
  170. package/utils/async-iterable-helpers/index.js.map +1 -1
  171. package/utils/compression.d.ts +13 -13
  172. package/utils/compression.js +2 -1
  173. package/utils/compression.js.map +1 -1
  174. package/utils/encoding.js +1 -1
  175. package/utils/encoding.js.map +1 -1
  176. package/utils/iterable-helpers/includes.d.ts +1 -0
  177. package/utils/iterable-helpers/includes.js +9 -0
  178. package/utils/iterable-helpers/includes.js.map +1 -0
  179. package/utils/iterable-helpers/index.d.ts +1 -0
  180. package/utils/iterable-helpers/index.js +1 -0
  181. package/utils/iterable-helpers/index.js.map +1 -1
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Uint8Array = exports.uint8Array = void 0;
4
5
  const type_guards_1 = require("../../utils/type-guards");
5
6
  const uint8_array_coercer_1 = require("../coercers/uint8-array.coercer");
6
7
  const maximum_length_1 = require("../constraints/maximum-length");
7
8
  const minimum_length_1 = require("../constraints/minimum-length");
8
- const decorators_1 = require("../decorators");
9
+ const utils_1 = require("../decorators/utils");
9
10
  const types_1 = require("../types");
10
11
  function uint8Array(options = {}) {
11
12
  const constraints = [];
@@ -15,15 +16,14 @@ function uint8Array(options = {}) {
15
16
  if ((0, type_guards_1.isDefined)(options.maximumLength)) {
16
17
  constraints.push(new maximum_length_1.MaximumLengthConstraint(options.maximumLength));
17
18
  }
18
- return (0, types_1.valueSchema)({
19
- type: globalThis.Uint8Array,
19
+ return (0, types_1.valueSchema)((0, types_1.typeSchema)(globalThis.Uint8Array), {
20
20
  coercers: (options.coerce == true) ? uint8_array_coercer_1.uint8ArrayCoercer : undefined,
21
21
  valueConstraints: constraints
22
22
  });
23
23
  }
24
24
  exports.uint8Array = uint8Array;
25
25
  function Uint8Array(options) {
26
- return (0, decorators_1.createSchemaPropertyDecoratorFromValueType)(uint8Array(options));
26
+ return (0, utils_1.createSchemaPropertyDecoratorFromSchema)(uint8Array(options));
27
27
  }
28
28
  exports.Uint8Array = Uint8Array;
29
29
  //# sourceMappingURL=uint8-array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uint8-array.js","sourceRoot":"","sources":["../../../source/schema/schemas/uint8-array.ts"],"names":[],"mappings":";;;AACA,yDAAgD;AAChD,yEAAoE;AACpE,kEAAwE;AACxE,kEAAwE;AACxE,8CAA2E;AAG3E,oCAAuC;AAOvC,SAAgB,UAAU,CAAC,UAAmC,EAAE;IAC9D,MAAM,WAAW,GAA4B,EAAE,CAAC;IAEhD,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACpC,WAAW,CAAC,IAAI,CAAC,IAAI,wCAAuB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KACtE;IAED,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACpC,WAAW,CAAC,IAAI,CAAC,IAAI,wCAAuB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KACtE;IAED,OAAO,IAAA,mBAAW,EAAC;QACjB,IAAI,EAAE,UAAU,CAAC,UAAU;QAC3B,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,uCAAiB,CAAC,CAAC,CAAC,SAAS;QAClE,gBAAgB,EAAE,WAAW;KAC9B,CAAC,CAAC;AACL,CAAC;AAhBD,gCAgBC;AAED,SAAgB,UAAU,CAAC,OAAiC;IAC1D,OAAO,IAAA,uDAA0C,EAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACzE,CAAC;AAFD,gCAEC"}
1
+ {"version":3,"file":"uint8-array.js","sourceRoot":"","sources":["../../../source/schema/schemas/uint8-array.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,yDAAgD;AAChD,yEAAoE;AACpE,kEAAwE;AACxE,kEAAwE;AACxE,+CAA8E;AAE9E,oCAAmD;AAOnD,SAAgB,UAAU,CAAC,UAAmC,EAAE;IAC9D,MAAM,WAAW,GAA4B,EAAE,CAAC;IAEhD,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACpC,WAAW,CAAC,IAAI,CAAC,IAAI,wCAAuB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KACtE;IAED,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACpC,WAAW,CAAC,IAAI,CAAC,IAAI,wCAAuB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;KACtE;IAED,OAAO,IAAA,mBAAW,EAAC,IAAA,kBAAU,EAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QACpD,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,uCAAiB,CAAC,CAAC,CAAC,SAAS;QAClE,gBAAgB,EAAE,WAAW;KAC9B,CAAC,CAAC;AACL,CAAC;AAfD,gCAeC;AAED,SAAgB,UAAU,CAAC,OAAiC;IAC1D,OAAO,IAAA,+CAAuC,EAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,CAAC;AAFD,gCAEC"}
@@ -1,5 +1,10 @@
1
1
  import type { Decorator } from "../../reflection";
2
- import type { MaybeDeferredValueTypes, ValueSchema } from '../types';
3
- export declare type UnionTypeHelper<T extends MaybeDeferredValueTypes> = T extends MaybeDeferredValueTypes<infer U> ? U : never;
4
- export declare function union<T extends [MaybeDeferredValueTypes, ...MaybeDeferredValueTypes[]]>(...schemas: T): ValueSchema<UnionTypeHelper<T[number]>>;
5
- export declare function Union(...schemas: [MaybeDeferredValueTypes, ...MaybeDeferredValueTypes[]]): Decorator<'property' | 'accessor'>;
2
+ import type { Schema } from '../schema';
3
+ import type { ValueSchema } from '../types';
4
+ export declare function union<T1, O1, T2, O2>(schema1: Schema<T1, O1>, schema2: Schema<T2, O2>): ValueSchema<T1 | T2, O1 | O2>;
5
+ export declare function union<T1, O1, T2, O2, T3, O3>(schema1: Schema<T1, O1>, schema2: Schema<T2, O2>, schema3: Schema<T3, O3>): ValueSchema<T1 | T2 | T3, O1 | O2 | O3>;
6
+ export declare function union<T1, O1, T2, O2, T3, O3, T4, O4>(schema1: Schema<T1, O1>, schema2: Schema<T2, O2>, schema3: Schema<T3, O3>, schema4: Schema<T4, O4>): ValueSchema<T1 | T2 | T3 | T4, O1 | O2 | O3 | O4>;
7
+ export declare function union<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5>(schema1: Schema<T1, O1>, schema2: Schema<T2, O2>, schema3: Schema<T3, O3>, schema4: Schema<T4, O4>, schema5: Schema<T5, O5>): ValueSchema<T1 | T2 | T3 | T4 | T5, O1 | O2 | O3 | O4 | O5>;
8
+ export declare function union<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5, T6, O6>(schema1: Schema<T1, O1>, schema2: Schema<T2, O2>, schema3: Schema<T3, O3>, schema4: Schema<T4, O4>, schema5: Schema<T5, O5>, schema6: Schema<T6>): ValueSchema<T1 | T2 | T3 | T4 | T5 | T6, O1 | O2 | O3 | O4 | O5 | O6>;
9
+ export declare function union(...schemas: Schema[]): ValueSchema;
10
+ export declare function Union(...schemas: Schema[]): Decorator<'property' | 'accessor'>;
@@ -1,16 +1,17 @@
1
1
  "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Union = exports.union = void 0;
5
+ const type_guards_1 = require("../../utils/type-guards");
4
6
  const decorators_1 = require("../decorators");
5
7
  const types_1 = require("../types");
6
8
  function union(...schemas) {
7
- return (0, types_1.valueSchema)({
8
- type: schemas
9
- });
9
+ (0, type_guards_1.assert)(schemas.length >= 2, 'Assign requires at least 2 schemas.');
10
+ return (0, types_1.valueSchema)(schemas);
10
11
  }
11
12
  exports.union = union;
12
13
  function Union(...schemas) {
13
- return (0, decorators_1.createSchemaPropertyDecoratorFromValueType)(union(...schemas));
14
+ return (0, decorators_1.createSchemaPropertyDecoratorFromSchema)(union(...schemas));
14
15
  }
15
16
  exports.Union = Union;
16
17
  //# sourceMappingURL=union.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"union.js","sourceRoot":"","sources":["../../../source/schema/schemas/union.ts"],"names":[],"mappings":";;;AACA,8CAA2E;AAE3E,oCAAuC;AAIvC,SAAgB,KAAK,CAAoE,GAAG,OAAU;IACpG,OAAO,IAAA,mBAAW,EAAC;QACjB,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;AACL,CAAC;AAJD,sBAIC;AAED,SAAgB,KAAK,CAAC,GAAG,OAAgE;IACvF,OAAO,IAAA,uDAA0C,EAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACvE,CAAC;AAFD,sBAEC"}
1
+ {"version":3,"file":"union.js","sourceRoot":"","sources":["../../../source/schema/schemas/union.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,yDAA6C;AAC7C,8CAAwE;AAGxE,oCAAuC;AAQvC,SAAgB,KAAK,CAAC,GAAG,OAAiB;IACxC,IAAA,oBAAM,EAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,qCAAqC,CAAC,CAAC;IACnE,OAAO,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAHD,sBAGC;AAED,SAAgB,KAAK,CAAC,GAAG,OAAiB;IACxC,OAAO,IAAA,oDAAuC,EAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC;AAFD,sBAEC"}
@@ -1,4 +1,4 @@
1
1
  import type { Decorator } from "../../reflection";
2
- import type { ValueSchema } from '../types';
3
- export declare function unknown(): ValueSchema<unknown>;
2
+ import type { TypeSchema } from '../types';
3
+ export declare function unknown(): TypeSchema<unknown>;
4
4
  export declare function Unknwon(): Decorator<'property' | 'accessor'>;
@@ -5,11 +5,11 @@ exports.Unknwon = exports.unknown = void 0;
5
5
  const decorators_1 = require("../decorators");
6
6
  const types_1 = require("../types");
7
7
  function unknown() {
8
- return (0, types_1.valueSchema)({ type: 'any' });
8
+ return (0, types_1.typeSchema)('any');
9
9
  }
10
10
  exports.unknown = unknown;
11
11
  function Unknwon() {
12
- return (0, decorators_1.createSchemaPropertyDecoratorFromValueType)(unknown());
12
+ return (0, decorators_1.createSchemaPropertyDecoratorFromSchema)(unknown());
13
13
  }
14
14
  exports.Unknwon = Unknwon;
15
15
  //# sourceMappingURL=unknown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"unknown.js","sourceRoot":"","sources":["../../../source/schema/schemas/unknown.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAA2E;AAE3E,oCAAuC;AAEvC,SAAgB,OAAO;IACrB,OAAO,IAAA,mBAAW,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtC,CAAC;AAFD,0BAEC;AAED,SAAgB,OAAO;IACrB,OAAO,IAAA,uDAA0C,EAAC,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC;AAFD,0BAEC"}
1
+ {"version":3,"file":"unknown.js","sourceRoot":"","sources":["../../../source/schema/schemas/unknown.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAAwE;AAExE,oCAAsC;AAEtC,SAAgB,OAAO;IACrB,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAFD,0BAEC;AAED,SAAgB,OAAO;IACrB,OAAO,IAAA,oDAAuC,EAAC,OAAO,EAAE,CAAC,CAAC;AAC5D,CAAC;AAFD,0BAEC"}
@@ -1,13 +1,13 @@
1
1
  import type { Decorator } from "../../reflection";
2
- import type { OneOrMany, TypedOmit } from "../../types";
2
+ import type { AbstractConstructor, OneOrMany, TypedOmit } from "../../types";
3
3
  import type { TransformResult, ValueType } from '../types';
4
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;
5
+ export declare type GenericTransformFunction<T, O> = (value: T) => TypedOmit<TransformResult<O>, 'success'>;
6
+ export declare class GenericTransformer<T, O, TransformOutput> extends SchemaValueTransformer<T, O, TransformOutput> {
7
+ readonly sourceType: OneOrMany<ValueType<T>>;
8
+ readonly targetType: ValueType<TransformOutput>;
9
+ readonly transformFunction: GenericTransformFunction<O, TransformOutput>;
10
+ constructor(sourceType: OneOrMany<ValueType<T>>, targetType: AbstractConstructor<TransformOutput>, transformFunction: GenericTransformFunction<O, TransformOutput>);
11
+ transform(value: O): TransformResult<TransformOutput>;
12
12
  }
13
- export declare function Transform<T>(sourceType: OneOrMany<ValueType>, targetType: ValueType, transformFunction: GenericTransformFunction<T>): Decorator<'property' | 'accessor'>;
13
+ export declare function Transform<T, O, TransformOutput>(sourceType: OneOrMany<AbstractConstructor<T>>, targetType: AbstractConstructor, transformFunction: GenericTransformFunction<O, TransformOutput>): Decorator<'property' | 'accessor'>;
@@ -1 +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"}
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,kBAA0C,SAAQ,8BAA6C;IAK1G,YAAY,UAAmC,EAAE,UAAgD,EAAE,iBAA+D;QAChK,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,KAAM,EAAE,CAAC;IACjD,CAAC;CACF;AAtBD,gDAsBC;AAED,SAAgB,SAAS,CAAwB,UAA6C,EAAE,UAA+B,EAAE,iBAA+D;IAC9L,OAAO,IAAA,kDAAqC,EAAC,IAAI,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAClH,CAAC;AAFD,8BAEC"}
@@ -1,9 +1,9 @@
1
1
  import type { Decorator } from "../../reflection";
2
2
  import type { TransformResult } from '../types';
3
3
  import { SchemaValueTransformer } from '../types';
4
- export declare class LowercaseTransformer extends SchemaValueTransformer {
4
+ export declare class LowercaseTransformer extends SchemaValueTransformer<string, string, string> {
5
5
  readonly sourceType: StringConstructor;
6
6
  readonly targetType: StringConstructor;
7
- transform(value: string): TransformResult;
7
+ transform(value: string): TransformResult<string>;
8
8
  }
9
9
  export declare function Lowercase(): Decorator<'property' | 'accessor'>;
@@ -16,7 +16,7 @@ class LowercaseTransformer extends types_1.SchemaValueTransformer {
16
16
  }
17
17
  exports.LowercaseTransformer = LowercaseTransformer;
18
18
  function Lowercase() {
19
- return (0, decorators_1.createSchemaValueTransformerDecorator)(new LowercaseTransformer(), { type: String });
19
+ return (0, decorators_1.createSchemaValueTransformerDecorator)(new LowercaseTransformer(), { schema: (0, types_1.typeSchema)(String) });
20
20
  }
21
21
  exports.Lowercase = Lowercase;
22
22
  //# sourceMappingURL=lowercase.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"lowercase.js","sourceRoot":"","sources":["../../../source/schema/transformers/lowercase.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAAsE;AAEtE,oCAA8D;AAE9D,MAAa,oBAAqB,SAAQ,8BAA8C;IAAxF;;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,MAAM,EAAE,IAAA,kBAAU,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3G,CAAC;AAFD,8BAEC"}
@@ -1,9 +1,9 @@
1
1
  import type { Decorator } from "../../reflection";
2
2
  import type { TransformResult } from '../types';
3
3
  import { SchemaValueTransformer } from '../types';
4
- export declare class TrimTransformer extends SchemaValueTransformer {
4
+ export declare class TrimTransformer extends SchemaValueTransformer<string, string, string> {
5
5
  readonly sourceType: StringConstructor;
6
6
  readonly targetType: StringConstructor;
7
- transform(value: string): TransformResult;
7
+ transform(value: string): TransformResult<string>;
8
8
  }
9
9
  export declare function Trim(): Decorator<'property' | 'accessor'>;
@@ -16,7 +16,7 @@ class TrimTransformer extends types_1.SchemaValueTransformer {
16
16
  }
17
17
  exports.TrimTransformer = TrimTransformer;
18
18
  function Trim() {
19
- return (0, decorators_1.createSchemaValueTransformerDecorator)(new TrimTransformer(), { type: String });
19
+ return (0, decorators_1.createSchemaValueTransformerDecorator)(new TrimTransformer(), { schema: (0, types_1.typeSchema)(String) });
20
20
  }
21
21
  exports.Trim = Trim;
22
22
  //# sourceMappingURL=trim.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"trim.js","sourceRoot":"","sources":["../../../source/schema/transformers/trim.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAAsE;AAEtE,oCAA8D;AAE9D,MAAa,eAAgB,SAAQ,8BAA8C;IAAnF;;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,MAAM,EAAE,IAAA,kBAAU,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtG,CAAC;AAFD,oBAEC"}
@@ -1,9 +1,9 @@
1
1
  import type { Decorator } from "../../reflection";
2
2
  import type { TransformResult } from '../types';
3
3
  import { SchemaValueTransformer } from '../types';
4
- export declare class UppercaseTransformer extends SchemaValueTransformer {
4
+ export declare class UppercaseTransformer extends SchemaValueTransformer<string, string, string> {
5
5
  readonly sourceType: StringConstructor;
6
6
  readonly targetType: StringConstructor;
7
- transform(value: string): TransformResult;
7
+ transform(value: string): TransformResult<string>;
8
8
  }
9
9
  export declare function Uppercase(): Decorator<'property' | 'accessor'>;
@@ -16,7 +16,7 @@ class UppercaseTransformer extends types_1.SchemaValueTransformer {
16
16
  }
17
17
  exports.UppercaseTransformer = UppercaseTransformer;
18
18
  function Uppercase() {
19
- return (0, decorators_1.createSchemaValueTransformerDecorator)(new UppercaseTransformer(), { type: String });
19
+ return (0, decorators_1.createSchemaValueTransformerDecorator)(new UppercaseTransformer(), { schema: (0, types_1.typeSchema)(String) });
20
20
  }
21
21
  exports.Uppercase = Uppercase;
22
22
  //# sourceMappingURL=uppercase.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"uppercase.js","sourceRoot":"","sources":["../../../source/schema/transformers/uppercase.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,8CAAsE;AAEtE,oCAA8D;AAE9D,MAAa,oBAAqB,SAAQ,8BAA8C;IAAxF;;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,MAAM,EAAE,IAAA,kBAAU,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3G,CAAC;AAFD,8BAEC"}
package/schema/types.d.ts CHANGED
@@ -1,29 +1,40 @@
1
1
  import type { JsonPath } from "../json-path/json-path";
2
- import type { OneOrMany, Record, Type } from "../types";
3
- import type { Schema } from './schema';
2
+ import type { AbstractConstructor, OneOrMany, Record, Type, TypedOmit } from "../types";
3
+ import type { NormalizedSchema, Schema } from './schema';
4
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, []>;
5
+ declare const schemaOutputTypeSymbol: unique symbol;
6
+ export declare type SchemaFactoryFunction<T extends Record, O = T> = (data: T) => NormalizeValueType<O>;
7
+ export declare type SchemaFactory<T extends Record, O = T> = {
8
+ type: Type<T>;
9
9
  builder?: undefined;
10
10
  } | {
11
11
  type?: undefined;
12
- builder: SchemaFactoryFunction<T>;
12
+ builder: SchemaFactoryFunction<T, O>;
13
13
  };
14
14
  export declare type ObjectSchemaProperties<T extends Record> = {
15
- [K in keyof T]-?: MaybeDeferredValueTypes<T[K]>;
15
+ [K in keyof T]-?: OneOrMany<Schema<any, T[K]>>;
16
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>;
17
+ export declare type NormalizedObjectSchemaProperties<T> = {
18
+ [K in keyof T]-?: Schema<any, T[K]>;
19
+ };
20
+ export declare type SchemaOutput<T extends Schema> = T extends ObjectSchema<any, infer O> ? O : T extends ValueSchema<any, infer O> ? O : T extends TypeSchema<infer O> ? O : never;
21
+ export declare type ObjectSchema<T extends Record = any, O extends Record = T> = {
22
+ [schemaOutputTypeSymbol]?: O;
23
+ sourceType?: ValueType;
24
+ factory?: SchemaFactory<T, O>;
20
25
  properties: ObjectSchemaProperties<T>;
21
26
  mask?: boolean;
22
- allowUnknownProperties?: MaybeDeferredValueTypes;
27
+ allowUnknownProperties?: OneOrMany<Schema>;
28
+ };
29
+ export declare type TypeSchema<T = any> = {
30
+ type: ValueType<T>;
31
+ };
32
+ export declare type NormalizedTypeSchema<T = any> = {
33
+ foo: ResolvedValueType<T>;
23
34
  };
24
- export declare type ValueSchema<T = any> = {
25
- [schemaTypeSymbol]?: T;
26
- type: MaybeDeferredValueTypes;
35
+ export declare type ValueSchema<T = unknown, O = T> = {
36
+ [schemaOutputTypeSymbol]?: O;
37
+ schema: OneOrMany<Schema<T, O>>;
27
38
  array?: boolean;
28
39
  optional?: boolean;
29
40
  nullable?: boolean;
@@ -35,63 +46,61 @@ export declare type ValueSchema<T = any> = {
35
46
  arrayConstraints?: OneOrMany<SchemaArrayConstraint>;
36
47
  valueConstraints?: OneOrMany<SchemaValueConstraint>;
37
48
  };
38
- export declare type NormalizedObjectSchema<T extends Record = any> = {
39
- factory?: SchemaFactory<T>;
40
- properties: {
41
- [K in keyof T]: Schema<T[K]>;
42
- };
49
+ export declare type NormalizedObjectSchema<T extends Record = any, O extends Record = T> = {
50
+ [schemaOutputTypeSymbol]?: O;
51
+ factory?: SchemaFactory<T, O>;
52
+ properties: NormalizedObjectSchemaProperties<T>;
43
53
  mask?: boolean;
44
54
  allowUnknownProperties: Set<Schema>;
45
55
  };
46
- export declare type NormalizedValueSchema<T = any> = {
47
- type: Set<ValueType<T>>;
56
+ export declare type NormalizedValueSchema<T = any, O = T> = {
57
+ [schemaOutputTypeSymbol]?: O;
58
+ schema: Set<Schema<T, O>>;
48
59
  array: boolean;
49
60
  optional: boolean;
50
61
  nullable: boolean;
51
62
  coerce: boolean;
52
63
  coercers: Map<ValueType, SchemaValueCoercer[]>;
53
- transformers: readonly SchemaValueTransformer[];
64
+ transformers: readonly SchemaValueTransformer<any, any, any>[];
54
65
  arrayConstraints: readonly SchemaArrayConstraint[];
55
66
  valueConstraints: readonly SchemaValueConstraint[];
56
67
  };
57
68
  export declare type SchemaContext = {
58
- schema: NormalizedValueSchema;
69
+ schema: NormalizedSchema;
59
70
  options: SchemaTestOptions;
60
71
  };
61
72
  export declare type ConstraintContext = SchemaContext;
62
73
  export declare type TransformerContext = SchemaContext;
63
74
  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> = {
75
+ export declare type NormalizeValueType<T> = T extends String ? string : T extends Number ? number : T extends Boolean ? boolean : T extends BigInt ? bigint : T extends Symbol ? symbol : T extends 'undefined' ? undefined : T extends 'null' ? null : T extends 'any' ? any : T;
76
+ export declare type NormalizeToValueType<T> = T extends string | String ? typeof String : T extends number ? typeof Number : T extends boolean ? typeof Boolean : T extends bigint ? typeof BigInt : T extends symbol ? typeof Symbol : T extends undefined ? 'undefined' : T extends null ? 'null' : T extends any ? 'any' : never;
77
+ export declare type ValueType<T = any> = AbstractConstructor<T> | NormalizeToValueType<T> | DeferredValueType<T>;
78
+ export declare type DeferredValueType<T = unknown> = {
66
79
  deferred: () => ValueType<T>;
67
80
  };
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>[];
81
+ export declare type ResolvedValueType<T = unknown> = Exclude<ValueType<T>, DeferredValueType>;
82
+ export declare type ValueTypeOutput<T extends ValueType> = T extends ValueType<infer U> ? NormalizeValueType<U> : never;
74
83
  export declare type Coercible = {
75
84
  coerce?: boolean;
76
85
  };
77
- export declare const primitiveValueTypes: ValueType[];
78
- export declare const primitiveValueTypesSet: Set<ValueType<any>>;
86
+ export declare const primitiveConstructors: ValueType[];
87
+ export declare const primitiveConstructorSet: Set<ValueType<any>>;
79
88
  export declare abstract class SchemaArrayConstraint {
80
89
  abstract validate(value: readonly unknown[], path: JsonPath, context: ConstraintContext): ConstraintResult;
81
90
  }
82
91
  export declare type OptionKeys<T extends Record> = readonly (keyof T)[];
83
92
  export declare abstract class SchemaValueConstraint {
84
- abstract readonly suitableTypes: ValueTypes;
93
+ abstract readonly suitableTypes: OneOrMany<ValueType>;
85
94
  abstract readonly expects: OneOrMany<string>;
86
95
  abstract validate(value: unknown, path: JsonPath, context: ConstraintContext): ConstraintResult;
87
96
  }
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;
97
+ export declare abstract class SchemaValueTransformer<T = any, O = T, TransformOutput = O> {
98
+ abstract readonly sourceType: OneOrMany<ValueType<T>>;
99
+ abstract readonly targetType: ValueType<TransformOutput>;
100
+ abstract transform(value: O, path: JsonPath, context: TransformerContext): TransformResult<TransformOutput>;
92
101
  }
93
102
  export declare abstract class SchemaValueCoercer {
94
- abstract readonly sourceType: ValueTypes;
103
+ abstract readonly sourceType: OneOrMany<ValueType>;
95
104
  abstract readonly targetType: ValueType;
96
105
  abstract coerce(value: unknown, path: JsonPath, context: CoercerContext): CoerceResult;
97
106
  }
@@ -108,19 +117,19 @@ export declare type SchemaTestOptions = {
108
117
  mask?: boolean;
109
118
  };
110
119
  export declare type SchemaTestResult<T> = {
111
- success: true;
120
+ valid: true;
112
121
  value: T;
113
122
  error?: undefined;
114
123
  } | {
115
- success: false;
124
+ valid: false;
116
125
  value?: undefined;
117
126
  error: SchemaError;
118
127
  };
119
128
  export declare type ConstraintResult = {
120
- success: true;
129
+ valid: true;
121
130
  error?: undefined;
122
131
  } | {
123
- success: false;
132
+ valid: false;
124
133
  error: SchemaError;
125
134
  };
126
135
  export declare type CoerceResult = {
@@ -132,19 +141,28 @@ export declare type CoerceResult = {
132
141
  value?: undefined;
133
142
  error: SchemaError;
134
143
  };
135
- export declare type TransformResult = {
144
+ export declare type TransformResult<T> = {
136
145
  success: true;
137
- value: any;
146
+ value: T;
138
147
  error?: undefined;
139
148
  } | {
140
149
  success: false;
141
150
  value?: undefined;
142
151
  error: SchemaError;
143
152
  };
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>);
153
+ export declare function objectSchema<T, O = T>(schema: ObjectSchema<T, O>): ObjectSchema<T, O>;
154
+ export declare function valueSchema<T, O = T>(schema: OneOrMany<Schema<T, O>>, options?: TypedOmit<ValueSchema<T, O>, 'schema'>): ValueSchema<T, O>;
155
+ export declare function typeSchema<T>(type: ValueType<T>): TypeSchema<NormalizeValueType<T>>;
156
+ export declare function isSchema<T extends Record, O extends Record>(value: any): value is Schema<T, O>;
157
+ export declare function isObjectSchema<T extends Record, O extends Record>(schema: Schema<T, O>): schema is ObjectSchema<T, O>;
158
+ export declare function isObjectSchema<T extends Record, O extends Record>(schema: any): schema is ObjectSchema<T, O>;
159
+ export declare function isValueSchema<T, O>(schema: Schema<T, O>): schema is ValueSchema<T, O>;
160
+ export declare function isValueSchema<T, O>(schema: any): schema is ValueSchema<T, O>;
161
+ export declare function isTypeSchema<T, O>(schema: Schema<T, O>): schema is TypeSchema<O>;
162
+ export declare function isTypeSchema<T, O>(schema: any): schema is TypeSchema<O>;
163
+ export declare function isDeferredValueType<T>(value: ValueType<T>): value is DeferredValueType<T>;
164
+ export declare function resolveValueTypes<T>(valueTypes: OneOrMany<ValueType<T>>): OneOrMany<ResolvedValueType<T>>;
165
+ export declare function resolveValueType<T>(valueType: ValueType<T>): ResolvedValueType<T>;
166
+ export declare function valueTypesOrSchemasToSchemas<T, O>(valueTypesOrSchemas: OneOrMany<ValueType<O> | Schema<T, O>>): OneOrMany<Schema<T, O>>;
167
+ export declare function valueTypeOrSchemaToSchema<T, O>(valueTypeOrSchema: ValueType<O> | Schema<T, O>): Schema<T, O>;
150
168
  export {};
package/schema/types.js CHANGED
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
+ /* eslint-disable @typescript-eslint/ban-types */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
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");
4
+ exports.valueTypeOrSchemaToSchema = exports.valueTypesOrSchemasToSchemas = exports.resolveValueType = exports.resolveValueTypes = exports.isDeferredValueType = exports.isTypeSchema = exports.isValueSchema = exports.isObjectSchema = exports.isSchema = exports.typeSchema = exports.valueSchema = exports.objectSchema = exports.SchemaValueCoercer = exports.SchemaValueTransformer = exports.SchemaValueConstraint = exports.SchemaArrayConstraint = exports.primitiveConstructorSet = exports.primitiveConstructors = void 0;
5
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);
6
+ exports.primitiveConstructors = [String, Number, Boolean, Symbol, BigInt, Function, 'undefined', 'null'];
7
+ exports.primitiveConstructorSet = new Set(exports.primitiveConstructors);
8
8
  class SchemaArrayConstraint {
9
9
  }
10
10
  exports.SchemaArrayConstraint = SchemaArrayConstraint;
@@ -21,24 +21,59 @@ function objectSchema(schema) {
21
21
  return schema;
22
22
  }
23
23
  exports.objectSchema = objectSchema;
24
- function valueSchema(schema) {
25
- return schema;
24
+ function valueSchema(schema, options) {
25
+ return { schema, ...options };
26
26
  }
27
27
  exports.valueSchema = valueSchema;
28
+ function typeSchema(type) {
29
+ return { type };
30
+ }
31
+ exports.typeSchema = typeSchema;
28
32
  function isSchema(value) {
29
- return isObjectSchema(value) || isValueSchema(value);
33
+ return isObjectSchema(value) || isValueSchema(value) || isTypeSchema(value);
30
34
  }
31
35
  exports.isSchema = isSchema;
32
- function isObjectSchema(value) {
33
- return (0, type_guards_1.isObject)(value?.properties);
36
+ function isObjectSchema(schema) {
37
+ return (0, type_guards_1.isObject)(schema?.properties);
34
38
  }
35
39
  exports.isObjectSchema = isObjectSchema;
36
- function isValueSchema(value) {
37
- return (0, type_guards_1.isObject)(value) && (0, type_guards_1.isDefined)(value?.type);
40
+ function isValueSchema(schema) {
41
+ return (0, type_guards_1.isObject)(schema) && (0, type_guards_1.isDefined)(schema?.schema);
38
42
  }
39
43
  exports.isValueSchema = isValueSchema;
44
+ function isTypeSchema(schema) {
45
+ return (0, type_guards_1.isObject)(schema) && (0, type_guards_1.isFunction)(schema?.type);
46
+ }
47
+ exports.isTypeSchema = isTypeSchema;
40
48
  function isDeferredValueType(value) {
41
- return (0, type_guards_1.isObject)(value) && (0, object_1.hasOwnProperty)(value, 'deferred');
49
+ return (0, type_guards_1.isObject)(value) && (0, type_guards_1.isFunction)(value.deferred);
42
50
  }
43
51
  exports.isDeferredValueType = isDeferredValueType;
52
+ function resolveValueTypes(valueTypes) {
53
+ if ((0, type_guards_1.isArray)(valueTypes)) {
54
+ return valueTypes.flatMap((valueType) => resolveValueTypes(valueType));
55
+ }
56
+ return resolveValueType(valueTypes);
57
+ }
58
+ exports.resolveValueTypes = resolveValueTypes;
59
+ function resolveValueType(valueType) {
60
+ return isDeferredValueType(valueType)
61
+ ? resolveValueType(valueType.deferred())
62
+ : valueType;
63
+ }
64
+ exports.resolveValueType = resolveValueType;
65
+ function valueTypesOrSchemasToSchemas(valueTypesOrSchemas) {
66
+ if ((0, type_guards_1.isArray)(valueTypesOrSchemas)) {
67
+ return valueTypesOrSchemas.map(valueTypeOrSchemaToSchema);
68
+ }
69
+ return valueTypeOrSchemaToSchema(valueTypesOrSchemas);
70
+ }
71
+ exports.valueTypesOrSchemasToSchemas = valueTypesOrSchemasToSchemas;
72
+ function valueTypeOrSchemaToSchema(valueTypeOrSchema) {
73
+ if (isSchema(valueTypeOrSchema)) {
74
+ return valueTypeOrSchema;
75
+ }
76
+ return typeSchema(valueTypeOrSchema);
77
+ }
78
+ exports.valueTypeOrSchemaToSchema = valueTypeOrSchemaToSchema;
44
79
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../source/schema/types.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;AAIjD,sDAA+E;AAgHlE,QAAA,qBAAqB,GAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAwC,EAAE,MAAwC,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAClL,QAAA,uBAAuB,GAAG,IAAI,GAAG,CAAC,6BAAqB,CAAC,CAAC;AAEtE,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,CAAW,MAA0B;IAC/D,OAAO,MAAM,CAAC;AAChB,CAAC;AAFD,oCAEC;AAED,SAAgB,WAAW,CAAW,MAA+B,EAAE,OAAgD;IACrH,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;AAChC,CAAC;AAFD,kCAEC;AAED,SAAgB,UAAU,CAAI,IAAkB;IAC9C,OAAO,EAAE,IAAI,EAAuC,CAAC;AACvD,CAAC;AAFD,gCAEC;AAED,SAAgB,QAAQ,CAAqC,KAAU;IACrE,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAFD,4BAEC;AAID,SAAgB,cAAc,CAAC,MAAW;IACxC,OAAO,IAAA,sBAAQ,EAAE,MAA4C,EAAE,UAAU,CAAC,CAAC;AAC7E,CAAC;AAFD,wCAEC;AAID,SAAgB,aAAa,CAAC,MAAW;IACvC,OAAO,IAAA,sBAAQ,EAAC,MAAM,CAAC,IAAI,IAAA,uBAAS,EAAE,MAAkC,EAAE,MAAM,CAAC,CAAC;AACpF,CAAC;AAFD,sCAEC;AAID,SAAgB,YAAY,CAAC,MAAW;IACtC,OAAO,IAAA,sBAAQ,EAAC,MAAM,CAAC,IAAI,IAAA,wBAAU,EAAE,MAAiC,EAAE,IAAI,CAAC,CAAC;AAClF,CAAC;AAFD,oCAEC;AAED,SAAgB,mBAAmB,CAAI,KAAmB;IACxD,OAAO,IAAA,sBAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,wBAAU,EAAE,KAA2B,CAAC,QAAQ,CAAC,CAAC;AAC9E,CAAC;AAFD,kDAEC;AAED,SAAgB,iBAAiB,CAAI,UAAmC;IACtE,IAAI,IAAA,qBAAO,EAAC,UAAU,CAAC,EAAE;QACvB,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;KACxE;IAED,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAND,8CAMC;AAED,SAAgB,gBAAgB,CAAI,SAAuB;IACzD,OAAO,mBAAmB,CAAC,SAAS,CAAC;QACnC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC,CAAC,SAAiC,CAAC;AACxC,CAAC;AAJD,4CAIC;AAED,SAAgB,4BAA4B,CAAO,mBAA2D;IAC5G,IAAI,IAAA,qBAAO,EAAC,mBAAmB,CAAC,EAAE;QAChC,OAAO,mBAAmB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;KAC3D;IAED,OAAO,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;AACxD,CAAC;AAND,oEAMC;AAED,SAAgB,yBAAyB,CAAO,iBAA8C;IAC5F,IAAI,QAAQ,CAAO,iBAAiB,CAAC,EAAE;QACrC,OAAO,iBAAiB,CAAC;KAC1B;IAED,OAAO,UAAU,CAAC,iBAAiB,CAAkB,CAAC;AACxD,CAAC;AAND,8DAMC"}
@@ -1,12 +1,13 @@
1
- import type { Schema } from '../schema';
2
- import type { MaybeDeferredValueTypes, NormalizedObjectSchema, NormalizedValueSchema, ObjectSchema, ValueSchema, ValueTypes } from '../types';
3
- export declare const normalizeSchema: typeof _normalizeObjectSchema;
1
+ import type { NormalizedSchema, Schema } from '../schema';
2
+ import type { NormalizedObjectSchema, NormalizedTypeSchema, NormalizedValueSchema, ObjectSchema, TypeSchema, ValueSchema } from '../types';
3
+ export declare const normalizeSchema: typeof _normalizeSchema;
4
+ export declare const normalizeObjectSchema: typeof _normalizeObjectSchema;
4
5
  export declare const normalizeValueSchema: typeof _normalizeValueSchema;
6
+ export declare const normalizeTypeSchema: typeof _normalizeTypeSchema;
5
7
  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>;
8
+ declare function _normalizeSchema<T, O>(schema: Schema<T, O>): NormalizedSchema<T, O>;
9
+ declare function _normalizeObjectSchema<T, O>(schema: ObjectSchema<T, O>): NormalizedObjectSchema<T, O>;
10
+ declare function _normalizeValueSchema<T, O>(schema: ValueSchema<T, O>): NormalizedValueSchema<T, O>;
11
+ declare function _normalizeTypeSchema<T>(schema: TypeSchema<T>): NormalizedTypeSchema<T>;
12
+ declare function _getArrayItemSchema<T, O>(schema: ValueSchema<T, O>): ValueSchema<T, O>;
12
13
  export {};