json-as 0.4.6 → 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.
File without changes
package/assembly/chars.ts CHANGED
File without changes
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,10 +172,11 @@ 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
- let key: usize = 0;
178
+ let key = "";
179
+ let isKey = false;
175
180
  let depth = 1;
176
181
  let char = 0;
177
182
  for (
@@ -194,11 +199,11 @@ export function parseObject<T>(data: string): T {
194
199
  if (depth === 1) {
195
200
  ++arrayValueIndex;
196
201
  result.set(
197
- changetype<string>(key),
202
+ key,
198
203
  data.slice(outerLoopIndex, arrayValueIndex)
199
204
  );
200
205
  outerLoopIndex = arrayValueIndex;
201
- key = 0;
206
+ isKey = false;
202
207
  break;
203
208
  }
204
209
  }
@@ -217,11 +222,11 @@ export function parseObject<T>(data: string): T {
217
222
  if (depth === 1) {
218
223
  ++objectValueIndex;
219
224
  result.set(
220
- changetype<string>(key),
225
+ key,
221
226
  data.slice(outerLoopIndex, objectValueIndex)
222
227
  );
223
228
  outerLoopIndex = objectValueIndex;
224
- key = 0;
229
+ isKey = false;
225
230
  break;
226
231
  }
227
232
  }
@@ -237,16 +242,15 @@ export function parseObject<T>(data: string): T {
237
242
  char === quoteCode &&
238
243
  unsafeCharCodeAt(data, stringValueIndex - 1) !== backSlashCode
239
244
  ) {
240
- if (key === 0) {
241
- key = changetype<usize>(
242
- data.slice(outerLoopIndex, stringValueIndex)
243
- );
245
+ if (isKey === false) {
246
+ key = data.slice(outerLoopIndex, stringValueIndex);
247
+ isKey = true;
244
248
  } else {
245
249
  result.set(
246
- changetype<string>(key),
250
+ key,
247
251
  data.slice(outerLoopIndex, stringValueIndex)
248
252
  );
249
- key = 0;
253
+ isKey = false;
250
254
  }
251
255
  outerLoopIndex = ++stringValueIndex;
252
256
  break;
@@ -258,8 +262,8 @@ export function parseObject<T>(data: string): T {
258
262
  unsafeCharCodeAt(data, ++outerLoopIndex) === "u".charCodeAt(0) &&
259
263
  unsafeCharCodeAt(data, ++outerLoopIndex) === eCode
260
264
  ) {
261
- result.set(changetype<string>(key), "true");
262
- key = 0;
265
+ result.set(key, "true");
266
+ isKey = false;
263
267
  } else if (
264
268
  char === fCode &&
265
269
  unsafeCharCodeAt(data, ++outerLoopIndex) === "a".charCodeAt(0) &&
@@ -267,9 +271,9 @@ export function parseObject<T>(data: string): T {
267
271
  unsafeCharCodeAt(data, ++outerLoopIndex) === "s".charCodeAt(0) &&
268
272
  unsafeCharCodeAt(data, ++outerLoopIndex) === eCode
269
273
  ) {
270
- result.set(changetype<string>(key), "false");
271
- key = 0;
272
- } else if (char >= 48 && char <= 57) {
274
+ result.set(key, "false");
275
+ isKey = false;
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);
@@ -279,11 +283,11 @@ export function parseObject<T>(data: string): T {
279
283
  numberValueIndex == data.length - 2
280
284
  ) {
281
285
  result.set(
282
- changetype<string>(key),
286
+ key,
283
287
  data.slice(outerLoopIndex - 1, numberValueIndex)
284
288
  );
285
289
  outerLoopIndex = numberValueIndex;
286
- key = 0;
290
+ isKey = false;
287
291
  break;
288
292
  }
289
293
  }
@@ -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));
File without changes
package/assembly/util.ts CHANGED
File without changes
package/index.ts CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "types": "assembly/index.ts",
6
6
  "author": "Jairus Tanaka",
package/tests/index.js CHANGED
File without changes
package/tests/test.js CHANGED
File without changes
File without changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-as/transform",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "main": "./lib/index.js",
6
6
  "author": "Jairus Tanaka",
File without changes
File without changes
File without changes