utils.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.crypto = exports.utf8ToBytes = exports.createView = exports.concatBytes = exports.toHex = exports.bytesToHex = exports.assertBytes = exports.assertBool = void 0;
  7. exports.bytesToUtf8 = bytesToUtf8;
  8. exports.hexToBytes = hexToBytes;
  9. exports.equalsBytes = equalsBytes;
  10. exports.wrapHash = wrapHash;
  11. const _assert_1 = __importDefault(require("@noble/hashes/_assert"));
  12. const utils_1 = require("@noble/hashes/utils");
  13. const assertBool = _assert_1.default.bool;
  14. exports.assertBool = assertBool;
  15. const assertBytes = _assert_1.default.bytes;
  16. exports.assertBytes = assertBytes;
  17. var utils_2 = require("@noble/hashes/utils");
  18. Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return utils_2.bytesToHex; } });
  19. Object.defineProperty(exports, "toHex", { enumerable: true, get: function () { return utils_2.bytesToHex; } });
  20. Object.defineProperty(exports, "concatBytes", { enumerable: true, get: function () { return utils_2.concatBytes; } });
  21. Object.defineProperty(exports, "createView", { enumerable: true, get: function () { return utils_2.createView; } });
  22. Object.defineProperty(exports, "utf8ToBytes", { enumerable: true, get: function () { return utils_2.utf8ToBytes; } });
  23. // buf.toString('utf8') -> bytesToUtf8(buf)
  24. function bytesToUtf8(data) {
  25. if (!(data instanceof Uint8Array)) {
  26. throw new TypeError(`bytesToUtf8 expected Uint8Array, got ${typeof data}`);
  27. }
  28. return new TextDecoder().decode(data);
  29. }
  30. function hexToBytes(data) {
  31. const sliced = data.startsWith("0x") ? data.substring(2) : data;
  32. return (0, utils_1.hexToBytes)(sliced);
  33. }
  34. // buf.equals(buf2) -> equalsBytes(buf, buf2)
  35. function equalsBytes(a, b) {
  36. if (a.length !== b.length) {
  37. return false;
  38. }
  39. for (let i = 0; i < a.length; i++) {
  40. if (a[i] !== b[i]) {
  41. return false;
  42. }
  43. }
  44. return true;
  45. }
  46. // Internal utils
  47. function wrapHash(hash) {
  48. return (msg) => {
  49. _assert_1.default.bytes(msg);
  50. return hash(msg);
  51. };
  52. }
  53. // TODO(v3): switch away from node crypto, remove this unnecessary variable.
  54. exports.crypto = (() => {
  55. const webCrypto = typeof globalThis === "object" && "crypto" in globalThis ? globalThis.crypto : undefined;
  56. const nodeRequire = typeof module !== "undefined" &&
  57. typeof module.require === "function" &&
  58. module.require.bind(module);
  59. return {
  60. node: nodeRequire && !webCrypto ? nodeRequire("crypto") : undefined,
  61. web: webCrypto
  62. };
  63. })();