@sinclair/typebox 0.32.14 → 0.32.16

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 (58) hide show
  1. package/build/import/compiler/index.d.mts +1 -1
  2. package/build/import/compiler/index.mjs +1 -1
  3. package/build/import/errors/index.d.mts +2 -2
  4. package/build/import/errors/index.mjs +2 -2
  5. package/build/import/system/index.d.mts +2 -2
  6. package/build/import/system/index.mjs +2 -2
  7. package/build/import/system/system.d.mts +1 -1
  8. package/build/import/type/indexed/indexed.d.mts +1 -1
  9. package/build/import/type/indexed/indexed.mjs +3 -1
  10. package/build/import/type/template-literal/parse.mjs +24 -5
  11. package/build/import/type/template-literal/syntax.d.mts +1 -1
  12. package/build/import/value/cast/cast.mjs +2 -2
  13. package/build/import/value/clone/clone.mjs +2 -2
  14. package/build/import/value/convert/convert.mjs +2 -15
  15. package/build/import/value/delta/delta.d.mts +22 -22
  16. package/build/import/value/delta/delta.mjs +3 -3
  17. package/build/import/value/equal/equal.mjs +3 -3
  18. package/build/import/value/guard/guard.d.mts +34 -6
  19. package/build/import/value/guard/guard.mjs +71 -12
  20. package/build/import/value/hash/hash.mjs +2 -2
  21. package/build/import/value/index.d.mts +14 -14
  22. package/build/import/value/index.mjs +18 -18
  23. package/build/import/value/mutate/mutate.mjs +5 -5
  24. package/build/import/value/transform/decode.d.mts +3 -1
  25. package/build/import/value/transform/decode.mjs +62 -56
  26. package/build/import/value/transform/encode.d.mts +3 -1
  27. package/build/import/value/transform/encode.mjs +60 -54
  28. package/build/import/value/value/value.mjs +1 -1
  29. package/build/require/compiler/index.d.ts +1 -1
  30. package/build/require/compiler/index.js +16 -6
  31. package/build/require/errors/index.d.ts +2 -2
  32. package/build/require/errors/index.js +16 -10
  33. package/build/require/system/index.d.ts +2 -2
  34. package/build/require/system/index.js +16 -7
  35. package/build/require/system/system.d.ts +1 -1
  36. package/build/require/type/indexed/indexed.d.ts +1 -1
  37. package/build/require/type/indexed/indexed.js +3 -1
  38. package/build/require/type/template-literal/parse.js +24 -5
  39. package/build/require/type/template-literal/syntax.d.ts +1 -1
  40. package/build/require/value/cast/cast.js +1 -1
  41. package/build/require/value/clone/clone.js +1 -1
  42. package/build/require/value/convert/convert.js +33 -46
  43. package/build/require/value/delta/delta.d.ts +22 -22
  44. package/build/require/value/delta/delta.js +2 -2
  45. package/build/require/value/equal/equal.js +2 -2
  46. package/build/require/value/guard/guard.d.ts +34 -6
  47. package/build/require/value/guard/guard.js +89 -16
  48. package/build/require/value/hash/hash.js +1 -1
  49. package/build/require/value/index.d.ts +14 -14
  50. package/build/require/value/index.js +35 -71
  51. package/build/require/value/mutate/mutate.js +4 -4
  52. package/build/require/value/transform/decode.d.ts +3 -1
  53. package/build/require/value/transform/decode.js +59 -55
  54. package/build/require/value/transform/encode.d.ts +3 -1
  55. package/build/require/value/transform/encode.js +57 -53
  56. package/build/require/value/value/value.js +1 -1
  57. package/package.json +1 -1
  58. package/readme.md +1 -0
@@ -7,7 +7,7 @@ import { Check } from '../check/index.mjs';
7
7
  // ------------------------------------------------------------------
8
8
  // ValueGuard
9
9
  // ------------------------------------------------------------------
10
- import { IsPlainObject, IsArray, IsValueType } from '../guard/index.mjs';
10
+ import { IsStandardObject, IsArray, IsValueType } from '../guard/index.mjs';
11
11
  // ------------------------------------------------------------------
12
12
  // TypeGuard
13
13
  // ------------------------------------------------------------------
@@ -16,168 +16,174 @@ import { IsTransform, IsSchema } from '../../type/guard/type.mjs';
16
16
  // Errors
17
17
  // ------------------------------------------------------------------
18
18
  // thrown externally
19
+ // prettier-ignore
19
20
  export class TransformDecodeCheckError extends TypeBoxError {
20
21
  schema;
21
22
  value;
22
23
  error;
23
24
  constructor(schema, value, error) {
24
- super(`Unable to decode due to invalid value`);
25
+ super(`Unable to decode value as it does not match the expected schema`);
25
26
  this.schema = schema;
26
27
  this.value = value;
27
28
  this.error = error;
28
29
  }
29
30
  }
31
+ // prettier-ignore
30
32
  export class TransformDecodeError extends TypeBoxError {
31
33
  schema;
34
+ path;
32
35
  value;
33
- constructor(schema, value, error) {
34
- super(`${error instanceof Error ? error.message : 'Unknown error'}`);
36
+ error;
37
+ constructor(schema, path, value, error) {
38
+ super(error instanceof Error ? error.message : 'Unknown error');
35
39
  this.schema = schema;
40
+ this.path = path;
36
41
  this.value = value;
42
+ this.error = error;
37
43
  }
38
44
  }
39
45
  // ------------------------------------------------------------------
40
46
  // Decode
41
47
  // ------------------------------------------------------------------
42
48
  // prettier-ignore
43
- function Default(schema, value) {
49
+ function Default(schema, path, value) {
44
50
  try {
45
51
  return IsTransform(schema) ? schema[TransformKind].Decode(value) : value;
46
52
  }
47
53
  catch (error) {
48
- throw new TransformDecodeError(schema, value, error);
54
+ throw new TransformDecodeError(schema, path, value, error);
49
55
  }
50
56
  }
51
57
  // prettier-ignore
52
- function FromArray(schema, references, value) {
58
+ function FromArray(schema, references, path, value) {
53
59
  return (IsArray(value))
54
- ? Default(schema, value.map((value) => Visit(schema.items, references, value)))
55
- : Default(schema, value);
60
+ ? Default(schema, path, value.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value)))
61
+ : Default(schema, path, value);
56
62
  }
57
63
  // prettier-ignore
58
- function FromIntersect(schema, references, value) {
59
- if (!IsPlainObject(value) || IsValueType(value))
60
- return Default(schema, value);
64
+ function FromIntersect(schema, references, path, value) {
65
+ if (!IsStandardObject(value) || IsValueType(value))
66
+ return Default(schema, path, value);
61
67
  const knownKeys = KeyOfPropertyKeys(schema);
62
68
  const knownProperties = knownKeys.reduce((value, key) => {
63
69
  return (key in value)
64
- ? { ...value, [key]: Visit(Index(schema, [key]), references, value[key]) }
70
+ ? { ...value, [key]: Visit(Index(schema, [key]), references, `${path}/${key}`, value[key]) }
65
71
  : value;
66
72
  }, value);
67
73
  if (!IsTransform(schema.unevaluatedProperties)) {
68
- return Default(schema, knownProperties);
74
+ return Default(schema, path, knownProperties);
69
75
  }
70
76
  const unknownKeys = Object.getOwnPropertyNames(knownProperties);
71
77
  const unevaluatedProperties = schema.unevaluatedProperties;
72
78
  const unknownProperties = unknownKeys.reduce((value, key) => {
73
79
  return !knownKeys.includes(key)
74
- ? { ...value, [key]: Default(unevaluatedProperties, value[key]) }
80
+ ? { ...value, [key]: Default(unevaluatedProperties, `${path}/${key}`, value[key]) }
75
81
  : value;
76
82
  }, knownProperties);
77
- return Default(schema, unknownProperties);
83
+ return Default(schema, path, unknownProperties);
78
84
  }
79
- function FromNot(schema, references, value) {
80
- return Default(schema, Visit(schema.not, references, value));
85
+ function FromNot(schema, references, path, value) {
86
+ return Default(schema, path, Visit(schema.not, references, path, value));
81
87
  }
82
88
  // prettier-ignore
83
- function FromObject(schema, references, value) {
84
- if (!IsPlainObject(value))
85
- return Default(schema, value);
89
+ function FromObject(schema, references, path, value) {
90
+ if (!IsStandardObject(value))
91
+ return Default(schema, path, value);
86
92
  const knownKeys = KeyOfPropertyKeys(schema);
87
93
  const knownProperties = knownKeys.reduce((value, key) => {
88
94
  return (key in value)
89
- ? { ...value, [key]: Visit(schema.properties[key], references, value[key]) }
95
+ ? { ...value, [key]: Visit(schema.properties[key], references, `${path}/${key}`, value[key]) }
90
96
  : value;
91
97
  }, value);
92
98
  if (!IsSchema(schema.additionalProperties)) {
93
- return Default(schema, knownProperties);
99
+ return Default(schema, path, knownProperties);
94
100
  }
95
101
  const unknownKeys = Object.getOwnPropertyNames(knownProperties);
96
102
  const additionalProperties = schema.additionalProperties;
97
103
  const unknownProperties = unknownKeys.reduce((value, key) => {
98
104
  return !knownKeys.includes(key)
99
- ? { ...value, [key]: Default(additionalProperties, value[key]) }
105
+ ? { ...value, [key]: Default(additionalProperties, `${path}/${key}`, value[key]) }
100
106
  : value;
101
107
  }, knownProperties);
102
- return Default(schema, unknownProperties);
108
+ return Default(schema, path, unknownProperties);
103
109
  }
104
110
  // prettier-ignore
105
- function FromRecord(schema, references, value) {
106
- if (!IsPlainObject(value))
107
- return Default(schema, value);
111
+ function FromRecord(schema, references, path, value) {
112
+ if (!IsStandardObject(value))
113
+ return Default(schema, path, value);
108
114
  const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];
109
115
  const knownKeys = new RegExp(pattern);
110
116
  const knownProperties = Object.getOwnPropertyNames(value).reduce((value, key) => {
111
117
  return knownKeys.test(key)
112
- ? { ...value, [key]: Visit(schema.patternProperties[pattern], references, value[key]) }
118
+ ? { ...value, [key]: Visit(schema.patternProperties[pattern], references, `${path}/${key}`, value[key]) }
113
119
  : value;
114
120
  }, value);
115
121
  if (!IsSchema(schema.additionalProperties)) {
116
- return Default(schema, knownProperties);
122
+ return Default(schema, path, knownProperties);
117
123
  }
118
124
  const unknownKeys = Object.getOwnPropertyNames(knownProperties);
119
125
  const additionalProperties = schema.additionalProperties;
120
126
  const unknownProperties = unknownKeys.reduce((value, key) => {
121
127
  return !knownKeys.test(key)
122
- ? { ...value, [key]: Default(additionalProperties, value[key]) }
128
+ ? { ...value, [key]: Default(additionalProperties, `${path}/${key}`, value[key]) }
123
129
  : value;
124
130
  }, knownProperties);
125
- return Default(schema, unknownProperties);
131
+ return Default(schema, path, unknownProperties);
126
132
  }
127
133
  // prettier-ignore
128
- function FromRef(schema, references, value) {
134
+ function FromRef(schema, references, path, value) {
129
135
  const target = Deref(schema, references);
130
- return Default(schema, Visit(target, references, value));
136
+ return Default(schema, path, Visit(target, references, path, value));
131
137
  }
132
138
  // prettier-ignore
133
- function FromThis(schema, references, value) {
139
+ function FromThis(schema, references, path, value) {
134
140
  const target = Deref(schema, references);
135
- return Default(schema, Visit(target, references, value));
141
+ return Default(schema, path, Visit(target, references, path, value));
136
142
  }
137
143
  // prettier-ignore
138
- function FromTuple(schema, references, value) {
144
+ function FromTuple(schema, references, path, value) {
139
145
  return (IsArray(value) && IsArray(schema.items))
140
- ? Default(schema, schema.items.map((schema, index) => Visit(schema, references, value[index])))
141
- : Default(schema, value);
146
+ ? Default(schema, path, schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value[index])))
147
+ : Default(schema, path, value);
142
148
  }
143
149
  // prettier-ignore
144
- function FromUnion(schema, references, value) {
150
+ function FromUnion(schema, references, path, value) {
145
151
  for (const subschema of schema.anyOf) {
146
152
  if (!Check(subschema, references, value))
147
153
  continue;
148
154
  // note: ensure interior is decoded first
149
- const decoded = Visit(subschema, references, value);
150
- return Default(schema, decoded);
155
+ const decoded = Visit(subschema, references, path, value);
156
+ return Default(schema, path, decoded);
151
157
  }
152
- return Default(schema, value);
158
+ return Default(schema, path, value);
153
159
  }
154
160
  // prettier-ignore
155
- function Visit(schema, references, value) {
161
+ function Visit(schema, references, path, value) {
156
162
  const references_ = typeof schema.$id === 'string' ? [...references, schema] : references;
157
163
  const schema_ = schema;
158
164
  switch (schema[Kind]) {
159
165
  case 'Array':
160
- return FromArray(schema_, references_, value);
166
+ return FromArray(schema_, references_, path, value);
161
167
  case 'Intersect':
162
- return FromIntersect(schema_, references_, value);
168
+ return FromIntersect(schema_, references_, path, value);
163
169
  case 'Not':
164
- return FromNot(schema_, references_, value);
170
+ return FromNot(schema_, references_, path, value);
165
171
  case 'Object':
166
- return FromObject(schema_, references_, value);
172
+ return FromObject(schema_, references_, path, value);
167
173
  case 'Record':
168
- return FromRecord(schema_, references_, value);
174
+ return FromRecord(schema_, references_, path, value);
169
175
  case 'Ref':
170
- return FromRef(schema_, references_, value);
176
+ return FromRef(schema_, references_, path, value);
171
177
  case 'Symbol':
172
- return Default(schema_, value);
178
+ return Default(schema_, path, value);
173
179
  case 'This':
174
- return FromThis(schema_, references_, value);
180
+ return FromThis(schema_, references_, path, value);
175
181
  case 'Tuple':
176
- return FromTuple(schema_, references_, value);
182
+ return FromTuple(schema_, references_, path, value);
177
183
  case 'Union':
178
- return FromUnion(schema_, references_, value);
184
+ return FromUnion(schema_, references_, path, value);
179
185
  default:
180
- return Default(schema_, value);
186
+ return Default(schema_, path, value);
181
187
  }
182
188
  }
183
189
  /**
@@ -186,5 +192,5 @@ function Visit(schema, references, value) {
186
192
  * undefined behavior. Refer to the `Value.Decode()` for implementation details.
187
193
  */
188
194
  export function TransformDecode(schema, references, value) {
189
- return Visit(schema, references, value);
195
+ return Visit(schema, references, '', value);
190
196
  }
@@ -9,8 +9,10 @@ export declare class TransformEncodeCheckError extends TypeBoxError {
9
9
  }
10
10
  export declare class TransformEncodeError extends TypeBoxError {
11
11
  readonly schema: TSchema;
12
+ readonly path: string;
12
13
  readonly value: unknown;
13
- constructor(schema: TSchema, value: unknown, error: any);
14
+ readonly error: Error;
15
+ constructor(schema: TSchema, path: string, value: unknown, error: Error);
14
16
  }
15
17
  /**
16
18
  * `[Internal]` Encodes the value and returns the result. This function expects the
@@ -7,7 +7,7 @@ import { Check } from '../check/index.mjs';
7
7
  // ------------------------------------------------------------------
8
8
  // ValueGuard
9
9
  // ------------------------------------------------------------------
10
- import { IsPlainObject, IsArray, IsValueType } from '../guard/index.mjs';
10
+ import { IsStandardObject, IsArray, IsValueType } from '../guard/index.mjs';
11
11
  // ------------------------------------------------------------------
12
12
  // TypeGuard
13
13
  // ------------------------------------------------------------------
@@ -15,80 +15,86 @@ import { IsTransform, IsSchema } from '../../type/guard/type.mjs';
15
15
  // ------------------------------------------------------------------
16
16
  // Errors
17
17
  // ------------------------------------------------------------------
18
+ // prettier-ignore
18
19
  export class TransformEncodeCheckError extends TypeBoxError {
19
20
  schema;
20
21
  value;
21
22
  error;
22
23
  constructor(schema, value, error) {
23
- super(`Unable to encode due to invalid value`);
24
+ super(`The encoded value does not match the expected schema`);
24
25
  this.schema = schema;
25
26
  this.value = value;
26
27
  this.error = error;
27
28
  }
28
29
  }
30
+ // prettier-ignore
29
31
  export class TransformEncodeError extends TypeBoxError {
30
32
  schema;
33
+ path;
31
34
  value;
32
- constructor(schema, value, error) {
35
+ error;
36
+ constructor(schema, path, value, error) {
33
37
  super(`${error instanceof Error ? error.message : 'Unknown error'}`);
34
38
  this.schema = schema;
39
+ this.path = path;
35
40
  this.value = value;
41
+ this.error = error;
36
42
  }
37
43
  }
38
44
  // ------------------------------------------------------------------
39
45
  // Encode
40
46
  // ------------------------------------------------------------------
41
47
  // prettier-ignore
42
- function Default(schema, value) {
48
+ function Default(schema, path, value) {
43
49
  try {
44
50
  return IsTransform(schema) ? schema[TransformKind].Encode(value) : value;
45
51
  }
46
52
  catch (error) {
47
- throw new TransformEncodeError(schema, value, error);
53
+ throw new TransformEncodeError(schema, path, value, error);
48
54
  }
49
55
  }
50
56
  // prettier-ignore
51
- function FromArray(schema, references, value) {
52
- const defaulted = Default(schema, value);
57
+ function FromArray(schema, references, path, value) {
58
+ const defaulted = Default(schema, path, value);
53
59
  return IsArray(defaulted)
54
- ? defaulted.map((value) => Visit(schema.items, references, value))
60
+ ? defaulted.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value))
55
61
  : defaulted;
56
62
  }
57
63
  // prettier-ignore
58
- function FromIntersect(schema, references, value) {
59
- const defaulted = Default(schema, value);
60
- if (!IsPlainObject(value) || IsValueType(value))
64
+ function FromIntersect(schema, references, path, value) {
65
+ const defaulted = Default(schema, path, value);
66
+ if (!IsStandardObject(value) || IsValueType(value))
61
67
  return defaulted;
62
68
  const knownKeys = KeyOfPropertyKeys(schema);
63
69
  const knownProperties = knownKeys.reduce((value, key) => {
64
70
  return key in defaulted
65
- ? { ...value, [key]: Visit(Index(schema, [key]), references, value[key]) }
71
+ ? { ...value, [key]: Visit(Index(schema, [key]), references, `${path}/${key}`, value[key]) }
66
72
  : value;
67
73
  }, defaulted);
68
74
  if (!IsTransform(schema.unevaluatedProperties)) {
69
- return Default(schema, knownProperties);
75
+ return Default(schema, path, knownProperties);
70
76
  }
71
77
  const unknownKeys = Object.getOwnPropertyNames(knownProperties);
72
78
  const unevaluatedProperties = schema.unevaluatedProperties;
73
79
  return unknownKeys.reduce((value, key) => {
74
80
  return !knownKeys.includes(key)
75
- ? { ...value, [key]: Default(unevaluatedProperties, value[key]) }
81
+ ? { ...value, [key]: Default(unevaluatedProperties, `${path}/${key}`, value[key]) }
76
82
  : value;
77
83
  }, knownProperties);
78
84
  }
79
85
  // prettier-ignore
80
- function FromNot(schema, references, value) {
81
- return Default(schema.not, Default(schema, value));
86
+ function FromNot(schema, references, path, value) {
87
+ return Default(schema.not, path, Default(schema, path, value));
82
88
  }
83
89
  // prettier-ignore
84
- function FromObject(schema, references, value) {
85
- const defaulted = Default(schema, value);
86
- if (!IsPlainObject(value))
90
+ function FromObject(schema, references, path, value) {
91
+ const defaulted = Default(schema, path, value);
92
+ if (!IsStandardObject(value))
87
93
  return defaulted;
88
94
  const knownKeys = KeyOfPropertyKeys(schema);
89
95
  const knownProperties = knownKeys.reduce((value, key) => {
90
96
  return key in value
91
- ? { ...value, [key]: Visit(schema.properties[key], references, value[key]) }
97
+ ? { ...value, [key]: Visit(schema.properties[key], references, `${path}/${key}`, value[key]) }
92
98
  : value;
93
99
  }, defaulted);
94
100
  if (!IsSchema(schema.additionalProperties)) {
@@ -98,93 +104,93 @@ function FromObject(schema, references, value) {
98
104
  const additionalProperties = schema.additionalProperties;
99
105
  return unknownKeys.reduce((value, key) => {
100
106
  return !knownKeys.includes(key)
101
- ? { ...value, [key]: Default(additionalProperties, value[key]) }
107
+ ? { ...value, [key]: Default(additionalProperties, `${path}/${key}`, value[key]) }
102
108
  : value;
103
109
  }, knownProperties);
104
110
  }
105
111
  // prettier-ignore
106
- function FromRecord(schema, references, value) {
107
- const defaulted = Default(schema, value);
108
- if (!IsPlainObject(value))
112
+ function FromRecord(schema, references, path, value) {
113
+ const defaulted = Default(schema, path, value);
114
+ if (!IsStandardObject(value))
109
115
  return defaulted;
110
116
  const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];
111
117
  const knownKeys = new RegExp(pattern);
112
118
  const knownProperties = Object.getOwnPropertyNames(value).reduce((value, key) => {
113
119
  return knownKeys.test(key)
114
- ? { ...value, [key]: Visit(schema.patternProperties[pattern], references, value[key]) }
120
+ ? { ...value, [key]: Visit(schema.patternProperties[pattern], references, `${path}/${key}`, value[key]) }
115
121
  : value;
116
122
  }, defaulted);
117
123
  if (!IsSchema(schema.additionalProperties)) {
118
- return Default(schema, knownProperties);
124
+ return Default(schema, path, knownProperties);
119
125
  }
120
126
  const unknownKeys = Object.getOwnPropertyNames(knownProperties);
121
127
  const additionalProperties = schema.additionalProperties;
122
128
  return unknownKeys.reduce((value, key) => {
123
129
  return !knownKeys.test(key)
124
- ? { ...value, [key]: Default(additionalProperties, value[key]) }
130
+ ? { ...value, [key]: Default(additionalProperties, `${path}/${key}`, value[key]) }
125
131
  : value;
126
132
  }, knownProperties);
127
133
  }
128
134
  // prettier-ignore
129
- function FromRef(schema, references, value) {
135
+ function FromRef(schema, references, path, value) {
130
136
  const target = Deref(schema, references);
131
- const resolved = Visit(target, references, value);
132
- return Default(schema, resolved);
137
+ const resolved = Visit(target, references, path, value);
138
+ return Default(schema, path, resolved);
133
139
  }
134
140
  // prettier-ignore
135
- function FromThis(schema, references, value) {
141
+ function FromThis(schema, references, path, value) {
136
142
  const target = Deref(schema, references);
137
- const resolved = Visit(target, references, value);
138
- return Default(schema, resolved);
143
+ const resolved = Visit(target, references, path, value);
144
+ return Default(schema, path, resolved);
139
145
  }
140
146
  // prettier-ignore
141
- function FromTuple(schema, references, value) {
142
- const value1 = Default(schema, value);
143
- return IsArray(schema.items) ? schema.items.map((schema, index) => Visit(schema, references, value1[index])) : [];
147
+ function FromTuple(schema, references, path, value) {
148
+ const value1 = Default(schema, path, value);
149
+ return IsArray(schema.items) ? schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value1[index])) : [];
144
150
  }
145
151
  // prettier-ignore
146
- function FromUnion(schema, references, value) {
152
+ function FromUnion(schema, references, path, value) {
147
153
  // test value against union variants
148
154
  for (const subschema of schema.anyOf) {
149
155
  if (!Check(subschema, references, value))
150
156
  continue;
151
- const value1 = Visit(subschema, references, value);
152
- return Default(schema, value1);
157
+ const value1 = Visit(subschema, references, path, value);
158
+ return Default(schema, path, value1);
153
159
  }
154
160
  // test transformed value against union variants
155
161
  for (const subschema of schema.anyOf) {
156
- const value1 = Visit(subschema, references, value);
162
+ const value1 = Visit(subschema, references, path, value);
157
163
  if (!Check(schema, references, value1))
158
164
  continue;
159
- return Default(schema, value1);
165
+ return Default(schema, path, value1);
160
166
  }
161
- return Default(schema, value);
167
+ return Default(schema, path, value);
162
168
  }
163
169
  // prettier-ignore
164
- function Visit(schema, references, value) {
170
+ function Visit(schema, references, path, value) {
165
171
  const references_ = typeof schema.$id === 'string' ? [...references, schema] : references;
166
172
  const schema_ = schema;
167
173
  switch (schema[Kind]) {
168
174
  case 'Array':
169
- return FromArray(schema_, references_, value);
175
+ return FromArray(schema_, references_, path, value);
170
176
  case 'Intersect':
171
- return FromIntersect(schema_, references_, value);
177
+ return FromIntersect(schema_, references_, path, value);
172
178
  case 'Not':
173
- return FromNot(schema_, references_, value);
179
+ return FromNot(schema_, references_, path, value);
174
180
  case 'Object':
175
- return FromObject(schema_, references_, value);
181
+ return FromObject(schema_, references_, path, value);
176
182
  case 'Record':
177
- return FromRecord(schema_, references_, value);
183
+ return FromRecord(schema_, references_, path, value);
178
184
  case 'Ref':
179
- return FromRef(schema_, references_, value);
185
+ return FromRef(schema_, references_, path, value);
180
186
  case 'This':
181
- return FromThis(schema_, references_, value);
187
+ return FromThis(schema_, references_, path, value);
182
188
  case 'Tuple':
183
- return FromTuple(schema_, references_, value);
189
+ return FromTuple(schema_, references_, path, value);
184
190
  case 'Union':
185
- return FromUnion(schema_, references_, value);
191
+ return FromUnion(schema_, references_, path, value);
186
192
  default:
187
- return Default(schema_, value);
193
+ return Default(schema_, path, value);
188
194
  }
189
195
  }
190
196
  /**
@@ -194,5 +200,5 @@ function Visit(schema, references, value) {
194
200
  * `Value.Encode()` function for implementation details.
195
201
  */
196
202
  export function TransformEncode(schema, references, value) {
197
- return Visit(schema, references, value);
203
+ return Visit(schema, references, '', value);
198
204
  }
@@ -51,7 +51,7 @@ export function Encode(...args) {
51
51
  const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];
52
52
  const encoded = TransformEncode(schema, references, value);
53
53
  if (!Check(schema, references, encoded))
54
- throw new TransformEncodeCheckError(schema, value, Errors(schema, references, value).First());
54
+ throw new TransformEncodeCheckError(schema, encoded, Errors(schema, references, encoded).First());
55
55
  return encoded;
56
56
  }
57
57
  /** Returns an iterator for each error in this value. */
@@ -1,2 +1,2 @@
1
1
  export { ValueError, ValueErrorType, ValueErrorIterator } from '../errors/index';
2
- export { TypeCompiler, TypeCheck, type TypeCompilerCodegenOptions, type TypeCompilerLanguageOption, TypeCompilerTypeGuardError, TypeCompilerUnknownTypeError } from './compiler';
2
+ export * from './compiler';
@@ -1,12 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
+ };
3
17
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.TypeCompilerUnknownTypeError = exports.TypeCompilerTypeGuardError = exports.TypeCheck = exports.TypeCompiler = exports.ValueErrorIterator = exports.ValueErrorType = void 0;
18
+ exports.ValueErrorIterator = exports.ValueErrorType = void 0;
5
19
  var index_1 = require("../errors/index");
6
20
  Object.defineProperty(exports, "ValueErrorType", { enumerable: true, get: function () { return index_1.ValueErrorType; } });
7
21
  Object.defineProperty(exports, "ValueErrorIterator", { enumerable: true, get: function () { return index_1.ValueErrorIterator; } });
8
- var compiler_1 = require("./compiler");
9
- Object.defineProperty(exports, "TypeCompiler", { enumerable: true, get: function () { return compiler_1.TypeCompiler; } });
10
- Object.defineProperty(exports, "TypeCheck", { enumerable: true, get: function () { return compiler_1.TypeCheck; } });
11
- Object.defineProperty(exports, "TypeCompilerTypeGuardError", { enumerable: true, get: function () { return compiler_1.TypeCompilerTypeGuardError; } });
12
- Object.defineProperty(exports, "TypeCompilerUnknownTypeError", { enumerable: true, get: function () { return compiler_1.TypeCompilerUnknownTypeError; } });
22
+ __exportStar(require("./compiler"), exports);
@@ -1,2 +1,2 @@
1
- export { Errors, ValueError, ValueErrorIterator, ValueErrorType, ValueErrorsUnknownTypeError } from './errors';
2
- export { DefaultErrorFunction, GetErrorFunction, SetErrorFunction, type ErrorFunction, type ErrorFunctionParameter } from './function';
1
+ export * from './errors';
2
+ export * from './function';
@@ -1,13 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
+ };
3
17
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.SetErrorFunction = exports.GetErrorFunction = exports.DefaultErrorFunction = exports.ValueErrorsUnknownTypeError = exports.ValueErrorType = exports.ValueErrorIterator = exports.Errors = void 0;
5
- var errors_1 = require("./errors");
6
- Object.defineProperty(exports, "Errors", { enumerable: true, get: function () { return errors_1.Errors; } });
7
- Object.defineProperty(exports, "ValueErrorIterator", { enumerable: true, get: function () { return errors_1.ValueErrorIterator; } });
8
- Object.defineProperty(exports, "ValueErrorType", { enumerable: true, get: function () { return errors_1.ValueErrorType; } });
9
- Object.defineProperty(exports, "ValueErrorsUnknownTypeError", { enumerable: true, get: function () { return errors_1.ValueErrorsUnknownTypeError; } });
10
- var function_1 = require("./function");
11
- Object.defineProperty(exports, "DefaultErrorFunction", { enumerable: true, get: function () { return function_1.DefaultErrorFunction; } });
12
- Object.defineProperty(exports, "GetErrorFunction", { enumerable: true, get: function () { return function_1.GetErrorFunction; } });
13
- Object.defineProperty(exports, "SetErrorFunction", { enumerable: true, get: function () { return function_1.SetErrorFunction; } });
18
+ __exportStar(require("./errors"), exports);
19
+ __exportStar(require("./function"), exports);
@@ -1,2 +1,2 @@
1
- export { TypeSystemPolicy } from './policy';
2
- export { TypeSystem, TypeSystemDuplicateFormat, TypeSystemDuplicateTypeKind } from './system';
1
+ export * from './policy';
2
+ export * from './system';
@@ -1,10 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
+ };
3
17
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.TypeSystemDuplicateTypeKind = exports.TypeSystemDuplicateFormat = exports.TypeSystem = exports.TypeSystemPolicy = void 0;
5
- var policy_1 = require("./policy");
6
- Object.defineProperty(exports, "TypeSystemPolicy", { enumerable: true, get: function () { return policy_1.TypeSystemPolicy; } });
7
- var system_1 = require("./system");
8
- Object.defineProperty(exports, "TypeSystem", { enumerable: true, get: function () { return system_1.TypeSystem; } });
9
- Object.defineProperty(exports, "TypeSystemDuplicateFormat", { enumerable: true, get: function () { return system_1.TypeSystemDuplicateFormat; } });
10
- Object.defineProperty(exports, "TypeSystemDuplicateTypeKind", { enumerable: true, get: function () { return system_1.TypeSystemDuplicateTypeKind; } });
18
+ __exportStar(require("./policy"), exports);
19
+ __exportStar(require("./system"), exports);
@@ -8,7 +8,7 @@ export declare class TypeSystemDuplicateFormat extends TypeBoxError {
8
8
  /** Creates user defined types and formats and provides overrides for value checking behaviours */
9
9
  export declare namespace TypeSystem {
10
10
  /** Creates a new type */
11
- function Type<Type, Options = Record<PropertyKey, unknown>>(kind: string, check: (options: Options, value: unknown) => boolean): (options?: Partial<Options>) => import("../type/unsafe/unsafe").TUnsafe<Type>;
11
+ function Type<Type, Options = Record<PropertyKey, unknown>>(kind: string, check: (options: Options, value: unknown) => boolean): (options?: Partial<Options>) => import("src/type/unsafe/unsafe").TUnsafe<Type>;
12
12
  /** Creates a new string format */
13
13
  function Format<F extends string>(format: F, check: (value: string) => boolean): F;
14
14
  }
@@ -16,7 +16,7 @@ import { type TIndexFromMappedResult } from './indexed-from-mapped-result';
16
16
  type TFromRest<T extends TSchema[], K extends PropertyKey, Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest<R, K, [...Acc, Assert<TIndexFromPropertyKey<L, K>, TSchema>]> : Acc);
17
17
  type TFromIntersectRest<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? L extends TNever ? TFromIntersectRest<R, [...Acc]> : TFromIntersectRest<R, [...Acc, L]> : Acc);
18
18
  type TFromIntersect<T extends TSchema[], K extends PropertyKey> = (TIntersectEvaluated<TFromIntersectRest<TFromRest<T, K>>>);
19
- type TFromUnionRest<T extends TSchema[]> = T;
19
+ type TFromUnionRest<T extends TSchema[], Acc extends TSchema[] = []> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? L extends TNever ? [] : TFromUnionRest<R, [L, ...Acc]> : Acc;
20
20
  type TFromUnion<T extends TSchema[], K extends PropertyKey> = (TUnionEvaluated<TFromUnionRest<TFromRest<T, K>>>);
21
21
  type TFromTuple<T extends TSchema[], K extends PropertyKey> = (K extends keyof T ? T[K] : K extends '[number]' ? TUnionEvaluated<T> : TNever);
22
22
  type TFromArray<T extends TSchema, K extends PropertyKey> = (K extends '[number]' ? T : TNever);