json-as 1.1.20 → 1.1.21

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,614 +1,16 @@
1
- import { JSON } from "../assembly/index";
2
- import { bs } from "../lib/as-bs";
3
-
4
-
5
- @json
6
- class Vec3 {
7
- x: f32 = 0;
8
- y: f32 = 0;
9
- z: f32 = 0;
10
- __SERIALIZE(ptr: usize): void {
11
- bs.proposeSize(32);
12
- store<u64>(bs.offset, 9570664606466171, 0);
13
- store<u16>(bs.offset, 58, 8);
14
- bs.offset += 10;
15
- JSON.__serialize<f32>(load<f32>(ptr, offsetof<this>("x")));
16
- store<u64>(bs.offset, 9570668901433388, 0);
17
- store<u16>(bs.offset, 58, 8);
18
- bs.offset += 10;
19
- JSON.__serialize<f32>(load<f32>(ptr, offsetof<this>("y")));
20
- store<u64>(bs.offset, 9570673196400684, 0);
21
- store<u16>(bs.offset, 58, 8);
22
- bs.offset += 10;
23
- JSON.__serialize<f32>(load<f32>(ptr, offsetof<this>("z")));
24
- store<u16>(bs.offset, 125, 0);
25
- bs.offset += 2;
26
- }
27
-
28
-
29
- @inline
30
- __INITIALIZE(): this {
31
- return this;
32
- }
33
- __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
34
- let keyStart: usize = 0;
35
- let keyEnd: usize = 0;
36
- let isKey = false;
37
- let depth: i32 = 0;
38
- let lastIndex: usize = 0;
39
- while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
40
- while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
41
- if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
42
- if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
43
- if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
44
- srcStart += 2;
45
- while (srcStart < srcEnd) {
46
- let code = load<u16>(srcStart);
47
- while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
48
- if (keyStart == 0) {
49
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
50
- if (isKey) {
51
- keyStart = lastIndex;
52
- keyEnd = srcStart;
53
- while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
54
- if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
55
- isKey = false;
56
- } else {
57
- isKey = true;
58
- lastIndex = srcStart + 2;
59
- }
60
- }
61
- srcStart += 2;
62
- } else {
63
- if (code == 34) {
64
- lastIndex = srcStart;
65
- srcStart += 2;
66
- while (srcStart < srcEnd) {
67
- const code = load<u16>(srcStart);
68
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
69
- srcStart += 4;
70
- keyStart = 0;
71
- break;
72
- }
73
- srcStart += 2;
74
- }
75
- } else if (code - 48 <= 9 || code == 45) {
76
- lastIndex = srcStart;
77
- srcStart += 2;
78
- while (srcStart < srcEnd) {
79
- const code = load<u16>(srcStart);
80
- if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
81
- switch (<u32>keyEnd - <u32>keyStart) {
82
- case 2: {
83
- const code16 = load<u16>(keyStart);
84
- if (code16 == 120) {
85
- store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("x"));
86
- srcStart += 2;
87
- keyStart = 0;
88
- break;
89
- } else if (code16 == 121) {
90
- store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("y"));
91
- srcStart += 2;
92
- keyStart = 0;
93
- break;
94
- } else if (code16 == 122) {
95
- store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("z"));
96
- srcStart += 2;
97
- keyStart = 0;
98
- break;
99
- } else {
100
- srcStart += 2;
101
- keyStart = 0;
102
- break;
103
- }
104
- }
105
-
106
- default: {
107
- srcStart += 2;
108
- keyStart = 0;
109
- break;
110
- }
111
- }
112
- break;
113
- }
114
- srcStart += 2;
115
- }
116
- } else if (code == 123) {
117
- lastIndex = srcStart;
118
- depth++;
119
- srcStart += 2;
120
- while (srcStart < srcEnd) {
121
- const code = load<u16>(srcStart);
122
- if (code == 34) {
123
- srcStart += 2;
124
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
125
- } else if (code == 125) {
126
- if (--depth == 0) {
127
- srcStart += 2;
128
- switch (<u32>keyEnd - <u32>keyStart) {
129
- case 2: {
130
- const code16 = load<u16>(keyStart);
131
- if (code16 == 120) {
132
- store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("x"));
133
- keyStart = 0;
134
- break;
135
- } else if (code16 == 121) {
136
- store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("y"));
137
- keyStart = 0;
138
- break;
139
- } else if (code16 == 122) {
140
- store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("z"));
141
- keyStart = 0;
142
- break;
143
- } else {
144
- keyStart = 0;
145
- break;
146
- }
147
- }
148
-
149
- default: {
150
- keyStart = 0;
151
- break;
152
- }
153
- }
154
- break;
155
- }
156
- } else if (code == 123) depth++;
157
- srcStart += 2;
158
- }
159
- } else if (code == 91) {
160
- lastIndex = srcStart;
161
- depth++;
162
- srcStart += 2;
163
- while (srcStart < srcEnd) {
164
- const code = load<u16>(srcStart);
165
- if (code == 34) {
166
- srcStart += 2;
167
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
168
- } else if (code == 93) {
169
- if (--depth == 0) {
170
- srcStart += 2;
171
- keyStart = 0;
172
- break;
173
- }
174
- } else if (code == 91) depth++;
175
- srcStart += 2;
176
- }
177
- } else if (code == 116) {
178
- if (load<u64>(srcStart) == 28429475166421108) {
179
- srcStart += 8;
180
- srcStart += 2;
181
- keyStart = 0;
182
- } else {
183
- throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
184
- }
185
- } else if (code == 102) {
186
- if (load<u64>(srcStart, 2) == 28429466576093281) {
187
- srcStart += 10;
188
- srcStart += 2;
189
- keyStart = 0;
190
- } else {
191
- throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
192
- }
193
- } else if (code == 110) {
194
- if (load<u64>(srcStart) == 30399761348886638) {
195
- srcStart += 8;
196
- srcStart += 2;
197
- keyStart = 0;
198
- }
199
- } else {
200
- srcStart += 2;
201
- keyStart = 0;
202
- }
203
- }
204
- }
205
- return out;
206
- }
207
- }
208
-
209
-
210
- @json
211
- class Player {
212
-
213
- @alias("first name")
214
- firstName!: string | null;
215
- lastName!: string;
216
- lastActive!: Array<i32>;
217
-
218
-
219
- @omitif((self: this): boolean => self.age < 18)
220
- age!: i32;
221
- pos!: Vec3 | null;
222
- isVerified!: boolean;
223
- __SERIALIZE(ptr: usize): void {
224
- bs.proposeSize(158);
225
- store<u16>(bs.offset, 123, 0);
226
- bs.offset += 2;
227
- if (!((self: this): boolean => self.age < 18)(this)) {
228
- store<u64>(bs.offset, 28429415035764770, 0);
229
- store<u32>(bs.offset, 3801122, 8);
230
- bs.offset += 12;
231
- JSON.__serialize<i32>(load<i32>(ptr, offsetof<this>("age")));
232
- store<u16>(bs.offset, 44, 0);
233
- bs.offset += 2;
234
- }
235
- store<u64>(bs.offset, 32088598323265570, 0);
236
- store<u64>(bs.offset, 30962384884727923, 8);
237
- store<u64>(bs.offset, 9570583007002721, 16);
238
- store<u16>(bs.offset, 58, 24);
239
- bs.offset += 26;
240
- JSON.__serialize<string | null>(load<string | null>(ptr, offsetof<this>("firstName")));
241
- store<u64>(bs.offset, 27303536599629868, 0);
242
- store<u64>(bs.offset, 27303407755985011, 8);
243
- store<u64>(bs.offset, 16325694684725357, 16);
244
- bs.offset += 24;
245
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("lastName")));
246
- store<u64>(bs.offset, 27303536599629868, 0);
247
- store<u64>(bs.offset, 27866301874831475, 8);
248
- store<u64>(bs.offset, 28429479460798580, 16);
249
- store<u32>(bs.offset, 3801122, 24);
250
- bs.offset += 28;
251
- JSON.__serialize<Array<i32>>(load<Array<i32>>(ptr, offsetof<this>("lastActive")));
252
- store<u64>(bs.offset, 31244203453448236, 0);
253
- store<u32>(bs.offset, 2228339, 8);
254
- store<u16>(bs.offset, 58, 12);
255
- bs.offset += 14;
256
- JSON.__serialize<Vec3 | null>(load<Vec3 | null>(ptr, offsetof<this>("pos")));
257
- store<u64>(bs.offset, 32370073295519788, 0);
258
- store<u64>(bs.offset, 29555362187509846, 8);
259
- store<u64>(bs.offset, 28147931469643878, 16);
260
- store<u32>(bs.offset, 3801122, 24);
261
- bs.offset += 28;
262
- JSON.__serialize<boolean>(load<boolean>(ptr, offsetof<this>("isVerified")));
263
- store<u16>(bs.offset, 125, 0);
264
- bs.offset += 2;
265
- }
266
-
267
-
268
- @inline
269
- __INITIALIZE(): this {
270
- store<string>(changetype<usize>(this), "", offsetof<this>("lastName"));
271
- store<Array<i32>>(changetype<usize>(this), [], offsetof<this>("lastActive"));
272
- return this;
273
- }
274
- __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
275
- let keyStart: usize = 0;
276
- let keyEnd: usize = 0;
277
- let isKey = false;
278
- let depth: i32 = 0;
279
- let lastIndex: usize = 0;
280
- while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
281
- while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
282
- if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
283
- if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
284
- if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
285
- srcStart += 2;
286
- while (srcStart < srcEnd) {
287
- let code = load<u16>(srcStart);
288
- while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
289
- if (keyStart == 0) {
290
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
291
- if (isKey) {
292
- keyStart = lastIndex;
293
- keyEnd = srcStart;
294
- while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
295
- if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
296
- isKey = false;
297
- } else {
298
- isKey = true;
299
- lastIndex = srcStart + 2;
300
- }
301
- }
302
- srcStart += 2;
303
- } else {
304
- if (code == 34) {
305
- lastIndex = srcStart;
306
- srcStart += 2;
307
- while (srcStart < srcEnd) {
308
- const code = load<u16>(srcStart);
309
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
310
- switch (<u32>keyEnd - <u32>keyStart) {
311
- case 20: {
312
- const codeS8 = load<u64>(keyStart, 0);
313
- const codeS16 = load<u64>(keyStart, 8);
314
- const codeS20 = load<u32>(keyStart, 16);
315
- if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
316
- store<string | null>(changetype<usize>(out), JSON.__deserialize<string | null>(lastIndex, srcStart + 2), offsetof<this>("firstName"));
317
- srcStart += 4;
318
- keyStart = 0;
319
- break;
320
- } else {
321
- srcStart += 4;
322
- keyStart = 0;
323
- break;
324
- }
325
- }
326
-
327
- case 16: {
328
- const codeS8 = load<u64>(keyStart, 0);
329
- const codeS16 = load<u64>(keyStart, 8);
330
- if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
331
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("lastName"));
332
- srcStart += 4;
333
- keyStart = 0;
334
- break;
335
- } else {
336
- srcStart += 4;
337
- keyStart = 0;
338
- break;
339
- }
340
- }
341
-
342
- default: {
343
- srcStart += 4;
344
- keyStart = 0;
345
- break;
346
- }
347
- }
348
- break;
349
- }
350
- srcStart += 2;
351
- }
352
- } else if (code - 48 <= 9 || code == 45) {
353
- lastIndex = srcStart;
354
- srcStart += 2;
355
- while (srcStart < srcEnd) {
356
- const code = load<u16>(srcStart);
357
- if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
358
- switch (<u32>keyEnd - <u32>keyStart) {
359
- case 6: {
360
- const code48 = load<u64>(keyStart) & 281474976710655;
361
- if (code48 == 433798447201) {
362
- store<i32>(changetype<usize>(out), JSON.__deserialize<i32>(lastIndex, srcStart), offsetof<this>("age"));
363
- srcStart += 2;
364
- keyStart = 0;
365
- break;
366
- } else {
367
- srcStart += 2;
368
- keyStart = 0;
369
- break;
370
- }
371
- }
372
-
373
- default: {
374
- srcStart += 2;
375
- keyStart = 0;
376
- break;
377
- }
378
- }
379
- break;
380
- }
381
- srcStart += 2;
382
- }
383
- } else if (code == 123) {
384
- lastIndex = srcStart;
385
- depth++;
386
- srcStart += 2;
387
- while (srcStart < srcEnd) {
388
- const code = load<u16>(srcStart);
389
- if (code == 34) {
390
- srcStart += 2;
391
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
392
- } else if (code == 125) {
393
- if (--depth == 0) {
394
- srcStart += 2;
395
- switch (<u32>keyEnd - <u32>keyStart) {
396
- case 20: {
397
- const codeS8 = load<u64>(keyStart, 0);
398
- const codeS16 = load<u64>(keyStart, 8);
399
- const codeS20 = load<u32>(keyStart, 16);
400
- if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
401
- store<string | null>(changetype<usize>(out), JSON.__deserialize<string | null>(lastIndex, srcStart), offsetof<this>("firstName"));
402
- keyStart = 0;
403
- break;
404
- } else if (codeS8 == 32651591226032236 && codeS16 == 29555370777313345 && codeS20 == 6619254) {
405
- store<Array<i32>>(changetype<usize>(out), JSON.__deserialize<Array<i32>>(lastIndex, srcStart), offsetof<this>("lastActive"));
406
- keyStart = 0;
407
- break;
408
- } else if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
409
- store<boolean>(changetype<usize>(out), JSON.__deserialize<boolean>(lastIndex, srcStart), offsetof<this>("isVerified"));
410
- keyStart = 0;
411
- break;
412
- } else {
413
- keyStart = 0;
414
- break;
415
- }
416
- }
417
-
418
- case 6: {
419
- const code48 = load<u64>(keyStart) & 281474976710655;
420
- if (code48 == 433798447201) {
421
- store<i32>(changetype<usize>(out), JSON.__deserialize<i32>(lastIndex, srcStart), offsetof<this>("age"));
422
- keyStart = 0;
423
- break;
424
- } else if (code48 == 493928513648) {
425
- store<Vec3 | null>(changetype<usize>(out), JSON.__deserialize<Vec3 | null>(lastIndex, srcStart), offsetof<this>("pos"));
426
- keyStart = 0;
427
- break;
428
- } else {
429
- keyStart = 0;
430
- break;
431
- }
432
- }
433
-
434
- case 16: {
435
- const codeS8 = load<u64>(keyStart, 0);
436
- const codeS16 = load<u64>(keyStart, 8);
437
- if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
438
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("lastName"));
439
- keyStart = 0;
440
- break;
441
- } else {
442
- keyStart = 0;
443
- break;
444
- }
445
- }
446
-
447
- default: {
448
- keyStart = 0;
449
- break;
450
- }
451
- }
452
- break;
453
- }
454
- } else if (code == 123) depth++;
455
- srcStart += 2;
456
- }
457
- } else if (code == 91) {
458
- lastIndex = srcStart;
459
- depth++;
460
- srcStart += 2;
461
- while (srcStart < srcEnd) {
462
- const code = load<u16>(srcStart);
463
- if (code == 34) {
464
- srcStart += 2;
465
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
466
- } else if (code == 93) {
467
- if (--depth == 0) {
468
- srcStart += 2;
469
- switch (<u32>keyEnd - <u32>keyStart) {
470
- case 20: {
471
- const codeS8 = load<u64>(keyStart, 0);
472
- const codeS16 = load<u64>(keyStart, 8);
473
- const codeS20 = load<u32>(keyStart, 16);
474
- if (codeS8 == 32651591226032236 && codeS16 == 29555370777313345 && codeS20 == 6619254) {
475
- store<Array<i32>>(changetype<usize>(out), JSON.__deserialize<Array<i32>>(lastIndex, srcStart), offsetof<this>("lastActive"));
476
- keyStart = 0;
477
- break;
478
- } else {
479
- keyStart = 0;
480
- break;
481
- }
482
- }
483
-
484
- default: {
485
- keyStart = 0;
486
- break;
487
- }
488
- }
489
- break;
490
- }
491
- } else if (code == 91) depth++;
492
- srcStart += 2;
493
- }
494
- } else if (code == 116) {
495
- if (load<u64>(srcStart) == 28429475166421108) {
496
- srcStart += 8;
497
- switch (<u32>keyEnd - <u32>keyStart) {
498
- case 20: {
499
- const codeS8 = load<u64>(keyStart, 0);
500
- const codeS16 = load<u64>(keyStart, 8);
501
- const codeS20 = load<u32>(keyStart, 16);
502
- if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
503
- store<boolean>(changetype<usize>(out), true, offsetof<this>("isVerified"));
504
- srcStart += 2;
505
- keyStart = 0;
506
- break;
507
- } else {
508
- srcStart += 2;
509
- keyStart = 0;
510
- break;
511
- }
512
- }
513
-
514
- default: {
515
- srcStart += 2;
516
- keyStart = 0;
517
- }
518
- }
519
- } else {
520
- throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
521
- }
522
- } else if (code == 102) {
523
- if (load<u64>(srcStart, 2) == 28429466576093281) {
524
- srcStart += 10;
525
- switch (<u32>keyEnd - <u32>keyStart) {
526
- case 20: {
527
- const codeS8 = load<u64>(keyStart, 0);
528
- const codeS16 = load<u64>(keyStart, 8);
529
- const codeS20 = load<u32>(keyStart, 16);
530
- if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
531
- store<boolean>(changetype<usize>(out), false, offsetof<this>("isVerified"));
532
- srcStart += 2;
533
- keyStart = 0;
534
- break;
535
- } else {
536
- srcStart += 2;
537
- keyStart = 0;
538
- break;
539
- }
540
- }
541
-
542
- default: {
543
- srcStart += 2;
544
- keyStart = 0;
545
- }
546
- }
547
- } else {
548
- throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
549
- }
550
- } else if (code == 110) {
551
- if (load<u64>(srcStart) == 30399761348886638) {
552
- srcStart += 8;
553
- switch (<u32>keyEnd - <u32>keyStart) {
554
- case 20: {
555
- const codeS8 = load<u64>(keyStart, 0);
556
- const codeS16 = load<u64>(keyStart, 8);
557
- const codeS20 = load<u32>(keyStart, 16);
558
- if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
559
- store<usize>(changetype<usize>(out), 0, offsetof<this>("firstName"));
560
- srcStart += 2;
561
- keyStart = 0;
562
- break;
563
- } else {
564
- srcStart += 2;
565
- keyStart = 0;
566
- break;
567
- }
568
- }
569
-
570
- case 6: {
571
- const code48 = load<u64>(keyStart) & 281474976710655;
572
- if (code48 == 493928513648) {
573
- store<usize>(changetype<usize>(out), 0, offsetof<this>("pos"));
574
- srcStart += 2;
575
- keyStart = 0;
576
- break;
577
- } else {
578
- srcStart += 2;
579
- keyStart = 0;
580
- break;
581
- }
582
- }
583
-
584
- default: {
585
- srcStart += 2;
586
- keyStart = 0;
587
- }
588
- }
589
- }
590
- } else {
591
- srcStart += 2;
592
- keyStart = 0;
593
- }
594
- }
595
- }
596
- return out;
597
- }
598
- }
599
- const player: Player = {
600
- firstName: "Jairus",
601
- lastName: "Tanaka",
602
- lastActive: [3, 9, 2025],
603
- age: 18,
604
- pos: {
605
- x: 3.4,
606
- y: 1.2,
607
- z: 8.3,
608
- },
609
- isVerified: true,
610
- };
611
- const serialized = JSON.stringify<Player>(player);
612
- const deserialized = JSON.parse<Player>(serialized);
613
- console.log("Serialized " + serialized);
614
- console.log("Deserialized " + JSON.stringify(deserialized));
1
+ import { JSON } from ".";
2
+ const o = new JSON.Obj();
3
+ o.set("schema", "http://json-schema.org/draft-07/schema#");
4
+ o.set("additionalProperties", false);
5
+ o.set("properties", new JSON.Obj());
6
+ o.get("properties")!.as<JSON.Obj>().set("duration", new JSON.Obj());
7
+ o.get("properties")!.as<JSON.Obj>().get("duration")!.as<JSON.Obj>().set("default", 10);
8
+ o.get("properties")!.as<JSON.Obj>().get("duration")!.as<JSON.Obj>().set("description", "Duration of the operation in seconds");
9
+ o.get("properties")!.as<JSON.Obj>().get("duration")!.as<JSON.Obj>().set("type", "number");
10
+ o.get("properties")!.as<JSON.Obj>().set("steps", new JSON.Obj());
11
+ o.get("properties")!.as<JSON.Obj>().get("steps")!.as<JSON.Obj>().set("default", 5);
12
+ o.get("properties")!.as<JSON.Obj>().get("steps")!.as<JSON.Obj>().set("description", "Number of steps in the operation");
13
+ o.get("properties")!.as<JSON.Obj>().get("steps")!.as<JSON.Obj>().set("type", "number");
14
+ o.set("type", "object");
15
+ console.log(o.toString());
16
+ console.log((o.toString().length << 1).toString() + " == 596");
package/assembly/test.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { JSON } from ".";
2
+
1
3
 
2
4
  @json
3
5
  class Vec3 {