All files / src/common_serdes map.ts

100% Statements 15/15
100% Branches 0/0
100% Functions 3/3
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2319x     19x 1x   1x 1x 1x 2x 2x       1x 1x 1x 2x   1x      
import { define } from "../define";
import { MapFactory, GetType } from "../types";
 
export const map: MapFactory = (keySd, valueSd, headSd) =>
  define(
    (ctx, data) => {
      const { length } = Object.keys(data);
      headSd.ser(ctx, length);
      for (const key in data) {
        keySd.ser(ctx, key);
        valueSd.ser(ctx, data[key]);
      }
    },
    (ctx) => {
      const length = headSd.des(ctx);
      const data: Record<string, GetType<typeof valueSd>> = {};
      for (let i = 0; i < length; i++) {
        data[keySd.des(ctx)] = valueSd.des(ctx);
      }
      return data;
    }
  );