From 0128235f467b7e4eeb9fb070e902398ecc0d4b00 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 15 Sep 2026 12:59:56 +0000
Subject: [PATCH 1/2] Implement Liquid address asset balance helper
Co-authored-by: Micfinch <142565130+Micfinch@users.noreply.github.com>
---
README-liquid.md | 30 ++++++++++++++-
examples/html/liquid/addresses.html | 5 +++
examples/nodejs/liquid/addresses.ts | 5 +++
src/app/liquid/addresses.ts | 54 +++++++++++++++++++++++++--
src/interfaces/index.ts | 3 +-
src/interfaces/liquid/addresses.ts | 38 +++++++++++++++++++
src/interfaces/liquid/transactions.ts | 1 +
7 files changed, 129 insertions(+), 7 deletions(-)
create mode 100644 src/interfaces/liquid/addresses.ts
diff --git a/README-liquid.md b/README-liquid.md
index 4b7f72a..6049ca6 100644
--- a/README-liquid.md
+++ b/README-liquid.md
@@ -14,6 +14,7 @@ Interface to access Liquid APIs.
- [Get Address Txs Chain](#get-address-txs-chain)
- [Get Address Txs Mempool](#get-address-txs-mempool)
- [Get Address Txs Utxo](#get-address-txs-utxo)
+ - [Get Address Asset Balances](#get-address-asset-balances)
- Assets
- [Get Asset](#get-asset)
- [Get Assets](#get-assets)
@@ -158,12 +159,37 @@ Get the list of unspent transaction outputs associated with the `address/scripth
[ [NodeJS Example](examples/nodejs/liquid/addresses.ts) ] [ [HTML Example](examples/html/liquid/addresses.html) ] [ [Top](#features) ]
```js
-const { addresses } = mempoolJS();
+const {
+ liquid: { addresses },
+} = mempoolJS();
-const addressTxsUtxo = await addresses.getAddressTxsUtxo('15e10745f15593a...');
+const address = 'Go65t19hP2FuhBMYtgbdMDgdmEzNwh1i48';
+
+const addressTxsUtxo = await addresses.getAddressTxsUtxo({ address });
console.log(addressTxsUtxo);
```
+### **Get Address Asset Balances**
+
+Returns Liquid asset balances for an address by grouping its unspent outputs by asset id.
+
+**Parameters:**
+
+- {string} address
+
+[ [NodeJS Example](examples/nodejs/liquid/addresses.ts) ] [ [HTML Example](examples/html/liquid/addresses.html) ] [ [Top](#features) ]
+
+```js
+const {
+ liquid: { addresses },
+} = mempoolJS();
+
+const address = 'Go65t19hP2FuhBMYtgbdMDgdmEzNwh1i48';
+
+const addressAssetBalances = await addresses.getAddressAssetBalances({ address });
+console.log(addressAssetBalances);
+```
+
### **Get Asset**
Returns information about a Liquid asset.
diff --git a/examples/html/liquid/addresses.html b/examples/html/liquid/addresses.html
index 2ca2b75..4c38a22 100644
--- a/examples/html/liquid/addresses.html
+++ b/examples/html/liquid/addresses.html
@@ -28,6 +28,11 @@
const addressTxsUtxo = await addresses.getAddressTxsUtxo({ address });
console.log(addressTxsUtxo);
+
+ const addressAssetBalances = await addresses.getAddressAssetBalances({
+ address,
+ });
+ console.log(addressAssetBalances);
} catch (error) {
console.log(error);
}
diff --git a/examples/nodejs/liquid/addresses.ts b/examples/nodejs/liquid/addresses.ts
index 6da344a..83f47f6 100644
--- a/examples/nodejs/liquid/addresses.ts
+++ b/examples/nodejs/liquid/addresses.ts
@@ -22,6 +22,11 @@ const init = async () => {
const addressTxsUtxo = await addresses.getAddressTxsUtxo({ address });
console.log(addressTxsUtxo);
+
+ const addressAssetBalances = await addresses.getAddressAssetBalances({
+ address,
+ });
+ console.log(addressAssetBalances);
} catch (error) {
console.log(error);
}
diff --git a/src/app/liquid/addresses.ts b/src/app/liquid/addresses.ts
index 30a60a9..3847175 100644
--- a/src/app/liquid/addresses.ts
+++ b/src/app/liquid/addresses.ts
@@ -2,11 +2,12 @@ import { AxiosInstance } from 'axios';
import {
Address,
AddressTxsUtxo,
- AddressInstance,
-} from '../../interfaces/bitcoin/addresses';
-import { Tx } from '../../interfaces/bitcoin/transactions';
+ AddressLiquidInstance,
+ AddressAssetBalance,
+} from '../../interfaces/liquid/addresses';
+import { Tx } from '../../interfaces/liquid/transactions';
-export const useAddresses = (api: AxiosInstance): AddressInstance => {
+export const useAddresses = (api: AxiosInstance): AddressLiquidInstance => {
const getAddress = async (params: { address: string }) => {
const { data } = await api.get
(`/address/${params.address}`);
return data;
@@ -42,11 +43,56 @@ export const useAddresses = (api: AxiosInstance): AddressInstance => {
return data;
};
+ const getAddressAssetBalances = async (params: { address: string }) => {
+ const utxos = await getAddressTxsUtxo(params);
+
+ if (utxos.length === 0) {
+ return [];
+ }
+
+ const transactions = await Promise.all(
+ [...new Set(utxos.map(({ txid }) => txid))].map(async (txid) => {
+ const { data } = await api.get(`/tx/${txid}`);
+ return [txid, data] as const;
+ })
+ );
+
+ const transactionMap = new Map(transactions);
+ const balances = new Map();
+
+ utxos.forEach((utxo) => {
+ const tx = transactionMap.get(utxo.txid);
+ const txOutput = tx?.vout[utxo.vout];
+ const asset_id = utxo.asset || txOutput?.asset;
+
+ if (!asset_id) {
+ throw new Error(`Asset id not found for Liquid UTXO ${utxo.txid}:${utxo.vout}`);
+ }
+
+ const currentBalance = balances.get(asset_id);
+
+ if (currentBalance) {
+ currentBalance.value += utxo.value;
+ currentBalance.utxo_count += 1;
+ return;
+ }
+
+ balances.set(asset_id, {
+ asset_id,
+ value: utxo.value,
+ utxo_count: 1,
+ });
+ });
+
+ return Array.from(balances.values()).sort((a, b) => b.value - a.value);
+ };
+
return {
getAddress,
getAddressTxs,
getAddressTxsChain,
getAddressTxsMempool,
getAddressTxsUtxo,
+ getAddressAssetBalances,
};
};
diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts
index b85de4c..32ebce6 100644
--- a/src/interfaces/index.ts
+++ b/src/interfaces/index.ts
@@ -8,6 +8,7 @@ import { TxInstance } from './bitcoin/transactions';
import { WsInstance } from './bitcoin/websockets';
import { AssetsInstance } from './liquid/assets';
+import { AddressLiquidInstance } from './liquid/addresses';
import { BlockLiquidInstance } from './liquid/blocks';
import { TxLiquidInstance } from './liquid/transactions';
import { WsLiquidInstance } from './liquid/websockets';
@@ -32,7 +33,7 @@ export interface MempoolReturn {
};
liquid: {
assets: AssetsInstance;
- addresses: AddressInstance;
+ addresses: AddressLiquidInstance;
blocks: BlockLiquidInstance;
fees: FeeInstance;
mempool: MempoolInstance;
diff --git a/src/interfaces/liquid/addresses.ts b/src/interfaces/liquid/addresses.ts
new file mode 100644
index 0000000..2007136
--- /dev/null
+++ b/src/interfaces/liquid/addresses.ts
@@ -0,0 +1,38 @@
+import { Tx, TxStatus } from './transactions';
+
+export interface Address {
+ address: string;
+ chain_stats: StatsInfo;
+ mempool_stats: StatsInfo;
+}
+
+export interface StatsInfo {
+ funded_txo_count: number;
+ funded_txo_sum: number;
+ spent_txo_count: number;
+ spent_txo_sum: number;
+ tx_count: number;
+}
+
+export interface AddressTxsUtxo {
+ txid: string;
+ vout: number;
+ status: TxStatus;
+ value: number;
+ asset?: string;
+}
+
+export interface AddressAssetBalance {
+ asset_id: string;
+ value: number;
+ utxo_count: number;
+}
+
+export interface AddressLiquidInstance {
+ getAddress: (params: { address: string }) => Promise;
+ getAddressTxs: (params: { address: string, after_txid?: string }) => Promise;
+ getAddressTxsChain: (params: { address: string }) => Promise;
+ getAddressTxsMempool: (params: { address: string }) => Promise;
+ getAddressTxsUtxo: (params: { address: string }) => Promise;
+ getAddressAssetBalances: (params: { address: string }) => Promise;
+}
diff --git a/src/interfaces/liquid/transactions.ts b/src/interfaces/liquid/transactions.ts
index 5a91595..275a057 100644
--- a/src/interfaces/liquid/transactions.ts
+++ b/src/interfaces/liquid/transactions.ts
@@ -23,6 +23,7 @@ export interface Vout {
scriptpubkey_asm: string;
scriptpubkey_type: string;
scriptpubkey_address: string;
+ asset: string;
value: number;
}
From a90b508c679bce1aa5f6184b28d984ef5f645121 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 15 Sep 2026 13:00:28 +0000
Subject: [PATCH 2/2] Fix ES5-compatible Liquid balance aggregation
Co-authored-by: Micfinch <142565130+Micfinch@users.noreply.github.com>
---
src/app/liquid/addresses.ts | 9 +-
yarn.lock | 257 ++++++++++++++++++++++--------------
2 files changed, 164 insertions(+), 102 deletions(-)
diff --git a/src/app/liquid/addresses.ts b/src/app/liquid/addresses.ts
index 3847175..999197d 100644
--- a/src/app/liquid/addresses.ts
+++ b/src/app/liquid/addresses.ts
@@ -50,8 +50,15 @@ export const useAddresses = (api: AxiosInstance): AddressLiquidInstance => {
return [];
}
+ const uniqueTxids = utxos.reduce((txids, { txid }) => {
+ if (txids.indexOf(txid) === -1) {
+ txids.push(txid);
+ }
+ return txids;
+ }, [] as string[]);
+
const transactions = await Promise.all(
- [...new Set(utxos.map(({ txid }) => txid))].map(async (txid) => {
+ uniqueTxids.map(async (txid) => {
const { data } = await api.get(`/tx/${txid}`);
return [txid, data] as const;
})
diff --git a/yarn.lock b/yarn.lock
index 49c23d6..24dfab3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -24,10 +24,10 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz"
integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==
-"@babel/core@^7.2.2":
- version "7.26.2"
- resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.2.tgz"
- integrity sha512-1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.2.2":
+ version "7.26.0"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz"
+ integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@babel/code-frame" "^7.26.0"
@@ -262,7 +262,7 @@
"@nodelib/fs.stat" "2.0.4"
run-parallel "^1.1.9"
-"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.4":
version "2.0.4"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz"
integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
@@ -330,7 +330,7 @@
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
-"@typescript-eslint/parser@^4.14.2":
+"@typescript-eslint/parser@^4.0.0", "@typescript-eslint/parser@^4.14.2":
version "4.14.2"
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.14.2.tgz"
integrity sha512-ipqSP6EuUsMu3E10EZIApOJgWSpcNXeKZaFeNKQyzqxnQl8eQCbV+TSNsl+s2GViX2d18m1rq3CWgnpOxDPgHg==
@@ -375,14 +375,6 @@
"@typescript-eslint/types" "4.14.2"
eslint-visitor-keys "^2.0.0"
-JSONStream@^1.0.3, JSONStream@^1.3.2:
- version "1.3.5"
- resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz"
- integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
- dependencies:
- jsonparse "^1.2.0"
- through ">=2.2.7 <3"
-
abbrev@1:
version "1.1.1"
resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"
@@ -421,7 +413,7 @@ acorn@^5.1.0:
resolved "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz"
integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==
-acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0:
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0:
version "7.4.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
@@ -684,7 +676,6 @@ browser-pack-flat@^3.0.9:
resolved "https://registry.npmjs.org/browser-pack-flat/-/browser-pack-flat-3.4.2.tgz"
integrity sha512-TrUo6n2fGSOCYFAKkt/EkgenytAuuCI88fmXFA60aNFVHvz3CZEBTXYSvvXVpU6xpjM8lj/6vkC6Exn8KPjtPw==
dependencies:
- JSONStream "^1.3.2"
combine-source-map "^0.8.0"
convert-source-map "^1.5.1"
count-lines "^0.1.2"
@@ -692,6 +683,7 @@ browser-pack-flat@^3.0.9:
estree-is-member-expression "^1.0.0"
estree-is-require "^1.0.0"
esutils "^2.0.2"
+ JSONStream "^1.3.2"
path-parse "^1.0.5"
scope-analyzer "^2.0.0"
stream-combiner "^0.2.2"
@@ -705,9 +697,9 @@ browser-pack@^6.0.1, browser-pack@^6.0.2:
resolved "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz"
integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==
dependencies:
- JSONStream "^1.0.3"
combine-source-map "~0.8.0"
defined "^1.0.0"
+ JSONStream "^1.0.3"
safe-buffer "^5.1.1"
through2 "^2.0.0"
umd "^3.0.0"
@@ -799,7 +791,6 @@ browserify@^17.0.0:
resolved "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz"
integrity sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==
dependencies:
- JSONStream "^1.0.3"
assert "^1.4.0"
browser-pack "^6.0.1"
browser-resolve "^2.0.0"
@@ -821,6 +812,7 @@ browserify@^17.0.0:
https-browserify "^1.0.0"
inherits "~2.0.1"
insert-module-globals "^7.2.1"
+ JSONStream "^1.0.3"
labeled-stream-splicer "^2.0.0"
mkdirp-classic "^0.5.2"
module-deps "^6.2.3"
@@ -848,7 +840,7 @@ browserify@^17.0.0:
vm-browserify "^1.0.0"
xtend "^4.0.0"
-browserslist@^4.24.0:
+browserslist@^4.24.0, "browserslist@>= 4.21.0":
version "4.24.2"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz"
integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==
@@ -1141,7 +1133,7 @@ crypto-browserify@^3.0.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
-d@1, d@^1.0.1:
+d@^1.0.1, d@1:
version "1.0.1"
resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz"
integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
@@ -1166,7 +1158,14 @@ debug@^2.6.8:
dependencies:
ms "2.0.0"
-debug@^3.2.6, debug@^3.2.7:
+debug@^3.2.6:
+ version "3.2.7"
+ resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^3.2.7:
version "3.2.7"
resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
@@ -1279,6 +1278,11 @@ domain-browser@^1.2.0:
resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz"
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+duplexer@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.2:
version "0.1.4"
resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz"
@@ -1286,11 +1290,6 @@ duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.2:
dependencies:
readable-stream "^2.0.2"
-duplexer@~0.1.1:
- version "0.1.2"
- resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz"
- integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
-
duplexify@^4.1.1:
version "4.1.1"
resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz"
@@ -1411,14 +1410,6 @@ es6-set@^0.1.5, es6-set@~0.1.5:
es6-symbol "3.1.1"
event-emitter "~0.3.5"
-es6-symbol@3.1.1:
- version "3.1.1"
- resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz"
- integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
es6-symbol@^3.1.1, es6-symbol@^3.1.3, es6-symbol@~3.1.1:
version "3.1.3"
resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz"
@@ -1427,6 +1418,14 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3, es6-symbol@~3.1.1:
d "^1.0.1"
ext "^1.1.2"
+es6-symbol@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz"
+ integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
es6-weak-map@^2.0.1:
version "2.0.3"
resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz"
@@ -1494,7 +1493,7 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz"
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
-eslint@^7.19.0:
+eslint@*, "eslint@^5.0.0 || ^6.0.0 || ^7.0.0", eslint@^7.19.0:
version "7.19.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-7.19.0.tgz"
integrity sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==
@@ -1601,7 +1600,12 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
-estraverse@^5.1.0, estraverse@^5.2.0:
+estraverse@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz"
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+
+estraverse@^5.2.0:
version "5.2.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz"
integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
@@ -1776,11 +1780,6 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-fsevents@~2.3.2:
- version "2.3.3"
- resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
- integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
@@ -1969,7 +1968,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
+inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4, inherits@2:
version "2.0.4"
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -1991,11 +1990,11 @@ insert-module-globals@^7.2.1:
resolved "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz"
integrity sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==
dependencies:
- JSONStream "^1.0.3"
acorn-node "^1.5.2"
combine-source-map "^0.8.0"
concat-stream "^1.6.1"
is-buffer "^1.1.0"
+ JSONStream "^1.0.3"
path-is-absolute "^1.0.1"
process "~0.11.0"
through2 "^2.0.0"
@@ -2193,6 +2192,14 @@ jsonparse@^1.2.0:
resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz"
integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+JSONStream@^1.0.3, JSONStream@^1.3.2:
+ version "1.3.5"
+ resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz"
+ integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
+
labeled-stream-splicer@^2.0.0:
version "2.0.2"
resolved "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz"
@@ -2353,7 +2360,6 @@ module-deps@^6.2.3:
resolved "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz"
integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==
dependencies:
- JSONStream "^1.0.3"
browser-resolve "^2.0.0"
cached-path-relative "^1.0.2"
concat-stream "~1.6.0"
@@ -2361,6 +2367,7 @@ module-deps@^6.2.3:
detective "^5.2.0"
duplexer2 "^0.1.2"
inherits "^2.0.1"
+ JSONStream "^1.0.3"
parents "^1.0.0"
readable-stream "^2.0.2"
resolve "^1.4.0"
@@ -2369,6 +2376,11 @@ module-deps@^6.2.3:
through2 "^2.0.0"
xtend "^4.0.0"
+ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
ms@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
@@ -2379,11 +2391,6 @@ ms@2.1.2:
resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-ms@^2.1.1:
- version "2.1.3"
- resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
multi-stage-sourcemap@^0.2.1:
version "0.2.1"
resolved "https://registry.npmjs.org/multi-stage-sourcemap/-/multi-stage-sourcemap-0.2.1.tgz"
@@ -2656,11 +2663,6 @@ public-encrypt@^4.0.0:
randombytes "^2.0.1"
safe-buffer "^5.1.2"
-punycode@1.3.2:
- version "1.3.2"
- resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
- integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-
punycode@^1.3.2:
version "1.4.1"
resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
@@ -2671,6 +2673,11 @@ punycode@^2.1.0:
resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
querystring-es3@~0.2.0:
version "0.2.1"
resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz"
@@ -2703,15 +2710,6 @@ read-only-stream@^2.0.0:
dependencies:
readable-stream "^2.0.2"
-"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0:
- version "3.6.0"
- resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
@@ -2725,6 +2723,42 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.2.2, readable
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
+readable-stream@^3.0.2:
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-stream@^3.1.1:
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-stream@^3.5.0:
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-stream@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
readable-stream@^3.6.2:
version "3.6.2"
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz"
@@ -2734,6 +2768,15 @@ readable-stream@^3.6.2:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+"readable-stream@2 || 3":
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
@@ -2925,7 +2968,7 @@ source-map@^0.1.34:
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.6, source-map@~0.5.3:
+source-map@^0.5.6:
version "0.5.7"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
@@ -2935,6 +2978,11 @@ source-map@^0.6.0, source-map@~0.6.1:
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+source-map@~0.5.3:
+ version "0.5.7"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
sourcemap-codec@^1.4.1:
version "1.4.8"
resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
@@ -2953,14 +3001,6 @@ stream-browserify@^3.0.0:
inherits "~2.0.4"
readable-stream "^3.5.0"
-stream-combiner2@^1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz"
- integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4=
- dependencies:
- duplexer2 "~0.1.0"
- readable-stream "^2.0.2"
-
stream-combiner@^0.2.2:
version "0.2.2"
resolved "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz"
@@ -2969,6 +3009,14 @@ stream-combiner@^0.2.2:
duplexer "~0.1.1"
through "~2.3.4"
+stream-combiner2@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz"
+ integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4=
+ dependencies:
+ duplexer2 "~0.1.0"
+ readable-stream "^2.0.2"
+
stream-http@^3.0.0:
version "3.1.1"
resolved "https://registry.npmjs.org/stream-http/-/stream-http-3.1.1.tgz"
@@ -2992,6 +3040,20 @@ stream-splicer@^2.0.0:
inherits "^2.0.1"
readable-stream "^2.0.2"
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
string-width@^4.2.0:
version "4.2.0"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz"
@@ -3017,20 +3079,6 @@ string.prototype.trimstart@^1.0.4:
call-bind "^1.0.2"
define-properties "^1.1.3"
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
strip-ansi@^3.0.0:
version "3.0.1"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
@@ -3116,6 +3164,11 @@ text-table@^0.2.0:
resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+through@^2.3.7, "through@>=2.2.7 <3", through@~2.3.4:
+ version "2.3.8"
+ resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
through2@^2.0.0, through2@^2.0.3, through2@^2.0.5:
version "2.0.5"
resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz"
@@ -3132,11 +3185,6 @@ through2@^3.0.1:
inherits "^2.0.4"
readable-stream "2 || 3"
-"through@>=2.2.7 <3", through@^2.3.7, through@~2.3.4:
- version "2.3.8"
- resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
- integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
-
timers-browserify@^1.0.1:
version "1.4.2"
resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz"
@@ -3222,7 +3270,7 @@ tty-browserify@0.0.1:
resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz"
integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==
-type-check@^0.4.0, type-check@~0.4.0:
+type-check@^0.4.0:
version "0.4.0"
resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
@@ -3236,6 +3284,13 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
+type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
type-fest@^0.8.1:
version "0.8.1"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz"
@@ -3261,7 +3316,7 @@ typedarray@^0.0.6:
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@^4.1.3:
+typescript@^4.1.3, typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta":
version "4.1.3"
resolved "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz"
integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
@@ -3361,13 +3416,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-util@0.10.3:
- version "0.10.3"
- resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz"
- integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
- dependencies:
- inherits "2.0.1"
-
util@~0.12.0:
version "0.12.3"
resolved "https://registry.npmjs.org/util/-/util-0.12.3.tgz"
@@ -3380,6 +3428,13 @@ util@~0.12.0:
safe-buffer "^5.1.2"
which-typed-array "^1.1.2"
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
v8-compile-cache@^2.0.3:
version "2.2.0"
resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz"
@@ -3449,7 +3504,7 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1:
yallist@^3.0.2:
version "3.1.1"
resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
- integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2FDAmS9NsK8GpDMLrCHPksFT7h3w6TOoUNn2pb7RoXx4g==
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
yallist@^4.0.0:
version "4.0.0"