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

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.1
9
+ AssemblyScript - v1.1.15-preview.3
10
10
  </pre>
11
11
  </h6>
12
12
 
@@ -1,16 +1,26 @@
1
- import { BRACE_LEFT, BRACE_RIGHT } from "../../../custom/chars";
1
+ import { BRACE_LEFT, BRACE_RIGHT, BRACKET_LEFT, BRACKET_RIGHT } from "../../../custom/chars";
2
2
  import { JSON } from "../../..";
3
+ import { isSpace } from "util/string";
3
4
 
4
5
  export function deserializeMapArray<T extends Map<any, any>[]>(srcStart: usize, srcEnd: usize, dst: usize): T {
5
6
  const out = changetype<nonnull<T>>(dst || changetype<usize>(instantiate<T>()));
6
7
  let lastIndex: usize = 0;
7
8
  let depth: u32 = 0;
9
+
10
+ while (srcStart < srcEnd && isSpace(load<u16>(srcStart))) srcStart += 2;
11
+ while (srcEnd > srcStart && isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
12
+
13
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
14
+
15
+ if (load<u16>(srcStart) != BRACKET_LEFT) throw new Error("Expected '[' at start of object at position " + (srcEnd - srcStart).toString());
16
+ if (load<u16>(srcEnd - 2) != BRACKET_RIGHT) throw new Error("Expected ']' at end of object at position " + (srcEnd - srcStart).toString());
17
+
8
18
  while (srcStart < srcEnd) {
9
19
  const code = load<u16>(srcStart);
10
20
  if (code == BRACE_LEFT && depth++ == 0) {
11
21
  lastIndex = srcStart;
12
22
  } else if (code == BRACE_RIGHT && --depth == 0) {
13
- out.push(JSON.__deserialize<valueof<T>>(lastIndex, srcStart));
23
+ out.push(JSON.__deserialize<valueof<T>>(lastIndex, (srcStart += 2)));
14
24
  }
15
25
  srcStart += 2;
16
26
  }
@@ -0,0 +1,384 @@
1
+ import { bs } from "../lib/as-bs";
2
+ import { JSON } from ".";
3
+
4
+
5
+ @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;
24
+ }
25
+
26
+
27
+ @serializer
28
+ @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}}`;
33
+ }
34
+
35
+
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;
46
+ }
47
+ __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;
53
+ }
54
+
55
+
56
+ @inline
57
+ __INITIALIZE(): this {
58
+ this.tag = "";
59
+ this.value = null;
60
+ return this;
61
+ }
62
+ __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
63
+ return inline.always(this.deserialize(JSON.Util.ptrToStr(srcStart, srcEnd)));
64
+ }
65
+ }
66
+
67
+
68
+ @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
+ }
78
+ __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);
89
+ store<u64>(bs.offset, 16325694684463220, 8);
90
+ bs.offset += 16;
91
+ JSON.__serialize<T>(load<T>(ptr, offsetof<this>("data")));
92
+ store<u16>(bs.offset, 125, 0);
93
+ bs.offset += 2;
94
+ }
95
+
96
+
97
+ @inline
98
+ __INITIALIZE(): this {
99
+ this.name = "";
100
+ return this;
101
+ }
102
+ __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
103
+ let keyStart: usize = 0;
104
+ let keyEnd: usize = 0;
105
+ let isKey = false;
106
+ let depth: i32 = 0;
107
+ let lastIndex: usize = 0;
108
+ while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
109
+ while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
110
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
111
+ if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
112
+ if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
113
+ srcStart += 2;
114
+ while (srcStart < srcEnd) {
115
+ let code = load<u16>(srcStart);
116
+ while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
117
+ if (keyStart == 0) {
118
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
119
+ if (isKey) {
120
+ keyStart = lastIndex;
121
+ keyEnd = srcStart;
122
+ console.log("Key: " + JSON.Util.ptrToStr(keyStart, keyEnd));
123
+ while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
124
+ if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
125
+ isKey = false;
126
+ } else {
127
+ isKey = true;
128
+ lastIndex = srcStart + 2;
129
+ }
130
+ }
131
+ srcStart += 2;
132
+ } else {
133
+ if (code == 34) {
134
+ lastIndex = srcStart;
135
+ srcStart += 2;
136
+ while (srcStart < srcEnd) {
137
+ const code = load<u16>(srcStart);
138
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
139
+ console.log("Value (string, 8): " + JSON.Util.ptrToStr(lastIndex, srcStart + 2));
140
+ switch (<u32>keyEnd - <u32>keyStart) {
141
+ case 8: {
142
+ 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"));
150
+ srcStart += 4;
151
+ keyStart = 0;
152
+ break;
153
+ } else {
154
+ srcStart += 4;
155
+ keyStart = 0;
156
+ break;
157
+ }
158
+ }
159
+
160
+ default: {
161
+ srcStart += 4;
162
+ keyStart = 0;
163
+ break;
164
+ }
165
+ }
166
+ break;
167
+ }
168
+ srcStart += 2;
169
+ }
170
+ } else if (code - 48 <= 9 || code == 45) {
171
+ lastIndex = srcStart;
172
+ srcStart += 2;
173
+ while (srcStart < srcEnd) {
174
+ const code = load<u16>(srcStart);
175
+ if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
176
+ console.log("Value (number, 9): " + JSON.Util.ptrToStr(lastIndex, srcStart));
177
+ 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
+ case 8: {
193
+ 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"));
196
+ srcStart += 2;
197
+ keyStart = 0;
198
+ break;
199
+ } else {
200
+ srcStart += 2;
201
+ keyStart = 0;
202
+ break;
203
+ }
204
+ }
205
+
206
+ default: {
207
+ srcStart += 2;
208
+ keyStart = 0;
209
+ break;
210
+ }
211
+ }
212
+ break;
213
+ }
214
+ srcStart += 2;
215
+ }
216
+ } else if (code == 123) {
217
+ lastIndex = srcStart;
218
+ depth++;
219
+ srcStart += 2;
220
+ while (srcStart < srcEnd) {
221
+ const code = load<u16>(srcStart);
222
+ if (code == 34) {
223
+ srcStart += 2;
224
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
225
+ } else if (code == 125) {
226
+ if (--depth == 0) {
227
+ srcStart += 2;
228
+ console.log("Value (object, 10): " + JSON.Util.ptrToStr(lastIndex, srcStart));
229
+ switch (<u32>keyEnd - <u32>keyStart) {
230
+ case 8: {
231
+ const code64 = load<u64>(keyStart);
232
+ if (isDefined(out.__DESERIALIZE) && code64 == 27303570963497060) {
233
+ store<T>(changetype<usize>(out), JSON.__deserialize<T>(lastIndex, srcStart), offsetof<this>("data"));
234
+ keyStart = 0;
235
+ break;
236
+ } else {
237
+ keyStart = 0;
238
+ break;
239
+ }
240
+ }
241
+
242
+ default: {
243
+ keyStart = 0;
244
+ break;
245
+ }
246
+ }
247
+ break;
248
+ }
249
+ } else if (code == 123) depth++;
250
+ srcStart += 2;
251
+ }
252
+ } else if (code == 91) {
253
+ lastIndex = srcStart;
254
+ depth++;
255
+ srcStart += 2;
256
+ while (srcStart < srcEnd) {
257
+ const code = load<u16>(srcStart);
258
+ if (code == 34) {
259
+ srcStart += 2;
260
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
261
+ } else if (code == 93) {
262
+ if (--depth == 0) {
263
+ srcStart += 2;
264
+ console.log("Value (object, 11): " + JSON.Util.ptrToStr(lastIndex, srcStart));
265
+ switch (<u32>keyEnd - <u32>keyStart) {
266
+ case 8: {
267
+ 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"));
270
+ keyStart = 0;
271
+ break;
272
+ } else {
273
+ keyStart = 0;
274
+ break;
275
+ }
276
+ }
277
+
278
+ default: {
279
+ keyStart = 0;
280
+ break;
281
+ }
282
+ }
283
+ break;
284
+ }
285
+ } else if (code == 91) depth++;
286
+ srcStart += 2;
287
+ }
288
+ } else if (code == 116) {
289
+ if (load<u64>(srcStart) == 28429475166421108) {
290
+ srcStart += 8;
291
+ console.log("Value (bool, 12): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
292
+ switch (<u32>keyEnd - <u32>keyStart) {
293
+ case 8: {
294
+ const code64 = load<u64>(keyStart);
295
+ if (isBoolean<T>() && code64 == 27303570963497060) {
296
+ store<boolean>(changetype<usize>(out), true, offsetof<this>("data"));
297
+ srcStart += 2;
298
+ keyStart = 0;
299
+ break;
300
+ } else {
301
+ srcStart += 2;
302
+ keyStart = 0;
303
+ break;
304
+ }
305
+ }
306
+
307
+ default: {
308
+ srcStart += 2;
309
+ keyStart = 0;
310
+ }
311
+ }
312
+ } else {
313
+ throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
314
+ }
315
+ } else if (code == 102) {
316
+ if (load<u64>(srcStart, 2) == 28429466576093281) {
317
+ srcStart += 10;
318
+ console.log("Value (bool, 13): " + JSON.Util.ptrToStr(lastIndex, srcStart - 10));
319
+ switch (<u32>keyEnd - <u32>keyStart) {
320
+ case 8: {
321
+ const code64 = load<u64>(keyStart);
322
+ if (isBoolean<T>() && code64 == 27303570963497060) {
323
+ store<boolean>(changetype<usize>(out), false, offsetof<this>("data"));
324
+ srcStart += 2;
325
+ keyStart = 0;
326
+ break;
327
+ } else {
328
+ srcStart += 2;
329
+ keyStart = 0;
330
+ break;
331
+ }
332
+ }
333
+
334
+ default: {
335
+ srcStart += 2;
336
+ keyStart = 0;
337
+ }
338
+ }
339
+ } else {
340
+ throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
341
+ }
342
+ } else if (code == 110) {
343
+ if (load<u64>(srcStart) == 30399761348886638) {
344
+ srcStart += 8;
345
+ console.log("Value (null, 14): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
346
+ switch (<u32>keyEnd - <u32>keyStart) {
347
+ case 8: {
348
+ const code64 = load<u64>(keyStart);
349
+ if (isNullable<T>() && code64 == 27303570963497060) {
350
+ store<usize>(changetype<usize>(out), 0, offsetof<this>("data"));
351
+ srcStart += 2;
352
+ keyStart = 0;
353
+ break;
354
+ } else {
355
+ srcStart += 2;
356
+ keyStart = 0;
357
+ break;
358
+ }
359
+ }
360
+
361
+ default: {
362
+ srcStart += 2;
363
+ keyStart = 0;
364
+ }
365
+ }
366
+ }
367
+ } else {
368
+ srcStart += 2;
369
+ keyStart = 0;
370
+ }
371
+ }
372
+ }
373
+ return out;
374
+ }
375
+ }
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);
384
+ console.log("Deserialized Node: " + JSON.stringify(deserialized));
package/assembly/test.ts CHANGED
@@ -1,39 +1,78 @@
1
1
  import { JSON } from ".";
2
- import { Vec3 } from "./types";
3
2
 
4
3
 
5
4
  @json
6
- class Player {
5
+ class GenericEnum<T> {
6
+ private tag: string = "";
7
+ private value: T | null = null;
7
8
 
8
- @alias("first name")
9
- firstName!: string;
10
- lastName!: string;
11
- lastActive!: i32[];
9
+ constructor() {
10
+ this.tag = "";
11
+ this.value = null;
12
+ }
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
+ }
13
20
 
14
- @omitif((self: Player) => self.age < 18)
15
- age!: i32;
21
+ getTag(): string {
22
+ return this.tag;
23
+ }
16
24
 
25
+ getValue(): T | null {
26
+ return this.value;
27
+ }
17
28
 
18
- @omitnull()
19
- pos!: Vec3 | null;
20
- isVerified!: boolean;
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();
45
+
46
+ result.tag = keys[0];
47
+ result.value = JSON.parse<T>(values[0].data);
48
+
49
+ return result;
50
+ }
51
+ }
52
+
53
+
54
+ @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
+ }
21
65
  }
22
66
 
23
- const player: Player = {
24
- firstName: "Jairus",
25
- lastName: "Tanaka",
26
- lastActive: [3, 9, 2025],
27
- age: 18,
28
- pos: {
29
- x: 3.4,
30
- y: 1.2,
31
- z: 8.3,
32
- },
33
- isVerified: true,
34
- };
35
-
36
- const serialized = JSON.stringify(player);
37
- console.log("Serialized: " + serialized);
38
- const deserialized = JSON.parse<Player>(serialized);
39
- console.log("Deserialized: " + JSON.stringify(deserialized));
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;
73
+
74
+ const serialized = JSON.stringify(node);
75
+ console.log("Serialized Node: " + serialized);
76
+
77
+ const deserialized = JSON.parse<Node<GenericEnum<string>>>(serialized);
78
+ console.log("Deserialized Node: " + JSON.stringify(deserialized));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "1.1.15-preview.1",
3
+ "version": "1.1.15-preview.3",
4
4
  "author": "Jairus Tanaka",
5
5
  "repository": {
6
6
  "type": "git",
@@ -62,8 +62,7 @@
62
62
  "test:wasmer": "wasmer ./build/test.wasm",
63
63
  "build:transform": "tsc -p ./transform",
64
64
  "bench:wasmer": "wasmer ./build/bench.wasm --llvm",
65
- "format": "prettier -w .",
66
- "publish": "bash ./publish.sh"
65
+ "format": "prettier -w ."
67
66
  },
68
67
  "type": "module",
69
68
  "types": "assembly/index.ts"
@@ -14,7 +14,7 @@ const WRITE = process.env["JSON_WRITE"];
14
14
  const rawValue = process.env["JSON_DEBUG"];
15
15
  const DEBUG = rawValue === "true" ? 1 : rawValue === "false" || rawValue === "" ? 0 : isNaN(Number(rawValue)) ? 0 : Number(rawValue);
16
16
  const STRICT = process.env["JSON_STRICT"] && process.env["JSON_STRICT"] == "true";
17
- class JSONTransform extends Visitor {
17
+ export class JSONTransform extends Visitor {
18
18
  static SN = new JSONTransform();
19
19
  program;
20
20
  baseCWD;
@@ -150,8 +150,9 @@ class JSONTransform extends Visitor {
150
150
  if (depSearch) {
151
151
  if (DEBUG > 0)
152
152
  console.log("Found " + unknownType + " in dependencies of " + source.internalPath);
153
- if (!schema.deps.some((v) => v.name == depSearch.name))
153
+ if (!schema.deps.some((v) => v.name == depSearch.name)) {
154
154
  schema.deps.push(depSearch);
155
+ }
155
156
  }
156
157
  else {
157
158
  const internalSearch = getClass(unknownType, source);
@@ -160,6 +161,8 @@ class JSONTransform extends Visitor {
160
161
  console.log("Found " + unknownType + " internally from " + source.internalPath);
161
162
  if (!this.visitedClasses.has(internalSearch.range.source.internalPath + internalSearch.name.text)) {
162
163
  this.visitClassDeclarationRef(internalSearch);
164
+ const internalSchema = this.schemas.get(internalSearch.range.source.internalPath)?.find((s) => s.name == internalSearch.name.text);
165
+ schema.deps.push(internalSchema);
163
166
  this.schemas.get(internalSearch.range.source.internalPath).push(this.schema);
164
167
  this.visitClassDeclaration(node);
165
168
  return;
@@ -176,6 +179,8 @@ class JSONTransform extends Visitor {
176
179
  console.log("Found " + externalSearch.name.text + " externally from " + source.internalPath);
177
180
  if (!this.visitedClasses.has(externalSearch.range.source.internalPath + externalSearch.name.text)) {
178
181
  this.visitClassDeclarationRef(externalSearch);
182
+ const externalSchema = this.schemas.get(externalSearch.range.source.internalPath)?.find((s) => s.name == externalSearch.name.text);
183
+ schema.deps.push(externalSchema);
179
184
  this.schemas.get(externalSearch.range.source.internalPath).push(this.schema);
180
185
  this.visitClassDeclaration(node);
181
186
  return;
@@ -241,7 +246,7 @@ class JSONTransform extends Visitor {
241
246
  deserializer.decorators.push(Node.createDecorator(Node.createIdentifierExpression("inline", deserializer.range), null, deserializer.range));
242
247
  }
243
248
  DESERIALIZE_CUSTOM += " __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {\n";
244
- DESERIALIZE_CUSTOM += " return inline.always(this." + deserializer.name.text + "(changetype<string>(srcStart)));\n";
249
+ DESERIALIZE_CUSTOM += " return inline.always(this." + deserializer.name.text + "(JSON.Util.ptrToStr(srcStart, srcEnd)));\n";
245
250
  DESERIALIZE_CUSTOM += " }\n";
246
251
  }
247
252
  if (!members.length) {
@@ -258,6 +263,7 @@ class JSONTransform extends Visitor {
258
263
  if (type.startsWith("(") && type.includes("=>"))
259
264
  continue;
260
265
  const mem = new Property();
266
+ mem.parent = this.schema;
261
267
  mem.name = name.text;
262
268
  mem.type = type;
263
269
  mem.value = value;
@@ -408,8 +414,7 @@ class JSONTransform extends Visitor {
408
414
  };
409
415
  for (const member of this.schema.members) {
410
416
  const type = stripNull(member.type);
411
- if (node.isGeneric && node.typeParameters.some((p) => stripNull(p.name.text) == type)) {
412
- member.generic = true;
417
+ if (member.custom) {
413
418
  sortedMembers.string.push(member);
414
419
  sortedMembers.number.push(member);
415
420
  sortedMembers.object.push(member);
@@ -763,7 +768,7 @@ class JSONTransform extends Visitor {
763
768
  const first = group[0];
764
769
  const fName = first.alias || first.name;
765
770
  DESERIALIZE += indent + " if (" + (first.generic ? "isBoolean<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
766
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
771
+ DESERIALIZE += indent + " store<boolean>(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
767
772
  DESERIALIZE += indent + " srcStart += 2;\n";
768
773
  DESERIALIZE += indent + " keyStart = 0;\n";
769
774
  DESERIALIZE += indent + " break;\n";
@@ -772,7 +777,7 @@ class JSONTransform extends Visitor {
772
777
  const mem = group[i];
773
778
  const memName = mem.alias || mem.name;
774
779
  DESERIALIZE += indent + " else if (" + (mem.generic ? "isBoolean<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
775
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
780
+ DESERIALIZE += indent + " store<boolean>(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
776
781
  DESERIALIZE += indent + " srcStart += 2;\n";
777
782
  DESERIALIZE += indent + " keyStart = 0;\n";
778
783
  DESERIALIZE += indent + " break;\n";
@@ -807,7 +812,7 @@ class JSONTransform extends Visitor {
807
812
  const first = group[0];
808
813
  const fName = first.alias || first.name;
809
814
  DESERIALIZE += indent + " if (" + (first.generic ? "isBoolean<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
810
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
815
+ DESERIALIZE += indent + " store<boolean>(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
811
816
  DESERIALIZE += indent + " srcStart += 2;\n";
812
817
  DESERIALIZE += indent + " keyStart = 0;\n";
813
818
  DESERIALIZE += indent + " break;\n";
@@ -816,7 +821,7 @@ class JSONTransform extends Visitor {
816
821
  const mem = group[i];
817
822
  const memName = mem.alias || mem.name;
818
823
  DESERIALIZE += indent + " else if (" + (mem.generic ? "isBoolean<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
819
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
824
+ DESERIALIZE += indent + " store<boolean>(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
820
825
  DESERIALIZE += indent + " srcStart += 2;\n";
821
826
  DESERIALIZE += indent + " keyStart = 0;\n";
822
827
  DESERIALIZE += indent + " break;\n";
@@ -1076,7 +1081,7 @@ export default class Transformer extends Transform {
1076
1081
  transformer.addImports(source);
1077
1082
  }
1078
1083
  if (source.normalizedPath == WRITE) {
1079
- writeFileSync(path.join(process.cwd(), this.baseDir, removeExtension(source.normalizedPath) + ".json.ts"), toString(source));
1084
+ writeFileSync(path.join(process.cwd(), this.baseDir, removeExtension(source.normalizedPath) + ".tmp.ts"), toString(source));
1080
1085
  }
1081
1086
  }
1082
1087
  }
@@ -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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"}
@@ -15,6 +15,27 @@ export class Property {
15
15
  node;
16
16
  byteSize = 0;
17
17
  generic = false;
18
+ _custom = false;
19
+ parent;
20
+ set custom(value) {
21
+ this._custom = value;
22
+ }
23
+ get custom() {
24
+ if (this._custom)
25
+ return true;
26
+ if (this.parent.node.isGeneric && this.parent.node.typeParameters.some((p) => p.name.text == this.type)) {
27
+ this.generic = true;
28
+ this._custom = true;
29
+ return true;
30
+ }
31
+ for (const dep of this.parent.deps) {
32
+ if (this.name == dep.name) {
33
+ this._custom = true;
34
+ return true;
35
+ }
36
+ }
37
+ return false;
38
+ }
18
39
  }
19
40
  export class Schema {
20
41
  static = true;
@@ -25,7 +46,16 @@ export class Schema {
25
46
  needsLink = null;
26
47
  byteSize = 0;
27
48
  deps = [];
28
- custom = false;
49
+ _custom = false;
50
+ set custom(value) {
51
+ this._custom = value;
52
+ }
53
+ get custom() {
54
+ if (this._custom)
55
+ return true;
56
+ if (this.parent)
57
+ return this.parent.custom;
58
+ }
29
59
  }
30
60
  export class Src {
31
61
  internalPath;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/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;CACjC;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;IACpB,MAAM,GAAY,KAAK,CAAC;CAChC;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":"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"}
@@ -20,7 +20,7 @@ const DEBUG = rawValue === "true" ? 1 : rawValue === "false" || rawValue === ""
20
20
 
21
21
  const STRICT = process.env["JSON_STRICT"] && process.env["JSON_STRICT"] == "true";
22
22
 
23
- class JSONTransform extends Visitor {
23
+ export class JSONTransform extends Visitor {
24
24
  static SN: JSONTransform = new JSONTransform();
25
25
 
26
26
  public program!: Program;
@@ -154,13 +154,18 @@ class JSONTransform extends Visitor {
154
154
  const depSearch = schema.deps.find((v) => v.name == unknownType);
155
155
  if (depSearch) {
156
156
  if (DEBUG > 0) console.log("Found " + unknownType + " in dependencies of " + source.internalPath);
157
- if (!schema.deps.some((v) => v.name == depSearch.name)) schema.deps.push(depSearch);
157
+ if (!schema.deps.some((v) => v.name == depSearch.name)) {
158
+ schema.deps.push(depSearch);
159
+ }
158
160
  } else {
159
161
  const internalSearch = getClass(unknownType, source);
160
162
  if (internalSearch) {
161
163
  if (DEBUG > 0) console.log("Found " + unknownType + " internally from " + source.internalPath);
162
164
  if (!this.visitedClasses.has(internalSearch.range.source.internalPath + internalSearch.name.text)) {
163
165
  this.visitClassDeclarationRef(internalSearch);
166
+ const internalSchema = this.schemas.get(internalSearch.range.source.internalPath)?.find((s) => s.name == internalSearch.name.text);
167
+ // if (internalSchema.custom) mem.custom = true;
168
+ schema.deps.push(internalSchema);
164
169
  this.schemas.get(internalSearch.range.source.internalPath).push(this.schema);
165
170
  this.visitClassDeclaration(node);
166
171
  return;
@@ -174,6 +179,8 @@ class JSONTransform extends Visitor {
174
179
  if (DEBUG > 0) console.log("Found " + externalSearch.name.text + " externally from " + source.internalPath);
175
180
  if (!this.visitedClasses.has(externalSearch.range.source.internalPath + externalSearch.name.text)) {
176
181
  this.visitClassDeclarationRef(externalSearch);
182
+ const externalSchema = this.schemas.get(externalSearch.range.source.internalPath)?.find((s) => s.name == externalSearch.name.text);
183
+ schema.deps.push(externalSchema);
177
184
  this.schemas.get(externalSearch.range.source.internalPath).push(this.schema);
178
185
  this.visitClassDeclaration(node);
179
186
  return;
@@ -239,7 +246,7 @@ class JSONTransform extends Visitor {
239
246
  }
240
247
 
241
248
  DESERIALIZE_CUSTOM += " __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {\n";
242
- DESERIALIZE_CUSTOM += " return inline.always(this." + deserializer.name.text + "(changetype<string>(srcStart)));\n";
249
+ DESERIALIZE_CUSTOM += " return inline.always(this." + deserializer.name.text + "(JSON.Util.ptrToStr(srcStart, srcEnd)));\n";
243
250
  DESERIALIZE_CUSTOM += " }\n";
244
251
  }
245
252
 
@@ -261,6 +268,7 @@ class JSONTransform extends Visitor {
261
268
  if (type.startsWith("(") && type.includes("=>")) continue;
262
269
 
263
270
  const mem = new Property();
271
+ mem.parent = this.schema;
264
272
  mem.name = name.text;
265
273
  mem.type = type;
266
274
  mem.value = value;
@@ -423,8 +431,7 @@ class JSONTransform extends Visitor {
423
431
 
424
432
  for (const member of this.schema.members) {
425
433
  const type = stripNull(member.type);
426
- if (node.isGeneric && node.typeParameters.some((p) => stripNull(p.name.text) == type)) {
427
- member.generic = true;
434
+ if (member.custom) {
428
435
  sortedMembers.string.push(member);
429
436
  sortedMembers.number.push(member);
430
437
  sortedMembers.object.push(member);
@@ -850,7 +857,7 @@ class JSONTransform extends Visitor {
850
857
  const first = group[0];
851
858
  const fName = first.alias || first.name;
852
859
  DESERIALIZE += indent + " if (" + (first.generic ? "isBoolean<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
853
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
860
+ DESERIALIZE += indent + " store<boolean>(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
854
861
  DESERIALIZE += indent + " srcStart += 2;\n";
855
862
  DESERIALIZE += indent + " keyStart = 0;\n";
856
863
  DESERIALIZE += indent + " break;\n";
@@ -860,7 +867,7 @@ class JSONTransform extends Visitor {
860
867
  const mem = group[i];
861
868
  const memName = mem.alias || mem.name;
862
869
  DESERIALIZE += indent + " else if (" + (mem.generic ? "isBoolean<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
863
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
870
+ DESERIALIZE += indent + " store<boolean>(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
864
871
  DESERIALIZE += indent + " srcStart += 2;\n";
865
872
  DESERIALIZE += indent + " keyStart = 0;\n";
866
873
  DESERIALIZE += indent + " break;\n";
@@ -904,7 +911,7 @@ class JSONTransform extends Visitor {
904
911
  const first = group[0];
905
912
  const fName = first.alias || first.name;
906
913
  DESERIALIZE += indent + " if (" + (first.generic ? "isBoolean<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
907
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
914
+ DESERIALIZE += indent + " store<boolean>(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
908
915
  DESERIALIZE += indent + " srcStart += 2;\n";
909
916
  DESERIALIZE += indent + " keyStart = 0;\n";
910
917
  DESERIALIZE += indent + " break;\n";
@@ -914,7 +921,7 @@ class JSONTransform extends Visitor {
914
921
  const mem = group[i];
915
922
  const memName = mem.alias || mem.name;
916
923
  DESERIALIZE += indent + " else if (" + (mem.generic ? "isBoolean<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
917
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
924
+ DESERIALIZE += indent + " store<boolean>(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
918
925
  DESERIALIZE += indent + " srcStart += 2;\n";
919
926
  DESERIALIZE += indent + " keyStart = 0;\n";
920
927
  DESERIALIZE += indent + " break;\n";
@@ -1226,7 +1233,7 @@ export default class Transformer extends Transform {
1226
1233
  transformer.addImports(source);
1227
1234
  }
1228
1235
  if (source.normalizedPath == WRITE) {
1229
- writeFileSync(path.join(process.cwd(), this.baseDir, removeExtension(source.normalizedPath) + ".json.ts"), toString(source));
1236
+ writeFileSync(path.join(process.cwd(), this.baseDir, removeExtension(source.normalizedPath) + ".tmp.ts"), toString(source));
1230
1237
  }
1231
1238
  }
1232
1239
  }
@@ -1,5 +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
4
 
4
5
  export enum PropertyFlags {
5
6
  OmitNull,
@@ -17,6 +18,29 @@ export class Property {
17
18
  public node!: FieldDeclaration;
18
19
  public byteSize: number = 0;
19
20
  public generic: boolean = false;
21
+ public _custom: boolean = false;
22
+ public parent: Schema;
23
+ set custom(value: boolean) {
24
+ this._custom = value;
25
+ }
26
+ get custom(): boolean {
27
+ if (this._custom) return true;
28
+ if (this.parent.node.isGeneric && this.parent.node.typeParameters.some((p) => p.name.text == this.type)) {
29
+ // console.log("Custom (Generic): " + this.name);
30
+ this.generic = true;
31
+ this._custom = true;
32
+ return true;
33
+ }
34
+
35
+ for (const dep of this.parent.deps) {
36
+ if (this.name == dep.name) {
37
+ // console.log("Custom (Dependency): " + this.name);
38
+ this._custom = true;
39
+ return true;
40
+ }
41
+ }
42
+ return false;
43
+ }
20
44
  }
21
45
 
22
46
  export class Schema {
@@ -28,7 +52,15 @@ export class Schema {
28
52
  public needsLink: string | null = null;
29
53
  public byteSize: number = 0;
30
54
  public deps: Schema[] = [];
31
- public custom: boolean = false;
55
+ private _custom: boolean = false;
56
+
57
+ set custom(value: boolean) {
58
+ this._custom = value;
59
+ }
60
+ get custom(): boolean {
61
+ if (this._custom) return true;
62
+ if (this.parent) return this.parent.custom;
63
+ }
32
64
  }
33
65
 
34
66
  export class Src {