@metaplex-foundation/umi-serializers-core
Version:
Core types and helpers for UMI serializers
1 lines • 1.99 kB
Source Map (JSON)
{"version":3,"file":"reverseSerializer.cjs","sources":["../../src/reverseSerializer.ts"],"sourcesContent":["import { mergeBytes } from './bytes';\nimport { Serializer } from './common';\nimport { ExpectedFixedSizeSerializerError } from './errors';\n\n/**\n * Reverses the bytes of a fixed-size serializer.\n * @category Serializers\n */\nexport function reverseSerializer<T, U extends T = T>(\n serializer: Serializer<T, U>\n): Serializer<T, U> {\n if (serializer.fixedSize === null) {\n throw new ExpectedFixedSizeSerializerError(\n 'Cannot reverse a serializer of variable size.'\n );\n }\n return {\n ...serializer,\n serialize: (value: T) => serializer.serialize(value).reverse(),\n deserialize: (bytes: Uint8Array, offset = 0) => {\n const fixedSize = serializer.fixedSize as number;\n const newBytes = mergeBytes([\n bytes.slice(0, offset),\n bytes.slice(offset, offset + fixedSize).reverse(),\n bytes.slice(offset + fixedSize),\n ]);\n return serializer.deserialize(newBytes, offset);\n },\n };\n}\n"],"names":["reverseSerializer","serializer","fixedSize","ExpectedFixedSizeSerializerError","serialize","value","reverse","deserialize","bytes","offset","newBytes","mergeBytes","slice"],"mappings":";;;;;;;AAIA;AACA;AACA;AACA;AACO,SAASA,iBAAiB,CAC/BC,UAA4B,EACV;AAClB,EAAA,IAAIA,UAAU,CAACC,SAAS,KAAK,IAAI,EAAE;AACjC,IAAA,MAAM,IAAIC,uCAAgC,CACxC,+CAA+C,CAChD,CAAA;AACH,GAAA;EACA,OAAO;AACL,IAAA,GAAGF,UAAU;IACbG,SAAS,EAAGC,KAAQ,IAAKJ,UAAU,CAACG,SAAS,CAACC,KAAK,CAAC,CAACC,OAAO,EAAE;AAC9DC,IAAAA,WAAW,EAAE,CAACC,OAAiB,EAAEC,MAAM,GAAG,CAAC,KAAK;AAC9C,MAAA,MAAMP,SAAS,GAAGD,UAAU,CAACC,SAAmB,CAAA;AAChD,MAAA,MAAMQ,QAAQ,GAAGC,gBAAU,CAAC,CAC1BH,OAAK,CAACI,KAAK,CAAC,CAAC,EAAEH,MAAM,CAAC,EACtBD,OAAK,CAACI,KAAK,CAACH,MAAM,EAAEA,MAAM,GAAGP,SAAS,CAAC,CAACI,OAAO,EAAE,EACjDE,OAAK,CAACI,KAAK,CAACH,MAAM,GAAGP,SAAS,CAAC,CAChC,CAAC,CAAA;AACF,MAAA,OAAOD,UAAU,CAACM,WAAW,CAACG,QAAQ,EAAED,MAAM,CAAC,CAAA;AACjD,KAAA;GACD,CAAA;AACH;;;;"}