json-as 0.9.23 → 0.9.25

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,86 +1,81 @@
1
- import { FieldDeclaration, IdentifierExpression, StringLiteralExpression, IntegerLiteralExpression, FloatLiteralExpression, NullExpression, TrueExpression, FalseExpression, NamedTypeNode } from "assemblyscript/dist/assemblyscript.js";
1
+ import { FieldDeclaration, IdentifierExpression, StringLiteralExpression, IntegerLiteralExpression, FloatLiteralExpression, NullExpression, TrueExpression, FalseExpression, } from "assemblyscript/dist/assemblyscript.js";
2
2
  import { toString, isStdlib } from "visitor-as/dist/utils.js";
3
3
  import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js";
4
4
  import { Transform } from "assemblyscript/dist/transform.js";
5
- import chalk from "chalk";
6
- const json_types = ["Array", "string", "String", "u8", "i8", "u16", "i16", "u32", "i32", "u64", "i64", "f32", "f64", "bool", "boolean", "Map", "Date"];
7
5
  class JSONTransform extends BaseVisitor {
8
- types = json_types;
9
6
  schemasList = [];
10
7
  currentClass;
11
8
  sources = new Set();
12
- appendParentFields(node, schema, members) {
13
- if (node.extendsType) {
14
- if (schema.parent?.members) {
15
- for (let i = schema.parent.members.length - 1; i >= 0; i--) {
16
- const replace = schema.members.find((v) => v.name == schema.parent?.members[i]?.name);
17
- if (!replace) {
18
- members.unshift(schema.parent?.members[i].node);
19
- }
20
- }
21
- this.appendParentFields(schema.parent.node, schema, members);
22
- }
23
- }
24
- }
25
- handleEmptyClass(node, schema, members) {
26
- let SERIALIZE_RAW_EMPTY = '__SERIALIZE(): string {\n return "{}";\n}';
27
- let SERIALIZE_PRETTY_EMPTY = '__SERIALIZE_PRETTY(): string {\n return "{}";\n}';
28
- let INITIALIZE_EMPTY = "__INITIALIZE(): this {\n return this;\n}";
29
- let DESERIALIZE_EMPTY = "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n return false;\n}";
30
- if (process.env["JSON_DEBUG"]) {
31
- console.log(SERIALIZE_RAW_EMPTY);
32
- console.log(SERIALIZE_PRETTY_EMPTY);
33
- console.log(INITIALIZE_EMPTY);
34
- console.log(DESERIALIZE_EMPTY);
35
- }
36
- const SERIALIZE_RAW_METHOD_EMPTY = SimpleParser.parseClassMember(SERIALIZE_RAW_EMPTY, node);
37
- const SERIALIZE_PRETTY_METHOD_EMPTY = SimpleParser.parseClassMember(SERIALIZE_PRETTY_EMPTY, node);
38
- const INITIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(INITIALIZE_EMPTY, node);
39
- const DESERIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(DESERIALIZE_EMPTY, node);
40
- if (!node.members.find((v) => v.name.text == "__SERIALIZE"))
41
- node.members.push(SERIALIZE_RAW_METHOD_EMPTY);
42
- if (!node.members.find((v) => v.name.text == "__SERIALIZE_PRETTY"))
43
- node.members.push(SERIALIZE_PRETTY_METHOD_EMPTY);
44
- if (!node.members.find((v) => v.name.text == "__INITIALIZE"))
45
- node.members.push(INITIALIZE_METHOD_EMPTY);
46
- if (!node.members.find((v) => v.name.text == "__DESERIALIZE"))
47
- node.members.push(DESERIALIZE_METHOD_EMPTY);
48
- }
49
- filterMembers(members) {
50
- return members.filter((v) => v instanceof FieldDeclaration && !v.decorators?.find((v) => v.name.text == "omit"));
51
- }
9
+ visitMethodDeclaration() { }
52
10
  visitClassDeclaration(node) {
53
11
  if (!node.decorators?.length)
54
12
  return;
55
- if (!node.decorators.find((v) => v.name.text == "json" || v.name.text == "serializable"))
13
+ let found = false;
14
+ for (const decorator of node.decorators) {
15
+ const name = decorator.name.text;
16
+ if (name === "json" || name === "serializable") {
17
+ found = true;
18
+ break;
19
+ }
20
+ }
21
+ if (!found)
56
22
  return;
57
- this.types = json_types;
58
23
  const schema = new SchemaData();
59
24
  schema.node = node;
60
25
  schema.name = node.name.text;
26
+ const members = [
27
+ ...node.members.filter((v) => v.kind === 54),
28
+ ];
61
29
  if (node.extendsType) {
62
30
  schema.parent = this.schemasList.find((v) => v.name == node.extendsType?.name.identifier.text);
31
+ if (schema.parent?.members) {
32
+ for (let i = schema.parent.members.length - 1; i >= 0; i--) {
33
+ const replace = schema.members.find((v) => v.name == schema.parent?.members[i]?.name);
34
+ if (!replace) {
35
+ members.unshift(schema.parent?.members[i].node);
36
+ }
37
+ }
38
+ }
63
39
  }
64
- const _members = [...node.members];
65
- this.appendParentFields(node, schema, _members);
66
- const members = this.filterMembers(_members);
67
40
  if (!members.length) {
68
- this.handleEmptyClass(node, schema, members);
41
+ let SERIALIZE_RAW_EMPTY = '__SERIALIZE(): string {\n return "{}";\n}';
42
+ let INITIALIZE_EMPTY = "__INITIALIZE(): this {\n return this;\n}";
43
+ let DESERIALIZE_EMPTY = "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n return false;\n}";
44
+ if (process.env["JSON_DEBUG"]) {
45
+ console.log(SERIALIZE_RAW_EMPTY);
46
+ console.log(INITIALIZE_EMPTY);
47
+ console.log(DESERIALIZE_EMPTY);
48
+ }
49
+ const SERIALIZE_RAW_METHOD_EMPTY = SimpleParser.parseClassMember(SERIALIZE_RAW_EMPTY, node);
50
+ const INITIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(INITIALIZE_EMPTY, node);
51
+ const DESERIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(DESERIALIZE_EMPTY, node);
52
+ if (!node.members.find((v) => v.name.text == "__SERIALIZE"))
53
+ node.members.push(SERIALIZE_RAW_METHOD_EMPTY);
54
+ if (!node.members.find((v) => v.name.text == "__INITIALIZE"))
55
+ node.members.push(INITIALIZE_METHOD_EMPTY);
56
+ if (!node.members.find((v) => v.name.text == "__DESERIALIZE"))
57
+ node.members.push(DESERIALIZE_METHOD_EMPTY);
58
+ this.schemasList.push(schema);
69
59
  }
70
60
  for (const member of members) {
71
61
  const name = member.name;
62
+ if (!(member instanceof FieldDeclaration))
63
+ continue;
72
64
  if (!member.type) {
73
- throw new Error("Fields must be strongly typed! Found " + toString(member) + " at " + node.range.source.normalizedPath);
65
+ throw new Error("Fields must be strongly typed! Found " +
66
+ toString(member) +
67
+ " at " +
68
+ node.range.source.normalizedPath);
74
69
  }
75
70
  const type = toString(member.type);
76
71
  if (type.startsWith("(") && type.includes("=>"))
77
72
  continue;
78
73
  const value = member.initializer ? toString(member.initializer) : null;
79
- if (member.flags == 32 /* CommonFlags.Static */)
74
+ if (member.flags == 32)
80
75
  continue;
81
- if (member.flags === 512 /* CommonFlags.Private */)
76
+ if (member.flags === 512)
82
77
  continue;
83
- if (member.flags === 1024 /* CommonFlags.Protected */)
78
+ if (member.flags === 1024)
84
79
  continue;
85
80
  const mem = new Property();
86
81
  mem.name = name.text;
@@ -100,7 +95,8 @@ class JSONTransform extends BaseVisitor {
100
95
  switch (decoratorName) {
101
96
  case "alias": {
102
97
  if (!args.length)
103
- throw new Error("Expected 1 argument but got zero at @alias in " + node.range.source.normalizedPath);
98
+ throw new Error("Expected 1 argument but got zero at @alias in " +
99
+ node.range.source.normalizedPath);
104
100
  mem.alias = args[0];
105
101
  mem.flags.set(PropertyFlags.Alias, args);
106
102
  break;
@@ -111,7 +107,8 @@ class JSONTransform extends BaseVisitor {
111
107
  }
112
108
  case "omitif": {
113
109
  if (!decorator.args?.length)
114
- throw new Error("Expected 1 argument but got zero at @omitif in " + node.range.source.normalizedPath);
110
+ throw new Error("Expected 1 argument but got zero at @omitif in " +
111
+ node.range.source.normalizedPath);
115
112
  mem.flags.set(PropertyFlags.OmitIf, args);
116
113
  break;
117
114
  }
@@ -122,10 +119,22 @@ class JSONTransform extends BaseVisitor {
122
119
  }
123
120
  }
124
121
  }
125
- if (!mem.flags.get(PropertyFlags.Omit))
126
- mem.generate();
122
+ mem.generate(false);
127
123
  if (this.schemasList.find((v) => v.name == type)) {
128
- mem.initialize = "this." + name.text + " = changetype<nonnull<" + mem.type + ">>(__new(offsetof<nonnull<" + mem.type + ">>(), idof<nonnull<" + mem.type + ">>()));\n changetype<nonnull<" + mem.type + ">>(this." + name.text + ").__INITIALIZE()";
124
+ mem.initialize =
125
+ "this." +
126
+ name.text +
127
+ " = changetype<nonnull<" +
128
+ mem.type +
129
+ ">>(__new(offsetof<nonnull<" +
130
+ mem.type +
131
+ ">>(), idof<nonnull<" +
132
+ mem.type +
133
+ ">>()));\n changetype<nonnull<" +
134
+ mem.type +
135
+ ">>(this." +
136
+ name.text +
137
+ ").__INITIALIZE()";
129
138
  }
130
139
  else if (mem.value) {
131
140
  mem.initialize = "this." + name.text + " = " + mem.value;
@@ -137,7 +146,8 @@ class JSONTransform extends BaseVisitor {
137
146
  mem.initialize = "this." + name.text + ' = ""';
138
147
  }
139
148
  else if (type === "Array") {
140
- mem.initialize = "this." + name.text + " = instantiate<" + mem.type + ">()";
149
+ mem.initialize =
150
+ "this." + name.text + " = instantiate<" + mem.type + ">()";
141
151
  }
142
152
  else if (type === "bool" || type === "boolean") {
143
153
  mem.initialize = "this." + name.text + " = false";
@@ -145,7 +155,14 @@ class JSONTransform extends BaseVisitor {
145
155
  else if (type === "JSON.Raw") {
146
156
  mem.initialize = "this." + name.text + ' = ""';
147
157
  }
148
- else if (type === "u8" || type === "u16" || type === "u32" || type === "u64" || type === "i8" || type === "i16" || type === "i32" || type === "i64") {
158
+ else if (type === "u8" ||
159
+ type === "u16" ||
160
+ type === "u32" ||
161
+ type === "u64" ||
162
+ type === "i8" ||
163
+ type === "i16" ||
164
+ type === "i32" ||
165
+ type === "i64") {
149
166
  mem.initialize = "this." + name.text + " = 0";
150
167
  }
151
168
  else if (type === "f32" || type === "f64") {
@@ -160,14 +177,15 @@ class JSONTransform extends BaseVisitor {
160
177
  let indent = " ";
161
178
  if (!schema.members.length)
162
179
  return;
163
- let found = false;
164
- if (schema.members[0]?.flags.has(PropertyFlags.OmitNull) || schema.members[0]?.flags.has(PropertyFlags.OmitIf)) {
180
+ found = false;
181
+ if (schema.members[0]?.flags.has(PropertyFlags.OmitNull) ||
182
+ schema.members[0]?.flags.has(PropertyFlags.OmitIf)) {
165
183
  SERIALIZE_RAW += schema.members[0]?.serialize;
166
- SERIALIZE_PRETTY += "\\n" + indent + schema.members[0]?.serialize_pretty;
184
+ SERIALIZE_PRETTY += "\\n" + schema.members[0]?.serialize;
167
185
  }
168
186
  else {
169
187
  SERIALIZE_RAW += schema.members[0]?.serialize + ",";
170
- SERIALIZE_PRETTY += "\\n" + indent + schema.members[0]?.serialize_pretty + ",\\n";
188
+ SERIALIZE_PRETTY += "\\n" + schema.members[0]?.serialize + ",\\n";
171
189
  found = true;
172
190
  }
173
191
  if (schema.members[0]?.initialize)
@@ -176,21 +194,22 @@ class JSONTransform extends BaseVisitor {
176
194
  const member = schema.members[i];
177
195
  if (member.initialize)
178
196
  INITIALIZE += " " + member.initialize + ";\n";
179
- if (member.flags.has(PropertyFlags.Omit))
180
- continue;
181
- if (member.flags.has(PropertyFlags.OmitNull) || member.flags.has(PropertyFlags.OmitIf)) {
197
+ if (member.flags.has(PropertyFlags.OmitNull) ||
198
+ member.flags.has(PropertyFlags.OmitIf)) {
182
199
  SERIALIZE_RAW += member.serialize;
183
- SERIALIZE_PRETTY += member.serialize_pretty;
200
+ SERIALIZE_PRETTY += member.serialize;
184
201
  }
185
202
  else {
186
203
  SERIALIZE_RAW += member.serialize + ",";
187
- SERIALIZE_PRETTY += indent + member.serialize_pretty + ",\\n";
204
+ SERIALIZE_PRETTY += indent + member.serialize + ",\\n";
188
205
  found = true;
189
206
  }
190
207
  }
191
208
  if (found) {
192
- SERIALIZE_RAW += "`;\n store<u16>(changetype<usize>(out) + ((out.length - 1) << 1), 125);\n return out;\n}";
193
- SERIALIZE_PRETTY += "`;\n store<u32>(changetype<usize>(out) + ((out.length - 2) << 1), 8192010);\n return out;\n}";
209
+ SERIALIZE_RAW +=
210
+ "`;\n store<u16>(changetype<usize>(out) + ((out.length - 1) << 1), 125);\n return out;\n}";
211
+ SERIALIZE_PRETTY +=
212
+ "`;\n store<u32>(changetype<usize>(out) + ((out.length - 2) << 1), 8192010);\n return out;\n}";
194
213
  }
195
214
  else {
196
215
  SERIALIZE_RAW += "}`;\n return out;\n}";
@@ -219,29 +238,35 @@ class JSONTransform extends BaseVisitor {
219
238
  const _name = encodeKey(firstMember.alias || firstMember.name);
220
239
  if (_name.length === 1) {
221
240
  if (first) {
222
- DESERIALIZE += " if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
241
+ DESERIALIZE +=
242
+ " if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
223
243
  first = false;
224
244
  }
225
245
  else {
226
- DESERIALIZE += "else if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
246
+ DESERIALIZE +=
247
+ "else if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
227
248
  }
228
249
  }
229
250
  else if (_name.length === 2) {
230
251
  if (first) {
231
- DESERIALIZE += " if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
252
+ DESERIALIZE +=
253
+ " if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
232
254
  first = false;
233
255
  }
234
256
  else {
235
- DESERIALIZE += "else if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
257
+ DESERIALIZE +=
258
+ "else if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
236
259
  }
237
260
  }
238
261
  else if (_name.length === 4) {
239
262
  if (first) {
240
- DESERIALIZE += " if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
263
+ DESERIALIZE +=
264
+ " if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
241
265
  first = false;
242
266
  }
243
267
  else {
244
- DESERIALIZE += "else if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
268
+ DESERIALIZE +=
269
+ "else if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
245
270
  }
246
271
  }
247
272
  else {
@@ -271,7 +296,9 @@ class JSONTransform extends BaseVisitor {
271
296
  DESERIALIZE += ` if (${charCodeAt64(_name, 0)} === code) { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
272
297
  }
273
298
  else {
274
- DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + `else if (${charCodeAt64(_name, 0)} === code) {\n ${member.deserialize}\n return true;\n }\n`;
299
+ DESERIALIZE =
300
+ DESERIALIZE.slice(0, DESERIALIZE.length - 1) +
301
+ `else if (${charCodeAt64(_name, 0)} === code) {\n ${member.deserialize}\n return true;\n }\n`;
275
302
  }
276
303
  }
277
304
  else {
@@ -280,7 +307,9 @@ class JSONTransform extends BaseVisitor {
280
307
  DESERIALIZE += ` if (0 === memory.compare(changetype<usize>("${escapeQuote(escapeSlash(_name))}"), changetype<usize>(data) + (key_start << 1), ${_name.length << 1})) { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
281
308
  }
282
309
  else {
283
- DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else if (0 === memory.compare(changetype<usize>("${escapeQuote(escapeSlash(_name))}"), changetype<usize>(data) + (key_start << 1), ${_name.length << 1})) { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
310
+ DESERIALIZE =
311
+ DESERIALIZE.slice(0, DESERIALIZE.length - 1) +
312
+ ` else if (0 === memory.compare(changetype<usize>("${escapeQuote(escapeSlash(_name))}"), changetype<usize>(data) + (key_start << 1), ${_name.length << 1})) { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
284
313
  }
285
314
  }
286
315
  }
@@ -288,136 +317,78 @@ class JSONTransform extends BaseVisitor {
288
317
  DESERIALIZE += ` default: {\n return false;\n }\n }\n`;
289
318
  }
290
319
  else if (_name.length == 4) {
291
- DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else {\n return false;\n }\n`;
320
+ DESERIALIZE =
321
+ DESERIALIZE.slice(0, DESERIALIZE.length - 1) +
322
+ ` else {\n return false;\n }\n`;
292
323
  }
293
324
  else {
294
- DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else {\n return false;\n }\n`;
325
+ DESERIALIZE =
326
+ DESERIALIZE.slice(0, DESERIALIZE.length - 1) +
327
+ ` else {\n return false;\n }\n`;
295
328
  }
296
329
  DESERIALIZE += " } ";
297
330
  }
298
331
  DESERIALIZE += "\n return false;\n}";
299
- //console.log(sortedMembers);
300
332
  if (process.env["JSON_DEBUG"]) {
301
333
  console.log(SERIALIZE_RAW);
302
- console.log(SERIALIZE_PRETTY);
303
334
  console.log(INITIALIZE);
304
335
  console.log(DESERIALIZE);
305
336
  }
306
337
  const SERIALIZE_RAW_METHOD = SimpleParser.parseClassMember(SERIALIZE_RAW, node);
307
- const SERIALIZE_PRETTY_METHOD = SimpleParser.parseClassMember(SERIALIZE_PRETTY, node);
338
+ const DESERIALIZE_SAFE = DESERIALIZE.replaceAll("__DESERIALIZE", "__DESERIALIZE_SAFE");
308
339
  const INITIALIZE_METHOD = SimpleParser.parseClassMember(INITIALIZE, node);
309
340
  const DESERIALIZE_METHOD = SimpleParser.parseClassMember(DESERIALIZE, node);
341
+ const DESERIALIZE_SAFE_METHOD = SimpleParser.parseClassMember(DESERIALIZE_SAFE, node);
310
342
  if (!node.members.find((v) => v.name.text == "__SERIALIZE"))
311
343
  node.members.push(SERIALIZE_RAW_METHOD);
312
- if (!node.members.find((v) => v.name.text == "__SERIALIZE_PRETTY"))
313
- node.members.push(SERIALIZE_PRETTY_METHOD);
314
344
  if (!node.members.find((v) => v.name.text == "__INITIALIZE"))
315
345
  node.members.push(INITIALIZE_METHOD);
316
346
  if (!node.members.find((v) => v.name.text == "__DESERIALIZE"))
317
347
  node.members.push(DESERIALIZE_METHOD);
348
+ if (!node.members.find((v) => v.name.text == "__DESERIALIZE_SAFE"))
349
+ node.members.push(DESERIALIZE_SAFE_METHOD);
318
350
  this.schemasList.push(schema);
319
351
  }
320
352
  visitSource(node) {
321
353
  super.visitSource(node);
322
- // Only add the import statement to sources that have JSON decorated classes.
323
354
  if (!this.sources.has(node)) {
324
355
  return;
325
356
  }
326
357
  }
327
358
  }
328
359
  export default class Transformer extends Transform {
329
- // Trigger the transform after parse.
330
360
  afterParse(parser) {
331
- // Create new transform
332
361
  const transformer = new JSONTransform();
333
- // Sort the sources so that user scripts are visited last
334
362
  const sources = parser.sources
335
363
  .filter((source) => !isStdlib(source))
336
364
  .sort((_a, _b) => {
337
365
  const a = _a.internalPath;
338
366
  const b = _b.internalPath;
339
- if (a[0] !== "~" && b[0] === "~") {
340
- return 1;
341
- }
342
367
  if (a[0] === "~" && b[0] !== "~") {
343
368
  return -1;
344
369
  }
345
- return 0;
370
+ else if (a[0] !== "~" && b[0] === "~") {
371
+ return 1;
372
+ }
373
+ else {
374
+ return 0;
375
+ }
346
376
  });
347
- // Loop over every source
348
377
  for (const source of sources) {
349
- // Ignore all lib and std. Visit everything else.
350
378
  if (!isStdlib(source)) {
351
379
  transformer.visit(source);
352
380
  }
353
381
  }
354
- // Check that every parent and child class is hooked up correctly
355
382
  const schemas = transformer.schemasList;
356
383
  for (const schema of schemas) {
357
- checkInheritance(schema, schemas);
358
- const invalidType = checkTypeCorrectness(schema, schemas);
359
- if (invalidType) {
360
- logError(`Type ${invalidType.type} implemented in property ${invalidType.path} is not a JSON-compatible type!\nEither decorate it with @omit or fix it!`);
384
+ if (schema.parent) {
385
+ const parent = schemas.find((v) => v.name === schema.parent?.name);
386
+ if (!parent)
387
+ throw new Error(`Class ${schema.name} extends its parent class ${schema.parent}, but ${schema.parent} does not include a @json or @serializable decorator! Add the decorator and rebuild.`);
361
388
  }
362
389
  }
363
390
  }
364
391
  }
365
- function checkInheritance(schema, schemas) {
366
- if (!schema.parent && schema.node.extendsType) {
367
- if (schemas.find(v => v.node.name.text === schema.node.extendsType?.name.identifier.text))
368
- return;
369
- const extending = toString(schema.node.extendsType);
370
- logError(`Schema ${schema.name} extends ${extending}, but ${extending} does not include the @json decorator!`);
371
- }
372
- }
373
- function checkTypeCorrectness(schema, schemas) {
374
- const parent = schemas.find((v) => v.name === schema.parent?.name);
375
- const generic_types = [...(schema?.node.typeParameters?.map((v) => v.name.text) || []), ...(parent?.node.typeParameters?.map((v) => v.name.text) || [])];
376
- const member_types = [...(schema.members.map((v) => v.node.type.name.identifier.text) || [])];
377
- const scopeTypes = new Set([...json_types, ...generic_types, ...member_types]);
378
- for (const typ of member_types) {
379
- if (typ === "JSON")
380
- continue; // JSON.Raw, JSON.Box, JSON.Any, ect...
381
- if (json_types.includes(typ))
382
- continue;
383
- if (generic_types.includes(typ))
384
- continue;
385
- const check = schemas.find((v) => v.name == typ);
386
- if (!check)
387
- logError(`Type ${typ} is not a JSON compatible type or does not include the @json flag!`);
388
- }
389
- for (const member of schema.members) {
390
- const invalidType = checkType(schema, schemas, member.node.type, member, scopeTypes, schema.name);
391
- if (invalidType)
392
- logError(`Type ${invalidType.type} in ${invalidType.path} does not implement a JSON compatible type!\n${chalk.dim(` at ${member.node.range.source.normalizedPath.replace("~lib/", "./node_modules/")}`)}`);
393
- }
394
- return null;
395
- }
396
- function checkType(schema, schemas, typ, member, scopeTypes, path) {
397
- path += "." + member.name;
398
- if (schemas.find(v => v.node.name.text === typ.name.identifier.text))
399
- scopeTypes.add(typ.name.identifier.text);
400
- if (!scopeTypes.has(typ.name.identifier.text))
401
- return { type: toString(typ), path };
402
- if (typ.isNullable && isPrimitive(typ))
403
- return { type: toString(typ), path };
404
- if (typ.typeArguments?.length && typ.typeArguments?.length > 0) {
405
- for (const ty of typ.typeArguments.filter((v) => v instanceof NamedTypeNode)) {
406
- const check = checkType(schema, schemas, ty, member, scopeTypes, path);
407
- if (check)
408
- return { type: toString(typ), path };
409
- }
410
- }
411
- else {
412
- if (scopeTypes.has(typ.name.identifier.text))
413
- return null;
414
- }
415
- return null;
416
- }
417
- function logError(message) {
418
- console.log("\n" + chalk.bold.bgRed(" Error ") + chalk.dim(":") + " " + message + "\n");
419
- process.exit(1);
420
- }
421
392
  var PropertyFlags;
422
393
  (function (PropertyFlags) {
423
394
  PropertyFlags[PropertyFlags["Null"] = 0] = "Null";
@@ -434,13 +405,12 @@ class Property {
434
405
  value = null;
435
406
  flags = new Map();
436
407
  serialize = null;
437
- serialize_pretty = null;
438
408
  deserialize = null;
439
409
  initialize = null;
440
410
  node;
441
411
  right_s = "";
442
412
  right_d = "";
443
- generate() {
413
+ generate(safe) {
444
414
  const name = this.name;
445
415
  const escapedName = escapeString(JSON.stringify(this.alias || this.name));
446
416
  const type = this.type;
@@ -448,7 +418,7 @@ class Property {
448
418
  return;
449
419
  if (this.flags.has(PropertyFlags.JSON_Raw)) {
450
420
  if (this.flags.has(PropertyFlags.Null)) {
451
- this.right_s = "(this." + name + ' || "null")';
421
+ this.right_s = "(this." + name + " || \"null\")";
452
422
  this.right_d = "value_start === value_end - 4 && 30399761348886638 === load<u64>(changetype<usize>(data) + (value_start << 1)) ? null : data.substring(value_start, value_end)";
453
423
  }
454
424
  else {
@@ -458,24 +428,37 @@ class Property {
458
428
  }
459
429
  else {
460
430
  this.right_s = "__SERIALIZE<" + type + ">(this." + name + ")";
461
- this.right_d = "__DESERIALIZE<" + type + ">(data.substring(value_start, value_end))";
431
+ this.right_d =
432
+ (safe ? "__DESERIALIZE_SAFE" : "__DESERIALIZE") + "<" + type + ">(data.substring(value_start, value_end))";
462
433
  }
463
434
  if (this.flags.has(PropertyFlags.OmitIf)) {
464
435
  const condition = this.flags.get(PropertyFlags.OmitIf)[0];
465
436
  if (!condition)
466
437
  throw new Error("Could not find condition when using decorator @omitif! Provide at least one condition");
467
- this.serialize = "${" + condition + ' ? "" : \'' + escapedName + ":' + " + this.right_s + ' + ","}';
468
- this.serialize_pretty = "${" + condition + ' ? "" : \'' + escapedName + ": ' + " + this.right_s + ' + ","}';
438
+ this.serialize =
439
+ "${" +
440
+ condition +
441
+ ' ? "" : \'' +
442
+ escapedName +
443
+ ":' + " +
444
+ this.right_s +
445
+ ' + ","}';
469
446
  this.deserialize = "this." + name + " = " + this.right_d + ";";
470
447
  }
471
448
  else if (this.flags.has(PropertyFlags.OmitNull)) {
472
- this.serialize = "${changetype<usize>(this." + name + ") == <usize>0" + ' ? "" : \'' + escapedName + ":' + " + this.right_s + ' + ","}';
473
- this.serialize_pretty = "${changetype<usize>(this." + name + ") == <usize>0" + ' ? "" : \'' + escapedName + ": ' + " + this.right_s + ' + ","}';
449
+ this.serialize =
450
+ "${changetype<usize>(this." +
451
+ name +
452
+ ") == <usize>0" +
453
+ ' ? "" : \'' +
454
+ escapedName +
455
+ ":' + " +
456
+ this.right_s +
457
+ ' + ","}';
474
458
  this.deserialize = "this." + name + " = " + this.right_d + ";";
475
459
  }
476
460
  else {
477
461
  this.serialize = escapedName + ":${" + this.right_s + "}";
478
- this.serialize_pretty = escapedName + ": ${" + this.right_s + "}";
479
462
  this.deserialize = "this." + name + " = " + this.right_d + ";";
480
463
  }
481
464
  }
@@ -497,7 +480,10 @@ function charCodeAt64(data, offset) {
497
480
  const secondCharCode = BigInt(data.charCodeAt(offset + 1));
498
481
  const thirdCharCode = BigInt(data.charCodeAt(offset + 2));
499
482
  const fourthCharCode = BigInt(data.charCodeAt(offset + 3));
500
- const u64Value = (fourthCharCode << 48n) | (thirdCharCode << 32n) | (secondCharCode << 16n) | firstCharCode;
483
+ const u64Value = (fourthCharCode << 48n) |
484
+ (thirdCharCode << 32n) |
485
+ (secondCharCode << 16n) |
486
+ firstCharCode;
501
487
  return u64Value;
502
488
  }
503
489
  function encodeKey(key) {
@@ -542,7 +528,4 @@ function getArgs(args) {
542
528
  }
543
529
  return out;
544
530
  }
545
- function isPrimitive(type) {
546
- const primitives = new Set(["u8", "i8", "u16", "i16", "u32", "i32", "u64", "i64", "f32", "f64", "bool", "boolean"]);
547
- return primitives.has(type.name.identifier.text);
548
- }
531
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-as/transform",
3
- "version": "0.9.23",
3
+ "version": "0.9.25",
4
4
  "description": "The only JSON library you'll need for AssemblyScript. SIMD enabled",
5
5
  "main": "./lib/index.js",
6
6
  "author": "Jairus Tanaka",