@sinclair/typebox 0.24.6 → 0.24.9

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.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /*--------------------------------------------------------------------------
3
3
 
4
- @sinclair/typebox/compiler
4
+ @sinclair/typebox/value
5
5
 
6
6
  The MIT License (MIT)
7
7
 
@@ -27,33 +27,33 @@ THE SOFTWARE.
27
27
 
28
28
  ---------------------------------------------------------------------------*/
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.TypeErrors = void 0;
30
+ exports.ValueErrors = void 0;
31
31
  const Types = require("../typebox");
32
- var TypeErrors;
33
- (function (TypeErrors) {
34
- function* Any(schema, path, value) { }
35
- function* Array(schema, path, value) {
32
+ var ValueErrors;
33
+ (function (ValueErrors) {
34
+ function* Any(schema, references, path, value) { }
35
+ function* Array(schema, references, path, value) {
36
36
  if (!globalThis.Array.isArray(value)) {
37
37
  return yield { schema, path, value, message: `Expected array` };
38
38
  }
39
39
  for (let i = 0; i < value.length; i++) {
40
- yield* Visit(schema.items, `${path}/${i}`, value[i]);
40
+ yield* Visit(schema.items, references, `${path}/${i}`, value[i]);
41
41
  }
42
42
  }
43
- function* Boolean(schema, path, value) {
43
+ function* Boolean(schema, references, path, value) {
44
44
  if (!(typeof value === 'boolean')) {
45
45
  return yield { schema, path, value, message: `Expected boolean` };
46
46
  }
47
47
  }
48
- function* Constructor(schema, path, value) {
49
- yield* Visit(schema.yields, path, value);
48
+ function* Constructor(schema, references, path, value) {
49
+ yield* Visit(schema.returns, references, path, value);
50
50
  }
51
- function* Function(schema, path, value) {
51
+ function* Function(schema, references, path, value) {
52
52
  if (!(typeof value === 'function')) {
53
53
  return yield { schema, path, value, message: `Expected function` };
54
54
  }
55
55
  }
56
- function* Integer(schema, path, value) {
56
+ function* Integer(schema, references, path, value) {
57
57
  if (!(typeof value === 'number')) {
58
58
  return yield { schema, path, value, message: `Expected number` };
59
59
  }
@@ -76,18 +76,18 @@ var TypeErrors;
76
76
  yield { schema, path, value, message: `Expected number to be less or equal to ${schema.maximum}` };
77
77
  }
78
78
  }
79
- function* Literal(schema, path, value) {
79
+ function* Literal(schema, references, path, value) {
80
80
  if (!(value === schema.const)) {
81
81
  const error = typeof schema.const === 'string' ? `'${schema.const}'` : schema.const;
82
82
  return yield { schema, path, value, message: `Expected ${error}` };
83
83
  }
84
84
  }
85
- function* Null(schema, path, value) {
85
+ function* Null(schema, references, path, value) {
86
86
  if (!(value === null)) {
87
87
  return yield { schema, path, value, message: `Expected null` };
88
88
  }
89
89
  }
90
- function* Number(schema, path, value) {
90
+ function* Number(schema, references, path, value) {
91
91
  if (!(typeof value === 'number')) {
92
92
  return yield { schema, path, value, message: `Expected number` };
93
93
  }
@@ -107,7 +107,7 @@ var TypeErrors;
107
107
  yield { schema, path, value, message: `Expected number to be less or equal to ${schema.maximum}` };
108
108
  }
109
109
  }
110
- function* Object(schema, path, value) {
110
+ function* Object(schema, references, path, value) {
111
111
  if (!(typeof value === 'object' && value !== null && !globalThis.Array.isArray(value))) {
112
112
  return yield { schema, path, value, message: `Expected object` };
113
113
  }
@@ -119,37 +119,30 @@ var TypeErrors;
119
119
  }
120
120
  const propertyKeys = globalThis.Object.keys(schema.properties);
121
121
  if (schema.additionalProperties === false) {
122
- // optimization: If the property key length matches the required keys length
123
- // then we only need check that the values property key length matches that
124
- // of the property key length. This is because exhaustive testing for values
125
- // will occur in subsequent property tests.
126
- if (schema.required && schema.required.length === propertyKeys.length && !(globalThis.Object.keys(value).length === propertyKeys.length)) {
127
- yield { schema, path, value, message: 'Expected object must not have additional properties' };
128
- }
129
- else {
130
- if (!globalThis.Object.keys(value).every((key) => propertyKeys.includes(key))) {
131
- yield { schema, path, value, message: 'Expected object must not have additional properties' };
122
+ for (const propKey of globalThis.Object.keys(value)) {
123
+ if (!propertyKeys.includes(propKey)) {
124
+ yield { schema, path: `${path}/${propKey}`, value: value[propKey], message: 'Unexpected property' };
132
125
  }
133
126
  }
134
127
  }
135
128
  for (const propertyKey of propertyKeys) {
136
129
  const propertySchema = schema.properties[propertyKey];
137
130
  if (schema.required && schema.required.includes(propertyKey)) {
138
- yield* Visit(propertySchema, `${path}/${propertyKey}`, value[propertyKey]);
131
+ yield* Visit(propertySchema, references, `${path}/${propertyKey}`, value[propertyKey]);
139
132
  }
140
133
  else {
141
134
  if (value[propertyKey] !== undefined) {
142
- yield* Visit(propertySchema, `${path}/${propertyKey}`, value[propertyKey]);
135
+ yield* Visit(propertySchema, references, `${path}/${propertyKey}`, value[propertyKey]);
143
136
  }
144
137
  }
145
138
  }
146
139
  }
147
- function* Promise(schema, path, value) {
140
+ function* Promise(schema, references, path, value) {
148
141
  if (!(typeof value === 'object' && typeof value.then === 'function')) {
149
142
  yield { schema, path, value, message: `Expected Promise` };
150
143
  }
151
144
  }
152
- function* Record(schema, path, value) {
145
+ function* Record(schema, references, path, value) {
153
146
  if (!(typeof value === 'object' && value !== null && !globalThis.Array.isArray(value))) {
154
147
  return yield { schema, path, value, message: `Expected object` };
155
148
  }
@@ -160,24 +153,22 @@ var TypeErrors;
160
153
  return yield { schema, path, value, message };
161
154
  }
162
155
  for (const [propKey, propValue] of globalThis.Object.entries(value)) {
163
- yield* Visit(valueSchema, `${path}/${propKey}`, propValue);
156
+ yield* Visit(valueSchema, references, `${path}/${propKey}`, propValue);
164
157
  }
165
158
  }
166
- function* Ref(schema, path, value) {
167
- if (!referenceMap.has(schema.$ref)) {
168
- throw Error(`TypeErrors: Cannot locate referenced schema for $id '${schema.$id}'`);
169
- }
170
- const referencedSchema = referenceMap.get(schema.$ref);
171
- yield* Visit(referencedSchema, path, value);
159
+ function* Ref(schema, references, path, value) {
160
+ const reference = references.find((reference) => reference.$id === schema.$ref);
161
+ if (reference === undefined)
162
+ throw new Error(`ValueErrors.Ref: Cannot find schema with $id '${schema.$ref}'.`);
163
+ yield* Visit(reference, references, path, value);
172
164
  }
173
- function* Self(schema, path, value) {
174
- if (!referenceMap.has(schema.$ref)) {
175
- throw Error(`TypeErrors: Cannot locate referenced schema for $id '${schema.$id}'`);
176
- }
177
- const referencedSchema = referenceMap.get(schema.$ref);
178
- yield* Visit(referencedSchema, path, value);
165
+ function* Self(schema, references, path, value) {
166
+ const reference = references.find((reference) => reference.$id === schema.$ref);
167
+ if (reference === undefined)
168
+ throw new Error(`ValueErrors.Self: Cannot find schema with $id '${schema.$ref}'.`);
169
+ yield* Visit(reference, references, path, value);
179
170
  }
180
- function* String(schema, path, value) {
171
+ function* String(schema, references, path, value) {
181
172
  if (!(typeof value === 'string')) {
182
173
  return yield { schema, path, value, message: 'Expected string' };
183
174
  }
@@ -188,7 +179,7 @@ var TypeErrors;
188
179
  }
189
180
  }
190
181
  }
191
- function* Tuple(schema, path, value) {
182
+ function* Tuple(schema, references, path, value) {
192
183
  if (!global.Array.isArray(value)) {
193
184
  return yield { schema, path, value, message: 'Expected Array' };
194
185
  }
@@ -202,18 +193,18 @@ var TypeErrors;
202
193
  return;
203
194
  }
204
195
  for (let i = 0; i < schema.items.length; i++) {
205
- yield* Visit(schema.items[i], `${path}/${i}`, value[i]);
196
+ yield* Visit(schema.items[i], references, `${path}/${i}`, value[i]);
206
197
  }
207
198
  }
208
- function* Undefined(schema, path, value) {
199
+ function* Undefined(schema, references, path, value) {
209
200
  if (!(value === undefined)) {
210
201
  yield { schema, path, value, message: `Expected undefined` };
211
202
  }
212
203
  }
213
- function* Union(schema, path, value) {
204
+ function* Union(schema, references, path, value) {
214
205
  const errors = [];
215
206
  for (const inner of schema.anyOf) {
216
- const variantErrors = [...Visit(inner, path, value)];
207
+ const variantErrors = [...Visit(inner, references, path, value)];
217
208
  if (variantErrors.length === 0)
218
209
  return;
219
210
  errors.push(...variantErrors);
@@ -225,7 +216,7 @@ var TypeErrors;
225
216
  yield { schema, path, value, message: 'Expected value of union' };
226
217
  }
227
218
  }
228
- function* Uint8Array(schema, path, value) {
219
+ function* Uint8Array(schema, references, path, value) {
229
220
  if (!(value instanceof globalThis.Uint8Array)) {
230
221
  return yield { schema, path, value, message: `Expected Uint8Array` };
231
222
  }
@@ -236,76 +227,64 @@ var TypeErrors;
236
227
  yield { schema, path, value, message: `Expected Uint8Array to have a byte length greater or equal to ${schema.maxByteLength}` };
237
228
  }
238
229
  }
239
- function* Unknown(schema, path, value) { }
240
- function* Void(schema, path, value) {
230
+ function* Unknown(schema, references, path, value) { }
231
+ function* Void(schema, references, path, value) {
241
232
  if (!(value === null)) {
242
233
  return yield { schema, path, value, message: `Expected null` };
243
234
  }
244
235
  }
245
- function* Visit(schema, path, value) {
246
- if (schema.$id !== undefined) {
247
- referenceMap.set(schema.$id, schema);
248
- }
236
+ function* Visit(schema, references, path, value) {
237
+ const anyReferences = schema.$id === undefined ? references : [schema, ...references];
249
238
  const anySchema = schema;
250
239
  switch (anySchema[Types.Kind]) {
251
240
  case 'Any':
252
- return yield* Any(anySchema, path, value);
241
+ return yield* Any(anySchema, anyReferences, path, value);
253
242
  case 'Array':
254
- return yield* Array(anySchema, path, value);
243
+ return yield* Array(anySchema, anyReferences, path, value);
255
244
  case 'Boolean':
256
- return yield* Boolean(anySchema, path, value);
245
+ return yield* Boolean(anySchema, anyReferences, path, value);
257
246
  case 'Constructor':
258
- return yield* Constructor(anySchema, path, value);
247
+ return yield* Constructor(anySchema, anyReferences, path, value);
259
248
  case 'Function':
260
- return yield* Function(anySchema, path, value);
249
+ return yield* Function(anySchema, anyReferences, path, value);
261
250
  case 'Integer':
262
- return yield* Integer(anySchema, path, value);
251
+ return yield* Integer(anySchema, anyReferences, path, value);
263
252
  case 'Literal':
264
- return yield* Literal(anySchema, path, value);
253
+ return yield* Literal(anySchema, anyReferences, path, value);
265
254
  case 'Null':
266
- return yield* Null(anySchema, path, value);
255
+ return yield* Null(anySchema, anyReferences, path, value);
267
256
  case 'Number':
268
- return yield* Number(anySchema, path, value);
257
+ return yield* Number(anySchema, anyReferences, path, value);
269
258
  case 'Object':
270
- return yield* Object(anySchema, path, value);
259
+ return yield* Object(anySchema, anyReferences, path, value);
271
260
  case 'Promise':
272
- return yield* Promise(anySchema, path, value);
261
+ return yield* Promise(anySchema, anyReferences, path, value);
273
262
  case 'Record':
274
- return yield* Record(anySchema, path, value);
263
+ return yield* Record(anySchema, anyReferences, path, value);
275
264
  case 'Ref':
276
- return yield* Ref(anySchema, path, value);
265
+ return yield* Ref(anySchema, anyReferences, path, value);
277
266
  case 'Self':
278
- return yield* Self(anySchema, path, value);
267
+ return yield* Self(anySchema, anyReferences, path, value);
279
268
  case 'String':
280
- return yield* String(anySchema, path, value);
269
+ return yield* String(anySchema, anyReferences, path, value);
281
270
  case 'Tuple':
282
- return yield* Tuple(anySchema, path, value);
271
+ return yield* Tuple(anySchema, anyReferences, path, value);
283
272
  case 'Undefined':
284
- return yield* Undefined(anySchema, path, value);
273
+ return yield* Undefined(anySchema, anyReferences, path, value);
285
274
  case 'Union':
286
- return yield* Union(anySchema, path, value);
275
+ return yield* Union(anySchema, anyReferences, path, value);
287
276
  case 'Uint8Array':
288
- return yield* Uint8Array(anySchema, path, value);
277
+ return yield* Uint8Array(anySchema, anyReferences, path, value);
289
278
  case 'Unknown':
290
- return yield* Unknown(anySchema, path, value);
279
+ return yield* Unknown(anySchema, anyReferences, path, value);
291
280
  case 'Void':
292
- return yield* Void(anySchema, path, value);
281
+ return yield* Void(anySchema, anyReferences, path, value);
293
282
  default:
294
- throw Error(`Unknown schema kind '${schema[Types.Kind]}'`);
295
- }
296
- }
297
- const referenceMap = new Map();
298
- function SetAdditional(additional = []) {
299
- referenceMap.clear();
300
- for (const schema of additional) {
301
- if (!schema.$id)
302
- throw Error('TypeErrors: Referenced additional schemas must have an $id');
303
- referenceMap.set(schema.$id, schema);
283
+ throw new Error(`ValueErrors: Unknown schema kind '${schema[Types.Kind]}'`);
304
284
  }
305
285
  }
306
- function* Errors(schema, additional, value) {
307
- SetAdditional(additional);
308
- yield* Visit(schema, '', value);
286
+ function* Errors(schema, references, value) {
287
+ yield* Visit(schema, references, '', value);
309
288
  }
310
- TypeErrors.Errors = Errors;
311
- })(TypeErrors = exports.TypeErrors || (exports.TypeErrors = {}));
289
+ ValueErrors.Errors = Errors;
290
+ })(ValueErrors = exports.ValueErrors || (exports.ValueErrors = {}));
package/value/index.d.ts CHANGED
@@ -1 +1,2 @@
1
+ export type { ValueError } from './errors';
1
2
  export * from './value';
package/value/value.d.ts CHANGED
@@ -1,17 +1,21 @@
1
1
  import * as Types from '../typebox';
2
- import { Edit } from './delta';
3
- export { Edit, EditType } from './delta';
2
+ import { ValueError } from './errors';
3
+ /** Creates Values from TypeBox Types */
4
4
  export declare namespace Value {
5
- /** Returns true if the value conforms to the given schema */
6
- function Check<T extends Types.TSchema>(schema: T, value: any): value is Types.Static<T>;
7
- /** Returns a deep clone of the given value */
8
- function Clone<T>(value: T): T;
9
- /** Creates a value from the given schema type */
5
+ /** Creates a value from the given type */
6
+ function Create<T extends Types.TSchema, R extends Types.TSchema[]>(schema: T, references: [...R]): Types.Static<T>;
7
+ /** Creates a value from the given type */
10
8
  function Create<T extends Types.TSchema>(schema: T): Types.Static<T>;
11
- /** Diffs the value and produces edits to transform the value into the next value */
12
- function Diff(value: any, next: any): Edit[];
13
- /** Patches a value by applying a series of edits */
14
- function Patch(value: any, edits: Edit[]): any;
15
- /** Upcasts a value to match a schema while preserving as much information from the original value as possible. */
16
- function Upcast<T extends Types.TSchema>(schema: T, value: any): Types.Static<T>;
9
+ /** Checks a value matches the given type */
10
+ function Check<T extends Types.TSchema, R extends Types.TSchema[]>(schema: T, references: [...R], value: unknown): value is Types.Static<T>;
11
+ /** Checks a value matches the given type */
12
+ function Check<T extends Types.TSchema>(schema: T, value: unknown): value is Types.Static<T>;
13
+ /** Casts a value into a structure matching the given type. The result will be a new value that retains as much information of the original value as possible. */
14
+ function Cast<T extends Types.TSchema, R extends Types.TSchema[]>(schema: T, references: [...R], value: unknown): Types.Static<T>;
15
+ /** Casts a value into a structure matching the given type. The result will be a new value that retains as much information of the original value as possible. */
16
+ function Cast<T extends Types.TSchema>(schema: T, value: unknown): Types.Static<T>;
17
+ /** Returns an iterator for each error in this value. */
18
+ function Errors<T extends Types.TSchema, R extends Types.TSchema[]>(schema: T, references: [...R], value: unknown): IterableIterator<ValueError>;
19
+ /** Returns an iterator for each error in this value. */
20
+ function Errors<T extends Types.TSchema>(schema: T, value: unknown): IterableIterator<ValueError>;
17
21
  }
package/value/value.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /*--------------------------------------------------------------------------
3
3
 
4
- @sinclair/typebox
4
+ @sinclair/typebox/value
5
5
 
6
6
  The MIT License (MIT)
7
7
 
@@ -27,44 +27,32 @@ THE SOFTWARE.
27
27
 
28
28
  ---------------------------------------------------------------------------*/
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.Value = exports.EditType = void 0;
30
+ exports.Value = void 0;
31
+ const errors_1 = require("./errors");
32
+ const cast_1 = require("./cast");
31
33
  const create_1 = require("./create");
32
34
  const check_1 = require("./check");
33
- const clone_1 = require("./clone");
34
- const delta_1 = require("./delta");
35
- const upcast_1 = require("./upcast");
36
- var delta_2 = require("./delta");
37
- Object.defineProperty(exports, "EditType", { enumerable: true, get: function () { return delta_2.EditType; } });
35
+ /** Creates Values from TypeBox Types */
38
36
  var Value;
39
37
  (function (Value) {
40
- /** Returns true if the value conforms to the given schema */
41
- function Check(schema, value) {
42
- return check_1.CheckValue.Check(schema, value);
43
- }
44
- Value.Check = Check;
45
- /** Returns a deep clone of the given value */
46
- function Clone(value) {
47
- return clone_1.CloneValue.Create(value);
48
- }
49
- Value.Clone = Clone;
50
- /** Creates a value from the given schema type */
51
- function Create(schema) {
52
- return create_1.CreateValue.Create(schema);
38
+ function Create(...args) {
39
+ const [schema, references] = args.length === 2 ? [args[0], args[1]] : [args[0], []];
40
+ return create_1.ValueCreate.Create(schema, references);
53
41
  }
54
42
  Value.Create = Create;
55
- /** Diffs the value and produces edits to transform the value into the next value */
56
- function Diff(value, next) {
57
- return delta_1.DeltaValue.Diff(value, next);
43
+ function Check(...args) {
44
+ const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];
45
+ return check_1.ValueCheck.Check(schema, references, value);
58
46
  }
59
- Value.Diff = Diff;
60
- /** Patches a value by applying a series of edits */
61
- function Patch(value, edits) {
62
- return delta_1.DeltaValue.Edit(value, edits);
47
+ Value.Check = Check;
48
+ function Cast(...args) {
49
+ const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];
50
+ return cast_1.ValueCast.Cast(schema, references, value);
63
51
  }
64
- Value.Patch = Patch;
65
- /** Upcasts a value to match a schema while preserving as much information from the original value as possible. */
66
- function Upcast(schema, value) {
67
- return upcast_1.UpcastValue.Create(schema, value);
52
+ Value.Cast = Cast;
53
+ function* Errors(...args) {
54
+ const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];
55
+ yield* errors_1.ValueErrors.Errors(schema, references, value);
68
56
  }
69
- Value.Upcast = Upcast;
57
+ Value.Errors = Errors;
70
58
  })(Value = exports.Value || (exports.Value = {}));
@@ -1,10 +0,0 @@
1
- import * as Types from '../typebox';
2
- export interface TypeError {
3
- schema: Types.TSchema;
4
- path: string;
5
- value: unknown;
6
- message: string;
7
- }
8
- export declare namespace TypeErrors {
9
- function Errors<T extends Types.TSchema>(schema: T, additional: Types.TSchema[], value: any): Generator<TypeError>;
10
- }
package/value/clone.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export declare namespace CloneValue {
2
- function Create<T extends any>(value: T): T;
3
- }
package/value/clone.js DELETED
@@ -1,94 +0,0 @@
1
- "use strict";
2
- /*--------------------------------------------------------------------------
3
-
4
- @sinclair/typebox/value
5
-
6
- The MIT License (MIT)
7
-
8
- Copyright (c) 2022 Haydn Paterson (sinclair) <haydn.developer@gmail.com>
9
-
10
- Permission is hereby granted, free of charge, to any person obtaining a copy
11
- of this software and associated documentation files (the "Software"), to deal
12
- in the Software without restriction, including without limitation the rights
13
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
- copies of the Software, and to permit persons to whom the Software is
15
- furnished to do so, subject to the following conditions:
16
-
17
- The above copyright notice and this permission notice shall be included in
18
- all copies or substantial portions of the Software.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26
- THE SOFTWARE.
27
-
28
- ---------------------------------------------------------------------------*/
29
- Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.CloneValue = void 0;
31
- const reflect_1 = require("./reflect");
32
- var CloneValue;
33
- (function (CloneValue) {
34
- function Undefined(_value) {
35
- return undefined;
36
- }
37
- function Null(_value) {
38
- return null;
39
- }
40
- function Function(value) {
41
- return value;
42
- }
43
- function Object(value) {
44
- return globalThis.Object.entries(value).reduce((acc, [key, value]) => {
45
- return { ...acc, [key]: Create(value) };
46
- }, {});
47
- }
48
- function Array(value) {
49
- return value.map((element) => Create(element));
50
- }
51
- function BigInt(value) {
52
- return value;
53
- }
54
- function Symbol(value) {
55
- return value;
56
- }
57
- function String(value) {
58
- return value;
59
- }
60
- function Boolean(value) {
61
- return value;
62
- }
63
- function Number(value) {
64
- return value;
65
- }
66
- function Create(value) {
67
- const typeName = (0, reflect_1.Reflect)(value);
68
- switch (typeName) {
69
- case 'array':
70
- return Array(value);
71
- case 'bigint':
72
- return BigInt(value);
73
- case 'boolean':
74
- return Boolean(value);
75
- case 'function':
76
- return Function(value);
77
- case 'null':
78
- return Null(value);
79
- case 'number':
80
- return Number(value);
81
- case 'object':
82
- return Object(value);
83
- case 'string':
84
- return String(value);
85
- case 'symbol':
86
- return Symbol(value);
87
- case 'undefined':
88
- return Undefined(value);
89
- default:
90
- throw new Error(`Cannot clone from unknown typename ${typeName}`);
91
- }
92
- }
93
- CloneValue.Create = Create;
94
- })(CloneValue = exports.CloneValue || (exports.CloneValue = {}));
package/value/delta.d.ts DELETED
@@ -1,13 +0,0 @@
1
- export declare enum EditType {
2
- Delete = 0,
3
- Update = 1,
4
- Insert = 2
5
- }
6
- export declare type Edit = Insert | Update | Delete;
7
- export declare type Update = [EditType.Update, string, any];
8
- export declare type Insert = [EditType.Insert, string, any];
9
- export declare type Delete = [EditType.Delete, string];
10
- export declare namespace DeltaValue {
11
- function Diff(valueA: any, valueB: any): Edit[];
12
- function Edit(valueA: any, operations: Edit[]): any;
13
- }