UNPKG

@metaplex-foundation/umi-serializers-core

Version:

Core types and helpers for UMI serializers

1 lines 2.26 kB
{"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;;;;"}