UNPKG

@iota-pico/data

Version:

IOTA Pico Framework Data Structures and Helpers

55 lines 4.66 kB
Object.defineProperty(exports, "__esModule", { value: true }); const objectHelper_1 = require("@iota-pico/core/dist/helpers/objectHelper"); const stringHelper_1 = require("@iota-pico/core/dist/helpers/stringHelper"); const trytes_1 = require("../data/trytes"); const dataError_1 = require("../error/dataError"); /** * Trytes converter that converts to and from a string. */ class AsciiTrytesConverter { /** * Convert a string value into trytes. * @param value value to convert into trytes. * @returns The trytes representation of the value. */ to(value) { if (!stringHelper_1.StringHelper.isString(value)) { throw new dataError_1.DataError("The value must be a string", { value }); } if (!stringHelper_1.StringHelper.isASCII(value)) { throw new dataError_1.DataError("The value contains non ASCII characters", { value }); } let trytes = ""; for (let i = 0; i < value.length; i++) { const asciiValue = value.charCodeAt(i); const firstValue = asciiValue % 27; const secondValue = (asciiValue - firstValue) / 27; trytes += trytes_1.Trytes.ALPHABET[firstValue] + trytes_1.Trytes.ALPHABET[secondValue]; } return trytes_1.Trytes.fromString(trytes); } /** * Convert trytes into a string value. * @param trytes to convert into a string value. * @returns The string value converted from the trytes. */ from(trytes) { if (!objectHelper_1.ObjectHelper.isType(trytes, trytes_1.Trytes)) { throw new dataError_1.DataError("The trytes parameter is empty or not the correct type"); } const trytesString = trytes.toString(); if (trytesString.length % 2 === 1) { throw new dataError_1.DataError("The trytes length must be an even number"); } let ascii = ""; for (let i = 0; i < trytesString.length; i += 2) { const firstValue = trytes_1.Trytes.ALPHABET.indexOf(trytesString[i]); const secondValue = trytes_1.Trytes.ALPHABET.indexOf(trytesString[i + 1]); const decimalValue = firstValue + secondValue * 27; ascii += String.fromCharCode(decimalValue); } return ascii; } } exports.AsciiTrytesConverter = AsciiTrytesConverter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNjaWlUcnl0ZXNDb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udmVydGVycy9hc2NpaVRyeXRlc0NvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNEVBQXlFO0FBQ3pFLDRFQUF5RTtBQUN6RSwyQ0FBd0M7QUFDeEMsa0RBQStDO0FBRy9DOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFDN0I7Ozs7T0FJRztJQUNJLEVBQUUsQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQywyQkFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQixNQUFNLElBQUkscUJBQVMsQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDaEU7UUFFRCxJQUFJLENBQUMsMkJBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLHFCQUFTLENBQUMseUNBQXlDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQzdFO1FBRUQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdkMsTUFBTSxVQUFVLEdBQUcsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFdBQVcsR0FBRyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFbkQsTUFBTSxJQUFJLGVBQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsZUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN4RTtRQUVELE9BQU8sZUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxNQUFjO1FBQ3RCLElBQUksQ0FBQywyQkFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZUFBTSxDQUFDLEVBQUU7WUFDdEMsTUFBTSxJQUFJLHFCQUFTLENBQUMsdURBQXVELENBQUMsQ0FBQztTQUNoRjtRQUNELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV2QyxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQixNQUFNLElBQUkscUJBQVMsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QyxNQUFNLFVBQVUsR0FBRyxlQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxNQUFNLFdBQVcsR0FBRyxlQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFakUsTUFBTSxZQUFZLEdBQUcsVUFBVSxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFFbkQsS0FBSyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDOUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0o7QUF6REQsb0RBeURDIn0=