json-as 1.0.0-alpha.1 → 1.0.0-alpha.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.
Files changed (36) hide show
  1. package/.gitmodules +0 -0
  2. package/CHANGELOG +11 -0
  3. package/README.md +3 -2
  4. package/assembly/__benches__/misc.bench.ts +0 -19
  5. package/assembly/deserialize/simple/object.ts +2 -3
  6. package/assembly/index.ts +2 -7
  7. package/assembly/serialize/simd/string.ts +1 -1
  8. package/assembly/serialize/simple/array.ts +1 -1
  9. package/assembly/serialize/simple/bool.ts +1 -1
  10. package/assembly/serialize/simple/date.ts +1 -1
  11. package/assembly/serialize/simple/float.ts +1 -1
  12. package/assembly/serialize/simple/integer.ts +1 -1
  13. package/assembly/serialize/simple/map.ts +1 -1
  14. package/assembly/serialize/simple/string.ts +2 -2
  15. package/assembly/test.ts +8 -13
  16. package/modules/as-bs/LICENSE +21 -0
  17. package/modules/as-bs/README.md +95 -0
  18. package/modules/{bs → as-bs/assembly}/index.ts +11 -12
  19. package/modules/as-bs/assembly/tsconfig.json +97 -0
  20. package/modules/as-bs/index.ts +1 -0
  21. package/modules/as-bs/package.json +32 -0
  22. package/package.json +4 -5
  23. package/transform/lib/builder.js +1262 -1340
  24. package/transform/lib/index.js +512 -572
  25. package/transform/lib/index.js.map +1 -1
  26. package/transform/lib/linker.js +10 -12
  27. package/transform/lib/types.js +19 -18
  28. package/transform/lib/types.js.map +1 -1
  29. package/transform/lib/util.js +34 -34
  30. package/transform/lib/visitor.js +526 -529
  31. package/transform/package.json +2 -1
  32. package/transform/src/index.ts +19 -8
  33. package/transform/src/types.ts +1 -0
  34. package/modules/tsconfig.json +0 -8
  35. package/transform/lib/index.old.js +0 -404
  36. package/transform/lib/index.old.js.map +0 -1
@@ -1,3 +1,4 @@
1
1
  {
2
- "main": "./lib/index.js"
2
+ "main": "./lib/index.js",
3
+ "type": "module"
3
4
  }
@@ -137,7 +137,7 @@ class JSONTransform extends Visitor {
137
137
 
138
138
  let SERIALIZE = "__SERIALIZE(ptr: usize): void {\n";
139
139
  let INITIALIZE = "@inline __INITIALIZE(): this {\n";
140
- let DESERIALIZE = "__DESERIALIZE(keyStart: usize, keyEnd: usize, valStart: usize, valEnd: usize, ptr: usize): void {\n switch (keyEnd - keyStart) {\n";
140
+ let DESERIALIZE = "__DESERIALIZE(keyStart: usize, keyEnd: usize, valStart: usize, valEnd: usize, ptr: usize): void {\n switch (<u32>keyEnd - <u32>keyStart) {\n";
141
141
  let ALLOCATE = "@inline __ALLOCATE(): void {\n";
142
142
 
143
143
  indent = " ";
@@ -151,6 +151,17 @@ class JSONTransform extends Visitor {
151
151
  SERIALIZE += indent + "bs.offset += 2;\n";
152
152
  }
153
153
 
154
+ for (const member of this.schema.members) {
155
+ const nonNullType = member.type.replace(" | null", "");
156
+ if (!isPrimitive(nonNullType)) {
157
+ const schema = this.schemas.find((v) => v.name == nonNullType);
158
+ if (schema && !this.schema.deps.includes(schema)) {
159
+ this.schema.deps.push(schema);
160
+ this.schema.byteSize += schema.byteSize;
161
+ }
162
+ }
163
+ }
164
+
154
165
  let isPure = this.schema.static;
155
166
  let isRegular = isPure;
156
167
  let isFirst = true;
@@ -214,7 +225,7 @@ class JSONTransform extends Visitor {
214
225
  const arg = member.flags.get(PropertyFlags.OmitIf) as FunctionExpression;
215
226
  // @ts-ignore: type
216
227
  arg.declaration.signature.returnType.name = Node.createSimpleTypeName("boolean", arg.declaration.signature.returnType.name.range);
217
- SERIALIZE += indent + `if ((${toString(member.flags.get(PropertyFlags.OmitIf))})(this)) {\n`;
228
+ SERIALIZE += indent + `if (!(${toString(member.flags.get(PropertyFlags.OmitIf))})(this)) {\n`;
218
229
  } else {
219
230
  SERIALIZE += indent + `if (${toString(member.flags.get(PropertyFlags.OmitIf))}) {\n`;
220
231
  }
@@ -400,7 +411,7 @@ class JSONTransform extends Visitor {
400
411
  addRequiredImports(node: ClassDeclaration): void {
401
412
  // if (!this.imports.find((i) => i.declarations.find((d) => d.foreignName.text == "bs"))) {
402
413
  // if (!this.bsImport) {
403
- // this.bsImport = 'import { bs } from "as-bs"';
414
+ // this.bsImport = "import { bs } from \"as-bs\"";
404
415
  // if (process.env["JSON_DEBUG"]) console.log("Added as-bs import: " + this.bsImport + "\n");
405
416
  // }
406
417
  // }
@@ -408,7 +419,7 @@ class JSONTransform extends Visitor {
408
419
  const __filename = fileURLToPath(import.meta.url);
409
420
  const __dirname = path.dirname(__filename);
410
421
 
411
- let relativePath = path.relative(path.dirname(node.range.source.normalizedPath), path.resolve(__dirname, "../../modules/bs/index.ts"));
422
+ let relativePath = path.relative(path.dirname(node.range.source.normalizedPath), path.resolve(__dirname, "../../modules/as-bs/"));
412
423
 
413
424
  if (!relativePath.startsWith(".") && !relativePath.startsWith("/")) relativePath = "./" + relativePath;
414
425
  // if (!existsSync(relativePath)) {
@@ -416,9 +427,9 @@ class JSONTransform extends Visitor {
416
427
  // }
417
428
 
418
429
  const txt = `import { bs } from "${relativePath}";`;
419
- if (!this.jsonImport) {
420
- this.jsonImport = txt;
421
- if (process.env["JSON_DEBUG"]) console.log("Added bs import: " + txt + "\n");
430
+ if (!this.bsImport) {
431
+ this.bsImport = txt;
432
+ if (process.env["JSON_DEBUG"]) console.log("Added as-bs import: " + txt + "\n");
422
433
  }
423
434
  }
424
435
 
@@ -441,7 +452,7 @@ class JSONTransform extends Visitor {
441
452
  }
442
453
  }
443
454
 
444
- getStores(data: string, simd: boolean = true): string[] {
455
+ getStores(data: string, simd: boolean = false): string[] {
445
456
  const out: string[] = [];
446
457
  const sizes = strToNum(data, simd);
447
458
  let offset = 0;
@@ -24,4 +24,5 @@ export class Schema {
24
24
  public node!: ClassDeclaration;
25
25
  public needsLink: string | null = null;
26
26
  public byteSize: number = 0;
27
+ public deps: Schema[] = [];
27
28
  }
@@ -1,8 +0,0 @@
1
- {
2
- "extends": "assemblyscript/std/assembly.json",
3
- "include": ["./**/*.ts"],
4
- "compilerOptions": {
5
- "experimentalDecorators": true,
6
- "emitDecoratorMetadata": true
7
- }
8
- }
@@ -1,404 +0,0 @@
1
- import { FieldDeclaration, IdentifierExpression, StringLiteralExpression, IntegerLiteralExpression, FloatLiteralExpression, NullExpression, TrueExpression, FalseExpression } from "assemblyscript/dist/assemblyscript.js";
2
- import { toString, isStdlib } from "visitor-as/dist/utils.js";
3
- import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js";
4
- import { Transform } from "assemblyscript/dist/transform.js";
5
- class JSONTransform extends BaseVisitor {
6
- schemasList = [];
7
- currentClass;
8
- sources = new Set();
9
- visitMethodDeclaration() {}
10
- visitClassDeclaration(node) {
11
- if (!node.decorators?.length) return;
12
- let found = false;
13
- for (const decorator of node.decorators) {
14
- const name = decorator.name.text;
15
- if (name === "json" || name === "serializable") {
16
- found = true;
17
- break;
18
- }
19
- }
20
- if (!found) return;
21
- const schema = new SchemaData();
22
- schema.node = node;
23
- schema.name = node.name.text;
24
- const members = [...node.members.filter((v) => v.kind === 54)];
25
- if (node.extendsType) {
26
- schema.parent = this.schemasList.find((v) => v.name == node.extendsType?.name.identifier.text);
27
- if (schema.parent?.members) {
28
- for (let i = schema.parent.members.length - 1; i >= 0; i--) {
29
- const replace = schema.members.find((v) => v.name == schema.parent?.members[i]?.name);
30
- if (!replace) {
31
- members.unshift(schema.parent?.members[i].node);
32
- }
33
- }
34
- }
35
- }
36
- if (!members.length) {
37
- let SERIALIZE_RAW_EMPTY = '__SERIALIZE(): string {\n return "{}";\n}';
38
- let INITIALIZE_EMPTY = "__INITIALIZE(): this {\n return this;\n}";
39
- let DESERIALIZE_EMPTY = "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n return false;\n}";
40
- if (process.env["JSON_DEBUG"]) {
41
- console.log(SERIALIZE_RAW_EMPTY);
42
- console.log(INITIALIZE_EMPTY);
43
- console.log(DESERIALIZE_EMPTY);
44
- }
45
- const SERIALIZE_RAW_METHOD_EMPTY = SimpleParser.parseClassMember(SERIALIZE_RAW_EMPTY, node);
46
- const INITIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(INITIALIZE_EMPTY, node);
47
- const DESERIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(DESERIALIZE_EMPTY, node);
48
- if (!node.members.find((v) => v.name.text == "__SERIALIZE")) node.members.push(SERIALIZE_RAW_METHOD_EMPTY);
49
- if (!node.members.find((v) => v.name.text == "__INITIALIZE")) node.members.push(INITIALIZE_METHOD_EMPTY);
50
- if (!node.members.find((v) => v.name.text == "__DESERIALIZE")) node.members.push(DESERIALIZE_METHOD_EMPTY);
51
- this.schemasList.push(schema);
52
- }
53
- for (const member of members) {
54
- const name = member.name;
55
- if (!(member instanceof FieldDeclaration)) continue;
56
- if (!member.type) {
57
- throw new Error("Fields must be strongly typed! Found " + toString(member) + " at " + node.range.source.normalizedPath);
58
- }
59
- const type = toString(member.type);
60
- if (type.startsWith("(") && type.includes("=>")) continue;
61
- const value = member.initializer ? toString(member.initializer) : null;
62
- if (member.flags == 32) continue;
63
- if (member.flags === 512) continue;
64
- if (member.flags === 1024) continue;
65
- const mem = new Property();
66
- mem.name = name.text;
67
- mem.type = type;
68
- mem.value = value;
69
- mem.node = member;
70
- if (type.includes("JSON.Raw")) {
71
- mem.flags.set(PropertyFlags.JSON_Raw, []);
72
- }
73
- if (member.type.isNullable) {
74
- mem.flags.set(PropertyFlags.Null, []);
75
- }
76
- if (member.decorators) {
77
- for (const decorator of member.decorators) {
78
- const decoratorName = decorator.name.text;
79
- const args = getArgs(decorator.args);
80
- switch (decoratorName) {
81
- case "alias": {
82
- if (!args.length) throw new Error("Expected 1 argument but got zero at @alias in " + node.range.source.normalizedPath);
83
- mem.alias = args[0];
84
- mem.flags.set(PropertyFlags.Alias, args);
85
- break;
86
- }
87
- case "omit": {
88
- mem.flags.set(PropertyFlags.Omit, args);
89
- break;
90
- }
91
- case "omitif": {
92
- if (!decorator.args?.length) throw new Error("Expected 1 argument but got zero at @omitif in " + node.range.source.normalizedPath);
93
- mem.flags.set(PropertyFlags.OmitIf, args);
94
- break;
95
- }
96
- case "omitnull": {
97
- mem.flags.set(PropertyFlags.OmitNull, args);
98
- break;
99
- }
100
- }
101
- }
102
- }
103
- mem.generate(false);
104
- if (this.schemasList.find((v) => v.name == type)) {
105
- 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()";
106
- } else if (mem.value) {
107
- mem.initialize = "this." + name.text + " = " + mem.value;
108
- } else if (type === "Map") {
109
- mem.initialize = "this." + name.text + " = new " + mem.type + "()";
110
- } else if (type === "string") {
111
- mem.initialize = "this." + name.text + ' = ""';
112
- } else if (type === "Array") {
113
- mem.initialize = "this." + name.text + " = instantiate<" + mem.type + ">()";
114
- } else if (type === "bool" || type === "boolean") {
115
- mem.initialize = "this." + name.text + " = false";
116
- } else if (type === "JSON.Raw") {
117
- mem.initialize = "this." + name.text + ' = ""';
118
- } else if (type === "u8" || type === "u16" || type === "u32" || type === "u64" || type === "i8" || type === "i16" || type === "i32" || type === "i64") {
119
- mem.initialize = "this." + name.text + " = 0";
120
- } else if (type === "f32" || type === "f64") {
121
- mem.initialize = "this." + name.text + " = 0.0";
122
- }
123
- schema.members.push(mem);
124
- }
125
- let SERIALIZE_RAW = "__SERIALIZE(): string {\n let out = `{";
126
- let SERIALIZE_PRETTY = "__SERIALIZE_PRETTY(): string {\n let out = `{";
127
- let INITIALIZE = "__INITIALIZE(): this {\n";
128
- let DESERIALIZE = "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n const len = key_end - key_start;\n";
129
- let indent = " ";
130
- if (!schema.members.length) return;
131
- found = false;
132
- if (schema.members[0]?.flags.has(PropertyFlags.OmitNull) || schema.members[0]?.flags.has(PropertyFlags.OmitIf)) {
133
- SERIALIZE_RAW += schema.members[0]?.serialize;
134
- SERIALIZE_PRETTY += "\\n" + schema.members[0]?.serialize;
135
- } else {
136
- SERIALIZE_RAW += schema.members[0]?.serialize + ",";
137
- SERIALIZE_PRETTY += "\\n" + schema.members[0]?.serialize + ",\\n";
138
- found = true;
139
- }
140
- if (schema.members[0]?.initialize) INITIALIZE += " " + schema.members[0]?.initialize + ";\n";
141
- for (let i = 1; i < schema.members.length; i++) {
142
- const member = schema.members[i];
143
- if (member.initialize) INITIALIZE += " " + member.initialize + ";\n";
144
- if (member.flags.has(PropertyFlags.OmitNull) || member.flags.has(PropertyFlags.OmitIf)) {
145
- SERIALIZE_RAW += member.serialize;
146
- SERIALIZE_PRETTY += member.serialize;
147
- } else {
148
- SERIALIZE_RAW += member.serialize + ",";
149
- SERIALIZE_PRETTY += indent + member.serialize + ",\\n";
150
- found = true;
151
- }
152
- }
153
- if (found) {
154
- SERIALIZE_RAW += "`;\n store<u16>(changetype<usize>(out) + ((out.length - 1) << 1), 125);\n return out;\n}";
155
- SERIALIZE_PRETTY += "`;\n store<u32>(changetype<usize>(out) + ((out.length - 2) << 1), 8192010);\n return out;\n}";
156
- } else {
157
- SERIALIZE_RAW += "}`;\n return out;\n}";
158
- SERIALIZE_PRETTY += "}`;\n return out;\n}";
159
- }
160
- INITIALIZE += " return this;\n}";
161
- const sortedMembers = [];
162
- const _sorted = schema.members.sort((a, b) => (a.alias?.length || a.name.length) - (b.alias?.length || b.name.length));
163
- let len = -1;
164
- let offset = -1;
165
- for (let i = 0; i < _sorted.length; i++) {
166
- const member = _sorted[i];
167
- const _name = member.alias || member.name;
168
- if (_name.length === len) {
169
- sortedMembers[offset]?.push(member);
170
- } else {
171
- sortedMembers.push([member]);
172
- len = _name.length;
173
- offset++;
174
- }
175
- }
176
- let first = true;
177
- for (const memberSet of sortedMembers) {
178
- const firstMember = memberSet[0];
179
- const _name = encodeKey(firstMember.alias || firstMember.name);
180
- if (_name.length === 1) {
181
- if (first) {
182
- DESERIALIZE += " if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
183
- first = false;
184
- } else {
185
- DESERIALIZE += "else if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
186
- }
187
- } else if (_name.length === 2) {
188
- if (first) {
189
- DESERIALIZE += " if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
190
- first = false;
191
- } else {
192
- DESERIALIZE += "else if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
193
- }
194
- } else if (_name.length === 4) {
195
- if (first) {
196
- DESERIALIZE += " if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
197
- first = false;
198
- } else {
199
- DESERIALIZE += "else if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
200
- }
201
- } else {
202
- if (first) {
203
- DESERIALIZE += " if (" + _name.length + " === len) {\n";
204
- first = false;
205
- } else {
206
- DESERIALIZE += "else if (" + _name.length + " === len) {\n";
207
- }
208
- }
209
- let f = true;
210
- for (let i = 0; i < memberSet.length; i++) {
211
- const member = memberSet[i];
212
- if (!member.deserialize) continue;
213
- const _name = encodeKey(member.alias || member.name);
214
- if (_name.length === 1) {
215
- DESERIALIZE += ` case ${_name.charCodeAt(0)}: { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
216
- } else if (_name.length === 2) {
217
- DESERIALIZE += ` case ${charCodeAt32(_name, 0)}: { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
218
- } else if (_name.length === 4) {
219
- if (f) {
220
- f = false;
221
- DESERIALIZE += ` if (${charCodeAt64(_name, 0)} === code) { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
222
- } else {
223
- DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + `else if (${charCodeAt64(_name, 0)} === code) {\n ${member.deserialize}\n return true;\n }\n`;
224
- }
225
- } else {
226
- if (f) {
227
- f = false;
228
- 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`;
229
- } else {
230
- 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`;
231
- }
232
- }
233
- }
234
- if (_name.length < 3) {
235
- DESERIALIZE += ` default: {\n return false;\n }\n }\n`;
236
- } else if (_name.length == 4) {
237
- DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else {\n return false;\n }\n`;
238
- } else {
239
- DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else {\n return false;\n }\n`;
240
- }
241
- DESERIALIZE += " } ";
242
- }
243
- DESERIALIZE += "\n return false;\n}";
244
- if (process.env["JSON_DEBUG"]) {
245
- console.log(SERIALIZE_RAW);
246
- console.log(INITIALIZE);
247
- console.log(DESERIALIZE);
248
- }
249
- const SERIALIZE_RAW_METHOD = SimpleParser.parseClassMember(SERIALIZE_RAW, node);
250
- const DESERIALIZE_SAFE = DESERIALIZE.replaceAll("__DESERIALIZE", "__DESERIALIZE_SAFE");
251
- const INITIALIZE_METHOD = SimpleParser.parseClassMember(INITIALIZE, node);
252
- const DESERIALIZE_METHOD = SimpleParser.parseClassMember(DESERIALIZE, node);
253
- const DESERIALIZE_SAFE_METHOD = SimpleParser.parseClassMember(DESERIALIZE_SAFE, node);
254
- if (!node.members.find((v) => v.name.text == "__SERIALIZE")) node.members.push(SERIALIZE_RAW_METHOD);
255
- if (!node.members.find((v) => v.name.text == "__INITIALIZE")) node.members.push(INITIALIZE_METHOD);
256
- if (!node.members.find((v) => v.name.text == "__DESERIALIZE")) node.members.push(DESERIALIZE_METHOD);
257
- if (!node.members.find((v) => v.name.text == "__DESERIALIZE_SAFE")) node.members.push(DESERIALIZE_SAFE_METHOD);
258
- this.schemasList.push(schema);
259
- }
260
- visitSource(node) {
261
- super.visitSource(node);
262
- if (!this.sources.has(node)) {
263
- return;
264
- }
265
- }
266
- }
267
- export default class Transformer extends Transform {
268
- afterParse(parser) {
269
- const transformer = new JSONTransform();
270
- const sources = parser.sources
271
- .filter((source) => !isStdlib(source))
272
- .sort((_a, _b) => {
273
- const a = _a.internalPath;
274
- const b = _b.internalPath;
275
- if (a[0] === "~" && b[0] !== "~") {
276
- return -1;
277
- } else if (a[0] !== "~" && b[0] === "~") {
278
- return 1;
279
- } else {
280
- return 0;
281
- }
282
- });
283
- for (const source of sources) {
284
- if (!isStdlib(source)) {
285
- transformer.visit(source);
286
- }
287
- }
288
- const schemas = transformer.schemasList;
289
- for (const schema of schemas) {
290
- if (schema.parent) {
291
- const parent = schemas.find((v) => v.name === schema.parent?.name);
292
- if (!parent) 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.`);
293
- }
294
- }
295
- }
296
- }
297
- var PropertyFlags;
298
- (function (PropertyFlags) {
299
- PropertyFlags[(PropertyFlags["Null"] = 0)] = "Null";
300
- PropertyFlags[(PropertyFlags["Omit"] = 1)] = "Omit";
301
- PropertyFlags[(PropertyFlags["OmitNull"] = 2)] = "OmitNull";
302
- PropertyFlags[(PropertyFlags["OmitIf"] = 3)] = "OmitIf";
303
- PropertyFlags[(PropertyFlags["Alias"] = 4)] = "Alias";
304
- PropertyFlags[(PropertyFlags["JSON_Raw"] = 5)] = "JSON_Raw";
305
- })(PropertyFlags || (PropertyFlags = {}));
306
- class Property {
307
- name = "";
308
- alias = null;
309
- type = "";
310
- value = null;
311
- flags = new Map();
312
- serialize = null;
313
- deserialize = null;
314
- initialize = null;
315
- node;
316
- right_s = "";
317
- right_d = "";
318
- generate(safe) {
319
- const name = this.name;
320
- const escapedName = escapeString(JSON.stringify(this.alias || this.name));
321
- const type = this.type;
322
- if (this.flags.has(PropertyFlags.Omit)) return;
323
- if (this.flags.has(PropertyFlags.JSON_Raw)) {
324
- if (this.flags.has(PropertyFlags.Null)) {
325
- this.right_s = "(this." + name + ' || "null")';
326
- this.right_d = "value_start === value_end - 4 && 30399761348886638 === load<u64>(changetype<usize>(data) + (value_start << 1)) ? null : data.substring(value_start, value_end)";
327
- } else {
328
- this.right_s = "this." + name;
329
- this.right_d = "data.substring(value_start, value_end);";
330
- }
331
- } else {
332
- this.right_s = "__SERIALIZE<" + type + ">(this." + name + ")";
333
- this.right_d = (safe ? "__DESERIALIZE_SAFE" : "__DESERIALIZE") + "<" + type + ">(data.substring(value_start, value_end))";
334
- }
335
- if (this.flags.has(PropertyFlags.OmitIf)) {
336
- const condition = this.flags.get(PropertyFlags.OmitIf)[0];
337
- if (!condition) throw new Error("Could not find condition when using decorator @omitif! Provide at least one condition");
338
- this.serialize = "${" + condition + ' ? "" : \'' + escapedName + ":' + " + this.right_s + ' + ","}';
339
- this.deserialize = "this." + name + " = " + this.right_d + ";";
340
- } else if (this.flags.has(PropertyFlags.OmitNull)) {
341
- this.serialize = "${changetype<usize>(this." + name + ") == <usize>0" + ' ? "" : \'' + escapedName + ":' + " + this.right_s + ' + ","}';
342
- this.deserialize = "this." + name + " = " + this.right_d + ";";
343
- } else {
344
- this.serialize = escapedName + ":${" + this.right_s + "}";
345
- this.deserialize = "this." + name + " = " + this.right_d + ";";
346
- }
347
- }
348
- }
349
- class SchemaData {
350
- name = "";
351
- members = [];
352
- parent = null;
353
- node;
354
- }
355
- function charCodeAt32(data, offset) {
356
- return (data.charCodeAt(offset + 1) << 16) | data.charCodeAt(offset);
357
- }
358
- function charCodeAt64(data, offset) {
359
- if (offset + 3 >= data.length) {
360
- throw new Error("The string must have at least 4 characters from the specified offset.");
361
- }
362
- const firstCharCode = BigInt(data.charCodeAt(offset));
363
- const secondCharCode = BigInt(data.charCodeAt(offset + 1));
364
- const thirdCharCode = BigInt(data.charCodeAt(offset + 2));
365
- const fourthCharCode = BigInt(data.charCodeAt(offset + 3));
366
- const u64Value = (fourthCharCode << 48n) | (thirdCharCode << 32n) | (secondCharCode << 16n) | firstCharCode;
367
- return u64Value;
368
- }
369
- function encodeKey(key) {
370
- const data = JSON.stringify(key);
371
- return data.slice(1, data.length - 1);
372
- }
373
- function escapeString(data) {
374
- return data.replace(/\\/g, "\\\\").replace(/\`/g, "\\`");
375
- }
376
- function escapeSlash(data) {
377
- return data.replace(/\\/g, "\\\\").replace(/\`/g, "\\`");
378
- }
379
- function escapeQuote(data) {
380
- return data.replace(/\"/g, '\\"');
381
- }
382
- function getArgs(args) {
383
- if (!args) return [];
384
- let out = [];
385
- for (const arg of args) {
386
- if (arg instanceof StringLiteralExpression) {
387
- out.push(arg.value);
388
- } else if (arg instanceof IntegerLiteralExpression) {
389
- out.push(i64_to_string(arg.value));
390
- } else if (arg instanceof FloatLiteralExpression) {
391
- out.push(arg.value.toString());
392
- } else if (arg instanceof NullExpression) {
393
- out.push(arg.text);
394
- } else if (arg instanceof TrueExpression) {
395
- out.push(arg.text);
396
- } else if (arg instanceof FalseExpression) {
397
- out.push(arg.text);
398
- } else if (arg instanceof IdentifierExpression) {
399
- out.push(arg.text);
400
- }
401
- }
402
- return out;
403
- }
404
- //# sourceMappingURL=index.old.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.old.js","sourceRoot":"","sources":["../src/index.old.ts"],"names":[],"mappings":"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"}