@sinclair/typebox 0.32.0-dev-27 → 0.32.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 (66) hide show
  1. package/build/import/compiler/compiler.mjs +7 -0
  2. package/build/import/errors/errors.d.mts +16 -15
  3. package/build/import/errors/errors.mjs +24 -15
  4. package/build/import/errors/function.mjs +2 -0
  5. package/build/import/type/clone/value.mjs +6 -2
  6. package/build/import/type/extends/extends-check.mjs +137 -125
  7. package/build/import/type/guard/type.d.mts +3 -0
  8. package/build/import/type/guard/type.mjs +10 -0
  9. package/build/import/type/guard/value.d.mts +2 -0
  10. package/build/import/type/guard/value.mjs +4 -0
  11. package/build/import/type/indexed/indexed-property-keys.d.mts +1 -1
  12. package/build/import/type/record/record.d.mts +3 -1
  13. package/build/import/type/record/record.mjs +10 -5
  14. package/build/import/type/regexp/regexp.d.mts +11 -4
  15. package/build/import/type/regexp/regexp.mjs +3 -3
  16. package/build/import/type/schema/anyschema.d.mts +2 -1
  17. package/build/import/type/type/javascript.d.mts +2 -2
  18. package/build/import/type/type/javascript.mjs +1 -1
  19. package/build/import/value/cast/cast.d.mts +2 -15
  20. package/build/import/value/cast/cast.mjs +5 -28
  21. package/build/import/value/check/check.mjs +6 -1
  22. package/build/import/value/convert/convert.d.mts +0 -5
  23. package/build/import/value/convert/convert.mjs +0 -12
  24. package/build/import/value/create/create.d.mts +2 -23
  25. package/build/import/value/create/create.mjs +30 -53
  26. package/build/import/value/default/default.mjs +0 -2
  27. package/build/import/value/delta/delta.d.mts +4 -4
  28. package/build/import/value/delta/delta.mjs +12 -12
  29. package/build/import/value/index.d.mts +7 -7
  30. package/build/import/value/index.mjs +6 -6
  31. package/build/import/value/mutate/mutate.d.mts +2 -5
  32. package/build/import/value/mutate/mutate.mjs +5 -10
  33. package/build/require/compiler/compiler.js +7 -0
  34. package/build/require/errors/errors.d.ts +16 -15
  35. package/build/require/errors/errors.js +24 -15
  36. package/build/require/errors/function.js +2 -0
  37. package/build/require/type/clone/value.js +6 -2
  38. package/build/require/type/extends/extends-check.js +137 -125
  39. package/build/require/type/guard/type.d.ts +3 -0
  40. package/build/require/type/guard/type.js +12 -1
  41. package/build/require/type/guard/value.d.ts +2 -0
  42. package/build/require/type/guard/value.js +6 -1
  43. package/build/require/type/indexed/indexed-property-keys.d.ts +1 -1
  44. package/build/require/type/record/record.d.ts +3 -1
  45. package/build/require/type/record/record.js +9 -4
  46. package/build/require/type/regexp/regexp.d.ts +11 -4
  47. package/build/require/type/regexp/regexp.js +3 -3
  48. package/build/require/type/schema/anyschema.d.ts +2 -1
  49. package/build/require/type/type/javascript.d.ts +2 -2
  50. package/build/require/type/type/javascript.js +1 -1
  51. package/build/require/value/cast/cast.d.ts +2 -15
  52. package/build/require/value/cast/cast.js +7 -29
  53. package/build/require/value/check/check.js +6 -1
  54. package/build/require/value/convert/convert.d.ts +0 -5
  55. package/build/require/value/convert/convert.js +31 -43
  56. package/build/require/value/create/create.d.ts +2 -23
  57. package/build/require/value/create/create.js +32 -54
  58. package/build/require/value/default/default.js +0 -2
  59. package/build/require/value/delta/delta.d.ts +4 -4
  60. package/build/require/value/delta/delta.js +14 -14
  61. package/build/require/value/index.d.ts +7 -7
  62. package/build/require/value/index.js +8 -19
  63. package/build/require/value/mutate/mutate.d.ts +2 -5
  64. package/build/require/value/mutate/mutate.js +7 -13
  65. package/package.json +1 -1
  66. package/readme.md +43 -36
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.Create = exports.ValueCreateRecursiveInstantiationError = exports.ValueCreateTempateLiteralTypeError = exports.ValueCreateIntersectTypeError = exports.ValueCreateNotTypeError = exports.ValueCreateNeverTypeError = exports.ValueCreateUnknownTypeError = void 0;
4
+ exports.Create = exports.ValueCreateError = void 0;
5
5
  const index_1 = require("../guard/index");
6
6
  const index_2 = require("../check/index");
7
7
  const index_3 = require("../deref/index");
@@ -13,49 +13,13 @@ const index_8 = require("../../type/error/index");
13
13
  // ------------------------------------------------------------------
14
14
  // Errors
15
15
  // ------------------------------------------------------------------
16
- class ValueCreateUnknownTypeError extends index_8.TypeBoxError {
17
- constructor(schema) {
18
- super('Unknown type');
16
+ class ValueCreateError extends index_8.TypeBoxError {
17
+ constructor(schema, message) {
18
+ super(message);
19
19
  this.schema = schema;
20
20
  }
21
21
  }
22
- exports.ValueCreateUnknownTypeError = ValueCreateUnknownTypeError;
23
- class ValueCreateNeverTypeError extends index_8.TypeBoxError {
24
- constructor(schema) {
25
- super('Never types cannot be created');
26
- this.schema = schema;
27
- }
28
- }
29
- exports.ValueCreateNeverTypeError = ValueCreateNeverTypeError;
30
- class ValueCreateNotTypeError extends index_8.TypeBoxError {
31
- constructor(schema) {
32
- super('Not types must have a default value');
33
- this.schema = schema;
34
- }
35
- }
36
- exports.ValueCreateNotTypeError = ValueCreateNotTypeError;
37
- class ValueCreateIntersectTypeError extends index_8.TypeBoxError {
38
- constructor(schema) {
39
- super('Intersect produced invalid value. Consider using a default value.');
40
- this.schema = schema;
41
- }
42
- }
43
- exports.ValueCreateIntersectTypeError = ValueCreateIntersectTypeError;
44
- class ValueCreateTempateLiteralTypeError extends index_8.TypeBoxError {
45
- constructor(schema) {
46
- super('Can only create template literal values from patterns that produce finite sequences. Consider using a default value.');
47
- this.schema = schema;
48
- }
49
- }
50
- exports.ValueCreateTempateLiteralTypeError = ValueCreateTempateLiteralTypeError;
51
- class ValueCreateRecursiveInstantiationError extends index_8.TypeBoxError {
52
- constructor(schema, recursiveMaxDepth) {
53
- super('Value cannot be created as recursive type may produce value of infinite size. Consider using a default.');
54
- this.schema = schema;
55
- this.recursiveMaxDepth = recursiveMaxDepth;
56
- }
57
- }
58
- exports.ValueCreateRecursiveInstantiationError = ValueCreateRecursiveInstantiationError;
22
+ exports.ValueCreateError = ValueCreateError;
59
23
  // ------------------------------------------------------------------
60
24
  // Create
61
25
  // ------------------------------------------------------------------
@@ -69,10 +33,10 @@ function FromAny(schema, references) {
69
33
  }
70
34
  function FromArray(schema, references) {
71
35
  if (schema.uniqueItems === true && !(0, index_1.HasPropertyKey)(schema, 'default')) {
72
- throw new Error('ValueCreate.Array: Array with the uniqueItems constraint requires a default value');
36
+ throw new ValueCreateError(schema, 'Array with the uniqueItems constraint requires a default value');
73
37
  }
74
38
  else if ('contains' in schema && !(0, index_1.HasPropertyKey)(schema, 'default')) {
75
- throw new Error('ValueCreate.Array: Array with the contains constraint requires a default value');
39
+ throw new ValueCreateError(schema, 'Array with the contains constraint requires a default value');
76
40
  }
77
41
  else if ('default' in schema) {
78
42
  return schema.default;
@@ -179,7 +143,7 @@ function FromIntersect(schema, references) {
179
143
  return typeof next === 'object' ? { ...acc, ...next } : next;
180
144
  }, {});
181
145
  if (!(0, index_2.Check)(schema, references, value))
182
- throw new ValueCreateIntersectTypeError(schema);
146
+ throw new ValueCreateError(schema, 'Intersect produced invalid value. Consider using a default value.');
183
147
  return value;
184
148
  }
185
149
  }
@@ -200,14 +164,19 @@ function FromLiteral(schema, references) {
200
164
  }
201
165
  }
202
166
  function FromNever(schema, references) {
203
- throw new ValueCreateNeverTypeError(schema);
167
+ if ((0, index_1.HasPropertyKey)(schema, 'default')) {
168
+ return schema.default;
169
+ }
170
+ else {
171
+ throw new ValueCreateError(schema, 'Never types cannot be created. Consider using a default value.');
172
+ }
204
173
  }
205
174
  function FromNot(schema, references) {
206
175
  if ((0, index_1.HasPropertyKey)(schema, 'default')) {
207
176
  return schema.default;
208
177
  }
209
178
  else {
210
- throw new ValueCreateNotTypeError(schema);
179
+ throw new ValueCreateError(schema, 'Not types must have a default value');
211
180
  }
212
181
  }
213
182
  function FromNull(schema, references) {
@@ -272,10 +241,18 @@ function FromRef(schema, references) {
272
241
  return Visit((0, index_3.Deref)(schema, references), references);
273
242
  }
274
243
  }
244
+ function FromRegExp(schema, references) {
245
+ if ((0, index_1.HasPropertyKey)(schema, 'default')) {
246
+ return schema.default;
247
+ }
248
+ else {
249
+ throw new ValueCreateError(schema, 'RegExp types cannot be created. Consider using a default value.');
250
+ }
251
+ }
275
252
  function FromString(schema, references) {
276
253
  if (schema.pattern !== undefined) {
277
254
  if (!(0, index_1.HasPropertyKey)(schema, 'default')) {
278
- throw new Error('ValueCreate.String: String types with patterns must specify a default value');
255
+ throw new ValueCreateError(schema, 'String types with patterns must specify a default value');
279
256
  }
280
257
  else {
281
258
  return schema.default;
@@ -283,7 +260,7 @@ function FromString(schema, references) {
283
260
  }
284
261
  else if (schema.format !== undefined) {
285
262
  if (!(0, index_1.HasPropertyKey)(schema, 'default')) {
286
- throw new Error('ValueCreate.String: String types with formats must specify a default value');
263
+ throw new ValueCreateError(schema, 'String types with formats must specify a default value');
287
264
  }
288
265
  else {
289
266
  return schema.default;
@@ -294,9 +271,8 @@ function FromString(schema, references) {
294
271
  return schema.default;
295
272
  }
296
273
  else if (schema.minLength !== undefined) {
297
- return Array.from({ length: schema.minLength })
298
- .map(() => '.')
299
- .join('');
274
+ // prettier-ignore
275
+ return Array.from({ length: schema.minLength }).map(() => ' ').join('');
300
276
  }
301
277
  else {
302
278
  return '';
@@ -319,13 +295,13 @@ function FromTemplateLiteral(schema, references) {
319
295
  return schema.default;
320
296
  }
321
297
  if (!(0, index_4.IsTemplateLiteralFinite)(schema))
322
- throw new ValueCreateTempateLiteralTypeError(schema);
298
+ throw new ValueCreateError(schema, 'Can only create template literals that produce a finite variants. Consider using a default value.');
323
299
  const generated = (0, index_4.TemplateLiteralGenerate)(schema);
324
300
  return generated[0];
325
301
  }
326
302
  function FromThis(schema, references) {
327
303
  if (recursiveDepth++ > recursiveMaxDepth)
328
- throw new ValueCreateRecursiveInstantiationError(schema, recursiveMaxDepth);
304
+ throw new ValueCreateError(schema, 'Cannot create recursive type as it appears possibly infinite. Consider using a default.');
329
305
  if ((0, index_1.HasPropertyKey)(schema, 'default')) {
330
306
  return schema.default;
331
307
  }
@@ -442,6 +418,8 @@ function Visit(schema, references) {
442
418
  return FromRecord(schema_, references_);
443
419
  case 'Ref':
444
420
  return FromRef(schema_, references_);
421
+ case 'RegExp':
422
+ return FromRegExp(schema_, references_);
445
423
  case 'String':
446
424
  return FromString(schema_, references_);
447
425
  case 'Symbol':
@@ -464,7 +442,7 @@ function Visit(schema, references) {
464
442
  return FromVoid(schema_, references_);
465
443
  default:
466
444
  if (!index_6.TypeRegistry.Has(schema_[index_7.Kind]))
467
- throw new ValueCreateUnknownTypeError(schema_);
445
+ throw new ValueCreateError(schema_, 'Unknown type');
468
446
  return FromKind(schema_, references_);
469
447
  }
470
448
  }
@@ -8,12 +8,10 @@ const index_3 = require("../../type/symbols/index");
8
8
  // ------------------------------------------------------------------
9
9
  // ValueGuard
10
10
  // ------------------------------------------------------------------
11
- // prettier-ignore
12
11
  const index_4 = require("../guard/index");
13
12
  // ------------------------------------------------------------------
14
13
  // TypeGuard
15
14
  // ------------------------------------------------------------------
16
- // prettier-ignore
17
15
  const type_1 = require("../../type/guard/type");
18
16
  // ------------------------------------------------------------------
19
17
  // ValueOrDefault
@@ -30,11 +30,11 @@ export declare const Edit: import("../../type/union/union-type").TUnion<[import(
30
30
  type: import("../../type/literal/literal").TLiteral<"delete">;
31
31
  path: import("../../type/string/string").TString;
32
32
  }>]>;
33
- export declare class ValueDeltaObjectWithSymbolKeyError extends TypeBoxError {
34
- readonly key: unknown;
35
- constructor(key: unknown);
33
+ export declare class ValueDeltaError extends TypeBoxError {
34
+ readonly value: unknown;
35
+ constructor(value: unknown, message: string);
36
36
  }
37
- export declare class ValueDeltaUnableToDiffUnknownValue extends TypeBoxError {
37
+ export declare class ValueDeltaSymbolError extends ValueDeltaError {
38
38
  readonly value: unknown;
39
39
  constructor(value: unknown);
40
40
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.Patch = exports.Diff = exports.ValueDeltaUnableToDiffUnknownValue = exports.ValueDeltaObjectWithSymbolKeyError = exports.Edit = exports.Delete = exports.Update = exports.Insert = void 0;
4
+ exports.Patch = exports.Diff = exports.ValueDeltaSymbolError = exports.ValueDeltaError = exports.Edit = exports.Delete = exports.Update = exports.Insert = void 0;
5
5
  const index_1 = require("../guard/index");
6
6
  const index_2 = require("../pointer/index");
7
7
  const index_3 = require("../clone/index");
@@ -29,20 +29,20 @@ exports.Edit = (0, index_9.Union)([exports.Insert, exports.Update, exports.Delet
29
29
  // ------------------------------------------------------------------
30
30
  // Errors
31
31
  // ------------------------------------------------------------------
32
- class ValueDeltaObjectWithSymbolKeyError extends index_4.TypeBoxError {
33
- constructor(key) {
34
- super('Cannot diff objects with symbol keys');
35
- this.key = key;
32
+ class ValueDeltaError extends index_4.TypeBoxError {
33
+ constructor(value, message) {
34
+ super(message);
35
+ this.value = value;
36
36
  }
37
37
  }
38
- exports.ValueDeltaObjectWithSymbolKeyError = ValueDeltaObjectWithSymbolKeyError;
39
- class ValueDeltaUnableToDiffUnknownValue extends index_4.TypeBoxError {
38
+ exports.ValueDeltaError = ValueDeltaError;
39
+ class ValueDeltaSymbolError extends ValueDeltaError {
40
40
  constructor(value) {
41
- super('Unable to create diff edits for unknown value');
41
+ super(value, 'Cannot diff objects with symbol keys');
42
42
  this.value = value;
43
43
  }
44
44
  }
45
- exports.ValueDeltaUnableToDiffUnknownValue = ValueDeltaUnableToDiffUnknownValue;
45
+ exports.ValueDeltaSymbolError = ValueDeltaSymbolError;
46
46
  // ------------------------------------------------------------------
47
47
  // Command Factory
48
48
  // ------------------------------------------------------------------
@@ -65,7 +65,7 @@ function* ObjectType(path, current, next) {
65
65
  const nextKeys = [...globalThis.Object.keys(next), ...globalThis.Object.getOwnPropertySymbols(next)];
66
66
  for (const key of currentKeys) {
67
67
  if ((0, index_1.IsSymbol)(key))
68
- throw new ValueDeltaObjectWithSymbolKeyError(key);
68
+ throw new ValueDeltaSymbolError(key);
69
69
  if ((0, index_1.IsUndefined)(next[key]) && nextKeys.includes(key))
70
70
  yield CreateUpdate(`${path}/${globalThis.String(key)}`, undefined);
71
71
  }
@@ -73,18 +73,18 @@ function* ObjectType(path, current, next) {
73
73
  if ((0, index_1.IsUndefined)(current[key]) || (0, index_1.IsUndefined)(next[key]))
74
74
  continue;
75
75
  if ((0, index_1.IsSymbol)(key))
76
- throw new ValueDeltaObjectWithSymbolKeyError(key);
76
+ throw new ValueDeltaSymbolError(key);
77
77
  yield* Visit(`${path}/${globalThis.String(key)}`, current[key], next[key]);
78
78
  }
79
79
  for (const key of nextKeys) {
80
80
  if ((0, index_1.IsSymbol)(key))
81
- throw new ValueDeltaObjectWithSymbolKeyError(key);
81
+ throw new ValueDeltaSymbolError(key);
82
82
  if ((0, index_1.IsUndefined)(current[key]))
83
83
  yield CreateInsert(`${path}/${globalThis.String(key)}`, next[key]);
84
84
  }
85
85
  for (const key of currentKeys.reverse()) {
86
86
  if ((0, index_1.IsSymbol)(key))
87
- throw new ValueDeltaObjectWithSymbolKeyError(key);
87
+ throw new ValueDeltaSymbolError(key);
88
88
  if ((0, index_1.IsUndefined)(next[key]) && !nextKeys.includes(key))
89
89
  yield CreateDelete(`${path}/${globalThis.String(key)}`);
90
90
  }
@@ -127,7 +127,7 @@ function* Visit(path, current, next) {
127
127
  return yield* TypedArrayType(path, current, next);
128
128
  if ((0, index_1.IsValueType)(current))
129
129
  return yield* ValueType(path, current, next);
130
- throw new ValueDeltaUnableToDiffUnknownValue(current);
130
+ throw new ValueDeltaError(current, 'Unable to create diff edits for unknown value');
131
131
  }
132
132
  // ------------------------------------------------------------------
133
133
  // Diff
@@ -1,16 +1,16 @@
1
1
  export { ValueError, ValueErrorType, ValueErrorIterator } from '../errors/index';
2
- export { Cast, ValueCastArrayUniqueItemsTypeError, ValueCastNeverTypeError, ValueCastRecursiveTypeError, ValueCastUnknownTypeError } from './cast/index';
2
+ export { Cast, ValueCastError } from './cast/index';
3
3
  export { Check } from './check/index';
4
4
  export { Clean } from './clean/index';
5
5
  export { Clone } from './clone/index';
6
- export { Convert, ValueConvertUnknownTypeError } from './convert/index';
7
- export { Create, ValueCreateIntersectTypeError, ValueCreateNeverTypeError, ValueCreateNotTypeError, ValueCreateRecursiveInstantiationError, ValueCreateTempateLiteralTypeError, ValueCreateUnknownTypeError } from './create/index';
6
+ export { Convert } from './convert/index';
7
+ export { Create, ValueCreateError } from './create/index';
8
8
  export { Default } from './default/index';
9
- export { Diff, Patch, Edit, Delete, Insert, Update, ValueDeltaObjectWithSymbolKeyError, ValueDeltaUnableToDiffUnknownValue } from './delta/index';
9
+ export { Diff, Patch, Edit, Delete, Insert, Update, ValueDeltaError } from './delta/index';
10
10
  export { Equal } from './equal/index';
11
11
  export { Hash, ValueHashError } from './hash/index';
12
- export { Mutate, type Mutable, ValueMutateInvalidRootMutationError, ValueMutateTypeMismatchError } from './mutate/index';
12
+ export { Mutate, ValueMutateError, type Mutable } from './mutate/index';
13
13
  export { ValuePointer } from './pointer/index';
14
- export { TransformDecode as DecodeTransform, TransformEncode as EncodeTransform, HasTransform, TransformDecodeCheckError, TransformDecodeError, TransformEncodeCheckError, TransformEncodeError } from './transform/index';
15
- export { ArrayType, HasPropertyKey, IsArray, IsAsyncIterator, IsBigInt, IsBoolean, IsDate, IsFunction, IsInteger, IsIterator, IsNull, IsNumber, IsObject, IsPlainObject, IsPromise, IsString, IsSymbol, IsTypedArray, IsUint8Array, IsUndefined, IsValueType, ObjectType, TypedArrayType, ValueType, } from './guard/index';
14
+ export { TransformDecode, TransformEncode, HasTransform, TransformDecodeCheckError, TransformDecodeError, TransformEncodeCheckError, TransformEncodeError } from './transform/index';
15
+ export { ArrayType, HasPropertyKey, IsArray, IsAsyncIterator, IsBigInt, IsBoolean, IsDate, IsFunction, IsInteger, IsIterator, IsNull, IsNumber, IsObject, IsPlainObject, IsPromise, IsString, IsSymbol, IsTypedArray, IsUint8Array, IsUndefined, IsValueType, type ObjectType, type TypedArrayType, type ValueType, } from './guard/index';
16
16
  export { Value } from './value/index';
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.IsInteger = exports.IsFunction = exports.IsDate = exports.IsBoolean = exports.IsBigInt = exports.IsAsyncIterator = exports.IsArray = exports.HasPropertyKey = exports.TransformEncodeError = exports.TransformEncodeCheckError = exports.TransformDecodeError = exports.TransformDecodeCheckError = exports.HasTransform = exports.EncodeTransform = exports.DecodeTransform = exports.ValuePointer = exports.ValueMutateTypeMismatchError = exports.ValueMutateInvalidRootMutationError = exports.Mutate = exports.ValueHashError = exports.Hash = exports.Equal = exports.ValueDeltaUnableToDiffUnknownValue = exports.ValueDeltaObjectWithSymbolKeyError = exports.Update = exports.Insert = exports.Delete = exports.Edit = exports.Patch = exports.Diff = exports.Default = exports.ValueCreateUnknownTypeError = exports.ValueCreateTempateLiteralTypeError = exports.ValueCreateRecursiveInstantiationError = exports.ValueCreateNotTypeError = exports.ValueCreateNeverTypeError = exports.ValueCreateIntersectTypeError = exports.Create = exports.ValueConvertUnknownTypeError = exports.Convert = exports.Clone = exports.Clean = exports.Check = exports.ValueCastUnknownTypeError = exports.ValueCastRecursiveTypeError = exports.ValueCastNeverTypeError = exports.ValueCastArrayUniqueItemsTypeError = exports.Cast = exports.ValueErrorIterator = exports.ValueErrorType = void 0;
5
- exports.Value = exports.IsValueType = exports.IsUndefined = exports.IsUint8Array = exports.IsTypedArray = exports.IsSymbol = exports.IsString = exports.IsPromise = exports.IsPlainObject = exports.IsObject = exports.IsNumber = exports.IsNull = exports.IsIterator = void 0;
4
+ exports.IsUndefined = exports.IsUint8Array = exports.IsTypedArray = exports.IsSymbol = exports.IsString = exports.IsPromise = exports.IsPlainObject = exports.IsObject = exports.IsNumber = exports.IsNull = exports.IsIterator = exports.IsInteger = exports.IsFunction = exports.IsDate = exports.IsBoolean = exports.IsBigInt = exports.IsAsyncIterator = exports.IsArray = exports.HasPropertyKey = exports.TransformEncodeError = exports.TransformEncodeCheckError = exports.TransformDecodeError = exports.TransformDecodeCheckError = exports.HasTransform = exports.TransformEncode = exports.TransformDecode = exports.ValuePointer = exports.ValueMutateError = exports.Mutate = exports.ValueHashError = exports.Hash = exports.Equal = exports.ValueDeltaError = exports.Update = exports.Insert = exports.Delete = exports.Edit = exports.Patch = exports.Diff = exports.Default = exports.ValueCreateError = exports.Create = exports.Convert = exports.Clone = exports.Clean = exports.Check = exports.ValueCastError = exports.Cast = exports.ValueErrorIterator = exports.ValueErrorType = void 0;
5
+ exports.Value = exports.IsValueType = void 0;
6
6
  // ------------------------------------------------------------------
7
7
  // Value Errors (re-export)
8
8
  // ------------------------------------------------------------------
@@ -14,10 +14,7 @@ Object.defineProperty(exports, "ValueErrorIterator", { enumerable: true, get: fu
14
14
  // ------------------------------------------------------------------
15
15
  var index_2 = require("./cast/index");
16
16
  Object.defineProperty(exports, "Cast", { enumerable: true, get: function () { return index_2.Cast; } });
17
- Object.defineProperty(exports, "ValueCastArrayUniqueItemsTypeError", { enumerable: true, get: function () { return index_2.ValueCastArrayUniqueItemsTypeError; } });
18
- Object.defineProperty(exports, "ValueCastNeverTypeError", { enumerable: true, get: function () { return index_2.ValueCastNeverTypeError; } });
19
- Object.defineProperty(exports, "ValueCastRecursiveTypeError", { enumerable: true, get: function () { return index_2.ValueCastRecursiveTypeError; } });
20
- Object.defineProperty(exports, "ValueCastUnknownTypeError", { enumerable: true, get: function () { return index_2.ValueCastUnknownTypeError; } });
17
+ Object.defineProperty(exports, "ValueCastError", { enumerable: true, get: function () { return index_2.ValueCastError; } });
21
18
  var index_3 = require("./check/index");
22
19
  Object.defineProperty(exports, "Check", { enumerable: true, get: function () { return index_3.Check; } });
23
20
  var index_4 = require("./clean/index");
@@ -26,15 +23,9 @@ var index_5 = require("./clone/index");
26
23
  Object.defineProperty(exports, "Clone", { enumerable: true, get: function () { return index_5.Clone; } });
27
24
  var index_6 = require("./convert/index");
28
25
  Object.defineProperty(exports, "Convert", { enumerable: true, get: function () { return index_6.Convert; } });
29
- Object.defineProperty(exports, "ValueConvertUnknownTypeError", { enumerable: true, get: function () { return index_6.ValueConvertUnknownTypeError; } });
30
26
  var index_7 = require("./create/index");
31
27
  Object.defineProperty(exports, "Create", { enumerable: true, get: function () { return index_7.Create; } });
32
- Object.defineProperty(exports, "ValueCreateIntersectTypeError", { enumerable: true, get: function () { return index_7.ValueCreateIntersectTypeError; } });
33
- Object.defineProperty(exports, "ValueCreateNeverTypeError", { enumerable: true, get: function () { return index_7.ValueCreateNeverTypeError; } });
34
- Object.defineProperty(exports, "ValueCreateNotTypeError", { enumerable: true, get: function () { return index_7.ValueCreateNotTypeError; } });
35
- Object.defineProperty(exports, "ValueCreateRecursiveInstantiationError", { enumerable: true, get: function () { return index_7.ValueCreateRecursiveInstantiationError; } });
36
- Object.defineProperty(exports, "ValueCreateTempateLiteralTypeError", { enumerable: true, get: function () { return index_7.ValueCreateTempateLiteralTypeError; } });
37
- Object.defineProperty(exports, "ValueCreateUnknownTypeError", { enumerable: true, get: function () { return index_7.ValueCreateUnknownTypeError; } });
28
+ Object.defineProperty(exports, "ValueCreateError", { enumerable: true, get: function () { return index_7.ValueCreateError; } });
38
29
  var index_8 = require("./default/index");
39
30
  Object.defineProperty(exports, "Default", { enumerable: true, get: function () { return index_8.Default; } });
40
31
  var index_9 = require("./delta/index");
@@ -44,8 +35,7 @@ Object.defineProperty(exports, "Edit", { enumerable: true, get: function () { re
44
35
  Object.defineProperty(exports, "Delete", { enumerable: true, get: function () { return index_9.Delete; } });
45
36
  Object.defineProperty(exports, "Insert", { enumerable: true, get: function () { return index_9.Insert; } });
46
37
  Object.defineProperty(exports, "Update", { enumerable: true, get: function () { return index_9.Update; } });
47
- Object.defineProperty(exports, "ValueDeltaObjectWithSymbolKeyError", { enumerable: true, get: function () { return index_9.ValueDeltaObjectWithSymbolKeyError; } });
48
- Object.defineProperty(exports, "ValueDeltaUnableToDiffUnknownValue", { enumerable: true, get: function () { return index_9.ValueDeltaUnableToDiffUnknownValue; } });
38
+ Object.defineProperty(exports, "ValueDeltaError", { enumerable: true, get: function () { return index_9.ValueDeltaError; } });
49
39
  var index_10 = require("./equal/index");
50
40
  Object.defineProperty(exports, "Equal", { enumerable: true, get: function () { return index_10.Equal; } });
51
41
  var index_11 = require("./hash/index");
@@ -53,13 +43,12 @@ Object.defineProperty(exports, "Hash", { enumerable: true, get: function () { re
53
43
  Object.defineProperty(exports, "ValueHashError", { enumerable: true, get: function () { return index_11.ValueHashError; } });
54
44
  var index_12 = require("./mutate/index");
55
45
  Object.defineProperty(exports, "Mutate", { enumerable: true, get: function () { return index_12.Mutate; } });
56
- Object.defineProperty(exports, "ValueMutateInvalidRootMutationError", { enumerable: true, get: function () { return index_12.ValueMutateInvalidRootMutationError; } });
57
- Object.defineProperty(exports, "ValueMutateTypeMismatchError", { enumerable: true, get: function () { return index_12.ValueMutateTypeMismatchError; } });
46
+ Object.defineProperty(exports, "ValueMutateError", { enumerable: true, get: function () { return index_12.ValueMutateError; } });
58
47
  var index_13 = require("./pointer/index");
59
48
  Object.defineProperty(exports, "ValuePointer", { enumerable: true, get: function () { return index_13.ValuePointer; } });
60
49
  var index_14 = require("./transform/index");
61
- Object.defineProperty(exports, "DecodeTransform", { enumerable: true, get: function () { return index_14.TransformDecode; } });
62
- Object.defineProperty(exports, "EncodeTransform", { enumerable: true, get: function () { return index_14.TransformEncode; } });
50
+ Object.defineProperty(exports, "TransformDecode", { enumerable: true, get: function () { return index_14.TransformDecode; } });
51
+ Object.defineProperty(exports, "TransformEncode", { enumerable: true, get: function () { return index_14.TransformEncode; } });
63
52
  Object.defineProperty(exports, "HasTransform", { enumerable: true, get: function () { return index_14.HasTransform; } });
64
53
  Object.defineProperty(exports, "TransformDecodeCheckError", { enumerable: true, get: function () { return index_14.TransformDecodeCheckError; } });
65
54
  Object.defineProperty(exports, "TransformDecodeError", { enumerable: true, get: function () { return index_14.TransformDecodeError; } });
@@ -1,9 +1,6 @@
1
1
  import { TypeBoxError } from '../../type/error/index';
2
- export declare class ValueMutateTypeMismatchError extends TypeBoxError {
3
- constructor();
4
- }
5
- export declare class ValueMutateInvalidRootMutationError extends TypeBoxError {
6
- constructor();
2
+ export declare class ValueMutateError extends TypeBoxError {
3
+ constructor(message: string);
7
4
  }
8
5
  export type Mutable = {
9
6
  [key: string]: unknown;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.Mutate = exports.ValueMutateInvalidRootMutationError = exports.ValueMutateTypeMismatchError = void 0;
4
+ exports.Mutate = exports.ValueMutateError = void 0;
5
5
  const index_1 = require("../guard/index");
6
6
  const index_2 = require("../pointer/index");
7
7
  const index_3 = require("../clone/index");
@@ -9,18 +9,12 @@ const index_4 = require("../../type/error/index");
9
9
  // ------------------------------------------------------------------
10
10
  // Errors
11
11
  // ------------------------------------------------------------------
12
- class ValueMutateTypeMismatchError extends index_4.TypeBoxError {
13
- constructor() {
14
- super('Cannot assign due type mismatch of assignable values');
12
+ class ValueMutateError extends index_4.TypeBoxError {
13
+ constructor(message) {
14
+ super(message);
15
15
  }
16
16
  }
17
- exports.ValueMutateTypeMismatchError = ValueMutateTypeMismatchError;
18
- class ValueMutateInvalidRootMutationError extends index_4.TypeBoxError {
19
- constructor() {
20
- super('Only object and array types can be mutated at the root level');
21
- }
22
- }
23
- exports.ValueMutateInvalidRootMutationError = ValueMutateInvalidRootMutationError;
17
+ exports.ValueMutateError = ValueMutateError;
24
18
  function ObjectType(root, path, current, next) {
25
19
  if (!(0, index_1.IsPlainObject)(current)) {
26
20
  index_2.ValuePointer.Set(root, path, (0, index_3.Clone)(next));
@@ -96,9 +90,9 @@ function IsMismatchedValue(current, next) {
96
90
  /** `[Mutable]` Performs a deep mutable value assignment while retaining internal references */
97
91
  function Mutate(current, next) {
98
92
  if (IsNonMutableValue(current) || IsNonMutableValue(next))
99
- throw new ValueMutateInvalidRootMutationError();
93
+ throw new ValueMutateError('Only object and array types can be mutated at the root level');
100
94
  if (IsMismatchedValue(current, next))
101
- throw new ValueMutateTypeMismatchError();
95
+ throw new ValueMutateError('Cannot assign due type mismatch of assignable values');
102
96
  Visit(current, '', current, next);
103
97
  }
104
98
  exports.Mutate = Mutate;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sinclair/typebox",
3
- "version": "0.32.0-dev-27",
3
+ "version": "0.32.0",
4
4
  "description": "Json Schema Type Builder with Static Type Resolution for TypeScript",
5
5
  "keywords": [
6
6
  "typescript",
package/readme.md CHANGED
@@ -605,9 +605,10 @@ TypeBox provides an extended type set that can be used to create schematics for
605
605
  │ │ │ } │
606
606
  │ │ │ │
607
607
  ├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤
608
- │ const T = Type.RegExp(/abc/) │ type T = string │ const T = { │
609
- │ │ │ type: 'string' │
610
- │ │ │ pattern: 'abc'
608
+ │ const T = Type.RegExp(/abc/i) │ type T = string │ const T = { │
609
+ │ │ │ type: 'RegExp' │
610
+ │ │ │ source: 'abc'
611
+ │ │ │ flags: 'i' │
611
612
  │ │ │ } │
612
613
  │ │ │ │
613
614
  ├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤
@@ -647,12 +648,14 @@ TypeBox provides an extended type set that can be used to create schematics for
647
648
 
648
649
  ### Import
649
650
 
650
- You can import Type to bring in the full type system. This is recommended for most users.
651
+ Import the Type namespace to bring in TypeBox's full type system. This is recommended for most users.
651
652
 
652
653
  ```typescript
653
654
  import { Type, type Static } from '@sinclair/typebox'
654
655
  ```
655
- You can also import types individually. This approach enables modern bundlers to tree shake unused types.
656
+
657
+ You can also selectively import types. This enables modern bundlers to tree shake for unused types.
658
+
656
659
  ```typescript
657
660
  import { Object, Number, String, Boolean, type Static } from '@sinclair/typebox'
658
661
  ```
@@ -905,11 +908,11 @@ const R = Type.Record(K, Type.String()) // const R: TObject<{
905
908
  TypeBox supports indexed access types with Index. This type enables uniform access to interior property and element types without having to extract them from the underlying schema representation. This type is supported for Object, Array, Tuple, Union and Intersect types.
906
909
 
907
910
  ```typescript
908
- const T = Type.Object({ // const T: TObject<{
909
- x: Type.Number(), // x: TNumber,
910
- y: Type.String(), // y: TString,
911
- z: Type.Boolean() // z: TBoolean
912
- }) // }>
911
+ const T = Type.Object({ // type T = {
912
+ x: Type.Number(), // x: number,
913
+ y: Type.String(), // y: string,
914
+ z: Type.Boolean() // z: boolean
915
+ }) // }
913
916
 
914
917
  const A = Type.Index(T, ['x']) // type A = T['x']
915
918
  //
@@ -944,17 +947,17 @@ const C = Type.Index(T, Type.KeyOf(T)) // type C = T[keyof T]
944
947
  TypeBox supports mapped object types with Mapped. This type accepts two arguments, the first is a union type typically derived from KeyOf, the second is a mapping function that receives a mapping key `K` that can be used to index properties of a type. The following implements Partial using mapped types.
945
948
 
946
949
  ```typescript
947
- const T = Type.Object({ // const T: TObject<{
948
- x: Type.Number(), // x: TNumber,
949
- y: Type.String(), // y: TString,
950
- z: Type.Boolean() // z: TBoolean
951
- }) // }>
950
+ const T = Type.Object({ // type T = {
951
+ x: Type.Number(), // x: number,
952
+ y: Type.String(), // y: string,
953
+ z: Type.Boolean() // z: boolean
954
+ }) // }
952
955
 
953
- const P = Type.Mapped(Type.KeyOf(T), K => { // type P = { [K in keyof T]?: T[K] }
956
+ const M = Type.Mapped(Type.KeyOf(T), K => { // type M = { [K in keyof T]?: T[K] }
954
957
  return Type.Optional(Type.Index(T, K)) //
955
958
  }) // ... evaluated as
956
959
  //
957
- // const P: TObject<{
960
+ // const M: TObject<{
958
961
  // x: TOptional<TNumber>,
959
962
  // y: TOptional<TString>,
960
963
  // z: TOptional<TBoolean>
@@ -969,29 +972,29 @@ TypeBox supports runtime conditional types with Extends. This type performs a st
969
972
 
970
973
  ```typescript
971
974
  // Extends
972
- const T = Type.Extends( // type T = string extends number ? true : false
975
+ const A = Type.Extends( // type A = string extends number ? 1 : 2
973
976
  Type.String(), //
974
977
  Type.Number(), // ... evaluated as
975
- Type.Literal(true), //
976
- Type.Literal(false) // const T: TLiteral<false>
978
+ Type.Literal(1), //
979
+ Type.Literal(2) // const A: TLiteral<2>
977
980
  )
978
981
 
979
982
  // Extract
980
- const T = Type.Extract( // type T = Extract<1 | 2 | 3, 1>
983
+ const B = Type.Extract( // type B = Extract<1 | 2 | 3, 1>
981
984
  Type.Union([ //
982
985
  Type.Literal(1), // ... evaluated as
983
986
  Type.Literal(2), //
984
- Type.Literal(3) // const T: TLiteral<1>
987
+ Type.Literal(3) // const B: TLiteral<1>
985
988
  ]),
986
989
  Type.Literal(1)
987
990
  )
988
991
 
989
992
  // Exclude
990
- const T = Type.Exclude( // type T = Exclude<1 | 2 | 3, 1>
993
+ const C = Type.Exclude( // type C = Exclude<1 | 2 | 3, 1>
991
994
  Type.Union([ //
992
995
  Type.Literal(1), // ... evaluated as
993
996
  Type.Literal(2), //
994
- Type.Literal(3) // const T: TUnion<[
997
+ Type.Literal(3) // const C: TUnion<[
995
998
  ]), // TLiteral<2>,
996
999
  Type.Literal(1) // TLiteral<3>,
997
1000
  ) // ]>
@@ -1039,11 +1042,11 @@ TypeBox supports value decoding and encoding with Transform types. These types w
1039
1042
  import { Value } from '@sinclair/typebox/value'
1040
1043
 
1041
1044
  const T = Type.Transform(Type.Number())
1042
- .Decode(value => new Date(value)) // required: number to Date
1043
- .Encode(value => value.getTime()) // required: Date to number
1045
+ .Decode(value => new Date(value)) // decode: number to Date
1046
+ .Encode(value => value.getTime()) // encode: Date to number
1044
1047
 
1045
- const decoded = Value.Decode(T, 0) // const decoded = Date(1970-01-01T00:00:00.000Z)
1046
- const encoded = Value.Encode(T, decoded) // const encoded = 0
1048
+ const D = Value.Decode(T, 0) // const D = Date(1970-01-01T00:00:00.000Z)
1049
+ const E = Value.Encode(T, D) // const E = 0
1047
1050
  ```
1048
1051
  Use the StaticEncode or StaticDecode types to infer a Transform type.
1049
1052
  ```typescript
@@ -1418,15 +1421,18 @@ The TypeBox type system can be extended with additional types and formats using
1418
1421
 
1419
1422
  ### TypeRegistry
1420
1423
 
1421
- Use the TypeRegistry to register a new type. The Kind must match the registered type name.
1424
+ Use the TypeRegistry to register a type. The Kind must match the registered type name.
1422
1425
 
1423
1426
  ```typescript
1424
- import { TypeRegistry, Symbols } from '@sinclair/typebox'
1427
+ import { TSchema, Kind, TypeRegistry } from '@sinclair/typebox'
1425
1428
 
1426
1429
  TypeRegistry.Set('Foo', (schema, value) => value === 'foo')
1427
1430
 
1428
- const A = Value.Check({ [Kind]: 'Foo' }, 'foo') // const A = true
1429
- const B = Value.Check({ [Kind]: 'Foo' }, 'bar') // const B = false
1431
+ const Foo = { [Kind]: 'Foo' } as TSchema
1432
+
1433
+ const A = Value.Check(Foo, 'foo') // const A = true
1434
+
1435
+ const B = Value.Check(Foo, 'bar') // const B = false
1430
1436
  ```
1431
1437
 
1432
1438
  <a name='typeregistry-format'></a>
@@ -1443,6 +1449,7 @@ FormatRegistry.Set('foo', (value) => value === 'foo')
1443
1449
  const T = Type.String({ format: 'foo' })
1444
1450
 
1445
1451
  const A = Value.Check(T, 'foo') // const A = true
1452
+
1446
1453
  const B = Value.Check(T, 'bar') // const B = false
1447
1454
  ```
1448
1455
 
@@ -1795,11 +1802,11 @@ The following table lists esbuild compiled and minified sizes for each TypeBox m
1795
1802
  ┌──────────────────────┬────────────┬────────────┬─────────────┐
1796
1803
  │ (index) │ Compiled │ Minified │ Compression │
1797
1804
  ├──────────────────────┼────────────┼────────────┼─────────────┤
1798
- │ typebox/compiler │ '119.2 kb' │ ' 52.3 kb' │ '2.28 x' │
1799
- │ typebox/errors │ ' 55.0 kb' │ ' 25.2 kb' │ '2.19 x' │
1805
+ │ typebox/compiler │ '120.6 kb' │ ' 52.9 kb' │ '2.28 x' │
1806
+ │ typebox/errors │ ' 55.7 kb' │ ' 25.5 kb' │ '2.19 x' │
1800
1807
  │ typebox/system │ ' 4.7 kb' │ ' 2.0 kb' │ '2.33 x' │
1801
- │ typebox/value │ '146.1 kb' │ ' 61.8 kb' │ '2.37 x' │
1802
- │ typebox │ ' 90.1 kb' │ ' 37.3 kb' │ '2.41 x' │
1808
+ │ typebox/value │ '146.2 kb' │ ' 62.0 kb' │ '2.36 x' │
1809
+ │ typebox │ ' 91.4 kb' │ ' 37.8 kb' │ '2.42 x' │
1803
1810
  └──────────────────────┴────────────┴────────────┴─────────────┘
1804
1811
  ```
1805
1812