@sinclair/typebox 0.29.6 → 0.30.0-dev-2

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.
package/value/clone.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- export declare namespace ValueClone {
2
- function Clone<T extends unknown>(value: T): T;
3
- }
1
+ /** Returns a clone of the given value */
2
+ export declare function Clone<T extends unknown>(value: T): T;
package/value/clone.js CHANGED
@@ -27,45 +27,65 @@ THE SOFTWARE.
27
27
 
28
28
  ---------------------------------------------------------------------------*/
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.ValueClone = void 0;
31
- const is_1 = require("./is");
32
- var ValueClone;
33
- (function (ValueClone) {
34
- function Array(value) {
35
- return value.map((element) => Clone(element));
36
- }
37
- function Date(value) {
38
- return new globalThis.Date(value.toISOString());
39
- }
40
- function Object(value) {
41
- const keys = [...globalThis.Object.keys(value), ...globalThis.Object.getOwnPropertySymbols(value)];
42
- return keys.reduce((acc, key) => ({ ...acc, [key]: Clone(value[key]) }), {});
43
- }
44
- function TypedArray(value) {
45
- return value.slice();
46
- }
47
- function Value(value) {
48
- return value;
49
- }
50
- function Clone(value) {
51
- if (is_1.Is.Date(value)) {
52
- return Date(value);
53
- }
54
- else if (is_1.Is.Object(value)) {
55
- return Object(value);
56
- }
57
- else if (is_1.Is.Array(value)) {
58
- return Array(value);
59
- }
60
- else if (is_1.Is.TypedArray(value)) {
61
- return TypedArray(value);
62
- }
63
- else if (is_1.Is.Value(value)) {
64
- return Value(value);
65
- }
66
- else {
67
- throw new Error('ValueClone: Unable to clone value');
68
- }
69
- }
70
- ValueClone.Clone = Clone;
71
- })(ValueClone || (exports.ValueClone = ValueClone = {}));
30
+ exports.Clone = void 0;
31
+ const ValueGuard = require("./guard");
32
+ // --------------------------------------------------------------------------
33
+ // Clonable
34
+ // --------------------------------------------------------------------------
35
+ function ObjectType(value) {
36
+ const keys = [...Object.getOwnPropertyNames(value), ...Object.getOwnPropertySymbols(value)];
37
+ return keys.reduce((acc, key) => ({ ...acc, [key]: Clone(value[key]) }), {});
38
+ }
39
+ function ArrayType(value) {
40
+ return value.map((element) => Clone(element));
41
+ }
42
+ function TypedArrayType(value) {
43
+ return value.slice();
44
+ }
45
+ function DateType(value) {
46
+ return new Date(value.toISOString());
47
+ }
48
+ function ValueType(value) {
49
+ return value;
50
+ }
51
+ // --------------------------------------------------------------------------
52
+ // Non-Clonable
53
+ // --------------------------------------------------------------------------
54
+ function AsyncIteratorType(value) {
55
+ return value;
56
+ }
57
+ function IteratorType(value) {
58
+ return value;
59
+ }
60
+ function FunctionType(value) {
61
+ return value;
62
+ }
63
+ function PromiseType(value) {
64
+ return value;
65
+ }
66
+ // --------------------------------------------------------------------------
67
+ // Clone
68
+ // --------------------------------------------------------------------------
69
+ /** Returns a clone of the given value */
70
+ function Clone(value) {
71
+ if (ValueGuard.IsArray(value))
72
+ return ArrayType(value);
73
+ if (ValueGuard.IsAsyncIterator(value))
74
+ return AsyncIteratorType(value);
75
+ if (ValueGuard.IsFunction(value))
76
+ return FunctionType(value);
77
+ if (ValueGuard.IsIterator(value))
78
+ return IteratorType(value);
79
+ if (ValueGuard.IsPromise(value))
80
+ return PromiseType(value);
81
+ if (ValueGuard.IsDate(value))
82
+ return DateType(value);
83
+ if (ValueGuard.IsPlainObject(value))
84
+ return ObjectType(value);
85
+ if (ValueGuard.IsTypedArray(value))
86
+ return TypedArrayType(value);
87
+ if (ValueGuard.IsValueType(value))
88
+ return ValueType(value);
89
+ throw new Error('ValueClone: Unable to clone value');
90
+ }
91
+ exports.Clone = Clone;
@@ -7,7 +7,7 @@ export declare class ValueConvertDereferenceError extends Error {
7
7
  readonly schema: Types.TRef | Types.TThis;
8
8
  constructor(schema: Types.TRef | Types.TThis);
9
9
  }
10
- export declare namespace ValueConvert {
11
- function Visit(schema: Types.TSchema, references: Types.TSchema[], value: any): unknown;
12
- function Convert<T extends Types.TSchema>(schema: T, references: Types.TSchema[], value: any): unknown;
13
- }
10
+ /** Converts any type mismatched values to their target type if a reasonable conversion is possible. */
11
+ export declare function Convert<T extends Types.TSchema>(schema: T, references: Types.TSchema[], value: unknown): unknown;
12
+ /** Converts any type mismatched values to their target type if a reasonable conversion is possible. */
13
+ export declare function Convert<T extends Types.TSchema>(schema: T, value: unknown): unknown;