{"version":3,"file":"reverseSerializer.mjs","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,gCAAgC,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,KAAiB,EAAEC,MAAM,GAAG,CAAC,KAAK;AAC9C,MAAA,MAAMP,SAAS,GAAGD,UAAU,CAACC,SAAmB,CAAA;AAChD,MAAA,MAAMQ,QAAQ,GAAGC,UAAU,CAAC,CAC1BH,KAAK,CAACI,KAAK,CAAC,CAAC,EAAEH,MAAM,CAAC,EACtBD,KAAK,CAACI,KAAK,CAACH,MAAM,EAAEA,MAAM,GAAGP,SAAS,CAAC,CAACI,OAAO,EAAE,EACjDE,KAAK,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;;;;"}