json-as 0.4.7 → 0.4.8
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/as-pect.asconfig.json +23 -23
- package/as-pect.config.js +1 -1
- package/assembly/__tests__/as-json.spec.ts +3 -2
- package/assembly/__tests__/as-json.spec.wasm +0 -0
- package/assembly/__tests__/as-json.spec.wat +18630 -0
- package/assembly/index.ts +25 -21
- package/assembly/test.ts +1 -1
- package/package.json +1 -1
- package/transform/package.json +2 -2
package/assembly/index.ts
CHANGED
|
@@ -80,11 +80,11 @@ export class JSON {
|
|
|
80
80
|
// @ts-ignore
|
|
81
81
|
for (let i = 0; i < data.length - 1; i++) {
|
|
82
82
|
// @ts-ignore
|
|
83
|
-
result.write(stringify(unchecked(data[i])));
|
|
83
|
+
result.write(JSON.stringify(unchecked(data[i])));
|
|
84
84
|
result.write(",");
|
|
85
85
|
}
|
|
86
86
|
// @ts-ignore
|
|
87
|
-
result.write(stringify(unchecked(data[data.length - 1])));
|
|
87
|
+
result.write(JSON.stringify(unchecked(data[data.length - 1])));
|
|
88
88
|
result.write("]");
|
|
89
89
|
return result.toString();
|
|
90
90
|
}
|
|
@@ -128,13 +128,13 @@ export class JSON {
|
|
|
128
128
|
|
|
129
129
|
// @ts-ignore
|
|
130
130
|
@inline
|
|
131
|
-
function parseString(data: string): string {
|
|
131
|
+
function parseString(data: string): string {
|
|
132
132
|
return data.slice(1, data.length - 1).replaceAll('\\"', '"');
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
// @ts-ignore
|
|
136
136
|
@inline
|
|
137
|
-
function parseBoolean<T extends boolean>(data: string): T {
|
|
137
|
+
function parseBoolean<T extends boolean>(data: string): T {
|
|
138
138
|
if (data.length > 3 && data.startsWith("true")) return <T>true;
|
|
139
139
|
else if (data.length > 4 && data.startsWith("false")) return <T>false;
|
|
140
140
|
else throw new Error(`JSON: Cannot parse "${data}" as boolean`);
|
|
@@ -142,14 +142,14 @@ function parseBoolean<T extends boolean>(data: string): T {
|
|
|
142
142
|
|
|
143
143
|
// @ts-ignore
|
|
144
144
|
@inline
|
|
145
|
-
function parseNumber<T>(data: string): T {
|
|
145
|
+
function parseNumber<T>(data: string): T {
|
|
146
146
|
let type: T;
|
|
147
147
|
// @ts-ignore
|
|
148
148
|
if (type instanceof f64) return F64.parseFloat(data);
|
|
149
149
|
// @ts-ignore
|
|
150
150
|
else if (type instanceof f32) return F32.parseFloat(data);
|
|
151
151
|
// @ts-ignore
|
|
152
|
-
else if (type instanceof
|
|
152
|
+
else if (type instanceof u64) return U64.parseInt(data);
|
|
153
153
|
// @ts-ignore
|
|
154
154
|
else if (type instanceof u32) return U32.parseInt(data);
|
|
155
155
|
// @ts-ignore
|
|
@@ -157,6 +157,10 @@ function parseNumber<T>(data: string): T {
|
|
|
157
157
|
// @ts-ignore
|
|
158
158
|
else if (type instanceof u16) return U16.parseInt(data);
|
|
159
159
|
// @ts-ignore
|
|
160
|
+
else if (type instanceof i64) return I64.parseInt(data);
|
|
161
|
+
// @ts-ignore
|
|
162
|
+
else if (type instanceof i32) return I32.parseInt(data);
|
|
163
|
+
// @ts-ignore
|
|
160
164
|
else if (type instanceof i16) return I16.parseInt(data);
|
|
161
165
|
// @ts-ignore
|
|
162
166
|
else if (type instanceof i8) return I8.parseInt(data);
|
|
@@ -168,7 +172,7 @@ function parseNumber<T>(data: string): T {
|
|
|
168
172
|
|
|
169
173
|
// @ts-ignore
|
|
170
174
|
@inline
|
|
171
|
-
export function parseObject<T>(data: string): T {
|
|
175
|
+
export function parseObject<T>(data: string): T {
|
|
172
176
|
let schema!: T;
|
|
173
177
|
const result = new Map<string, string>();
|
|
174
178
|
let key = "";
|
|
@@ -269,7 +273,7 @@ export function parseObject<T>(data: string): T {
|
|
|
269
273
|
) {
|
|
270
274
|
result.set(key, "false");
|
|
271
275
|
isKey = false;
|
|
272
|
-
} else if (char >= 48 && char <= 57) {
|
|
276
|
+
} else if ((char >= 48 && char <= 57) || char === 45) {
|
|
273
277
|
let numberValueIndex = ++outerLoopIndex;
|
|
274
278
|
for (; numberValueIndex < data.length - 1; numberValueIndex++) {
|
|
275
279
|
char = unsafeCharCodeAt(data, numberValueIndex);
|
|
@@ -295,18 +299,18 @@ export function parseObject<T>(data: string): T {
|
|
|
295
299
|
|
|
296
300
|
// @ts-ignore
|
|
297
301
|
@inline
|
|
298
|
-
// @ts-ignore
|
|
299
|
-
export function parseArray<T extends unknown[]>(data: string): T {
|
|
302
|
+
// @ts-ignore
|
|
303
|
+
export function parseArray<T extends unknown[]>(data: string): T {
|
|
300
304
|
// TODO: Replace with opt
|
|
301
305
|
let type!: valueof<T>;
|
|
302
306
|
if (type instanceof String) {
|
|
303
307
|
return <T>parseStringArray(data);
|
|
304
|
-
} else if (isFloat<valueof<T>>() || isInteger<valueof<T>>()) {
|
|
305
|
-
// @ts-ignore
|
|
306
|
-
return parseNumberArray<T>(data);
|
|
307
308
|
} else if (isBoolean<valueof<T>>()) {
|
|
308
309
|
// @ts-ignore
|
|
309
310
|
return parseBooleanArray<T>(data);
|
|
311
|
+
} else if (isFloat<valueof<T>>() || isInteger<valueof<T>>()) {
|
|
312
|
+
// @ts-ignore
|
|
313
|
+
return parseNumberArray<T>(data);
|
|
310
314
|
} else if (isArrayLike<valueof<T>>()) {
|
|
311
315
|
// @ts-ignore
|
|
312
316
|
return parseArrayArray<T>(data);
|
|
@@ -319,7 +323,7 @@ export function parseArray<T extends unknown[]>(data: string): T {
|
|
|
319
323
|
|
|
320
324
|
// @ts-ignore
|
|
321
325
|
@inline
|
|
322
|
-
export function parseStringArray(data: string): string[] {
|
|
326
|
+
export function parseStringArray(data: string): string[] {
|
|
323
327
|
const result: string[] = [];
|
|
324
328
|
let lastPos = 0;
|
|
325
329
|
let instr = false;
|
|
@@ -339,7 +343,7 @@ export function parseStringArray(data: string): string[] {
|
|
|
339
343
|
|
|
340
344
|
// @ts-ignore
|
|
341
345
|
@inline
|
|
342
|
-
export function parseBooleanArray<T extends boolean[]>(data: string): T {
|
|
346
|
+
export function parseBooleanArray<T extends boolean[]>(data: string): T {
|
|
343
347
|
const result = instantiate<T>();
|
|
344
348
|
let lastPos = 1;
|
|
345
349
|
let char = 0;
|
|
@@ -367,21 +371,21 @@ export function parseBooleanArray<T extends boolean[]>(data: string): T {
|
|
|
367
371
|
|
|
368
372
|
// @ts-ignore
|
|
369
373
|
@inline
|
|
370
|
-
export function parseNumberArray<T extends number[]>(data: string): T {
|
|
374
|
+
export function parseNumberArray<T extends number[]>(data: string): T {
|
|
371
375
|
const result = instantiate<T>();
|
|
372
376
|
let lastPos = 0;
|
|
373
377
|
let char = 0;
|
|
374
378
|
let i = 1;
|
|
375
379
|
for (; i < data.length - 1; i++) {
|
|
376
380
|
char = unsafeCharCodeAt(data, i);
|
|
377
|
-
if (lastPos === 0 && char >= 48 && char <= 57) {
|
|
381
|
+
if (lastPos === 0 && (char >= 48 && char <= 57) || char === 45) {
|
|
378
382
|
lastPos = i;
|
|
379
383
|
} else if ((isSpace(char) || char == commaCode) && lastPos > 0) {
|
|
380
384
|
result.push(parseNumber<valueof<T>>(data.slice(lastPos, i)));
|
|
381
385
|
lastPos = 0;
|
|
382
386
|
}
|
|
383
387
|
}
|
|
384
|
-
for (; i > lastPos; i--) {
|
|
388
|
+
for (; i > lastPos - 1; i--) {
|
|
385
389
|
char = unsafeCharCodeAt(data, i);
|
|
386
390
|
if (char !== rightBracketCode) {
|
|
387
391
|
result.push(parseNumber<valueof<T>>(data.slice(lastPos, i + 1)));
|
|
@@ -393,7 +397,7 @@ export function parseNumberArray<T extends number[]>(data: string): T {
|
|
|
393
397
|
|
|
394
398
|
// @ts-ignore
|
|
395
399
|
@inline
|
|
396
|
-
export function parseArrayArray<T extends unknown[][]>(data: string): T {
|
|
400
|
+
export function parseArrayArray<T extends unknown[][]>(data: string): T {
|
|
397
401
|
const result = instantiate<T>();
|
|
398
402
|
let char = 0;
|
|
399
403
|
let lastPos = 0;
|
|
@@ -423,7 +427,7 @@ export function parseArrayArray<T extends unknown[][]>(data: string): T {
|
|
|
423
427
|
|
|
424
428
|
// @ts-ignore
|
|
425
429
|
@inline
|
|
426
|
-
export function parseObjectArray<T extends unknown[][]>(data: string): T {
|
|
430
|
+
export function parseObjectArray<T extends unknown[][]>(data: string): T {
|
|
427
431
|
const result = instantiate<T>();
|
|
428
432
|
let char = 0;
|
|
429
433
|
let lastPos = 1;
|
|
@@ -451,4 +455,4 @@ export function parseObjectArray<T extends unknown[][]>(data: string): T {
|
|
|
451
455
|
return result;
|
|
452
456
|
}
|
|
453
457
|
|
|
454
|
-
class Nullable {}
|
|
458
|
+
class Nullable { }
|
package/assembly/test.ts
CHANGED
|
@@ -46,4 +46,4 @@ const serializedVec2 = JSON.stringify<Vec2>(vec);
|
|
|
46
46
|
console.log("Serialized Vec2: " + serializedVec2);
|
|
47
47
|
const deserializedVec2 = JSON.parse<Vec2>(serializedVec2);
|
|
48
48
|
|
|
49
|
-
console.log("Deserialized: " + JSON.stringify(deserializedVec2));
|
|
49
|
+
console.log("Deserialized Vec2: " + JSON.stringify(deserializedVec2));
|
package/package.json
CHANGED
package/transform/package.json
CHANGED