@aeternity/aepp-calldata
Version:
Aeternity data serialization library
33 lines (32 loc) • 1.47 kB
JavaScript
;
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;