mol_vary 0.0.68 → 0.0.70

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/node.js CHANGED
@@ -2548,8 +2548,8 @@ var $;
2548
2548
  if (stack.includes(val))
2549
2549
  $mol_fail(new Error('Cyclic refs', { cause: { stack, val } }));
2550
2550
  stack.push(val);
2551
- for (const item of val)
2552
- dump(item);
2551
+ for (let i = 0; i < val.length; ++i)
2552
+ dump(val[i]);
2553
2553
  if (stack.at(-1) !== val)
2554
2554
  $mol_fail(new Error('Broken stack', { cause: { stack, val } }));
2555
2555
  stack.pop();
@@ -2569,65 +2569,67 @@ var $;
2569
2569
  const offset = offsets.get(val);
2570
2570
  if (offset !== undefined)
2571
2571
  return dump_unum($mol_vary_tip.link, offset);
2572
- const [keys, vals] = this.lean_find(val)?.(val) ?? [shape(val), Object.values(val)];
2572
+ const { 0: keys, 1: vals } = this.lean_find(val)?.(val) ?? [shape(val), Object.values(val)];
2573
2573
  dump_unum($mol_vary_tip.tupl, vals.length);
2574
2574
  acquire((vals.length + 1) * 9);
2575
2575
  dump_list(keys);
2576
2576
  if (stack.includes(val))
2577
2577
  $mol_fail(new Error('Cyclic refs', { cause: { stack, val } }));
2578
2578
  stack.push(val);
2579
- for (const item of vals)
2580
- dump(item);
2579
+ for (let i = 0; i < vals.length; ++i)
2580
+ dump(vals[i]);
2581
2581
  if (stack.at(-1) !== val)
2582
2582
  $mol_fail(new Error('Broken stack', { cause: { stack, val } }));
2583
2583
  stack.pop();
2584
2584
  offsets.set(val, offsets.size);
2585
2585
  };
2586
- const dump = (val) => {
2587
- switch (typeof val) {
2588
- case 'undefined': {
2589
- this.array[pos++] = $mol_vary_spec.both;
2590
- release(8);
2591
- return;
2592
- }
2593
- case 'boolean': {
2594
- this.array[pos++] = val ? $mol_vary_spec.true : $mol_vary_spec.fake;
2595
- release(8);
2596
- return;
2597
- }
2598
- case 'number': {
2599
- if (!Number.isInteger(val))
2600
- return dump_float(val);
2586
+ const dumpers = {
2587
+ undefined: () => {
2588
+ this.array[pos++] = $mol_vary_spec.both;
2589
+ capacity -= 8;
2590
+ },
2591
+ boolean: val => {
2592
+ this.array[pos++] = val ? $mol_vary_spec.true : $mol_vary_spec.fake;
2593
+ capacity -= 8;
2594
+ },
2595
+ number: val => {
2596
+ if (!Number.isInteger(val))
2597
+ dump_float(val);
2598
+ else
2599
+ dumpers.bigint(val);
2600
+ },
2601
+ bigint: val => {
2602
+ if (val < 0) {
2603
+ dump_snum(val);
2601
2604
  }
2602
- case 'bigint': {
2603
- if (val < 0) {
2604
- dump_snum(val);
2605
- }
2606
- else {
2607
- dump_unum($mol_vary_tip.uint, val);
2608
- }
2609
- return;
2605
+ else {
2606
+ dump_unum($mol_vary_tip.uint, val);
2610
2607
  }
2611
- case 'string': return dump_string(val);
2612
- case 'object': {
2613
- if (!val) {
2614
- release(8);
2615
- return this.array[pos++] = $mol_vary_spec.none;
2616
- }
2617
- if (ArrayBuffer.isView(val))
2618
- return dump_buffer(val);
2619
- if (Array.isArray(val))
2620
- return dump_list(val);
2621
- return dump_object(val);
2608
+ },
2609
+ string: val => dump_string(val),
2610
+ object: val => {
2611
+ if (!val) {
2612
+ capacity -= 8;
2613
+ return this.array[pos++] = $mol_vary_spec.none;
2622
2614
  }
2615
+ if (Array.isArray(val))
2616
+ return dump_list(val);
2617
+ if (ArrayBuffer.isView(val))
2618
+ return dump_buffer(val);
2619
+ return dump_object(val);
2623
2620
  }
2624
- $mol_fail(new Error(`Unsupported type`));
2625
2621
  };
2626
- for (const item of data) {
2622
+ const dump = (val) => {
2623
+ const dumper = dumpers[typeof val];
2624
+ if (!dumper)
2625
+ $mol_fail(new Error(`Unsupported type`));
2626
+ dumper(val);
2627
+ };
2628
+ for (let i = 0; i < data.length; ++i) {
2627
2629
  capacity += 9;
2628
- dump(item);
2630
+ dump(data[i]);
2629
2631
  if (stack.length)
2630
- $mol_fail(new Error('Stack underflow', { cause: { stack, item } }));
2632
+ $mol_fail(new Error('Stack underflow', { cause: { stack, item: data[i] } }));
2631
2633
  offsets.clear();
2632
2634
  }
2633
2635
  if (pos !== capacity)
@@ -2832,12 +2834,12 @@ var $;
2832
2834
  }
2833
2835
  rich_node(keys) {
2834
2836
  let node = this.rich_index;
2835
- for (const key of keys) {
2836
- let sub = node.get(key);
2837
+ for (let i = 0; i < keys.length; ++i) {
2838
+ let sub = node.get(keys[i]);
2837
2839
  if (sub)
2838
2840
  node = sub;
2839
2841
  else
2840
- node.set(key, node = new Map);
2842
+ node.set(keys[i], node = new Map);
2841
2843
  }
2842
2844
  return node;
2843
2845
  }