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/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 i32) return I32.parseInt(data);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "types": "assembly/index.ts",
6
6
  "author": "Jairus Tanaka",
@@ -1,6 +1,6 @@
1
- 7{
1
+ {
2
2
  "name": "@json-as/transform",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "main": "./lib/index.js",
6
6
  "author": "Jairus Tanaka",