json-as 1.1.13 → 1.1.14-preview.2

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.
@@ -16,13 +16,7 @@ let id = 0;
16
16
  const WRITE = process.env["JSON_WRITE"];
17
17
  const rawValue = process.env["JSON_DEBUG"];
18
18
 
19
- const DEBUG = rawValue === "true"
20
- ? 1
21
- : rawValue === "false" || rawValue === ""
22
- ? 0
23
- : isNaN(Number(rawValue))
24
- ? 0
25
- : Number(rawValue);
19
+ const DEBUG = rawValue === "true" ? 1 : rawValue === "false" || rawValue === "" ? 0 : isNaN(Number(rawValue)) ? 0 : Number(rawValue);
26
20
 
27
21
  const STRICT = process.env["JSON_STRICT"] && process.env["JSON_STRICT"] == "true";
28
22
 
@@ -49,7 +43,8 @@ class JSONTransform extends Visitor {
49
43
  const name = (<IdentifierExpression>decorator.name).text;
50
44
  return name === "json" || name === "serializable";
51
45
  })
52
- ) throw new Error("Class " + node.name.text + " is missing an @json or @serializable decorator in " + node.range.source.internalPath);
46
+ )
47
+ throw new Error("Class " + node.name.text + " is missing an @json or @serializable decorator in " + node.range.source.internalPath);
53
48
  this.visitClassDeclaration(node);
54
49
  }
55
50
  visitClassDeclaration(node: ClassDeclaration): void {
@@ -60,7 +55,8 @@ class JSONTransform extends Visitor {
60
55
  const name = (<IdentifierExpression>decorator.name).text;
61
56
  return name === "json" || name === "serializable";
62
57
  })
63
- ) return;
58
+ )
59
+ return;
64
60
 
65
61
  const source = node.range.source;
66
62
  if (!this.sources.has(source.internalPath)) {
@@ -85,7 +81,7 @@ class JSONTransform extends Visitor {
85
81
  const depSearch = schema.deps.find((v) => v.name == extendsName);
86
82
  if (depSearch) {
87
83
  if (DEBUG > 0) console.log("Found " + extendsName + " in dependencies of " + source.internalPath);
88
- if (!schema.deps.some(v => v.name == depSearch.name)) schema.deps.push(depSearch);
84
+ if (!schema.deps.some((v) => v.name == depSearch.name)) schema.deps.push(depSearch);
89
85
  schema.parent = depSearch;
90
86
  } else {
91
87
  const internalSearch = getClass(extendsName, source);
@@ -97,7 +93,7 @@ class JSONTransform extends Visitor {
97
93
  this.visitClassDeclaration(node);
98
94
  return;
99
95
  }
100
- const schem = this.schemas.get(internalSearch.range.source.internalPath)?.find(s => s.name == internalSearch.name.text);
96
+ const schem = this.schemas.get(internalSearch.range.source.internalPath)?.find((s) => s.name == internalSearch.name.text);
101
97
  if (!schem) throw new Error("Could not find schema for " + internalSearch.name.text + " in " + internalSearch.range.source.internalPath);
102
98
  schema.deps.push(schem);
103
99
  schema.parent = schem;
@@ -111,7 +107,7 @@ class JSONTransform extends Visitor {
111
107
  this.visitClassDeclaration(node);
112
108
  return;
113
109
  }
114
- const schem = this.schemas.get(externalSearch.range.source.internalPath)?.find(s => s.name == externalSearch.name.text);
110
+ const schem = this.schemas.get(externalSearch.range.source.internalPath)?.find((s) => s.name == externalSearch.name.text);
115
111
  if (!schem) throw new Error("Could not find schema for " + externalSearch.name.text + " in " + externalSearch.range.source.internalPath);
116
112
  schema.deps.push(schem);
117
113
  schema.parent = schem;
@@ -131,7 +127,7 @@ class JSONTransform extends Visitor {
131
127
 
132
128
  const getUnknownTypes = (type: string, types: string[] = []): string[] => {
133
129
  type = stripNull(type);
134
- type = this.src.aliases.find(v => stripNull(v.name) == type)?.getBaseType() || type;
130
+ type = this.src.aliases.find((v) => stripNull(v.name) == type)?.getBaseType() || type;
135
131
  if (type.startsWith("Array<")) {
136
132
  return getUnknownTypes(type.slice(6, -1));
137
133
  } else if (type.startsWith("Map<")) {
@@ -148,7 +144,7 @@ class JSONTransform extends Visitor {
148
144
  }
149
145
  types.push(type);
150
146
  return types;
151
- }
147
+ };
152
148
 
153
149
  for (const member of members) {
154
150
  const type = toString(member.type);
@@ -158,7 +154,7 @@ class JSONTransform extends Visitor {
158
154
  const depSearch = schema.deps.find((v) => v.name == unknownType);
159
155
  if (depSearch) {
160
156
  if (DEBUG > 0) console.log("Found " + unknownType + " in dependencies of " + source.internalPath);
161
- if (!schema.deps.some(v => v.name == depSearch.name)) schema.deps.push(depSearch);
157
+ if (!schema.deps.some((v) => v.name == depSearch.name)) schema.deps.push(depSearch);
162
158
  } else {
163
159
  const internalSearch = getClass(unknownType, source);
164
160
  if (internalSearch) {
@@ -169,7 +165,7 @@ class JSONTransform extends Visitor {
169
165
  this.visitClassDeclaration(node);
170
166
  return;
171
167
  }
172
- const schem = this.schemas.get(internalSearch.range.source.internalPath)?.find(s => s.name == internalSearch.name.text);
168
+ const schem = this.schemas.get(internalSearch.range.source.internalPath)?.find((s) => s.name == internalSearch.name.text);
173
169
  if (!schem) throw new Error("Could not find schema for " + internalSearch.name.text + " in " + internalSearch.range.source.internalPath);
174
170
  schema.deps.push(schem);
175
171
  } else {
@@ -182,7 +178,7 @@ class JSONTransform extends Visitor {
182
178
  this.visitClassDeclaration(node);
183
179
  return;
184
180
  }
185
- const schem = this.schemas.get(externalSearch.range.source.internalPath)?.find(s => s.name == externalSearch.name.text);
181
+ const schem = this.schemas.get(externalSearch.range.source.internalPath)?.find((s) => s.name == externalSearch.name.text);
186
182
  if (!schem) throw new Error("Could not find schema for " + externalSearch.name.text + " in " + externalSearch.range.source.internalPath);
187
183
  schema.deps.push(schem);
188
184
  }
@@ -255,7 +251,7 @@ class JSONTransform extends Visitor {
255
251
  for (const member of members) {
256
252
  if (!member.type) throwError("Fields must be strongly typed", node.range);
257
253
  let type = toString(member.type!);
258
- type = this.src.aliases.find(v => stripNull(v.name) == stripNull(type))?.getBaseType() || type;
254
+ type = this.src.aliases.find((v) => stripNull(v.name) == stripNull(type))?.getBaseType() || type;
259
255
 
260
256
  const name = member.name;
261
257
  const value = member.initializer ? toString(member.initializer!) : null;
@@ -441,8 +437,8 @@ class JSONTransform extends Visitor {
441
437
  else if (isBoolean(type) || type.startsWith("JSON.Box<bool")) sortedMembers.boolean.push(member);
442
438
  else if (isPrimitive(type) || type.startsWith("JSON.Box<")) sortedMembers.number.push(member);
443
439
  else if (isArray(type)) sortedMembers.array.push(member);
444
- else if (isStruct(type)) sortedMembers.object.push(member);
445
- else throw new Error("Could not determine type " + type + " for member " + member.name + " in class " + this.schema.name);
440
+ /*else */ if (isStruct(type)) sortedMembers.object.push(member);
441
+ // else throw new Error("Could not determine type " + type + " for member " + member.name + " in class " + this.schema.name);
446
442
  }
447
443
  }
448
444
 
@@ -469,7 +465,7 @@ class JSONTransform extends Visitor {
469
465
  DESERIALIZE += indent + " if (isKey) {\n";
470
466
  DESERIALIZE += indent + " keyStart = lastIndex;\n";
471
467
  DESERIALIZE += indent + " keyEnd = srcStart;\n";
472
- if (DEBUG > 1) DESERIALIZE += indent + " console.log(\"Key: \" + JSON.Util.ptrToStr(keyStart, keyEnd));\n";
468
+ if (DEBUG > 1) DESERIALIZE += indent + ' console.log("Key: " + JSON.Util.ptrToStr(keyStart, keyEnd));\n';
473
469
  DESERIALIZE += indent + " while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}\n";
474
470
  DESERIALIZE += indent + " if (code !== 58) throw new Error(\"Expected ':' after key at position \" + (srcEnd - srcStart).toString());\n";
475
471
  DESERIALIZE += indent + " isKey = false;\n";
@@ -607,7 +603,7 @@ class JSONTransform extends Visitor {
607
603
  if (members.some((m) => (m.alias || m.name).length << 1 > 8)) {
608
604
  DESERIALIZE += toMemCDecl(Math.max(...members.map((m) => (m.alias || m.name).length << 1)), " ");
609
605
  }
610
- }
606
+ };
611
607
 
612
608
  let mbElse = " ";
613
609
  if (!STRICT || sortedMembers.string.length) {
@@ -618,41 +614,45 @@ class JSONTransform extends Visitor {
618
614
  DESERIALIZE += " while (srcStart < srcEnd) {\n";
619
615
  DESERIALIZE += " const code = load<u16>(srcStart);\n";
620
616
  DESERIALIZE += " if (code == 34 && load<u16>(srcStart - 2) !== 92) {\n";
621
- if (DEBUG > 1) DESERIALIZE += " console.log(\"Value (string, " + (++id) + "): \" + JSON.Util.ptrToStr(lastIndex, srcStart + 2));";
622
- generateGroups(sortedMembers.string, (group) => {
623
- generateConsts(group);
624
- const first = group[0];
625
- const fName = first.alias || first.name;
626
- DESERIALIZE += indent + " if (" + (first.generic ? "isString<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
627
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), JSON.__deserialize<" + first.type + ">(lastIndex, srcStart + 2), offsetof<this>(" + JSON.stringify(first.name) + "));\n";
628
- DESERIALIZE += indent + " srcStart += 4;\n";
629
- DESERIALIZE += indent + " keyStart = 0;\n";
630
- DESERIALIZE += indent + " break;\n";
631
- DESERIALIZE += indent + " }";
632
-
633
- for (let i = 1; i < group.length; i++) {
634
- const mem = group[i];
635
- const memName = mem.alias || mem.name;
636
- DESERIALIZE += indent + " else if (" + (mem.generic ? "isString<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
637
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), JSON.__deserialize<" + mem.type + ">(lastIndex, srcStart + 2), offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
617
+ if (DEBUG > 1) DESERIALIZE += ' console.log("Value (string, ' + ++id + '): " + JSON.Util.ptrToStr(lastIndex, srcStart + 2));';
618
+ generateGroups(
619
+ sortedMembers.string,
620
+ (group) => {
621
+ generateConsts(group);
622
+ const first = group[0];
623
+ const fName = first.alias || first.name;
624
+ DESERIALIZE += indent + " if (" + (first.generic ? "isString<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
625
+ DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), JSON.__deserialize<" + first.type + ">(lastIndex, srcStart + 2), offsetof<this>(" + JSON.stringify(first.name) + "));\n";
638
626
  DESERIALIZE += indent + " srcStart += 4;\n";
639
627
  DESERIALIZE += indent + " keyStart = 0;\n";
640
628
  DESERIALIZE += indent + " break;\n";
641
629
  DESERIALIZE += indent + " }";
642
- }
643
630
 
644
- if (STRICT) {
645
- DESERIALIZE += " else {\n";
646
- DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
647
- DESERIALIZE += indent + " }\n";
648
- } else {
649
- DESERIALIZE += " else {\n";
650
- DESERIALIZE += indent + " srcStart += 4;\n";
651
- DESERIALIZE += indent + " keyStart = 0;\n";
652
- DESERIALIZE += indent + " break;\n";
653
- DESERIALIZE += indent + " }\n";
654
- }
655
- }, "string");
631
+ for (let i = 1; i < group.length; i++) {
632
+ const mem = group[i];
633
+ const memName = mem.alias || mem.name;
634
+ DESERIALIZE += indent + " else if (" + (mem.generic ? "isString<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
635
+ DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), JSON.__deserialize<" + mem.type + ">(lastIndex, srcStart + 2), offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
636
+ DESERIALIZE += indent + " srcStart += 4;\n";
637
+ DESERIALIZE += indent + " keyStart = 0;\n";
638
+ DESERIALIZE += indent + " break;\n";
639
+ DESERIALIZE += indent + " }";
640
+ }
641
+
642
+ if (STRICT) {
643
+ DESERIALIZE += " else {\n";
644
+ DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
645
+ DESERIALIZE += indent + " }\n";
646
+ } else {
647
+ DESERIALIZE += " else {\n";
648
+ DESERIALIZE += indent + " srcStart += 4;\n";
649
+ DESERIALIZE += indent + " keyStart = 0;\n";
650
+ DESERIALIZE += indent + " break;\n";
651
+ DESERIALIZE += indent + " }\n";
652
+ }
653
+ },
654
+ "string",
655
+ );
656
656
  DESERIALIZE += " }\n"; // Close break char check
657
657
  DESERIALIZE += " srcStart += 2;\n";
658
658
  DESERIALIZE += " }\n"; // Close char scan loop
@@ -667,43 +667,47 @@ class JSONTransform extends Visitor {
667
667
  DESERIALIZE += " while (srcStart < srcEnd) {\n";
668
668
  DESERIALIZE += " const code = load<u16>(srcStart);\n";
669
669
  DESERIALIZE += " if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {\n";
670
- if (DEBUG > 1) DESERIALIZE += " console.log(\"Value (number, " + (++id) + "): \" + JSON.Util.ptrToStr(lastIndex, srcStart));";
670
+ if (DEBUG > 1) DESERIALIZE += ' console.log("Value (number, ' + ++id + '): " + JSON.Util.ptrToStr(lastIndex, srcStart));';
671
671
  // DESERIALIZE += " console.log(JSON.Util.ptrToStr(keyStart,keyEnd) + \" = \" + load<u16>(keyStart).toString() + \" val \" + JSON.Util.ptrToStr(lastIndex, srcStart));\n";
672
672
 
673
- generateGroups(sortedMembers.number, (group) => {
674
- generateConsts(group);
675
- const first = group[0];
676
- const fName = first.alias || first.name;
677
- DESERIALIZE += indent + " if (" + (first.generic ? "(isInteger<" + first.type + ">() || isFloat<" + first.type + ">()) && " : "") + getComparision(fName) + ") { // " + fName + "\n";
678
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), JSON.__deserialize<" + first.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(first.name) + "));\n";
679
- DESERIALIZE += indent + " srcStart += 2;\n";
680
- DESERIALIZE += indent + " keyStart = 0;\n";
681
- DESERIALIZE += indent + " break;\n";
682
- DESERIALIZE += indent + " }";
683
-
684
- for (let i = 1; i < group.length; i++) {
685
- const mem = group[i];
686
- const memName = mem.alias || mem.name;
687
- DESERIALIZE += indent + " else if (" + (mem.generic ? "(isInteger<" + mem.type + ">() || isFloat<" + mem.type + ">()) && " : "") + getComparision(memName) + ") { // " + memName + "\n";
688
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), JSON.__deserialize<" + mem.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
673
+ generateGroups(
674
+ sortedMembers.number,
675
+ (group) => {
676
+ generateConsts(group);
677
+ const first = group[0];
678
+ const fName = first.alias || first.name;
679
+ DESERIALIZE += indent + " if (" + (first.generic ? "(isInteger<" + first.type + ">() || isFloat<" + first.type + ">()) && " : "") + getComparision(fName) + ") { // " + fName + "\n";
680
+ DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), JSON.__deserialize<" + first.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(first.name) + "));\n";
689
681
  DESERIALIZE += indent + " srcStart += 2;\n";
690
682
  DESERIALIZE += indent + " keyStart = 0;\n";
691
683
  DESERIALIZE += indent + " break;\n";
692
684
  DESERIALIZE += indent + " }";
693
- }
694
685
 
695
- if (STRICT) {
696
- DESERIALIZE += " else {\n";
697
- DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
698
- DESERIALIZE += indent + " }\n";
699
- } else {
700
- DESERIALIZE += " else {\n";
701
- DESERIALIZE += indent + " srcStart += 2;\n";
702
- DESERIALIZE += indent + " keyStart = 0;\n";
703
- DESERIALIZE += indent + " break;\n";
704
- DESERIALIZE += indent + " }\n";
705
- }
706
- }, "number");
686
+ for (let i = 1; i < group.length; i++) {
687
+ const mem = group[i];
688
+ const memName = mem.alias || mem.name;
689
+ DESERIALIZE += indent + " else if (" + (mem.generic ? "(isInteger<" + mem.type + ">() || isFloat<" + mem.type + ">()) && " : "") + getComparision(memName) + ") { // " + memName + "\n";
690
+ DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), JSON.__deserialize<" + mem.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
691
+ DESERIALIZE += indent + " srcStart += 2;\n";
692
+ DESERIALIZE += indent + " keyStart = 0;\n";
693
+ DESERIALIZE += indent + " break;\n";
694
+ DESERIALIZE += indent + " }";
695
+ }
696
+
697
+ if (STRICT) {
698
+ DESERIALIZE += " else {\n";
699
+ DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
700
+ DESERIALIZE += indent + " }\n";
701
+ } else {
702
+ DESERIALIZE += " else {\n";
703
+ DESERIALIZE += indent + " srcStart += 2;\n";
704
+ DESERIALIZE += indent + " keyStart = 0;\n";
705
+ DESERIALIZE += indent + " break;\n";
706
+ DESERIALIZE += indent + " }\n";
707
+ }
708
+ },
709
+ "number",
710
+ );
707
711
  DESERIALIZE += " }\n"; // Close break char check
708
712
  DESERIALIZE += " srcStart += 2;\n";
709
713
  DESERIALIZE += " }\n"; // Close char scan loop
@@ -724,40 +728,44 @@ class JSONTransform extends Visitor {
724
728
  DESERIALIZE += " } else if (code == 125) {\n";
725
729
  DESERIALIZE += " if (--depth == 0) {\n";
726
730
  DESERIALIZE += " srcStart += 2;\n";
727
- if (DEBUG > 1) DESERIALIZE += " console.log(\"Value (object, " + (++id) + "): \" + JSON.Util.ptrToStr(lastIndex, srcStart));";
731
+ if (DEBUG > 1) DESERIALIZE += ' console.log("Value (object, ' + ++id + '): " + JSON.Util.ptrToStr(lastIndex, srcStart));';
728
732
 
729
733
  indent = " ";
730
- generateGroups(sortedMembers.object, (group) => {
731
- generateConsts(group);
732
- const first = group[0];
733
- const fName = first.alias || first.name;
734
- DESERIALIZE += indent + " if (" + (first.generic ? "isDefined(out.__DESERIALIZE) &&" : "") + getComparision(fName) + ") { // " + fName + "\n";
735
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), JSON.__deserialize<" + first.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(first.name) + "));\n";
736
- DESERIALIZE += indent + " keyStart = 0;\n";
737
- DESERIALIZE += indent + " break;\n";
738
- DESERIALIZE += indent + " }";
739
-
740
- for (let i = 1; i < group.length; i++) {
741
- const mem = group[i];
742
- const memName = mem.alias || mem.name;
743
- DESERIALIZE += indent + " else if (" + (mem.generic ? "isDefined(out.__DESERIALIZE) &&" : "") + getComparision(memName) + ") { // " + memName + "\n";
744
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), JSON.__deserialize<" + mem.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
734
+ generateGroups(
735
+ sortedMembers.object,
736
+ (group) => {
737
+ generateConsts(group);
738
+ const first = group[0];
739
+ const fName = first.alias || first.name;
740
+ DESERIALIZE += indent + " if (" + (first.generic ? "isDefined(out.__DESERIALIZE) &&" : "") + getComparision(fName) + ") { // " + fName + "\n";
741
+ DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), JSON.__deserialize<" + first.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(first.name) + "));\n";
745
742
  DESERIALIZE += indent + " keyStart = 0;\n";
746
743
  DESERIALIZE += indent + " break;\n";
747
744
  DESERIALIZE += indent + " }";
748
- }
749
745
 
750
- if (STRICT) {
751
- DESERIALIZE += " else {\n";
752
- DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
753
- DESERIALIZE += indent + " }\n";
754
- } else {
755
- DESERIALIZE += " else {\n";
756
- DESERIALIZE += indent + " keyStart = 0;\n";
757
- DESERIALIZE += indent + " break;\n";
758
- DESERIALIZE += indent + " }\n";
759
- }
760
- }, "object");
746
+ for (let i = 1; i < group.length; i++) {
747
+ const mem = group[i];
748
+ const memName = mem.alias || mem.name;
749
+ DESERIALIZE += indent + " else if (" + (mem.generic ? "isDefined(out.__DESERIALIZE) &&" : "") + getComparision(memName) + ") { // " + memName + "\n";
750
+ DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), JSON.__deserialize<" + mem.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
751
+ DESERIALIZE += indent + " keyStart = 0;\n";
752
+ DESERIALIZE += indent + " break;\n";
753
+ DESERIALIZE += indent + " }";
754
+ }
755
+
756
+ if (STRICT) {
757
+ DESERIALIZE += " else {\n";
758
+ DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
759
+ DESERIALIZE += indent + " }\n";
760
+ } else {
761
+ DESERIALIZE += " else {\n";
762
+ DESERIALIZE += indent + " keyStart = 0;\n";
763
+ DESERIALIZE += indent + " break;\n";
764
+ DESERIALIZE += indent + " }\n";
765
+ }
766
+ },
767
+ "object",
768
+ );
761
769
  indent = "";
762
770
 
763
771
  DESERIALIZE += " }\n"; // Close break char check
@@ -780,40 +788,44 @@ class JSONTransform extends Visitor {
780
788
  DESERIALIZE += " } else if (code == 93) {\n";
781
789
  DESERIALIZE += " if (--depth == 0) {\n";
782
790
  DESERIALIZE += " srcStart += 2;\n";
783
- if (DEBUG > 1) DESERIALIZE += " console.log(\"Value (object, " + (++id) + "): \" + JSON.Util.ptrToStr(lastIndex, srcStart));";
791
+ if (DEBUG > 1) DESERIALIZE += ' console.log("Value (object, ' + ++id + '): " + JSON.Util.ptrToStr(lastIndex, srcStart));';
784
792
 
785
793
  indent = " ";
786
- generateGroups(sortedMembers.array, (group) => {
787
- generateConsts(group);
788
- const first = group[0];
789
- const fName = first.alias || first.name;
790
- DESERIALIZE += indent + " if (" + (first.generic ? "isArray<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
791
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), JSON.__deserialize<" + first.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(first.name) + "));\n";
792
- DESERIALIZE += indent + " keyStart = 0;\n";
793
- DESERIALIZE += indent + " break;\n";
794
- DESERIALIZE += indent + " }";
795
-
796
- for (let i = 1; i < group.length; i++) {
797
- const mem = group[i];
798
- const memName = mem.alias || mem.name;
799
- DESERIALIZE += indent + " else if (" + (mem.generic ? "isArray" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
800
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), JSON.__deserialize<" + mem.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
794
+ generateGroups(
795
+ sortedMembers.array,
796
+ (group) => {
797
+ generateConsts(group);
798
+ const first = group[0];
799
+ const fName = first.alias || first.name;
800
+ DESERIALIZE += indent + " if (" + (first.generic ? "isArray<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
801
+ DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), JSON.__deserialize<" + first.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(first.name) + "));\n";
801
802
  DESERIALIZE += indent + " keyStart = 0;\n";
802
803
  DESERIALIZE += indent + " break;\n";
803
804
  DESERIALIZE += indent + " }";
804
- }
805
805
 
806
- if (STRICT) {
807
- DESERIALIZE += " else {\n";
808
- DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
809
- DESERIALIZE += indent + " }\n";
810
- } else {
811
- DESERIALIZE += " else {\n";
812
- DESERIALIZE += indent + " keyStart = 0;\n";
813
- DESERIALIZE += indent + " break;\n";
814
- DESERIALIZE += indent + " }\n";
815
- }
816
- }, "array");
806
+ for (let i = 1; i < group.length; i++) {
807
+ const mem = group[i];
808
+ const memName = mem.alias || mem.name;
809
+ DESERIALIZE += indent + " else if (" + (mem.generic ? "isArray" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
810
+ DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), JSON.__deserialize<" + mem.type + ">(lastIndex, srcStart), offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
811
+ DESERIALIZE += indent + " keyStart = 0;\n";
812
+ DESERIALIZE += indent + " break;\n";
813
+ DESERIALIZE += indent + " }";
814
+ }
815
+
816
+ if (STRICT) {
817
+ DESERIALIZE += " else {\n";
818
+ DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
819
+ DESERIALIZE += indent + " }\n";
820
+ } else {
821
+ DESERIALIZE += " else {\n";
822
+ DESERIALIZE += indent + " keyStart = 0;\n";
823
+ DESERIALIZE += indent + " break;\n";
824
+ DESERIALIZE += indent + " }\n";
825
+ }
826
+ },
827
+ "array",
828
+ );
817
829
  indent = "";
818
830
 
819
831
  DESERIALIZE += " }\n"; // Close break char check
@@ -830,41 +842,43 @@ class JSONTransform extends Visitor {
830
842
 
831
843
  DESERIALIZE += " if (load<u64>(srcStart) == 28429475166421108) {\n";
832
844
  DESERIALIZE += " srcStart += 8;\n";
833
- if (DEBUG > 1) DESERIALIZE += " console.log(\"Value (bool, " + (++id) + "): \" + JSON.Util.ptrToStr(lastIndex, srcStart - 8));";
834
- generateGroups(sortedMembers.boolean, (group) => {
835
- generateConsts(group);
836
- const first = group[0];
837
- const fName = first.alias || first.name;
838
- DESERIALIZE += indent + " if (" + (first.generic ? "isBoolean<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
839
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
840
- DESERIALIZE += indent + " srcStart += 2;\n";
841
- DESERIALIZE += indent + " keyStart = 0;\n";
842
- DESERIALIZE += indent + " break;\n";
843
- DESERIALIZE += indent + " }";
844
-
845
- for (let i = 1; i < group.length; i++) {
846
- const mem = group[i];
847
- const memName = mem.alias || mem.name;
848
- DESERIALIZE += indent + " else if (" + (mem.generic ? "isBoolean<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
849
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
845
+ if (DEBUG > 1) DESERIALIZE += ' console.log("Value (bool, ' + ++id + '): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));';
846
+ generateGroups(
847
+ sortedMembers.boolean,
848
+ (group) => {
849
+ generateConsts(group);
850
+ const first = group[0];
851
+ const fName = first.alias || first.name;
852
+ 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";
850
854
  DESERIALIZE += indent + " srcStart += 2;\n";
851
855
  DESERIALIZE += indent + " keyStart = 0;\n";
852
856
  DESERIALIZE += indent + " break;\n";
853
857
  DESERIALIZE += indent + " }";
854
- }
855
858
 
856
- if (STRICT) {
857
- DESERIALIZE += " else {\n";
858
- DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
859
- DESERIALIZE += indent + " }\n";
860
- } else {
861
- DESERIALIZE += " else { \n";
862
- DESERIALIZE += indent + " srcStart += 2;\n";
863
- DESERIALIZE += indent + " keyStart = 0;\n";
864
- DESERIALIZE += indent + " break;\n";
865
- DESERIALIZE += indent + " }\n";
866
- }
867
- },
859
+ for (let i = 1; i < group.length; i++) {
860
+ const mem = group[i];
861
+ const memName = mem.alias || mem.name;
862
+ 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";
864
+ DESERIALIZE += indent + " srcStart += 2;\n";
865
+ DESERIALIZE += indent + " keyStart = 0;\n";
866
+ DESERIALIZE += indent + " break;\n";
867
+ DESERIALIZE += indent + " }";
868
+ }
869
+
870
+ if (STRICT) {
871
+ DESERIALIZE += " else {\n";
872
+ DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
873
+ DESERIALIZE += indent + " }\n";
874
+ } else {
875
+ DESERIALIZE += " else { \n";
876
+ DESERIALIZE += indent + " srcStart += 2;\n";
877
+ DESERIALIZE += indent + " keyStart = 0;\n";
878
+ DESERIALIZE += indent + " break;\n";
879
+ DESERIALIZE += indent + " }\n";
880
+ }
881
+ },
868
882
  "boolean",
869
883
  );
870
884
 
@@ -881,42 +895,44 @@ class JSONTransform extends Visitor {
881
895
 
882
896
  DESERIALIZE += " if (load<u64>(srcStart, 2) == 28429466576093281) {\n";
883
897
  DESERIALIZE += " srcStart += 10;\n";
884
- if (DEBUG > 1) DESERIALIZE += " console.log(\"Value (bool, " + (++id) + "): \" + JSON.Util.ptrToStr(lastIndex, srcStart - 10));";
885
- generateGroups(sortedMembers.boolean, (group) => {
886
- generateConsts(group);
887
-
888
- const first = group[0];
889
- const fName = first.alias || first.name;
890
- DESERIALIZE += indent + " if (" + (first.generic ? "isBoolean<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
891
- DESERIALIZE += indent + " store<" + first.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
892
- DESERIALIZE += indent + " srcStart += 2;\n";
893
- DESERIALIZE += indent + " keyStart = 0;\n";
894
- DESERIALIZE += indent + " break;\n";
895
- DESERIALIZE += indent + " }";
896
-
897
- for (let i = 1; i < group.length; i++) {
898
- const mem = group[i];
899
- const memName = mem.alias || mem.name;
900
- DESERIALIZE += indent + " else if (" + (mem.generic ? "isBoolean<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
901
- DESERIALIZE += indent + " store<" + mem.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
898
+ if (DEBUG > 1) DESERIALIZE += ' console.log("Value (bool, ' + ++id + '): " + JSON.Util.ptrToStr(lastIndex, srcStart - 10));';
899
+ generateGroups(
900
+ sortedMembers.boolean,
901
+ (group) => {
902
+ generateConsts(group);
903
+
904
+ const first = group[0];
905
+ const fName = first.alias || first.name;
906
+ 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";
902
908
  DESERIALIZE += indent + " srcStart += 2;\n";
903
909
  DESERIALIZE += indent + " keyStart = 0;\n";
904
910
  DESERIALIZE += indent + " break;\n";
905
911
  DESERIALIZE += indent + " }";
906
- }
907
912
 
908
- if (STRICT) {
909
- DESERIALIZE += " else {\n";
910
- DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
911
- DESERIALIZE += indent + " }\n";
912
- } else {
913
- DESERIALIZE += " else { \n";
914
- DESERIALIZE += indent + " srcStart += 2;\n";
915
- DESERIALIZE += indent + " keyStart = 0;\n";
916
- DESERIALIZE += indent + " break;\n";
917
- DESERIALIZE += indent + " }\n";
918
- }
919
- },
913
+ for (let i = 1; i < group.length; i++) {
914
+ const mem = group[i];
915
+ const memName = mem.alias || mem.name;
916
+ 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";
918
+ DESERIALIZE += indent + " srcStart += 2;\n";
919
+ DESERIALIZE += indent + " keyStart = 0;\n";
920
+ DESERIALIZE += indent + " break;\n";
921
+ DESERIALIZE += indent + " }";
922
+ }
923
+
924
+ if (STRICT) {
925
+ DESERIALIZE += " else {\n";
926
+ DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
927
+ DESERIALIZE += indent + " }\n";
928
+ } else {
929
+ DESERIALIZE += " else { \n";
930
+ DESERIALIZE += indent + " srcStart += 2;\n";
931
+ DESERIALIZE += indent + " keyStart = 0;\n";
932
+ DESERIALIZE += indent + " break;\n";
933
+ DESERIALIZE += indent + " }\n";
934
+ }
935
+ },
920
936
  "boolean",
921
937
  );
922
938
 
@@ -934,42 +950,44 @@ class JSONTransform extends Visitor {
934
950
 
935
951
  DESERIALIZE += " if (load<u64>(srcStart) == 30399761348886638) {\n";
936
952
  DESERIALIZE += " srcStart += 8;\n";
937
- if (DEBUG > 1) DESERIALIZE += " console.log(\"Value (null, " + (++id) + "): \" + JSON.Util.ptrToStr(lastIndex, srcStart - 8));";
938
- generateGroups(sortedMembers.null, (group) => {
939
- generateConsts(group);
940
-
941
- const first = group[0];
942
- const fName = first.alias || first.name;
943
- DESERIALIZE += indent + " if (" + (first.generic ? "isNullable<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
944
- DESERIALIZE += indent + " store<usize>(changetype<usize>(out), 0, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
945
- DESERIALIZE += indent + " srcStart += 2;\n";
946
- DESERIALIZE += indent + " keyStart = 0;\n";
947
- DESERIALIZE += indent + " break;\n";
948
- DESERIALIZE += indent + " }";
949
-
950
- for (let i = 1; i < group.length; i++) {
951
- const mem = group[i];
952
- const memName = mem.alias || mem.name;
953
- DESERIALIZE += indent + " else if (" + (mem.generic ? "isNullable<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
954
- DESERIALIZE += indent + " store<usize>(changetype<usize>(out), 0, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
953
+ if (DEBUG > 1) DESERIALIZE += ' console.log("Value (null, ' + ++id + '): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));';
954
+ generateGroups(
955
+ sortedMembers.null,
956
+ (group) => {
957
+ generateConsts(group);
958
+
959
+ const first = group[0];
960
+ const fName = first.alias || first.name;
961
+ DESERIALIZE += indent + " if (" + (first.generic ? "isNullable<" + first.type + ">() && " : "") + getComparision(fName) + ") { // " + fName + "\n";
962
+ DESERIALIZE += indent + " store<usize>(changetype<usize>(out), 0, offsetof<this>(" + JSON.stringify(first.name) + "));\n";
955
963
  DESERIALIZE += indent + " srcStart += 2;\n";
956
964
  DESERIALIZE += indent + " keyStart = 0;\n";
957
965
  DESERIALIZE += indent + " break;\n";
958
966
  DESERIALIZE += indent + " }";
959
- }
960
967
 
961
- if (STRICT) {
962
- DESERIALIZE += " else {\n";
963
- DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
964
- DESERIALIZE += indent + " }\n";
965
- } else {
966
- DESERIALIZE += " else { \n";
967
- DESERIALIZE += indent + " srcStart += 2;\n";
968
- DESERIALIZE += indent + " keyStart = 0;\n";
969
- DESERIALIZE += indent + " break;\n";
970
- DESERIALIZE += indent + " }\n";
971
- }
972
- },
968
+ for (let i = 1; i < group.length; i++) {
969
+ const mem = group[i];
970
+ const memName = mem.alias || mem.name;
971
+ DESERIALIZE += indent + " else if (" + (mem.generic ? "isNullable<" + mem.type + ">() && " : "") + getComparision(memName) + ") { // " + memName + "\n";
972
+ DESERIALIZE += indent + " store<usize>(changetype<usize>(out), 0, offsetof<this>(" + JSON.stringify(mem.name) + "));\n";
973
+ DESERIALIZE += indent + " srcStart += 2;\n";
974
+ DESERIALIZE += indent + " keyStart = 0;\n";
975
+ DESERIALIZE += indent + " break;\n";
976
+ DESERIALIZE += indent + " }";
977
+ }
978
+
979
+ if (STRICT) {
980
+ DESERIALIZE += " else {\n";
981
+ DESERIALIZE += indent + ' throw new Error("Unexpected key value pair in JSON object \'" + JSON.Util.ptrToStr(keyStart, keyEnd) + ":" + JSON.Util.ptrToStr(lastIndex, srcStart) + "\' at position " + (srcEnd - srcStart).toString());\n';
982
+ DESERIALIZE += indent + " }\n";
983
+ } else {
984
+ DESERIALIZE += " else { \n";
985
+ DESERIALIZE += indent + " srcStart += 2;\n";
986
+ DESERIALIZE += indent + " keyStart = 0;\n";
987
+ DESERIALIZE += indent + " break;\n";
988
+ DESERIALIZE += indent + " }\n";
989
+ }
990
+ },
973
991
  "null",
974
992
  );
975
993
 
@@ -1077,98 +1095,41 @@ class JSONTransform extends Visitor {
1077
1095
  super.visitSource(node);
1078
1096
  }
1079
1097
  addImports(node: Source): void {
1080
- const baseDir = path.resolve(
1081
- fileURLToPath(import.meta.url),
1082
- "..",
1083
- "..",
1084
- "..",
1085
- );
1098
+ const baseDir = path.resolve(fileURLToPath(import.meta.url), "..", "..", "..");
1086
1099
  const pkgPath = path.join(this.baseCWD, "node_modules");
1087
1100
  const isLibrary = existsSync(path.join(pkgPath, "json-as"));
1088
1101
  let fromPath = node.range.source.normalizedPath;
1089
1102
 
1090
- fromPath = fromPath.startsWith("~lib/")
1091
- ? existsSync(
1092
- path.join(pkgPath, fromPath.slice(5, fromPath.indexOf("/", 5))),
1093
- )
1094
- ? path.join(pkgPath, fromPath.slice(5))
1095
- : fromPath
1096
- : path.join(this.baseCWD, fromPath);
1103
+ fromPath = fromPath.startsWith("~lib/") ? (existsSync(path.join(pkgPath, fromPath.slice(5, fromPath.indexOf("/", 5)))) ? path.join(pkgPath, fromPath.slice(5)) : fromPath) : path.join(this.baseCWD, fromPath);
1097
1104
 
1098
1105
  const bsImport = this.imports.find((i) => i.declarations?.find((d) => d.foreignName.text == "bs" || d.name.text == "bs"));
1099
1106
  const jsonImport = this.imports.find((i) => i.declarations?.find((d) => d.foreignName.text == "JSON" || d.name.text == "JSON"));
1100
1107
 
1101
- let bsRel = removeExtension(
1102
- path.posix.join(
1103
- ...path
1104
- .relative(path.dirname(fromPath), path.join(baseDir, "lib", "as-bs"))
1105
- .split(path.sep),
1106
- ),
1107
- );
1108
-
1109
- let jsRel = removeExtension(
1110
- path.posix.join(
1111
- ...path
1112
- .relative(path.dirname(fromPath), path.join(baseDir, "assembly", "index"))
1113
- .split(path.sep),
1114
- ),
1115
- );
1108
+ let bsRel = removeExtension(path.posix.join(...path.relative(path.dirname(fromPath), path.join(baseDir, "lib", "as-bs")).split(path.sep)));
1109
+
1110
+ let jsRel = removeExtension(path.posix.join(...path.relative(path.dirname(fromPath), path.join(baseDir, "assembly", "index")).split(path.sep)));
1116
1111
 
1117
1112
  if (bsRel.includes("node_modules" + path.sep + "json-as")) {
1118
- bsRel =
1119
- "json-as" +
1120
- bsRel.slice(
1121
- bsRel.indexOf("node_modules" + path.sep + "json-as") + 20,
1122
- )
1123
- } else if (
1124
- !bsRel.startsWith(".") &&
1125
- !bsRel.startsWith("/") &&
1126
- !bsRel.startsWith("json-as")
1127
- ) {
1113
+ bsRel = "json-as" + bsRel.slice(bsRel.indexOf("node_modules" + path.sep + "json-as") + 20);
1114
+ } else if (!bsRel.startsWith(".") && !bsRel.startsWith("/") && !bsRel.startsWith("json-as")) {
1128
1115
  bsRel = "./" + bsRel;
1129
1116
  }
1130
1117
 
1131
1118
  if (jsRel.includes("node_modules" + path.sep + "json-as")) {
1132
- jsRel =
1133
- "json-as" +
1134
- jsRel.slice(
1135
- jsRel.indexOf("node_modules" + path.sep + "json-as") + 20,
1136
- );
1137
- } else if (
1138
- !jsRel.startsWith(".") &&
1139
- !jsRel.startsWith("/") &&
1140
- !jsRel.startsWith("json-as")
1141
- ) {
1119
+ jsRel = "json-as" + jsRel.slice(jsRel.indexOf("node_modules" + path.sep + "json-as") + 20);
1120
+ } else if (!jsRel.startsWith(".") && !jsRel.startsWith("/") && !jsRel.startsWith("json-as")) {
1142
1121
  jsRel = "./" + jsRel;
1143
1122
  }
1144
1123
 
1145
1124
  if (!bsImport) {
1146
- const replaceNode = Node.createImportStatement(
1147
- [Node.createImportDeclaration(
1148
- Node.createIdentifierExpression("bs", node.range, false),
1149
- null,
1150
- node.range
1151
- )
1152
- ],
1153
- Node.createStringLiteralExpression(bsRel, node.range),
1154
- node.range
1155
- );
1125
+ const replaceNode = Node.createImportStatement([Node.createImportDeclaration(Node.createIdentifierExpression("bs", node.range, false), null, node.range)], Node.createStringLiteralExpression(bsRel, node.range), node.range);
1156
1126
  node.range.source.statements.unshift(replaceNode);
1157
1127
  if (DEBUG > 0) console.log("Added import: " + toString(replaceNode) + " to " + node.range.source.normalizedPath + "\n");
1158
1128
  }
1159
1129
 
1160
1130
  if (!jsonImport) {
1161
1131
  const replaceNode = Node.createImportStatement(
1162
- [Node.createImportDeclaration(
1163
- Node.createIdentifierExpression(
1164
- "JSON",
1165
- node.range,
1166
- false
1167
- ),
1168
- null,
1169
- node.range
1170
- )
1171
- ],
1132
+ [Node.createImportDeclaration(Node.createIdentifierExpression("JSON", node.range, false), null, node.range)],
1172
1133
  Node.createStringLiteralExpression(jsRel, node.range), // Ensure POSIX-style path for 'assembly'
1173
1134
  node.range,
1174
1135
  );