justus 0.4.1 → 0.5.0

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 (120) hide show
  1. package/README.md +78 -0
  2. package/dist/dts-generator.cjs +36 -22
  3. package/dist/dts-generator.cjs.map +1 -1
  4. package/dist/dts-generator.d.ts +1 -1
  5. package/dist/dts-generator.mjs +15 -22
  6. package/dist/dts-generator.mjs.map +1 -1
  7. package/dist/errors.cjs +3 -3
  8. package/dist/errors.cjs.map +1 -1
  9. package/dist/errors.mjs +3 -3
  10. package/dist/errors.mjs.map +1 -1
  11. package/dist/extra/arn.cjs +98 -0
  12. package/dist/extra/arn.cjs.map +6 -0
  13. package/dist/extra/arn.d.ts +71 -0
  14. package/dist/extra/arn.mjs +68 -0
  15. package/dist/extra/arn.mjs.map +6 -0
  16. package/dist/extra/ean13.cjs +52 -0
  17. package/dist/extra/ean13.cjs.map +6 -0
  18. package/dist/extra/ean13.d.ts +9 -0
  19. package/dist/extra/ean13.mjs +26 -0
  20. package/dist/extra/ean13.mjs.map +6 -0
  21. package/dist/{validators → extra}/url.cjs +10 -10
  22. package/dist/extra/url.cjs.map +6 -0
  23. package/dist/{validators → extra}/url.d.ts +4 -5
  24. package/dist/{validators → extra}/url.mjs +8 -9
  25. package/dist/{validators → extra}/url.mjs.map +3 -3
  26. package/dist/extra/uuid.cjs +45 -0
  27. package/dist/extra/uuid.cjs.map +6 -0
  28. package/dist/extra/uuid.d.ts +10 -0
  29. package/dist/extra/uuid.mjs +18 -0
  30. package/dist/extra/uuid.mjs.map +6 -0
  31. package/dist/index.cjs +0 -5
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.ts +18 -19
  34. package/dist/index.mjs +12 -15
  35. package/dist/index.mjs.map +1 -1
  36. package/dist/registry.cjs +44 -0
  37. package/dist/registry.cjs.map +6 -0
  38. package/dist/registry.d.ts +16 -0
  39. package/dist/registry.mjs +19 -0
  40. package/dist/registry.mjs.map +6 -0
  41. package/dist/schema.cjs +3 -5
  42. package/dist/schema.cjs.map +1 -1
  43. package/dist/schema.d.ts +6 -5
  44. package/dist/schema.mjs +3 -4
  45. package/dist/schema.mjs.map +1 -1
  46. package/dist/types.cjs.map +1 -1
  47. package/dist/types.d.ts +38 -12
  48. package/dist/types.mjs.map +1 -1
  49. package/dist/utilities.cjs +5 -7
  50. package/dist/utilities.cjs.map +1 -1
  51. package/dist/utilities.mjs +5 -7
  52. package/dist/utilities.mjs.map +1 -1
  53. package/dist/validators/array.cjs +4 -2
  54. package/dist/validators/array.cjs.map +1 -1
  55. package/dist/validators/array.d.ts +3 -4
  56. package/dist/validators/array.mjs +3 -2
  57. package/dist/validators/array.mjs.map +1 -1
  58. package/dist/validators/boolean.cjs +6 -4
  59. package/dist/validators/boolean.cjs.map +1 -1
  60. package/dist/validators/boolean.d.ts +2 -3
  61. package/dist/validators/boolean.mjs +4 -3
  62. package/dist/validators/boolean.mjs.map +1 -1
  63. package/dist/validators/constant.cjs +4 -5
  64. package/dist/validators/constant.cjs.map +1 -1
  65. package/dist/validators/constant.d.ts +0 -2
  66. package/dist/validators/constant.mjs +3 -3
  67. package/dist/validators/constant.mjs.map +1 -1
  68. package/dist/validators/date.cjs +8 -10
  69. package/dist/validators/date.cjs.map +1 -1
  70. package/dist/validators/date.d.ts +3 -4
  71. package/dist/validators/date.mjs +6 -9
  72. package/dist/validators/date.mjs.map +1 -1
  73. package/dist/validators/number.cjs +6 -4
  74. package/dist/validators/number.cjs.map +1 -1
  75. package/dist/validators/number.d.ts +5 -6
  76. package/dist/validators/number.mjs +4 -3
  77. package/dist/validators/number.mjs.map +1 -1
  78. package/dist/validators/object.cjs +7 -4
  79. package/dist/validators/object.cjs.map +1 -1
  80. package/dist/validators/object.d.ts +6 -7
  81. package/dist/validators/object.mjs +7 -9
  82. package/dist/validators/object.mjs.map +1 -1
  83. package/dist/validators/optional.cjs.map +1 -1
  84. package/dist/validators/optional.d.ts +5 -4
  85. package/dist/validators/optional.mjs.map +1 -1
  86. package/dist/validators/string.cjs +6 -4
  87. package/dist/validators/string.cjs.map +1 -1
  88. package/dist/validators/string.d.ts +5 -6
  89. package/dist/validators/string.mjs +4 -3
  90. package/dist/validators/string.mjs.map +1 -1
  91. package/dist/validators/tuple.cjs +3 -2
  92. package/dist/validators/tuple.cjs.map +1 -1
  93. package/dist/validators/tuple.d.ts +3 -3
  94. package/dist/validators/tuple.mjs +3 -2
  95. package/dist/validators/tuple.mjs.map +1 -1
  96. package/dist/validators/union.cjs.map +1 -1
  97. package/dist/validators/union.d.ts +9 -7
  98. package/dist/validators/union.mjs.map +1 -1
  99. package/package.json +46 -6
  100. package/src/dts-generator.ts +17 -27
  101. package/src/extra/arn.ts +151 -0
  102. package/src/extra/ean13.ts +31 -0
  103. package/src/{validators → extra}/url.ts +6 -8
  104. package/src/extra/uuid.ts +18 -0
  105. package/src/index.ts +18 -19
  106. package/src/registry.ts +28 -0
  107. package/src/schema.ts +10 -11
  108. package/src/types.ts +80 -11
  109. package/src/utilities.ts +5 -9
  110. package/src/validators/array.ts +3 -3
  111. package/src/validators/boolean.ts +2 -2
  112. package/src/validators/constant.ts +3 -2
  113. package/src/validators/date.ts +9 -9
  114. package/src/validators/number.ts +6 -7
  115. package/src/validators/object.ts +15 -14
  116. package/src/validators/optional.ts +9 -7
  117. package/src/validators/string.ts +6 -6
  118. package/src/validators/tuple.ts +20 -6
  119. package/src/validators/union.ts +35 -10
  120. package/dist/validators/url.cjs.map +0 -6
@@ -0,0 +1,16 @@
1
+ import type { ConstantValidator } from './validators/constant';
2
+ import type { ObjectValidator } from './validators/object';
3
+ import type { TupleValidator } from './validators/tuple';
4
+ type RegistryTypes = {
5
+ constant: typeof ConstantValidator;
6
+ object: typeof ObjectValidator;
7
+ tuple: typeof TupleValidator;
8
+ };
9
+ /** Internal registry for validator constructors (avoids circular imports) */
10
+ export declare const registry: {
11
+ /** Registers the specified validator constructor */
12
+ set<K extends keyof RegistryTypes>(key: K, constructor: RegistryTypes[K]): void;
13
+ /** Retrieves the specified validator constructor */
14
+ get<K_1 extends keyof RegistryTypes>(key: K_1): RegistryTypes[K_1];
15
+ };
16
+ export {};
@@ -0,0 +1,19 @@
1
+ // registry.ts
2
+ import { assertSchema } from "./errors.mjs";
3
+ var _registry = {};
4
+ var registry = {
5
+ /** Registers the specified validator constructor */
6
+ set(key, constructor) {
7
+ _registry[key] = constructor;
8
+ },
9
+ /** Retrieves the specified validator constructor */
10
+ get(key) {
11
+ const value = _registry[key];
12
+ assertSchema(!!value, `No validator found for "${key}"`);
13
+ return value;
14
+ }
15
+ };
16
+ export {
17
+ registry
18
+ };
19
+ //# sourceMappingURL=registry.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/registry.ts"],
4
+ "mappings": ";AAAA,SAAS,oBAAoB;AAY7B,IAAM,YAAoC,CAAC;AAGpC,IAAM,WAAW;AAAA;AAAA,EAEtB,IAAmC,KAAQ,aAAqC;AAC9E,cAAU,GAAG,IAAI;AAAA,EACnB;AAAA;AAAA,EAGA,IAAmC,KAA0B;AAC3D,UAAM,QAAQ,UAAU,GAAG;AAC3B,iBAAa,CAAC,CAAE,OAAO,2BAA2B,GAAG,GAAG;AACxD,WAAO;AAAA,EACT;AACF;",
5
+ "names": []
6
+ }
package/dist/schema.cjs CHANGED
@@ -20,24 +20,22 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // schema.ts
21
21
  var schema_exports = {};
22
22
  __export(schema_exports, {
23
- _allowAdditionalProperties: () => _allowAdditionalProperties,
24
23
  allowAdditionalProperties: () => allowAdditionalProperties
25
24
  });
26
25
  module.exports = __toCommonJS(schema_exports);
27
26
  var import_utilities = require("./utilities.cjs");
28
27
  var import_any = require("./validators/any.cjs");
29
- function _allowAdditionalProperties(options) {
28
+ function additionalProperties(options) {
30
29
  if (options === false)
31
30
  return { [Symbol.justusAdditionalValidator]: false };
32
31
  if (options === true)
33
32
  return { [Symbol.justusAdditionalValidator]: import_any.any };
34
33
  return { [Symbol.justusAdditionalValidator]: options ? (0, import_utilities.getValidator)(options) : import_any.any };
35
34
  }
36
- var allowAdditionalProperties = _allowAdditionalProperties;
37
- allowAdditionalProperties[Symbol.justusAdditionalValidator] = import_any.any;
35
+ var allowAdditionalProperties = additionalProperties;
36
+ additionalProperties[Symbol.justusAdditionalValidator] = import_any.any;
38
37
  // Annotate the CommonJS export names for ESM import in node:
39
38
  0 && (module.exports = {
40
- _allowAdditionalProperties,
41
39
  allowAdditionalProperties
42
40
  });
43
41
  //# sourceMappingURL=schema.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/schema.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,uBAA6B;AAC7B,iBAAoB;AAkBb,SAAS,2BAA2B,SAAyE;AAClH,MAAI,YAAY;AAAO,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,MAAM;AAC1E,MAAI,YAAY;AAAM,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,eAAI;AAEvE,SAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,cAAU,+BAAa,OAAO,IAAI,eAAI;AACrF;AAWO,IAAM,4BAA4B;AAKzC,0BAA0B,OAAO,yBAAyB,IAAI;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA6B;AAC7B,iBAAoB;AAmBpB,SAAS,qBAAqB,SAAyE;AACrG,MAAI,YAAY;AAAO,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,MAAM;AAC1E,MAAI,YAAY;AAAM,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,eAAI;AAEvE,SAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,cAAU,+BAAa,OAAO,IAAI,eAAI;AACrF;AAWO,IAAM,4BAA4B;AAKzC,qBAAqB,OAAO,yBAAyB,IAAI;",
5
5
  "names": []
6
6
  }
package/dist/schema.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import type { AdditionalProperties, InferValidation, Validation, Validator } from './types';
2
2
  /** Internal definition of `allowAdditionalProperties(...)` */
3
- export declare function _allowAdditionalProperties(): AdditionalProperties<Validator<any>>;
4
- export declare function _allowAdditionalProperties(allow: true): AdditionalProperties<Validator<any>>;
5
- export declare function _allowAdditionalProperties(allow: false): AdditionalProperties<false>;
6
- export declare function _allowAdditionalProperties<V extends Validation>(validation: V): AdditionalProperties<Validator<InferValidation<V>>>;
3
+ declare function additionalProperties(): AdditionalProperties<Validator<any>>;
4
+ declare function additionalProperties(allow: true): AdditionalProperties<Validator<any>>;
5
+ declare function additionalProperties(allow: false): AdditionalProperties<false>;
6
+ declare function additionalProperties<V extends Validation>(validation: V): AdditionalProperties<Validator<InferValidation<V>>>;
7
7
  /**
8
8
  * Allow additional properties in `Schema`s.
9
9
  *
@@ -13,4 +13,5 @@ export declare function _allowAdditionalProperties<V extends Validation>(validat
13
13
  *
14
14
  * @param allow - A `boolean` or a `Validator` instance
15
15
  */
16
- export declare const allowAdditionalProperties: typeof _allowAdditionalProperties & AdditionalProperties<Validator<any>>;
16
+ export declare const allowAdditionalProperties: typeof additionalProperties & AdditionalProperties<Validator<any, any>>;
17
+ export {};
package/dist/schema.mjs CHANGED
@@ -1,17 +1,16 @@
1
1
  // schema.ts
2
2
  import { getValidator } from "./utilities.mjs";
3
3
  import { any } from "./validators/any.mjs";
4
- function _allowAdditionalProperties(options) {
4
+ function additionalProperties(options) {
5
5
  if (options === false)
6
6
  return { [Symbol.justusAdditionalValidator]: false };
7
7
  if (options === true)
8
8
  return { [Symbol.justusAdditionalValidator]: any };
9
9
  return { [Symbol.justusAdditionalValidator]: options ? getValidator(options) : any };
10
10
  }
11
- var allowAdditionalProperties = _allowAdditionalProperties;
12
- allowAdditionalProperties[Symbol.justusAdditionalValidator] = any;
11
+ var allowAdditionalProperties = additionalProperties;
12
+ additionalProperties[Symbol.justusAdditionalValidator] = any;
13
13
  export {
14
- _allowAdditionalProperties,
15
14
  allowAdditionalProperties
16
15
  };
17
16
  //# sourceMappingURL=schema.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/schema.ts"],
4
- "mappings": ";AAEA,SAAS,oBAAoB;AAC7B,SAAS,WAAW;AAkBb,SAAS,2BAA2B,SAAyE;AAClH,MAAI,YAAY;AAAO,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,MAAM;AAC1E,MAAI,YAAY;AAAM,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,IAAI;AAEvE,SAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,UAAU,aAAa,OAAO,IAAI,IAAI;AACrF;AAWO,IAAM,4BAA4B;AAKzC,0BAA0B,OAAO,yBAAyB,IAAI;",
4
+ "mappings": ";AAAA,SAAS,oBAAoB;AAC7B,SAAS,WAAW;AAmBpB,SAAS,qBAAqB,SAAyE;AACrG,MAAI,YAAY;AAAO,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,MAAM;AAC1E,MAAI,YAAY;AAAM,WAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,IAAI;AAEvE,SAAO,EAAE,CAAC,OAAO,yBAAyB,GAAG,UAAU,aAAa,OAAO,IAAI,IAAI;AACrF;AAWO,IAAM,4BAA4B;AAKzC,qBAAqB,OAAO,yBAAyB,IAAI;",
5
5
  "names": []
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/types.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;AAwBO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,UAAU,UAAU,SAAS,KAAK,SAAS;AAAA,IAC3C,CAAC,OAAO,QAAQ,GAAG,UAAU,OAAO,QAAQ,EAAE,KAAK,SAAS;AAAA,IAC5D,CAAC,OAAO,eAAe,GAAG;AAAA,EAC5B,CAAC;AACH;AAMO,IAAe,oBAAf,MACkD;AAAA,EACvD,CAAC,OAAO,eAAe,IAAI;AAAA,EAE3B,WAAqB;AAAA;AAAA,EAMrB,EAAG,OAAO,QAAQ,IAAsC;AACtD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;AAwBO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,UAAU,UAAU,SAAS,KAAK,SAAS;AAAA,IAC3C,CAAC,OAAO,QAAQ,GAAG,UAAU,OAAO,QAAQ,EAAE,KAAK,SAAS;AAAA,IAC5D,CAAC,OAAO,eAAe,GAAG;AAAA,EAC5B,CAAC;AACH;AAMO,IAAe,oBAAf,MACwD;AAAA,EAC7D,CAAC,OAAO,eAAe,IAAI;AAAA,EAE3B,WAAqB;AAAA;AAAA,EAMrB,EAAG,OAAO,QAAQ,IAAyC;AACzD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
5
5
  "names": []
6
6
  }
package/dist/types.d.ts CHANGED
@@ -27,13 +27,13 @@ export declare const defaultValidationOptions: Readonly<Required<ValidationOptio
27
27
  * A `Validator` is an object capable of validating a given _value_ and
28
28
  * (possibly) converting it the required type `T`.
29
29
  */
30
- export interface Validator<T = any> extends Iterable<TupleRestParameter<T>> {
30
+ export interface Validator<T = any, I = T> extends Iterable<TupleRestParameter<T, I>> {
31
31
  [Symbol.justusValidator]: this;
32
32
  optional?: boolean;
33
33
  /** Validate a _value_ and optionally convert it to the required `Type` */
34
34
  validate(value: unknown, options?: ValidationOptions | undefined): T;
35
35
  /** Allow any `Validator` to be used as a rest parameter in `Tuple`s */
36
- [Symbol.iterator](): Generator<TupleRestParameter<T>>;
36
+ [Symbol.iterator](): Generator<TupleRestParameter<T, I>>;
37
37
  }
38
38
  /**
39
39
  * Create a validator "factory", that is a function that when invoked will
@@ -46,13 +46,13 @@ export declare function makeValidatorFactory<V extends Validator, F extends (...
46
46
  * A `Validator` is an object capable of validating a given _value_ and
47
47
  * (possibly) converting it the required type `T`.
48
48
  */
49
- export declare abstract class AbstractValidator<T = any> implements Validator<T>, Iterable<TupleRestParameter<T>> {
49
+ export declare abstract class AbstractValidator<T, I = T> implements Validator<T, I>, Iterable<TupleRestParameter<T, I>> {
50
50
  [Symbol.justusValidator]: this;
51
51
  optional?: boolean;
52
52
  /** Validate a _value_ and optionally convert it to the required `Type` */
53
53
  abstract validate(value: unknown, options?: ValidationOptions | undefined): T;
54
54
  /** Allow any `Validator` to be used as a rest parameter in `Tuple`s */
55
- [Symbol.iterator](): Generator<TupleRestParameter<T>>;
55
+ [Symbol.iterator](): Generator<TupleRestParameter<T, I>>;
56
56
  }
57
57
  /**
58
58
  * The `Validation` type indicates all potential types which could be used
@@ -70,13 +70,19 @@ null | boolean | number | string;
70
70
  /**
71
71
  * Infer the type returned by a `Validation` when validating.
72
72
  */
73
- export type InferValidation<V> = V extends Validator<infer T> ? T : V extends undefined ? V : V extends boolean ? V : V extends number ? V : V extends string ? V : V extends null ? V : V extends Tuple ? InferTuple<V> : InferSchema<V>;
73
+ export type InferValidation<V> = V extends Validator<infer T, any> ? T : V extends undefined ? V : V extends boolean ? V : V extends number ? V : V extends string ? V : V extends null ? V : V extends Tuple ? InferTuple<V> : InferSchema<V>;
74
+ /**
75
+ * Infer the type compatible with a `Validation`'s input.
76
+ */
77
+ export type InferInput<V> = V extends Validator<any, infer T> ? T : V extends undefined ? V : V extends boolean ? V : V extends number ? V : V extends string ? V : V extends null ? V : V extends Tuple ? InferInputTuple<V> : InferInputSchema<V>;
74
78
  /** Infer the type validated by a `Validation` or `TupleRestParameter` */
75
- export type InferValidationOrTupleRest<T> = T extends TupleRestParameter<infer X> ? X : T extends Validation ? InferValidation<T> : never;
79
+ export type InferValidationOrTupleRest<T> = T extends TupleRestParameter<infer X, any> ? X : T extends Validation ? InferValidation<T> : never;
80
+ /** Infer the input type for a `Validation` or `TupleRestParameter` */
81
+ export type InferInputValidationOrTupleRest<T> = T extends TupleRestParameter<any, infer X> ? X : T extends Validation ? InferInput<T> : never;
76
82
  /**
77
83
  * A `Tuple` is defined to be an array of `Validation` or `TupleRest`
78
84
  */
79
- export type Tuple = readonly (Validation | TupleRestParameter)[];
85
+ export type Tuple = readonly (Validation | TupleRestParameter<any, any>)[];
80
86
  /**
81
87
  * The `TupleRestParameter` defines a tuple member that can occur several
82
88
  * times while validating an array.
@@ -90,8 +96,8 @@ export type Tuple = readonly (Validation | TupleRestParameter)[];
90
96
  * const myTuple = tuple([ number, ...nonEmptyString ])
91
97
  * ```
92
98
  */
93
- export type TupleRestParameter<T = any> = {
94
- [Symbol.justusRestValidator]: Validator<T>;
99
+ export type TupleRestParameter<T, I> = {
100
+ [Symbol.justusRestValidator]: Validator<T, I>;
95
101
  };
96
102
  /**
97
103
  * Infer the type returned by a `TupleValidator` when validating an array.
@@ -105,6 +111,18 @@ export type InferTuple<T> = T extends Tuple ? T extends readonly [] ? [] : T ext
105
111
  ] : never : T extends readonly (infer V)[] ? [
106
112
  ...InferValidationOrTupleRest<V>[]
107
113
  ] : never : never;
114
+ /**
115
+ * Infer a time compatible with a `TupleValidator`'s input.
116
+ */
117
+ export type InferInputTuple<T> = T extends Tuple ? T extends readonly [] ? [] : T extends readonly [Validation, ...any[]] ? T extends readonly [infer V, ...infer Rest] ? [
118
+ InferInput<V>,
119
+ ...InferInputTuple<Rest>
120
+ ] : never : T extends readonly [...any[], Validation] ? T extends readonly [...infer Rest, infer V] ? [
121
+ ...InferInputTuple<Rest>,
122
+ InferInput<V>
123
+ ] : never : T extends readonly (infer V)[] ? [
124
+ ...InferInputValidationOrTupleRest<V>[]
125
+ ] : never : never;
108
126
  /**
109
127
  * The `Schema` interface defines what properties are defined for objects and
110
128
  * how they should be validated.
@@ -130,9 +148,17 @@ export type InferSchema2<S> = {
130
148
  } & {
131
149
  [key in keyof S as key extends string ? undefined extends InferValidation<S[key]> ? never : key : never]-?: InferValidation<S[key]>;
132
150
  };
151
+ /** Infer the input type compatible with a `Schema` */
152
+ export type InferInputSchema<S> = S extends AdditionalProperties<Validator<any, infer X>> ? {
153
+ [key in string]: X;
154
+ } & InferInputSchema2<S> : InferInputSchema2<S>;
155
+ /** Infer the input type of the properties described by a `Schema` */
156
+ export type InferInputSchema2<S> = {
157
+ [key in keyof S as key extends string ? key : never]?: InferInput<S[key]>;
158
+ } & {
159
+ [key in keyof S as key extends string ? InferInput<S[key]> extends never ? never : undefined extends InferInput<S[key]> ? never : key : never]-?: InferInput<S[key]>;
160
+ };
133
161
  /** Utility type to infer primitive branding according to a string */
134
162
  export type Branding<S extends string> = {
135
- [key in keyof {
136
- __brand: never;
137
- } as `__brand_${S}`]: never;
163
+ [brand in `__brand_${S}`]: never;
138
164
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/types.ts"],
4
- "mappings": ";AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;AAwBO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,UAAU,UAAU,SAAS,KAAK,SAAS;AAAA,IAC3C,CAAC,OAAO,QAAQ,GAAG,UAAU,OAAO,QAAQ,EAAE,KAAK,SAAS;AAAA,IAC5D,CAAC,OAAO,eAAe,GAAG;AAAA,EAC5B,CAAC;AACH;AAMO,IAAe,oBAAf,MACkD;AAAA,EACvD,CAAC,OAAO,eAAe,IAAI;AAAA,EAE3B,WAAqB;AAAA;AAAA,EAMrB,EAAG,OAAO,QAAQ,IAAsC;AACtD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
4
+ "mappings": ";AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;AAwBO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,UAAU,UAAU,SAAS,KAAK,SAAS;AAAA,IAC3C,CAAC,OAAO,QAAQ,GAAG,UAAU,OAAO,QAAQ,EAAE,KAAK,SAAS;AAAA,IAC5D,CAAC,OAAO,eAAe,GAAG;AAAA,EAC5B,CAAC;AACH;AAMO,IAAe,oBAAf,MACwD;AAAA,EAC7D,CAAC,OAAO,eAAe,IAAI;AAAA,EAE3B,WAAqB;AAAA;AAAA,EAMrB,EAAG,OAAO,QAAQ,IAAyC;AACzD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
5
5
  "names": []
6
6
  }
@@ -23,12 +23,10 @@ __export(utilities_exports, {
23
23
  getValidator: () => getValidator
24
24
  });
25
25
  module.exports = __toCommonJS(utilities_exports);
26
- var import_constant = require("./validators/constant.cjs");
27
- var import_object = require("./validators/object.cjs");
28
- var import_tuple = require("./validators/tuple.cjs");
26
+ var import_registry = require("./registry.cjs");
29
27
  function getValidator(validation) {
30
28
  if (validation === null)
31
- return import_constant.nullValidator;
29
+ return new (import_registry.registry.get("constant"))(null);
32
30
  if (validation[Symbol.justusValidator]) {
33
31
  return validation[Symbol.justusValidator];
34
32
  }
@@ -36,11 +34,11 @@ function getValidator(validation) {
36
34
  case "boolean":
37
35
  case "string":
38
36
  case "number":
39
- return new import_constant.ConstantValidator(validation);
37
+ return new (import_registry.registry.get("constant"))(validation);
40
38
  case "object":
41
39
  if (Array.isArray(validation))
42
- return new import_tuple.TupleValidator(validation);
43
- return new import_object.ObjectValidator(validation);
40
+ return new (import_registry.registry.get("tuple"))(validation);
41
+ return new (import_registry.registry.get("object"))(validation);
44
42
  default:
45
43
  throw new TypeError(`Invalid validation (type=${typeof validation})`);
46
44
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/utilities.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAiD;AAEjD,oBAAgC;AAEhC,mBAA+B;AAaxB,SAAS,aAAa,YAAmC;AAE9D,MAAI,eAAe;AAAM,WAAO;AAGhC,MAAW,WAAY,OAAO,eAAe,GAAG;AAC9C,WAAc,WAAY,OAAO,eAAe;AAAA,EAClD;AAGA,UAAQ,OAAO,YAAY;AAAA,IAEzB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,IAAI,kCAAkB,UAAU;AAAA,IAGzC,KAAK;AAEH,UAAI,MAAM,QAAQ,UAAU;AAAG,eAAO,IAAI,4BAAe,UAAU;AAEnE,aAAO,IAAI,8BAAgB,UAAoB;AAAA,IAGjD;AACE,YAAM,IAAI,UAAU,4BAA4B,OAAO,aAAa;AAAA,EACxE;AACF;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AAalB,SAAS,aAAa,YAAmC;AAE9D,MAAI,eAAe;AAAM,WAAO,KAAK,yBAAS,IAAI,UAAU,GAAG,IAAI;AAGnE,MAAW,WAAY,OAAO,eAAe,GAAG;AAC9C,WAAc,WAAY,OAAO,eAAe;AAAA,EAClD;AAGA,UAAQ,OAAO,YAAY;AAAA,IAEzB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,KAAK,yBAAS,IAAI,UAAU,GAAG,UAAU;AAAA,IAGlD,KAAK;AAEH,UAAI,MAAM,QAAQ,UAAU;AAAG,eAAO,KAAK,yBAAS,IAAI,OAAO,GAAG,UAAU;AAE5E,aAAO,KAAK,yBAAS,IAAI,QAAQ,GAAG,UAAoB;AAAA,IAG1D;AACE,YAAM,IAAI,UAAU,4BAA4B,OAAO,UAAU,GAAG;AAAA,EACxE;AACF;",
5
5
  "names": []
6
6
  }
@@ -1,10 +1,8 @@
1
1
  // utilities.ts
2
- import { ConstantValidator, nullValidator } from "./validators/constant.mjs";
3
- import { ObjectValidator } from "./validators/object.mjs";
4
- import { TupleValidator } from "./validators/tuple.mjs";
2
+ import { registry } from "./registry.mjs";
5
3
  function getValidator(validation) {
6
4
  if (validation === null)
7
- return nullValidator;
5
+ return new (registry.get("constant"))(null);
8
6
  if (validation[Symbol.justusValidator]) {
9
7
  return validation[Symbol.justusValidator];
10
8
  }
@@ -12,11 +10,11 @@ function getValidator(validation) {
12
10
  case "boolean":
13
11
  case "string":
14
12
  case "number":
15
- return new ConstantValidator(validation);
13
+ return new (registry.get("constant"))(validation);
16
14
  case "object":
17
15
  if (Array.isArray(validation))
18
- return new TupleValidator(validation);
19
- return new ObjectValidator(validation);
16
+ return new (registry.get("tuple"))(validation);
17
+ return new (registry.get("object"))(validation);
20
18
  default:
21
19
  throw new TypeError(`Invalid validation (type=${typeof validation})`);
22
20
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/utilities.ts"],
4
- "mappings": ";AAAA,SAAS,mBAAmB,qBAAqB;AAEjD,SAAS,uBAAuB;AAEhC,SAAS,sBAAsB;AAaxB,SAAS,aAAa,YAAmC;AAE9D,MAAI,eAAe;AAAM,WAAO;AAGhC,MAAW,WAAY,OAAO,eAAe,GAAG;AAC9C,WAAc,WAAY,OAAO,eAAe;AAAA,EAClD;AAGA,UAAQ,OAAO,YAAY;AAAA,IAEzB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,IAAI,kBAAkB,UAAU;AAAA,IAGzC,KAAK;AAEH,UAAI,MAAM,QAAQ,UAAU;AAAG,eAAO,IAAI,eAAe,UAAU;AAEnE,aAAO,IAAI,gBAAgB,UAAoB;AAAA,IAGjD;AACE,YAAM,IAAI,UAAU,4BAA4B,OAAO,aAAa;AAAA,EACxE;AACF;",
4
+ "mappings": ";AAAA,SAAS,gBAAgB;AAalB,SAAS,aAAa,YAAmC;AAE9D,MAAI,eAAe;AAAM,WAAO,KAAK,SAAS,IAAI,UAAU,GAAG,IAAI;AAGnE,MAAW,WAAY,OAAO,eAAe,GAAG;AAC9C,WAAc,WAAY,OAAO,eAAe;AAAA,EAClD;AAGA,UAAQ,OAAO,YAAY;AAAA,IAEzB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,KAAK,SAAS,IAAI,UAAU,GAAG,UAAU;AAAA,IAGlD,KAAK;AAEH,UAAI,MAAM,QAAQ,UAAU;AAAG,eAAO,KAAK,SAAS,IAAI,OAAO,GAAG,UAAU;AAE5E,aAAO,KAAK,SAAS,IAAI,QAAQ,GAAG,UAAoB;AAAA,IAG1D;AACE,YAAM,IAAI,UAAU,4BAA4B,OAAO,UAAU,GAAG;AAAA,EACxE;AACF;",
5
5
  "names": []
6
6
  }
@@ -23,6 +23,7 @@ __export(array_exports, {
23
23
  AnyArrayValidator: () => AnyArrayValidator,
24
24
  ArrayValidator: () => ArrayValidator,
25
25
  array: () => array,
26
+ arrayFactory: () => arrayFactory,
26
27
  arrayOf: () => arrayOf
27
28
  });
28
29
  module.exports = __toCommonJS(array_exports);
@@ -86,11 +87,11 @@ var ArrayValidator = class extends import_types.AbstractValidator {
86
87
  return builder.assert(clone);
87
88
  }
88
89
  };
89
- function _array(constraints) {
90
+ function arrayFactory(constraints) {
90
91
  const items = constraints.items ? (0, import_utilities.getValidator)(constraints.items) : import_any.any;
91
92
  return new ArrayValidator({ ...constraints, items });
92
93
  }
93
- var array = (0, import_types.makeValidatorFactory)(new AnyArrayValidator(), _array);
94
+ var array = (0, import_types.makeValidatorFactory)(new AnyArrayValidator(), arrayFactory);
94
95
  function arrayOf(validation) {
95
96
  return new ArrayValidator({ items: (0, import_utilities.getValidator)(validation) });
96
97
  }
@@ -99,6 +100,7 @@ function arrayOf(validation) {
99
100
  AnyArrayValidator,
100
101
  ArrayValidator,
101
102
  array,
103
+ arrayFactory,
102
104
  arrayOf
103
105
  });
104
106
  //# sourceMappingURL=array.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/validators/array.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuE;AACvE,mBAAwD;AACxD,uBAA6B;AAC7B,iBAAoB;AAqBb,IAAM,oBAAN,cAAyC,+BAAuB;AAAA,EACrE,SAAS,OAAqB;AAC5B,wCAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAChE,WAAO,CAAE,GAAG,KAAM;AAAA,EACpB;AACF;AAGO,IAAM,iBAAN,cAAgC,+BAAuB;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,UAA0C,CAAC,GAAG;AACxD,UAAM;AAEN,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW,OAAO;AAAA,MAClB,WAAW;AAAA,MACX,cAAc;AAAA,IAChB,IAAI;AAEJ,oCAAa,YAAY,GAAG,0BAA0B,gCAAgC;AACtF,oCAAa,YAAY,GAAG,0BAA0B,gCAAgC;AACtF,oCAAa,YAAY,UAAU,0BAA0B,yCAAyC,WAAW;AAEjH,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,SAAS,OAAgB,SAAkC;AACzD,wCAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAEhE;AAAA,MAAiB,MAAM,UAAU,KAAK;AAAA,MAClC,uCAAuC,KAAK;AAAA,IAAU;AAE1D;AAAA,MAAiB,MAAM,UAAU,KAAK;AAAA,MAClC,uCAAuC,KAAK;AAAA,IAAU;AAE1D,UAAM,UAAU,IAAI,qCAAuB;AAC3C,UAAM,QAAe,IAAI,MAAM,MAAM,MAAM;AAE3C,UAAM,QAAQ,CAAC,MAAM,MAAM;AACzB,UAAI;AACF,cAAM,WAAW,MAAM,QAAQ,MAAM,CAAC,CAAC;AACvC,YAAI,aAAa,GAAG;AAClB,gBAAM,CAAC,IAAI,KAAK,MAAM,SAAS,MAAM,OAAO;AAAA,QAC9C,WAAW,KAAK,aAAa;AAC3B,kBAAQ,OAAO,8BAA8B,YAAY,CAAC;AAAA,QAC5D,OAAO;AACL,gBAAM,CAAC,IAAI,MAAM,QAAQ;AAAA,QAC3B;AAAA,MACF,SAAS,OAAP;AACA,gBAAQ,OAAO,OAAO,CAAC;AAAA,MACzB;AAAA,IACF,CAAC;AAED,WAAO,QAAQ,OAAO,KAAK;AAAA,EAC7B;AACF;AAIA,SAAS,OAA6B,aAAsE;AAC1G,QAAM,QAAQ,YAAY,YAAQ,+BAAa,YAAY,KAAK,IAAI;AACpE,SAAO,IAAI,eAAe,EAAE,GAAG,aAAa,MAAM,CAAC;AACrD;AAGO,IAAM,YAAQ,mCAAqB,IAAI,kBAAkB,GAAG,MAAM;AAGlE,SAAS,QAA8B,YAAgD;AAC5F,SAAO,IAAI,eAAe,EAAE,WAAO,+BAAa,UAAU,EAAE,CAAC;AAC/D;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuE;AACvE,mBAAwD;AACxD,uBAA6B;AAC7B,iBAAoB;AAqBb,IAAM,oBAAN,cAAyC,+BAA4B;AAAA,EAC1E,SAAS,OAAqB;AAC5B,wCAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAChE,WAAO,CAAE,GAAG,KAAM;AAAA,EACpB;AACF;AAGO,IAAM,iBAAN,cAAgC,+BAAuB;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,UAA0C,CAAC,GAAG;AACxD,UAAM;AAEN,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW,OAAO;AAAA,MAClB,WAAW;AAAA,MACX,cAAc;AAAA,IAChB,IAAI;AAEJ,oCAAa,YAAY,GAAG,0BAA0B,QAAQ,wBAAwB;AACtF,oCAAa,YAAY,GAAG,0BAA0B,QAAQ,wBAAwB;AACtF,oCAAa,YAAY,UAAU,0BAA0B,QAAQ,iCAAiC,QAAQ,GAAG;AAEjH,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,SAAS,OAAgB,SAAkC;AACzD,wCAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAEhE;AAAA,MAAiB,MAAM,UAAU,KAAK;AAAA,MAClC,uCAAuC,KAAK,QAAQ;AAAA,IAAE;AAE1D;AAAA,MAAiB,MAAM,UAAU,KAAK;AAAA,MAClC,uCAAuC,KAAK,QAAQ;AAAA,IAAE;AAE1D,UAAM,UAAU,IAAI,qCAAuB;AAC3C,UAAM,QAAe,IAAI,MAAM,MAAM,MAAM;AAE3C,UAAM,QAAQ,CAAC,MAAM,MAAM;AACzB,UAAI;AACF,cAAM,WAAW,MAAM,QAAQ,MAAM,CAAC,CAAC;AACvC,YAAI,aAAa,GAAG;AAClB,gBAAM,CAAC,IAAI,KAAK,MAAM,SAAS,MAAM,OAAO;AAAA,QAC9C,WAAW,KAAK,aAAa;AAC3B,kBAAQ,OAAO,8BAA8B,QAAQ,IAAI,CAAC;AAAA,QAC5D,OAAO;AACL,gBAAM,CAAC,IAAI,MAAM,QAAQ;AAAA,QAC3B;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,OAAO,OAAO,CAAC;AAAA,MACzB;AAAA,IACF,CAAC;AAED,WAAO,QAAQ,OAAO,KAAK;AAAA,EAC7B;AACF;AAIO,SAAS,aAAmC,aAAsE;AACvH,QAAM,QAAQ,YAAY,YAAQ,+BAAa,YAAY,KAAK,IAAI;AACpE,SAAO,IAAI,eAAe,EAAE,GAAG,aAAa,MAAM,CAAC;AACrD;AAGO,IAAM,YAAQ,mCAAqB,IAAI,kBAAkB,GAAG,YAAY;AAGxE,SAAS,QAA8B,YAAgD;AAC5F,SAAO,IAAI,eAAe,EAAE,WAAO,+BAAa,UAAU,EAAE,CAAC;AAC/D;",
5
5
  "names": []
6
6
  }
@@ -12,7 +12,7 @@ export interface ArrayConstraints<V extends Validation> {
12
12
  items?: V;
13
13
  }
14
14
  /** Basic validator for `Array` instances. */
15
- export declare class AnyArrayValidator<T = any> extends AbstractValidator<T[]> {
15
+ export declare class AnyArrayValidator<T = any> extends AbstractValidator<T[], T[]> {
16
16
  validate(value: unknown): T[];
17
17
  }
18
18
  /** A validator for `Array` instances with constraints. */
@@ -24,9 +24,8 @@ export declare class ArrayValidator<T> extends AbstractValidator<T[]> {
24
24
  constructor(options?: ArrayConstraints<Validator<T>>);
25
25
  validate(value: unknown, options?: ValidationOptions): T[];
26
26
  }
27
- declare function _array<V extends Validation>(constraints: ArrayConstraints<V>): ArrayValidator<InferValidation<V>>;
27
+ export declare function arrayFactory<V extends Validation>(constraints: ArrayConstraints<V>): ArrayValidator<InferValidation<V>>;
28
28
  /** Validate `Array`s. */
29
- export declare const array: typeof _array & AnyArrayValidator<any>;
29
+ export declare const array: typeof arrayFactory & AnyArrayValidator<any>;
30
30
  /** Validate `Array`s containing only the specified elements. */
31
31
  export declare function arrayOf<V extends Validation>(validation: V): Validator<InferValidation<V>[]>;
32
- export {};
@@ -59,11 +59,11 @@ var ArrayValidator = class extends AbstractValidator {
59
59
  return builder.assert(clone);
60
60
  }
61
61
  };
62
- function _array(constraints) {
62
+ function arrayFactory(constraints) {
63
63
  const items = constraints.items ? getValidator(constraints.items) : any;
64
64
  return new ArrayValidator({ ...constraints, items });
65
65
  }
66
- var array = makeValidatorFactory(new AnyArrayValidator(), _array);
66
+ var array = makeValidatorFactory(new AnyArrayValidator(), arrayFactory);
67
67
  function arrayOf(validation) {
68
68
  return new ArrayValidator({ items: getValidator(validation) });
69
69
  }
@@ -71,6 +71,7 @@ export {
71
71
  AnyArrayValidator,
72
72
  ArrayValidator,
73
73
  array,
74
+ arrayFactory,
74
75
  arrayOf
75
76
  };
76
77
  //# sourceMappingURL=array.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/validators/array.ts"],
4
- "mappings": ";AAAA,SAAS,cAAc,kBAAkB,8BAA8B;AACvE,SAAS,mBAAmB,4BAA4B;AACxD,SAAS,oBAAoB;AAC7B,SAAS,WAAW;AAqBb,IAAM,oBAAN,cAAyC,kBAAuB;AAAA,EACrE,SAAS,OAAqB;AAC5B,qBAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAChE,WAAO,CAAE,GAAG,KAAM;AAAA,EACpB;AACF;AAGO,IAAM,iBAAN,cAAgC,kBAAuB;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,UAA0C,CAAC,GAAG;AACxD,UAAM;AAEN,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW,OAAO;AAAA,MAClB,WAAW;AAAA,MACX,cAAc;AAAA,IAChB,IAAI;AAEJ,iBAAa,YAAY,GAAG,0BAA0B,gCAAgC;AACtF,iBAAa,YAAY,GAAG,0BAA0B,gCAAgC;AACtF,iBAAa,YAAY,UAAU,0BAA0B,yCAAyC,WAAW;AAEjH,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,SAAS,OAAgB,SAAkC;AACzD,qBAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAEhE;AAAA,MAAiB,MAAM,UAAU,KAAK;AAAA,MAClC,uCAAuC,KAAK;AAAA,IAAU;AAE1D;AAAA,MAAiB,MAAM,UAAU,KAAK;AAAA,MAClC,uCAAuC,KAAK;AAAA,IAAU;AAE1D,UAAM,UAAU,IAAI,uBAAuB;AAC3C,UAAM,QAAe,IAAI,MAAM,MAAM,MAAM;AAE3C,UAAM,QAAQ,CAAC,MAAM,MAAM;AACzB,UAAI;AACF,cAAM,WAAW,MAAM,QAAQ,MAAM,CAAC,CAAC;AACvC,YAAI,aAAa,GAAG;AAClB,gBAAM,CAAC,IAAI,KAAK,MAAM,SAAS,MAAM,OAAO;AAAA,QAC9C,WAAW,KAAK,aAAa;AAC3B,kBAAQ,OAAO,8BAA8B,YAAY,CAAC;AAAA,QAC5D,OAAO;AACL,gBAAM,CAAC,IAAI,MAAM,QAAQ;AAAA,QAC3B;AAAA,MACF,SAAS,OAAP;AACA,gBAAQ,OAAO,OAAO,CAAC;AAAA,MACzB;AAAA,IACF,CAAC;AAED,WAAO,QAAQ,OAAO,KAAK;AAAA,EAC7B;AACF;AAIA,SAAS,OAA6B,aAAsE;AAC1G,QAAM,QAAQ,YAAY,QAAQ,aAAa,YAAY,KAAK,IAAI;AACpE,SAAO,IAAI,eAAe,EAAE,GAAG,aAAa,MAAM,CAAC;AACrD;AAGO,IAAM,QAAQ,qBAAqB,IAAI,kBAAkB,GAAG,MAAM;AAGlE,SAAS,QAA8B,YAAgD;AAC5F,SAAO,IAAI,eAAe,EAAE,OAAO,aAAa,UAAU,EAAE,CAAC;AAC/D;",
4
+ "mappings": ";AAAA,SAAS,cAAc,kBAAkB,8BAA8B;AACvE,SAAS,mBAAmB,4BAA4B;AACxD,SAAS,oBAAoB;AAC7B,SAAS,WAAW;AAqBb,IAAM,oBAAN,cAAyC,kBAA4B;AAAA,EAC1E,SAAS,OAAqB;AAC5B,qBAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAChE,WAAO,CAAE,GAAG,KAAM;AAAA,EACpB;AACF;AAGO,IAAM,iBAAN,cAAgC,kBAAuB;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,UAA0C,CAAC,GAAG;AACxD,UAAM;AAEN,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW,OAAO;AAAA,MAClB,WAAW;AAAA,MACX,cAAc;AAAA,IAChB,IAAI;AAEJ,iBAAa,YAAY,GAAG,0BAA0B,QAAQ,wBAAwB;AACtF,iBAAa,YAAY,GAAG,0BAA0B,QAAQ,wBAAwB;AACtF,iBAAa,YAAY,UAAU,0BAA0B,QAAQ,iCAAiC,QAAQ,GAAG;AAEjH,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,SAAS,OAAgB,SAAkC;AACzD,qBAAiB,MAAM,QAAQ,KAAK,GAAG,yBAAyB;AAEhE;AAAA,MAAiB,MAAM,UAAU,KAAK;AAAA,MAClC,uCAAuC,KAAK,QAAQ;AAAA,IAAE;AAE1D;AAAA,MAAiB,MAAM,UAAU,KAAK;AAAA,MAClC,uCAAuC,KAAK,QAAQ;AAAA,IAAE;AAE1D,UAAM,UAAU,IAAI,uBAAuB;AAC3C,UAAM,QAAe,IAAI,MAAM,MAAM,MAAM;AAE3C,UAAM,QAAQ,CAAC,MAAM,MAAM;AACzB,UAAI;AACF,cAAM,WAAW,MAAM,QAAQ,MAAM,CAAC,CAAC;AACvC,YAAI,aAAa,GAAG;AAClB,gBAAM,CAAC,IAAI,KAAK,MAAM,SAAS,MAAM,OAAO;AAAA,QAC9C,WAAW,KAAK,aAAa;AAC3B,kBAAQ,OAAO,8BAA8B,QAAQ,IAAI,CAAC;AAAA,QAC5D,OAAO;AACL,gBAAM,CAAC,IAAI,MAAM,QAAQ;AAAA,QAC3B;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,OAAO,OAAO,CAAC;AAAA,MACzB;AAAA,IACF,CAAC;AAED,WAAO,QAAQ,OAAO,KAAK;AAAA,EAC7B;AACF;AAIO,SAAS,aAAmC,aAAsE;AACvH,QAAM,QAAQ,YAAY,QAAQ,aAAa,YAAY,KAAK,IAAI;AACpE,SAAO,IAAI,eAAe,EAAE,GAAG,aAAa,MAAM,CAAC;AACrD;AAGO,IAAM,QAAQ,qBAAqB,IAAI,kBAAkB,GAAG,YAAY;AAGxE,SAAS,QAA8B,YAAgD;AAC5F,SAAO,IAAI,eAAe,EAAE,OAAO,aAAa,UAAU,EAAE,CAAC;AAC/D;",
5
5
  "names": []
6
6
  }
@@ -21,7 +21,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var boolean_exports = {};
22
22
  __export(boolean_exports, {
23
23
  BooleanValidator: () => BooleanValidator,
24
- boolean: () => boolean
24
+ boolean: () => boolean,
25
+ booleanFactory: () => booleanFactory
25
26
  });
26
27
  module.exports = __toCommonJS(boolean_exports);
27
28
  var import_errors = require("../errors.cjs");
@@ -44,13 +45,14 @@ var BooleanValidator = class extends import_types.AbstractValidator {
44
45
  return value;
45
46
  }
46
47
  };
47
- function _boolean(constraints) {
48
+ function booleanFactory(constraints) {
48
49
  return new BooleanValidator(constraints);
49
50
  }
50
- var boolean = (0, import_types.makeValidatorFactory)(new BooleanValidator(), _boolean);
51
+ var boolean = (0, import_types.makeValidatorFactory)(new BooleanValidator(), booleanFactory);
51
52
  // Annotate the CommonJS export names for ESM import in node:
52
53
  0 && (module.exports = {
53
54
  BooleanValidator,
54
- boolean
55
+ boolean,
56
+ booleanFactory
55
57
  });
56
58
  //# sourceMappingURL=boolean.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/validators/boolean.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAiC;AACjC,mBAAwD;AAejD,IAAM,mBAAN,cAA+B,+BAA2B;AAAA,EACtD;AAAA,EAET,YAAY,cAAkC,CAAC,GAAG;AAChD,UAAM;AACN,UAAM,EAAE,aAAa,MAAM,IAAI;AAC/B,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,SAAS,OAAyB;AAEhC,QAAK,OAAO,SAAS,YAAc,KAAK,YAAa;AACnD,YAAM,SAAS,MAAM,YAAY;AACjC,YAAM,SAAS,WAAW,SAAS,OAAO,WAAW,UAAU,QAAQ;AACvE,0CAAiB,WAAW,QAAW,uCAAuC;AAC9E,cAAQ;AAAA,IACV;AAEA,wCAAiB,OAAO,UAAU,WAAW,0BAA0B;AACvE,WAAO;AAAA,EACT;AACF;AAEA,SAAS,SAAS,aAAmD;AACnE,SAAO,IAAI,iBAAiB,WAAW;AACzC;AAGO,IAAM,cAAU,mCAAqB,IAAI,iBAAiB,GAAG,QAAQ;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAiC;AACjC,mBAAwD;AAejD,IAAM,mBAAN,cAA+B,+BAA2B;AAAA,EACtD;AAAA,EAET,YAAY,cAAkC,CAAC,GAAG;AAChD,UAAM;AACN,UAAM,EAAE,aAAa,MAAM,IAAI;AAC/B,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,SAAS,OAAyB;AAEhC,QAAK,OAAO,SAAS,YAAc,KAAK,YAAa;AACnD,YAAM,SAAS,MAAM,YAAY;AACjC,YAAM,SAAS,WAAW,SAAS,OAAO,WAAW,UAAU,QAAQ;AACvE,0CAAiB,WAAW,QAAW,uCAAuC;AAC9E,cAAQ;AAAA,IACV;AAEA,wCAAiB,OAAO,UAAU,WAAW,0BAA0B;AACvE,WAAO;AAAA,EACT;AACF;AAEO,SAAS,eAAe,aAAmD;AAChF,SAAO,IAAI,iBAAiB,WAAW;AACzC;AAGO,IAAM,cAAU,mCAAqB,IAAI,iBAAiB,GAAG,cAAc;",
5
5
  "names": []
6
6
  }
@@ -15,7 +15,6 @@ export declare class BooleanValidator extends AbstractValidator<boolean> {
15
15
  constructor(constraints?: BooleanConstraints);
16
16
  validate(value: unknown): boolean;
17
17
  }
18
- declare function _boolean(constraints: BooleanConstraints): BooleanValidator;
18
+ export declare function booleanFactory(constraints: BooleanConstraints): BooleanValidator;
19
19
  /** The `Validator` for `boolean`s. */
20
- export declare const boolean: typeof _boolean & BooleanValidator;
21
- export {};
20
+ export declare const boolean: typeof booleanFactory & BooleanValidator;
@@ -19,12 +19,13 @@ var BooleanValidator = class extends AbstractValidator {
19
19
  return value;
20
20
  }
21
21
  };
22
- function _boolean(constraints) {
22
+ function booleanFactory(constraints) {
23
23
  return new BooleanValidator(constraints);
24
24
  }
25
- var boolean = makeValidatorFactory(new BooleanValidator(), _boolean);
25
+ var boolean = makeValidatorFactory(new BooleanValidator(), booleanFactory);
26
26
  export {
27
27
  BooleanValidator,
28
- boolean
28
+ boolean,
29
+ booleanFactory
29
30
  };
30
31
  //# sourceMappingURL=boolean.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/validators/boolean.ts"],
4
- "mappings": ";AAAA,SAAS,wBAAwB;AACjC,SAAS,mBAAmB,4BAA4B;AAejD,IAAM,mBAAN,cAA+B,kBAA2B;AAAA,EACtD;AAAA,EAET,YAAY,cAAkC,CAAC,GAAG;AAChD,UAAM;AACN,UAAM,EAAE,aAAa,MAAM,IAAI;AAC/B,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,SAAS,OAAyB;AAEhC,QAAK,OAAO,SAAS,YAAc,KAAK,YAAa;AACnD,YAAM,SAAS,MAAM,YAAY;AACjC,YAAM,SAAS,WAAW,SAAS,OAAO,WAAW,UAAU,QAAQ;AACvE,uBAAiB,WAAW,QAAW,uCAAuC;AAC9E,cAAQ;AAAA,IACV;AAEA,qBAAiB,OAAO,UAAU,WAAW,0BAA0B;AACvE,WAAO;AAAA,EACT;AACF;AAEA,SAAS,SAAS,aAAmD;AACnE,SAAO,IAAI,iBAAiB,WAAW;AACzC;AAGO,IAAM,UAAU,qBAAqB,IAAI,iBAAiB,GAAG,QAAQ;",
4
+ "mappings": ";AAAA,SAAS,wBAAwB;AACjC,SAAS,mBAAmB,4BAA4B;AAejD,IAAM,mBAAN,cAA+B,kBAA2B;AAAA,EACtD;AAAA,EAET,YAAY,cAAkC,CAAC,GAAG;AAChD,UAAM;AACN,UAAM,EAAE,aAAa,MAAM,IAAI;AAC/B,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,SAAS,OAAyB;AAEhC,QAAK,OAAO,SAAS,YAAc,KAAK,YAAa;AACnD,YAAM,SAAS,MAAM,YAAY;AACjC,YAAM,SAAS,WAAW,SAAS,OAAO,WAAW,UAAU,QAAQ;AACvE,uBAAiB,WAAW,QAAW,uCAAuC;AAC9E,cAAQ;AAAA,IACV;AAEA,qBAAiB,OAAO,UAAU,WAAW,0BAA0B;AACvE,WAAO;AAAA,EACT;AACF;AAEO,SAAS,eAAe,aAAmD;AAChF,SAAO,IAAI,iBAAiB,WAAW;AACzC;AAGO,IAAM,UAAU,qBAAqB,IAAI,iBAAiB,GAAG,cAAc;",
5
5
  "names": []
6
6
  }
@@ -21,11 +21,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var constant_exports = {};
22
22
  __export(constant_exports, {
23
23
  ConstantValidator: () => ConstantValidator,
24
- constant: () => constant,
25
- nullValidator: () => nullValidator
24
+ constant: () => constant
26
25
  });
27
26
  module.exports = __toCommonJS(constant_exports);
28
27
  var import_errors = require("../errors.cjs");
28
+ var import_registry = require("../registry.cjs");
29
29
  var import_types = require("../types.cjs");
30
30
  var ConstantValidator = class extends import_types.AbstractValidator {
31
31
  constant;
@@ -41,11 +41,10 @@ var ConstantValidator = class extends import_types.AbstractValidator {
41
41
  function constant(constant2) {
42
42
  return new ConstantValidator(constant2);
43
43
  }
44
- var nullValidator = new ConstantValidator(null);
44
+ import_registry.registry.set("constant", ConstantValidator);
45
45
  // Annotate the CommonJS export names for ESM import in node:
46
46
  0 && (module.exports = {
47
47
  ConstantValidator,
48
- constant,
49
- nullValidator
48
+ constant
50
49
  });
51
50
  //# sourceMappingURL=constant.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/validators/constant.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAiC;AACjC,mBAAkC;AAK3B,IAAM,oBAAN,cAA4E,+BAAqB;AAAA,EAC7F;AAAA,EAET,YAAYA,WAAa;AACvB,UAAM;AACN,SAAK,WAAWA;AAAA,EAClB;AAAA,EAEA,SAAS,OAAmB;AAC1B,wCAAiB,UAAU,KAAK,UAAU,kCAAkC,KAAK,WAAW;AAC5F,WAAO;AAAA,EACT;AACF;AAGO,SAAS,SAAqDA,WAA2B;AAC9F,SAAO,IAAI,kBAAkBA,SAAQ;AACvC;AAGO,IAAM,gBAAgB,IAAI,kBAAkB,IAAI;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAiC;AACjC,sBAAyB;AACzB,mBAAkC;AAK3B,IAAM,oBAAN,cAA4E,+BAAqB;AAAA,EAC7F;AAAA,EAET,YAAYA,WAAa;AACvB,UAAM;AACN,SAAK,WAAWA;AAAA,EAClB;AAAA,EAEA,SAAS,OAAmB;AAC1B,wCAAiB,UAAU,KAAK,UAAU,kCAAkC,KAAK,QAAQ,GAAG;AAC5F,WAAO;AAAA,EACT;AACF;AAGO,SAAS,SAAqDA,WAA2B;AAC9F,SAAO,IAAI,kBAAkBA,SAAQ;AACvC;AAGA,yBAAS,IAAI,YAAY,iBAAiB;",
5
5
  "names": ["constant"]
6
6
  }
@@ -8,5 +8,3 @@ export declare class ConstantValidator<T extends string | number | boolean | nul
8
8
  }
9
9
  /** Validate _constants_. */
10
10
  export declare function constant<T extends string | number | boolean | null>(constant: T): Validator<T>;
11
- /** The `Validator` for the `null` constant. */
12
- export declare const nullValidator: ConstantValidator<null>;
@@ -1,5 +1,6 @@
1
1
  // validators/constant.ts
2
2
  import { assertValidation } from "../errors.mjs";
3
+ import { registry } from "../registry.mjs";
3
4
  import { AbstractValidator } from "../types.mjs";
4
5
  var ConstantValidator = class extends AbstractValidator {
5
6
  constant;
@@ -15,10 +16,9 @@ var ConstantValidator = class extends AbstractValidator {
15
16
  function constant(constant2) {
16
17
  return new ConstantValidator(constant2);
17
18
  }
18
- var nullValidator = new ConstantValidator(null);
19
+ registry.set("constant", ConstantValidator);
19
20
  export {
20
21
  ConstantValidator,
21
- constant,
22
- nullValidator
22
+ constant
23
23
  };
24
24
  //# sourceMappingURL=constant.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/validators/constant.ts"],
4
- "mappings": ";AAAA,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAK3B,IAAM,oBAAN,cAA4E,kBAAqB;AAAA,EAC7F;AAAA,EAET,YAAYA,WAAa;AACvB,UAAM;AACN,SAAK,WAAWA;AAAA,EAClB;AAAA,EAEA,SAAS,OAAmB;AAC1B,qBAAiB,UAAU,KAAK,UAAU,kCAAkC,KAAK,WAAW;AAC5F,WAAO;AAAA,EACT;AACF;AAGO,SAAS,SAAqDA,WAA2B;AAC9F,SAAO,IAAI,kBAAkBA,SAAQ;AACvC;AAGO,IAAM,gBAAgB,IAAI,kBAAkB,IAAI;",
4
+ "mappings": ";AAAA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AACzB,SAAS,yBAAyB;AAK3B,IAAM,oBAAN,cAA4E,kBAAqB;AAAA,EAC7F;AAAA,EAET,YAAYA,WAAa;AACvB,UAAM;AACN,SAAK,WAAWA;AAAA,EAClB;AAAA,EAEA,SAAS,OAAmB;AAC1B,qBAAiB,UAAU,KAAK,UAAU,kCAAkC,KAAK,QAAQ,GAAG;AAC5F,WAAO;AAAA,EACT;AACF;AAGO,SAAS,SAAqDA,WAA2B;AAC9F,SAAO,IAAI,kBAAkBA,SAAQ;AACvC;AAGA,SAAS,IAAI,YAAY,iBAAiB;",
5
5
  "names": ["constant"]
6
6
  }