UNPKG

@aeternity/aepp-calldata

Version:
33 lines (32 loc) 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _FateTag = _interopRequireDefault(require("../FateTag.cjs")); var _BaseSerializer = _interopRequireDefault(require("./BaseSerializer.cjs")); var _ByteArraySerializer = _interopRequireDefault(require("./ByteArraySerializer.cjs")); var _FateString = _interopRequireDefault(require("../types/FateString.cjs")); var _FatePrefixError = _interopRequireDefault(require("../Errors/FatePrefixError.cjs")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const byteArraySerializer = new _ByteArraySerializer.default(); class StringSerializer extends _BaseSerializer.default { serialize(value) { let bytesOrString = value.valueOf(); if (typeof bytesOrString === 'string') { const encoder = new TextEncoder(); bytesOrString = encoder.encode(bytesOrString); } return byteArraySerializer.serialize(bytesOrString); } deserializeStream(data) { const buffer = new Uint8Array(data); const prefix = buffer[0]; if ((prefix & 0b11) !== _FateTag.default.SHORT_STRING && ![_FateTag.default.EMPTY_STRING, _FateTag.default.LONG_STRING].includes(prefix)) { throw new _FatePrefixError.default(prefix); } const [bytes, rest] = byteArraySerializer.deserializeStream(buffer); return [new _FateString.default(bytes.valueOf()), rest]; } } var _default = exports.default = StringSerializer;