UNPKG

@ton.js/core

Version:

TonWeb - JavaScript API for TON blockchain

65 lines 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseAddress = exports.parseOffchainUriCell = exports.createOffchainUriCell = exports.parseUri = exports.serializeUri = exports.OFFCHAIN_CONTENT_PREFIX = exports.ONCHAIN_CONTENT_PREFIX = exports.CHUNK_DATA_PREFIX = exports.SNAKE_DATA_PREFIX = void 0; const cell_1 = require("../../../boc/cell"); const text_encoding_1 = require("../../../utils/text-encoding"); const address_1 = require("../../../utils/address"); exports.SNAKE_DATA_PREFIX = 0x00; exports.CHUNK_DATA_PREFIX = 0x01; exports.ONCHAIN_CONTENT_PREFIX = 0x00; exports.OFFCHAIN_CONTENT_PREFIX = 0x01; function serializeUri(uri) { return text_encoding_1.textEncoder.encode(encodeURI(uri)); } exports.serializeUri = serializeUri; function parseUri(bytes) { return new TextDecoder().decode(bytes); } exports.parseUri = parseUri; function createOffchainUriCell(uri) { const cell = new cell_1.Cell(); cell.bits.writeUint(exports.OFFCHAIN_CONTENT_PREFIX, 8); cell.bits.writeBytes(serializeUri(uri)); return cell; } exports.createOffchainUriCell = createOffchainUriCell; function parseOffchainUriCell(cell) { let length = 0; let c = cell; while (c) { length += c.bits.array.length; c = c.refs[0]; } const bytes = new Uint8Array(length); length = 0; c = cell; while (c) { bytes.set(c.bits.array, length); length += c.bits.array.length; c = c.refs[0]; } return parseUri(bytes.slice(1)); // slice OFFCHAIN_CONTENT_PREFIX } exports.parseOffchainUriCell = parseOffchainUriCell; function parseAddress(cell) { let n = readIntFromBitString(cell.bits, 3, 8); if (n > BigInt(127)) { n -= BigInt(256); } const hashPart = readIntFromBitString(cell.bits, 3 + 8, 256); if (n.toString(10) + ":" + hashPart.toString(16) === '0:0') { return undefined; } const address = n.toString(10) + ":" + hashPart.toString(16).padStart(64, '0'); return new address_1.Address(address); } exports.parseAddress = parseAddress; function readIntFromBitString(bitString, cursor, bits) { let n = BigInt(0); for (let i = 0; i < bits; i++) { n *= BigInt(2); n += BigInt(bitString.get(cursor + i)); } return n; } //# sourceMappingURL=utils.js.map