json-as 1.1.15-preview.3 → 1.1.15-preview.4

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/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
7
7
  █████ ███████ ██████ ██ ████ ██ ██ ███████
8
8
  </span>
9
- AssemblyScript - v1.1.15-preview.3
9
+ AssemblyScript - v1.1.15-preview.4
10
10
  </pre>
11
11
  </h6>
12
12
 
@@ -1,102 +1,405 @@
1
1
  import { bs } from "../lib/as-bs";
2
2
  import { JSON } from ".";
3
3
 
4
-
5
4
  @json
6
- class GenericEnum<T> {
7
- private tag: string = "";
8
- private value: T | null = null;
9
- constructor() {
10
- this.tag = "";
11
- this.value = null;
12
- }
13
- static create<T>(tag: string, value: T): GenericEnum<T> {
14
- const item = new GenericEnum<T>();
15
- item.tag = tag;
16
- item.value = value;
17
- return item;
18
- }
19
- getTag(): string {
20
- return this.tag;
21
- }
22
- getValue(): T | null {
23
- return this.value;
5
+ class Person {
6
+ id: string | null = null;
7
+ firstName: string = "";
8
+ lastName: string = "";
9
+ __SERIALIZE(ptr: usize): void {
10
+ bs.proposeSize(64);
11
+ store<u64>(bs.offset, 28147948644860027, 0);
12
+ store<u32>(bs.offset, 3801122, 8);
13
+ bs.offset += 12;
14
+ JSON.__serialize<string | null>(load<string | null>(ptr, offsetof<this>("id")));
15
+ store<u64>(bs.offset, 29555310643511340, 0);
16
+ store<u64>(bs.offset, 21955546407174258, 8);
17
+ store<u64>(bs.offset, 9570583007002721, 16);
18
+ store<u16>(bs.offset, 58, 24);
19
+ bs.offset += 26;
20
+ JSON.__serialize<string>(load<string>(ptr, offsetof<this>("firstName")));
21
+ store<u64>(bs.offset, 27303536599629868, 0);
22
+ store<u64>(bs.offset, 27303407755985011, 8);
23
+ store<u64>(bs.offset, 16325694684725357, 16);
24
+ bs.offset += 24;
25
+ JSON.__serialize<string>(load<string>(ptr, offsetof<this>("lastName")));
26
+ store<u16>(bs.offset, 125, 0);
27
+ bs.offset += 2;
24
28
  }
25
29
 
26
-
27
- @serializer
28
30
  @inline
29
- serialize<T>(self: GenericEnum<T>): string {
30
- const tagJson = JSON.internal.stringify(self.tag);
31
- const valueJson = JSON.internal.stringify(self.value);
32
- return `{${tagJson}:${valueJson}}`;
31
+ __INITIALIZE(): this {
32
+ this.firstName = "";
33
+ this.lastName = "";
34
+ return this;
33
35
  }
36
+ __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
37
+ let keyStart: usize = 0;
38
+ let keyEnd: usize = 0;
39
+ let isKey = false;
40
+ let depth: i32 = 0;
41
+ let lastIndex: usize = 0;
42
+ while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
43
+ while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
44
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
45
+ if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
46
+ if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
47
+ srcStart += 2;
48
+ while (srcStart < srcEnd) {
49
+ let code = load<u16>(srcStart);
50
+ while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
51
+ if (keyStart == 0) {
52
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
53
+ if (isKey) {
54
+ keyStart = lastIndex;
55
+ keyEnd = srcStart;
56
+ while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
57
+ if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
58
+ isKey = false;
59
+ } else {
60
+ isKey = true;
61
+ lastIndex = srcStart + 2;
62
+ }
63
+ }
64
+ srcStart += 2;
65
+ } else {
66
+ if (code == 34) {
67
+ lastIndex = srcStart;
68
+ srcStart += 2;
69
+ while (srcStart < srcEnd) {
70
+ const code = load<u16>(srcStart);
71
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
72
+ switch (<u32>keyEnd - <u32>keyStart) {
73
+ case 4: {
74
+ const code32 = load<u32>(keyStart);
75
+ if (code32 == 6553705) {
76
+ store<string | null>(changetype<usize>(out), JSON.__deserialize<string | null>(lastIndex, srcStart + 2), offsetof<this>("id"));
77
+ srcStart += 4;
78
+ keyStart = 0;
79
+ break;
80
+ } else {
81
+ srcStart += 4;
82
+ keyStart = 0;
83
+ break;
84
+ }
85
+ }
86
+
87
+ case 18: {
88
+ const codeS8 = load<u64>(keyStart, 0);
89
+ const codeS16 = load<u64>(keyStart, 8);
90
+ if (codeS8 == 32370111954878566 && codeS16 == 30681189078401140) {
91
+ store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("firstName"));
92
+ srcStart += 4;
93
+ keyStart = 0;
94
+ break;
95
+ } else {
96
+ srcStart += 4;
97
+ keyStart = 0;
98
+ break;
99
+ }
100
+ }
34
101
 
102
+ case 16: {
103
+ const codeS8 = load<u64>(keyStart, 0);
104
+ const codeS16 = load<u64>(keyStart, 8);
105
+ if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
106
+ store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("lastName"));
107
+ srcStart += 4;
108
+ keyStart = 0;
109
+ break;
110
+ } else {
111
+ srcStart += 4;
112
+ keyStart = 0;
113
+ break;
114
+ }
115
+ }
35
116
 
36
- @deserializer
37
- @inline
38
- deserialize(data: string): GenericEnum<T> {
39
- const parsed = JSON.parse<Map<string, JSON.Raw>>(data);
40
- const result = new GenericEnum<T>();
41
- const keys = parsed.keys();
42
- const values = parsed.values();
43
- result.tag = keys[0];
44
- result.value = JSON.parse<T>(values[0].data);
45
- return result;
117
+ default: {
118
+ srcStart += 4;
119
+ keyStart = 0;
120
+ break;
121
+ }
122
+ }
123
+ break;
124
+ }
125
+ srcStart += 2;
126
+ }
127
+ } else if (code - 48 <= 9 || code == 45) {
128
+ lastIndex = srcStart;
129
+ srcStart += 2;
130
+ while (srcStart < srcEnd) {
131
+ const code = load<u16>(srcStart);
132
+ if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
133
+ srcStart += 2;
134
+ keyStart = 0;
135
+ break;
136
+ }
137
+ srcStart += 2;
138
+ }
139
+ } else if (code == 123) {
140
+ lastIndex = srcStart;
141
+ depth++;
142
+ srcStart += 2;
143
+ while (srcStart < srcEnd) {
144
+ const code = load<u16>(srcStart);
145
+ if (code == 34) {
146
+ srcStart += 2;
147
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
148
+ } else if (code == 125) {
149
+ if (--depth == 0) {
150
+ srcStart += 2;
151
+ keyStart = 0;
152
+ break;
153
+ }
154
+ } else if (code == 123) depth++;
155
+ srcStart += 2;
156
+ }
157
+ } else if (code == 91) {
158
+ lastIndex = srcStart;
159
+ depth++;
160
+ srcStart += 2;
161
+ while (srcStart < srcEnd) {
162
+ const code = load<u16>(srcStart);
163
+ if (code == 34) {
164
+ srcStart += 2;
165
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
166
+ } else if (code == 93) {
167
+ if (--depth == 0) {
168
+ srcStart += 2;
169
+ keyStart = 0;
170
+ break;
171
+ }
172
+ } else if (code == 91) depth++;
173
+ srcStart += 2;
174
+ }
175
+ } else if (code == 116) {
176
+ if (load<u64>(srcStart) == 28429475166421108) {
177
+ srcStart += 8;
178
+ srcStart += 2;
179
+ keyStart = 0;
180
+ } else {
181
+ throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
182
+ }
183
+ } else if (code == 102) {
184
+ if (load<u64>(srcStart, 2) == 28429466576093281) {
185
+ srcStart += 10;
186
+ srcStart += 2;
187
+ keyStart = 0;
188
+ } else {
189
+ throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
190
+ }
191
+ } else if (code == 110) {
192
+ if (load<u64>(srcStart) == 30399761348886638) {
193
+ srcStart += 8;
194
+ switch (<u32>keyEnd - <u32>keyStart) {
195
+ case 4: {
196
+ const code32 = load<u32>(keyStart);
197
+ if (code32 == 6553705) {
198
+ store<usize>(changetype<usize>(out), 0, offsetof<this>("id"));
199
+ srcStart += 2;
200
+ keyStart = 0;
201
+ break;
202
+ } else {
203
+ srcStart += 2;
204
+ keyStart = 0;
205
+ break;
206
+ }
207
+ }
208
+
209
+ default: {
210
+ srcStart += 2;
211
+ keyStart = 0;
212
+ }
213
+ }
214
+ }
215
+ } else {
216
+ srcStart += 2;
217
+ keyStart = 0;
218
+ }
219
+ }
220
+ }
221
+ return out;
46
222
  }
223
+ }
224
+
225
+ @json
226
+ class PeopleData {
227
+ people: Array<Person> = [];
47
228
  __SERIALIZE(ptr: usize): void {
48
- const data = this.serialize(this);
49
- bs.resetState();
50
- const dataSize = data.length << 1;
51
- memory.copy(bs.offset, changetype<usize>(data), dataSize);
52
- bs.offset += dataSize;
229
+ bs.proposeSize(22);
230
+ store<u64>(bs.offset, 28429453686341755, 0);
231
+ store<u64>(bs.offset, 28429436511584367, 8);
232
+ store<u32>(bs.offset, 3801122, 16);
233
+ bs.offset += 20;
234
+ JSON.__serialize<Array<Person>>(load<Array<Person>>(ptr, offsetof<this>("people")));
235
+ store<u16>(bs.offset, 125, 0);
236
+ bs.offset += 2;
53
237
  }
54
238
 
55
-
56
239
  @inline
57
240
  __INITIALIZE(): this {
58
- this.tag = "";
59
- this.value = null;
241
+ this.people = [];
60
242
  return this;
61
243
  }
62
244
  __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
63
- return inline.always(this.deserialize(JSON.Util.ptrToStr(srcStart, srcEnd)));
245
+ let keyStart: usize = 0;
246
+ let keyEnd: usize = 0;
247
+ let isKey = false;
248
+ let depth: i32 = 0;
249
+ let lastIndex: usize = 0;
250
+ while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
251
+ while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
252
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
253
+ if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
254
+ if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
255
+ srcStart += 2;
256
+ while (srcStart < srcEnd) {
257
+ let code = load<u16>(srcStart);
258
+ while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
259
+ if (keyStart == 0) {
260
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
261
+ if (isKey) {
262
+ keyStart = lastIndex;
263
+ keyEnd = srcStart;
264
+ while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
265
+ if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
266
+ isKey = false;
267
+ } else {
268
+ isKey = true;
269
+ lastIndex = srcStart + 2;
270
+ }
271
+ }
272
+ srcStart += 2;
273
+ } else {
274
+ if (code == 34) {
275
+ lastIndex = srcStart;
276
+ srcStart += 2;
277
+ while (srcStart < srcEnd) {
278
+ const code = load<u16>(srcStart);
279
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
280
+ srcStart += 4;
281
+ keyStart = 0;
282
+ break;
283
+ }
284
+ srcStart += 2;
285
+ }
286
+ } else if (code - 48 <= 9 || code == 45) {
287
+ lastIndex = srcStart;
288
+ srcStart += 2;
289
+ while (srcStart < srcEnd) {
290
+ const code = load<u16>(srcStart);
291
+ if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
292
+ srcStart += 2;
293
+ keyStart = 0;
294
+ break;
295
+ }
296
+ srcStart += 2;
297
+ }
298
+ } else if (code == 123) {
299
+ lastIndex = srcStart;
300
+ depth++;
301
+ srcStart += 2;
302
+ while (srcStart < srcEnd) {
303
+ const code = load<u16>(srcStart);
304
+ if (code == 34) {
305
+ srcStart += 2;
306
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
307
+ } else if (code == 125) {
308
+ if (--depth == 0) {
309
+ srcStart += 2;
310
+ keyStart = 0;
311
+ break;
312
+ }
313
+ } else if (code == 123) depth++;
314
+ srcStart += 2;
315
+ }
316
+ } else if (code == 91) {
317
+ lastIndex = srcStart;
318
+ depth++;
319
+ srcStart += 2;
320
+ while (srcStart < srcEnd) {
321
+ const code = load<u16>(srcStart);
322
+ if (code == 34) {
323
+ srcStart += 2;
324
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
325
+ } else if (code == 93) {
326
+ if (--depth == 0) {
327
+ srcStart += 2;
328
+ switch (<u32>keyEnd - <u32>keyStart) {
329
+ case 12: {
330
+ const codeS8 = load<u64>(keyStart, 0);
331
+ const codeS12 = load<u32>(keyStart, 8);
332
+ if (codeS8 == 31525674139582576 && codeS12 == 6619244) {
333
+ store<Array<Person>>(changetype<usize>(out), JSON.__deserialize<Array<Person>>(lastIndex, srcStart), offsetof<this>("people"));
334
+ keyStart = 0;
335
+ break;
336
+ } else {
337
+ keyStart = 0;
338
+ break;
339
+ }
340
+ }
341
+
342
+ default: {
343
+ keyStart = 0;
344
+ break;
345
+ }
346
+ }
347
+ break;
348
+ }
349
+ } else if (code == 91) depth++;
350
+ srcStart += 2;
351
+ }
352
+ } else if (code == 116) {
353
+ if (load<u64>(srcStart) == 28429475166421108) {
354
+ srcStart += 8;
355
+ srcStart += 2;
356
+ keyStart = 0;
357
+ } else {
358
+ throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
359
+ }
360
+ } else if (code == 102) {
361
+ if (load<u64>(srcStart, 2) == 28429466576093281) {
362
+ srcStart += 10;
363
+ srcStart += 2;
364
+ keyStart = 0;
365
+ } else {
366
+ throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
367
+ }
368
+ } else if (code == 110) {
369
+ if (load<u64>(srcStart) == 30399761348886638) {
370
+ srcStart += 8;
371
+ srcStart += 2;
372
+ keyStart = 0;
373
+ }
374
+ } else {
375
+ srcStart += 2;
376
+ keyStart = 0;
377
+ }
378
+ }
379
+ }
380
+ return out;
64
381
  }
65
382
  }
66
383
 
67
-
68
384
  @json
69
- class Node<T> {
70
- name: string;
71
- id: u32;
72
- data: T;
73
- constructor() {
74
- this.name = "";
75
- this.id = 0;
76
- this.data = changetype<T>(0);
77
- }
385
+ export class Response<T> {
386
+ data: T | null = null;
78
387
  __SERIALIZE(ptr: usize): void {
79
- bs.proposeSize(66);
80
- store<u64>(bs.offset, 27303545189564539, 0);
81
- store<u64>(bs.offset, 16325694684725357, 8);
82
- bs.offset += 16;
83
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("name")));
84
- store<u64>(bs.offset, 28147948644859948, 0);
85
- store<u32>(bs.offset, 3801122, 8);
86
- bs.offset += 12;
87
- JSON.__serialize<u32>(load<u32>(ptr, offsetof<this>("id")));
88
- store<u64>(bs.offset, 27303502239891500, 0);
388
+ bs.proposeSize(18);
389
+ store<u64>(bs.offset, 27303502239891579, 0);
89
390
  store<u64>(bs.offset, 16325694684463220, 8);
90
391
  bs.offset += 16;
91
- JSON.__serialize<T>(load<T>(ptr, offsetof<this>("data")));
392
+ JSON.__serialize<T | null>(load<T | null>(ptr, offsetof<this>("data")));
92
393
  store<u16>(bs.offset, 125, 0);
93
394
  bs.offset += 2;
94
395
  }
95
396
 
96
-
97
397
  @inline
98
398
  __INITIALIZE(): this {
99
- this.name = "";
399
+ if (isManaged<nonnull<T | null>>() || isReference<nonnull<T | null>>()) {
400
+ this.data = changetype<nonnull<T | null>>(__new(offsetof<nonnull<T | null>>(), idof<nonnull<T | null>>()));
401
+ if (isDefined(this.data.__INITIALIZE)) changetype<nonnull<T | null>>(this.data).__INITIALIZE();
402
+ }
100
403
  return this;
101
404
  }
102
405
  __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
@@ -119,7 +422,6 @@ class Node<T> {
119
422
  if (isKey) {
120
423
  keyStart = lastIndex;
121
424
  keyEnd = srcStart;
122
- console.log("Key: " + JSON.Util.ptrToStr(keyStart, keyEnd));
123
425
  while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
124
426
  if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
125
427
  isKey = false;
@@ -136,17 +438,11 @@ class Node<T> {
136
438
  while (srcStart < srcEnd) {
137
439
  const code = load<u16>(srcStart);
138
440
  if (code == 34 && load<u16>(srcStart - 2) !== 92) {
139
- console.log("Value (string, 8): " + JSON.Util.ptrToStr(lastIndex, srcStart + 2));
140
441
  switch (<u32>keyEnd - <u32>keyStart) {
141
442
  case 8: {
142
443
  const code64 = load<u64>(keyStart);
143
- if (code64 == 28429440805568622) {
144
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("name"));
145
- srcStart += 4;
146
- keyStart = 0;
147
- break;
148
- } else if (isString<T>() && code64 == 27303570963497060) {
149
- store<T>(changetype<usize>(out), JSON.__deserialize<T>(lastIndex, srcStart + 2), offsetof<this>("data"));
444
+ if (isString<T | null>() && code64 == 27303570963497060) {
445
+ store<T | null>(changetype<usize>(out), JSON.__deserialize<T | null>(lastIndex, srcStart + 2), offsetof<this>("data"));
150
446
  srcStart += 4;
151
447
  keyStart = 0;
152
448
  break;
@@ -173,26 +469,11 @@ class Node<T> {
173
469
  while (srcStart < srcEnd) {
174
470
  const code = load<u16>(srcStart);
175
471
  if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
176
- console.log("Value (number, 9): " + JSON.Util.ptrToStr(lastIndex, srcStart));
177
472
  switch (<u32>keyEnd - <u32>keyStart) {
178
- case 4: {
179
- const code32 = load<u32>(keyStart);
180
- if (code32 == 6553705) {
181
- store<u32>(changetype<usize>(out), JSON.__deserialize<u32>(lastIndex, srcStart), offsetof<this>("id"));
182
- srcStart += 2;
183
- keyStart = 0;
184
- break;
185
- } else {
186
- srcStart += 2;
187
- keyStart = 0;
188
- break;
189
- }
190
- }
191
-
192
473
  case 8: {
193
474
  const code64 = load<u64>(keyStart);
194
- if ((isInteger<T>() || isFloat<T>()) && code64 == 27303570963497060) {
195
- store<T>(changetype<usize>(out), JSON.__deserialize<T>(lastIndex, srcStart), offsetof<this>("data"));
475
+ if ((isInteger<T | null>() || isFloat<T | null>()) && code64 == 27303570963497060) {
476
+ store<T | null>(changetype<usize>(out), JSON.__deserialize<T | null>(lastIndex, srcStart), offsetof<this>("data"));
196
477
  srcStart += 2;
197
478
  keyStart = 0;
198
479
  break;
@@ -225,12 +506,11 @@ class Node<T> {
225
506
  } else if (code == 125) {
226
507
  if (--depth == 0) {
227
508
  srcStart += 2;
228
- console.log("Value (object, 10): " + JSON.Util.ptrToStr(lastIndex, srcStart));
229
509
  switch (<u32>keyEnd - <u32>keyStart) {
230
510
  case 8: {
231
511
  const code64 = load<u64>(keyStart);
232
512
  if (isDefined(out.__DESERIALIZE) && code64 == 27303570963497060) {
233
- store<T>(changetype<usize>(out), JSON.__deserialize<T>(lastIndex, srcStart), offsetof<this>("data"));
513
+ store<T | null>(changetype<usize>(out), JSON.__deserialize<T | null>(lastIndex, srcStart), offsetof<this>("data"));
234
514
  keyStart = 0;
235
515
  break;
236
516
  } else {
@@ -261,12 +541,11 @@ class Node<T> {
261
541
  } else if (code == 93) {
262
542
  if (--depth == 0) {
263
543
  srcStart += 2;
264
- console.log("Value (object, 11): " + JSON.Util.ptrToStr(lastIndex, srcStart));
265
544
  switch (<u32>keyEnd - <u32>keyStart) {
266
545
  case 8: {
267
546
  const code64 = load<u64>(keyStart);
268
- if (isArray<T>() && code64 == 27303570963497060) {
269
- store<T>(changetype<usize>(out), JSON.__deserialize<T>(lastIndex, srcStart), offsetof<this>("data"));
547
+ if (isArray<T | null>() && code64 == 27303570963497060) {
548
+ store<T | null>(changetype<usize>(out), JSON.__deserialize<T | null>(lastIndex, srcStart), offsetof<this>("data"));
270
549
  keyStart = 0;
271
550
  break;
272
551
  } else {
@@ -288,11 +567,10 @@ class Node<T> {
288
567
  } else if (code == 116) {
289
568
  if (load<u64>(srcStart) == 28429475166421108) {
290
569
  srcStart += 8;
291
- console.log("Value (bool, 12): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
292
570
  switch (<u32>keyEnd - <u32>keyStart) {
293
571
  case 8: {
294
572
  const code64 = load<u64>(keyStart);
295
- if (isBoolean<T>() && code64 == 27303570963497060) {
573
+ if (isBoolean<T | null>() && code64 == 27303570963497060) {
296
574
  store<boolean>(changetype<usize>(out), true, offsetof<this>("data"));
297
575
  srcStart += 2;
298
576
  keyStart = 0;
@@ -315,11 +593,10 @@ class Node<T> {
315
593
  } else if (code == 102) {
316
594
  if (load<u64>(srcStart, 2) == 28429466576093281) {
317
595
  srcStart += 10;
318
- console.log("Value (bool, 13): " + JSON.Util.ptrToStr(lastIndex, srcStart - 10));
319
596
  switch (<u32>keyEnd - <u32>keyStart) {
320
597
  case 8: {
321
598
  const code64 = load<u64>(keyStart);
322
- if (isBoolean<T>() && code64 == 27303570963497060) {
599
+ if (isBoolean<T | null>() && code64 == 27303570963497060) {
323
600
  store<boolean>(changetype<usize>(out), false, offsetof<this>("data"));
324
601
  srcStart += 2;
325
602
  keyStart = 0;
@@ -342,11 +619,10 @@ class Node<T> {
342
619
  } else if (code == 110) {
343
620
  if (load<u64>(srcStart) == 30399761348886638) {
344
621
  srcStart += 8;
345
- console.log("Value (null, 14): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
346
622
  switch (<u32>keyEnd - <u32>keyStart) {
347
623
  case 8: {
348
624
  const code64 = load<u64>(keyStart);
349
- if (isNullable<T>() && code64 == 27303570963497060) {
625
+ if (isNullable<T | null>() && code64 == 27303570963497060) {
350
626
  store<usize>(changetype<usize>(out), 0, offsetof<this>("data"));
351
627
  srcStart += 2;
352
628
  keyStart = 0;
@@ -373,12 +649,6 @@ class Node<T> {
373
649
  return out;
374
650
  }
375
651
  }
376
- const enumValue = GenericEnum.create<string>("success", "Hello World");
377
- const node = new Node<GenericEnum<string>>();
378
- node.name = "test-node";
379
- node.id = 42;
380
- node.data = enumValue;
381
- const serialized = JSON.stringify(node);
382
- console.log("Serialized Node: " + serialized);
383
- const deserialized = JSON.parse<Node<GenericEnum<string>>>(serialized);
652
+ console.log((isManaged<PeopleData>() || isReference<PeopleData>()).toString());
653
+ let deserialized = JSON.parse<Response<PeopleData>>('{"data":{"people":[]}}');
384
654
  console.log("Deserialized Node: " + JSON.stringify(deserialized));
package/assembly/test.ts CHANGED
@@ -2,77 +2,34 @@ import { JSON } from ".";
2
2
 
3
3
 
4
4
  @json
5
- class GenericEnum<T> {
6
- private tag: string = "";
7
- private value: T | null = null;
8
-
9
- constructor() {
10
- this.tag = "";
11
- this.value = null;
12
- }
13
-
14
- static create<T>(tag: string, value: T): GenericEnum<T> {
15
- const item = new GenericEnum<T>();
16
- item.tag = tag;
17
- item.value = value;
18
- return item;
19
- }
20
-
21
- getTag(): string {
22
- return this.tag;
23
- }
24
-
25
- getValue(): T | null {
26
- return this.value;
27
- }
28
-
29
-
30
- @serializer
31
- serialize<T>(self: GenericEnum<T>): string {
32
- const tagJson = JSON.stringify(self.tag);
33
- const valueJson = JSON.stringify(self.value);
34
- return `{${tagJson}:${valueJson}}`;
35
- }
36
-
37
-
38
- @deserializer
39
- deserialize(data: string): GenericEnum<T> {
40
- const parsed = JSON.parse<Map<string, JSON.Raw>>(data);
41
- const result = new GenericEnum<T>();
42
-
43
- const keys = parsed.keys();
44
- const values = parsed.values();
5
+ class Person {
6
+ id: string | null = null;
7
+ firstName: string = "";
8
+ lastName: string = "";
9
+ }
45
10
 
46
- result.tag = keys[0];
47
- result.value = JSON.parse<T>(values[0].data);
48
11
 
49
- return result;
50
- }
12
+ @json
13
+ class PeopleData {
14
+ people: Person[] = [];
51
15
  }
52
16
 
53
17
 
54
18
  @json
55
- class Node<T> {
56
- name: string;
57
- id: u32;
58
- data: T;
59
-
60
- constructor() {
61
- this.name = "";
62
- this.id = 0;
63
- this.data = changetype<T>(0);
64
- }
19
+ export class Response<T> {
20
+ // errors: ErrorResult[] | null = null;
21
+ data: T | null = null;
22
+ // extensions: Map<string, ???> | null = null;
65
23
  }
66
24
 
67
- const enumValue = GenericEnum.create<string>("success", "Hello World");
68
-
69
- const node = new Node<GenericEnum<string>>();
70
- node.name = "test-node";
71
- node.id = 42;
72
- node.data = enumValue;
25
+ console.log((isManaged<PeopleData>() || isReference<PeopleData>()).toString());
73
26
 
74
- const serialized = JSON.stringify(node);
75
- console.log("Serialized Node: " + serialized);
27
+ // const serialized = JSON.stringify(new Response<PeopleData>());
28
+ // console.log("Serialized Node: " + serialized);
76
29
 
77
- const deserialized = JSON.parse<Node<GenericEnum<string>>>(serialized);
30
+ let deserialized = JSON.parse<Response<PeopleData>>('{"data":{"people":[]}}');
78
31
  console.log("Deserialized Node: " + JSON.stringify(deserialized));
32
+
33
+ // const deserialized2 = JSON.parse<Response<i32>>('{"data":0}');
34
+ // console.log("Deserialized Node: " + JSON.stringify(deserialized2));
35
+ // {"data":{"people":[]}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "1.1.15-preview.3",
3
+ "version": "1.1.15-preview.4",
4
4
  "author": "Jairus Tanaka",
5
5
  "repository": {
6
6
  "type": "git",
@@ -57,7 +57,7 @@
57
57
  "test": "bash ./run-tests.sh",
58
58
  "bench:as": "bash ./run-bench.as.sh",
59
59
  "bench:js": "bash ./run-bench.js.sh",
60
- "build:test": "rm -rf ./build/ && JSON_DEBUG=1 JSON_WRITE=assembly/test.ts asc assembly/test.ts --transform ./transform -o ./build/test.wasm --textFile ./build/test.wat --debug --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json",
60
+ "build:test": "rm -rf ./build/ && JSON_DEBUG=0 JSON_WRITE=assembly/test.ts asc assembly/test.ts --transform ./transform -o ./build/test.wasm --textFile ./build/test.wat --debug --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json",
61
61
  "test:wasmtime": "wasmtime ./build/test.wasm",
62
62
  "test:wasmer": "wasmer ./build/test.wasm",
63
63
  "build:transform": "tsc -p ./transform",
@@ -324,11 +324,16 @@ export class JSONTransform extends Visitor {
324
324
  const aliasName = JSON.stringify(member.alias || member.name);
325
325
  const realName = member.name;
326
326
  const isLast = i == this.schema.members.length - 1;
327
- const nonNullType = member.type.replace(" | null", "");
328
- if (member.value) {
327
+ if (member.value && member.type == stripNull(member.type)) {
329
328
  INITIALIZE += ` this.${member.name} = ${member.value};\n`;
330
329
  }
331
- else if (this.getSchema(nonNullType)) {
330
+ else if (member.generic) {
331
+ INITIALIZE += ` if (isManaged<nonnull<${member.type}>>() || isReference<nonnull<${member.type}>>()) {\n`;
332
+ INITIALIZE += ` this.${member.name} = changetype<nonnull<${member.type}>>(__new(offsetof<nonnull<${member.type}>>(), idof<nonnull<${member.type}>>()));\n`;
333
+ INITIALIZE += ` if (isDefined(this.${member.name}.__INITIALIZE)) changetype<nonnull<${member.type}>>(this.${member.name}).__INITIALIZE();\n`;
334
+ INITIALIZE += ` }\n`;
335
+ }
336
+ else if (this.getSchema(member.type)) {
332
337
  INITIALIZE += ` this.${member.name} = changetype<nonnull<${member.type}>>(__new(offsetof<nonnull<${member.type}>>(), idof<nonnull<${member.type}>>())).__INITIALIZE();\n`;
333
338
  }
334
339
  else if (member.type.startsWith("Array<") || member.type.startsWith("Map<")) {
@@ -414,7 +419,7 @@ export class JSONTransform extends Visitor {
414
419
  };
415
420
  for (const member of this.schema.members) {
416
421
  const type = stripNull(member.type);
417
- if (member.custom) {
422
+ if (member.custom || member.generic) {
418
423
  sortedMembers.string.push(member);
419
424
  sortedMembers.number.push(member);
420
425
  sortedMembers.object.push(member);
@@ -433,8 +438,10 @@ export class JSONTransform extends Visitor {
433
438
  sortedMembers.number.push(member);
434
439
  else if (isArray(type))
435
440
  sortedMembers.array.push(member);
436
- if (isStruct(type))
441
+ else if (isStruct(type))
437
442
  sortedMembers.object.push(member);
443
+ else
444
+ console.warn("Could not determine type " + type + " for member " + member.name + " in class " + this.schema.name);
438
445
  }
439
446
  }
440
447
  indent = "";
@@ -1232,10 +1239,13 @@ function isString(type) {
1232
1239
  function isArray(type) {
1233
1240
  return type.startsWith("Array<");
1234
1241
  }
1235
- function stripNull(type) {
1242
+ export function stripNull(type) {
1236
1243
  if (type.endsWith(" | null")) {
1237
1244
  return type.slice(0, type.length - 7);
1238
1245
  }
1246
+ else if (type.startsWith("null | ")) {
1247
+ return type.slice(7);
1248
+ }
1239
1249
  return type;
1240
1250
  }
1241
1251
  function getComparision(data) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { TypeAlias } from "./linkers/alias.js";
2
+ import { stripNull } from "./index.js";
2
3
  export var PropertyFlags;
3
4
  (function (PropertyFlags) {
4
5
  PropertyFlags[PropertyFlags["OmitNull"] = 0] = "OmitNull";
@@ -14,7 +15,7 @@ export class Property {
14
15
  flags = new Map();
15
16
  node;
16
17
  byteSize = 0;
17
- generic = false;
18
+ _generic = false;
18
19
  _custom = false;
19
20
  parent;
20
21
  set custom(value) {
@@ -24,18 +25,29 @@ export class Property {
24
25
  if (this._custom)
25
26
  return true;
26
27
  if (this.parent.node.isGeneric && this.parent.node.typeParameters.some((p) => p.name.text == this.type)) {
27
- this.generic = true;
28
28
  this._custom = true;
29
29
  return true;
30
30
  }
31
31
  for (const dep of this.parent.deps) {
32
- if (this.name == dep.name) {
32
+ if (this.name == dep.name && dep.custom) {
33
33
  this._custom = true;
34
34
  return true;
35
35
  }
36
36
  }
37
37
  return false;
38
38
  }
39
+ set generic(value) {
40
+ this._generic = value;
41
+ }
42
+ get generic() {
43
+ if (this._generic)
44
+ return true;
45
+ if (this.parent.node.isGeneric && this.parent.node.typeParameters.some((p) => p.name.text == stripNull(this.type))) {
46
+ this._generic = true;
47
+ return true;
48
+ }
49
+ return false;
50
+ }
39
51
  }
40
52
  export class Schema {
41
53
  static = true;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,yDAAQ,CAAA;IACR,qDAAM,CAAA;IACN,+CAAG,CAAA;IACH,qDAAM,CAAA;AACR,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,MAAM,OAAO,QAAQ;IACZ,IAAI,GAAW,EAAE,CAAC;IAClB,KAAK,GAAkB,IAAI,CAAC;IAC5B,IAAI,GAAW,EAAE,CAAC;IAClB,KAAK,GAAkB,IAAI,CAAC;IAC5B,KAAK,GAA0C,IAAI,GAAG,EAAoC,CAAC;IAC3F,IAAI,CAAoB;IACxB,QAAQ,GAAW,CAAC,CAAC;IACrB,OAAO,GAAY,KAAK,CAAC;IACzB,OAAO,GAAY,KAAK,CAAC;IACzB,MAAM,CAAS;IACtB,IAAI,MAAM,CAAC,KAAc;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,IAAI,MAAM;QACR,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAExG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBAE1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,MAAM,OAAO,MAAM;IACV,MAAM,GAAY,IAAI,CAAC;IACvB,IAAI,GAAW,EAAE,CAAC;IAClB,OAAO,GAAe,EAAE,CAAC;IACzB,MAAM,GAAkB,IAAI,CAAC;IAC7B,IAAI,CAAoB;IACxB,SAAS,GAAkB,IAAI,CAAC;IAChC,QAAQ,GAAW,CAAC,CAAC;IACrB,IAAI,GAAa,EAAE,CAAC;IACnB,OAAO,GAAY,KAAK,CAAC;IAEjC,IAAI,MAAM,CAAC,KAAc;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,IAAI,MAAM;QACR,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,OAAO,GAAG;IACP,YAAY,CAAS;IACrB,OAAO,CAAW;IAClB,OAAO,CAAc;IACrB,OAAO,CAAW;IAClB,OAAO,CAAW;IACzB,YAAY,MAAc;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -334,11 +334,15 @@ export class JSONTransform extends Visitor {
334
334
  const aliasName = JSON.stringify(member.alias || member.name);
335
335
  const realName = member.name;
336
336
  const isLast = i == this.schema.members.length - 1;
337
- const nonNullType = member.type.replace(" | null", "");
338
337
 
339
- if (member.value) {
338
+ if (member.value && member.type == stripNull(member.type)) {
340
339
  INITIALIZE += ` this.${member.name} = ${member.value};\n`;
341
- } else if (this.getSchema(nonNullType)) {
340
+ } else if (member.generic) {
341
+ INITIALIZE += ` if (isManaged<nonnull<${member.type}>>() || isReference<nonnull<${member.type}>>()) {\n`;
342
+ INITIALIZE += ` this.${member.name} = changetype<nonnull<${member.type}>>(__new(offsetof<nonnull<${member.type}>>(), idof<nonnull<${member.type}>>()));\n`;
343
+ INITIALIZE += ` if (isDefined(this.${member.name}.__INITIALIZE)) changetype<nonnull<${member.type}>>(this.${member.name}).__INITIALIZE();\n`;
344
+ INITIALIZE += ` }\n`;
345
+ } else if (this.getSchema(member.type)) {
342
346
  INITIALIZE += ` this.${member.name} = changetype<nonnull<${member.type}>>(__new(offsetof<nonnull<${member.type}>>(), idof<nonnull<${member.type}>>())).__INITIALIZE();\n`;
343
347
  } else if (member.type.startsWith("Array<") || member.type.startsWith("Map<")) {
344
348
  INITIALIZE += ` this.${member.name} = [];\n`;
@@ -431,7 +435,7 @@ export class JSONTransform extends Visitor {
431
435
 
432
436
  for (const member of this.schema.members) {
433
437
  const type = stripNull(member.type);
434
- if (member.custom) {
438
+ if (member.custom || member.generic) {
435
439
  sortedMembers.string.push(member);
436
440
  sortedMembers.number.push(member);
437
441
  sortedMembers.object.push(member);
@@ -444,8 +448,8 @@ export class JSONTransform extends Visitor {
444
448
  else if (isBoolean(type) || type.startsWith("JSON.Box<bool")) sortedMembers.boolean.push(member);
445
449
  else if (isPrimitive(type) || type.startsWith("JSON.Box<")) sortedMembers.number.push(member);
446
450
  else if (isArray(type)) sortedMembers.array.push(member);
447
- /*else */ if (isStruct(type)) sortedMembers.object.push(member);
448
- // else throw new Error("Could not determine type " + type + " for member " + member.name + " in class " + this.schema.name);
451
+ else if (isStruct(type)) sortedMembers.object.push(member);
452
+ else console.warn("Could not determine type " + type + " for member " + member.name + " in class " + this.schema.name);
449
453
  }
450
454
  }
451
455
 
@@ -1406,9 +1410,11 @@ function isArray(type: string): boolean {
1406
1410
  return type.startsWith("Array<");
1407
1411
  }
1408
1412
 
1409
- function stripNull(type: string): string {
1413
+ export function stripNull(type: string): string {
1410
1414
  if (type.endsWith(" | null")) {
1411
1415
  return type.slice(0, type.length - 7);
1416
+ } else if (type.startsWith("null | ")) {
1417
+ return type.slice(7);
1412
1418
  }
1413
1419
  return type;
1414
1420
  }
@@ -1,6 +1,6 @@
1
1
  import { ClassDeclaration, Expression, FieldDeclaration, Source } from "assemblyscript/dist/assemblyscript.js";
2
2
  import { TypeAlias } from "./linkers/alias.js";
3
- import { JSONTransform } from "./index.js";
3
+ import { JSONTransform, stripNull } from "./index.js";
4
4
 
5
5
  export enum PropertyFlags {
6
6
  OmitNull,
@@ -17,7 +17,7 @@ export class Property {
17
17
  public flags: Map<PropertyFlags, Expression | null> = new Map<PropertyFlags, Expression | null>();
18
18
  public node!: FieldDeclaration;
19
19
  public byteSize: number = 0;
20
- public generic: boolean = false;
20
+ public _generic: boolean = false;
21
21
  public _custom: boolean = false;
22
22
  public parent: Schema;
23
23
  set custom(value: boolean) {
@@ -27,13 +27,13 @@ export class Property {
27
27
  if (this._custom) return true;
28
28
  if (this.parent.node.isGeneric && this.parent.node.typeParameters.some((p) => p.name.text == this.type)) {
29
29
  // console.log("Custom (Generic): " + this.name);
30
- this.generic = true;
30
+ // this._generic = true;
31
31
  this._custom = true;
32
32
  return true;
33
33
  }
34
34
 
35
35
  for (const dep of this.parent.deps) {
36
- if (this.name == dep.name) {
36
+ if (this.name == dep.name && dep.custom) {
37
37
  // console.log("Custom (Dependency): " + this.name);
38
38
  this._custom = true;
39
39
  return true;
@@ -41,6 +41,18 @@ export class Property {
41
41
  }
42
42
  return false;
43
43
  }
44
+ set generic(value: boolean) {
45
+ this._generic = value;
46
+ }
47
+ get generic(): boolean {
48
+ if (this._generic) return true;
49
+ if (this.parent.node.isGeneric && this.parent.node.typeParameters.some((p) => p.name.text == stripNull(this.type))) {
50
+ // console.log("Generic: " + this.name);
51
+ this._generic = true;
52
+ return true;
53
+ }
54
+ return false;
55
+ }
44
56
  }
45
57
 
46
58
  export class Schema {