{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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AG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IACrJ,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IACrJ,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IACrJ,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IACrJ,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAAG,GAA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","file":"index.mjs","sourcesContent":["class Base62Str {\r\n\r\n    public static getBytes(str: string) {\r\n        const bytes = [];\r\n        for (let i = 0; i < str.length; i++) {\r\n            const char = str.charCodeAt(i);\r\n            // tslint:disable-next-line:no-bitwise\r\n            bytes.push(char & 0xFF);\r\n        }\r\n        return bytes;\r\n    }\r\n\r\n    public static getString(arr: number[]) {\r\n        return String.fromCharCode.apply(this, arr)\r\n    }\r\n\r\n    /**\r\n     * Creates a {@link Base62} instance. Defaults to the GMP-style character set.\r\n     *\r\n     * @return a {@link Base62} instance.\r\n     */\r\n    public static createInstance():Base62Str {\r\n        return this.createInstanceWithGmpCharacterSet();\r\n    }\r\n\r\n    /**\r\n     * Creates a {@link Base62} instance using the GMP-style character set.\r\n     *\r\n     * @return a {@link Base62} instance.\r\n     */\r\n    public static createInstanceWithGmpCharacterSet():Base62Str {\r\n        return new Base62Str(Base62Str.CharacterSets.GMP);\r\n    }\r\n\r\n    /**\r\n     * Creates a {@link Base62} instance using the inverted character set.\r\n     *\r\n     * @return a {@link Base62} instance.\r\n     */\r\n    public static createInstanceWithInvertedCharacterSet():Base62Str {\r\n        return new Base62Str(Base62Str.CharacterSets.INVERTED);\r\n    }\r\n\r\n    private static CharacterSets = {\r\n        GMP: [\r\n            '0'.charCodeAt(0), '1'.charCodeAt(0), '2'.charCodeAt(0), '3'.charCodeAt(0), '4'.charCodeAt(0), '5'.charCodeAt(0), '6'.charCodeAt(0), '7'.charCodeAt(0),\r\n            '8'.charCodeAt(0), '9'.charCodeAt(0), 'A'.charCodeAt(0), 'B'.charCodeAt(0), 'C'.charCodeAt(0), 'D'.charCodeAt(0), 'E'.charCodeAt(0), 'F'.charCodeAt(0),\r\n            'G'.charCodeAt(0), 'H'.charCodeAt(0), 'I'.charCodeAt(0), 'J'.charCodeAt(0), 'K'.charCodeAt(0), 'L'.charCodeAt(0), 'M'.charCodeAt(0), 'N'.charCodeAt(0),\r\n            'O'.charCodeAt(0), 'P'.charCodeAt(0), 'Q'.charCodeAt(0), 'R'.charCodeAt(0), 'S'.charCodeAt(0), 'T'.charCodeAt(0), 'U'.charCodeAt(0), 'V'.charCodeAt(0),\r\n            'W'.charCodeAt(0), 'X'.charCodeAt(0), 'Y'.charCodeAt(0), 'Z'.charCodeAt(0), 'a'.charCodeAt(0), 'b'.charCodeAt(0), 'c'.charCodeAt(0), 'd'.charCodeAt(0),\r\n            'e'.charCodeAt(0), 'f'.charCodeAt(0), 'g'.charCodeAt(0), 'h'.charCodeAt(0), 'i'.charCodeAt(0), 'j'.charCodeAt(0), 'k'.charCodeAt(0), 'l'.charCodeAt(0),\r\n            'm'.charCodeAt(0), 'n'.charCodeAt(0), 'o'.charCodeAt(0), 'p'.charCodeAt(0), 'q'.charCodeAt(0), 'r'.charCodeAt(0), 's'.charCodeAt(0), 't'.charCodeAt(0),\r\n            'u'.charCodeAt(0), 'v'.charCodeAt(0), 'w'.charCodeAt(0), 'x'.charCodeAt(0), 'y'.charCodeAt(0), 'z'.charCodeAt(0)\r\n        ],\r\n        INVERTED: [\r\n            '0'.charCodeAt(0), '1'.charCodeAt(0), '2'.charCodeAt(0), '3'.charCodeAt(0), '4'.charCodeAt(0), '5'.charCodeAt(0), '6'.charCodeAt(0), '7'.charCodeAt(0),\r\n            '8'.charCodeAt(0), '9'.charCodeAt(0), 'a'.charCodeAt(0), 'b'.charCodeAt(0), 'c'.charCodeAt(0), 'd'.charCodeAt(0), 'e'.charCodeAt(0), 'f'.charCodeAt(0),\r\n            'g'.charCodeAt(0), 'h'.charCodeAt(0), 'i'.charCodeAt(0), 'j'.charCodeAt(0), 'k'.charCodeAt(0), 'l'.charCodeAt(0), 'm'.charCodeAt(0), 'n'.charCodeAt(0),\r\n            'o'.charCodeAt(0), 'p'.charCodeAt(0), 'q'.charCodeAt(0), 'r'.charCodeAt(0), 's'.charCodeAt(0), 't'.charCodeAt(0), 'u'.charCodeAt(0), 'v'.charCodeAt(0),\r\n            'w'.charCodeAt(0), 'x'.charCodeAt(0), 'y'.charCodeAt(0), 'z'.charCodeAt(0), 'A'.charCodeAt(0), 'B'.charCodeAt(0), 'C'.charCodeAt(0), 'D'.charCodeAt(0),\r\n            'E'.charCodeAt(0), 'F'.charCodeAt(0), 'G'.charCodeAt(0), 'H'.charCodeAt(0), 'I'.charCodeAt(0), 'J'.charCodeAt(0), 'K'.charCodeAt(0), 'L'.charCodeAt(0),\r\n            'M'.charCodeAt(0), 'N'.charCodeAt(0), 'O'.charCodeAt(0), 'P'.charCodeAt(0), 'Q'.charCodeAt(0), 'R'.charCodeAt(0), 'S'.charCodeAt(0), 'T'.charCodeAt(0),\r\n            'U'.charCodeAt(0), 'V'.charCodeAt(0), 'W'.charCodeAt(0), 'X'.charCodeAt(0), 'Y'.charCodeAt(0), 'Z'.charCodeAt(0)\r\n        ]\r\n    };\r\n\r\n    private static STANDARD_BASE = 256;\r\n\r\n    private static TARGET_BASE = 62;\r\n\r\n    /**\r\n     * Uses the elements of a byte array as indices to a dictionary and returns the corresponding values\r\n     * in form of a byte array.\r\n     */\r\n    private static translate(indices: number[], dictionary: number[]) {\r\n        const translation = [];\r\n\r\n        for (const indicesi of indices) {\r\n            translation.push(dictionary[indicesi]);\r\n        }\r\n        return translation;\r\n    }\r\n\r\n\r\n    /**\r\n     * Converts a byte array from a source base to a target base using the alphabet.\r\n     */\r\n    private static convert(message: number[], sourceBase: number, targetBase: number) {\r\n        /**\r\n         * This algorithm is inspired by: http://codegolf.stackexchange.com/a/21672\r\n         */\r\n\r\n        const out: number[] = [];\r\n\r\n        let source = message;\r\n\r\n        while (source.length > 0) {\r\n            const quotient: number[] = [];\r\n\r\n            let remainder = 0;\r\n\r\n            for (const sourcei of source) {\r\n                // tslint:disable-next-line:no-bitwise\r\n                const accumulator = (sourcei & 0xFF) + remainder * sourceBase;\r\n                const digit = (accumulator - (accumulator % targetBase)) / targetBase;\r\n\r\n                remainder = accumulator % targetBase;\r\n\r\n                if (quotient.length > 0 || digit > 0) {\r\n                    quotient.push(digit);\r\n                }\r\n            }\r\n            out.push(remainder);\r\n            source = quotient;\r\n        }\r\n\r\n        // pad output with zeroes corresponding to the number of leading zeroes in the message\r\n        for (let i = 0; i < message.length - 1 && message[i] === 0; i++) {\r\n            out.push(0);\r\n        }\r\n\r\n        return out.reverse();\r\n    }\r\n\r\n    private readonly alphabet: number[];\r\n\r\n    private lookup: number[];\r\n\r\n    constructor(alphabet: number[]) {\r\n        this.alphabet = alphabet;\r\n        this.lookup = this.createLookupTable();\r\n    }\r\n\r\n    /**\r\n     * Encodes a sequence of bytes in Base62 encoding.\r\n     *\r\n     * @param message a byte sequence.\r\n     * @return a sequence of Base62-encoded bytes.\r\n     */\r\n    public encode(message: number[]): number[] {\r\n        const indices = Base62Str.convert(message, Base62Str.STANDARD_BASE, Base62Str.TARGET_BASE);\r\n        return Base62Str.translate(indices, this.alphabet);\r\n    }\r\n\r\n    /**\r\n     * Decodes a sequence of Base62-encoded bytes.\r\n     *\r\n     * @param encoded a sequence of Base62-encoded bytes.\r\n     * @return a byte sequence.\r\n     */\r\n    public decode(encoded: number[]): number[] {\r\n        const prepared = Base62Str.translate(encoded, this.lookup);\r\n        return Base62Str.convert(prepared, Base62Str.TARGET_BASE, Base62Str.STANDARD_BASE);\r\n    }\r\n\r\n    public encodeStr(input:string): string {\r\n        return Base62Str.getString(this.encode(Base62Str.getBytes(input)));\r\n    }\r\n\r\n    public decodeStr(input:string): string {\r\n        return Base62Str.getString(this.decode(Base62Str.getBytes(input)));\r\n    }\r\n\r\n    /**\r\n     * Creates the lookup table from character to index of character in character set.\r\n     */\r\n    private createLookupTable() {\r\n        const lookup = new Array<number>(256);\r\n\r\n        for (let i = 0; i < 256; i++) {\r\n            // tslint:disable-next-line:no-bitwise\r\n            lookup[this.alphabet[i]] = (i & 0xFF);\r\n        }\r\n\treturn lookup;\r\n    }\r\n\r\n}\r\n\r\nexport default Base62Str;\r\n"]}