json-as 0.9.1 → 0.9.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.
- package/CHANGELOG +3 -1
- package/assembly/deserialize/array/array.ts +4 -4
- package/assembly/deserialize/array/bool.ts +4 -4
- package/assembly/deserialize/array/float.ts +3 -3
- package/assembly/deserialize/array/integer.ts +3 -3
- package/assembly/deserialize/array/map.ts +4 -4
- package/assembly/deserialize/array/object.ts +4 -4
- package/assembly/deserialize/array/string.ts +4 -4
- package/assembly/deserialize/array.ts +1 -1
- package/assembly/deserialize/bool.ts +4 -4
- package/assembly/deserialize/box.ts +2 -2
- package/assembly/deserialize/date.ts +1 -1
- package/assembly/deserialize/float.ts +1 -1
- package/assembly/deserialize/integer.ts +1 -1
- package/assembly/deserialize/map.ts +43 -43
- package/assembly/deserialize/object.ts +25 -25
- package/assembly/deserialize/string.ts +33 -33
- package/assembly/index.ts +218 -36
- package/assembly/serialize/array.ts +16 -16
- package/assembly/serialize/bool.ts +6 -1
- package/assembly/serialize/box.ts +4 -3
- package/assembly/serialize/date.ts +1 -1
- package/assembly/serialize/float.ts +1 -1
- package/assembly/serialize/integer.ts +1 -1
- package/assembly/serialize/map.ts +7 -7
- package/assembly/serialize/object.ts +1 -1
- package/assembly/serialize/string.ts +19 -10
- package/assembly/src/chars.ts +37 -35
- package/assembly/src/sink.ts +17 -17
- package/assembly/src/util.ts +15 -15
- package/package.json +2 -2
- package/transform/lib/index.js +8 -8
- package/transform/package.json +1 -1
- package/transform/src/index.ts +8 -8
package/assembly/src/chars.ts
CHANGED
|
@@ -1,74 +1,76 @@
|
|
|
1
1
|
// Characters
|
|
2
2
|
// @ts-ignore = Decorator is valid here
|
|
3
|
-
|
|
3
|
+
export const COMMA = 44;
|
|
4
4
|
// @ts-ignore = Decorator is valid here
|
|
5
|
-
|
|
5
|
+
export const QUOTE = 34;
|
|
6
6
|
// @ts-ignore = Decorator is valid here
|
|
7
|
-
|
|
7
|
+
export const BACK_SLASH = 92;
|
|
8
8
|
// @ts-ignore: Decorator is valid here
|
|
9
|
-
|
|
9
|
+
export const FWD_SLASH = 47;
|
|
10
10
|
// @ts-ignore: Decorator is valid here
|
|
11
|
-
|
|
11
|
+
export const BRACE_LEFT = 123;
|
|
12
12
|
// @ts-ignore: Decorator is valid here
|
|
13
|
-
|
|
13
|
+
export const BRACE_RIGHT = 125;
|
|
14
14
|
// @ts-ignore: Decorator is valid here
|
|
15
|
-
|
|
15
|
+
export const BRACKET_LEFT = 91;
|
|
16
16
|
// @ts-ignore: Decorator is valid here
|
|
17
|
-
|
|
17
|
+
export const BRACKET_RIGHT = 93;
|
|
18
18
|
// @ts-ignore: Decorator is valid here
|
|
19
|
-
|
|
19
|
+
export const COLON = 58;
|
|
20
20
|
// @ts-ignore: Decorator is valid here
|
|
21
|
-
|
|
21
|
+
export const CHAR_T = 116;
|
|
22
22
|
// @ts-ignore: Decorator is valid here
|
|
23
|
-
|
|
23
|
+
export const CHAR_R = 114;
|
|
24
24
|
// @ts-ignore: Decorator is valid here
|
|
25
|
-
|
|
25
|
+
export const CHAR_U = 117;
|
|
26
26
|
// @ts-ignore: Decorator is valid here
|
|
27
|
-
|
|
27
|
+
export const CHAR_E = 101;
|
|
28
28
|
// @ts-ignore: Decorator is valid here
|
|
29
|
-
|
|
29
|
+
export const CHAR_F = 102;
|
|
30
30
|
// @ts-ignore: Decorator is valid here
|
|
31
|
-
|
|
31
|
+
export const CHAR_A = 97;
|
|
32
32
|
// @ts-ignore: Decorator is valid here
|
|
33
|
-
|
|
33
|
+
export const CHAR_L = 108;
|
|
34
34
|
// @ts-ignore: Decorator is valid here
|
|
35
|
-
|
|
35
|
+
export const CHAR_S = 115;
|
|
36
36
|
// @ts-ignore = Decorator is valid here
|
|
37
|
-
|
|
37
|
+
export const CHAR_N = 110;
|
|
38
38
|
// @ts-ignore = Decorator is valid here
|
|
39
|
-
|
|
39
|
+
export const CHAR_B = 98;
|
|
40
40
|
// Strings
|
|
41
41
|
// @ts-ignore: Decorator is valid here
|
|
42
|
-
|
|
42
|
+
export const TRUE_WORD = "true";
|
|
43
43
|
// @ts-ignore: Decorator is valid here
|
|
44
|
-
|
|
44
|
+
export const FALSE_WORD = "false";
|
|
45
45
|
// @ts-ignore: Decorator is valid here
|
|
46
|
-
|
|
46
|
+
export const NULL_WORD = "null";
|
|
47
47
|
// @ts-ignore: Decorator is valid here
|
|
48
|
-
|
|
48
|
+
export const BRACE_LEFT_WORD = "{";
|
|
49
49
|
// @ts-ignore: Decorator is valid here
|
|
50
|
-
|
|
50
|
+
export const BRACKET_LEFT_WORD = "[";
|
|
51
51
|
// @ts-ignore: Decorator is valid here
|
|
52
|
-
|
|
52
|
+
export const EMPTY_BRACKET_WORD = "[]";
|
|
53
53
|
// @ts-ignore: Decorator is valid here
|
|
54
|
-
|
|
54
|
+
export const COLON_WORD = ":";
|
|
55
55
|
// @ts-ignore: Decorator is valid here
|
|
56
|
-
|
|
56
|
+
export const COMMA_WORD = ",";
|
|
57
57
|
// @ts-ignore: Decorator is valid here
|
|
58
|
-
|
|
58
|
+
export const BRACE_RIGHT_WORD = "}";
|
|
59
59
|
// @ts-ignore: Decorator is valid here
|
|
60
|
-
|
|
60
|
+
export const BRACKET_RIGHT_WORD = "]";
|
|
61
61
|
// @ts-ignore: Decorator is valid here
|
|
62
|
-
|
|
62
|
+
export const QUOTE_WORD = "\"";
|
|
63
|
+
// @ts-ignore: Decorator is valid here
|
|
64
|
+
export const EMPTY_QUOTE_WORD = "\"\"";
|
|
63
65
|
|
|
64
66
|
// Escape Codes
|
|
65
67
|
// @ts-ignore: Decorator is valid here
|
|
66
|
-
|
|
68
|
+
export const BACKSPACE = 8; // \b
|
|
67
69
|
// @ts-ignore: Decorator is valid here
|
|
68
|
-
|
|
70
|
+
export const TAB = 9; // \t
|
|
69
71
|
// @ts-ignore: Decorator is valid here
|
|
70
|
-
|
|
72
|
+
export const NEW_LINE = 10; // \n
|
|
71
73
|
// @ts-ignore: Decorator is valid here
|
|
72
|
-
|
|
74
|
+
export const FORM_FEED = 12; // \f
|
|
73
75
|
// @ts-ignore: Decorator is valid here
|
|
74
|
-
|
|
76
|
+
export const CARRIAGE_RETURN = 13; // \r
|
package/assembly/src/sink.ts
CHANGED
|
@@ -6,7 +6,7 @@ const MIN_BUFFER_SIZE: u32 = MIN_BUFFER_LEN << 1;
|
|
|
6
6
|
const NEW_LINE_CHAR: u16 = 0x0A; // \n
|
|
7
7
|
|
|
8
8
|
// @ts-ignore: decorator
|
|
9
|
-
|
|
9
|
+
function nextPowerOf2(n: u32): u32 {
|
|
10
10
|
return 1 << 32 - clz(n - 1);
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -79,17 +79,17 @@ export class Sink {
|
|
|
79
79
|
|
|
80
80
|
constructor() { }
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
get length(): i32 {
|
|
83
83
|
return this.offset >> 1;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
get capacity(): i32 {
|
|
87
87
|
return this.buffer.byteLength >>> 1;
|
|
88
88
|
}
|
|
89
|
-
|
|
89
|
+
reset(): void {
|
|
90
90
|
this.offset = 0;
|
|
91
91
|
}
|
|
92
|
-
|
|
92
|
+
write(src: string, start: i32 = 0, end: i32 = i32.MAX_VALUE): Sink | null {
|
|
93
93
|
let len = src.length as u32;
|
|
94
94
|
|
|
95
95
|
if (start != 0 || end != i32.MAX_VALUE) {
|
|
@@ -116,7 +116,7 @@ export class Sink {
|
|
|
116
116
|
return this;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
writeLn(src: string = "", start: i32 = 0, end: i32 = i32.MAX_VALUE): Sink {
|
|
120
120
|
let len = src.length as u32;
|
|
121
121
|
if (start != 0 || end != i32.MAX_VALUE) {
|
|
122
122
|
let from: i32;
|
|
@@ -137,7 +137,7 @@ export class Sink {
|
|
|
137
137
|
return this;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
writeCodePoint(code: i32): Sink {
|
|
141
141
|
let hasSur = <u32>code > 0xFFFF;
|
|
142
142
|
this.ensureCapacity(2 << i32(hasSur));
|
|
143
143
|
|
|
@@ -158,7 +158,7 @@ export class Sink {
|
|
|
158
158
|
return this;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
|
|
161
|
+
writeCodePoint16(code: i32): Sink {
|
|
162
162
|
this.ensureCapacity(2);
|
|
163
163
|
|
|
164
164
|
let offset = this.offset;
|
|
@@ -170,7 +170,7 @@ export class Sink {
|
|
|
170
170
|
return this;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
writeCodePointUnsafe(code: i32): Sink {
|
|
174
174
|
this.ensureCapacity(2);
|
|
175
175
|
|
|
176
176
|
let offset = this.offset;
|
|
@@ -184,7 +184,7 @@ export class Sink {
|
|
|
184
184
|
return this;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
writeNumber<T extends number>(value: T): Sink {
|
|
188
188
|
let offset = this.offset;
|
|
189
189
|
if (isInteger<T>()) {
|
|
190
190
|
let maxCapacity = 0;
|
|
@@ -213,7 +213,7 @@ export class Sink {
|
|
|
213
213
|
this.offset = offset;
|
|
214
214
|
return this;
|
|
215
215
|
}
|
|
216
|
-
|
|
216
|
+
writeNumberUnsafe<T extends number>(value: T): Sink {
|
|
217
217
|
let offset = this.offset;
|
|
218
218
|
if (isInteger<T>()) {
|
|
219
219
|
offset += itoa_buffered(
|
|
@@ -229,7 +229,7 @@ export class Sink {
|
|
|
229
229
|
this.offset = offset;
|
|
230
230
|
return this;
|
|
231
231
|
}
|
|
232
|
-
|
|
232
|
+
writeIntegerUnsafe<T extends number>(value: T): Sink {
|
|
233
233
|
let offset = this.offset;
|
|
234
234
|
if (isInteger<T>()) {
|
|
235
235
|
offset += itoa_buffered(
|
|
@@ -246,7 +246,7 @@ export class Sink {
|
|
|
246
246
|
return this;
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
-
|
|
249
|
+
reserve(capacity: i32, clear: bool = false): void {
|
|
250
250
|
if (clear) this.offset = 0;
|
|
251
251
|
this.buffer = changetype<ArrayBuffer>(__renew(
|
|
252
252
|
changetype<usize>(this.buffer),
|
|
@@ -254,18 +254,18 @@ export class Sink {
|
|
|
254
254
|
));
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
|
|
257
|
+
shrink(): void {
|
|
258
258
|
this.buffer = changetype<ArrayBuffer>(__renew(
|
|
259
259
|
changetype<usize>(this.buffer),
|
|
260
260
|
max<u32>(this.offset, MIN_BUFFER_SIZE)
|
|
261
261
|
));
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
|
|
264
|
+
clear(): void {
|
|
265
265
|
this.reserve(0, true);
|
|
266
266
|
}
|
|
267
267
|
|
|
268
|
-
|
|
268
|
+
toString(): string {
|
|
269
269
|
let size = this.offset;
|
|
270
270
|
if (!size) return "";
|
|
271
271
|
let out = changetype<string>(__new(size, idof<string>()));
|
|
@@ -273,7 +273,7 @@ export class Sink {
|
|
|
273
273
|
return out;
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
-
|
|
276
|
+
ensureCapacity(deltaBytes: u32): void {
|
|
277
277
|
let buffer = this.buffer;
|
|
278
278
|
let newSize = this.offset + deltaBytes;
|
|
279
279
|
if (newSize > <u32>buffer.byteLength) {
|
package/assembly/src/util.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { StringSink } from "as-string-sink/assembly";
|
|
2
2
|
import { isSpace } from "util/string";
|
|
3
|
-
import {
|
|
3
|
+
import { BACK_SLASH, QUOTE } from "./chars";
|
|
4
4
|
|
|
5
5
|
// @ts-ignore: Decorator
|
|
6
|
-
|
|
6
|
+
export function isMap<T>(): bool {
|
|
7
7
|
let type = changetype<T>(0);
|
|
8
8
|
return type instanceof Map;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
// @ts-ignore: Decorator
|
|
12
|
-
|
|
12
|
+
export function unsafeCharCodeAt(data: string, pos: i32): i32 {
|
|
13
13
|
return load<u16>(changetype<usize>(data) + ((<usize>pos) << 1));
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// @ts-ignore: Decorator
|
|
17
|
-
|
|
17
|
+
export function removeWhitespace(data: string): string {
|
|
18
18
|
const result = new StringSink();
|
|
19
19
|
let instr = false;
|
|
20
20
|
for (let i = 0; i < data.length; i++) {
|
|
21
21
|
const char = unsafeCharCodeAt(data, i);
|
|
22
|
-
if (instr === false && char ===
|
|
22
|
+
if (instr === false && char === QUOTE) instr = true;
|
|
23
23
|
else if (
|
|
24
|
-
instr === true && char ===
|
|
25
|
-
&& unsafeCharCodeAt(data, i - 1) !==
|
|
24
|
+
instr === true && char === QUOTE
|
|
25
|
+
&& unsafeCharCodeAt(data, i - 1) !== BACK_SLASH
|
|
26
26
|
) instr = false;
|
|
27
27
|
|
|
28
28
|
if (instr === false) {
|
|
@@ -35,7 +35,7 @@ import { backSlashCode, quoteCode } from "./chars";
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
// @ts-ignore: Decorator
|
|
38
|
-
|
|
38
|
+
export function escapeChar(char: string): string {
|
|
39
39
|
switch (unsafeCharCodeAt(char, 0)) {
|
|
40
40
|
case 0x22:
|
|
41
41
|
return '\\"';
|
|
@@ -65,7 +65,7 @@ import { backSlashCode, quoteCode } from "./chars";
|
|
|
65
65
|
*/
|
|
66
66
|
|
|
67
67
|
// @ts-ignore: Decorator
|
|
68
|
-
|
|
68
|
+
export function getArrayDepth<T extends ArrayLike>(depth: i32 = 1): i32 {
|
|
69
69
|
if (!isArray<T>()) {
|
|
70
70
|
return 0;
|
|
71
71
|
} else if (isArray<valueof<T>>()) {
|
|
@@ -93,7 +93,7 @@ import { backSlashCode, quoteCode } from "./chars";
|
|
|
93
93
|
* @param str - Any number. Can include scientific notation.
|
|
94
94
|
*/
|
|
95
95
|
// @ts-ignore: Decorator
|
|
96
|
-
|
|
96
|
+
export function snip_fast<T extends number>(str: string, len: u32 = 0, offset: u32 = 0): T {
|
|
97
97
|
if (isSigned<T>()) {
|
|
98
98
|
const firstChar: u32 = load<u16>(changetype<usize>(str));
|
|
99
99
|
if (firstChar === 48) return 0 as T;
|
|
@@ -258,7 +258,7 @@ import { backSlashCode, quoteCode } from "./chars";
|
|
|
258
258
|
*/
|
|
259
259
|
|
|
260
260
|
// @ts-ignore
|
|
261
|
-
@global
|
|
261
|
+
@global export function __atoi_fast<T extends number>(str: string, start: u32 = 0, end: u32 = 0): T {
|
|
262
262
|
// @ts-ignore
|
|
263
263
|
let val: T = 0;
|
|
264
264
|
if (!end) end = start + u32(str.length << 1);
|
|
@@ -293,7 +293,7 @@ import { backSlashCode, quoteCode } from "./chars";
|
|
|
293
293
|
*/
|
|
294
294
|
|
|
295
295
|
// @ts-ignore
|
|
296
|
-
|
|
296
|
+
export function parseSciInteger<T extends number>(str: string): T {
|
|
297
297
|
// @ts-ignore
|
|
298
298
|
let val: T = 0;
|
|
299
299
|
let offset = 0;
|
|
@@ -328,7 +328,7 @@ import { backSlashCode, quoteCode } from "./chars";
|
|
|
328
328
|
}
|
|
329
329
|
|
|
330
330
|
// @ts-ignore
|
|
331
|
-
|
|
331
|
+
function sciNote<T extends number>(num: T): T {
|
|
332
332
|
let res = 1;
|
|
333
333
|
// @ts-ignore
|
|
334
334
|
if (num > 0) {
|
|
@@ -345,7 +345,7 @@ import { backSlashCode, quoteCode } from "./chars";
|
|
|
345
345
|
}
|
|
346
346
|
|
|
347
347
|
// @ts-ignore
|
|
348
|
-
|
|
348
|
+
function equalsSlice(p1_data: string, p1_start: i32, p1_end: i32, p2_data: string, p2_start: i32, p2_end: i32): boolean {
|
|
349
349
|
const p1_len = p1_end - p1_start;
|
|
350
350
|
const p2_len = p2_end - p2_start;
|
|
351
351
|
if (p1_len != p2_len) return false;
|
|
@@ -356,7 +356,7 @@ import { backSlashCode, quoteCode } from "./chars";
|
|
|
356
356
|
}
|
|
357
357
|
|
|
358
358
|
// @ts-ignore
|
|
359
|
-
|
|
359
|
+
export function containsCodePoint(str: string, code: u32, start: i32, end: i32): bool {
|
|
360
360
|
for (let i = start; i <= end; i++) {
|
|
361
361
|
if (unsafeCharCodeAt(str, i) == code) return true;
|
|
362
362
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "json-as",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "JSON encoder/decoder for AssemblyScript",
|
|
5
5
|
"types": "assembly/index.ts",
|
|
6
6
|
"author": "Jairus Tanaka",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"build:test": "asc assembly/test.ts -o build/test.wasm --transform ./transform --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json --optimizeLevel 0 --shrinkLevel 0 --noAssert --uncheckedBehavior always",
|
|
21
21
|
"build:bench": "asc bench/benchmark.ts -o bench/benchmark.wasm --transform ./transform --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json --optimizeLevel 3 --shrinkLevel 0 --converge --noAssert --uncheckedBehavior always --runtime stub",
|
|
22
22
|
"bench:wasmtime": "wasmtime ./bench/benchmark.wasm",
|
|
23
|
-
"bench:
|
|
23
|
+
"bench:wasmer": "wasmer --llvm ./bench/benchmark.wasm",
|
|
24
24
|
"build:transform": "tsc -p ./transform",
|
|
25
25
|
"test:wasmtime": "wasmtime ./build/test.wasm",
|
|
26
26
|
"test:wavm": "wavm run ./build/test.wasm",
|
package/transform/lib/index.js
CHANGED
|
@@ -39,10 +39,10 @@ class JSONTransform extends BaseVisitor {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
if (!members.length) {
|
|
42
|
-
let SERIALIZE_RAW_EMPTY = "
|
|
43
|
-
//let SERIALIZE_PRETTY_EMPTY = "
|
|
44
|
-
let INITIALIZE_EMPTY = "
|
|
45
|
-
let DESERIALIZE_EMPTY = "
|
|
42
|
+
let SERIALIZE_RAW_EMPTY = "__SERIALIZE(): string {\n return \"{}\";\n}";
|
|
43
|
+
//let SERIALIZE_PRETTY_EMPTY = "__SERIALIZE_PRETTY(): string {\n return \"{}\";\n}";
|
|
44
|
+
let INITIALIZE_EMPTY = "__INITIALIZE(): this {\n return this;\n}";
|
|
45
|
+
let DESERIALIZE_EMPTY = "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n return false;\n}";
|
|
46
46
|
if (process.env["JSON_DEBUG"]) {
|
|
47
47
|
console.log(SERIALIZE_RAW_EMPTY);
|
|
48
48
|
//console.log(SERIALIZE_PRETTY_EMPTY);
|
|
@@ -130,10 +130,10 @@ class JSONTransform extends BaseVisitor {
|
|
|
130
130
|
}
|
|
131
131
|
schema.members.push(mem);
|
|
132
132
|
}
|
|
133
|
-
let SERIALIZE_RAW = "
|
|
134
|
-
let SERIALIZE_PRETTY = "
|
|
135
|
-
let INITIALIZE = "
|
|
136
|
-
let DESERIALIZE = "
|
|
133
|
+
let SERIALIZE_RAW = "__SERIALIZE(): string {\n let out = `{";
|
|
134
|
+
let SERIALIZE_PRETTY = "__SERIALIZE_PRETTY(): string {\n let out = `{";
|
|
135
|
+
let INITIALIZE = "__INITIALIZE(): this {\n";
|
|
136
|
+
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";
|
|
137
137
|
let indent = " ";
|
|
138
138
|
if (!schema.members.length)
|
|
139
139
|
return;
|
package/transform/package.json
CHANGED
package/transform/src/index.ts
CHANGED
|
@@ -56,12 +56,12 @@ class JSONTransform extends BaseVisitor {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
if (!members.length) {
|
|
59
|
-
let SERIALIZE_RAW_EMPTY = "
|
|
60
|
-
//let SERIALIZE_PRETTY_EMPTY = "
|
|
59
|
+
let SERIALIZE_RAW_EMPTY = "__SERIALIZE(): string {\n return \"{}\";\n}";
|
|
60
|
+
//let SERIALIZE_PRETTY_EMPTY = "__SERIALIZE_PRETTY(): string {\n return \"{}\";\n}";
|
|
61
61
|
|
|
62
|
-
let INITIALIZE_EMPTY = "
|
|
62
|
+
let INITIALIZE_EMPTY = "__INITIALIZE(): this {\n return this;\n}";
|
|
63
63
|
|
|
64
|
-
let DESERIALIZE_EMPTY = "
|
|
64
|
+
let DESERIALIZE_EMPTY = "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n return false;\n}";
|
|
65
65
|
|
|
66
66
|
if (process.env["JSON_DEBUG"]) {
|
|
67
67
|
console.log(SERIALIZE_RAW_EMPTY);
|
|
@@ -146,12 +146,12 @@ class JSONTransform extends BaseVisitor {
|
|
|
146
146
|
schema.members.push(mem);
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
let SERIALIZE_RAW = "
|
|
150
|
-
let SERIALIZE_PRETTY = "
|
|
149
|
+
let SERIALIZE_RAW = "__SERIALIZE(): string {\n let out = `{";
|
|
150
|
+
let SERIALIZE_PRETTY = "__SERIALIZE_PRETTY(): string {\n let out = `{";
|
|
151
151
|
|
|
152
|
-
let INITIALIZE = "
|
|
152
|
+
let INITIALIZE = "__INITIALIZE(): this {\n";
|
|
153
153
|
|
|
154
|
-
let DESERIALIZE = "
|
|
154
|
+
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"
|
|
155
155
|
let indent = " ";
|
|
156
156
|
|
|
157
157
|
if (!schema.members.length) return;
|