json-as 1.1.19 → 1.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -89,6 +89,7 @@ export class Src {
89
89
  exports;
90
90
  nodeMap = new Map();
91
91
  classes = {};
92
+ enums = {};
92
93
  imports = [];
93
94
  constructor(source, sourceSet) {
94
95
  this.sourceSet = sourceSet;
@@ -108,6 +109,10 @@ export class Src {
108
109
  const classDeclaration = node;
109
110
  this.classes[this.qualifiedName(classDeclaration, path)] = classDeclaration;
110
111
  break;
112
+ case 52:
113
+ const enumDeclaration = node;
114
+ this.enums[this.qualifiedName(enumDeclaration, path)] = enumDeclaration;
115
+ break;
111
116
  case 42:
112
117
  const importStatement = node;
113
118
  this.imports.push(importStatement);
@@ -122,6 +127,9 @@ export class Src {
122
127
  getClass(qualifiedName) {
123
128
  return this.classes[qualifiedName] || null;
124
129
  }
130
+ getEnum(qualifiedName) {
131
+ return this.enums[qualifiedName] || null;
132
+ }
125
133
  getImportedClass(qualifiedName, parser) {
126
134
  for (const stmt of this.imports) {
127
135
  const externalSource = parser.sources.filter((src) => src.internalPath != this.internalPath).find((src) => src.internalPath == stmt.internalPath);
@@ -135,6 +143,19 @@ export class Src {
135
143
  }
136
144
  return null;
137
145
  }
146
+ getImportedEnum(qualifiedName, parser) {
147
+ for (const stmt of this.imports) {
148
+ const externalSource = parser.sources.filter((src) => src.internalPath != this.internalPath).find((src) => src.internalPath == stmt.internalPath);
149
+ if (!externalSource)
150
+ continue;
151
+ const source = this.sourceSet.get(externalSource);
152
+ const enumDeclaration = source.getEnum(qualifiedName);
153
+ if (enumDeclaration && enumDeclaration.flags & 2) {
154
+ return enumDeclaration;
155
+ }
156
+ }
157
+ return null;
158
+ }
138
159
  getFullPath(node) {
139
160
  return this.internalPath + "/" + this.getQualifiedName(node);
140
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -448,7 +448,7 @@ export class JSONTransform extends Visitor {
448
448
  if (member.node.type.isNullable) sortedMembers.null.push(member);
449
449
  if (isString(type) || type == "JSON.Raw") sortedMembers.string.push(member);
450
450
  else if (isBoolean(type) || type.startsWith("JSON.Box<bool")) sortedMembers.boolean.push(member);
451
- else if (isPrimitive(type) || type.startsWith("JSON.Box<")) sortedMembers.number.push(member);
451
+ else if (isPrimitive(type) || type.startsWith("JSON.Box<") || isEnum(type, this.sources.get(this.schema.node.range.source), this.parser)) sortedMembers.number.push(member);
452
452
  else if (isArray(type)) sortedMembers.array.push(member);
453
453
  /*else if (isStruct(type)) */ sortedMembers.object.push(member);
454
454
  // else console.warn("Could not determine type " + type + " for member " + member.name + " in class " + this.schema.name);
@@ -1414,6 +1414,10 @@ function isArray(type: string): boolean {
1414
1414
  return type.startsWith("Array<");
1415
1415
  }
1416
1416
 
1417
+ function isEnum(type: string, source: Src, parser: Parser): boolean {
1418
+ return source.getEnum(type) != null || source.getImportedEnum(type, parser) != null;
1419
+ }
1420
+
1417
1421
  export function stripNull(type: string): string {
1418
1422
  if (type.endsWith(" | null")) {
1419
1423
  return type.slice(0, type.length - 7);
@@ -1,4 +1,4 @@
1
- import { ClassDeclaration, Expression, FieldDeclaration, Source, NodeKind, Node, NamespaceDeclaration, DeclarationStatement, TypeName, Parser, ImportStatement, CommonFlags } from "assemblyscript/dist/assemblyscript.js";
1
+ import { ClassDeclaration, Expression, FieldDeclaration, Source, NodeKind, Node, NamespaceDeclaration, DeclarationStatement, TypeName, Parser, ImportStatement, CommonFlags, EnumDeclaration } from "assemblyscript/dist/assemblyscript.js";
2
2
  import { TypeAlias } from "./linkers/alias.js";
3
3
  import { stripNull } from "./index.js";
4
4
 
@@ -102,6 +102,7 @@ export class Src {
102
102
  public exports: Schema[];
103
103
  private nodeMap: Map<Node, NamespaceDeclaration[]> = new Map<Node, NamespaceDeclaration[]>();
104
104
  private classes: Record<string, ClassDeclaration> = {};
105
+ private enums: Record<string, EnumDeclaration> = {};
105
106
  private imports: ImportStatement[] = [];
106
107
 
107
108
  constructor(
@@ -130,6 +131,10 @@ export class Src {
130
131
  const classDeclaration = node as ClassDeclaration;
131
132
  this.classes[this.qualifiedName(classDeclaration, path)] = classDeclaration;
132
133
  break;
134
+ case NodeKind.EnumDeclaration:
135
+ const enumDeclaration = node as EnumDeclaration;
136
+ this.enums[this.qualifiedName(enumDeclaration, path)] = enumDeclaration;
137
+ break;
133
138
  case NodeKind.Import:
134
139
  const importStatement = node as ImportStatement;
135
140
  this.imports.push(importStatement);
@@ -157,6 +162,15 @@ export class Src {
157
162
  return this.classes[qualifiedName] || null;
158
163
  }
159
164
 
165
+ /**
166
+ * Get an enum declaration by its qualified name.
167
+ * @param qualifiedName Qualified name (eg. "Namespace.MyEnum")
168
+ * @returns Enum declaration or null if not found.
169
+ */
170
+ getEnum(qualifiedName: string): EnumDeclaration | null {
171
+ return this.enums[qualifiedName] || null;
172
+ }
173
+
160
174
  /**
161
175
  * Get imported class from other sources in the parser.
162
176
  * @param qualifiedName Qualified name of class.
@@ -177,6 +191,26 @@ export class Src {
177
191
  return null;
178
192
  }
179
193
 
194
+ /**
195
+ * Get imported enum from other sources in the parser.
196
+ * @param qualifiedName Qualified name of enum.
197
+ * @param parser AssemblyScript parser.
198
+ * @returns Enum declaration or null if not found.
199
+ */
200
+ getImportedEnum(qualifiedName: string, parser: Parser): EnumDeclaration | null {
201
+ for (const stmt of this.imports) {
202
+ const externalSource = parser.sources.filter((src) => src.internalPath != this.internalPath).find((src) => src.internalPath == stmt.internalPath);
203
+ if (!externalSource) continue;
204
+
205
+ const source = this.sourceSet.get(externalSource);
206
+ const enumDeclaration = source.getEnum(qualifiedName);
207
+ if (enumDeclaration && enumDeclaration.flags & CommonFlags.Export) {
208
+ return enumDeclaration;
209
+ }
210
+ }
211
+ return null;
212
+ }
213
+
180
214
  /**
181
215
  * Gets a unique path string to the node by combining the internalPath with
182
216
  * the qualified name of the node.
package/bench.js DELETED
@@ -1,83 +0,0 @@
1
- import { Bench } from "tinybench";
2
- // Trying a new benchmarking lib.
3
-
4
- // JavaScript Results
5
- // ┌─────────┬───────────────────────────┬─────────────┬────────────────────┬──────────┬─────────┐
6
- // │ (index) │ Task Name │ ops / sec │ Average Time(ns) │ Margin │ Samples │
7
- // ├─────────┼───────────────────────────┼─────────────┼────────────────────┼──────────┼─────────┤
8
- // │ 0 │ 'Stringify Object (Vec3)' │ '817,816' │ 1222.76 │ '±3.55%' │ 81782 │
9
- // │ 1 │ 'Parse Object (Vec3)' │ '726,115' │ 1377.19 │ '±3.21%' │ 72612 │
10
- // │ 2 │ 'Stringify Number Array' │ '1,104,036' │ 905.77 │ '±6.48%' │ 110404 │
11
- // │ 3 │ 'Parse Number Array' │ '1,114,053' │ 897.62 │ '±2.58%' │ 111406 │
12
- // │ 4 │ 'Stringify String' │ '1,565,716' │ 638.69 │ '±2.04%' │ 156572 │
13
- // │ 5 │ 'Parse String' │ '69,568' │ 14374.22 │ '±2.55%' │ 6957 │
14
- // └─────────┴───────────────────────────┴─────────────┴────────────────────┴──────────┴─────────┘
15
-
16
- // AssemblyScript Results (Runtime Minimal)
17
- // ┌─────────┬───────────────────────────┬─────────────┬────────────────────┬──────────┬─────────┐
18
- // │ (index) │ Task Name │ ops / sec │ Average Time(ns) │ Diff │ Samples │
19
- // ├─────────┼───────────────────────────┼─────────────┼────────────────────┼──────────┼─────────┤
20
- // │ 0 │ 'Stringify Object (Vec3)' │ '2,091,000' │ 417.22 │ -805ns │ ------- │
21
- // │ 1 │ 'Parse Object (Vec3)' │ '1,780,000' │ 539.02 │ -838ns │ ------- |
22
- // │ 2 │ 'Stringify Number Array' │ '1,920,000' │ 445.43 │ -460ns │ ------- │
23
- // │ 3 │ 'Parse Number Array' │ '1,660,000' │ 597.17 │ -300ns │ ------- │
24
- // │ 4 │ 'Stringify String' │ '1,280,000' │ 736.27 │ +97ns │ ------- │
25
- // │ 5 │ 'Parse String' │ '4,230,000' │ 239.21 │ -14135ns │ ------- │
26
- // └─────────┴───────────────────────────┴─────────────┴────────────────────┴──────────┴─────────┘
27
-
28
- const vec = {
29
- x: 3,
30
- y: 1,
31
- z: 8,
32
- };
33
-
34
- let data;
35
-
36
- const bench = new Bench({ time: 1000 })
37
- .add("serialize vec3", () => (data = JSON.stringify(vec)))
38
- .add("deserialize vec3", () => {
39
- data = JSON.parse('{"x":3,"y":1,"z":8}');
40
- })
41
- .add("serialize alphabet string", () => {
42
- data = JSON.stringify("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~`!@#$%^&*()-_=+{[}]|\\:;\"'?/>.<,'\"}");
43
- })
44
- .add("deserialize alphabet string", () => {
45
- data = JSON.parse('"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~`!@#$%^&*()-_=+{[}]|\\\\:;\\"\'?/>.<,\'\\"}"');
46
- }) /*
47
- .add("parse float", () => {
48
- data = JSON.parse("1.2345")
49
- })
50
- .add("stringify iny", () => {
51
- data = JSON.stringify(12345)
52
- })
53
- .add("parse int", () => {
54
- data = JSON.parse("12345")
55
- })
56
- .add("Stringify Object (Vec3)", () => {
57
- data = JSON.stringify(vec);
58
- })
59
-
60
- .add("Parse Object (Vec3)", () => {
61
- data = JSON.parse('{"x":0,"y":0,"z":0}');
62
- })
63
-
64
- .add("Stringify Number Array", () => {
65
- data = JSON.stringify([1, 2, 3]);
66
- })
67
-
68
- .add("Parse Number Array", () => {
69
- data = JSON.parse("[1,2,3]");
70
- })
71
-
72
- .add("Stringify String", () => {
73
- data = JSON.stringify('Hello "World!');
74
- })
75
-
76
- .add("Parse String", () => {
77
- data = JSON.stringify('hello "world abc');
78
- })*/
79
- .todo("unimplemented .add");
80
-
81
- await bench.run();
82
-
83
- console.table(bench.table());