All files / src asyncDefine.ts

100% Statements 9/9
100% Branches 0/0
100% Functions 4/4
100% Lines 9/9

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 23 24 25 26 27 28 2919x             19x       12x 12x       2x 1x     1x 1x     2x        
import {
  asyncContextSer,
  contextFromBytes,
  createContext
} from "./context";
import { AsyncDes, AsyncSer, AsyncSerDes } from "./types";
 
export function asyncDefine<T>(
  ser: AsyncSer<T>,
  des: AsyncDes<T>
): AsyncSerDes<T> {
  const ctx = createContext();
  return {
    ser,
    des,
    async toBytes(data) {
      await asyncContextSer(ctx, ser, data);
      return ctx.bytes.slice(0, ctx.i);
    },
    async toTempBytes(data) {
      await asyncContextSer(ctx, ser, data);
      return ctx.bytes.subarray(0, ctx.i);
    },
    fromBytes(buf: Uint8Array) {
      return des(contextFromBytes(buf));
    }
  };
}