pema 0.6.1 → 0.7.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 (162) hide show
  1. package/lib/private/ArrayType.d.ts +1 -1
  2. package/lib/private/ArrayType.js +11 -4
  3. package/lib/private/BuiltinType.d.ts +1 -1
  4. package/lib/private/BuiltinType.js +6 -2
  5. package/lib/private/ConstructorType.d.ts +1 -1
  6. package/lib/private/ConstructorType.js +3 -1
  7. package/lib/private/DefaultType.d.ts +1 -1
  8. package/lib/private/DefaultType.js +6 -5
  9. package/lib/private/EnumType.d.ts +1 -1
  10. package/lib/private/EnumType.js +5 -2
  11. package/lib/private/FunctionType.d.ts +1 -1
  12. package/lib/private/FunctionType.js +6 -3
  13. package/lib/private/IntType.d.ts +1 -1
  14. package/lib/private/IntType.js +2 -2
  15. package/lib/private/IsType.d.ts +1 -1
  16. package/lib/private/IsType.js +3 -1
  17. package/lib/private/JSONType.d.ts +1 -1
  18. package/lib/private/JSONType.js +3 -1
  19. package/lib/private/LiteralType.d.ts +1 -2
  20. package/lib/private/LiteralType.js +3 -4
  21. package/lib/private/Loose.d.ts +4 -0
  22. package/lib/private/Loose.js +3 -0
  23. package/lib/private/NormalizeSchema.d.ts +3 -3
  24. package/lib/private/NullType.d.ts +1 -1
  25. package/lib/private/NullType.js +5 -2
  26. package/lib/private/NumericType.d.ts +2 -1
  27. package/lib/private/ObjectType.d.ts +1 -1
  28. package/lib/private/ObjectType.js +18 -5
  29. package/lib/private/OmitType.d.ts +1 -1
  30. package/lib/private/OmitType.js +3 -1
  31. package/lib/private/OptionalType.d.ts +1 -1
  32. package/lib/private/OptionalType.js +6 -5
  33. package/lib/private/ParseError.d.ts +1 -1
  34. package/lib/private/ParseError.js +9 -8
  35. package/lib/private/ParseOptions.d.ts +2 -1
  36. package/lib/private/Parsed.d.ts +4 -3
  37. package/lib/private/Parsed.js +2 -3
  38. package/lib/private/PartialType.d.ts +1 -1
  39. package/lib/private/PartialType.js +3 -1
  40. package/lib/private/PrimitiveType.d.ts +1 -1
  41. package/lib/private/PrimitiveType.js +7 -4
  42. package/lib/private/PureType.d.ts +1 -1
  43. package/lib/private/PureType.js +2 -2
  44. package/lib/private/RecordType.d.ts +1 -1
  45. package/lib/private/RecordType.js +3 -1
  46. package/lib/private/Storable.d.ts +1 -0
  47. package/lib/private/Storable.js +4 -0
  48. package/lib/private/StoreType.d.ts +1 -1
  49. package/lib/private/StoreType.js +4 -2
  50. package/lib/private/TupleType.d.ts +1 -1
  51. package/lib/private/TupleType.js +11 -4
  52. package/lib/private/UUIDType.d.ts +1 -1
  53. package/lib/private/UUIDType.js +3 -1
  54. package/lib/private/UUIDV4Type.d.ts +1 -1
  55. package/lib/private/UUIDV4Type.js +3 -1
  56. package/lib/private/UUIDV7Type.d.ts +1 -1
  57. package/lib/private/UUIDV7Type.js +3 -1
  58. package/lib/private/UintType.d.ts +1 -1
  59. package/lib/private/UintType.js +2 -2
  60. package/lib/private/UnionType.d.ts +1 -1
  61. package/lib/private/UnionType.js +6 -4
  62. package/lib/private/VirtualType.js +2 -2
  63. package/lib/private/array.d.ts +6 -4
  64. package/lib/private/array.js +15 -2
  65. package/lib/private/blob.d.ts +6 -2
  66. package/lib/private/blob.js +8 -1
  67. package/lib/private/boolean.d.ts +6 -5
  68. package/lib/private/boolean.js +8 -4
  69. package/lib/private/coerce/date.js +3 -5
  70. package/lib/private/coerce/int.js +1 -1
  71. package/lib/private/constructor.d.ts +6 -5
  72. package/lib/private/constructor.js +16 -1
  73. package/lib/private/date.d.ts +6 -2
  74. package/lib/private/date.js +8 -1
  75. package/lib/private/dict.d.ts +12 -2
  76. package/lib/private/dict.js +10 -2
  77. package/lib/private/enum.d.ts +9 -1
  78. package/lib/private/enum.js +14 -1
  79. package/lib/private/errors.js +5 -6
  80. package/lib/private/f32.d.ts +6 -2
  81. package/lib/private/f32.js +8 -1
  82. package/lib/private/f64.d.ts +6 -2
  83. package/lib/private/f64.js +8 -1
  84. package/lib/private/file.d.ts +6 -2
  85. package/lib/private/file.js +8 -1
  86. package/lib/private/function.d.ts +6 -5
  87. package/lib/private/function.js +8 -1
  88. package/lib/private/i128.d.ts +6 -2
  89. package/lib/private/i128.js +8 -1
  90. package/lib/private/i16.d.ts +6 -2
  91. package/lib/private/i16.js +8 -1
  92. package/lib/private/i32.d.ts +6 -2
  93. package/lib/private/i32.js +8 -1
  94. package/lib/private/i64.d.ts +6 -2
  95. package/lib/private/i64.js +8 -1
  96. package/lib/private/i8.d.ts +6 -2
  97. package/lib/private/i8.js +8 -1
  98. package/lib/private/index.d.ts +33 -15
  99. package/lib/private/index.js +148 -41
  100. package/lib/private/is-parsed.d.ts +3 -0
  101. package/lib/private/is-parsed.js +7 -0
  102. package/lib/private/is.d.ts +6 -2
  103. package/lib/private/is.js +14 -1
  104. package/lib/private/json.d.ts +12 -2
  105. package/lib/private/json.js +14 -1
  106. package/lib/private/literal.d.ts +10 -2
  107. package/lib/private/literal.js +16 -1
  108. package/lib/private/normalize.js +4 -11
  109. package/lib/private/null.d.ts +6 -2
  110. package/lib/private/null.js +8 -1
  111. package/lib/private/object.d.ts +11 -4
  112. package/lib/private/object.js +22 -1
  113. package/lib/private/omit.d.ts +9 -1
  114. package/lib/private/omit.js +14 -1
  115. package/lib/private/partial.d.ts +9 -2
  116. package/lib/private/partial.js +16 -2
  117. package/lib/private/path/next.d.ts +1 -7
  118. package/lib/private/pure.d.ts +9 -1
  119. package/lib/private/pure.js +14 -1
  120. package/lib/private/record.d.ts +6 -5
  121. package/lib/private/record.js +14 -1
  122. package/lib/private/resolve.d.ts +2 -0
  123. package/lib/private/resolve.js +7 -0
  124. package/lib/private/spec/bigint.d.ts +4 -1
  125. package/lib/private/spec/bigint.js +27 -26
  126. package/lib/private/spec/biguint.d.ts +4 -1
  127. package/lib/private/spec/biguint.js +23 -22
  128. package/lib/private/spec/int.d.ts +4 -1
  129. package/lib/private/spec/int.js +24 -23
  130. package/lib/private/spec/uint.d.ts +4 -1
  131. package/lib/private/spec/uint.js +22 -21
  132. package/lib/private/string.d.ts +6 -5
  133. package/lib/private/string.js +8 -4
  134. package/lib/private/symbol.d.ts +6 -2
  135. package/lib/private/symbol.js +8 -1
  136. package/lib/private/test.d.ts +4 -21
  137. package/lib/private/test.js +0 -44
  138. package/lib/private/tuple.d.ts +9 -2
  139. package/lib/private/tuple.js +16 -1
  140. package/lib/private/u128.d.ts +6 -2
  141. package/lib/private/u128.js +8 -1
  142. package/lib/private/u16.d.ts +6 -2
  143. package/lib/private/u16.js +8 -1
  144. package/lib/private/u32.d.ts +6 -5
  145. package/lib/private/u32.js +8 -1
  146. package/lib/private/u64.d.ts +6 -2
  147. package/lib/private/u64.js +8 -1
  148. package/lib/private/u8.d.ts +6 -2
  149. package/lib/private/u8.js +8 -1
  150. package/lib/private/undefined.d.ts +6 -2
  151. package/lib/private/undefined.js +8 -1
  152. package/lib/private/union.d.ts +12 -3
  153. package/lib/private/union.js +14 -1
  154. package/lib/private/unknown.d.ts +6 -5
  155. package/lib/private/unknown.js +8 -1
  156. package/lib/private/url.d.ts +6 -2
  157. package/lib/private/url.js +8 -1
  158. package/lib/private/uuid.d.ts +6 -2
  159. package/lib/private/uuid.js +8 -1
  160. package/package.json +7 -6
  161. package/lib/private/is-parsed-type.d.ts +0 -3
  162. package/lib/private/is-parsed-type.js +0 -6
@@ -1,4 +1,8 @@
1
1
  import IsType from "#IsType";
2
- declare const _default: <T>(predicate: (x: unknown) => x is T) => IsType<T>;
3
- export default _default;
2
+ declare const is: {
3
+ vanilla: <T>(predicate: (x: unknown) => x is T) => IsType<T>;
4
+ loose: <T>(predicate: (x: unknown) => x is T) => IsType<T>;
5
+ strict: <T>(predicate: (x: unknown) => x is T) => IsType<T>;
6
+ };
7
+ export default is;
4
8
  //# sourceMappingURL=is.d.ts.map
package/lib/private/is.js CHANGED
@@ -1,3 +1,16 @@
1
1
  import IsType from "#IsType";
2
- export default (predicate) => new IsType(predicate);
2
+ import Loose from "#Loose";
3
+ const vanilla = (predicate) => new IsType(predicate);
4
+ const loose = (predicate) => {
5
+ const i = new IsType(predicate);
6
+ i[Loose] = true;
7
+ return i;
8
+ };
9
+ const strict = (predicate) => {
10
+ const i = new IsType(predicate);
11
+ i[Loose] = false;
12
+ return i;
13
+ };
14
+ const is = { vanilla, loose, strict };
15
+ export default is;
3
16
  //# sourceMappingURL=is.js.map
@@ -1,5 +1,15 @@
1
1
  import type { ParsedJSON } from "#JSONType";
2
2
  import JSONType from "#JSONType";
3
- export default function json(): JSONType<undefined>;
4
- export default function json<S extends ParsedJSON>(inner: S): JSONType<S>;
3
+ declare function vanilla(): JSONType<undefined>;
4
+ declare function vanilla<S extends ParsedJSON>(inner: S): JSONType<S>;
5
+ declare function loose(): JSONType<undefined>;
6
+ declare function loose<S extends ParsedJSON>(inner: S): JSONType<S>;
7
+ declare function strict(): JSONType<undefined>;
8
+ declare function strict<S extends ParsedJSON>(inner: S): JSONType<S>;
9
+ declare const json: {
10
+ vanilla: typeof vanilla;
11
+ loose: typeof loose;
12
+ strict: typeof strict;
13
+ };
14
+ export default json;
5
15
  //# sourceMappingURL=json.d.ts.map
@@ -1,5 +1,18 @@
1
1
  import JSONType from "#JSONType";
2
- export default function json(inner) {
2
+ import Loose from "#Loose";
3
+ function vanilla(inner) {
3
4
  return new JSONType(inner);
4
5
  }
6
+ function loose(inner) {
7
+ const i = new JSONType(inner);
8
+ i[Loose] = true;
9
+ return i;
10
+ }
11
+ function strict(inner) {
12
+ const i = new JSONType(inner);
13
+ i[Loose] = false;
14
+ return i;
15
+ }
16
+ const json = { vanilla, loose, strict };
17
+ export default json;
5
18
  //# sourceMappingURL=json.js.map
@@ -1,4 +1,12 @@
1
1
  import LiteralType from "#LiteralType";
2
- declare const _default: typeof LiteralType.new;
3
- export default _default;
2
+ type Literal = string | boolean | number;
3
+ declare function vanilla<T extends Literal>(literal: T): LiteralType<T>;
4
+ declare function loose<T extends Literal>(literal: T): LiteralType<T>;
5
+ declare function strict<T extends Literal>(literal: T): LiteralType<T>;
6
+ declare const literal: {
7
+ vanilla: typeof vanilla;
8
+ loose: typeof loose;
9
+ strict: typeof strict;
10
+ };
11
+ export default literal;
4
12
  //# sourceMappingURL=literal.d.ts.map
@@ -1,3 +1,18 @@
1
1
  import LiteralType from "#LiteralType";
2
- export default LiteralType.new;
2
+ import Loose from "#Loose";
3
+ function vanilla(literal) {
4
+ return new LiteralType(literal);
5
+ }
6
+ function loose(literal) {
7
+ const i = new LiteralType(literal);
8
+ i[Loose] = true;
9
+ return i;
10
+ }
11
+ function strict(literal) {
12
+ const i = new LiteralType(literal);
13
+ i[Loose] = false;
14
+ return i;
15
+ }
16
+ const literal = { vanilla, loose, strict };
17
+ export default literal;
3
18
  //# sourceMappingURL=literal.js.map
@@ -1,27 +1,20 @@
1
1
  import ArrayType from "#ArrayType";
2
2
  import ConstructorType from "#ConstructorType";
3
+ import is_parsed from "#is-parsed";
3
4
  import LiteralType from "#LiteralType";
4
5
  import NullType from "#NullType";
5
6
  import ObjectType from "#ObjectType";
6
- import ParsedKey from "#ParsedKey";
7
7
  import TupleType from "#TupleType";
8
8
  import UndefinedType from "#UndefinedType";
9
9
  import is from "@rcompat/is";
10
- function isParsed(x) {
11
- return !!x && typeof x === "object" && ParsedKey in x;
12
- }
13
- function isPlain(x) {
14
- return !!x && typeof x === "object" &&
15
- Object.getPrototypeOf(x) === Object.prototype;
16
- }
17
10
  export default function normalize(x) {
18
- if (isParsed(x))
11
+ if (is_parsed(x))
19
12
  return x;
20
13
  if (x === null)
21
14
  return new NullType();
22
15
  if (x === undefined)
23
16
  return new UndefinedType();
24
- if (typeof x === "string" || typeof x === "number" || typeof x === "boolean")
17
+ if (is.string(x) || is.number(x) || is.boolean(x))
25
18
  return new LiteralType(x);
26
19
  if (is.newable(x))
27
20
  return new ConstructorType(x);
@@ -30,7 +23,7 @@ export default function normalize(x) {
30
23
  ? new ArrayType(normalize(x[0]))
31
24
  : new TupleType(x.map(normalize));
32
25
  }
33
- if (isPlain(x)) {
26
+ if (is.dict(x)) {
34
27
  const props = {};
35
28
  for (const [k, v] of Object.entries(x))
36
29
  props[k] = normalize(v);
@@ -1,4 +1,8 @@
1
1
  import NullType from "#NullType";
2
- declare const _default: NullType;
3
- export default _default;
2
+ declare const null_: {
3
+ vanilla: NullType;
4
+ loose: NullType;
5
+ strict: NullType;
6
+ };
7
+ export default null_;
4
8
  //# sourceMappingURL=null.d.ts.map
@@ -1,3 +1,10 @@
1
+ import Loose from "#Loose";
1
2
  import NullType from "#NullType";
2
- export default new NullType();
3
+ const vanilla = new NullType();
4
+ const loose = new NullType();
5
+ loose[Loose] = true;
6
+ const strict = new NullType();
7
+ strict[Loose] = false;
8
+ const null_ = { vanilla, loose, strict };
9
+ export default null_;
3
10
  //# sourceMappingURL=null.js.map
@@ -1,10 +1,17 @@
1
1
  import type NormalizeSchema from "#NormalizeSchema";
2
2
  import ObjectType from "#ObjectType";
3
3
  import type Schema from "#Schema";
4
- import type { Dict, EmptyObject } from "@rcompat/type";
5
- type NormalizeProps<S extends Dict<Schema>> = keyof S extends never ? EmptyObject : {
4
+ import type { Dict, EmptyDict } from "@rcompat/type";
5
+ type NormalizeProps<S extends Dict<Schema>> = keyof S extends never ? EmptyDict : {
6
6
  [K in keyof S]: NormalizeSchema<S[K]>;
7
7
  };
8
- export default function object<P extends Dict<Schema> = Dict<Schema>>(properties: P): ObjectType<NormalizeProps<P>>;
9
- export {};
8
+ declare function vanilla<P extends Dict<Schema> = Dict<Schema>>(properties: P): ObjectType<NormalizeProps<P>>;
9
+ declare function loose<P extends Dict<Schema> = Dict<Schema>>(properties: P): ObjectType<NormalizeProps<P>>;
10
+ declare function strict<P extends Dict<Schema> = Dict<Schema>>(properties: P): ObjectType<NormalizeProps<P>>;
11
+ declare const object: {
12
+ vanilla: typeof vanilla;
13
+ loose: typeof loose;
14
+ strict: typeof strict;
15
+ };
16
+ export default object;
10
17
  //# sourceMappingURL=object.d.ts.map
@@ -1,10 +1,31 @@
1
+ import Loose from "#Loose";
1
2
  import normalize from "#normalize";
2
3
  import ObjectType from "#ObjectType";
3
- export default function object(properties) {
4
+ function vanilla(properties) {
4
5
  const props = {};
5
6
  for (const [k, v] of Object.entries(properties)) {
6
7
  props[k] = normalize(v);
7
8
  }
8
9
  return new ObjectType(props);
9
10
  }
11
+ function loose(properties) {
12
+ const props = {};
13
+ for (const [k, v] of Object.entries(properties)) {
14
+ props[k] = normalize(v);
15
+ }
16
+ const i = new ObjectType(props);
17
+ i[Loose] = true;
18
+ return i;
19
+ }
20
+ function strict(properties) {
21
+ const props = {};
22
+ for (const [k, v] of Object.entries(properties)) {
23
+ props[k] = normalize(v);
24
+ }
25
+ const i = new ObjectType(props);
26
+ i[Loose] = false;
27
+ return i;
28
+ }
29
+ const object = { vanilla, loose, strict };
30
+ export default object;
10
31
  //# sourceMappingURL=object.js.map
@@ -2,5 +2,13 @@ import type ObjectType from "#ObjectType";
2
2
  import OmitType from "#OmitType";
3
3
  import type Parsed from "#Parsed";
4
4
  import type { Dict } from "@rcompat/type";
5
- export default function omit<P extends Dict<Parsed<unknown>>, K extends keyof P>(type: ObjectType<P>, ...keys: K[]): OmitType<P, K>;
5
+ declare function vanilla<P extends Dict<Parsed<unknown>>, K extends keyof P>(type: ObjectType<P>, ...keys: K[]): OmitType<P, K>;
6
+ declare function loose<P extends Dict<Parsed<unknown>>, K extends keyof P>(type: ObjectType<P>, ...keys: K[]): OmitType<P, K>;
7
+ declare function strict<P extends Dict<Parsed<unknown>>, K extends keyof P>(type: ObjectType<P>, ...keys: K[]): OmitType<P, K>;
8
+ declare const omit: {
9
+ vanilla: typeof vanilla;
10
+ loose: typeof loose;
11
+ strict: typeof strict;
12
+ };
13
+ export default omit;
6
14
  //# sourceMappingURL=omit.d.ts.map
@@ -1,5 +1,18 @@
1
+ import Loose from "#Loose";
1
2
  import OmitType from "#OmitType";
2
- export default function omit(type, ...keys) {
3
+ function vanilla(type, ...keys) {
3
4
  return new OmitType(type, keys);
4
5
  }
6
+ function loose(type, ...keys) {
7
+ const i = new OmitType(type, keys);
8
+ i[Loose] = true;
9
+ return i;
10
+ }
11
+ function strict(type, ...keys) {
12
+ const i = new OmitType(type, keys);
13
+ i[Loose] = false;
14
+ return i;
15
+ }
16
+ const omit = { vanilla, loose, strict };
17
+ export default omit;
5
18
  //# sourceMappingURL=omit.js.map
@@ -4,6 +4,13 @@ import PartialType from "#PartialType";
4
4
  type StripReadonly<T> = {
5
5
  -readonly [K in keyof T]: T[K];
6
6
  };
7
- export default function partial<const D extends Partialable>(input: D | ObjectType<D>): PartialType<StripReadonly<D>>;
8
- export {};
7
+ declare function vanilla<const D extends Partialable>(input: D | ObjectType<D>): PartialType<StripReadonly<D>>;
8
+ declare function loose<const D extends Partialable>(input: D | ObjectType<D>): PartialType<StripReadonly<D>>;
9
+ declare function strict<const D extends Partialable>(input: D | ObjectType<D>): PartialType<StripReadonly<D>>;
10
+ declare const partial: {
11
+ vanilla: typeof vanilla;
12
+ loose: typeof loose;
13
+ strict: typeof strict;
14
+ };
15
+ export default partial;
9
16
  //# sourceMappingURL=partial.d.ts.map
@@ -1,8 +1,22 @@
1
- // partial.ts
1
+ import Loose from "#Loose";
2
2
  import ObjectType from "#ObjectType";
3
3
  import PartialType from "#PartialType";
4
- export default function partial(input) {
4
+ function vanilla(input) {
5
5
  const dict = input instanceof ObjectType ? input.properties : input;
6
6
  return new PartialType(dict);
7
7
  }
8
+ function loose(input) {
9
+ const dict = input instanceof ObjectType ? input.properties : input;
10
+ const i = new PartialType(dict);
11
+ i[Loose] = true;
12
+ return i;
13
+ }
14
+ function strict(input) {
15
+ const dict = input instanceof ObjectType ? input.properties : input;
16
+ const i = new PartialType(dict);
17
+ i[Loose] = false;
18
+ return i;
19
+ }
20
+ const partial = { vanilla, loose, strict };
21
+ export default partial;
8
22
  //# sourceMappingURL=partial.js.map
@@ -1,9 +1,3 @@
1
- import ParsedKey from "#ParsedKey";
2
1
  import type ParseOptions from "#ParseOptions";
3
- export default function next(s: number | string, options?: ParseOptions): {
4
- [ParsedKey]: import("@rcompat/type").JSONPointer;
5
- coerce?: boolean;
6
- partial?: boolean;
7
- validators?: import("../Validator.js").default<unknown>[] | undefined;
8
- };
2
+ export default function next(s: number | string, options?: ParseOptions): ParseOptions;
9
3
  //# sourceMappingURL=next.d.ts.map
@@ -1,3 +1,11 @@
1
1
  import PureType from "#PureType";
2
- export default function <T>(): PureType<T, "PureType">;
2
+ declare function vanilla<T>(): PureType<T, "PureType">;
3
+ declare function loose<T>(): PureType<T, "PureType">;
4
+ declare function strict<T>(): PureType<T, "PureType">;
5
+ declare const pure: {
6
+ vanilla: typeof vanilla;
7
+ loose: typeof loose;
8
+ strict: typeof strict;
9
+ };
10
+ export default pure;
3
11
  //# sourceMappingURL=pure.d.ts.map
@@ -1,5 +1,18 @@
1
+ import Loose from "#Loose";
1
2
  import PureType from "#PureType";
2
- export default function () {
3
+ function vanilla() {
3
4
  return new PureType();
4
5
  }
6
+ function loose() {
7
+ const i = new PureType();
8
+ i[Loose] = true;
9
+ return i;
10
+ }
11
+ function strict() {
12
+ const i = new PureType();
13
+ i[Loose] = false;
14
+ return i;
15
+ }
16
+ const pure = { vanilla, loose, strict };
17
+ export default pure;
5
18
  //# sourceMappingURL=pure.js.map
@@ -1,9 +1,10 @@
1
1
  import type Parsed from "#Parsed";
2
2
  import RecordType from "#RecordType";
3
3
  import type RecordTypeKey from "#RecordTypeKey";
4
- /**
5
- * Value is a record of the given key and value types.
6
- */
7
- declare const _default: <const Key extends RecordTypeKey, const Value extends Parsed<unknown>>(k: Key, v: Value) => RecordType<Key, Value>;
8
- export default _default;
4
+ declare const record: {
5
+ vanilla: <const Key extends RecordTypeKey, const Value extends Parsed<unknown>>(k: Key, v: Value) => RecordType<Key, Value>;
6
+ loose: <const Key extends RecordTypeKey, const Value extends Parsed<unknown>>(k: Key, v: Value) => RecordType<Key, Value>;
7
+ strict: <const Key extends RecordTypeKey, const Value extends Parsed<unknown>>(k: Key, v: Value) => RecordType<Key, Value>;
8
+ };
9
+ export default record;
9
10
  //# sourceMappingURL=record.d.ts.map
@@ -1,6 +1,19 @@
1
+ import Loose from "#Loose";
1
2
  import RecordType from "#RecordType";
2
3
  /**
3
4
  * Value is a record of the given key and value types.
4
5
  */
5
- export default (k, v) => new RecordType(k, v);
6
+ const vanilla = (k, v) => new RecordType(k, v);
7
+ const loose = (k, v) => {
8
+ const i = new RecordType(k, v);
9
+ i[Loose] = true;
10
+ return i;
11
+ };
12
+ const strict = (k, v) => {
13
+ const i = new RecordType(k, v);
14
+ i[Loose] = false;
15
+ return i;
16
+ };
17
+ const record = { vanilla, loose, strict };
18
+ export default record;
6
19
  //# sourceMappingURL=record.js.map
@@ -0,0 +1,2 @@
1
+ export default function resolve(x: unknown): unknown;
2
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1,7 @@
1
+ import is from "@rcompat/is";
2
+ import symbol from "@rcompat/symbol";
3
+ const { parse } = symbol;
4
+ export default function resolve(x) {
5
+ return is.object(x) && parse in x ? x[parse]() : x;
6
+ }
7
+ //# sourceMappingURL=resolve.js.map
@@ -1,5 +1,8 @@
1
1
  import type BigIntDataType from "#BigIntDataType";
2
2
  import type BigIntType from "#BigIntType";
3
- declare const _default: <T extends BigIntDataType>(t: BigIntType<T>, min: bigint, max: bigint) => void;
3
+ declare const _default: <T extends BigIntDataType>(t: {
4
+ loose: BigIntType<T>;
5
+ strict: BigIntType<T>;
6
+ }, min: bigint, max: bigint) => void;
4
7
  export default _default;
5
8
  //# sourceMappingURL=bigint.d.ts.map
@@ -1,35 +1,36 @@
1
1
  import test from "#test";
2
2
  export default (t, min, max) => {
3
+ const { strict, loose } = t;
3
4
  test.case("fail", assert => {
4
- assert(t).invalid_type(["1", 1.1, -1.1, 0, 1]);
5
+ assert(strict).invalid_type(["1", 1.1, -1.1, 0, 1]);
5
6
  });
6
7
  test.case("pass", assert => {
7
- assert(t).type();
8
- assert(t.parse(0n)).equals(0n).type();
9
- assert(t.parse(1n)).equals(1n).type();
8
+ assert(strict).type();
9
+ assert(strict.parse(0n)).equals(0n).type();
10
+ assert(strict.parse(1n)).equals(1n).type();
10
11
  });
11
12
  test.case("range", assert => {
12
- assert(t.parse(min)).equals(min).type();
13
- assert(t.parse(max)).equals(max).type();
14
- assert(t).out_of_range([min - 1n, max + 1n]);
15
- });
16
- test.case("coerced", assert => {
17
- assert(t.coerce(0n)).equals(0n).type();
18
- assert(t.coerce(1n)).equals(1n).type();
19
- assert(t.coerce(0)).equals(0n).type();
20
- assert(t.coerce(1)).equals(1n).type();
21
- assert(t.coerce("1")).equals(1n).type();
22
- assert(t.coerce("1.0")).equals(1n).type();
23
- assert(t.coerce("1.")).equals(1n).type();
24
- assert(t).coerce_invalid_type(["0.1", ".1"]);
25
- assert(t.coerce(-1)).equals(-1n).type();
26
- assert(t.coerce("-1")).equals(-1n).type();
27
- assert(t.coerce("-1.0")).equals(-1n).type();
28
- assert(t.coerce("-1.")).equals(-1n).type();
29
- assert(t).coerce_invalid_type(["-0.1", "-.1"]);
13
+ assert(strict.parse(min)).equals(min).type();
14
+ assert(strict.parse(max)).equals(max).type();
15
+ assert(strict).out_of_range([min - 1n, max + 1n]);
16
+ });
17
+ test.case("loose", assert => {
18
+ assert(loose.parse(0n)).equals(0n).type();
19
+ assert(loose.parse(1n)).equals(1n).type();
20
+ assert(loose.parse(0)).equals(0n).type();
21
+ assert(loose.parse(1)).equals(1n).type();
22
+ assert(loose.parse("1")).equals(1n).type();
23
+ assert(loose.parse("1.0")).equals(1n).type();
24
+ assert(loose.parse("1.")).equals(1n).type();
25
+ assert(loose).invalid_type(["0.1", ".1"]);
26
+ assert(loose.parse(-1)).equals(-1n).type();
27
+ assert(loose.parse("-1")).equals(-1n).type();
28
+ assert(loose.parse("-1.0")).equals(-1n).type();
29
+ assert(loose.parse("-1.")).equals(-1n).type();
30
+ assert(loose).invalid_type(["-0.1", "-.1"]);
30
31
  });
31
32
  test.case("default", assert => {
32
- [t.default(1n), t.default(() => 1n)].forEach(d => {
33
+ [strict.default(1n), strict.default(() => 1n)].forEach(d => {
33
34
  assert(d).type();
34
35
  assert(d.parse(undefined)).equals(1n).type();
35
36
  assert(d.parse(1n)).equals(1n).type();
@@ -38,21 +39,21 @@ export default (t, min, max) => {
38
39
  });
39
40
  });
40
41
  test.case("validator - range", assert => {
41
- const r = t.range(-10n, 10n);
42
+ const r = strict.range(-10n, 10n);
42
43
  assert(r.parse(-10n)).equals(-10n).type();
43
44
  assert(r.parse(0n)).equals(0n).type();
44
45
  assert(r.parse(10n)).equals(10n).type();
45
46
  assert(r).out_of_range([-11n, 11n]);
46
47
  });
47
48
  test.case("validator - min", assert => {
48
- const r = t.min(-10n);
49
+ const r = strict.min(-10n);
49
50
  assert(r.parse(-10n)).equals(-10n).type();
50
51
  assert(r.parse(0n)).equals(0n).type();
51
52
  assert(r.parse(10n)).equals(10n).type();
52
53
  assert(r).too_small([-11n]);
53
54
  });
54
55
  test.case("validator - max", assert => {
55
- const r = t.max(10n);
56
+ const r = strict.max(10n);
56
57
  assert(r.parse(-10n)).equals(-10n).type();
57
58
  assert(r.parse(0n)).equals(0n).type();
58
59
  assert(r.parse(10n)).equals(10n).type();
@@ -1,5 +1,8 @@
1
1
  import type BigUintDataType from "#BigUintDataType";
2
2
  import type BigUintType from "#BigUintType";
3
- declare const _default: <T extends BigUintDataType>(t: BigUintType<T>, min: bigint, max: bigint) => void;
3
+ declare const _default: <T extends BigUintDataType>(t: {
4
+ loose: BigUintType<T>;
5
+ strict: BigUintType<T>;
6
+ }, min: bigint, max: bigint) => void;
4
7
  export default _default;
5
8
  //# sourceMappingURL=biguint.d.ts.map
@@ -1,31 +1,32 @@
1
1
  import test from "#test";
2
2
  export default (t, min, max) => {
3
+ const { strict, loose } = t;
3
4
  test.case("fail", assert => {
4
- assert(t).invalid_type(["1", 0, 1, 1.1, -1.1]);
5
+ assert(strict).invalid_type(["1", 0, 1, 1.1, -1.1]);
5
6
  });
6
7
  test.case("pass", assert => {
7
- assert(t).type();
8
- assert(t.parse(0n)).equals(0n).type();
9
- assert(t.parse(1n)).equals(1n).type();
8
+ assert(strict).type();
9
+ assert(strict.parse(0n)).equals(0n).type();
10
+ assert(strict.parse(1n)).equals(1n).type();
10
11
  });
11
12
  test.case("range", assert => {
12
- assert(t.parse(min)).equals(min).type();
13
- assert(t.parse(max)).equals(max).type();
14
- assert(t).out_of_range([-1n, min - 1n, max + 1n]);
15
- });
16
- test.case("coerced", assert => {
17
- assert(t.coerce(0n)).equals(0n).type();
18
- assert(t.coerce(1n)).equals(1n).type();
19
- assert(t.coerce(0)).equals(0n).type();
20
- assert(t.coerce(1)).equals(1n).type();
21
- assert(t.coerce("1")).equals(1n).type();
22
- assert(t.coerce("1.0")).equals(1n).type();
23
- assert(t.coerce("1.")).equals(1n).type();
24
- assert(t).coerce_invalid_type(["0.1", .1, "-0.1", "-.1"]);
25
- assert(t).coerce_out_of_range([-1, "-1", "-1.0", "-1."]);
13
+ assert(strict.parse(min)).equals(min).type();
14
+ assert(strict.parse(max)).equals(max).type();
15
+ assert(strict).out_of_range([-1n, min - 1n, max + 1n]);
16
+ });
17
+ test.case("loose", assert => {
18
+ assert(loose.parse(0n)).equals(0n).type();
19
+ assert(loose.parse(1n)).equals(1n).type();
20
+ assert(loose.parse(0)).equals(0n).type();
21
+ assert(loose.parse(1)).equals(1n).type();
22
+ assert(loose.parse("1")).equals(1n).type();
23
+ assert(loose.parse("1.0")).equals(1n).type();
24
+ assert(loose.parse("1.")).equals(1n).type();
25
+ assert(loose).invalid_type(["0.1", .1, "-0.1", "-.1"]);
26
+ assert(loose).out_of_range([-1, "-1", "-1.0", "-1."]);
26
27
  });
27
28
  test.case("default", assert => {
28
- [t.default(1n), t.default(() => 1n)].forEach(d => {
29
+ [strict.default(1n), strict.default(() => 1n)].forEach(d => {
29
30
  assert(d).type();
30
31
  assert(d.parse(undefined)).equals(1n).type();
31
32
  assert(d.parse(1n)).equals(1n).type();
@@ -34,20 +35,20 @@ export default (t, min, max) => {
34
35
  });
35
36
  });
36
37
  test.case("validator - range", assert => {
37
- const r = t.range(0n, 10n);
38
+ const r = strict.range(0n, 10n);
38
39
  assert(r.parse(0n)).equals(0n).type();
39
40
  assert(r.parse(10n)).equals(10n).type();
40
41
  assert(r).out_of_range([-1n, -11n, 11n]);
41
42
  });
42
43
  test.case("validator - min", assert => {
43
- const r = t.min(10n);
44
+ const r = strict.min(10n);
44
45
  assert(r.parse(20n)).equals(20n).type();
45
46
  assert(r.parse(10n)).equals(10n).type();
46
47
  assert(r).out_of_range([-1n]);
47
48
  assert(r).too_small([0n]);
48
49
  });
49
50
  test.case("validator - max", assert => {
50
- const r = t.max(10n);
51
+ const r = strict.max(10n);
51
52
  assert(r.parse(0n)).equals(0n).type();
52
53
  assert(r.parse(10n)).equals(10n).type();
53
54
  assert(r).out_of_range([-1n]);
@@ -1,5 +1,8 @@
1
1
  import type IntDataType from "#IntDataType";
2
2
  import type IntType from "#IntType";
3
- declare const _default: <T extends IntDataType>(t: IntType<T>, min: number, max: number) => void;
3
+ declare const _default: <T extends IntDataType>(t: {
4
+ loose: IntType<T>;
5
+ strict: IntType<T>;
6
+ }, min: number, max: number) => void;
4
7
  export default _default;
5
8
  //# sourceMappingURL=int.d.ts.map