{"version":3,"file":"mapSerializer.mjs","sources":["../../src/mapSerializer.ts"],"sourcesContent":["import { Serializer } from './common';\n\n/**\n * Converts a serializer A to a serializer B by mapping their values.\n * @category Serializers\n */\nexport function mapSerializer<NewFrom, OldFrom, To extends NewFrom & OldFrom>(\n  serializer: Serializer<OldFrom, To>,\n  unmap: (value: NewFrom) => OldFrom\n): Serializer<NewFrom, To>;\nexport function mapSerializer<\n  NewFrom,\n  OldFrom,\n  NewTo extends NewFrom = NewFrom,\n  OldTo extends OldFrom = OldFrom\n>(\n  serializer: Serializer<OldFrom, OldTo>,\n  unmap: (value: NewFrom) => OldFrom,\n  map: (value: OldTo, buffer: Uint8Array, offset: number) => NewTo\n): Serializer<NewFrom, NewTo>;\nexport function mapSerializer<\n  NewFrom,\n  OldFrom,\n  NewTo extends NewFrom = NewFrom,\n  OldTo extends OldFrom = OldFrom\n>(\n  serializer: Serializer<OldFrom, OldTo>,\n  unmap: (value: NewFrom) => OldFrom,\n  map?: (value: OldTo, buffer: Uint8Array, offset: number) => NewTo\n): Serializer<NewFrom, NewTo> {\n  return {\n    description: serializer.description,\n    fixedSize: serializer.fixedSize,\n    maxSize: serializer.maxSize,\n    serialize: (value: NewFrom) => serializer.serialize(unmap(value)),\n    deserialize: (buffer: Uint8Array, offset = 0) => {\n      const [value, length] = serializer.deserialize(buffer, offset);\n      return map\n        ? [map(value, buffer, offset), length]\n        : [value as any, length];\n    },\n  };\n}\n"],"names":["mapSerializer","serializer","unmap","map","description","fixedSize","maxSize","serialize","value","deserialize","buffer","offset","length"],"mappings":"AAEA;AACA;AACA;AACA;;AAeO,SAASA,aAAa,CAM3BC,UAAsC,EACtCC,KAAkC,EAClCC,GAAiE,EACrC;EAC5B,OAAO;IACLC,WAAW,EAAEH,UAAU,CAACG,WAAW;IACnCC,SAAS,EAAEJ,UAAU,CAACI,SAAS;IAC/BC,OAAO,EAAEL,UAAU,CAACK,OAAO;IAC3BC,SAAS,EAAGC,KAAc,IAAKP,UAAU,CAACM,SAAS,CAACL,KAAK,CAACM,KAAK,CAAC,CAAC;AACjEC,IAAAA,WAAW,EAAE,CAACC,MAAkB,EAAEC,MAAM,GAAG,CAAC,KAAK;AAC/C,MAAA,MAAM,CAACH,KAAK,EAAEI,MAAM,CAAC,GAAGX,UAAU,CAACQ,WAAW,CAACC,MAAM,EAAEC,MAAM,CAAC,CAAA;AAC9D,MAAA,OAAOR,GAAG,GACN,CAACA,GAAG,CAACK,KAAK,EAAEE,MAAM,EAAEC,MAAM,CAAC,EAAEC,MAAM,CAAC,GACpC,CAACJ,KAAK,EAASI,MAAM,CAAC,CAAA;AAC5B,KAAA;GACD,CAAA;AACH;;;;"}