1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- "use strict";
- /**
- * The [Base58 Encoding](link-base58) scheme allows a **numeric** value
- * to be encoded as a compact string using a radix of 58 using only
- * alpha-numeric characters. Confusingly similar characters are omitted
- * (i.e. ``"l0O"``).
- *
- * Note that Base58 encodes a **numeric** value, not arbitrary bytes,
- * since any zero-bytes on the left would get removed. To mitigate this
- * issue most schemes that use Base58 choose specific high-order values
- * to ensure non-zero prefixes.
- *
- * @_subsection: api/utils:Base58 Encoding [about-base58]
- */
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.decodeBase58 = exports.encodeBase58 = void 0;
- const data_js_1 = require("./data.js");
- const errors_js_1 = require("./errors.js");
- const maths_js_1 = require("./maths.js");
- const Alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
- let Lookup = null;
- function getAlpha(letter) {
- if (Lookup == null) {
- Lookup = {};
- for (let i = 0; i < Alphabet.length; i++) {
- Lookup[Alphabet[i]] = BigInt(i);
- }
- }
- const result = Lookup[letter];
- (0, errors_js_1.assertArgument)(result != null, `invalid base58 value`, "letter", letter);
- return result;
- }
- const BN_0 = BigInt(0);
- const BN_58 = BigInt(58);
- /**
- * Encode %%value%% as a Base58-encoded string.
- */
- function encodeBase58(_value) {
- const bytes = (0, data_js_1.getBytes)(_value);
- let value = (0, maths_js_1.toBigInt)(bytes);
- let result = "";
- while (value) {
- result = Alphabet[Number(value % BN_58)] + result;
- value /= BN_58;
- }
- // Account for leading padding zeros
- for (let i = 0; i < bytes.length; i++) {
- if (bytes[i]) {
- break;
- }
- result = Alphabet[0] + result;
- }
- return result;
- }
- exports.encodeBase58 = encodeBase58;
- /**
- * Decode the Base58-encoded %%value%%.
- */
- function decodeBase58(value) {
- let result = BN_0;
- for (let i = 0; i < value.length; i++) {
- result *= BN_58;
- result += getAlpha(value[i]);
- }
- return result;
- }
- exports.decodeBase58 = decodeBase58;
- //# sourceMappingURL=base58.js.map
|