From 6ec437d0acdffce01200b0da48c108c7b729ec2d Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 20 Dec 2022 10:55:21 -0600 Subject: [PATCH 01/11] update eth-sig-util version to latest --- index.js | 14 +-- package.json | 2 +- test/test-eth-ledger-bridge-keyring.js | 2 +- yarn.lock | 128 +++++++++++++++---------- 4 files changed, 88 insertions(+), 58 deletions(-) diff --git a/index.js b/index.js index 9c11576c..b63b1811 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,7 @@ const { EventEmitter } = require('events') const HDKey = require('hdkey') const ethUtil = require('ethereumjs-util') -const sigUtil = require('eth-sig-util') +const { SignTypedDataVersion, recoverPersonalSignature, TypedDataUtils, recoverTypedSignature } = require('@metamask/eth-sig-util') const { TransactionFactory } = require('@ethereumjs/tx') const pathBase = 'm' @@ -355,7 +355,7 @@ class LedgerBridgeKeyring extends EventEmitter { v = `0${v}` } const signature = `0x${payload.r}${payload.s}${v}` - const addressSignedWith = sigUtil.recoverPersonalSignature({ data: message, sig: signature }) + const addressSignedWith = recoverPersonalSignature({ data: message, signature, version: SignTypedDataVersion.V4 }) if (ethUtil.toChecksumAddress(addressSignedWith) !== ethUtil.toChecksumAddress(withAccount)) { reject(new Error('Ledger: The signature doesnt match the right address')) } @@ -396,9 +396,9 @@ class LedgerBridgeKeyring extends EventEmitter { types, primaryType, message, - } = sigUtil.TypedDataUtils.sanitizeData(data) - const domainSeparatorHex = sigUtil.TypedDataUtils.hashStruct('EIP712Domain', domain, types, isV4).toString('hex') - const hashStructMessageHex = sigUtil.TypedDataUtils.hashStruct(primaryType, message, types, isV4).toString('hex') + } = TypedDataUtils.sanitizeData(data) + const domainSeparatorHex = TypedDataUtils.hashStruct('EIP712Domain', domain, types, isV4).toString('hex') + const hashStructMessageHex = TypedDataUtils.hashStruct(primaryType, message, types, isV4).toString('hex') const hdPath = await this.unlockAccountByAddress(withAccount) const { success, payload } = await new Promise((resolve) => { @@ -420,9 +420,9 @@ class LedgerBridgeKeyring extends EventEmitter { v = `0${v}` } const signature = `0x${payload.r}${payload.s}${v}` - const addressSignedWith = sigUtil.recoverTypedSignature_v4({ + const addressSignedWith = recoverTypedSignature({ data, - sig: signature, + signature, }) if (ethUtil.toChecksumAddress(addressSignedWith) !== ethUtil.toChecksumAddress(withAccount)) { throw new Error('Ledger: The signature doesnt match the right address') diff --git a/package.json b/package.json index d0c42007..ead53be9 100644 --- a/package.json +++ b/package.json @@ -38,8 +38,8 @@ "mocha/**/mkdirp": "^0.5.3" }, "dependencies": { - "eth-sig-util": "^2.0.0", "@ethereumjs/tx": "^3.2.0", + "@metamask/eth-sig-util": "^5.0.2", "ethereumjs-util": "^7.0.9", "hdkey": "0.8.0" }, diff --git a/test/test-eth-ledger-bridge-keyring.js b/test/test-eth-ledger-bridge-keyring.js index c995d5de..da4890c7 100644 --- a/test/test-eth-ledger-bridge-keyring.js +++ b/test/test-eth-ledger-bridge-keyring.js @@ -9,7 +9,7 @@ const HDKey = require('hdkey') const ethUtil = require('ethereumjs-util') const { TransactionFactory } = require('@ethereumjs/tx') const Common = require('@ethereumjs/common').default -const sigUtil = require('eth-sig-util') +const sigUtil = require('@metamask/eth-sig-util') const LedgerBridgeKeyring = require('..') diff --git a/yarn.lock b/yarn.lock index dd853962..db46d084 100644 --- a/yarn.lock +++ b/yarn.lock @@ -117,6 +117,11 @@ crc-32 "^1.2.0" ethereumjs-util "^7.1.0" +"@ethereumjs/rlp@^4.0.0-beta.2": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.0.tgz#66719891bd727251a7f233f9ca80212d1994f8c8" + integrity sha512-LM4jS5n33bJN60fM5EC8VeyhUgga6/DjCPBV2vWjnfVtobqtOiNC4SQ1MRFqyBSmJGGdB533JZWewyvlcdJtkQ== + "@ethereumjs/tx@^3.2.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.0.tgz#14ed1b7fa0f28e1cd61e3ecbdab824205f6a4378" @@ -125,17 +130,68 @@ "@ethereumjs/common" "^2.4.0" ethereumjs-util "^7.1.0" +"@ethereumjs/util@^8.0.0": + version "8.0.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.0.3.tgz#410c2dc8c6d519b29f1a471aa9b9df9952e41239" + integrity sha512-0apCbwc8xAaie6W7q6QyogfyRS2BMU816a8KwpnpRw9Qrc6Bws+l7J3LfCLMt2iL6Wi8CYb0B29AeIr2N4vHnw== + dependencies: + "@ethereumjs/rlp" "^4.0.0-beta.2" + async "^3.2.4" + ethereum-cryptography "^1.1.2" + "@metamask/eslint-config@^3.0.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@metamask/eslint-config/-/eslint-config-3.2.0.tgz#66b9b2bea1616821506501e76de4ac991f34914f" integrity sha512-WKfB81fD5NZBFbj/UqMyfNss/b25XrukVC3j2mcaIEF0uzSKzh1b/yy7aXxcfXshWemHz28MOwZT9Bin5KV37w== -"@types/bn.js@^4.11.3": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== +"@metamask/eth-sig-util@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz#c518279a6e17a88135a13d53a0b970f145ff8bce" + integrity sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q== dependencies: - "@types/node" "*" + "@ethereumjs/util" "^8.0.0" + bn.js "^4.11.8" + ethereum-cryptography "^1.1.2" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + +"@noble/hashes@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" + integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== + +"@noble/hashes@~1.1.1": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" + integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== + +"@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" + integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== + +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.0.tgz#dea45875e7fbc720c2b4560325f1cf5d2246d95b" + integrity sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q== + dependencies: + "@noble/hashes" "~1.1.1" + "@noble/secp256k1" "~1.6.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" + integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== + dependencies: + "@noble/hashes" "~1.1.1" + "@scure/base" "~1.1.0" "@types/bn.js@^5.1.0": version "5.1.0" @@ -269,6 +325,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + babel-eslint@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" @@ -824,16 +885,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eth-sig-util@^2.0.0: - version "2.5.4" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.5.4.tgz#577b01fe491b6bf59b0464be09633e20c1677bc5" - integrity sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A== - dependencies: - ethereumjs-abi "0.6.8" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.0" - ethereum-common@^0.0.18: version "0.0.18" resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" @@ -860,13 +911,15 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereumjs-abi@0.6.8: - version "0.6.8" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== +ethereum-cryptography@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz#74f2ac0f0f5fe79f012c889b3b8446a9a6264e6d" + integrity sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ== dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" + "@noble/hashes" "1.1.2" + "@noble/secp256k1" "1.6.3" + "@scure/bip32" "1.1.0" + "@scure/bip39" "1.1.0" ethereumjs-tx@^1.3.4: version "1.3.7" @@ -876,7 +929,7 @@ ethereumjs-tx@^1.3.4: ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" -ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1: +ethereumjs-util@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== @@ -889,19 +942,6 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1: safe-buffer "^5.1.1" secp256k1 "^3.0.1" -ethereumjs-util@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" - integrity sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ== - dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "0.1.6" - keccak "^2.0.0" - rlp "^2.2.3" - secp256k1 "^3.0.1" - ethereumjs-util@^7.0.9: version "7.0.9" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.9.tgz#2038baeb30f370a3e576ec175bd70bbbb6807d42" @@ -926,7 +966,7 @@ ethereumjs-util@^7.1.0: ethjs-util "0.1.6" rlp "^2.2.4" -ethjs-util@0.1.6, ethjs-util@^0.1.3: +ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== @@ -1328,16 +1368,6 @@ keccak@^1.0.2: nan "^2.2.1" safe-buffer "^5.1.0" -keccak@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" - integrity sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q== - dependencies: - bindings "^1.5.0" - inherits "^2.0.4" - nan "^2.14.0" - safe-buffer "^5.2.0" - keccak@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" @@ -1725,7 +1755,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.0.0, rlp@^2.2.3: +rlp@^2.0.0: version "2.2.4" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.4.tgz#d6b0e1659e9285fc509a5d169a9bd06f704951c1" integrity sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw== @@ -1751,7 +1781,7 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -2007,7 +2037,7 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== -tweetnacl-util@^0.15.0: +tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== From 4c48fc3dfb11b16d767ba3ea3fcec1c4e592bb63 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 20 Dec 2022 10:58:22 -0600 Subject: [PATCH 02/11] bump minimum node version --- .circleci/config.yml | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 32af1a38..c12ac383 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -18,7 +18,7 @@ workflows: jobs: prep-deps: docker: - - image: circleci/node:12 + - image: circleci/node:14 steps: - checkout - run: @@ -37,7 +37,7 @@ jobs: test-lint: docker: - - image: circleci/node:12 + - image: circleci/node:14 steps: - checkout - attach_workspace: @@ -48,7 +48,7 @@ jobs: test-unit: docker: - - image: circleci/node:12 + - image: circleci/node:14 steps: - checkout - attach_workspace: @@ -59,7 +59,7 @@ jobs: all-tests-pass: docker: - - image: circleci/node:12 + - image: circleci/node:14 steps: - run: name: All tests passed diff --git a/package.json b/package.json index ead53be9..1c739958 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "index.js" ], "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "scripts": { "test": "mocha", From cc1973cb611387ecf9fdedc5b8aca0bb95c09dfb Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 20 Dec 2022 11:01:00 -0600 Subject: [PATCH 03/11] cleanup --- index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index b63b1811..c1dbb25b 100644 --- a/index.js +++ b/index.js @@ -355,7 +355,7 @@ class LedgerBridgeKeyring extends EventEmitter { v = `0${v}` } const signature = `0x${payload.r}${payload.s}${v}` - const addressSignedWith = recoverPersonalSignature({ data: message, signature, version: SignTypedDataVersion.V4 }) + const addressSignedWith = recoverPersonalSignature({ data: message, signature }) if (ethUtil.toChecksumAddress(addressSignedWith) !== ethUtil.toChecksumAddress(withAccount)) { reject(new Error('Ledger: The signature doesnt match the right address')) } @@ -423,6 +423,7 @@ class LedgerBridgeKeyring extends EventEmitter { const addressSignedWith = recoverTypedSignature({ data, signature, + version: SignTypedDataVersion.V4 }) if (ethUtil.toChecksumAddress(addressSignedWith) !== ethUtil.toChecksumAddress(withAccount)) { throw new Error('Ledger: The signature doesnt match the right address') From 860f7bdd06fff142027551593249a4cc5705d1dc Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 20 Dec 2022 11:03:16 -0600 Subject: [PATCH 04/11] lint --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index c1dbb25b..ad3f270b 100644 --- a/index.js +++ b/index.js @@ -423,7 +423,7 @@ class LedgerBridgeKeyring extends EventEmitter { const addressSignedWith = recoverTypedSignature({ data, signature, - version: SignTypedDataVersion.V4 + version: SignTypedDataVersion.V4, }) if (ethUtil.toChecksumAddress(addressSignedWith) !== ethUtil.toChecksumAddress(withAccount)) { throw new Error('Ledger: The signature doesnt match the right address') From 6923199d14966737cb29e66c90a4eb430b150ea5 Mon Sep 17 00:00:00 2001 From: legobt <6wbvkn0j@anonaddy.me> Date: Tue, 3 Oct 2023 04:50:03 +0000 Subject: [PATCH 05/11] deps: @metamask/eth-sig-util@^5.0.2->^6.0.1 --- package.json | 5 ++- yarn.lock | 124 ++++++++++++++------------------------------------- 2 files changed, 36 insertions(+), 93 deletions(-) diff --git a/package.json b/package.json index d9aff675..6624b159 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ }, "dependencies": { "@ethereumjs/tx": "^4.1.1", - "@metamask/eth-sig-util": "^5.0.2", + "@metamask/eth-sig-util": "^6.0.1", "@metamask/utils": "^5.0.0", "ethereumjs-util": "^7.0.9", "hdkey": "0.8.0" @@ -92,7 +92,8 @@ "ethereumjs-tx>ethereumjs-util>keccak": false, "ethereumjs-util>ethereum-cryptography>keccak": false, "ethereumjs-util>ethereum-cryptography>secp256k1": false, - "hdkey>secp256k1": false + "hdkey>secp256k1": false, + "@ledgerhq/hw-app-eth>@ledgerhq/domain-service>eip55>keccak": false } } } diff --git a/yarn.lock b/yarn.lock index b09cb6c6..b2ff4548 100644 --- a/yarn.lock +++ b/yarn.lock @@ -523,15 +523,6 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/rlp@npm:^4.0.0-beta.2": - version: 4.0.0 - resolution: "@ethereumjs/rlp@npm:4.0.0" - bin: - rlp: bin/rlp - checksum: 407dfb8b1e09b4282e6be561e8d74f8939da78f460c08456c7ba2fb273fc42ee16027955a07085abfd7600ffb466c4c4add159885e67abb91bc85db9dd81ffb5 - languageName: node - linkType: hard - "@ethereumjs/rlp@npm:^4.0.1": version: 4.0.1 resolution: "@ethereumjs/rlp@npm:4.0.1" @@ -553,17 +544,6 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/util@npm:^8.0.0": - version: 8.0.3 - resolution: "@ethereumjs/util@npm:8.0.3" - dependencies: - "@ethereumjs/rlp": ^4.0.0-beta.2 - async: ^3.2.4 - ethereum-cryptography: ^1.1.2 - checksum: f41b9b1f491d65393fe33431ad2c723bdbf405358e201af3bd9ed2dbf04b6002f039e425681534084fd9b4b11d8c27d2ba521682fe2f49518f6891833246a698 - languageName: node - linkType: hard - "@ethereumjs/util@npm:^8.1.0": version: 8.1.0 resolution: "@ethereumjs/util@npm:8.1.0" @@ -1533,6 +1513,16 @@ __metadata: languageName: node linkType: hard +"@metamask/abi-utils@npm:^1.2.0": + version: 1.2.0 + resolution: "@metamask/abi-utils@npm:1.2.0" + dependencies: + "@metamask/utils": ^3.4.1 + superstruct: ^1.0.3 + checksum: 55fde5bcbc7b2b72fb469867e3f2c41fddb1b2e992c6ea846de5701ad8fa5fcc66701facf1df793f8f58b8befcaa3c21a5e5519e839cc6fd5a3932806db7a5d5 + languageName: node + linkType: hard + "@metamask/auto-changelog@npm:^3.1.0": version: 3.3.0 resolution: "@metamask/auto-changelog@npm:3.3.0" @@ -1621,7 +1611,7 @@ __metadata: "@metamask/eslint-config-jest": ^11.0.0 "@metamask/eslint-config-nodejs": ^11.0.0 "@metamask/eslint-config-typescript": ^11.0.0 - "@metamask/eth-sig-util": ^5.0.2 + "@metamask/eth-sig-util": ^6.0.1 "@metamask/utils": ^5.0.0 "@types/ethereumjs-tx": ^1.0.1 "@types/hdkey": ^2.0.1 @@ -1652,21 +1642,34 @@ __metadata: languageName: unknown linkType: soft -"@metamask/eth-sig-util@npm:^5.0.2": - version: 5.0.2 - resolution: "@metamask/eth-sig-util@npm:5.0.2" +"@metamask/eth-sig-util@npm:^6.0.1": + version: 6.0.1 + resolution: "@metamask/eth-sig-util@npm:6.0.1" dependencies: - "@ethereumjs/util": ^8.0.0 - bn.js: ^4.11.8 - ethereum-cryptography: ^1.1.2 + "@ethereumjs/util": ^8.1.0 + "@metamask/abi-utils": ^1.2.0 + "@metamask/utils": ^5.0.2 + ethereum-cryptography: ^2.1.2 ethjs-util: ^0.1.6 tweetnacl: ^1.0.3 tweetnacl-util: ^0.15.1 - checksum: 1fbf1a0f5e654058f0219c9018dbebadf53036c9c3b47c8faf1cac54816532bb18996821736f526ac4e3d579afcaf502af4ad07e88158a50f015141858b08a90 + checksum: 6a9e64991bf826b882c0e42499052c5b51f7a2d5db77ac65ac64be1d14dd498569a4cade3cbad6213b6a9f7e508eaff619eda9c9ea448377e94e16773b755a5c languageName: node linkType: hard -"@metamask/utils@npm:^5.0.0": +"@metamask/utils@npm:^3.4.1": + version: 3.6.0 + resolution: "@metamask/utils@npm:3.6.0" + dependencies: + "@types/debug": ^4.1.7 + debug: ^4.3.4 + semver: ^7.3.8 + superstruct: ^1.0.3 + checksum: 1ebc6677bb017e4d09d4af143621fe27194d8ed815234cfd76469c3c734dc1db2ea7b577c01a2096c21c04d8c9c4d721d3035b5353fe2ded3b4737f326755e43 + languageName: node + linkType: hard + +"@metamask/utils@npm:^5.0.0, @metamask/utils@npm:^5.0.2": version: 5.0.2 resolution: "@metamask/utils@npm:5.0.2" dependencies: @@ -1688,13 +1691,6 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.1.2": - version: 1.1.2 - resolution: "@noble/hashes@npm:1.1.2" - checksum: 3c2a8cb7c2e053811032f242155d870c5eb98844d924d69702244d48804cb03b42d4a666c49c2b71164420d8229cb9a6f242b972d50d5bb2f1d673b98b041de2 - languageName: node - linkType: hard - "@noble/hashes@npm:1.3.1": version: 1.3.1 resolution: "@noble/hashes@npm:1.3.1" @@ -1702,13 +1698,6 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:~1.1.1": - version: 1.1.5 - resolution: "@noble/hashes@npm:1.1.5" - checksum: de3f095a7ac1cbf5b4b3d09f193288d4f2eec35fbadf2ed9fd7e47d8a3042fef410052ba62dc0296a185f994c11192f5357fdb1bd9178c905efd82e946c53b00 - languageName: node - linkType: hard - "@noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.1": version: 1.3.2 resolution: "@noble/hashes@npm:1.3.2" @@ -1716,13 +1705,6 @@ __metadata: languageName: node linkType: hard -"@noble/secp256k1@npm:1.6.3, @noble/secp256k1@npm:~1.6.0": - version: 1.6.3 - resolution: "@noble/secp256k1@npm:1.6.3" - checksum: 16eb3242533e645deb64444c771515f66bdc2ee0759894efd42fdeed4ab226ed29827aaaf6caa27d3d95b831452fd4246aa1007cd688aa462ad48fc084ab76e6 - languageName: node - linkType: hard - "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -1816,17 +1798,6 @@ __metadata: languageName: node linkType: hard -"@scure/bip32@npm:1.1.0": - version: 1.1.0 - resolution: "@scure/bip32@npm:1.1.0" - dependencies: - "@noble/hashes": ~1.1.1 - "@noble/secp256k1": ~1.6.0 - "@scure/base": ~1.1.0 - checksum: e6102ab9038896861fca5628b8a97f3c4cb24a073cc9f333c71c747037d82e4423d1d111fd282ba212efaf73cbc5875702567fb4cf13b5f0eb23a5bab402e37e - languageName: node - linkType: hard - "@scure/bip32@npm:1.3.1": version: 1.3.1 resolution: "@scure/bip32@npm:1.3.1" @@ -1838,16 +1809,6 @@ __metadata: languageName: node linkType: hard -"@scure/bip39@npm:1.1.0": - version: 1.1.0 - resolution: "@scure/bip39@npm:1.1.0" - dependencies: - "@noble/hashes": ~1.1.1 - "@scure/base": ~1.1.0 - checksum: c4361406f092a45e511dc572c89f497af6665ad81cb3fd7bf78e6772f357f7ae885e129ef0b985cb3496a460b4811318f77bc61634d9b0a8446079a801b6003c - languageName: node - linkType: hard - "@scure/bip39@npm:1.2.1": version: 1.2.1 resolution: "@scure/bip39@npm:1.2.1" @@ -2669,13 +2630,6 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.4": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 - languageName: node - linkType: hard - "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -4163,19 +4117,7 @@ __metadata: languageName: node linkType: hard -"ethereum-cryptography@npm:^1.1.2": - version: 1.1.2 - resolution: "ethereum-cryptography@npm:1.1.2" - dependencies: - "@noble/hashes": 1.1.2 - "@noble/secp256k1": 1.6.3 - "@scure/bip32": 1.1.0 - "@scure/bip39": 1.1.0 - checksum: 0ef55f141acad45b1ba1db58ce3d487155eb2d0b14a77b3959167a36ad324f46762873257def75e7f00dbe8ac78aabc323d2207830f85e63a42a1fb67063a6ba - languageName: node - linkType: hard - -"ethereum-cryptography@npm:^2.0.0": +"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2": version: 2.1.2 resolution: "ethereum-cryptography@npm:2.1.2" dependencies: From 44fc2d570c983adc7760649a816ae6e719fd5a2e Mon Sep 17 00:00:00 2001 From: legobt <6wbvkn0j@anonaddy.me> Date: Tue, 3 Oct 2023 05:01:41 +0000 Subject: [PATCH 06/11] devDeps: add missing @ledgerhq/types implicit peerDeps --- .depcheckrc.json | 2 ++ package.json | 2 ++ yarn.lock | 16 ++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/.depcheckrc.json b/.depcheckrc.json index d77df4e8..3a1b9be5 100644 --- a/.depcheckrc.json +++ b/.depcheckrc.json @@ -1,6 +1,8 @@ { "ignores": [ "@lavamoat/allow-scripts", + "@ledgerhq/types-cryptoassets", + "@ledgerhq/types-devices", "@metamask/auto-changelog", "@types/*", "prettier-plugin-packagejson", diff --git a/package.json b/package.json index 6624b159..77e65157 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,8 @@ "@ethereumjs/common": "^3.1.1", "@lavamoat/allow-scripts": "^2.3.0", "@ledgerhq/hw-app-eth": "^6.32.0", + "@ledgerhq/types-cryptoassets": "^7.6.0", + "@ledgerhq/types-devices": "^6.22.4", "@metamask/auto-changelog": "^3.1.0", "@metamask/eslint-config": "^11.0.1", "@metamask/eslint-config-browser": "^11.0.0", diff --git a/yarn.lock b/yarn.lock index b2ff4548..fdec29d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1503,6 +1503,20 @@ __metadata: languageName: node linkType: hard +"@ledgerhq/types-cryptoassets@npm:^7.6.0": + version: 7.6.0 + resolution: "@ledgerhq/types-cryptoassets@npm:7.6.0" + checksum: a55b0bfaf6b5178259f79a0fd893b251ab57b7c31c64f84ec451976dcd4ca0a7b0f8f442429e4692018cce395116bdb55edefc312069fd1a43cd3f06f319b300 + languageName: node + linkType: hard + +"@ledgerhq/types-devices@npm:^6.22.4": + version: 6.22.4 + resolution: "@ledgerhq/types-devices@npm:6.22.4" + checksum: 37d1b7460210fabc57d034d8ee56c0699f2f1c59b0a4c2cd70eb9fadf8b6d80b8fb92ccfc37e574e258b20bd4b6d20a1faacb22c814dd0e01a68412a4f943f9e + languageName: node + linkType: hard + "@ledgerhq/types-live@npm:^6.41.0": version: 6.41.0 resolution: "@ledgerhq/types-live@npm:6.41.0" @@ -1605,6 +1619,8 @@ __metadata: "@ethereumjs/tx": ^4.1.1 "@lavamoat/allow-scripts": ^2.3.0 "@ledgerhq/hw-app-eth": ^6.32.0 + "@ledgerhq/types-cryptoassets": ^7.6.0 + "@ledgerhq/types-devices": ^6.22.4 "@metamask/auto-changelog": ^3.1.0 "@metamask/eslint-config": ^11.0.1 "@metamask/eslint-config-browser": ^11.0.0 From 4c032c5394caa3f5edfbb091fe90191474b290b1 Mon Sep 17 00:00:00 2001 From: legobt <6wbvkn0j@anonaddy.me> Date: Tue, 3 Oct 2023 05:02:28 +0000 Subject: [PATCH 07/11] lint:fix --- src/ledger-keyring.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ledger-keyring.ts b/src/ledger-keyring.ts index 96cf47ef..381e8c96 100644 --- a/src/ledger-keyring.ts +++ b/src/ledger-keyring.ts @@ -1,8 +1,12 @@ import { TransactionFactory, TxData, TypedTransaction } from '@ethereumjs/tx'; +import type { MessageTypes, TypedMessage } from '@metamask/eth-sig-util'; +import { + recoverPersonalSignature, + SignTypedDataVersion, + TypedDataUtils, +} from '@metamask/eth-sig-util'; // eslint-disable-next-line import/no-nodejs-modules import { Buffer } from 'buffer'; -import type { MessageTypes, TypedMessage } from '@metamask/eth-sig-util'; -import { recoverPersonalSignature, recoverTypedSignature, SignTypedDataVersion, TypedDataUtils } from '@metamask/eth-sig-util'; import type OldEthJsTransaction from 'ethereumjs-tx'; import * as ethUtil from 'ethereumjs-util'; // eslint-disable-next-line import/no-nodejs-modules From b89f0be26370e5897af321e7267de49d6a1a1cc2 Mon Sep 17 00:00:00 2001 From: legobt <6wbvkn0j@anonaddy.me> Date: Tue, 3 Oct 2023 05:05:19 +0000 Subject: [PATCH 08/11] test: lint:fix --- src/ledger-keyring.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ledger-keyring.test.ts b/src/ledger-keyring.test.ts index aac183a3..0c61d1c7 100644 --- a/src/ledger-keyring.test.ts +++ b/src/ledger-keyring.test.ts @@ -701,7 +701,7 @@ describe('LedgerKeyring', function () { }, ], }, - primaryType: 'Mail', + primaryType: 'Mail' as const, types: { EIP712Domain: [ { name: 'name', type: 'string' }, From f5c2c98a8c03506a7cee25ccc75f180571313af6 Mon Sep 17 00:00:00 2001 From: legobt <6wbvkn0j@anonaddy.me> Date: Tue, 3 Oct 2023 05:11:58 +0000 Subject: [PATCH 09/11] fixups after eth-sig-util update --- src/ledger-keyring.ts | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/ledger-keyring.ts b/src/ledger-keyring.ts index 381e8c96..3fc83067 100644 --- a/src/ledger-keyring.ts +++ b/src/ledger-keyring.ts @@ -2,6 +2,7 @@ import { TransactionFactory, TxData, TypedTransaction } from '@ethereumjs/tx'; import type { MessageTypes, TypedMessage } from '@metamask/eth-sig-util'; import { recoverPersonalSignature, + recoverTypedSignature, SignTypedDataVersion, TypedDataUtils, } from '@metamask/eth-sig-util'; @@ -474,10 +475,7 @@ export class LedgerKeyring extends EventEmitter { 'EIP712Domain', domain, types, - // @ts-expect-error @types/eth-sig-util documents this function - // as taking three arguments, but it actually takes four. - // See: https://github.com/MetaMask/eth-sig-util/blob/v2.5.4/index.js#L174 - isV4, + SignTypedDataVersion.V4, ).toString('hex'); const hashStructMessageHex = TypedDataUtils.hashStruct( primaryType.toString(), @@ -510,13 +508,10 @@ export class LedgerKeyring extends EventEmitter { recoveryId = `0${recoveryId}`; } const signature = `0x${payload.r}${payload.s}${recoveryId}`; - // @ts-expect-error recoverTypedSignature_v4 is missing from - // @types/eth-sig-util. - // See: https://github.com/MetaMask/eth-sig-util/blob/v2.5.4/index.js#L464 - const addressSignedWith = recoverTypedSignature_v4({ + const addressSignedWith = recoverTypedSignature({ data, - // eslint-disable-next-line id-denylist - sig: signature, + signature, + version: SignTypedDataVersion.V4, }); if ( ethUtil.toChecksumAddress(addressSignedWith) !== From 36d2ab493d013ac1495c020d53f91323431daff3 Mon Sep 17 00:00:00 2001 From: legobt <6wbvkn0j@anonaddy.me> Date: Tue, 3 Oct 2023 05:19:37 +0000 Subject: [PATCH 10/11] test: fix jest.spyOn of @metamask/eth-sig-util by mocking es module --- src/ledger-keyring.test.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ledger-keyring.test.ts b/src/ledger-keyring.test.ts index 0c61d1c7..edc2e6c5 100644 --- a/src/ledger-keyring.test.ts +++ b/src/ledger-keyring.test.ts @@ -1,6 +1,6 @@ import { Common, Chain, Hardfork } from '@ethereumjs/common'; import { TransactionFactory } from '@ethereumjs/tx'; -import sigUtil from '@metamask/eth-sig-util'; +import * as sigUtil from '@metamask/eth-sig-util'; import EthereumTx from 'ethereumjs-tx'; import * as ethUtil from 'ethereumjs-util'; import HDKey from 'hdkey'; @@ -9,6 +9,14 @@ import { LedgerBridge } from './ledger-bridge'; import { LedgerIframeBridge } from './ledger-iframe-bridge'; import { AccountDetails, LedgerKeyring } from './ledger-keyring'; +jest.mock('@metamask/eth-sig-util', () => { + return { + // eslint-disable-next-line @typescript-eslint/naming-convention + __esModule: true, + ...jest.requireActual('@metamask/eth-sig-util'), + }; +}); + const fakeAccounts = [ '0xF30952A1c534CDE7bC471380065726fa8686dfB3', '0x44fe3Cf56CaF651C4bD34Ae6dbcffa34e9e3b84B', From f9457eb901d5bf24ef5c2e1961e4cb6a1379fe95 Mon Sep 17 00:00:00 2001 From: legobt <6wbvkn0j@anonaddy.me> Date: Thu, 19 Oct 2023 16:53:08 +0000 Subject: [PATCH 11/11] yarn dedupe --- yarn.lock | 217 ++++++------------------------------------------------ 1 file changed, 23 insertions(+), 194 deletions(-) diff --git a/yarn.lock b/yarn.lock index e29b994f..a50f142e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1926,13 +1926,6 @@ __metadata: languageName: node linkType: hard -"@types/color-name@npm:^1.1.1": - version: 1.1.1 - resolution: "@types/color-name@npm:1.1.1" - checksum: b71fcad728cc68abcba1d405742134410c8f8eb3c2ef18113b047afca158ad23a4f2c229bcf71a38f4a818dead375c45b20db121d0e69259c2d81e97a740daa6 - languageName: node - linkType: hard - "@types/debug@npm:^4.1.7": version: 4.1.9 resolution: "@types/debug@npm:4.1.9" @@ -2033,10 +2026,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": - version: 13.7.7 - resolution: "@types/node@npm:13.7.7" - checksum: 834f382e965ddf6eb8aed11a949e48254cdcd7b29fa41e226c1b3d54f820e0e09cebb78db7ad20e6c18d688b7337b4376c6e08b598f49ac985ec6b07c524931a +"@types/node@npm:*, @types/node@npm:^20.2.5": + version: 20.8.2 + resolution: "@types/node@npm:20.8.2" + checksum: 3da73e25d821bfcdb7de98589027e08bb4848e55408671c4a83ec0341e124b5313a0b20e1e4b4eff1168ea17a86f622ad73fcb04b761abd77496b9a27cbd5de5 languageName: node linkType: hard @@ -2047,13 +2040,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.2.5": - version: 20.8.2 - resolution: "@types/node@npm:20.8.2" - checksum: 3da73e25d821bfcdb7de98589027e08bb4848e55408671c4a83ec0341e124b5313a0b20e1e4b4eff1168ea17a86f622ad73fcb04b761abd77496b9a27cbd5de5 - languageName: node - linkType: hard - "@types/parse-json@npm:^4.0.0": version: 4.0.0 resolution: "@types/parse-json@npm:4.0.0" @@ -2384,13 +2370,6 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^5.0.0": - version: 5.0.0 - resolution: "ansi-regex@npm:5.0.0" - checksum: b1bb4e992a5d96327bb4f72eaba9f8047f1d808d273ad19d399e266bfcc7fb19a4d1a127a32f7bc61fe46f1a94a4d04ec4c424e3fbe184929aa866323d8ed4ce - languageName: node - linkType: hard - "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -2421,7 +2400,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^4.0.0": +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: @@ -2430,16 +2409,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^4.1.0": - version: 4.2.1 - resolution: "ansi-styles@npm:4.2.1" - dependencies: - "@types/color-name": ^1.1.1 - color-convert: ^2.0.1 - checksum: 7c74dbc7ec912b9e45dacbfaa7e2513bea6aa24d5357a0cd3255e7f83ecfc62e1454c77ab150a8df60de700c83c17fbbf040e7c204b4b6fc7aa250c8afcb865f - languageName: node - linkType: hard - "ansi-styles@npm:^5.0.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" @@ -3269,7 +3238,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -3290,15 +3259,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.1.0": - version: 4.1.1 - resolution: "debug@npm:4.1.1" - dependencies: - ms: ^2.1.1 - checksum: 1e681f5cce94ba10f8dde74b20b42e4d8cf0d2a6700f4c165bb3bb6885565ef5ca5885bf07e704974a835f2415ff095a63164f539988a1f07e8a69fe8b1d65ad - languageName: node - linkType: hard - "dedent@npm:^0.7.0": version: 0.7.0 resolution: "dedent@npm:0.7.0" @@ -3360,16 +3320,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3": - version: 1.1.3 - resolution: "define-properties@npm:1.1.3" - dependencies: - object-keys: ^1.0.12 - checksum: da80dba55d0cd76a5a7ab71ef6ea0ebcb7b941f803793e4e0257b384cb772038faa0c31659d244e82c4342edef841c1a1212580006a05a5068ee48223d787317 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -4201,14 +4152,7 @@ __metadata: languageName: node linkType: hard -"fast-deep-equal@npm:^3.1.1": - version: 3.1.1 - resolution: "fast-deep-equal@npm:3.1.1" - checksum: 98bcc0eecef31601173aa82257f61c09789b3bd05673c0a602b449b70461ae087d6f38b3f77f9445ec79ab2f6c1ff8b6a525a2450b617b7f415a46b7c4ed691a - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.3": +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d @@ -4565,21 +4509,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3": - version: 7.1.6 - resolution: "glob@npm:7.1.6" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 351d549dd90553b87c2d3f90ce11aed9e1093c74130440e7ae0592e11bbcd2ce7f0ebb8ba6bfe63aaf9b62166a7f4c80cb84490ae5d78408bb2572bf7d4ee0a6 - languageName: node - linkType: hard - -"glob@npm:^7.1.4": +"glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -4741,13 +4671,6 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.1": - version: 1.0.1 - resolution: "has-symbols@npm:1.0.1" - checksum: 4f09be6682f9fc29855ded1101ad2a0f5d559d7d9ed68f7b68be1ea213c23991216d08d6585bf3ff6fded6f526cc506bda528d276f083602b55d232f132cfa27 - languageName: node - linkType: hard - "has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" @@ -5029,20 +4952,13 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.2.7": +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac languageName: node linkType: hard -"is-callable@npm:^1.1.4": - version: 1.2.0 - resolution: "is-callable@npm:1.2.0" - checksum: 628d786ebb816a28529cd9ee15533e50288715215d374b2c983e6e23b3ae564e55a1cbfed3e3e8935340601584279984d9363b7045458b24f6d7c44249f24cf5 - languageName: node - linkType: hard - "is-core-module@npm:^2.13.0, is-core-module@npm:^2.4.0": version: 2.13.0 resolution: "is-core-module@npm:2.13.0" @@ -5098,16 +5014,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1": - version: 4.0.1 - resolution: "is-glob@npm:4.0.1" - dependencies: - is-extglob: ^2.1.1 - checksum: 84627cad11b4e745f5db5a163f32c47b711585a5ff6e14f8f8d026db87f4cdd3e2c95f6fa1f94ad22e469f36d819ae2814f03f9c668b164422ac3354a94672d3 - languageName: node - linkType: hard - -"is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -5211,14 +5118,7 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5": - version: 1.0.5 - resolution: "is-string@npm:1.0.5" - checksum: 68d77a991f55592721cc7d5800ff95cdb2c4f242e3a98fdc939c409879f7b8f297b8352184032b6b2183994b4c457f42df8de004c58b5b43655c8b2f3e3ecc17 - languageName: node - linkType: hard - -"is-string@npm:^1.0.7": +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" dependencies: @@ -5227,16 +5127,7 @@ __metadata: languageName: node linkType: hard -"is-symbol@npm:^1.0.2": - version: 1.0.3 - resolution: "is-symbol@npm:1.0.3" - dependencies: - has-symbols: ^1.0.1 - checksum: c6d54bd01218fa202da8ce91525ca41a907819be5f000df9ab9621467e087eb36f34b2dbfa51a2a699a282e860681ffa6a787d69e944ba99a46d3df553ff2798 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.3": +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": version: 1.0.4 resolution: "is-symbol@npm:1.0.4" dependencies: @@ -5824,19 +5715,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": - version: 3.14.0 - resolution: "js-yaml@npm:3.14.0" - dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: a1a47c912ba20956f96cb0998dea2e74c7f7129d831fe33d3c5a16f3f83712ce405172a8dd1c26bf2b3ad74b54016d432ff727928670ae5a50a57a677c387949 - languageName: node - linkType: hard - -"js-yaml@npm:^3.14.0": +"js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.0": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -6243,16 +6122,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" - dependencies: - brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -6288,14 +6158,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0": - version: 1.2.6 - resolution: "minimist@npm:1.2.6" - checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb - languageName: node - linkType: hard - -"minimist@npm:^1.2.6": +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -6402,14 +6265,14 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.2, ms@npm:^2.1.1": +"ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f languageName: node linkType: hard -"ms@npm:^2.0.0": +"ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -6599,7 +6462,7 @@ __metadata: languageName: node linkType: hard -"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": +"object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a @@ -7257,14 +7120,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2": - version: 5.2.0 - resolution: "safe-buffer@npm:5.2.0" - checksum: 91d50127aeaee9b8cb1ee12c810d719e29813d1ab1ce6d1b4704cd9ca0e0bfa47455e02cf1bb238be90f2db764447f058fbaef1a1018ae8387c692615d72f86c - languageName: node - linkType: hard - -"safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -7589,7 +7445,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -7600,17 +7456,6 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^4.1.0": - version: 4.2.0 - resolution: "string-width@npm:4.2.0" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.0 - checksum: ee2c68df9a3ce4256565d2bdc8490f5706f195f88e799d3d425889264d3eff3d7984fe8b38dfc983dac948e03d8cdc737294b1c81f1528c37c9935d86b67593d - languageName: node - linkType: hard - "string-width@npm:^5.0.1, string-width@npm:^5.1.2": version: 5.1.2 resolution: "string-width@npm:5.1.2" @@ -7664,7 +7509,7 @@ __metadata: languageName: node linkType: hard -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: @@ -7673,15 +7518,6 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^6.0.0": - version: 6.0.0 - resolution: "strip-ansi@npm:6.0.0" - dependencies: - ansi-regex: ^5.0.0 - checksum: 04c3239ede44c4d195b0e66c0ad58b932f08bec7d05290416d361ff908ad282ecdaf5d9731e322c84f151d427436bde01f05b7422c3ec26dd927586736b0e5d0 - languageName: node - linkType: hard - "strip-ansi@npm:^7.0.1": version: 7.1.0 resolution: "strip-ansi@npm:7.1.0" @@ -7951,20 +7787,13 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1": +"tslib@npm:^1.8.1, tslib@npm:^1.9.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd languageName: node linkType: hard -"tslib@npm:^1.9.0": - version: 1.11.1 - resolution: "tslib@npm:1.11.1" - checksum: 06976234d5c63455d6f2ae38c1f1534bb559587248e1de7c2790f9e2c2ee6149a793f1138dba77665cb3f23b4bdeb033b2ac75a8368999ec056ed58681b7dfc7 - languageName: node - linkType: hard - "tslib@npm:^2.5.0, tslib@npm:^2.6.0": version: 2.6.2 resolution: "tslib@npm:2.6.2"