From a4ab9ebe50ebf0661dedf843c9a426c1c72175a8 Mon Sep 17 00:00:00 2001 From: DenisIvanov26 Date: Thu, 14 Mar 2024 16:13:08 -0500 Subject: [PATCH] clean install and build --- lib.esm/_tests/test-utxo-coinselection.js | 80 ++++++++++++++----- lib.esm/_tests/test-utxo-coinselection.js.map | 2 +- lib.esm/transaction/coinselector-fewest.d.ts | 3 + .../transaction/coinselector-fewest.d.ts.map | 2 +- lib.esm/transaction/coinselector-fewest.js | 60 +++++++++++--- .../transaction/coinselector-fewest.js.map | 2 +- lib.esm/transaction/utxo.d.ts.map | 2 +- lib.esm/transaction/utxo.js | 2 +- lib.esm/transaction/utxo.js.map | 2 +- package-lock.json | 12 +++ 10 files changed, 130 insertions(+), 37 deletions(-) diff --git a/lib.esm/_tests/test-utxo-coinselection.js b/lib.esm/_tests/test-utxo-coinselection.js index 6b748ac5..98879c90 100644 --- a/lib.esm/_tests/test-utxo-coinselection.js +++ b/lib.esm/_tests/test-utxo-coinselection.js @@ -1,55 +1,97 @@ import assert from "assert"; import { FewestCoinSelector } from "../transaction/coinselector-fewest"; +import { denominations } from "../transaction/utxo"; +const TEST_SPEND_ADDRESS = "0x00539bc2CE3eD0FD039c582CB700EF5398bB0491"; +const TEST_RECEIVE_ADDRESS = "0x02b9B1D30B6cCdc7d908B82739ce891463c3FA19"; // Utility function to create UTXOs (adjust as necessary) function createUTXOs(denominations) { return denominations.map(denomination => ({ denomination, - address: "test-address" + address: TEST_SPEND_ADDRESS })); } describe("FewestCoinSelector", function () { describe("Selecting valid UTXOs", function () { it("selects a single UTXO that exactly matches the target amount", function () { - const selector = new FewestCoinSelector(createUTXOs([100n, 50n, 150n])); - const result = selector.performSelection({ value: 150n, address: "test-address" }); + const availableUTXOs = createUTXOs([denominations[1], denominations[2], denominations[3]]); // .065 Qi + const targetSpend = { value: denominations[3], address: TEST_RECEIVE_ADDRESS }; // .05 Qi + const selector = new FewestCoinSelector(availableUTXOs); + const result = selector.performSelection(targetSpend); + // A single 0.05 Qi UTXO should have been selected assert.strictEqual(result.inputs.length, 1); - assert.strictEqual(result.inputs[0].denomination, 150n); + assert.strictEqual(result.inputs[0].denomination, denominations[3]); + // A single new 0.05 Qi UTXO should have been outputed + assert.strictEqual(result.spendOutputs.length, 1); + assert.strictEqual(result.spendOutputs[0].denomination, denominations[3]); + // No change should be returned assert.strictEqual(result.changeOutputs.length, 0); }); it("selects multiple UTXOs whose combined value meets the target amount", function () { - const selector = new FewestCoinSelector(createUTXOs([100n, 50n, 150n])); - const result = selector.performSelection({ value: 200n, address: "test-address" }); + const availableUTXOs = createUTXOs([denominations[1], denominations[2], denominations[2], denominations[3]]); // .075 Qi + const targetSpend = { value: denominations[2] + denominations[3], address: TEST_RECEIVE_ADDRESS }; // .06 Qi + const selector = new FewestCoinSelector(availableUTXOs); + const result = selector.performSelection(targetSpend); + // 2 UTXOs should have been selected for a total of .06 Qi assert.strictEqual(result.inputs.length, 2); + const inputValue = result.inputs[0].denomination + result.inputs[1].denomination; + assert.strictEqual(inputValue, denominations[2] + denominations[3]); + // 2 new UTxOs should have been outputed for a total of .06 Qi + assert.strictEqual(result.spendOutputs.length, 2); + const spendValue = result.spendOutputs[0].denomination + result.spendOutputs[1].denomination; + assert.strictEqual(spendValue, denominations[2] + denominations[3]); + // No change should be returned assert.strictEqual(result.changeOutputs.length, 0); }); it("selects a single UTXO that is larger than the target amount, ensuring change is correctly calculated", function () { - const selector = new FewestCoinSelector(createUTXOs([200n, 50n])); - const result = selector.performSelection({ value: 150n, address: "test-address" }); + const availableUTXOs = createUTXOs([denominations[2], denominations[4]]); // .11 Qi + const targetSpend = { value: denominations[3], address: TEST_RECEIVE_ADDRESS }; // .05 Qi + const selector = new FewestCoinSelector(availableUTXOs); + const result = selector.performSelection(targetSpend); + // A single 0.1 Qi UTXO should have been selected assert.strictEqual(result.inputs.length, 1); - assert.strictEqual(result.inputs[0].denomination, 200n); + assert.strictEqual(result.inputs[0].denomination, denominations[4]); + // A single new 0.05 Qi UTXO should have been outputed + assert.strictEqual(result.spendOutputs.length, 1); + assert.strictEqual(result.spendOutputs[0].denomination, denominations[3]); + // 0.05 Qi should be returned in change assert.strictEqual(result.changeOutputs.length, 1); - assert.strictEqual(result.changeOutputs[0].denomination, 50n); + assert.strictEqual(result.changeOutputs[0].denomination, denominations[3]); }); it("selects multiple UTXOs where the total exceeds the target amount, ensuring change is correctly calculated", function () { - const selector = new FewestCoinSelector(createUTXOs([100n, 100n, 50n])); - const result = selector.performSelection({ value: 200n, address: "test-address" }); - assert.strictEqual(result.inputs.length, 2); + const availableUTXOs = createUTXOs([ + denominations[2], + denominations[4], + denominations[4], + denominations[4], + denominations[5] + ]); // .56 Qi + const targetSpend = { value: denominations[6], address: TEST_RECEIVE_ADDRESS }; // .5 Qi + const selector = new FewestCoinSelector(availableUTXOs); + const result = selector.performSelection(targetSpend); + // 4 UTXOs should have been selected for a total of .55 Qi + assert.strictEqual(result.inputs.length, 4); + const inputValue = result.inputs[0].denomination + result.inputs[1].denomination + result.inputs[2].denomination + result.inputs[3].denomination; + assert.strictEqual(inputValue, denominations[4] + denominations[4] + denominations[4] + denominations[5]); + // A single new 0.5 Qi UTXO should have been outputed + assert.strictEqual(result.spendOutputs.length, 1); + assert.strictEqual(result.spendOutputs[0].denomination, denominations[6]); + // 0.05 Qi should be returned in change assert.strictEqual(result.changeOutputs.length, 1); - assert.strictEqual(result.changeOutputs[0].denomination, 50n); + assert.strictEqual(result.changeOutputs[0].denomination, denominations[3]); }); }); describe("Selecting valid UTXOs", function () { it("throws an error when there are insufficient funds", function () { - const selector = new FewestCoinSelector(createUTXOs([50n, 50n])); - assert.throws(() => selector.performSelection({ value: 150n, address: "test-address" }), /Insufficient funds/); + const selector = new FewestCoinSelector(createUTXOs([denominations[0], denominations[0]])); + assert.throws(() => selector.performSelection({ value: denominations[3], address: TEST_RECEIVE_ADDRESS }), /Insufficient funds/); }); it("throws an error when no UTXOs are available", function () { const selector = new FewestCoinSelector([]); - assert.throws(() => selector.performSelection({ value: 100n, address: "test-address" }), /No UTXOs available/); + assert.throws(() => selector.performSelection({ value: denominations[2], address: TEST_RECEIVE_ADDRESS }), /No UTXOs available/); }); it("throws an error when the target amount is negative", function () { - const selector = new FewestCoinSelector(createUTXOs([100n, 100n])); - assert.throws(() => selector.performSelection({ value: -100n, address: "test-address" }), /Target amount must be greater than 0/); + const selector = new FewestCoinSelector(createUTXOs([denominations[2], denominations[2]])); + assert.throws(() => selector.performSelection({ value: -denominations[1], address: TEST_RECEIVE_ADDRESS }), /Target amount must be greater than 0/); }); }); }); diff --git a/lib.esm/_tests/test-utxo-coinselection.js.map b/lib.esm/_tests/test-utxo-coinselection.js.map index 1c2e61a6..0c56d7cb 100644 --- a/lib.esm/_tests/test-utxo-coinselection.js.map +++ b/lib.esm/_tests/test-utxo-coinselection.js.map @@ -1 +1 @@ -{"version":3,"file":"test-utxo-coinselection.js","sourceRoot":"","sources":["../../src.ts/_tests/test-utxo-coinselection.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"test-utxo-coinselection.js","sourceRoot":"","sources":["../../src.ts/_tests/test-utxo-coinselection.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib.esm/transaction/coinselector-fewest.d.ts b/lib.esm/transaction/coinselector-fewest.d.ts index 4d79370b..8b597438 100644 --- a/lib.esm/transaction/coinselector-fewest.d.ts +++ b/lib.esm/transaction/coinselector-fewest.d.ts @@ -17,5 +17,8 @@ export declare class FewestCoinSelector extends AbstractCoinSelector { * @param target The target amount to select UTXOs for. */ performSelection(target: SpendTarget): SelectedCoinsResult; + private sortUTXOsByDenomination; + private validateTarget; + private validateUTXOs; } //# sourceMappingURL=coinselector-fewest.d.ts.map \ No newline at end of file diff --git a/lib.esm/transaction/coinselector-fewest.d.ts.map b/lib.esm/transaction/coinselector-fewest.d.ts.map index d3342716..d6100187 100644 --- a/lib.esm/transaction/coinselector-fewest.d.ts.map +++ b/lib.esm/transaction/coinselector-fewest.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"coinselector-fewest.d.ts","sourceRoot":"","sources":["../../src.ts/transaction/coinselector-fewest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIpG;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,oBAAoB;IAExD;;;;;;;OAOG;IACH,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB;CA8F7D"} \ No newline at end of file +{"version":3,"file":"coinselector-fewest.d.ts","sourceRoot":"","sources":["../../src.ts/transaction/coinselector-fewest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIpG;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,oBAAoB;IAExD;;;;;;;OAOG;IACH,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB;IA8G1D,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;CAMxB"} \ No newline at end of file diff --git a/lib.esm/transaction/coinselector-fewest.js b/lib.esm/transaction/coinselector-fewest.js index c04d2866..b76a92a0 100644 --- a/lib.esm/transaction/coinselector-fewest.js +++ b/lib.esm/transaction/coinselector-fewest.js @@ -19,19 +19,11 @@ export class FewestCoinSelector extends AbstractCoinSelector { * @param target The target amount to select UTXOs for. */ performSelection(target) { - if (target.value <= BigInt(0)) { - throw new Error("Target amount must be greater than 0"); - } - if (this.availableUXTOs.length === 0) { - throw new Error("No UTXOs available"); - } - // Sort UTXOs in descending order based on their denomination - const sortedUTXOs = this.availableUXTOs.sort((a, b) => { - const diff = (b.denomination ?? BigInt(0)) - (a.denomination ?? BigInt(0)); - return diff > 0 ? 1 : diff < 0 ? -1 : 0; - }); + this.validateTarget(target); + this.validateUTXOs(); + const sortedUTXOs = this.sortUTXOsByDenomination(this.availableUXTOs, "desc"); let totalValue = BigInt(0); - const selectedUTXOs = []; + let selectedUTXOs = []; // Get UTXOs that meets or exceeds the target value const UTXOsEqualOrGreaterThanTarget = sortedUTXOs.filter(utxo => utxo.denomination && utxo.denomination >= target.value); if (UTXOsEqualOrGreaterThanTarget.length > 0) { @@ -70,6 +62,28 @@ export class FewestCoinSelector extends AbstractCoinSelector { if (totalValue < target.value) { throw new Error("Insufficient funds"); } + // // Check if any denominations can be removed from the input set and it still remain valid + selectedUTXOs = this.sortUTXOsByDenomination(selectedUTXOs, "asc"); + let runningTotal = totalValue; + let lastRemovableIndex = -1; // Index of the last UTXO that can be removed + // Iterate through selectedUTXOs to find the last removable UTXO + for (let i = 0; i < selectedUTXOs.length; i++) { + const utxo = selectedUTXOs[i]; + if (utxo.denomination) { + if (runningTotal - utxo.denomination >= target.value) { + runningTotal -= utxo.denomination; + lastRemovableIndex = i; + } + else { + // Once a UTXO makes the total less than target.value, stop the loop + break; + } + } + } + if (lastRemovableIndex >= 0) { + totalValue -= selectedUTXOs[lastRemovableIndex].denomination; + selectedUTXOs.splice(lastRemovableIndex, 1); + } // Break down the total spend into properly denominatated UTXOs const spendDenominations = denominate(target.value); this.spendOutputs = spendDenominations.map(denomination => { @@ -99,5 +113,27 @@ export class FewestCoinSelector extends AbstractCoinSelector { changeOutputs: this.changeOutputs, }; } + sortUTXOsByDenomination(utxos, direction) { + if (direction === "asc") { + return [...utxos].sort((a, b) => { + const diff = (a.denomination ?? BigInt(0)) - (b.denomination ?? BigInt(0)); + return diff > 0 ? 1 : diff < 0 ? -1 : 0; + }); + } + return [...utxos].sort((a, b) => { + const diff = (b.denomination ?? BigInt(0)) - (a.denomination ?? BigInt(0)); + return diff > 0 ? 1 : diff < 0 ? -1 : 0; + }); + } + validateTarget(target) { + if (target.value <= BigInt(0)) { + throw new Error("Target amount must be greater than 0"); + } + } + validateUTXOs() { + if (this.availableUXTOs.length === 0) { + throw new Error("No UTXOs available"); + } + } } //# sourceMappingURL=coinselector-fewest.js.map \ No newline at end of file diff --git a/lib.esm/transaction/coinselector-fewest.js.map b/lib.esm/transaction/coinselector-fewest.js.map index 491bfa8d..bcb304f2 100644 --- a/lib.esm/transaction/coinselector-fewest.js.map +++ b/lib.esm/transaction/coinselector-fewest.js.map @@ -1 +1 @@ -{"version":3,"file":"coinselector-fewest.js","sourceRoot":"","sources":["../../src.ts/transaction/coinselector-fewest.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"coinselector-fewest.js","sourceRoot":"","sources":["../../src.ts/transaction/coinselector-fewest.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib.esm/transaction/utxo.d.ts.map b/lib.esm/transaction/utxo.d.ts.map index b843f3cb..d22529c2 100644 --- a/lib.esm/transaction/utxo.d.ts.map +++ b/lib.esm/transaction/utxo.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../src.ts/transaction/utxo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,UAAU,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,QAAS,SAAQ,SAAS;IACvC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,EAkBjC,CAAC;AAsBF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBlD;AAED,qBAAa,IAAK,YAAW,QAAQ;;IAMjC,IAAI,MAAM,IAAI,IAAI,GAAG,MAAM,CAAyB;IACpD,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAE9B;IAED,IAAI,KAAK,IAAI,IAAI,GAAG,MAAM,CAAwB;IAClD,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAE7B;IAED,IAAI,OAAO,IAAI,IAAI,GAAG,MAAM,CAA0B;IACtD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAE/B;IAED,IAAI,YAAY,IAAI,IAAI,GAAG,MAAM,CAA+B;IAChE,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,YAAY,EAY1C;IAED;;OAEG;;IAQH;;;OAGG;IACH,MAAM,IAAI,GAAG;IASb;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAWpC"} \ No newline at end of file +{"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../src.ts/transaction/utxo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,UAAU,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,QAAS,SAAQ,SAAS;IACvC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,EAkBjC,CAAC;AAsBF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BlD;AAED,qBAAa,IAAK,YAAW,QAAQ;;IAMjC,IAAI,MAAM,IAAI,IAAI,GAAG,MAAM,CAAyB;IACpD,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAE9B;IAED,IAAI,KAAK,IAAI,IAAI,GAAG,MAAM,CAAwB;IAClD,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAE7B;IAED,IAAI,OAAO,IAAI,IAAI,GAAG,MAAM,CAA0B;IACtD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAE/B;IAED,IAAI,YAAY,IAAI,IAAI,GAAG,MAAM,CAA+B;IAChE,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,YAAY,EAY1C;IAED;;OAEG;;IAQH;;;OAGG;IACH,MAAM,IAAI,GAAG;IASb;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAWpC"} \ No newline at end of file diff --git a/lib.esm/transaction/utxo.js b/lib.esm/transaction/utxo.js index 07ba14a4..9faf735f 100644 --- a/lib.esm/transaction/utxo.js +++ b/lib.esm/transaction/utxo.js @@ -112,7 +112,7 @@ export class UTXO { txhash: this.txhash, index: this.index, address: this.address, - denomination: this.denomination ? this.denomination.toString() : null, + denomination: this.denomination, }; } /** diff --git a/lib.esm/transaction/utxo.js.map b/lib.esm/transaction/utxo.js.map index 210d1e35..3a3d55bc 100644 --- a/lib.esm/transaction/utxo.js.map +++ b/lib.esm/transaction/utxo.js.map @@ -1 +1 @@ -{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../src.ts/transaction/utxo.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../src.ts/transaction/utxo.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ad152ab6..05c774f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ "devDependencies": { "@rollup/plugin-node-resolve": "15.0.2", "@types/expect": "^24.3.0", + "@types/google-protobuf": "^3.15.12", "@types/mocha": "^9.1.1", "@types/semver": "7.5.0", "axios": "^1.6.7", @@ -393,6 +394,12 @@ "expect": "*" } }, + "node_modules/@types/google-protobuf": { + "version": "3.15.12", + "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz", + "integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==", + "dev": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -1087,6 +1094,11 @@ "node": "*" } }, + "node_modules/google-protobuf": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", + "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",