json-as 0.9.29 → 1.0.0-alpha.1

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 (107) hide show
  1. package/.github/workflows/nodejs.yml +0 -3
  2. package/.prettierrc.json +3 -2
  3. package/CHANGELOG +13 -0
  4. package/LICENSE +1 -1
  5. package/README.md +22 -7
  6. package/as-test.config.json +1 -1
  7. package/asconfig.json +2 -2
  8. package/assembly/__benches__/misc.bench.ts +17 -32
  9. package/assembly/__tests__/bool.spec.ts +1 -1
  10. package/assembly/__tests__/simd/string.spec.ts +32 -0
  11. package/assembly/custom/memory.ts +25 -0
  12. package/assembly/custom/util.ts +14 -92
  13. package/assembly/deserialize/simd/string.ts +103 -0
  14. package/assembly/deserialize/simple/arbitrary.ts +17 -0
  15. package/assembly/deserialize/simple/array/arbitrary.ts +113 -0
  16. package/assembly/deserialize/simple/array/array.ts +18 -0
  17. package/assembly/deserialize/simple/array/bool.ts +17 -0
  18. package/assembly/deserialize/simple/array/float.ts +28 -0
  19. package/assembly/deserialize/simple/array/integer.ts +27 -0
  20. package/assembly/deserialize/simple/array/map.ts +18 -0
  21. package/assembly/deserialize/simple/array/object.ts +18 -0
  22. package/assembly/deserialize/simple/array/string.ts +22 -0
  23. package/assembly/deserialize/simple/array.ts +48 -0
  24. package/assembly/deserialize/simple/bool.ts +9 -0
  25. package/assembly/deserialize/simple/date.ts +11 -0
  26. package/assembly/deserialize/simple/float.ts +10 -0
  27. package/assembly/deserialize/simple/integer.ts +5 -0
  28. package/assembly/deserialize/simple/map.ts +154 -0
  29. package/assembly/deserialize/simple/object.ts +159 -0
  30. package/assembly/deserialize/simple/string.ts +48 -0
  31. package/assembly/globals/tables.ts +417 -0
  32. package/assembly/index.d.ts +9 -13
  33. package/assembly/index.ts +266 -146
  34. package/assembly/serialize/simd/string.ts +176 -0
  35. package/assembly/serialize/simple/arbitrary.ts +36 -0
  36. package/assembly/serialize/simple/array.ts +32 -0
  37. package/assembly/serialize/simple/bool.ts +19 -0
  38. package/assembly/serialize/simple/date.ts +13 -0
  39. package/assembly/serialize/simple/float.ts +7 -0
  40. package/assembly/serialize/simple/integer.ts +7 -0
  41. package/assembly/serialize/simple/map.ts +43 -0
  42. package/assembly/serialize/simple/object.ts +7 -0
  43. package/assembly/serialize/simple/string.ts +48 -0
  44. package/assembly/test.ts +41 -27
  45. package/assembly/tsconfig.json +2 -91
  46. package/assembly/types.ts +0 -0
  47. package/assembly/util/atoi.ts +35 -0
  48. package/assembly/util/bytes.ts +12 -0
  49. package/assembly/util/concat.ts +9 -0
  50. package/assembly/util/getArrayDepth.ts +17 -0
  51. package/assembly/util/index.ts +5 -0
  52. package/assembly/util/isSpace.ts +4 -0
  53. package/assembly/util/nextPowerOf2.ts +4 -0
  54. package/assembly/util/ptrToStr.ts +7 -0
  55. package/assembly/util/snp.ts +69 -0
  56. package/bench.js +5 -5
  57. package/modules/bs/index.ts +167 -0
  58. package/modules/tsconfig.json +8 -0
  59. package/package.json +42 -48
  60. package/transform/lib/builder.js +1353 -0
  61. package/transform/lib/builder.js.map +1 -0
  62. package/transform/lib/index.js +497 -332
  63. package/transform/lib/index.js.map +1 -1
  64. package/transform/lib/index.old.js +404 -0
  65. package/transform/lib/index.old.js.map +1 -0
  66. package/transform/lib/linker.js +18 -0
  67. package/transform/lib/linker.js.map +1 -0
  68. package/transform/lib/types.js +25 -0
  69. package/transform/lib/types.js.map +1 -0
  70. package/transform/lib/util.js +47 -0
  71. package/transform/lib/util.js.map +1 -0
  72. package/transform/lib/visitor.js +529 -446
  73. package/transform/lib/visitor.js.map +1 -0
  74. package/transform/package.json +1 -34
  75. package/transform/src/builder.ts +1371 -0
  76. package/transform/src/index.ts +564 -341
  77. package/transform/src/linker.ts +21 -0
  78. package/transform/src/types.ts +27 -0
  79. package/transform/src/util.ts +56 -0
  80. package/transform/src/visitor.ts +531 -0
  81. package/transform/tsconfig.json +3 -1
  82. package/assembly/__benches__/as-tral.d.ts +0 -1
  83. package/assembly/__tests__/date.spec.ts +0 -12
  84. package/assembly/custom/bs.ts +0 -202
  85. package/assembly/deserialize/array/array.ts +0 -31
  86. package/assembly/deserialize/array/bool.ts +0 -19
  87. package/assembly/deserialize/array/float.ts +0 -24
  88. package/assembly/deserialize/array/integer.ts +0 -24
  89. package/assembly/deserialize/array/map.ts +0 -27
  90. package/assembly/deserialize/array/object.ts +0 -27
  91. package/assembly/deserialize/array/string.ts +0 -29
  92. package/assembly/deserialize/array.ts +0 -46
  93. package/assembly/deserialize/bool.ts +0 -34
  94. package/assembly/deserialize/date.ts +0 -19
  95. package/assembly/deserialize/float.ts +0 -21
  96. package/assembly/deserialize/integer.ts +0 -16
  97. package/assembly/deserialize/map.ts +0 -139
  98. package/assembly/deserialize/object.ts +0 -211
  99. package/assembly/deserialize/string.ts +0 -149
  100. package/assembly/serialize/array.ts +0 -44
  101. package/assembly/serialize/bool.ts +0 -10
  102. package/assembly/serialize/date.ts +0 -4
  103. package/assembly/serialize/float.ts +0 -4
  104. package/assembly/serialize/integer.ts +0 -5
  105. package/assembly/serialize/map.ts +0 -24
  106. package/assembly/serialize/object.ts +0 -13
  107. package/assembly/serialize/string.ts +0 -284
@@ -1,211 +0,0 @@
1
- import { unsafeCharCodeAt } from "../custom/util";
2
- import { CHAR_A, BACK_SLASH, COMMA, CHAR_E, CHAR_F, CHAR_L, BRACE_LEFT, BRACKET_LEFT, CHAR_N, QUOTE, CHAR_R, BRACE_RIGHT, BRACKET_RIGHT, CHAR_S, CHAR_T, CHAR_U } from "../custom/chars";
3
- import { isSpace } from "util/string";
4
-
5
- // @ts-ignore: Decorator valid here
6
- @inline export function deserializeObject<T>(data: string): T {
7
- const schema: nonnull<T> = changetype<nonnull<T>>(__new(offsetof<nonnull<T>>(), idof<nonnull<T>>()));
8
-
9
- // @ts-ignore
10
- schema.__INITIALIZE();
11
-
12
- let key_start: i32 = 0;
13
- let key_end: i32 = 0;
14
- let isKey = false;
15
- let depth = 0;
16
- let outerLoopIndex = 1;
17
- for (; outerLoopIndex < data.length - 1; outerLoopIndex++) {
18
- const char = unsafeCharCodeAt(data, outerLoopIndex);
19
- if (char === BRACKET_LEFT) {
20
- for (let arrayValueIndex = outerLoopIndex; arrayValueIndex < data.length - 1; arrayValueIndex++) {
21
- const char = unsafeCharCodeAt(data, arrayValueIndex);
22
- if (char === BRACKET_LEFT) {
23
- depth++;
24
- } else if (char === BRACKET_RIGHT) {
25
- depth--;
26
- if (depth === 0) {
27
- ++arrayValueIndex;
28
- // @ts-ignore
29
- schema.__DESERIALIZE(data, key_start, key_end, outerLoopIndex, arrayValueIndex);
30
- outerLoopIndex = arrayValueIndex;
31
- isKey = false;
32
- break;
33
- }
34
- }
35
- }
36
- } else if (char === BRACE_LEFT) {
37
- for (let objectValueIndex = outerLoopIndex; objectValueIndex < data.length - 1; objectValueIndex++) {
38
- const char = unsafeCharCodeAt(data, objectValueIndex);
39
- if (char === BRACE_LEFT) {
40
- depth++;
41
- } else if (char === BRACE_RIGHT) {
42
- depth--;
43
- if (depth === 0) {
44
- ++objectValueIndex;
45
- // @ts-ignore
46
- schema.__DESERIALIZE(data, key_start, key_end, outerLoopIndex, objectValueIndex);
47
- outerLoopIndex = objectValueIndex;
48
- isKey = false;
49
- break;
50
- }
51
- }
52
- }
53
- } else if (char === QUOTE) {
54
- let escaping = false;
55
- for (let stringValueIndex = ++outerLoopIndex; stringValueIndex < data.length - 1; stringValueIndex++) {
56
- const char = unsafeCharCodeAt(data, stringValueIndex);
57
- if (char === BACK_SLASH && !escaping) {
58
- escaping = true;
59
- } else {
60
- if (char === QUOTE && !escaping) {
61
- if (isKey === false) {
62
- key_start = outerLoopIndex;
63
- key_end = stringValueIndex;
64
- isKey = true;
65
- } else {
66
- // @ts-ignore
67
- schema.__DESERIALIZE(data, key_start, key_end, outerLoopIndex - 1, stringValueIndex + 1);
68
- isKey = false;
69
- }
70
- outerLoopIndex = ++stringValueIndex;
71
- break;
72
- }
73
- escaping = false;
74
- }
75
- }
76
- } else if (char == CHAR_N && unsafeCharCodeAt(data, outerLoopIndex + 1) === CHAR_U && unsafeCharCodeAt(data, outerLoopIndex + 2) === CHAR_L && unsafeCharCodeAt(data, outerLoopIndex + 3) === CHAR_L) {
77
- // @ts-ignore
78
- schema.__DESERIALIZE(data, key_start, key_end, outerLoopIndex, outerLoopIndex + 4);
79
- outerLoopIndex += 3;
80
- isKey = false;
81
- } else if (char === CHAR_T && unsafeCharCodeAt(data, outerLoopIndex + 1) === CHAR_R && unsafeCharCodeAt(data, outerLoopIndex + 2) === CHAR_U && unsafeCharCodeAt(data, outerLoopIndex + 3) === CHAR_E) {
82
- // @ts-ignore
83
- schema.__DESERIALIZE(data, key_start, key_end, outerLoopIndex, outerLoopIndex + 4);
84
- outerLoopIndex += 3;
85
- isKey = false;
86
- } else if (char === CHAR_F && unsafeCharCodeAt(data, outerLoopIndex + 1) === CHAR_A && unsafeCharCodeAt(data, outerLoopIndex + 2) === CHAR_L && unsafeCharCodeAt(data, outerLoopIndex + 3) === CHAR_S && unsafeCharCodeAt(data, outerLoopIndex + 4) === CHAR_E) {
87
- // @ts-ignore
88
- schema.__DESERIALIZE(data, key_start, key_end, outerLoopIndex, outerLoopIndex + 5);
89
- outerLoopIndex += 4;
90
- isKey = false;
91
- } else if ((char >= 48 && char <= 57) || char === 45) {
92
- let numberValueIndex = ++outerLoopIndex;
93
- for (; numberValueIndex < data.length; numberValueIndex++) {
94
- const char = unsafeCharCodeAt(data, numberValueIndex);
95
- if (char === COMMA || char === BRACE_RIGHT || isSpace(char)) {
96
- // @ts-ignore
97
- schema.__DESERIALIZE(data, key_start, key_end, outerLoopIndex - 1, numberValueIndex);
98
- outerLoopIndex = numberValueIndex;
99
- isKey = false;
100
- break;
101
- }
102
- }
103
- }
104
- }
105
- return schema;
106
- }
107
-
108
- // @ts-ignore: Decorator valid here
109
- @inline export function deserializeObject_Safe<T>(data: string): T {
110
- const firstChar = load<u8>(changetype<usize>(data));
111
- if (firstChar != BRACE_LEFT) throw new Error("Mismatched Types! Expected " + nameof<T>() + ' but got "' + data.slice(0, 100) + '" instead!');
112
- const schema: nonnull<T> = changetype<nonnull<T>>(__new(offsetof<nonnull<T>>(), idof<nonnull<T>>()));
113
-
114
- // @ts-ignore
115
- schema.__INITIALIZE();
116
-
117
- let key_start: i32 = 0;
118
- let key_end: i32 = 0;
119
- let isKey = false;
120
- let depth = 0;
121
- let outerLoopIndex = 1;
122
- for (; outerLoopIndex < data.length - 1; outerLoopIndex++) {
123
- const char = unsafeCharCodeAt(data, outerLoopIndex);
124
- if (char === BRACKET_LEFT) {
125
- for (let arrayValueIndex = outerLoopIndex; arrayValueIndex < data.length - 1; arrayValueIndex++) {
126
- const char = unsafeCharCodeAt(data, arrayValueIndex);
127
- if (char === BRACKET_LEFT) {
128
- depth++;
129
- } else if (char === BRACKET_RIGHT) {
130
- depth--;
131
- if (depth === 0) {
132
- ++arrayValueIndex;
133
- // @ts-ignore
134
- schema.__DESERIALIZE_SAFE(data, key_start, key_end, outerLoopIndex, arrayValueIndex);
135
- outerLoopIndex = arrayValueIndex;
136
- isKey = false;
137
- break;
138
- }
139
- }
140
- }
141
- } else if (char === BRACE_LEFT) {
142
- for (let objectValueIndex = outerLoopIndex; objectValueIndex < data.length - 1; objectValueIndex++) {
143
- const char = unsafeCharCodeAt(data, objectValueIndex);
144
- if (char === BRACE_LEFT) {
145
- depth++;
146
- } else if (char === BRACE_RIGHT) {
147
- depth--;
148
- if (depth === 0) {
149
- ++objectValueIndex;
150
- // @ts-ignore
151
- schema.__DESERIALIZE_SAFE(data, key_start, key_end, outerLoopIndex, objectValueIndex);
152
- outerLoopIndex = objectValueIndex;
153
- isKey = false;
154
- break;
155
- }
156
- }
157
- }
158
- } else if (char === QUOTE) {
159
- let escaping = false;
160
- for (let stringValueIndex = ++outerLoopIndex; stringValueIndex < data.length - 1; stringValueIndex++) {
161
- const char = unsafeCharCodeAt(data, stringValueIndex);
162
- if (char === BACK_SLASH && !escaping) {
163
- escaping = true;
164
- } else {
165
- if (char === QUOTE && !escaping) {
166
- if (isKey === false) {
167
- key_start = outerLoopIndex;
168
- key_end = stringValueIndex;
169
- isKey = true;
170
- } else {
171
- // @ts-ignore
172
- schema.__DESERIALIZE_SAFE(data, key_start, key_end, outerLoopIndex - 1, stringValueIndex + 1);
173
- isKey = false;
174
- }
175
- outerLoopIndex = ++stringValueIndex;
176
- break;
177
- }
178
- escaping = false;
179
- }
180
- }
181
- } else if (char == CHAR_N && unsafeCharCodeAt(data, outerLoopIndex + 1) === CHAR_U && unsafeCharCodeAt(data, outerLoopIndex + 2) === CHAR_L && unsafeCharCodeAt(data, outerLoopIndex + 3) === CHAR_L) {
182
- // @ts-ignore
183
- schema.__DESERIALIZE_SAFE(data, key_start, key_end, outerLoopIndex, outerLoopIndex + 4);
184
- outerLoopIndex += 3;
185
- isKey = false;
186
- } else if (char === CHAR_T && unsafeCharCodeAt(data, outerLoopIndex + 1) === CHAR_R && unsafeCharCodeAt(data, outerLoopIndex + 2) === CHAR_U && unsafeCharCodeAt(data, outerLoopIndex + 3) === CHAR_E) {
187
- // @ts-ignore
188
- schema.__DESERIALIZE_SAFE(data, key_start, key_end, outerLoopIndex, outerLoopIndex + 4);
189
- outerLoopIndex += 3;
190
- isKey = false;
191
- } else if (char === CHAR_F && unsafeCharCodeAt(data, outerLoopIndex + 1) === CHAR_A && unsafeCharCodeAt(data, outerLoopIndex + 2) === CHAR_L && unsafeCharCodeAt(data, outerLoopIndex + 3) === CHAR_S && unsafeCharCodeAt(data, outerLoopIndex + 4) === CHAR_E) {
192
- // @ts-ignore
193
- schema.__DESERIALIZE_SAFE(data, key_start, key_end, outerLoopIndex, outerLoopIndex + 5);
194
- outerLoopIndex += 4;
195
- isKey = false;
196
- } else if ((char >= 48 && char <= 57) || char === 45) {
197
- let numberValueIndex = ++outerLoopIndex;
198
- for (; numberValueIndex < data.length; numberValueIndex++) {
199
- const char = unsafeCharCodeAt(data, numberValueIndex);
200
- if (char === COMMA || char === BRACE_RIGHT || isSpace(char)) {
201
- // @ts-ignore
202
- schema.__DESERIALIZE_SAFE(data, key_start, key_end, outerLoopIndex - 1, numberValueIndex);
203
- outerLoopIndex = numberValueIndex;
204
- isKey = false;
205
- break;
206
- }
207
- }
208
- }
209
- }
210
- return schema;
211
- }
@@ -1,149 +0,0 @@
1
- import { CHAR_B, BACK_SLASH, BACKSPACE, CARRIAGE_RETURN, CHAR_F, FORM_FEED, FWD_SLASH, CHAR_N, NEW_LINE, QUOTE, CHAR_R, CHAR_T, TAB, CHAR_U } from "../custom/chars";
2
- import { Sink } from "../custom/sink";
3
- import { unsafeCharCodeAt } from "../custom/util";
4
-
5
- // @ts-ignore: Decorator valid here
6
- @inline export function deserializeString(data: string, start: i32 = 0, end: i32 = 0): string {
7
- end = end || data.length - 1;
8
- let result = Sink.withCapacity(end - start - 1);
9
- let last = start + 1;
10
- for (let i = last; i < end; i++) {
11
- if (unsafeCharCodeAt(data, i) !== BACK_SLASH) {
12
- continue;
13
- }
14
- const char = unsafeCharCodeAt(data, ++i);
15
- result.write(data, last, i - 1);
16
- switch (char) {
17
- case QUOTE: {
18
- result.writeCodePoint(QUOTE);
19
- last = i + 1;
20
- break;
21
- }
22
- case BACK_SLASH: {
23
- result.writeCodePoint(BACK_SLASH);
24
- last = i + 1;
25
- break;
26
- }
27
- case FWD_SLASH: {
28
- result.writeCodePoint(FWD_SLASH);
29
- last = i + 1;
30
- break;
31
- }
32
- case CHAR_B: {
33
- result.writeCodePoint(BACKSPACE);
34
- last = i + 1;
35
- break;
36
- }
37
- case CHAR_F: {
38
- result.writeCodePoint(FORM_FEED);
39
- last = i + 1;
40
- break;
41
- }
42
- case CHAR_N: {
43
- result.writeCodePoint(NEW_LINE);
44
- last = i + 1;
45
- break;
46
- }
47
- case CHAR_R: {
48
- result.writeCodePoint(CARRIAGE_RETURN);
49
- last = i + 1;
50
- break;
51
- }
52
- case CHAR_T: {
53
- result.writeCodePoint(TAB);
54
- last = i + 1;
55
- break;
56
- }
57
- case CHAR_U: {
58
- const code = u16.parse(data.slice(i + 1, i + 5), 16);
59
- result.writeCodePoint(code);
60
- i += 4;
61
- last = i + 1;
62
- break;
63
- }
64
- default: {
65
- throw new Error(`JSON: Cannot parse "${data}" as string. Invalid escape sequence: \\${data.charAt(i)}`);
66
- }
67
- }
68
- }
69
- if (end > last) {
70
- result.write(data, last, end);
71
- }
72
- return result.toString();
73
- }
74
-
75
- // @ts-ignore: Decorator valid here
76
- // @inline export function deserializeString_BS(data: string, start: i32 = 0, end: i32 = 0): void {
77
- // end = end || data.length - 1;
78
- // let last = start + 1;
79
- // for (let i = last; i < end; i++) {
80
- // if (unsafeCharCodeAt(data, i) !== BACK_SLASH) {
81
- // continue;
82
- // }
83
- // const char = unsafeCharCodeAt(data, ++i);
84
- // bs.write_s_se_u(data, last, i - 1);
85
- // switch (char) {
86
- // case QUOTE: {
87
- // bs.write_8(QUOTE);
88
- // last = i + 1;
89
- // break;
90
- // }
91
- // case BACK_SLASH: {
92
- // bs.write_8(BACK_SLASH);
93
- // last = i + 1;
94
- // break;
95
- // }
96
- // case FWD_SLASH: {
97
- // bs.write_8(FWD_SLASH);
98
- // last = i + 1;
99
- // break;
100
- // }
101
- // case CHAR_B: {
102
- // bs.write_8(BACKSPACE);
103
- // last = i + 1;
104
- // break;
105
- // }
106
- // case CHAR_F: {
107
- // bs.write_8(FORM_FEED);
108
- // last = i + 1;
109
- // break;
110
- // }
111
- // case CHAR_N: {
112
- // bs.write_8(NEW_LINE);
113
- // last = i + 1;
114
- // break;
115
- // }
116
- // case CHAR_R: {
117
- // bs.write_8(CARRIAGE_RETURN);
118
- // last = i + 1;
119
- // break;
120
- // }
121
- // case CHAR_T: {
122
- // bs.write_8(TAB);
123
- // last = i + 1;
124
- // break;
125
- // }
126
- // case CHAR_U: {
127
-
128
- // const code = u16.parse(data.slice(i + 1, i + 5), 16);
129
- // bs.w(code);
130
- // i += 4;
131
- // last = i + 1;
132
- // break;
133
- // }
134
- // default: {
135
- // throw new Error(`JSON: Cannot parse "${data}" as string. Invalid escape sequence: \\${data.charAt(i)}`);
136
- // }
137
- // }
138
- // }
139
- // if (end > last) {
140
- // result.write(data, last, end);
141
- // }
142
- // }
143
-
144
- // @ts-ignore: Decorator valid here
145
- @inline export function deserializeString_Safe(data: string, start: i32 = 0, end: i32 = 0): string {
146
- const firstChar = load<u8>(changetype<usize>(data));
147
- if (firstChar != QUOTE) throw new Error('Mismatched Types! Expected string but got "' + data.slice(0, 100) + '" instead!');
148
- return deserializeString(data, start, end);
149
- }
@@ -1,44 +0,0 @@
1
- import { JSON } from "..";
2
- import { COMMA, COMMA_WORD, EMPTY_BRACKET_WORD, BRACKET_LEFT_WORD, BRACKET_RIGHT, BRACKET_RIGHT_WORD } from "../custom/chars";
3
- import { Sink } from "../custom/sink";
4
- import { serializeString } from "./string";
5
-
6
- // @ts-ignore: Decorator valid here
7
- @inline export function serializeArray<T extends any[]>(data: T): string {
8
- if (data.length == 0) {
9
- return EMPTY_BRACKET_WORD;
10
- // @ts-ignore
11
- } else if (isString<valueof<T>>()) {
12
- let result = BRACKET_LEFT_WORD;
13
- // @ts-ignore
14
- for (let i = 0; i < data.length - 1; i++) {
15
- // @ts-ignore
16
- result += serializeString(unchecked(data[i]));
17
- result += COMMA_WORD;
18
- }
19
- // @ts-ignore
20
- result += serializeString(unchecked(data[data.length - 1]));
21
- result += BRACKET_RIGHT_WORD;
22
- return result;
23
- // @ts-ignore
24
- } else if (isBoolean<valueof<T>>()) {
25
- // @ts-ignore
26
- return BRACKET_LEFT_WORD + data.join(COMMA_WORD) + BRACKET_RIGHT_WORD;
27
- // @ts-ignore
28
- } else if (isFloat<valueof<T>>() || isInteger<valueof<T>>()) {
29
- // @ts-ignore
30
- return BRACKET_LEFT_WORD + data.join(COMMA_WORD) + BRACKET_RIGHT_WORD;
31
- } else {
32
- let result = Sink.fromString(BRACKET_LEFT_WORD);
33
- // @ts-ignore
34
- for (let i = 0; i < data.length - 1; i++) {
35
- // @ts-ignore
36
- result.write(JSON.stringify(unchecked(data[i])));
37
- result.writeCodePoint(COMMA);
38
- }
39
- // @ts-ignore
40
- result.write(JSON.stringify(unchecked(data[data.length - 1])));
41
- result.writeCodePoint(BRACKET_RIGHT);
42
- return result.toString();
43
- }
44
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * Serialize a bool to type string
3
- * @param data data to serialize
4
- * @returns string
5
- */
6
-
7
- // @ts-ignore: Decorator valid here
8
- @inline export function serializeBool(data: bool): string {
9
- return data ? "true" : "false";
10
- }
@@ -1,4 +0,0 @@
1
- // @ts-ignore: Decorator valid here
2
- @inline export function serializeDate(data: Date): string {
3
- return `"${data.toISOString()}"`;
4
- }
@@ -1,4 +0,0 @@
1
- // @ts-ignore: Decorator valid here
2
- @inline export function serializeFloat<T extends number>(data: T): string {
3
- return data.toString();
4
- }
@@ -1,5 +0,0 @@
1
- // @ts-ignore: Decorator valid here
2
- @inline export function serializeInteger<T extends number>(data: T): string {
3
- // I have a much faster implementation of itoa that I will port over later. Its ~4x faster
4
- return data.toString();
5
- }
@@ -1,24 +0,0 @@
1
- import { COLON, COMMA, BRACE_LEFT_WORD, BRACE_RIGHT } from "../custom/chars";
2
- import { JSON } from "..";
3
- import { Sink } from "../custom/sink";
4
-
5
- // @ts-ignore: Decorator valid here
6
- @inline export function serializeMap<T extends Map<any, any>>(data: T): string {
7
- let result = Sink.fromString(BRACE_LEFT_WORD);
8
- if (!data.size) return "{}";
9
- let keys = data.keys();
10
- let values = data.values();
11
- const end = data.size - 1;
12
- for (let i = 0; i < end; i++) {
13
- result.write(JSON.stringify(unchecked(keys[i]).toString()));
14
- result.writeCodePoint(COLON);
15
- result.write(JSON.stringify(unchecked(values[i])));
16
- result.writeCodePoint(COMMA);
17
- }
18
- result.write(JSON.stringify(unchecked(keys[end]).toString()));
19
- result.writeCodePoint(COLON);
20
- result.write(JSON.stringify(unchecked(values[end])));
21
-
22
- result.writeCodePoint(BRACE_RIGHT);
23
- return result.toString();
24
- }
@@ -1,13 +0,0 @@
1
- interface GeneratedInterface {
2
- __SERIALIZE(): string;
3
- }
4
-
5
- // @ts-ignore: Decorator valid here
6
- @inline export function serializeObject<T extends GeneratedInterface>(data: T): string {
7
- return changetype<nonnull<T>>(data).__SERIALIZE();
8
- }
9
-
10
- // @ts-ignore: Decorator valid here
11
- @inline export function serializeObject_Pretty<T extends GeneratedInterface>(data: T): string {
12
- return changetype<nonnull<T>>(data).__SERIALIZE_PRETTY();
13
- }