@mysten/bcs
Version:
BCS - Canonical Binary Serialization implementation for JavaScript
1 lines • 2.78 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase58, fromBase64, fromHex, toBase58, toBase64, toHex } from '@mysten/utils';\nimport type { Encoding } from './types.js';\n\n/**\n * Encode data with either `hex` or `base64`.\n *\n * @param {Uint8Array} data Data to encode.\n * @param {String} encoding Encoding to use: base64 or hex\n * @returns {String} Encoded value.\n */\nexport function encodeStr(data: Uint8Array, encoding: Encoding): string {\n\tswitch (encoding) {\n\t\tcase 'base58':\n\t\t\treturn toBase58(data);\n\t\tcase 'base64':\n\t\t\treturn toBase64(data);\n\t\tcase 'hex':\n\t\t\treturn toHex(data);\n\t\tdefault:\n\t\t\tthrow new Error('Unsupported encoding, supported values are: base64, hex');\n\t}\n}\n\n/**\n * Decode either `base64` or `hex` data.\n *\n * @param {String} data Data to encode.\n * @param {String} encoding Encoding to use: base64 or hex\n * @returns {Uint8Array} Encoded value.\n */\nexport function decodeStr(data: string, encoding: Encoding): Uint8Array {\n\tswitch (encoding) {\n\t\tcase 'base58':\n\t\t\treturn fromBase58(data);\n\t\tcase 'base64':\n\t\t\treturn fromBase64(data);\n\t\tcase 'hex':\n\t\t\treturn fromHex(data);\n\t\tdefault:\n\t\t\tthrow new Error('Unsupported encoding, supported values are: base64, hex');\n\t}\n}\n\nexport function splitGenericParameters(\n\tstr: string,\n\tgenericSeparators: [string, string] = ['<', '>'],\n) {\n\tconst [left, right] = genericSeparators;\n\tconst tok = [];\n\tlet word = '';\n\tlet nestedAngleBrackets = 0;\n\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str[i];\n\t\tif (char === left) {\n\t\t\tnestedAngleBrackets++;\n\t\t}\n\t\tif (char === right) {\n\t\t\tnestedAngleBrackets--;\n\t\t}\n\t\tif (nestedAngleBrackets === 0 && char === ',') {\n\t\t\ttok.push(word.trim());\n\t\t\tword = '';\n\t\t\tcontinue;\n\t\t}\n\t\tword += char;\n\t}\n\n\ttok.push(word.trim());\n\n\treturn tok;\n}\n"],"mappings":";;;;;;;;;;AAaA,SAAgB,UAAU,MAAkB,UAA4B;AACvE,SAAQ,UAAR;EACC,KAAK,SACJ,QAAO,SAAS,KAAK;EACtB,KAAK,SACJ,QAAO,SAAS,KAAK;EACtB,KAAK,MACJ,QAAO,MAAM,KAAK;EACnB,QACC,OAAM,IAAI,MAAM,0DAA0D;;;;;;;;;;AAW7E,SAAgB,UAAU,MAAc,UAAgC;AACvE,SAAQ,UAAR;EACC,KAAK,SACJ,QAAO,WAAW,KAAK;EACxB,KAAK,SACJ,QAAO,WAAW,KAAK;EACxB,KAAK,MACJ,QAAO,QAAQ,KAAK;EACrB,QACC,OAAM,IAAI,MAAM,0DAA0D;;;AAI7E,SAAgB,uBACf,KACA,oBAAsC,CAAC,KAAK,IAAI,EAC/C;CACD,MAAM,CAAC,MAAM,SAAS;CACtB,MAAM,MAAM,EAAE;CACd,IAAI,OAAO;CACX,IAAI,sBAAsB;AAE1B,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;EACpC,MAAM,OAAO,IAAI;AACjB,MAAI,SAAS,KACZ;AAED,MAAI,SAAS,MACZ;AAED,MAAI,wBAAwB,KAAK,SAAS,KAAK;AAC9C,OAAI,KAAK,KAAK,MAAM,CAAC;AACrB,UAAO;AACP;;AAED,UAAQ;;AAGT,KAAI,KAAK,KAAK,MAAM,CAAC;AAErB,QAAO"}