From c3570ac2fbe27db8e16b9690b0a4107159bdb20d Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 22 Jul 2023 20:22:34 +0600
Subject: [PATCH 001/149] feat(aepp): extract class to connect to wallet from
AeSdkAepp
---
examples/browser/aepp/src/Connect.vue | 37 ++++--
examples/browser/aepp/src/store.js | 14 +--
package-lock.json | 6 +
package.json | 1 +
src/AeSdkAepp.ts | 1 +
.../WalletConnectorFrame.ts | 41 ++++++
.../WalletConnectorFrameBase.ts | 119 ++++++++++++++++++
.../WalletConnectorFrameWithNode.ts | 45 +++++++
src/index-browser.ts | 2 +
9 files changed, 245 insertions(+), 21 deletions(-)
create mode 100644 src/aepp-wallet-communication/WalletConnectorFrame.ts
create mode 100644 src/aepp-wallet-communication/WalletConnectorFrameBase.ts
create mode 100644 src/aepp-wallet-communication/WalletConnectorFrameWithNode.ts
diff --git a/examples/browser/aepp/src/Connect.vue b/examples/browser/aepp/src/Connect.vue
index 3d335e6292..4ca9b09dfb 100644
--- a/examples/browser/aepp/src/Connect.vue
+++ b/examples/browser/aepp/src/Connect.vue
@@ -58,6 +58,7 @@
diff --git a/examples/browser/aepp/src/store.js b/examples/browser/aepp/src/store.js
index 50da2587ae..5fb596d47b 100644
--- a/examples/browser/aepp/src/store.js
+++ b/examples/browser/aepp/src/store.js
@@ -12,7 +12,6 @@ const store = createStore({
nodes: [
{ name: 'testnet', instance: new Node('https://testnet.aeternity.io') },
{ name: 'mainnet', instance: new Node('https://mainnet.aeternity.io') },
- { name: 'next', instance: new Node('https://next.aeternity.io') },
],
onCompiler: new CompilerHttp('https://v7.compiler.aepps.com'),
async onNetworkChange({ networkId }) {
diff --git a/examples/browser/wallet-iframe/src/App.vue b/examples/browser/wallet-iframe/src/App.vue
index 7cb0e23257..b27883d150 100644
--- a/examples/browser/wallet-iframe/src/App.vue
+++ b/examples/browser/wallet-iframe/src/App.vue
@@ -256,7 +256,6 @@ export default {
nodes: [
{ name: 'ae_uat', instance: new Node('https://testnet.aeternity.io') },
{ name: 'ae_mainnet', instance: new Node('https://mainnet.aeternity.io') },
- { name: 'ae_next', instance: new Node('https://next.aeternity.io') },
],
accounts: [
new AccountMemoryProtected('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200'),
diff --git a/test/environment/browser-aepp.html b/test/environment/browser-aepp.html
index 75e8eb79ab..496aed1d83 100644
--- a/test/environment/browser-aepp.html
+++ b/test/environment/browser-aepp.html
@@ -21,7 +21,6 @@
nodes: [
{ name: 'testnet', instance: new Node('https://testnet.aeternity.io') },
{ name: 'mainnet', instance: new Node('https://mainnet.aeternity.io') },
- { name: 'next', instance: new Node('https://next.aeternity.io') },
],
onCompiler: new CompilerHttp('https://v7.compiler.aepps.com'),
async onNetworkChange({ networkId }) {
From c4d62b05825444f8cf90595010ca5d4c38c99777 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Thu, 6 Jun 2024 20:15:15 +1000
Subject: [PATCH 034/149] refactor(wallet,aepp)!: remove
`delegationToContract.sign` method
BREAKING CHANGE: delegations used in Iris removed from aepp-wallet connection
Use `signDelegation` api instead.
---
src/AeSdkWallet.ts | 21 ---------------
src/account/Rpc.ts | 30 ++++------------------
src/aepp-wallet-communication/rpc/types.ts | 12 ---------
src/aepp-wallet-communication/schema.ts | 1 -
4 files changed, 5 insertions(+), 59 deletions(-)
diff --git a/src/AeSdkWallet.ts b/src/AeSdkWallet.ts
index b51c95e00d..a5ca5808fa 100644
--- a/src/AeSdkWallet.ts
+++ b/src/AeSdkWallet.ts
@@ -303,27 +303,6 @@ export default class AeSdkWallet extends AeSdk {
signature: await this.signTypedData(data, aci, parameters),
};
},
- [METHODS.signDelegationToContract]: async ({
- contractAddress, name, oracleQueryId, allNames, onAccount = this.address, isOracle,
- }, origin) => {
- if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
- if (!this.addresses().includes(onAccount)) {
- throw new RpcPermissionDenyError(onAccount);
- }
-
- isOracle ??= false;
- const parameters = { onAccount, aeppOrigin: origin, aeppRpcClientId: id };
- const signature = await (
- (name == null ? null : this
- .signNameDelegationToContract(contractAddress, name, parameters))
- ?? (oracleQueryId == null ? null : this
- .signOracleQueryDelegationToContract(contractAddress, oracleQueryId, parameters))
- ?? (allNames !== true ? null : this
- .signAllNamesDelegationToContract(contractAddress, parameters))
- ?? this.signDelegationToContract(contractAddress, { ...parameters, isOracle })
- );
- return { signature };
- },
[METHODS.unsafeSign]: async ({ data, onAccount = this.address }, origin) => {
if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
if (!this.addresses().includes(onAccount)) throw new RpcPermissionDenyError(onAccount);
diff --git a/src/account/Rpc.ts b/src/account/Rpc.ts
index 117a7f3475..6cf362e6ca 100644
--- a/src/account/Rpc.ts
+++ b/src/account/Rpc.ts
@@ -1,6 +1,6 @@
import AccountBase from './Base';
import { METHODS } from '../aepp-wallet-communication/schema';
-import { ArgumentError, UnsupportedProtocolError } from '../utils/errors';
+import { ArgumentError, NotImplementedError, UnsupportedProtocolError } from '../utils/errors';
import {
Encoded, Encoding, decode, encode,
} from '../utils/encoder';
@@ -96,12 +96,7 @@ export default class AccountRpc extends AccountBase {
});
return this.signDelegation(delegation);
}
- const { signature } = await this._rpcClient.request(METHODS.signDelegationToContract, {
- onAccount: this.address,
- contractAddress,
- isOracle,
- });
- return signature;
+ throw new NotImplementedError('');
}
override async signNameDelegationToContract(
@@ -115,12 +110,7 @@ export default class AccountRpc extends AccountBase {
});
return this.signDelegation(delegation);
}
- const { signature } = await this._rpcClient.request(METHODS.signDelegationToContract, {
- onAccount: this.address,
- contractAddress,
- name,
- });
- return signature;
+ throw new NotImplementedError('');
}
override async signAllNamesDelegationToContract(
@@ -133,12 +123,7 @@ export default class AccountRpc extends AccountBase {
});
return this.signDelegation(delegation);
}
- const { signature } = await this._rpcClient.request(METHODS.signDelegationToContract, {
- onAccount: this.address,
- contractAddress,
- allNames: true,
- });
- return signature;
+ throw new NotImplementedError('');
}
override async signOracleQueryDelegationToContract(
@@ -152,12 +137,7 @@ export default class AccountRpc extends AccountBase {
});
return this.signDelegation(delegation);
}
- const { signature } = await this._rpcClient.request(METHODS.signDelegationToContract, {
- onAccount: this.address,
- contractAddress,
- oracleQueryId,
- });
- return signature;
+ throw new NotImplementedError('');
}
override async signDelegation(delegation: Encoded.Bytearray): Promise {
diff --git a/src/aepp-wallet-communication/rpc/types.ts b/src/aepp-wallet-communication/rpc/types.ts
index 856c5345d4..3af439e377 100644
--- a/src/aepp-wallet-communication/rpc/types.ts
+++ b/src/aepp-wallet-communication/rpc/types.ts
@@ -3,7 +3,6 @@ import { Domain, AciValue } from '../../utils/typed-data';
import { METHODS, SUBSCRIPTION_TYPES, WALLET_TYPE } from '../schema';
import { TransformNodeType } from '../../Node';
import { SignedTx } from '../../apis/node';
-import { AensName } from '../../tx/builder/constants';
export interface WalletInfo {
id: string;
@@ -88,17 +87,6 @@ export interface WalletApi {
},
) => Promise<{ signature: Encoded.Signature }>;
- [METHODS.signDelegationToContract]: (
- p: {
- contractAddress: Encoded.ContractAddress;
- name?: AensName;
- oracleQueryId?: Encoded.OracleQueryId;
- allNames?: boolean;
- isOracle?: boolean;
- onAccount: Encoded.AccountAddress;
- },
- ) => Promise<{ signature: Encoded.Signature }>;
-
[METHODS.signDelegation]: (
p: {
delegation: Encoded.Bytearray;
diff --git a/src/aepp-wallet-communication/schema.ts b/src/aepp-wallet-communication/schema.ts
index 7514c6cd95..c1c90d5eb8 100644
--- a/src/aepp-wallet-communication/schema.ts
+++ b/src/aepp-wallet-communication/schema.ts
@@ -38,7 +38,6 @@ export const enum METHODS {
sign = 'transaction.sign',
signMessage = 'message.sign',
signTypedData = 'typedData.sign',
- signDelegationToContract = 'delegationToContract.sign',
signDelegation = 'delegation.sign',
subscribeAddress = 'address.subscribe',
updateNetwork = 'networkId.update',
From f94849264541b4dde85011ff696e6e6dc5b6a9d4 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Thu, 6 Jun 2024 20:30:26 +1000
Subject: [PATCH 035/149] refactor!: remove
`signOracleQueryDelegationToContract`
BREAKING CHANGE: `signOracleQueryDelegationToContract` removed
Use `signDelegation` instead.
---
examples/browser/wallet-iframe/src/App.vue | 12 -------
.../wallet-web-extension/src/background.js | 12 -------
src/AeSdkBase.ts | 20 ------------
src/account/Base.ts | 32 -------------------
src/account/Generalized.ts | 5 ---
src/account/Ledger.ts | 5 ---
src/account/Memory.ts | 30 -----------------
src/account/Rpc.ts | 14 --------
src/tx/builder/delegation/schema.ts | 21 +++++++++---
9 files changed, 16 insertions(+), 135 deletions(-)
diff --git a/examples/browser/wallet-iframe/src/App.vue b/examples/browser/wallet-iframe/src/App.vue
index b27883d150..cad7970731 100644
--- a/examples/browser/wallet-iframe/src/App.vue
+++ b/examples/browser/wallet-iframe/src/App.vue
@@ -217,18 +217,6 @@ export default {
return super.signAllNamesDelegationToContract(contractAddress, options);
}
- async signOracleQueryDelegationToContract(
- contractAddress,
- oracleQueryId,
- { aeppRpcClientId: id, aeppOrigin, ...options },
- ) {
- if (id != null) {
- const opt = { ...options, contractAddress, oracleQueryId };
- genConfirmCallback('sign delegation of oracle query to contract')(id, opt, aeppOrigin);
- }
- return super.signOracleQueryDelegationToContract(contractAddress, oracleQueryId, options);
- }
-
async sign(data, { aeppRpcClientId: id, aeppOrigin, ...options } = {}) {
if (id != null) {
genConfirmCallback(`sign raw data ${data}`)(id, options, aeppOrigin);
diff --git a/examples/browser/wallet-web-extension/src/background.js b/examples/browser/wallet-web-extension/src/background.js
index b9b407592b..5dad8d8477 100644
--- a/examples/browser/wallet-web-extension/src/background.js
+++ b/examples/browser/wallet-web-extension/src/background.js
@@ -112,18 +112,6 @@ class AccountMemoryProtected extends MemoryAccount {
return super.signAllNamesDelegationToContract(contractAddress, options);
}
- async signOracleQueryDelegationToContract(
- contractAddress,
- oracleQueryId,
- { aeppRpcClientId: id, aeppOrigin, ...options },
- ) {
- if (id != null) {
- const opt = { ...options, contractAddress, oracleQueryId };
- await genConfirmCallback('sign delegation of oracle query to contract')(id, opt, aeppOrigin);
- }
- return super.signOracleQueryDelegationToContract(contractAddress, oracleQueryId, options);
- }
-
async sign(data, { aeppRpcClientId: id, aeppOrigin, ...options } = {}) {
if (id != null) {
await genConfirmCallback(`sign raw data ${data}`)(id, options, aeppOrigin);
diff --git a/src/AeSdkBase.ts b/src/AeSdkBase.ts
index 17daa34a5d..ae9e88b56b 100644
--- a/src/AeSdkBase.ts
+++ b/src/AeSdkBase.ts
@@ -263,26 +263,6 @@ export default class AeSdkBase extends AeSdkMethods {
.signAllNamesDelegationToContract(contractAddress, options);
}
- /**
- * @deprecated use AeSdkBase:signDelegation in Ceres
- * @param contractAddress - Contract address
- * @param oracleQueryId - Oracle query id
- * @param options - Options
- */
- async signOracleQueryDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- oracleQueryId: Encoded.OracleQueryId,
- { onAccount, ...options }: { onAccount?: OnAccount }
- & Parameters[2] = {},
- ): Promise {
- options.networkId ??= this.selectedNodeName !== null
- ? await this.api.getNetworkId() : undefined;
- options.consensusProtocolVersion ??= this.selectedNodeName !== null
- ? (await this.api.getNodeInfo()).consensusProtocolVersion : undefined;
- return this._resolveAccount(onAccount)
- .signOracleQueryDelegationToContract(contractAddress, oracleQueryId, options);
- }
-
/**
* Sign delegation, works only in Ceres
* @param delegation - Delegation to sign
diff --git a/src/account/Base.ts b/src/account/Base.ts
index d3e02d4a93..29ff5180cf 100644
--- a/src/account/Base.ts
+++ b/src/account/Base.ts
@@ -150,38 +150,6 @@ export default abstract class AccountBase {
throw new NotImplementedError('signAllNamesDelegationToContract method');
}
- /**
- * Sign delegation of oracle query to a contract
- *
- * Warning! Implementations needs to ensure that decoded oracle query id is not equal to decoded
- * current account address unless https://github.com/aeternity/aesophia/issues/475 is fixed.
- *
- * Warning! Implementations needs to ensure that oracle query and contract exists unless
- * https://github.com/aeternity/aesophia/issues/474 is fixed.
- *
- * @param contractAddress - Address of a contract to delegate permissions to
- * @param oracleQueryId - Oracle query ID to reply by a contract
- * @param options - Options
- * @returns Signature
- * @deprecated use AccountBase:signDelegation in Ceres
- */
- // TODO: make abstract in the next major release
- // eslint-disable-next-line class-methods-use-this
- async signOracleQueryDelegationToContract(
- /* eslint-disable @typescript-eslint/no-unused-vars */
- contractAddress: Encoded.ContractAddress,
- oracleQueryId: Encoded.OracleQueryId,
- options?: {
- networkId?: string;
- consensusProtocolVersion?: ConsensusProtocolVersion;
- aeppOrigin?: string;
- aeppRpcClientId?: string;
- },
- /* eslint-enable @typescript-eslint/no-unused-vars */
- ): Promise {
- throw new NotImplementedError('signOracleQueryDelegationToContract method');
- }
-
/**
* Sign data blob
* @param data - Data blob to sign
diff --git a/src/account/Generalized.ts b/src/account/Generalized.ts
index ff068d8cf1..26f490366c 100644
--- a/src/account/Generalized.ts
+++ b/src/account/Generalized.ts
@@ -58,11 +58,6 @@ export default class AccountGeneralized extends AccountBase {
throw new NotImplementedError('signing delegation to contract using generalized account');
}
- // eslint-disable-next-line class-methods-use-this
- override async signOracleQueryDelegationToContract(): Promise {
- throw new NotImplementedError('signing delegation to contract using generalized account');
- }
-
// eslint-disable-next-line class-methods-use-this
override async signDelegation(): Promise {
throw new NotImplementedError('signing delegation using generalized account');
diff --git a/src/account/Ledger.ts b/src/account/Ledger.ts
index 4175b8dd9e..7e4be4775c 100644
--- a/src/account/Ledger.ts
+++ b/src/account/Ledger.ts
@@ -60,11 +60,6 @@ export default class AccountLedger extends AccountBase {
throw new NotImplementedError('signing delegation to contract using Ledger HW');
}
- // eslint-disable-next-line class-methods-use-this
- override async signOracleQueryDelegationToContract(): Promise {
- throw new NotImplementedError('signing delegation to contract using Ledger HW');
- }
-
// eslint-disable-next-line class-methods-use-this
override async signDelegation(): Promise {
throw new NotImplementedError('signing delegation using Ledger HW');
diff --git a/src/account/Memory.ts b/src/account/Memory.ts
index 142dc82234..6ec1f910ac 100644
--- a/src/account/Memory.ts
+++ b/src/account/Memory.ts
@@ -174,36 +174,6 @@ export default class AccountMemory extends AccountBase {
return encode(signature, Encoding.Signature);
}
- override async signOracleQueryDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- oracleQueryId: Encoded.OracleQueryId,
- { networkId, consensusProtocolVersion }: {
- networkId?: string;
- consensusProtocolVersion?: ConsensusProtocolVersion;
- } = {},
- ): Promise {
- if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
- const delegation = packDelegation({
- tag: DelegationTag.OracleResponse, queryId: oracleQueryId, contractAddress,
- });
- return this.signDelegation(delegation, { networkId });
- }
- const oracleQueryIdDecoded = decode(oracleQueryId);
- const addressDecoded = decode(this.address);
- // TODO: remove after fixing https://github.com/aeternity/aesophia/issues/475
- if (oracleQueryIdDecoded.compare(addressDecoded) === 0) {
- throw new ArgumentError('oracleQueryId', 'not equal to account address', oracleQueryId);
- }
- if (networkId == null) throw new ArgumentError('networkId', 'provided', networkId);
- const payload = concatBuffers([
- Buffer.from(networkId),
- oracleQueryIdDecoded,
- decode(contractAddress),
- ]);
- const signature = await this.sign(payload);
- return encode(signature, Encoding.Signature);
- }
-
override async signDelegation(
delegation: Encoded.Bytearray,
{ networkId }: { networkId?: string } = {},
diff --git a/src/account/Rpc.ts b/src/account/Rpc.ts
index 6cf362e6ca..53712c90c1 100644
--- a/src/account/Rpc.ts
+++ b/src/account/Rpc.ts
@@ -126,20 +126,6 @@ export default class AccountRpc extends AccountBase {
throw new NotImplementedError('');
}
- override async signOracleQueryDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- oracleQueryId: Encoded.OracleQueryId,
- { consensusProtocolVersion }: { consensusProtocolVersion?: ConsensusProtocolVersion } = {},
- ): Promise {
- if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
- const delegation = packDelegation({
- tag: DelegationTag.OracleResponse, queryId: oracleQueryId, contractAddress,
- });
- return this.signDelegation(delegation);
- }
- throw new NotImplementedError('');
- }
-
override async signDelegation(delegation: Encoded.Bytearray): Promise {
const { signature } = await this._rpcClient.request(
METHODS.signDelegation,
diff --git a/src/tx/builder/delegation/schema.ts b/src/tx/builder/delegation/schema.ts
index 738cb1a76b..24d01f1352 100644
--- a/src/tx/builder/delegation/schema.ts
+++ b/src/tx/builder/delegation/schema.ts
@@ -14,10 +14,16 @@ export enum DelegationTag {
AensName = 2,
AensPreclaim = 3,
Oracle = 4,
+ /**
+ * Delegation of oracle query to a contract
+ */
OracleResponse = 5,
}
const oracleAddressField = address(Encoding.OracleAddress);
+/**
+ * Oracle query ID to reply by a contract
+ */
const queryIdField = {
serialize(value: Encoded.OracleQueryId): Buffer {
return oracleAddressField.serialize(encode(decode(value), Encoding.OracleAddress));
@@ -27,6 +33,11 @@ const queryIdField = {
},
} as const;
+/**
+ * Address of a contract to delegate permissions to
+ */
+const contractAddress = address(Encoding.ContractAddress);
+
/**
* @see {@link https://github.com/aeternity/protocol/blob/8a9d1d1206174627f6aaef86159dc9c643080653/contracts/fate.md#from-ceres-serialized-signature-data}
*/
@@ -34,28 +45,28 @@ export const schemas = [{
tag: shortUIntConst(DelegationTag.AensWildcard),
version: shortUIntConst(1, true),
accountAddress: address(Encoding.AccountAddress),
- contractAddress: address(Encoding.ContractAddress),
+ contractAddress,
}, {
tag: shortUIntConst(DelegationTag.AensName),
version: shortUIntConst(1, true),
accountAddress: address(Encoding.AccountAddress),
nameId,
- contractAddress: address(Encoding.ContractAddress),
+ contractAddress,
}, {
tag: shortUIntConst(DelegationTag.AensPreclaim),
version: shortUIntConst(1, true),
accountAddress: address(Encoding.AccountAddress),
- contractAddress: address(Encoding.ContractAddress),
+ contractAddress,
}, {
tag: shortUIntConst(DelegationTag.Oracle),
version: shortUIntConst(1, true),
accountAddress: address(Encoding.AccountAddress),
- contractAddress: address(Encoding.ContractAddress),
+ contractAddress,
}, {
tag: shortUIntConst(DelegationTag.OracleResponse),
version: shortUIntConst(1, true),
queryId: queryIdField,
- contractAddress: address(Encoding.ContractAddress),
+ contractAddress,
}] as const;
type Schemas = SchemaTypes;
From c09ac29c27f45b2194ca2341c84fedd3b282859f Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Thu, 6 Jun 2024 20:39:53 +1000
Subject: [PATCH 036/149] docs(aens): use `signDelegation` instead deprecated
methods
---
docs/guides/aens.md | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/docs/guides/aens.md b/docs/guides/aens.md
index 86a0e665d2..5c5c5730f5 100644
--- a/docs/guides/aens.md
+++ b/docs/guides/aens.md
@@ -310,15 +310,22 @@ This functionality could for example be used to build an AENS marketplace.
```js
const contractAddress = 'ct_asd2ks...'
// AENS name
-const name = 'example.chain'
+const nameId = 'example.chain'
+const commonParams = {
+ contractAddress,
+ accountAddress: aeSdk.address,
+}
+let delegation
// this signature will allow the contract to perform a pre-claim on your behalf
-const preClaimSig = await aeSdk.signDelegationToContract(contractAddress, { isOracle: false })
+delegation = packDelegation({ tag: DelegationTag.AensPreclaim, ...commonParams })
// this signature will allow the contract to perform
// any name related transaction for a specific name that you own
-const nameDelegationSig = await aeSdk.signNameDelegationToContract(contractAddress, name)
+delegation = packDelegation({ tag: DelegationTag.AensName, nameId, ...commonParams })
// alternatively, you can generate a delegation signature suitable for every name you own
-const allNamesDelegationSig = await aeSdk.signAllNamesDelegationToContract(contractAddress)
+delegation = packDelegation({ tag: DelegationTag.AensWildcard, ...commonParams })
+
+const delegationSignature = await aeSdk.signDelegation(delegation)
```
From 60a729d98be3262aed7dd4dcca457f85cd886f36 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Thu, 6 Jun 2024 20:47:47 +1000
Subject: [PATCH 037/149] refactor!: remove `signAllNamesDelegationToContract`
BREAKING CHANGE: `signAllNamesDelegationToContract` removed
Use `signDelegation` instead.
---
examples/browser/wallet-iframe/src/App.vue | 11 ---------
.../wallet-web-extension/src/background.js | 11 ---------
src/AeSdkBase.ts | 18 --------------
src/account/Base.ts | 23 ------------------
src/account/Generalized.ts | 5 ----
src/account/Ledger.ts | 5 ----
src/account/Memory.ts | 24 -------------------
src/account/Rpc.ts | 13 ----------
src/tx/builder/delegation/schema.ts | 3 +++
test/integration/delegation.ts | 6 ++++-
10 files changed, 8 insertions(+), 111 deletions(-)
diff --git a/examples/browser/wallet-iframe/src/App.vue b/examples/browser/wallet-iframe/src/App.vue
index cad7970731..55015d5928 100644
--- a/examples/browser/wallet-iframe/src/App.vue
+++ b/examples/browser/wallet-iframe/src/App.vue
@@ -206,17 +206,6 @@ export default {
return super.signNameDelegationToContract(contractAddress, name, options);
}
- async signAllNamesDelegationToContract(
- contractAddress,
- { aeppRpcClientId: id, aeppOrigin, ...options },
- ) {
- if (id != null) {
- const opt = { ...options, contractAddress };
- genConfirmCallback('sign delegation of all names to contract')(id, opt, aeppOrigin);
- }
- return super.signAllNamesDelegationToContract(contractAddress, options);
- }
-
async sign(data, { aeppRpcClientId: id, aeppOrigin, ...options } = {}) {
if (id != null) {
genConfirmCallback(`sign raw data ${data}`)(id, options, aeppOrigin);
diff --git a/examples/browser/wallet-web-extension/src/background.js b/examples/browser/wallet-web-extension/src/background.js
index 5dad8d8477..03c8511ee9 100644
--- a/examples/browser/wallet-web-extension/src/background.js
+++ b/examples/browser/wallet-web-extension/src/background.js
@@ -101,17 +101,6 @@ class AccountMemoryProtected extends MemoryAccount {
return super.signNameDelegationToContract(contractAddress, name, options);
}
- async signAllNamesDelegationToContract(
- contractAddress,
- { aeppRpcClientId: id, aeppOrigin, ...options },
- ) {
- if (id != null) {
- const opt = { ...options, contractAddress };
- await genConfirmCallback('sign delegation of all names to contract')(id, opt, aeppOrigin);
- }
- return super.signAllNamesDelegationToContract(contractAddress, options);
- }
-
async sign(data, { aeppRpcClientId: id, aeppOrigin, ...options } = {}) {
if (id != null) {
await genConfirmCallback(`sign raw data ${data}`)(id, options, aeppOrigin);
diff --git a/src/AeSdkBase.ts b/src/AeSdkBase.ts
index ae9e88b56b..244e588ca8 100644
--- a/src/AeSdkBase.ts
+++ b/src/AeSdkBase.ts
@@ -245,24 +245,6 @@ export default class AeSdkBase extends AeSdkMethods {
.signNameDelegationToContract(contractAddress, name, options);
}
- /**
- * @deprecated use AeSdkBase:signDelegation in Ceres
- * @param contractAddress - Contract address
- * @param options - Options
- */
- async signAllNamesDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- { onAccount, ...options }: { onAccount?: OnAccount }
- & Parameters[1] = {},
- ): Promise {
- options.networkId ??= this.selectedNodeName !== null
- ? await this.api.getNetworkId() : undefined;
- options.consensusProtocolVersion ??= this.selectedNodeName !== null
- ? (await this.api.getNodeInfo()).consensusProtocolVersion : undefined;
- return this._resolveAccount(onAccount)
- .signAllNamesDelegationToContract(contractAddress, options);
- }
-
/**
* Sign delegation, works only in Ceres
* @param delegation - Delegation to sign
diff --git a/src/account/Base.ts b/src/account/Base.ts
index 29ff5180cf..4cc423222f 100644
--- a/src/account/Base.ts
+++ b/src/account/Base.ts
@@ -127,29 +127,6 @@ export default abstract class AccountBase {
throw new NotImplementedError('signNameDelegationToContract method');
}
- /**
- * Sign delegation of all AENS names to a contract (not available in Iris)
- * @param contractAddress - Address of a contract to delegate permissions to
- * @param options - Options
- * @returns Signature
- * @deprecated use AccountBase:signDelegation in Ceres
- */
- // TODO: make abstract in the next major release
- // eslint-disable-next-line class-methods-use-this
- async signAllNamesDelegationToContract(
- /* eslint-disable @typescript-eslint/no-unused-vars */
- contractAddress: Encoded.ContractAddress,
- options?: {
- networkId?: string;
- consensusProtocolVersion?: ConsensusProtocolVersion;
- aeppOrigin?: string;
- aeppRpcClientId?: string;
- },
- /* eslint-enable @typescript-eslint/no-unused-vars */
- ): Promise {
- throw new NotImplementedError('signAllNamesDelegationToContract method');
- }
-
/**
* Sign data blob
* @param data - Data blob to sign
diff --git a/src/account/Generalized.ts b/src/account/Generalized.ts
index 26f490366c..1a8f088fa9 100644
--- a/src/account/Generalized.ts
+++ b/src/account/Generalized.ts
@@ -53,11 +53,6 @@ export default class AccountGeneralized extends AccountBase {
throw new NotImplementedError('signing delegation to contract using generalized account');
}
- // eslint-disable-next-line class-methods-use-this
- override async signAllNamesDelegationToContract(): Promise {
- throw new NotImplementedError('signing delegation to contract using generalized account');
- }
-
// eslint-disable-next-line class-methods-use-this
override async signDelegation(): Promise {
throw new NotImplementedError('signing delegation using generalized account');
diff --git a/src/account/Ledger.ts b/src/account/Ledger.ts
index 7e4be4775c..2a759e68b4 100644
--- a/src/account/Ledger.ts
+++ b/src/account/Ledger.ts
@@ -55,11 +55,6 @@ export default class AccountLedger extends AccountBase {
throw new NotImplementedError('signing delegation to contract using Ledger HW');
}
- // eslint-disable-next-line class-methods-use-this
- override async signAllNamesDelegationToContract(): Promise {
- throw new NotImplementedError('signing delegation to contract using Ledger HW');
- }
-
// eslint-disable-next-line class-methods-use-this
override async signDelegation(): Promise {
throw new NotImplementedError('signing delegation using Ledger HW');
diff --git a/src/account/Memory.ts b/src/account/Memory.ts
index 6ec1f910ac..cddf69864e 100644
--- a/src/account/Memory.ts
+++ b/src/account/Memory.ts
@@ -150,30 +150,6 @@ export default class AccountMemory extends AccountBase {
return encode(signature, Encoding.Signature);
}
- override async signAllNamesDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- { networkId, consensusProtocolVersion }: {
- networkId?: string;
- consensusProtocolVersion?: ConsensusProtocolVersion;
- } = {},
- ): Promise {
- if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
- const delegation = packDelegation({
- tag: DelegationTag.AensWildcard, accountAddress: this.address, contractAddress,
- });
- return this.signDelegation(delegation, { networkId });
- }
- if (networkId == null) throw new ArgumentError('networkId', 'provided', networkId);
- const payload = concatBuffers([
- Buffer.from(networkId),
- decode(this.address),
- Buffer.from('AENS'),
- decode(contractAddress),
- ]);
- const signature = await this.sign(payload);
- return encode(signature, Encoding.Signature);
- }
-
override async signDelegation(
delegation: Encoded.Bytearray,
{ networkId }: { networkId?: string } = {},
diff --git a/src/account/Rpc.ts b/src/account/Rpc.ts
index 53712c90c1..c17c7fa363 100644
--- a/src/account/Rpc.ts
+++ b/src/account/Rpc.ts
@@ -113,19 +113,6 @@ export default class AccountRpc extends AccountBase {
throw new NotImplementedError('');
}
- override async signAllNamesDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- { consensusProtocolVersion }: { consensusProtocolVersion?: ConsensusProtocolVersion } = {},
- ): Promise {
- if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
- const delegation = packDelegation({
- tag: DelegationTag.AensWildcard, accountAddress: this.address, contractAddress,
- });
- return this.signDelegation(delegation);
- }
- throw new NotImplementedError('');
- }
-
override async signDelegation(delegation: Encoded.Bytearray): Promise {
const { signature } = await this._rpcClient.request(
METHODS.signDelegation,
diff --git a/src/tx/builder/delegation/schema.ts b/src/tx/builder/delegation/schema.ts
index 24d01f1352..b2bd1fe44a 100644
--- a/src/tx/builder/delegation/schema.ts
+++ b/src/tx/builder/delegation/schema.ts
@@ -10,6 +10,9 @@ import {
* @category delegation signature
*/
export enum DelegationTag {
+ /**
+ * Delegation of all AENS names to a contract
+ */
AensWildcard = 1,
AensName = 2,
AensPreclaim = 3,
diff --git a/test/integration/delegation.ts b/test/integration/delegation.ts
index ad9e74bbfb..02654693b8 100644
--- a/test/integration/delegation.ts
+++ b/test/integration/delegation.ts
@@ -193,7 +193,11 @@ contract DelegateTest =
it('works using wildcard delegation signature', async () => {
if (isIris) return;
- const allNamesDelSig = decode(await aeSdk.signAllNamesDelegationToContract(contractAddress));
+ const allNamesDelSig = decode(await aeSdk.signDelegation(
+ packDelegation(
+ { tag: DelegationTag.AensWildcard, accountAddress: aeSdk.address, contractAddress },
+ ),
+ ));
const n = randomName(30);
const commitmentId = decode(commitmentHash(n, salt));
From 9ab8f410226fca846dbfb5450a4da99940de7115 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Thu, 6 Jun 2024 20:55:09 +1000
Subject: [PATCH 038/149] refactor!: remove `signNameDelegationToContract`
BREAKING CHANGE: `signNameDelegationToContract` removed
Use `signDelegation` instead.
---
examples/browser/wallet-iframe/src/App.vue | 12 --------
.../wallet-web-extension/src/background.js | 12 --------
src/AeSdkBase.ts | 21 --------------
src/account/Base.ts | 27 +-----------------
src/account/Generalized.ts | 5 ----
src/account/Ledger.ts | 5 ----
src/account/Memory.ts | 28 +------------------
src/account/Rpc.ts | 16 +----------
src/tx/builder/delegation/schema.ts | 6 ++++
9 files changed, 9 insertions(+), 123 deletions(-)
diff --git a/examples/browser/wallet-iframe/src/App.vue b/examples/browser/wallet-iframe/src/App.vue
index 55015d5928..af26cccf03 100644
--- a/examples/browser/wallet-iframe/src/App.vue
+++ b/examples/browser/wallet-iframe/src/App.vue
@@ -194,18 +194,6 @@ export default {
return super.signDelegationToContract(contractAddress, options);
}
- async signNameDelegationToContract(
- contractAddress,
- name,
- { aeppRpcClientId: id, aeppOrigin, ...options },
- ) {
- if (id != null) {
- const opt = { ...options, contractAddress, name };
- genConfirmCallback('sign delegation of name to contract')(id, opt, aeppOrigin);
- }
- return super.signNameDelegationToContract(contractAddress, name, options);
- }
-
async sign(data, { aeppRpcClientId: id, aeppOrigin, ...options } = {}) {
if (id != null) {
genConfirmCallback(`sign raw data ${data}`)(id, options, aeppOrigin);
diff --git a/examples/browser/wallet-web-extension/src/background.js b/examples/browser/wallet-web-extension/src/background.js
index 03c8511ee9..b4c36f587d 100644
--- a/examples/browser/wallet-web-extension/src/background.js
+++ b/examples/browser/wallet-web-extension/src/background.js
@@ -89,18 +89,6 @@ class AccountMemoryProtected extends MemoryAccount {
return super.signDelegationToContract(contractAddress, options);
}
- async signNameDelegationToContract(
- contractAddress,
- name,
- { aeppRpcClientId: id, aeppOrigin, ...options },
- ) {
- if (id != null) {
- const opt = { ...options, contractAddress, name };
- await genConfirmCallback('sign delegation of name to contract')(id, opt, aeppOrigin);
- }
- return super.signNameDelegationToContract(contractAddress, name, options);
- }
-
async sign(data, { aeppRpcClientId: id, aeppOrigin, ...options } = {}) {
if (id != null) {
await genConfirmCallback(`sign raw data ${data}`)(id, options, aeppOrigin);
diff --git a/src/AeSdkBase.ts b/src/AeSdkBase.ts
index 244e588ca8..b957768cba 100644
--- a/src/AeSdkBase.ts
+++ b/src/AeSdkBase.ts
@@ -7,7 +7,6 @@ import { Encoded } from './utils/encoder';
import { wrapWithProxy } from './utils/wrap-proxy';
import CompilerBase from './contract/compiler/Base';
import AeSdkMethods, { OnAccount, AeSdkMethodsOptions, WrappedOptions } from './AeSdkMethods';
-import { AensName } from './tx/builder/constants';
type NodeInfo = Awaited> & { name: string };
@@ -225,26 +224,6 @@ export default class AeSdkBase extends AeSdkMethods {
.signDelegationToContract(contractAddress, options);
}
- /**
- * @deprecated use AeSdkBase:signDelegation in Ceres
- * @param contractAddress - Contract address
- * @param name - AENS name
- * @param options - Options
- */
- async signNameDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- name: AensName,
- { onAccount, ...options }: { onAccount?: OnAccount }
- & Parameters[2] = {},
- ): Promise {
- options.networkId ??= this.selectedNodeName !== null
- ? await this.api.getNetworkId() : undefined;
- options.consensusProtocolVersion ??= this.selectedNodeName !== null
- ? (await this.api.getNodeInfo()).consensusProtocolVersion : undefined;
- return this._resolveAccount(onAccount)
- .signNameDelegationToContract(contractAddress, name, options);
- }
-
/**
* Sign delegation, works only in Ceres
* @param delegation - Delegation to sign
diff --git a/src/account/Base.ts b/src/account/Base.ts
index 4cc423222f..a6afd7ba75 100644
--- a/src/account/Base.ts
+++ b/src/account/Base.ts
@@ -1,7 +1,7 @@
import { Encoded } from '../utils/encoder';
import Node from '../Node';
import CompilerBase from '../contract/compiler/Base';
-import { AensName, ConsensusProtocolVersion, Int } from '../tx/builder/constants';
+import { ConsensusProtocolVersion, Int } from '../tx/builder/constants';
import { AciValue, Domain } from '../utils/typed-data';
import { NotImplementedError } from '../utils/errors';
@@ -102,31 +102,6 @@ export default abstract class AccountBase {
throw new NotImplementedError('signDelegationToContract method');
}
- /**
- * Sign delegation of an AENS name to a contract
- * @param contractAddress - Address of a contract to delegate permissions to
- * @param name - AENS name to manage by a contract
- * @param options - Options
- * @returns Signature
- * @deprecated use AccountBase:signDelegation in Ceres
- */
- // TODO: make abstract in the next major release
- // eslint-disable-next-line class-methods-use-this
- async signNameDelegationToContract(
- /* eslint-disable @typescript-eslint/no-unused-vars */
- contractAddress: Encoded.ContractAddress,
- name: AensName,
- options?: {
- networkId?: string;
- consensusProtocolVersion?: ConsensusProtocolVersion;
- aeppOrigin?: string;
- aeppRpcClientId?: string;
- },
- /* eslint-enable @typescript-eslint/no-unused-vars */
- ): Promise {
- throw new NotImplementedError('signNameDelegationToContract method');
- }
-
/**
* Sign data blob
* @param data - Data blob to sign
diff --git a/src/account/Generalized.ts b/src/account/Generalized.ts
index 1a8f088fa9..fa48d89fc9 100644
--- a/src/account/Generalized.ts
+++ b/src/account/Generalized.ts
@@ -48,11 +48,6 @@ export default class AccountGeneralized extends AccountBase {
throw new NotImplementedError('signing delegation to contract using generalized account');
}
- // eslint-disable-next-line class-methods-use-this
- override async signNameDelegationToContract(): Promise {
- throw new NotImplementedError('signing delegation to contract using generalized account');
- }
-
// eslint-disable-next-line class-methods-use-this
override async signDelegation(): Promise {
throw new NotImplementedError('signing delegation using generalized account');
diff --git a/src/account/Ledger.ts b/src/account/Ledger.ts
index 2a759e68b4..65ceb0ea45 100644
--- a/src/account/Ledger.ts
+++ b/src/account/Ledger.ts
@@ -50,11 +50,6 @@ export default class AccountLedger extends AccountBase {
throw new NotImplementedError('signing delegation to contract using Ledger HW');
}
- // eslint-disable-next-line class-methods-use-this
- override async signNameDelegationToContract(): Promise {
- throw new NotImplementedError('signing delegation to contract using Ledger HW');
- }
-
// eslint-disable-next-line class-methods-use-this
override async signDelegation(): Promise {
throw new NotImplementedError('signing delegation using Ledger HW');
diff --git a/src/account/Memory.ts b/src/account/Memory.ts
index cddf69864e..57861188e0 100644
--- a/src/account/Memory.ts
+++ b/src/account/Memory.ts
@@ -9,8 +9,7 @@ import {
import { concatBuffers } from '../utils/other';
import { hashTypedData, AciValue } from '../utils/typed-data';
import { buildTx } from '../tx/builder';
-import { Tag, AensName, ConsensusProtocolVersion } from '../tx/builder/constants';
-import { produceNameId } from '../tx/builder/helpers';
+import { Tag, ConsensusProtocolVersion } from '../tx/builder/constants';
import { DelegationTag } from '../tx/builder/delegation/schema';
import { packDelegation } from '../tx/builder/delegation';
@@ -125,31 +124,6 @@ export default class AccountMemory extends AccountBase {
return encode(signature, Encoding.Signature);
}
- override async signNameDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- name: AensName,
- { networkId, consensusProtocolVersion }: {
- networkId?: string;
- consensusProtocolVersion?: ConsensusProtocolVersion;
- } = {},
- ): Promise {
- if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
- const delegation = packDelegation({
- tag: DelegationTag.AensName, accountAddress: this.address, contractAddress, nameId: name,
- });
- return this.signDelegation(delegation, { networkId });
- }
- if (networkId == null) throw new ArgumentError('networkId', 'provided', networkId);
- const payload = concatBuffers([
- Buffer.from(networkId),
- decode(this.address),
- decode(produceNameId(name)),
- decode(contractAddress),
- ]);
- const signature = await this.sign(payload);
- return encode(signature, Encoding.Signature);
- }
-
override async signDelegation(
delegation: Encoded.Bytearray,
{ networkId }: { networkId?: string } = {},
diff --git a/src/account/Rpc.ts b/src/account/Rpc.ts
index c17c7fa363..f02c858825 100644
--- a/src/account/Rpc.ts
+++ b/src/account/Rpc.ts
@@ -6,7 +6,7 @@ import {
} from '../utils/encoder';
import RpcClient from '../aepp-wallet-communication/rpc/RpcClient';
import { AeppApi, WalletApi } from '../aepp-wallet-communication/rpc/types';
-import { AensName, ConsensusProtocolVersion } from '../tx/builder/constants';
+import { ConsensusProtocolVersion } from '../tx/builder/constants';
import { packDelegation } from '../tx/builder/delegation';
import { DelegationTag } from '../tx/builder/delegation/schema';
@@ -99,20 +99,6 @@ export default class AccountRpc extends AccountBase {
throw new NotImplementedError('');
}
- override async signNameDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- name: AensName,
- { consensusProtocolVersion }: { consensusProtocolVersion?: ConsensusProtocolVersion } = {},
- ): Promise {
- if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
- const delegation = packDelegation({
- tag: DelegationTag.AensName, accountAddress: this.address, contractAddress, nameId: name,
- });
- return this.signDelegation(delegation);
- }
- throw new NotImplementedError('');
- }
-
override async signDelegation(delegation: Encoded.Bytearray): Promise {
const { signature } = await this._rpcClient.request(
METHODS.signDelegation,
diff --git a/src/tx/builder/delegation/schema.ts b/src/tx/builder/delegation/schema.ts
index b2bd1fe44a..cf2036b847 100644
--- a/src/tx/builder/delegation/schema.ts
+++ b/src/tx/builder/delegation/schema.ts
@@ -14,6 +14,9 @@ export enum DelegationTag {
* Delegation of all AENS names to a contract
*/
AensWildcard = 1,
+ /**
+ * Delegation of an AENS name to a contract
+ */
AensName = 2,
AensPreclaim = 3,
Oracle = 4,
@@ -53,6 +56,9 @@ export const schemas = [{
tag: shortUIntConst(DelegationTag.AensName),
version: shortUIntConst(1, true),
accountAddress: address(Encoding.AccountAddress),
+ /**
+ * AENS name to manage by a contract
+ */
nameId,
contractAddress,
}, {
From cd495a6409bfa3fa2012046da8e83dbf759f6fc0 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Thu, 6 Jun 2024 21:03:49 +1000
Subject: [PATCH 039/149] refactor!: remove `signDelegationToContract`
BREAKING CHANGE: `signDelegationToContract` removed
Use `signDelegation` instead.
---
examples/browser/wallet-iframe/src/App.vue | 11 ------
.../wallet-web-extension/src/background.js | 11 ------
src/AeSdkBase.ts | 18 ----------
src/account/Base.ts | 28 +--------------
src/account/Generalized.ts | 5 ---
src/account/Ledger.ts | 5 ---
src/account/Memory.ts | 34 +------------------
src/account/Rpc.ts | 27 +--------------
src/tx/builder/delegation/schema.ts | 6 ++++
test/integration/rpc.ts | 28 +++++++--------
10 files changed, 23 insertions(+), 150 deletions(-)
diff --git a/examples/browser/wallet-iframe/src/App.vue b/examples/browser/wallet-iframe/src/App.vue
index af26cccf03..5f33c97cd3 100644
--- a/examples/browser/wallet-iframe/src/App.vue
+++ b/examples/browser/wallet-iframe/src/App.vue
@@ -183,17 +183,6 @@ export default {
return super.signTypedData(data, aci, options);
}
- async signDelegationToContract(
- contractAddress,
- { aeppRpcClientId: id, aeppOrigin, ...options },
- ) {
- if (id != null) {
- const opt = { ...options, contractAddress };
- genConfirmCallback('sign delegation to contract')(id, opt, aeppOrigin);
- }
- return super.signDelegationToContract(contractAddress, options);
- }
-
async sign(data, { aeppRpcClientId: id, aeppOrigin, ...options } = {}) {
if (id != null) {
genConfirmCallback(`sign raw data ${data}`)(id, options, aeppOrigin);
diff --git a/examples/browser/wallet-web-extension/src/background.js b/examples/browser/wallet-web-extension/src/background.js
index b4c36f587d..a7a07c9e4d 100644
--- a/examples/browser/wallet-web-extension/src/background.js
+++ b/examples/browser/wallet-web-extension/src/background.js
@@ -78,17 +78,6 @@ class AccountMemoryProtected extends MemoryAccount {
return super.signTypedData(data, aci, options);
}
- async signDelegationToContract(
- contractAddress,
- { aeppRpcClientId: id, aeppOrigin, ...options },
- ) {
- if (id != null) {
- const opt = { ...options, contractAddress };
- await genConfirmCallback('sign delegation to contract')(id, opt, aeppOrigin);
- }
- return super.signDelegationToContract(contractAddress, options);
- }
-
async sign(data, { aeppRpcClientId: id, aeppOrigin, ...options } = {}) {
if (id != null) {
await genConfirmCallback(`sign raw data ${data}`)(id, options, aeppOrigin);
diff --git a/src/AeSdkBase.ts b/src/AeSdkBase.ts
index b957768cba..e8d598e236 100644
--- a/src/AeSdkBase.ts
+++ b/src/AeSdkBase.ts
@@ -206,24 +206,6 @@ export default class AeSdkBase extends AeSdkMethods {
return this._resolveAccount(onAccount).signTypedData(data, aci, options);
}
- /**
- * @deprecated use AeSdkBase:signDelegation in Ceres
- * @param contractAddress - Contract address
- * @param options - Options
- */
- async signDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- { onAccount, ...options }: { onAccount?: OnAccount }
- & Parameters[1] = {},
- ): Promise {
- options.networkId ??= this.selectedNodeName !== null
- ? await this.api.getNetworkId() : undefined;
- options.consensusProtocolVersion ??= this.selectedNodeName !== null
- ? (await this.api.getNodeInfo()).consensusProtocolVersion : undefined;
- return this._resolveAccount(onAccount)
- .signDelegationToContract(contractAddress, options);
- }
-
/**
* Sign delegation, works only in Ceres
* @param delegation - Delegation to sign
diff --git a/src/account/Base.ts b/src/account/Base.ts
index a6afd7ba75..e4e18ac3fe 100644
--- a/src/account/Base.ts
+++ b/src/account/Base.ts
@@ -1,7 +1,7 @@
import { Encoded } from '../utils/encoder';
import Node from '../Node';
import CompilerBase from '../contract/compiler/Base';
-import { ConsensusProtocolVersion, Int } from '../tx/builder/constants';
+import { Int } from '../tx/builder/constants';
import { AciValue, Domain } from '../utils/typed-data';
import { NotImplementedError } from '../utils/errors';
@@ -76,32 +76,6 @@ export default abstract class AccountBase {
throw new NotImplementedError('signTypedData method');
}
- /**
- * Sign delegation of AENS, oracle operations to a contract
- * @param contractAddress - Address of a contract to delegate permissions to
- * @param options - Options
- * @param options.isOracle - Use to generate an oracle delegation signature in Ceres, otherwise an
- * AENS preclaim delegation signature would be generated
- * @returns Signature
- * @deprecated use AccountBase:signDelegation in Ceres
- */
- // TODO: make abstract in the next major release
- // eslint-disable-next-line class-methods-use-this
- async signDelegationToContract(
- /* eslint-disable @typescript-eslint/no-unused-vars */
- contractAddress: Encoded.ContractAddress,
- options?: {
- networkId?: string;
- consensusProtocolVersion?: ConsensusProtocolVersion;
- isOracle?: boolean;
- aeppOrigin?: string;
- aeppRpcClientId?: string;
- },
- /* eslint-enable @typescript-eslint/no-unused-vars */
- ): Promise {
- throw new NotImplementedError('signDelegationToContract method');
- }
-
/**
* Sign data blob
* @param data - Data blob to sign
diff --git a/src/account/Generalized.ts b/src/account/Generalized.ts
index fa48d89fc9..ba8888fac3 100644
--- a/src/account/Generalized.ts
+++ b/src/account/Generalized.ts
@@ -43,11 +43,6 @@ export default class AccountGeneralized extends AccountBase {
throw new NotImplementedError('Can\'t sign using generalized account');
}
- // eslint-disable-next-line class-methods-use-this
- override async signDelegationToContract(): Promise {
- throw new NotImplementedError('signing delegation to contract using generalized account');
- }
-
// eslint-disable-next-line class-methods-use-this
override async signDelegation(): Promise {
throw new NotImplementedError('signing delegation using generalized account');
diff --git a/src/account/Ledger.ts b/src/account/Ledger.ts
index 65ceb0ea45..fcf5d6dc00 100644
--- a/src/account/Ledger.ts
+++ b/src/account/Ledger.ts
@@ -45,11 +45,6 @@ export default class AccountLedger extends AccountBase {
throw new NotImplementedError('Typed data signing using Ledger HW');
}
- // eslint-disable-next-line class-methods-use-this
- override async signDelegationToContract(): Promise {
- throw new NotImplementedError('signing delegation to contract using Ledger HW');
- }
-
// eslint-disable-next-line class-methods-use-this
override async signDelegation(): Promise {
throw new NotImplementedError('signing delegation using Ledger HW');
diff --git a/src/account/Memory.ts b/src/account/Memory.ts
index 57861188e0..bfa45b46dc 100644
--- a/src/account/Memory.ts
+++ b/src/account/Memory.ts
@@ -9,9 +9,7 @@ import {
import { concatBuffers } from '../utils/other';
import { hashTypedData, AciValue } from '../utils/typed-data';
import { buildTx } from '../tx/builder';
-import { Tag, ConsensusProtocolVersion } from '../tx/builder/constants';
-import { DelegationTag } from '../tx/builder/delegation/schema';
-import { packDelegation } from '../tx/builder/delegation';
+import { Tag } from '../tx/builder/constants';
const secretKeys = new WeakMap();
@@ -94,36 +92,6 @@ export default class AccountMemory extends AccountBase {
return encode(signature, Encoding.Signature);
}
- override async signDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- { networkId, consensusProtocolVersion, isOracle }: {
- networkId?: string;
- consensusProtocolVersion?: ConsensusProtocolVersion;
- isOracle?: boolean;
- } = {},
- ): Promise {
- if (isOracle == null) {
- const protocol = (consensusProtocolVersion != null) ? ConsensusProtocolVersion[consensusProtocolVersion] : 'unknown';
- console.warn(`AccountMemory:signDelegationToContract: isOracle is not set. By default, sdk would generate an AENS preclaim delegation signature, but it won't be the same as the oracle delegation signature in Ceres (current protocol is ${protocol}).`);
- }
- if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
- const delegation = packDelegation({
- tag: isOracle === true ? DelegationTag.Oracle : DelegationTag.AensPreclaim,
- accountAddress: this.address,
- contractAddress,
- });
- return this.signDelegation(delegation, { networkId });
- }
- if (networkId == null) throw new ArgumentError('networkId', 'provided', networkId);
- const payload = concatBuffers([
- Buffer.from(networkId),
- decode(this.address),
- decode(contractAddress),
- ]);
- const signature = await this.sign(payload);
- return encode(signature, Encoding.Signature);
- }
-
override async signDelegation(
delegation: Encoded.Bytearray,
{ networkId }: { networkId?: string } = {},
diff --git a/src/account/Rpc.ts b/src/account/Rpc.ts
index f02c858825..508f3698c0 100644
--- a/src/account/Rpc.ts
+++ b/src/account/Rpc.ts
@@ -1,14 +1,11 @@
import AccountBase from './Base';
import { METHODS } from '../aepp-wallet-communication/schema';
-import { ArgumentError, NotImplementedError, UnsupportedProtocolError } from '../utils/errors';
+import { ArgumentError, UnsupportedProtocolError } from '../utils/errors';
import {
Encoded, Encoding, decode, encode,
} from '../utils/encoder';
import RpcClient from '../aepp-wallet-communication/rpc/RpcClient';
import { AeppApi, WalletApi } from '../aepp-wallet-communication/rpc/types';
-import { ConsensusProtocolVersion } from '../tx/builder/constants';
-import { packDelegation } from '../tx/builder/delegation';
-import { DelegationTag } from '../tx/builder/delegation/schema';
/**
* Account provided by wallet
@@ -77,28 +74,6 @@ export default class AccountRpc extends AccountBase {
return signature;
}
- override async signDelegationToContract(
- contractAddress: Encoded.ContractAddress,
- { consensusProtocolVersion, isOracle }: {
- consensusProtocolVersion?: ConsensusProtocolVersion;
- isOracle?: boolean;
- } = {},
- ): Promise {
- if (isOracle == null) {
- const protocol = (consensusProtocolVersion != null) ? ConsensusProtocolVersion[consensusProtocolVersion] : 'unknown';
- console.warn(`AccountRpc:signDelegationToContract: isOracle is not set. By default, sdk would generate an AENS preclaim delegation signature, but it won't be the same as the oracle delegation signature in Ceres (current protocol is ${protocol}).`);
- }
- if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
- const delegation = packDelegation({
- tag: isOracle === true ? DelegationTag.Oracle : DelegationTag.AensPreclaim,
- accountAddress: this.address,
- contractAddress,
- });
- return this.signDelegation(delegation);
- }
- throw new NotImplementedError('');
- }
-
override async signDelegation(delegation: Encoded.Bytearray): Promise {
const { signature } = await this._rpcClient.request(
METHODS.signDelegation,
diff --git a/src/tx/builder/delegation/schema.ts b/src/tx/builder/delegation/schema.ts
index cf2036b847..bb8862ba76 100644
--- a/src/tx/builder/delegation/schema.ts
+++ b/src/tx/builder/delegation/schema.ts
@@ -18,7 +18,13 @@ export enum DelegationTag {
* Delegation of an AENS name to a contract
*/
AensName = 2,
+ /**
+ * Delegation of AENS preclaim to a contract
+ */
AensPreclaim = 3,
+ /**
+ * Delegation of oracle operations to a contract
+ */
Oracle = 4,
/**
* Delegation of oracle query to a contract
diff --git a/test/integration/rpc.ts b/test/integration/rpc.ts
index 81643c9afb..b4b6d505df 100644
--- a/test/integration/rpc.ts
+++ b/test/integration/rpc.ts
@@ -33,6 +33,8 @@ import {
buildTx,
hashTypedData,
Contract,
+ packDelegation,
+ DelegationTag,
} from '../../src';
import { getBufferToSign } from '../../src/account/Memory';
import { ImplPostMessage } from '../../src/aepp-wallet-communication/connection/BrowserWindowMessage';
@@ -479,8 +481,14 @@ describe('Aepp<->Wallet', () => {
});
});
- describe('Sign delegation to contract', () => {
- const contractAddress = 'ct_6y3N9KqQb74QsvR9NrESyhWeLNiA9aJgJ7ua8CvsTuGot6uzh';
+ describe('Sign delegation', () => {
+ const getDelegation = (accountAddress?: Encoded.AccountAddress): Encoded.Bytearray => (
+ packDelegation({
+ tag: DelegationTag.AensPreclaim,
+ contractAddress: 'ct_6y3N9KqQb74QsvR9NrESyhWeLNiA9aJgJ7ua8CvsTuGot6uzh',
+ accountAddress: accountAddress ?? aeSdk.address,
+ })
+ );
it('rejected by wallet', async () => {
let origin;
@@ -490,19 +498,14 @@ describe('Aepp<->Wallet', () => {
origin = aeppOrigin;
throw new RpcRejectedByUserError();
});
- sandbox.stub(wallet._resolveAccount(), 'signDelegationToContract')
- .callsFake((delegation, { aeppOrigin } = {}) => {
- origin = aeppOrigin;
- throw new RpcRejectedByUserError();
- });
- await expect(aepp.signDelegationToContract(contractAddress, { isOracle: false }))
+ await expect(aepp.signDelegation(getDelegation()))
.to.be.eventually.rejectedWith('Operation rejected by user').with.property('code', 4);
expect(origin).to.be.equal('http://origin.test');
sandbox.restore();
});
it('works', async () => {
- const signature = await aepp.signDelegationToContract(contractAddress, { isOracle: false });
+ const signature = await aepp.signDelegation(getDelegation());
expect(signature).to.satisfy((s: string) => s.startsWith('sg_'));
});
@@ -510,17 +513,14 @@ describe('Aepp<->Wallet', () => {
const sandbox = createSandbox();
sandbox.stub(wallet._resolveAccount(), 'signDelegation')
.callsFake(() => { throw new Error('test'); });
- sandbox.stub(wallet._resolveAccount(), 'signDelegationToContract')
- .callsFake(() => { throw new Error('test'); });
- await expect(aepp.signDelegationToContract(contractAddress, { isOracle: false }))
+ await expect(aepp.signDelegation(getDelegation()))
.to.be.rejectedWith('The peer failed to execute your request due to unknown error');
sandbox.restore();
});
it('signs using specific account', async () => {
const onAccount = wallet.addresses()[1];
- const signature = await aepp
- .signDelegationToContract(contractAddress, { onAccount, isOracle: false });
+ const signature = await aepp.signDelegation(getDelegation(onAccount), { onAccount });
expect(signature).to.satisfy((s: string) => s.startsWith('sg_'));
});
});
From f2c6d1d0894406234f728081d69a23620ea88e74 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Thu, 6 Jun 2024 21:38:32 +1000
Subject: [PATCH 040/149] refactor(account)!: make `signTypedData`,
`signDelegation` abstract
BREAKING CHANGE: AccountBase inheritors required to implement `signTypedData`, `signDelegation`
You can throw an exception if account operation is not doable.
---
src/account/Base.ts | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)
diff --git a/src/account/Base.ts b/src/account/Base.ts
index e4e18ac3fe..838a81b7a3 100644
--- a/src/account/Base.ts
+++ b/src/account/Base.ts
@@ -3,7 +3,6 @@ import Node from '../Node';
import CompilerBase from '../contract/compiler/Base';
import { Int } from '../tx/builder/constants';
import { AciValue, Domain } from '../utils/typed-data';
-import { NotImplementedError } from '../utils/errors';
interface AuthData {
fee?: Int;
@@ -61,20 +60,14 @@ export default abstract class AccountBase {
* @param options - Options
* @returns Signature
*/
- // TODO: make abstract in the next major release
- // eslint-disable-next-line class-methods-use-this
- async signTypedData(
- /* eslint-disable @typescript-eslint/no-unused-vars */
+ abstract signTypedData(
data: Encoded.ContractBytearray,
aci: AciValue,
options?: Domain & {
aeppOrigin?: string;
aeppRpcClientId?: string;
},
- /* eslint-enable @typescript-eslint/no-unused-vars */
- ): Promise {
- throw new NotImplementedError('signTypedData method');
- }
+ ): Promise;
/**
* Sign data blob
@@ -101,18 +94,12 @@ export default abstract class AccountBase {
* @param options - Options
* @returns Signature
*/
- // TODO: make abstract in the next major release
- // eslint-disable-next-line class-methods-use-this
- async signDelegation(
- /* eslint-disable @typescript-eslint/no-unused-vars */
+ abstract signDelegation(
delegation: Encoded.Bytearray,
options?: {
networkId?: string;
aeppOrigin?: string;
aeppRpcClientId?: string;
},
- /* eslint-enable @typescript-eslint/no-unused-vars */
- ): Promise {
- throw new NotImplementedError('signDelegation method');
- }
+ ): Promise;
}
From 0dd3b49ed0d603c3abab5d151b2a829beb69adad Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Thu, 6 Jun 2024 23:10:03 +1000
Subject: [PATCH 041/149] chore(node)!: require 7.1.0
BREAKING CHANGE: sdk requires aeternity node 7.1.0 and above
---
docker-compose.yml | 2 +-
src/Node.ts | 2 +-
src/tx/builder/field-types/gas-price.ts | 5 -----
test/integration/aens.ts | 9 +++++++--
test/integration/delegation.ts | 2 ++
tooling/autorest/node.yaml | 2 +-
6 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/docker-compose.yml b/docker-compose.yml
index 68cfd39c42..2d6d0e35d9 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,7 +1,7 @@
services:
node:
# TODO: switch to master after merging https://github.com/aeternity/aeternity/pull/4303
- image: aeternity/aeternity:v7.0.0-rc1-bundle
+ image: aeternity/aeternity:v7.1.0-bundle
# TODO: remove 3313 port after merging https://github.com/aeternity/aeternity/pull/4303
ports: [3013:3013, 3113:3113, 3014:3014, 3313:3313]
# TODO: remove after releasing https://github.com/aeternity/aeternity/pull/4292
diff --git a/src/Node.ts b/src/Node.ts
index a88de39ffb..50aa400c60 100644
--- a/src/Node.ts
+++ b/src/Node.ts
@@ -137,7 +137,7 @@ export default class Node extends (NodeTransformed as unknown as NodeTransformed
super(url, {
allowInsecureConnection: true,
additionalPolicies: [
- ...ignoreVersion ? [] : [genVersionCheckPolicy('node', getVersion, '6.2.0', '8.0.0')],
+ ...ignoreVersion ? [] : [genVersionCheckPolicy('node', getVersion, '7.1.0', '8.0.0')],
genRequestQueuesPolicy(),
genCombineGetRequestsPolicy(),
genRetryOnFailurePolicy(retryCount, retryOverallDelay),
diff --git a/src/tx/builder/field-types/gas-price.ts b/src/tx/builder/field-types/gas-price.ts
index 1623260d05..8e45f75577 100644
--- a/src/tx/builder/field-types/gas-price.ts
+++ b/src/tx/builder/field-types/gas-price.ts
@@ -4,7 +4,6 @@ import { ArgumentError, IllegalArgumentError } from '../../../utils/errors';
import { Int, MIN_GAS_PRICE } from '../constants';
import Node from '../../../Node';
import { AE_AMOUNT_FORMATS, formatAmount } from '../../../utils/amount-formatter';
-import semverSatisfies from '../../../utils/semver-satisfies';
const gasPriceCache: WeakMap = new WeakMap();
@@ -14,10 +13,6 @@ export async function getCachedIncreasedGasPrice(node: Node): Promise {
return cache.gasPrice;
}
- // TODO: remove after requiring node@6.13.0
- const { nodeVersion } = await node._getCachedStatus();
- if (!semverSatisfies(nodeVersion, '6.13.0')) return 0n;
-
const { minGasPrice, utilization } = (await node.getRecentGasPrices())[0];
let gasPrice = utilization < 70 ? 0n : BigInt(
new BigNumber(minGasPrice.toString()).times(1.01).integerValue().toFixed(),
diff --git a/test/integration/aens.ts b/test/integration/aens.ts
index e7db23ff05..52d5699ec7 100644
--- a/test/integration/aens.ts
+++ b/test/integration/aens.ts
@@ -238,7 +238,8 @@ describe('Aens', () => {
channel: encode(decode(address), Encoding.Channel),
contract_pubkey: buildContractId(address, 13),
};
- pointersNode = Object.entries(pointers).map(([key, id]) => ({ key, id }));
+ pointersNode = Object.entries(pointers)
+ .map(([key, id]) => ({ key, id, encodedKey: encode(Buffer.from(key), Encoding.Bytearray) }));
});
it('updates', async () => {
@@ -294,7 +295,11 @@ describe('Aens', () => {
assertNotNull(updateRes.tx);
expect(updateRes.tx.pointers).to.be.eql([
...pointersNode.filter((pointer) => pointer.key !== 'contract_pubkey'),
- { key: 'contract_pubkey', id: anotherContract },
+ {
+ key: 'contract_pubkey',
+ id: anotherContract,
+ encodedKey: 'ba_Y29udHJhY3RfcHVia2V5OCcARA==',
+ },
]);
});
diff --git a/test/integration/delegation.ts b/test/integration/delegation.ts
index 02654693b8..4fa01e7a61 100644
--- a/test/integration/delegation.ts
+++ b/test/integration/delegation.ts
@@ -139,6 +139,7 @@ contract DelegateTest =
expect((await aeSdk.api.getNameEntryByName(name)).pointers).to.be.eql([{
key: 'oracle',
id: newOwner.replace('ak', 'ok'),
+ encodedKey: 'ba_b3JhY2xlzgFUsQ==',
}]);
});
@@ -151,6 +152,7 @@ contract DelegateTest =
expect((await aeSdk.api.getNameEntryByName(name)).pointers[0]).to.be.eql({
key: 'test key',
id: encode(dataPt, Encoding.Bytearray),
+ encodedKey: 'ba_dGVzdCBrZXk//Xo5',
});
});
diff --git a/tooling/autorest/node.yaml b/tooling/autorest/node.yaml
index 023b08dbb5..3130eba92d 100644
--- a/tooling/autorest/node.yaml
+++ b/tooling/autorest/node.yaml
@@ -159,7 +159,7 @@ version: ^3.7.1
use-extension:
'@autorest/typescript': ^6.0.15
'@autorest/modelerfour': ^4.27.0
-input-file: https://raw.githubusercontent.com/aeternity/aeternity/v6.13.0/apps/aehttp/priv/oas3.yaml
+input-file: https://raw.githubusercontent.com/aeternity/aeternity/v7.1.0/apps/aehttp/priv/oas3.yaml
output-folder: ../../src/apis/node
source-code-folder-path: .
generator: typescript
From 08783fd935cb204f807afef3e9fa3fbb1db77b9c Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Thu, 6 Jun 2024 23:11:15 +1000
Subject: [PATCH 042/149] chore(middleware)!: require 1.77.5
BREAKING CHANGE: sdk requires middleware@1.77.5 and above
---
src/Middleware.ts | 2 +-
tooling/autorest/middleware-prepare.mjs | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/Middleware.ts b/src/Middleware.ts
index 4d94f2db6c..83dd6c208c 100644
--- a/src/Middleware.ts
+++ b/src/Middleware.ts
@@ -132,7 +132,7 @@ export default class Middleware
allowInsecureConnection: true,
additionalPolicies: [
...ignoreVersion ? [] : [
- genVersionCheckPolicy('middleware', getVersion, '1.47.0', '2.0.0'),
+ genVersionCheckPolicy('middleware', getVersion, '1.77.5', '2.0.0'),
],
genRequestQueuesPolicy(),
genCombineGetRequestsPolicy(),
diff --git a/tooling/autorest/middleware-prepare.mjs b/tooling/autorest/middleware-prepare.mjs
index 88c79c5abc..afeaeab394 100755
--- a/tooling/autorest/middleware-prepare.mjs
+++ b/tooling/autorest/middleware-prepare.mjs
@@ -21,12 +21,12 @@ const run = (getOutput, command, ...args) => {
};
const name = './tooling/autorest/middleware-openapi.yaml';
-const hash = 'HQS7QRRVCTUwwvxXH7ABLc1+td/pRqYsW5yAVwsp/Tp8Ruzan2dvkUeXrdquonixp+vjl6u4YiBLC11pm8XmmA==';
+const hash = 'kc8BgsSJdSmzj7y33IOBVT0wlcWy4gsG49fFMVUyZ08Alhee9LhCC98HaCYNIft95ZzFYVwNY+x++acnZMK0gw==';
await restoreFile(name, hash, () => {
- const version = '1.68.1';
+ const version = '1.77.5';
const id = run(true, 'docker', 'create', `aeternity/ae_mdw:${version}`);
- const openapi = `/home/aeternity/node/lib/ae_mdw-${version}/priv/static/swagger/swagger_v2.yaml`;
+ const openapi = `/home/aeternity/node/lib/ae_mdw-${version}/priv/static/swagger/swagger_v2.json`;
run(false, 'docker', 'cp', `${id}:${openapi}`, name);
run(false, 'docker', 'rm', '-v', id);
});
From ee2744d9ac9e676f0b4b42c8038b8911375ecb53 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Fri, 7 Jun 2024 23:28:12 +1000
Subject: [PATCH 043/149] chore(deps): update docs build deps
---
docs/requirements.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/requirements.txt b/docs/requirements.txt
index a224f69a17..b78f98ee5c 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,4 +1,4 @@
-mkdocs==1.5.3
+mkdocs==1.6.0
mkdocs-simple-hooks==0.1.5
-mkdocs-material==9.5.8
-mike==2.0.0
+mkdocs-material==9.5.26
+mike==2.1.1
From c66060b467038bfdb758eeb1f8e9d379d130500f Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 8 Jun 2024 12:55:41 +1000
Subject: [PATCH 044/149] chore(deps): update
---
package-lock.json | 4073 +++++++++++++++---------------
package.json | 61 +-
tooling/autorest/compiler.yaml | 2 +-
tooling/autorest/middleware.yaml | 2 +-
tooling/autorest/node.yaml | 2 +-
5 files changed, 2039 insertions(+), 2101 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index efa58bdfca..fb99237377 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,13 +12,13 @@
"@aeternity/aepp-calldata": "^1.7.0",
"@aeternity/argon2": "^0.0.1",
"@aeternity/uuid": "^0.0.1",
- "@azure/core-client": "^1.8.0",
- "@azure/core-rest-pipeline": "^1.14.0",
- "@babel/runtime-corejs3": "^7.24.0",
- "@ledgerhq/hw-transport": "^6.30.4",
+ "@azure/core-client": "^1.9.2",
+ "@azure/core-rest-pipeline": "^1.16.0",
+ "@babel/runtime-corejs3": "^7.24.7",
+ "@ledgerhq/hw-transport": "^6.30.6",
"@types/aes-js": "^3.1.4",
"@types/json-bigint": "^1.0.4",
- "@types/node": "~18.13",
+ "@types/node": "~18.15.3",
"@types/sha.js": "^2.4.4",
"@types/uuid": "^9.0.8",
"@types/webextension-polyfill": "^0.10.7",
@@ -40,29 +40,29 @@
"tweetnacl": "^1.0.3",
"tweetnacl-auth": "^1.0.1",
"varuint-bitcoin": "^1.1.2",
- "websocket": "^1.0.34",
- "ws": "^8.16.0"
+ "websocket": "^1.0.35",
+ "ws": "^8.17.0"
},
"devDependencies": {
- "@babel/cli": "^7.23.9",
- "@babel/core": "^7.24.0",
- "@babel/node": "^7.23.9",
- "@babel/plugin-transform-runtime": "^7.24.0",
- "@babel/preset-env": "^7.24.0",
- "@babel/preset-typescript": "^7.23.3",
- "@babel/register": "^7.23.7",
- "@commitlint/cli": "^19.0.3",
- "@commitlint/config-conventional": "^19.0.3",
- "@ledgerhq/hw-transport-mocker": "^6.28.4",
- "@ledgerhq/hw-transport-node-hid-singleton": "^6.30.4",
- "@ledgerhq/hw-transport-webusb": "^6.28.4",
- "@types/chai": "^4.3.12",
+ "@babel/cli": "^7.24.7",
+ "@babel/core": "^7.24.7",
+ "@babel/node": "^7.24.7",
+ "@babel/plugin-transform-runtime": "^7.24.7",
+ "@babel/preset-env": "^7.24.7",
+ "@babel/preset-typescript": "^7.24.7",
+ "@babel/register": "^7.24.6",
+ "@commitlint/cli": "^19.3.0",
+ "@commitlint/config-conventional": "^19.2.2",
+ "@ledgerhq/hw-transport-mocker": "^6.28.6",
+ "@ledgerhq/hw-transport-node-hid-singleton": "^6.30.6",
+ "@ledgerhq/hw-transport-webusb": "^6.28.6",
+ "@types/chai": "^4.3.16",
"@types/chai-as-promised": "^7.1.8",
"@types/mocha": "^10.0.6",
"@types/node-hid": "^1.3.4",
"@types/sinon": "^17.0.3",
- "@typescript-eslint/eslint-plugin": "^7.1.1",
- "@typescript-eslint/parser": "^7.1.1",
+ "@typescript-eslint/eslint-plugin": "^7.12.0",
+ "@typescript-eslint/parser": "^7.12.0",
"autorest": "^3.7.1",
"babel-loader": "^9.1.3",
"babel-plugin-add-import-extension": "^1.6.0",
@@ -70,40 +70,32 @@
"babel-plugin-transform-default-named-imports": "^1.2.2",
"babel-plugin-transform-import-meta": "^2.2.1",
"chai": "^4.4.1",
- "chai-as-promised": "^7.1.1",
+ "chai-as-promised": "^7.1.2",
"downlevel-dts": "github:aeternity/downlevel-dts",
"eslint": "^8.57.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^18.0.0",
+ "eslint-plugin-import": "^2.29.1",
"eslint-plugin-rulesdir": "^0.2.2",
- "eslint-plugin-tsdoc": "^0.2.17",
+ "eslint-plugin-tsdoc": "^0.3.0",
"html-webpack-plugin": "^5.6.0",
- "mocha": "^10.3.0",
+ "mocha": "^10.4.0",
"nyc": "^15.1.0",
- "sinon": "^17.0.1",
+ "sinon": "^18.0.0",
"source-map": "^0.7.4",
"standard-version": "^9.5.0",
"ts-node": "^10.9.2",
- "typedoc": "^0.25.11",
+ "typedoc": "^0.25.13",
"typedoc-plugin-missing-exports": "^2.2.0",
- "typescript": "^5.3.3",
- "webpack": "^5.90.3",
- "webpack-bundle-analyzer": "^4.10.1",
+ "typescript": "^5.4.5",
+ "webpack": "^5.91.0",
+ "webpack-bundle-analyzer": "^4.10.2",
"webpack-cli": "^5.1.4"
},
"engines": {
"node": ">=14.19.0"
}
},
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@aeternity/aepp-calldata": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@aeternity/aepp-calldata/-/aepp-calldata-1.7.0.tgz",
@@ -139,119 +131,119 @@
}
},
"node_modules/@ampproject/remapping": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
"dev": true,
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@azure/abort-controller": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.0.0.tgz",
- "integrity": "sha512-RP/mR/WJchR+g+nQFJGOec+nzeN/VvjlwbinccoqfhTsTHbb8X5+mLDp48kHT0ueyum0BNSwGm0kX0UZuIqTGg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
"dependencies": {
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@azure/core-auth": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.6.0.tgz",
- "integrity": "sha512-3X9wzaaGgRaBCwhLQZDtFp5uLIXCPrGbwJNWPPugvL4xbIGgScv77YzzxToKGLAKvG9amDoofMoP+9hsH1vs1w==",
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz",
+ "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==",
"dependencies": {
"@azure/abort-controller": "^2.0.0",
"@azure/core-util": "^1.1.0",
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@azure/core-client": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.8.0.tgz",
- "integrity": "sha512-+gHS3gEzPlhyQBMoqVPOTeNH031R5DM/xpCvz72y38C09rg4Hui/1sJS/ujoisDZbbSHyuRLVWdFlwL0pIFwbg==",
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz",
+ "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==",
"dependencies": {
"@azure/abort-controller": "^2.0.0",
"@azure/core-auth": "^1.4.0",
"@azure/core-rest-pipeline": "^1.9.1",
"@azure/core-tracing": "^1.0.0",
- "@azure/core-util": "^1.0.0",
+ "@azure/core-util": "^1.6.1",
"@azure/logger": "^1.0.0",
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@azure/core-rest-pipeline": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.14.0.tgz",
- "integrity": "sha512-Tp4M6NsjCmn9L5p7HsW98eSOS7A0ibl3e5ntZglozT0XuD/0y6i36iW829ZbBq0qihlGgfaeFpkLjZ418KDm1Q==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz",
+ "integrity": "sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==",
"dependencies": {
"@azure/abort-controller": "^2.0.0",
"@azure/core-auth": "^1.4.0",
"@azure/core-tracing": "^1.0.1",
- "@azure/core-util": "^1.3.0",
+ "@azure/core-util": "^1.9.0",
"@azure/logger": "^1.0.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "tslib": "^2.2.0"
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@azure/core-tracing": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz",
- "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz",
+ "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==",
"dependencies": {
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-util": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.7.0.tgz",
- "integrity": "sha512-Zq2i3QO6k9DA8vnm29mYM4G8IE9u1mhF1GUabVEqPNX8Lj833gdxQ2NAFxt2BZsfAL+e9cT8SyVN7dFVJ/Hf0g==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
"dependencies": {
"@azure/abort-controller": "^2.0.0",
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@azure/logger": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz",
- "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.2.tgz",
+ "integrity": "sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==",
"dependencies": {
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@babel/cli": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.9.tgz",
- "integrity": "sha512-vB1UXmGDNEhcf1jNAHKT9IlYk1R+hehVTLFlCLHBi8gfuHQGP6uRjgXVYU0EVlI/qwAWpstqkBdf2aez3/z/5Q==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.7.tgz",
+ "integrity": "sha512-8dfPprJgV4O14WTx+AQyEA+opgUKPrsIXX/MdL50J1n06EQJ6m1T+CdsJe0qEC0B/Xl85i+Un5KVAxd/PACX9A==",
"dev": true,
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.17",
- "commander": "^4.0.1",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "commander": "^6.2.0",
"convert-source-map": "^2.0.0",
"fs-readdir-recursive": "^1.1.0",
"glob": "^7.2.0",
@@ -274,43 +266,43 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
- "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.23.4",
- "chalk": "^2.4.2"
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
- "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz",
+ "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz",
- "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz",
+ "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
- "@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.24.0",
- "@babel/parser": "^7.24.0",
- "@babel/template": "^7.24.0",
- "@babel/traverse": "^7.24.0",
- "@babel/types": "^7.24.0",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.24.7",
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helpers": "^7.24.7",
+ "@babel/parser": "^7.24.7",
+ "@babel/template": "^7.24.7",
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -326,14 +318,14 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
- "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
+ "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.23.6",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
+ "@babel/types": "^7.24.7",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
},
"engines": {
@@ -341,37 +333,38 @@
}
},
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
- "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
+ "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
- "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
+ "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.15"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
- "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz",
+ "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-validator-option": "^7.23.5",
+ "@babel/compat-data": "^7.24.7",
+ "@babel/helper-validator-option": "^7.24.7",
"browserslist": "^4.22.2",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
@@ -381,19 +374,19 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.23.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz",
- "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-member-expression-to-functions": "^7.23.0",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.20",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz",
+ "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-function-name": "^7.24.7",
+ "@babel/helper-member-expression-to-functions": "^7.24.7",
+ "@babel/helper-optimise-call-expression": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/helper-split-export-declaration": "^7.24.7",
"semver": "^6.3.1"
},
"engines": {
@@ -404,12 +397,12 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
- "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz",
+ "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-annotate-as-pure": "^7.24.7",
"regexpu-core": "^5.3.1",
"semver": "^6.3.1"
},
@@ -421,9 +414,9 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz",
- "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
+ "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
"dev": true,
"dependencies": {
"@babel/helper-compilation-targets": "^7.22.6",
@@ -437,74 +430,79 @@
}
},
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
+ "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
"dev": true,
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
+ "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
+ "@babel/template": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
+ "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
- "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz",
+ "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.23.0"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
+ "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.15"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
- "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz",
+ "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/helper-validator-identifier": "^7.22.20"
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-simple-access": "^7.24.7",
+ "@babel/helper-split-export-declaration": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -514,35 +512,35 @@
}
},
"node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
- "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
+ "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz",
- "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz",
+ "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
- "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz",
+ "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-wrap-function": "^7.22.20"
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-wrap-function": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -552,14 +550,14 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
- "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz",
+ "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-member-expression-to-functions": "^7.22.15",
- "@babel/helper-optimise-call-expression": "^7.22.5"
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-member-expression-to-functions": "^7.24.7",
+ "@babel/helper-optimise-call-expression": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -569,118 +567,121 @@
}
},
"node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
+ "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
- "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
+ "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
+ "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
- "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
+ "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz",
+ "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
- "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz",
+ "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==",
"dev": true,
"dependencies": {
- "@babel/helper-function-name": "^7.22.5",
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.22.19"
+ "@babel/helper-function-name": "^7.24.7",
+ "@babel/template": "^7.24.7",
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz",
- "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz",
+ "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.24.0",
- "@babel/traverse": "^7.24.0",
- "@babel/types": "^7.24.0"
+ "@babel/template": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
- "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
+ "@babel/helper-validator-identifier": "^7.24.7",
"chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/node": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.23.9.tgz",
- "integrity": "sha512-/d4ju/POwlGIJlZ+NqWH1qu61wt6ZlTZZZutrK2MOSdaH1JCh726nLw/GSvAjG+LTY6CO9SsB8uWcttnFKm6yg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.24.7.tgz",
+ "integrity": "sha512-BCYNLxUQjGTgy8bAq12jy+Lt8soGWa/5u3s7U3aTVXxviIp0YVS+/Wm0b4eaitLVvetYrEoAiRF0QOk4WKsHAQ==",
"dev": true,
"dependencies": {
- "@babel/register": "^7.23.7",
- "commander": "^4.0.1",
+ "@babel/register": "^7.24.6",
+ "commander": "^6.2.0",
"core-js": "^3.30.2",
"node-environment-flags": "^1.0.5",
"regenerator-runtime": "^0.14.0",
@@ -697,9 +698,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz",
- "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
+ "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -708,13 +709,29 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz",
+ "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz",
- "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz",
+ "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -724,14 +741,14 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz",
- "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
+ "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/plugin-transform-optional-chaining": "^7.23.3"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/plugin-transform-optional-chaining": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -741,13 +758,13 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.23.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz",
- "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz",
+ "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -832,12 +849,12 @@
}
},
"node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz",
- "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz",
+ "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -847,12 +864,12 @@
}
},
"node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz",
- "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
+ "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -886,12 +903,12 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
- "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz",
+ "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1003,12 +1020,12 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
- "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz",
+ "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1034,12 +1051,12 @@
}
},
"node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz",
- "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
+ "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1049,14 +1066,14 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz",
- "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz",
+ "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.20",
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-remap-async-to-generator": "^7.24.7",
"@babel/plugin-syntax-async-generators": "^7.8.4"
},
"engines": {
@@ -1067,14 +1084,14 @@
}
},
"node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz",
- "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
+ "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
"dev": true,
"dependencies": {
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.20"
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-remap-async-to-generator": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1084,12 +1101,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz",
- "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
+ "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1099,12 +1116,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz",
- "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz",
+ "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1114,13 +1131,13 @@
}
},
"node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz",
- "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz",
+ "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1130,13 +1147,13 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz",
- "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
+ "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-class-static-block": "^7.14.5"
},
"engines": {
@@ -1147,18 +1164,18 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.23.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz",
- "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.20",
- "@babel/helper-split-export-declaration": "^7.22.6",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz",
+ "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-function-name": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.24.7",
+ "@babel/helper-split-export-declaration": "^7.24.7",
"globals": "^11.1.0"
},
"engines": {
@@ -1169,13 +1186,13 @@
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz",
- "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
+ "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/template": "^7.22.15"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/template": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1185,12 +1202,12 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz",
- "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz",
+ "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1200,13 +1217,13 @@
}
},
"node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz",
- "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
+ "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1216,12 +1233,12 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz",
- "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
+ "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1231,12 +1248,12 @@
}
},
"node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz",
- "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
+ "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-dynamic-import": "^7.8.3"
},
"engines": {
@@ -1247,13 +1264,13 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz",
- "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
+ "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
"dev": true,
"dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1263,12 +1280,12 @@
}
},
"node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz",
- "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
+ "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
},
"engines": {
@@ -1279,13 +1296,13 @@
}
},
"node_modules/@babel/plugin-transform-for-of": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz",
- "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
+ "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1295,14 +1312,14 @@
}
},
"node_modules/@babel/plugin-transform-function-name": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz",
- "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz",
+ "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==",
"dev": true,
"dependencies": {
- "@babel/helper-compilation-targets": "^7.22.15",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-function-name": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1312,12 +1329,12 @@
}
},
"node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz",
- "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
+ "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-json-strings": "^7.8.3"
},
"engines": {
@@ -1328,12 +1345,12 @@
}
},
"node_modules/@babel/plugin-transform-literals": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz",
- "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz",
+ "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1343,12 +1360,12 @@
}
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz",
- "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
+ "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
},
"engines": {
@@ -1359,12 +1376,12 @@
}
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz",
- "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
+ "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1374,13 +1391,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz",
- "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
+ "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1390,14 +1407,14 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz",
- "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz",
+ "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5"
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-simple-access": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1407,15 +1424,15 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz",
- "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz",
+ "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==",
"dev": true,
"dependencies": {
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.20"
+ "@babel/helper-hoist-variables": "^7.24.7",
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1425,13 +1442,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz",
- "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
+ "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1441,13 +1458,13 @@
}
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
- "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
+ "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1457,12 +1474,12 @@
}
},
"node_modules/@babel/plugin-transform-new-target": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz",
- "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
+ "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1472,12 +1489,12 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz",
- "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
+ "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
},
"engines": {
@@ -1488,12 +1505,12 @@
}
},
"node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz",
- "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
+ "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
},
"engines": {
@@ -1504,16 +1521,15 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz",
- "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
+ "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.23.3"
+ "@babel/plugin-transform-parameters": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1523,13 +1539,13 @@
}
},
"node_modules/@babel/plugin-transform-object-super": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz",
- "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
+ "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.20"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1539,12 +1555,12 @@
}
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz",
- "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
+ "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
},
"engines": {
@@ -1555,13 +1571,13 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz",
- "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz",
+ "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
"@babel/plugin-syntax-optional-chaining": "^7.8.3"
},
"engines": {
@@ -1572,12 +1588,12 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz",
- "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
+ "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1587,13 +1603,13 @@
}
},
"node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz",
- "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz",
+ "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1603,14 +1619,14 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz",
- "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
+ "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5"
},
"engines": {
@@ -1621,12 +1637,12 @@
}
},
"node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz",
- "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
+ "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1636,12 +1652,12 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz",
- "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
+ "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.24.7",
"regenerator-transform": "^0.15.2"
},
"engines": {
@@ -1652,12 +1668,12 @@
}
},
"node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz",
- "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
+ "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1667,16 +1683,16 @@
}
},
"node_modules/@babel/plugin-transform-runtime": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz",
- "integrity": "sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz",
+ "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==",
"dev": true,
"dependencies": {
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.24.0",
- "babel-plugin-polyfill-corejs2": "^0.4.8",
- "babel-plugin-polyfill-corejs3": "^0.9.0",
- "babel-plugin-polyfill-regenerator": "^0.5.5",
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.1",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
"semver": "^6.3.1"
},
"engines": {
@@ -1687,12 +1703,12 @@
}
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz",
- "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
+ "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1702,13 +1718,13 @@
}
},
"node_modules/@babel/plugin-transform-spread": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz",
- "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
+ "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1718,12 +1734,12 @@
}
},
"node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz",
- "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
+ "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1733,12 +1749,12 @@
}
},
"node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz",
- "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
+ "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1748,12 +1764,12 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz",
- "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz",
+ "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1763,15 +1779,15 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz",
- "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz",
+ "integrity": "sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.23.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-typescript": "^7.23.3"
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-typescript": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1781,12 +1797,12 @@
}
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz",
- "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
+ "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1796,13 +1812,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz",
- "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
+ "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1812,13 +1828,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz",
- "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
+ "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1828,13 +1844,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz",
- "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz",
+ "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1844,26 +1860,27 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz",
- "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-plugin-utils": "^7.24.0",
- "@babel/helper-validator-option": "^7.23.5",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz",
+ "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.24.7",
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-validator-option": "^7.24.7",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7",
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-class-properties": "^7.12.13",
"@babel/plugin-syntax-class-static-block": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.23.3",
- "@babel/plugin-syntax-import-attributes": "^7.23.3",
+ "@babel/plugin-syntax-import-assertions": "^7.24.7",
+ "@babel/plugin-syntax-import-attributes": "^7.24.7",
"@babel/plugin-syntax-import-meta": "^7.10.4",
"@babel/plugin-syntax-json-strings": "^7.8.3",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
@@ -1875,58 +1892,58 @@
"@babel/plugin-syntax-private-property-in-object": "^7.14.5",
"@babel/plugin-syntax-top-level-await": "^7.14.5",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.23.3",
- "@babel/plugin-transform-async-generator-functions": "^7.23.9",
- "@babel/plugin-transform-async-to-generator": "^7.23.3",
- "@babel/plugin-transform-block-scoped-functions": "^7.23.3",
- "@babel/plugin-transform-block-scoping": "^7.23.4",
- "@babel/plugin-transform-class-properties": "^7.23.3",
- "@babel/plugin-transform-class-static-block": "^7.23.4",
- "@babel/plugin-transform-classes": "^7.23.8",
- "@babel/plugin-transform-computed-properties": "^7.23.3",
- "@babel/plugin-transform-destructuring": "^7.23.3",
- "@babel/plugin-transform-dotall-regex": "^7.23.3",
- "@babel/plugin-transform-duplicate-keys": "^7.23.3",
- "@babel/plugin-transform-dynamic-import": "^7.23.4",
- "@babel/plugin-transform-exponentiation-operator": "^7.23.3",
- "@babel/plugin-transform-export-namespace-from": "^7.23.4",
- "@babel/plugin-transform-for-of": "^7.23.6",
- "@babel/plugin-transform-function-name": "^7.23.3",
- "@babel/plugin-transform-json-strings": "^7.23.4",
- "@babel/plugin-transform-literals": "^7.23.3",
- "@babel/plugin-transform-logical-assignment-operators": "^7.23.4",
- "@babel/plugin-transform-member-expression-literals": "^7.23.3",
- "@babel/plugin-transform-modules-amd": "^7.23.3",
- "@babel/plugin-transform-modules-commonjs": "^7.23.3",
- "@babel/plugin-transform-modules-systemjs": "^7.23.9",
- "@babel/plugin-transform-modules-umd": "^7.23.3",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
- "@babel/plugin-transform-new-target": "^7.23.3",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4",
- "@babel/plugin-transform-numeric-separator": "^7.23.4",
- "@babel/plugin-transform-object-rest-spread": "^7.24.0",
- "@babel/plugin-transform-object-super": "^7.23.3",
- "@babel/plugin-transform-optional-catch-binding": "^7.23.4",
- "@babel/plugin-transform-optional-chaining": "^7.23.4",
- "@babel/plugin-transform-parameters": "^7.23.3",
- "@babel/plugin-transform-private-methods": "^7.23.3",
- "@babel/plugin-transform-private-property-in-object": "^7.23.4",
- "@babel/plugin-transform-property-literals": "^7.23.3",
- "@babel/plugin-transform-regenerator": "^7.23.3",
- "@babel/plugin-transform-reserved-words": "^7.23.3",
- "@babel/plugin-transform-shorthand-properties": "^7.23.3",
- "@babel/plugin-transform-spread": "^7.23.3",
- "@babel/plugin-transform-sticky-regex": "^7.23.3",
- "@babel/plugin-transform-template-literals": "^7.23.3",
- "@babel/plugin-transform-typeof-symbol": "^7.23.3",
- "@babel/plugin-transform-unicode-escapes": "^7.23.3",
- "@babel/plugin-transform-unicode-property-regex": "^7.23.3",
- "@babel/plugin-transform-unicode-regex": "^7.23.3",
- "@babel/plugin-transform-unicode-sets-regex": "^7.23.3",
+ "@babel/plugin-transform-arrow-functions": "^7.24.7",
+ "@babel/plugin-transform-async-generator-functions": "^7.24.7",
+ "@babel/plugin-transform-async-to-generator": "^7.24.7",
+ "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
+ "@babel/plugin-transform-block-scoping": "^7.24.7",
+ "@babel/plugin-transform-class-properties": "^7.24.7",
+ "@babel/plugin-transform-class-static-block": "^7.24.7",
+ "@babel/plugin-transform-classes": "^7.24.7",
+ "@babel/plugin-transform-computed-properties": "^7.24.7",
+ "@babel/plugin-transform-destructuring": "^7.24.7",
+ "@babel/plugin-transform-dotall-regex": "^7.24.7",
+ "@babel/plugin-transform-duplicate-keys": "^7.24.7",
+ "@babel/plugin-transform-dynamic-import": "^7.24.7",
+ "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
+ "@babel/plugin-transform-export-namespace-from": "^7.24.7",
+ "@babel/plugin-transform-for-of": "^7.24.7",
+ "@babel/plugin-transform-function-name": "^7.24.7",
+ "@babel/plugin-transform-json-strings": "^7.24.7",
+ "@babel/plugin-transform-literals": "^7.24.7",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
+ "@babel/plugin-transform-member-expression-literals": "^7.24.7",
+ "@babel/plugin-transform-modules-amd": "^7.24.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.7",
+ "@babel/plugin-transform-modules-systemjs": "^7.24.7",
+ "@babel/plugin-transform-modules-umd": "^7.24.7",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
+ "@babel/plugin-transform-new-target": "^7.24.7",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
+ "@babel/plugin-transform-numeric-separator": "^7.24.7",
+ "@babel/plugin-transform-object-rest-spread": "^7.24.7",
+ "@babel/plugin-transform-object-super": "^7.24.7",
+ "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
+ "@babel/plugin-transform-optional-chaining": "^7.24.7",
+ "@babel/plugin-transform-parameters": "^7.24.7",
+ "@babel/plugin-transform-private-methods": "^7.24.7",
+ "@babel/plugin-transform-private-property-in-object": "^7.24.7",
+ "@babel/plugin-transform-property-literals": "^7.24.7",
+ "@babel/plugin-transform-regenerator": "^7.24.7",
+ "@babel/plugin-transform-reserved-words": "^7.24.7",
+ "@babel/plugin-transform-shorthand-properties": "^7.24.7",
+ "@babel/plugin-transform-spread": "^7.24.7",
+ "@babel/plugin-transform-sticky-regex": "^7.24.7",
+ "@babel/plugin-transform-template-literals": "^7.24.7",
+ "@babel/plugin-transform-typeof-symbol": "^7.24.7",
+ "@babel/plugin-transform-unicode-escapes": "^7.24.7",
+ "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
+ "@babel/plugin-transform-unicode-regex": "^7.24.7",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.24.7",
"@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.8",
- "babel-plugin-polyfill-corejs3": "^0.9.0",
- "babel-plugin-polyfill-regenerator": "^0.5.5",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.4",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
"core-js-compat": "^3.31.0",
"semver": "^6.3.1"
},
@@ -1952,16 +1969,16 @@
}
},
"node_modules/@babel/preset-typescript": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz",
- "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz",
+ "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.15",
- "@babel/plugin-syntax-jsx": "^7.23.3",
- "@babel/plugin-transform-modules-commonjs": "^7.23.3",
- "@babel/plugin-transform-typescript": "^7.23.3"
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-validator-option": "^7.24.7",
+ "@babel/plugin-syntax-jsx": "^7.24.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.7",
+ "@babel/plugin-transform-typescript": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1971,9 +1988,9 @@
}
},
"node_modules/@babel/register": {
- "version": "7.23.7",
- "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz",
- "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==",
+ "version": "7.24.6",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz",
+ "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==",
"dev": true,
"dependencies": {
"clone-deep": "^4.0.1",
@@ -1996,9 +2013,9 @@
"dev": true
},
"node_modules/@babel/runtime": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
- "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz",
+ "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==",
"dev": true,
"dependencies": {
"regenerator-runtime": "^0.14.0"
@@ -2008,9 +2025,9 @@
}
},
"node_modules/@babel/runtime-corejs3": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.0.tgz",
- "integrity": "sha512-HxiRMOncx3ly6f3fcZ1GVKf+/EROcI9qwPgmij8Czqy6Okm/0T37T4y2ZIlLUuEUFjtM7NRsfdCO8Y3tAiJZew==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.7.tgz",
+ "integrity": "sha512-eytSX6JLBY6PVAeQa2bFlDx/7Mmln/gaEpsit5a3WEvjGfiIytEsgAwuIXCPM0xvw0v0cJn3ilq0/TvXrW0kgA==",
"dependencies": {
"core-js-pure": "^3.30.2",
"regenerator-runtime": "^0.14.0"
@@ -2020,33 +2037,33 @@
}
},
"node_modules/@babel/template": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
- "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz",
+ "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/parser": "^7.24.0",
- "@babel/types": "^7.24.0"
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz",
- "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.24.0",
- "@babel/types": "^7.24.0",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz",
+ "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.24.7",
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-function-name": "^7.24.7",
+ "@babel/helper-hoist-variables": "^7.24.7",
+ "@babel/helper-split-export-declaration": "^7.24.7",
+ "@babel/parser": "^7.24.7",
+ "@babel/types": "^7.24.7",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -2055,13 +2072,13 @@
}
},
"node_modules/@babel/types": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
- "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
+ "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
"dev": true,
"dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
+ "@babel/helper-string-parser": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -2069,15 +2086,15 @@
}
},
"node_modules/@commitlint/cli": {
- "version": "19.0.3",
- "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.0.3.tgz",
- "integrity": "sha512-mGhh/aYPib4Vy4h+AGRloMY+CqkmtdeKPV9poMcZeImF5e3knQ5VYaSeAM0mEzps1dbKsHvABwaDpafLUuM96g==",
+ "version": "19.3.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.3.0.tgz",
+ "integrity": "sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g==",
"dev": true,
"dependencies": {
- "@commitlint/format": "^19.0.3",
- "@commitlint/lint": "^19.0.3",
- "@commitlint/load": "^19.0.3",
- "@commitlint/read": "^19.0.3",
+ "@commitlint/format": "^19.3.0",
+ "@commitlint/lint": "^19.2.2",
+ "@commitlint/load": "^19.2.0",
+ "@commitlint/read": "^19.2.1",
"@commitlint/types": "^19.0.3",
"execa": "^8.0.1",
"yargs": "^17.0.0"
@@ -2090,9 +2107,9 @@
}
},
"node_modules/@commitlint/config-conventional": {
- "version": "19.0.3",
- "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.0.3.tgz",
- "integrity": "sha512-vh0L8XeLaEzTe8VCxSd0gAFvfTK0RFolrzw4o431bIuWJfi/yRCHJlsDwus7wW2eJaFFDR0VFXJyjGyDQhi4vA==",
+ "version": "19.2.2",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.2.2.tgz",
+ "integrity": "sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==",
"dev": true,
"dependencies": {
"@commitlint/types": "^19.0.3",
@@ -2142,9 +2159,9 @@
}
},
"node_modules/@commitlint/format": {
- "version": "19.0.3",
- "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.0.3.tgz",
- "integrity": "sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==",
+ "version": "19.3.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.3.0.tgz",
+ "integrity": "sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==",
"dev": true,
"dependencies": {
"@commitlint/types": "^19.0.3",
@@ -2167,9 +2184,9 @@
}
},
"node_modules/@commitlint/is-ignored": {
- "version": "19.0.3",
- "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.0.3.tgz",
- "integrity": "sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==",
+ "version": "19.2.2",
+ "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.2.2.tgz",
+ "integrity": "sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==",
"dev": true,
"dependencies": {
"@commitlint/types": "^19.0.3",
@@ -2179,26 +2196,11 @@
"node": ">=v18"
}
},
- "node_modules/@commitlint/is-ignored/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@commitlint/is-ignored/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -2206,19 +2208,13 @@
"node": ">=10"
}
},
- "node_modules/@commitlint/is-ignored/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/@commitlint/lint": {
- "version": "19.0.3",
- "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.0.3.tgz",
- "integrity": "sha512-uHPyRqIn57iIplYa5xBr6oNu5aPXKGC4WLeuHfqQHclwIqbJ33g3yA5fIA+/NYnp5ZM2EFiujqHFaVUYj6HlKA==",
+ "version": "19.2.2",
+ "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.2.2.tgz",
+ "integrity": "sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==",
"dev": true,
"dependencies": {
- "@commitlint/is-ignored": "^19.0.3",
+ "@commitlint/is-ignored": "^19.2.2",
"@commitlint/parse": "^19.0.3",
"@commitlint/rules": "^19.0.3",
"@commitlint/types": "^19.0.3"
@@ -2228,17 +2224,17 @@
}
},
"node_modules/@commitlint/load": {
- "version": "19.0.3",
- "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.0.3.tgz",
- "integrity": "sha512-18Tk/ZcDFRKIoKfEcl7kC+bYkEQ055iyKmGsYDoYWpKf6FUvBrP9bIWapuy/MB+kYiltmP9ITiUx6UXtqC9IRw==",
+ "version": "19.2.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.2.0.tgz",
+ "integrity": "sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==",
"dev": true,
"dependencies": {
"@commitlint/config-validator": "^19.0.3",
"@commitlint/execute-rule": "^19.0.0",
- "@commitlint/resolve-extends": "^19.0.3",
+ "@commitlint/resolve-extends": "^19.1.0",
"@commitlint/types": "^19.0.3",
"chalk": "^5.3.0",
- "cosmiconfig": "^8.3.6",
+ "cosmiconfig": "^9.0.0",
"cosmiconfig-typescript-loader": "^5.0.0",
"lodash.isplainobject": "^4.0.6",
"lodash.merge": "^4.6.2",
@@ -2284,13 +2280,14 @@
}
},
"node_modules/@commitlint/read": {
- "version": "19.0.3",
- "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.0.3.tgz",
- "integrity": "sha512-b5AflTyAXkUx5qKw4TkjjcOccXZHql3JqMi522knTQktq2AubKXFz60Sws+K4FsefwPws6fGz9mqiI/NvsvxFA==",
+ "version": "19.2.1",
+ "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.2.1.tgz",
+ "integrity": "sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw==",
"dev": true,
"dependencies": {
"@commitlint/top-level": "^19.0.0",
"@commitlint/types": "^19.0.3",
+ "execa": "^8.0.1",
"git-raw-commits": "^4.0.0",
"minimist": "^1.2.8"
},
@@ -2298,39 +2295,10 @@
"node": ">=v18"
}
},
- "node_modules/@commitlint/read/node_modules/dargs": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz",
- "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@commitlint/read/node_modules/git-raw-commits": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz",
- "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==",
- "dev": true,
- "dependencies": {
- "dargs": "^8.0.0",
- "meow": "^12.0.1",
- "split2": "^4.0.0"
- },
- "bin": {
- "git-raw-commits": "cli.mjs"
- },
- "engines": {
- "node": ">=16"
- }
- },
"node_modules/@commitlint/resolve-extends": {
- "version": "19.0.3",
- "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.0.3.tgz",
- "integrity": "sha512-18BKmta8OC8+Ub+Q3QGM9l27VjQaXobloVXOrMvu8CpEwJYv62vC/t7Ka5kJnsW0tU9q1eMqJFZ/nN9T/cOaIA==",
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.1.0.tgz",
+ "integrity": "sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==",
"dev": true,
"dependencies": {
"@commitlint/config-validator": "^19.0.3",
@@ -2381,89 +2349,6 @@
"node": ">=v18"
}
},
- "node_modules/@commitlint/top-level/node_modules/find-up": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz",
- "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==",
- "dev": true,
- "dependencies": {
- "locate-path": "^7.2.0",
- "path-exists": "^5.0.0",
- "unicorn-magic": "^0.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@commitlint/top-level/node_modules/locate-path": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
- "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
- "dev": true,
- "dependencies": {
- "p-locate": "^6.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@commitlint/top-level/node_modules/p-limit": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
- "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^1.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@commitlint/top-level/node_modules/p-locate": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
- "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@commitlint/top-level/node_modules/path-exists": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
- "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- }
- },
- "node_modules/@commitlint/top-level/node_modules/yocto-queue": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
- "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
- "dev": true,
- "engines": {
- "node": ">=12.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@commitlint/types": {
"version": "19.0.3",
"resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.0.3.tgz",
@@ -2536,9 +2421,9 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz",
+ "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==",
"dev": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
@@ -2697,9 +2582,9 @@
}
},
"node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
- "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"dev": true
},
"node_modules/@hutson/parse-repository-url": {
@@ -2801,6 +2686,15 @@
"node": ">=8"
}
},
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
@@ -2811,45 +2705,45 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dev": true,
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/source-map": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
- "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
"dev": true,
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
@@ -2859,9 +2753,9 @@
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.22",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
- "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
@@ -2869,34 +2763,20 @@
}
},
"node_modules/@ledgerhq/devices": {
- "version": "8.2.1",
- "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.2.1.tgz",
- "integrity": "sha512-l/2I/Xzt7Z32OmGzoc/mUvaZivdn7Id/SO7hBTGpk7PtJTpBRxVAabP4GWEKCayGyOAcvTwoVxM0HMkNVfIzOQ==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.3.0.tgz",
+ "integrity": "sha512-h5Scr+yIae8yjPOViCHLdMjpqn4oC2Whrsq8LinRxe48LEGMdPqSV1yY7+3Ch827wtzNpMv+/ilKnd8rY+rTlg==",
"dependencies": {
- "@ledgerhq/errors": "^6.16.2",
+ "@ledgerhq/errors": "^6.16.4",
"@ledgerhq/logs": "^6.12.0",
"rxjs": "^7.8.1",
"semver": "^7.3.5"
}
},
- "node_modules/@ledgerhq/devices/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@ledgerhq/devices/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"bin": {
"semver": "bin/semver.js"
},
@@ -2904,75 +2784,70 @@
"node": ">=10"
}
},
- "node_modules/@ledgerhq/devices/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/@ledgerhq/errors": {
- "version": "6.16.2",
- "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.16.2.tgz",
- "integrity": "sha512-jFpohaSW+p1Obp3NDT9QSByEtT3gtBZIjVNu8m25gnrH5zdtfPVlPwH6UiuS50s+2dHQyehV8hF+IfreKDWAZA=="
+ "version": "6.16.4",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.16.4.tgz",
+ "integrity": "sha512-M57yFaLYSN+fZCX0E0zUqOmrV6eipK+s5RhijHoUNlHUqrsvUz7iRQgpd5gRgHB5VkIjav7KdaZjKiWGcHovaQ=="
},
"node_modules/@ledgerhq/hw-transport": {
- "version": "6.30.4",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.30.4.tgz",
- "integrity": "sha512-VBcVd7UG8HDrjWMoZI5rqBDz+PBxLHTIPZOGY/fdMoEUwaBbss0Z3MxuJanMyerlfaLqnBSVuL0blz7rOyagkw==",
+ "version": "6.30.6",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.30.6.tgz",
+ "integrity": "sha512-fT0Z4IywiuJuZrZE/+W0blkV5UCotDPFTYKLkKCLzYzuE6javva7D/ajRaIeR+hZ4kTmKF4EqnsmDCXwElez+w==",
"dependencies": {
- "@ledgerhq/devices": "^8.2.1",
- "@ledgerhq/errors": "^6.16.2",
+ "@ledgerhq/devices": "^8.3.0",
+ "@ledgerhq/errors": "^6.16.4",
"@ledgerhq/logs": "^6.12.0",
"events": "^3.3.0"
}
},
"node_modules/@ledgerhq/hw-transport-mocker": {
- "version": "6.28.4",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.28.4.tgz",
- "integrity": "sha512-s4GyN8AdjenO+Y6XsxQyW1bQlbsBwNZJyax4Jz2tf+AbiDC3geblaK3wAg6FTUX0tz5K0mAarEVvM03Qxdxblw==",
+ "version": "6.28.6",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.28.6.tgz",
+ "integrity": "sha512-JDO2kqMOTRCQWNZr1KVlyX1AqE6WBzHjJDS3FnSI8Z/Bj2KSc2/1H/4lW6+Ap64yLtlmOW3GchdafFmLgYAgqw==",
"dev": true,
"dependencies": {
- "@ledgerhq/hw-transport": "^6.30.4",
+ "@ledgerhq/hw-transport": "^6.30.6",
"@ledgerhq/logs": "^6.12.0",
"rxjs": "^7.8.1"
}
},
"node_modules/@ledgerhq/hw-transport-node-hid-noevents": {
- "version": "6.29.4",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.29.4.tgz",
- "integrity": "sha512-g19nEwES/SIG9z0Zah6Y2zf883JCT57HSlHgR5DRHPrNXIJbJRZV/UbHQo3az/wZ642WmzGqkPUdmYGDjQu4rg==",
+ "version": "6.29.6",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.29.6.tgz",
+ "integrity": "sha512-H1cGC4TLwSCxve3rbV7qfPJBZfy7VD7k9Czc9HOMDwQ9zHFtaoeiIotIMGjzHjfPtAGauMpAYvrpmEdBBX5sHg==",
"dev": true,
"dependencies": {
- "@ledgerhq/devices": "^8.2.1",
- "@ledgerhq/errors": "^6.16.2",
- "@ledgerhq/hw-transport": "^6.30.4",
+ "@ledgerhq/devices": "^8.3.0",
+ "@ledgerhq/errors": "^6.16.4",
+ "@ledgerhq/hw-transport": "^6.30.6",
"@ledgerhq/logs": "^6.12.0",
"node-hid": "^2.1.2"
}
},
"node_modules/@ledgerhq/hw-transport-node-hid-singleton": {
- "version": "6.30.4",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-singleton/-/hw-transport-node-hid-singleton-6.30.4.tgz",
- "integrity": "sha512-YQH0tlk82GdmyHjIusRjJfRTGHnW2C23eik7Qk8w3ADLoR/Y9S2Q7uhS3t3494Raw2fbQ9ebd9c7S5mkAUt/8Q==",
+ "version": "6.30.6",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-singleton/-/hw-transport-node-hid-singleton-6.30.6.tgz",
+ "integrity": "sha512-1ptKA/rJ2dWXpY68xaRe/kyvb4J6gfgS+KUeG0lDvfVQfTk98O2CMCmwHp1uBX/ppt9Z47h/Bkd/j1/mMlolXg==",
"dev": true,
"dependencies": {
- "@ledgerhq/devices": "^8.2.1",
- "@ledgerhq/errors": "^6.16.2",
- "@ledgerhq/hw-transport": "^6.30.4",
- "@ledgerhq/hw-transport-node-hid-noevents": "^6.29.4",
+ "@ledgerhq/devices": "^8.3.0",
+ "@ledgerhq/errors": "^6.16.4",
+ "@ledgerhq/hw-transport": "^6.30.6",
+ "@ledgerhq/hw-transport-node-hid-noevents": "^6.29.6",
"@ledgerhq/logs": "^6.12.0",
"node-hid": "^2.1.2",
"usb": "2.9.0"
}
},
"node_modules/@ledgerhq/hw-transport-webusb": {
- "version": "6.28.4",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.28.4.tgz",
- "integrity": "sha512-qJcQXEhVHecOwmFcgqBy/aK4twDTrk1WzjTBmHHHJG1cdcn7zB2d7RwL93cP8dZ+r1OXyLSZPThH7erac9hFQQ==",
+ "version": "6.28.6",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.28.6.tgz",
+ "integrity": "sha512-rzICsvhcFcL4wSAvRPe+b9EEWB8cxj6yWy3FZdfs7ufi/0muNpFXWckWv1TC34em55sGXu2cMcwMKXg/O/Lc0Q==",
"dev": true,
"dependencies": {
- "@ledgerhq/devices": "^8.2.1",
- "@ledgerhq/errors": "^6.16.2",
- "@ledgerhq/hw-transport": "^6.30.4",
+ "@ledgerhq/devices": "^8.3.0",
+ "@ledgerhq/errors": "^6.16.4",
+ "@ledgerhq/hw-transport": "^6.30.6",
"@ledgerhq/logs": "^6.12.0"
}
},
@@ -3000,15 +2875,27 @@
"node-pre-gyp": "bin/node-pre-gyp"
}
},
- "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dependencies": {
- "yallist": "^4.0.0"
+ "debug": "4"
},
"engines": {
- "node": ">=10"
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/@mapbox/node-pre-gyp/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
"node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": {
@@ -3034,12 +2921,9 @@
}
},
"node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"bin": {
"semver": "bin/semver.js"
},
@@ -3047,38 +2931,33 @@
"node": ">=10"
}
},
- "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/@microsoft/tsdoc": {
- "version": "0.14.2",
- "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz",
- "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==",
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz",
+ "integrity": "sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==",
"dev": true
},
"node_modules/@microsoft/tsdoc-config": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz",
- "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==",
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.17.0.tgz",
+ "integrity": "sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==",
"dev": true,
"dependencies": {
- "@microsoft/tsdoc": "0.14.2",
- "ajv": "~6.12.6",
+ "@microsoft/tsdoc": "0.15.0",
+ "ajv": "~8.12.0",
"jju": "~1.4.0",
- "resolve": "~1.19.0"
+ "resolve": "~1.22.2"
}
},
"node_modules/@microsoft/tsdoc-config/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
@@ -3086,25 +2965,6 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/@microsoft/tsdoc-config/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/@microsoft/tsdoc-config/node_modules/resolve": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
- "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.1.0",
- "path-parse": "^1.0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/@nicolo-ribaudo/chokidar-2": {
"version": "2.1.8-no-fsevents.3",
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz",
@@ -3156,9 +3016,9 @@
}
},
"node_modules/@polka/url": {
- "version": "1.0.0-next.24",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz",
- "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==",
+ "version": "1.0.0-next.25",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz",
+ "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==",
"dev": true
},
"node_modules/@sinonjs/commons": {
@@ -3205,18 +3065,10 @@
"integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==",
"dev": true
},
- "node_modules/@tootallnate/once": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
- "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@tsconfig/node10": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
- "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
+ "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
"dev": true
},
"node_modules/@tsconfig/node12": {
@@ -3243,9 +3095,9 @@
"integrity": "sha512-v3D66IptpUqh+pHKVNRxY8yvp2ESSZXe0rTzsGdzUhEwag7ljVfgCllkWv2YgiYXDhWFBrEywll4A5JToyTNFA=="
},
"node_modules/@types/chai": {
- "version": "4.3.12",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz",
- "integrity": "sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==",
+ "version": "4.3.16",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz",
+ "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==",
"dev": true
},
"node_modules/@types/chai-as-promised": {
@@ -3267,9 +3119,9 @@
}
},
"node_modules/@types/eslint": {
- "version": "8.56.2",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz",
- "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==",
+ "version": "8.56.10",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz",
+ "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
"dev": true,
"dependencies": {
"@types/estree": "*",
@@ -3313,8 +3165,7 @@
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@types/minimist": {
"version": "1.2.5",
@@ -3329,9 +3180,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "18.13.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz",
- "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg=="
+ "version": "18.15.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz",
+ "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw=="
},
"node_modules/@types/node-hid": {
"version": "1.3.4",
@@ -3348,12 +3199,6 @@
"integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
"dev": true
},
- "node_modules/@types/semver": {
- "version": "7.5.8",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
- "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
- "dev": true
- },
"node_modules/@types/sha.js": {
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/@types/sha.js/-/sha.js-2.4.4.tgz",
@@ -3410,25 +3255,23 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz",
- "integrity": "sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.12.0.tgz",
+ "integrity": "sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==",
"dev": true,
"dependencies": {
- "@eslint-community/regexpp": "^4.5.1",
- "@typescript-eslint/scope-manager": "7.1.1",
- "@typescript-eslint/type-utils": "7.1.1",
- "@typescript-eslint/utils": "7.1.1",
- "@typescript-eslint/visitor-keys": "7.1.1",
- "debug": "^4.3.4",
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "7.12.0",
+ "@typescript-eslint/type-utils": "7.12.0",
+ "@typescript-eslint/utils": "7.12.0",
+ "@typescript-eslint/visitor-keys": "7.12.0",
"graphemer": "^1.4.0",
- "ignore": "^5.2.4",
+ "ignore": "^5.3.1",
"natural-compare": "^1.4.0",
- "semver": "^7.5.4",
- "ts-api-utils": "^1.0.1"
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -3444,53 +3287,20 @@
}
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/@typescript-eslint/parser": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.1.tgz",
- "integrity": "sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz",
+ "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "7.1.1",
- "@typescript-eslint/types": "7.1.1",
- "@typescript-eslint/typescript-estree": "7.1.1",
- "@typescript-eslint/visitor-keys": "7.1.1",
+ "@typescript-eslint/scope-manager": "7.12.0",
+ "@typescript-eslint/types": "7.12.0",
+ "@typescript-eslint/typescript-estree": "7.12.0",
+ "@typescript-eslint/visitor-keys": "7.12.0",
"debug": "^4.3.4"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -3506,16 +3316,16 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz",
- "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz",
+ "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.1.1",
- "@typescript-eslint/visitor-keys": "7.1.1"
+ "@typescript-eslint/types": "7.12.0",
+ "@typescript-eslint/visitor-keys": "7.12.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -3523,18 +3333,18 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz",
- "integrity": "sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.12.0.tgz",
+ "integrity": "sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "7.1.1",
- "@typescript-eslint/utils": "7.1.1",
+ "@typescript-eslint/typescript-estree": "7.12.0",
+ "@typescript-eslint/utils": "7.12.0",
"debug": "^4.3.4",
- "ts-api-utils": "^1.0.1"
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -3550,12 +3360,12 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz",
- "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz",
+ "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==",
"dev": true,
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -3563,22 +3373,22 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz",
- "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz",
+ "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.1.1",
- "@typescript-eslint/visitor-keys": "7.1.1",
+ "@typescript-eslint/types": "7.12.0",
+ "@typescript-eslint/visitor-keys": "7.12.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
- "minimatch": "9.0.3",
- "semver": "^7.5.4",
- "ts-api-utils": "^1.0.1"
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -3590,26 +3400,11 @@
}
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -3617,28 +3412,19 @@
"node": ">=10"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/@typescript-eslint/utils": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz",
- "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz",
+ "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@types/json-schema": "^7.0.12",
- "@types/semver": "^7.5.0",
- "@typescript-eslint/scope-manager": "7.1.1",
- "@typescript-eslint/types": "7.1.1",
- "@typescript-eslint/typescript-estree": "7.1.1",
- "semver": "^7.5.4"
+ "@typescript-eslint/scope-manager": "7.12.0",
+ "@typescript-eslint/types": "7.12.0",
+ "@typescript-eslint/typescript-estree": "7.12.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -3648,50 +3434,17 @@
"eslint": "^8.56.0"
}
},
- "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz",
- "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz",
+ "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.1.1",
- "eslint-visitor-keys": "^3.4.1"
+ "@typescript-eslint/types": "7.12.0",
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -3705,9 +3458,9 @@
"dev": true
},
"node_modules/@webassemblyjs/ast": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
- "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+ "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
"dev": true,
"dependencies": {
"@webassemblyjs/helper-numbers": "1.11.6",
@@ -3727,9 +3480,9 @@
"dev": true
},
"node_modules/@webassemblyjs/helper-buffer": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
- "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+ "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
"dev": true
},
"node_modules/@webassemblyjs/helper-numbers": {
@@ -3750,15 +3503,15 @@
"dev": true
},
"node_modules/@webassemblyjs/helper-wasm-section": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
- "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+ "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6"
+ "@webassemblyjs/wasm-gen": "1.12.1"
}
},
"node_modules/@webassemblyjs/ieee754": {
@@ -3786,28 +3539,28 @@
"dev": true
},
"node_modules/@webassemblyjs/wasm-edit": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
- "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+ "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/helper-wasm-section": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-opt": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6",
- "@webassemblyjs/wast-printer": "1.11.6"
+ "@webassemblyjs/helper-wasm-section": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-opt": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1",
+ "@webassemblyjs/wast-printer": "1.12.1"
}
},
"node_modules/@webassemblyjs/wasm-gen": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
- "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+ "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/ieee754": "1.11.6",
"@webassemblyjs/leb128": "1.11.6",
@@ -3815,24 +3568,24 @@
}
},
"node_modules/@webassemblyjs/wasm-opt": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
- "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+ "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6"
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1"
}
},
"node_modules/@webassemblyjs/wasm-parser": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
- "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+ "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
"@webassemblyjs/helper-api-error": "1.11.6",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/ieee754": "1.11.6",
@@ -3841,12 +3594,12 @@
}
},
"node_modules/@webassemblyjs/wast-printer": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
- "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+ "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
"@xtuc/long": "4.2.2"
}
},
@@ -3962,14 +3715,14 @@
"integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ=="
},
"node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
"dependencies": {
- "debug": "4"
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": ">= 14"
}
},
"node_modules/aggregate-error": {
@@ -3986,15 +3739,15 @@
}
},
"node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz",
+ "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
"dev": true,
"dependencies": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "uri-js": "^4.4.1"
},
"funding": {
"type": "github",
@@ -4105,6 +3858,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
+ "deprecated": "This package is no longer supported.",
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
@@ -4162,16 +3916,16 @@
"dev": true
},
"node_modules/array-includes": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
- "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
"dev": true,
- "peer": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
"is-string": "^1.0.7"
},
"engines": {
@@ -4190,37 +3944,17 @@
"node": ">=8"
}
},
- "node_modules/array.prototype.filter": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz",
- "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-array-method-boxes-properly": "^1.0.0",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/array.prototype.findlastindex": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz",
- "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
+ "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
"dev": true,
- "peer": true,
"dependencies": {
- "call-bind": "^1.0.5",
+ "call-bind": "^1.0.7",
"define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
+ "es-abstract": "^1.23.2",
"es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
"es-shim-unscopables": "^1.0.2"
},
"engines": {
@@ -4235,7 +3969,6 @@
"resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
"integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
"dev": true,
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -4254,7 +3987,6 @@
"resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
"integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
"dev": true,
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -4269,15 +4001,17 @@
}
},
"node_modules/array.prototype.reduce": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz",
- "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz",
+ "integrity": "sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
"es-array-method-boxes-properly": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
"is-string": "^1.0.7"
},
"engines": {
@@ -4341,10 +4075,13 @@
}
},
"node_modules/available-typed-arrays": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz",
- "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
"dev": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -4401,60 +4138,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/babel-loader/node_modules/locate-path": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
- "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
- "dev": true,
- "dependencies": {
- "p-locate": "^6.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/babel-loader/node_modules/p-limit": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
- "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^1.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/babel-loader/node_modules/p-locate": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
- "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/babel-loader/node_modules/path-exists": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
- "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- }
- },
"node_modules/babel-loader/node_modules/pkg-dir": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
@@ -4470,18 +4153,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/babel-loader/node_modules/yocto-queue": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
- "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
- "dev": true,
- "engines": {
- "node": ">=12.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/babel-plugin-add-import-extension": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/babel-plugin-add-import-extension/-/babel-plugin-add-import-extension-1.6.0.tgz",
@@ -4504,13 +4175,13 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.8",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz",
- "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==",
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
+ "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
"dev": true,
"dependencies": {
"@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.5.0",
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
"semver": "^6.3.1"
},
"peerDependencies": {
@@ -4518,25 +4189,25 @@
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz",
- "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==",
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz",
+ "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.5.0",
- "core-js-compat": "^3.34.0"
+ "@babel/helper-define-polyfill-provider": "^0.6.1",
+ "core-js-compat": "^3.36.1"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz",
- "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
+ "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.5.0"
+ "@babel/helper-define-polyfill-provider": "^0.6.2"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -4607,12 +4278,15 @@
}
},
"node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"dev": true,
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bindings": {
@@ -4685,12 +4359,12 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -4703,9 +4377,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.22.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
- "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
"dev": true,
"funding": [
{
@@ -4722,8 +4396,8 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001580",
- "electron-to-chromium": "^1.4.648",
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
"node-releases": "^2.0.14",
"update-browserslist-db": "^1.0.13"
},
@@ -4814,15 +4488,16 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz",
- "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
"dependencies": {
+ "es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.3",
- "set-function-length": "^1.2.0"
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
@@ -4877,9 +4552,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001585",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz",
- "integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==",
+ "version": "1.0.30001629",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001629.tgz",
+ "integrity": "sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw==",
"dev": true,
"funding": [
{
@@ -4920,15 +4595,15 @@
}
},
"node_modules/chai-as-promised": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
- "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz",
+ "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==",
"dev": true,
"dependencies": {
"check-error": "^1.0.2"
},
"peerDependencies": {
- "chai": ">= 2.1.2 < 5"
+ "chai": ">= 2.1.2 < 6"
}
},
"node_modules/chalk": {
@@ -4991,9 +4666,9 @@
}
},
"node_modules/chrome-trace-event": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
"dev": true,
"engines": {
"node": ">=6.0"
@@ -5087,9 +4762,9 @@
"dev": true
},
"node_modules/commander": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
"dev": true,
"engines": {
"node": ">= 6"
@@ -5269,7 +4944,16 @@
"node": ">=10"
}
},
- "node_modules/conventional-changelog-core/node_modules/find-up": {
+ "node_modules/conventional-changelog-core/node_modules/dargs": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
+ "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
@@ -5282,6 +4966,25 @@
"node": ">=8"
}
},
+ "node_modules/conventional-changelog-core/node_modules/git-raw-commits": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz",
+ "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==",
+ "dev": true,
+ "dependencies": {
+ "dargs": "^7.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^8.0.0",
+ "split2": "^3.0.0",
+ "through2": "^4.0.0"
+ },
+ "bin": {
+ "git-raw-commits": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/conventional-changelog-core/node_modules/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
@@ -5438,6 +5141,15 @@
"node": ">=8"
}
},
+ "node_modules/conventional-changelog-core/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/conventional-changelog-core/node_modules/semver": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
@@ -5653,6 +5365,15 @@
"node": ">=8"
}
},
+ "node_modules/conventional-changelog-writer/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/conventional-changelog-writer/node_modules/read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -5815,6 +5536,15 @@
"node": ">=10"
}
},
+ "node_modules/conventional-recommended-bump/node_modules/dargs": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
+ "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/conventional-recommended-bump/node_modules/find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
@@ -5828,6 +5558,25 @@
"node": ">=8"
}
},
+ "node_modules/conventional-recommended-bump/node_modules/git-raw-commits": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz",
+ "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==",
+ "dev": true,
+ "dependencies": {
+ "dargs": "^7.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^8.0.0",
+ "split2": "^3.0.0",
+ "through2": "^4.0.0"
+ },
+ "bin": {
+ "git-raw-commits": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/conventional-recommended-bump/node_modules/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
@@ -5922,6 +5671,15 @@
"node": ">=8"
}
},
+ "node_modules/conventional-recommended-bump/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/conventional-recommended-bump/node_modules/read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -6009,9 +5767,9 @@
"dev": true
},
"node_modules/core-js": {
- "version": "3.35.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.1.tgz",
- "integrity": "sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==",
+ "version": "3.37.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz",
+ "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==",
"dev": true,
"hasInstallScript": true,
"funding": {
@@ -6020,12 +5778,12 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.35.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz",
- "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==",
+ "version": "3.37.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz",
+ "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==",
"dev": true,
"dependencies": {
- "browserslist": "^4.22.2"
+ "browserslist": "^4.23.0"
},
"funding": {
"type": "opencollective",
@@ -6033,9 +5791,9 @@
}
},
"node_modules/core-js-pure": {
- "version": "3.35.1",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.35.1.tgz",
- "integrity": "sha512-zcIdi/CL3MWbBJYo5YCeVAAx+Sy9yJE9I3/u9LkFABwbeaPhTMRWraM8mYFp9jW5Z50hOy7FVzCc8dCrpZqtIQ==",
+ "version": "3.37.1",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz",
+ "integrity": "sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -6049,15 +5807,15 @@
"dev": true
},
"node_modules/cosmiconfig": {
- "version": "8.3.6",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
- "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
"dev": true,
"dependencies": {
+ "env-paths": "^2.2.1",
"import-fresh": "^3.3.0",
"js-yaml": "^4.1.0",
- "parse-json": "^5.2.0",
- "path-type": "^4.0.0"
+ "parse-json": "^5.2.0"
},
"engines": {
"node": ">=14"
@@ -6140,21 +5898,78 @@
}
},
"node_modules/d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"dependencies": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
+ "es5-ext": "^0.10.64",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.12"
}
},
"node_modules/dargs": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
- "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz",
+ "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/dateformat": {
@@ -6173,9 +5988,9 @@
"dev": true
},
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dependencies": {
"ms": "2.1.2"
},
@@ -6238,9 +6053,9 @@
}
},
"node_modules/deep-eql": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
- "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
+ "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
"dev": true,
"dependencies": {
"type-detect": "^4.0.0"
@@ -6280,18 +6095,20 @@
}
},
"node_modules/define-data-property": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz",
- "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dev": true,
"dependencies": {
+ "es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.2",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.1"
+ "gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/define-properties": {
@@ -6326,9 +6143,9 @@
}
},
"node_modules/detect-libc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
- "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
"engines": {
"node": ">=8"
}
@@ -6561,7 +6378,6 @@
"version": "0.11.0",
"resolved": "git+ssh://git@github.com/aeternity/downlevel-dts.git#e3548b74c4573e5edc18d53e111704eea32ddd19",
"dev": true,
- "license": "MIT",
"dependencies": {
"semver": "^7.3.2",
"shelljs": "^0.8.3",
@@ -6571,26 +6387,11 @@
"downlevel-dts": "index.js"
}
},
- "node_modules/downlevel-dts/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/downlevel-dts/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -6598,12 +6399,6 @@
"node": ">=10"
}
},
- "node_modules/downlevel-dts/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
@@ -6611,9 +6406,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.661",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.661.tgz",
- "integrity": "sha512-AFg4wDHSOk5F+zA8aR+SVIOabu7m0e7BiJnigCvPXzIGy731XENw/lmNxTySpVFtkFEy+eyt4oHhh5FF3NjQNw==",
+ "version": "1.4.794",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.794.tgz",
+ "integrity": "sha512-6FApLtsYhDCY0Vglq3AptsdxQ+PJLc6AxlAM0HjEihUAiOPPbkASEsq9gtxUeZY9o0sJIEa3WnF0vVH4VT4iug==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -6631,9 +6426,9 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
- "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "version": "5.17.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
+ "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.4",
@@ -6652,10 +6447,19 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/envinfo": {
- "version": "7.11.1",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz",
- "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz",
+ "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==",
"dev": true,
"bin": {
"envinfo": "dist/cli.js"
@@ -6674,50 +6478,57 @@
}
},
"node_modules/es-abstract": {
- "version": "1.22.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",
- "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",
+ "version": "1.23.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+ "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
"dev": true,
"dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.2",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.5",
- "es-set-tostringtag": "^2.0.1",
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
"es-to-primitive": "^1.2.1",
"function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.2",
- "get-symbol-description": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
"globalthis": "^1.0.3",
"gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
"has-symbols": "^1.0.3",
- "hasown": "^2.0.0",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
"is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
"is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
+ "is-shared-array-buffer": "^1.0.3",
"is-string": "^1.0.7",
- "is-typed-array": "^1.1.12",
+ "is-typed-array": "^1.1.13",
"is-weakref": "^1.0.2",
"object-inspect": "^1.13.1",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.1",
- "safe-array-concat": "^1.0.1",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.8",
- "string.prototype.trimend": "^1.0.7",
- "string.prototype.trimstart": "^1.0.7",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.6",
"unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.13"
+ "which-typed-array": "^1.1.15"
},
"engines": {
"node": ">= 0.4"
@@ -6732,6 +6543,18 @@
"integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
"dev": true
},
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
@@ -6742,20 +6565,32 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz",
- "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz",
+ "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==",
"dev": true
},
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es-set-tostringtag": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
- "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.2.2",
- "has-tostringtag": "^1.0.0",
- "hasown": "^2.0.0"
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -6766,7 +6601,6 @@
"resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
"integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
"dev": true,
- "peer": true,
"dependencies": {
"hasown": "^2.0.0"
}
@@ -6820,12 +6654,15 @@
}
},
"node_modules/es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
"dependencies": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
+ "d": "^1.0.2",
+ "ext": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.12"
}
},
"node_modules/escalade": {
@@ -6939,7 +6776,6 @@
"resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
"integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
"dev": true,
- "peer": true,
"dependencies": {
"debug": "^3.2.7",
"is-core-module": "^2.13.0",
@@ -6951,17 +6787,15 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
- "peer": true,
"dependencies": {
"ms": "^2.1.1"
}
},
"node_modules/eslint-module-utils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
- "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz",
+ "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==",
"dev": true,
- "peer": true,
"dependencies": {
"debug": "^3.2.7"
},
@@ -6979,7 +6813,6 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
- "peer": true,
"dependencies": {
"ms": "^2.1.1"
}
@@ -6989,7 +6822,6 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
"integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
"dev": true,
- "peer": true,
"dependencies": {
"array-includes": "^3.1.7",
"array.prototype.findlastindex": "^1.2.3",
@@ -7021,7 +6853,6 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
- "peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -7032,7 +6863,6 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
- "peer": true,
"dependencies": {
"ms": "^2.1.1"
}
@@ -7042,7 +6872,6 @@
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
- "peer": true,
"dependencies": {
"esutils": "^2.0.2"
},
@@ -7055,7 +6884,6 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
- "peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -7073,13 +6901,13 @@
}
},
"node_modules/eslint-plugin-tsdoc": {
- "version": "0.2.17",
- "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz",
- "integrity": "sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.3.0.tgz",
+ "integrity": "sha512-0MuFdBrrJVBjT/gyhkP2BqpD0np1NxNLfQ38xXDlSs/KVVpKI2A6vN7jx2Rve/CyUsvOsMGwp9KKrinv7q9g3A==",
"dev": true,
"dependencies": {
- "@microsoft/tsdoc": "0.14.2",
- "@microsoft/tsdoc-config": "0.16.2"
+ "@microsoft/tsdoc": "0.15.0",
+ "@microsoft/tsdoc-config": "0.17.0"
}
},
"node_modules/eslint-scope": {
@@ -7197,6 +7025,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/eslint/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/eslint/node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -7239,6 +7083,21 @@
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
+ "node_modules/eslint/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/eslint/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -7251,23 +7110,14 @@
"node": "*"
}
},
- "node_modules/eslint/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/eslint/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"dependencies": {
- "has-flag": "^4.0.0"
+ "yocto-queue": "^0.1.0"
},
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -7275,10 +7125,70 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/esniff": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
- "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "node_modules/eslint/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
"dependencies": {
"d": "^1.0.1",
"es5-ext": "^0.10.62",
@@ -7289,11 +7199,6 @@
"node": ">=0.10"
}
},
- "node_modules/esniff/node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
- },
"node_modules/espree": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
@@ -7406,30 +7311,6 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/execa/node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/execa/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/expand-template": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
@@ -7447,11 +7328,6 @@
"type": "^2.7.2"
}
},
- "node_modules/ext/node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -7538,9 +7414,9 @@
"dev": true
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -7564,16 +7440,17 @@
}
},
"node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz",
+ "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==",
"dev": true,
"dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
+ "locate-path": "^7.2.0",
+ "path-exists": "^5.0.0",
+ "unicorn-magic": "^0.1.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -7603,9 +7480,9 @@
}
},
"node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
"dev": true
},
"node_modules/for-each": {
@@ -7630,6 +7507,12 @@
"node": ">=8.0.0"
}
},
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
"node_modules/fromentries": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz",
@@ -7748,6 +7631,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
+ "deprecated": "This package is no longer supported.",
"dependencies": {
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.2",
@@ -7763,6 +7647,11 @@
"node": ">=10"
}
},
+ "node_modules/gauge/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -7941,188 +7830,20 @@
}
},
"node_modules/git-raw-commits": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz",
- "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz",
+ "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==",
"dev": true,
"dependencies": {
- "dargs": "^7.0.0",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "split2": "^3.0.0",
- "through2": "^4.0.0"
+ "dargs": "^8.0.0",
+ "meow": "^12.0.1",
+ "split2": "^4.0.0"
},
"bin": {
- "git-raw-commits": "cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/git-raw-commits/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/git-raw-commits/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/git-raw-commits/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/git-raw-commits/node_modules/meow": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
- "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==",
- "dev": true,
- "dependencies": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/git-raw-commits/node_modules/meow/node_modules/type-fest": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/git-raw-commits/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/git-raw-commits/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/git-raw-commits/node_modules/read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/git-raw-commits/node_modules/read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
+ "git-raw-commits": "cli.mjs"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/git-raw-commits/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/git-raw-commits/node_modules/split2": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
- "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
- "dev": true,
- "dependencies": {
- "readable-stream": "^3.0.0"
+ "node": ">=16"
}
},
"node_modules/git-remote-origin-url": {
@@ -8258,6 +7979,15 @@
"node": ">=8"
}
},
+ "node_modules/git-semver-tags/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/git-semver-tags/node_modules/read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -8329,6 +8059,12 @@
"ini": "^1.3.2"
}
},
+ "node_modules/gitconfiglocal/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
"node_modules/github-from-package": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
@@ -8339,6 +8075,7 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -8407,15 +8144,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/global-directory/node_modules/ini": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz",
- "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==",
- "dev": true,
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
"node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -8426,12 +8154,13 @@
}
},
"node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
"dev": true,
"dependencies": {
- "define-properties": "^1.1.3"
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -8566,21 +8295,21 @@
}
},
"node_modules/has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.2.2"
+ "es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -8637,10 +8366,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/hasha/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.2"
@@ -8788,28 +8529,27 @@
}
},
"node_modules/http-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
+ "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
"dependencies": {
- "agent-base": "6",
+ "agent-base": "^7.0.2",
"debug": "4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/human-signals": {
@@ -8945,6 +8685,15 @@
"node": ">=8"
}
},
+ "node_modules/import-local/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/import-local/node_modules/pkg-dir": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -8958,9 +8707,9 @@
}
},
"node_modules/import-meta-resolve": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz",
- "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
+ "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==",
"dev": true,
"funding": {
"type": "github",
@@ -8989,6 +8738,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -9000,10 +8750,13 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz",
+ "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/internal-slot": {
"version": "1.0.7",
@@ -9114,6 +8867,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "dev": true,
+ "dependencies": {
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-date-object": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
@@ -9159,9 +8927,9 @@
}
},
"node_modules/is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -9250,24 +9018,27 @@
}
},
"node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2"
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -9473,18 +9244,6 @@
"node": ">=8"
}
},
- "node_modules/istanbul-lib-report/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/istanbul-lib-report/node_modules/make-dir": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
@@ -9501,13 +9260,10 @@
}
},
"node_modules/istanbul-lib-report/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -9527,12 +9283,6 @@
"node": ">=8"
}
},
- "node_modules/istanbul-lib-report/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/istanbul-lib-source-maps": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
@@ -9557,9 +9307,9 @@
}
},
"node_modules/istanbul-reports": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
- "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
"dev": true,
"dependencies": {
"html-escaper": "^2.0.0",
@@ -9608,9 +9358,9 @@
}
},
"node_modules/jiti": {
- "version": "1.21.0",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
- "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "version": "1.21.3",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.3.tgz",
+ "integrity": "sha512-uy2bNX5zQ+tESe+TiC7ilGRz8AtRGmnJH55NC5S0nSUjvvvM2hJHmefHErugGXN4pNv4Qx7vLsnNw9qJ9mtIsw==",
"dev": true,
"bin": {
"jiti": "bin/jiti.js"
@@ -9838,15 +9588,15 @@
}
},
"node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
"dev": true,
"dependencies": {
- "p-locate": "^5.0.0"
+ "p-locate": "^6.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -10135,12 +9885,12 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"dev": true,
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -10202,9 +9952,9 @@
}
},
"node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
@@ -10302,9 +10052,9 @@
"dev": true
},
"node_modules/mocha": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz",
- "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz",
+ "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==",
"dev": true,
"dependencies": {
"ansi-colors": "4.1.1",
@@ -10374,6 +10124,29 @@
"wrap-ansi": "^7.0.0"
}
},
+ "node_modules/mocha/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/mocha/node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
"node_modules/mocha/node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -10386,10 +10159,27 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/mocha/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/mocha/node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -10414,6 +10204,21 @@
"node": ">=8"
}
},
+ "node_modules/mocha/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/mocha/node_modules/minimatch": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
@@ -10432,6 +10237,45 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
+ "node_modules/mocha/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/mocha/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -10465,6 +10309,18 @@
"node": ">=10"
}
},
+ "node_modules/mocha/node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/modify-values": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
@@ -10512,9 +10368,9 @@
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
},
"node_modules/nise": {
- "version": "5.1.9",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz",
- "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-6.0.0.tgz",
+ "integrity": "sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg==",
"dev": true,
"dependencies": {
"@sinonjs/commons": "^3.0.0",
@@ -10535,9 +10391,9 @@
}
},
"node_modules/node-abi": {
- "version": "3.56.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz",
- "integrity": "sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==",
+ "version": "3.63.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.63.0.tgz",
+ "integrity": "sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==",
"dev": true,
"dependencies": {
"semver": "^7.3.5"
@@ -10546,26 +10402,11 @@
"node": ">=10"
}
},
- "node_modules/node-abi/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/node-abi/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -10573,12 +10414,6 @@
"node": ">=10"
}
},
- "node_modules/node-abi/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/node-addon-api": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
@@ -10623,9 +10458,9 @@
}
},
"node_modules/node-gyp-build": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz",
- "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==",
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz",
+ "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==",
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
@@ -10703,26 +10538,11 @@
"node": ">=10"
}
},
- "node_modules/normalize-package-data/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/normalize-package-data/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -10730,12 +10550,6 @@
"node": ">=10"
}
},
- "node_modules/normalize-package-data/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -10776,6 +10590,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
+ "deprecated": "This package is no longer supported.",
"dependencies": {
"are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
@@ -10970,6 +10785,15 @@
"node": ">=8"
}
},
+ "node_modules/nyc/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/nyc/node_modules/pkg-dir": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -10982,6 +10806,12 @@
"node": ">=8"
}
},
+ "node_modules/nyc/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
"node_modules/nyc/node_modules/wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -11082,29 +10912,29 @@
}
},
"node_modules/object.entries": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz",
- "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==",
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/object.fromentries": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
- "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -11114,16 +10944,18 @@
}
},
"node_modules/object.getownpropertydescriptors": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz",
- "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==",
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz",
+ "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==",
"dev": true,
"dependencies": {
"array.prototype.reduce": "^1.0.6",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "safe-array-concat": "^1.0.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0",
+ "gopd": "^1.0.1",
+ "safe-array-concat": "^1.1.2"
},
"engines": {
"node": ">= 0.8"
@@ -11133,29 +10965,28 @@
}
},
"node_modules/object.groupby": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz",
- "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
"dev": true,
- "peer": true,
"dependencies": {
- "array.prototype.filter": "^1.0.3",
- "call-bind": "^1.0.5",
+ "call-bind": "^1.0.7",
"define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
- "es-errors": "^1.0.0"
+ "es-abstract": "^1.23.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
"node_modules/object.values": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
- "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+ "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
"dev": true,
- "peer": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -11197,47 +11028,47 @@
}
},
"node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
"dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
"dev": true,
"dependencies": {
- "yocto-queue": "^0.1.0"
+ "yocto-queue": "^1.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
"dev": true,
"dependencies": {
- "p-limit": "^3.0.2"
+ "p-limit": "^4.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -11339,12 +11170,12 @@
}
},
"node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
},
"node_modules/path-is-absolute": {
@@ -11371,9 +11202,9 @@
"dev": true
},
"node_modules/path-to-regexp": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
- "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz",
+ "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==",
"dev": true
},
"node_modules/path-type": {
@@ -11395,9 +11226,9 @@
}
},
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
+ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
"dev": true
},
"node_modules/picomatch": {
@@ -11503,6 +11334,15 @@
"node": ">=4"
}
},
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/prebuild-install": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
@@ -11656,6 +11496,12 @@
"rc": "cli.js"
}
},
+ "node_modules/rc/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
"node_modules/rc/node_modules/strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -11890,14 +11736,15 @@
}
},
"node_modules/regexp.prototype.flags": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
- "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+ "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "set-function-name": "^2.0.0"
+ "call-bind": "^1.0.6",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -12054,6 +11901,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
"dependencies": {
"glob": "^7.1.3"
},
@@ -12104,13 +11952,13 @@
}
},
"node_modules/safe-array-concat": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz",
- "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.5",
- "get-intrinsic": "^1.2.2",
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
"has-symbols": "^1.0.3",
"isarray": "^2.0.5"
},
@@ -12200,31 +12048,32 @@
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
"node_modules/set-function-length": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
- "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dev": true,
"dependencies": {
- "define-data-property": "^1.1.2",
+ "define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.3",
+ "get-intrinsic": "^1.2.4",
"gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.1"
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/set-function-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
- "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
"dev": true,
"dependencies": {
- "define-data-property": "^1.0.1",
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
"functions-have-names": "^1.2.3",
- "has-property-descriptors": "^1.0.0"
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -12305,12 +12154,12 @@
}
},
"node_modules/side-channel": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz",
- "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.6",
+ "call-bind": "^1.0.7",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.4",
"object-inspect": "^1.13.1"
@@ -12323,9 +12172,16 @@
}
},
"node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
},
"node_modules/simple-concat": {
"version": "1.0.1",
@@ -12373,17 +12229,17 @@
}
},
"node_modules/sinon": {
- "version": "17.0.1",
- "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz",
- "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==",
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.0.tgz",
+ "integrity": "sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA==",
"dev": true,
"dependencies": {
- "@sinonjs/commons": "^3.0.0",
+ "@sinonjs/commons": "^3.0.1",
"@sinonjs/fake-timers": "^11.2.2",
"@sinonjs/samsam": "^8.0.0",
- "diff": "^5.1.0",
- "nise": "^5.1.5",
- "supports-color": "^7.2.0"
+ "diff": "^5.2.0",
+ "nise": "^6.0.0",
+ "supports-color": "^7"
},
"funding": {
"type": "opencollective",
@@ -12391,9 +12247,9 @@
}
},
"node_modules/sinon/node_modules/diff": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
- "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
"dev": true,
"engines": {
"node": ">=0.3.1"
@@ -12503,6 +12359,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/spawn-wrap/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
"node_modules/spdx-correct": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
@@ -12514,9 +12376,9 @@
}
},
"node_modules/spdx-exceptions": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz",
- "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
"dev": true
},
"node_modules/spdx-expression-parse": {
@@ -12530,9 +12392,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.16",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
- "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",
+ "version": "3.0.18",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
+ "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
"dev": true
},
"node_modules/split": {
@@ -12615,26 +12477,81 @@
"node": ">=10"
}
},
- "node_modules/standard-version/node_modules/lru-cache": {
+ "node_modules/standard-version/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/standard-version/node_modules/locate-path": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"dependencies": {
- "yallist": "^4.0.0"
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/standard-version/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/standard-version/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "node_modules/standard-version/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"dependencies": {
- "lru-cache": "^6.0.0"
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
},
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/standard-version/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/standard-version/node_modules/semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true,
"bin": {
"semver": "bin/semver.js"
},
@@ -12642,12 +12559,6 @@
"node": ">=10"
}
},
- "node_modules/standard-version/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/standard-version/node_modules/yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
@@ -12666,6 +12577,18 @@
"node": ">=10"
}
},
+ "node_modules/standard-version/node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -12688,14 +12611,15 @@
}
},
"node_modules/string.prototype.trim": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
- "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -12705,28 +12629,31 @@
}
},
"node_modules/string.prototype.trimend": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
- "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimstart": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
- "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -12884,9 +12811,9 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/terser": {
- "version": "5.27.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz",
- "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==",
+ "version": "5.31.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz",
+ "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==",
"dev": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
@@ -13113,9 +13040,9 @@
}
},
"node_modules/ts-api-utils": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz",
- "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
+ "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
"dev": true,
"engines": {
"node": ">=16"
@@ -13181,7 +13108,6 @@
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
"integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
"dev": true,
- "peer": true,
"dependencies": {
"@types/json5": "^0.0.29",
"json5": "^1.0.2",
@@ -13194,7 +13120,6 @@
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
- "peer": true,
"dependencies": {
"minimist": "^1.2.0"
},
@@ -13207,15 +13132,14 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
"integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
},
"node_modules/tunnel-agent": {
"version": "0.6.0",
@@ -13243,9 +13167,9 @@
}
},
"node_modules/type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="
},
"node_modules/type-check": {
"version": "0.4.0",
@@ -13278,12 +13202,12 @@
}
},
"node_modules/typed-array-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz",
- "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.6",
+ "call-bind": "^1.0.7",
"es-errors": "^1.3.0",
"is-typed-array": "^1.1.13"
},
@@ -13292,15 +13216,16 @@
}
},
"node_modules/typed-array-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
- "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
+ "call-bind": "^1.0.7",
"for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
},
"engines": {
"node": ">= 0.4"
@@ -13310,16 +13235,17 @@
}
},
"node_modules/typed-array-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
- "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
"dev": true,
"dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
"for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
},
"engines": {
"node": ">= 0.4"
@@ -13329,14 +13255,20 @@
}
},
"node_modules/typed-array-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
+ "call-bind": "^1.0.7",
"for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -13357,9 +13289,9 @@
}
},
"node_modules/typedoc": {
- "version": "0.25.11",
- "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.11.tgz",
- "integrity": "sha512-5MbI1W/FOG6oXsd8bdssQidSTeKh8Kt3xA5uKVzI+K99uzP8EGN45uPnPvQesyaWdD+89s4wCQdtWEd8QUbiRg==",
+ "version": "0.25.13",
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz",
+ "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==",
"dev": true,
"dependencies": {
"lunr": "^2.3.9",
@@ -13374,7 +13306,7 @@
"node": ">= 16"
},
"peerDependencies": {
- "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x"
+ "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x"
}
},
"node_modules/typedoc-plugin-missing-exports": {
@@ -13387,9 +13319,9 @@
}
},
"node_modules/typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+ "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -13480,9 +13412,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
+ "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
"dev": true,
"funding": [
{
@@ -13499,8 +13431,8 @@
}
],
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.1.2",
+ "picocolors": "^1.0.1"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -13620,9 +13552,9 @@
"dev": true
},
"node_modules/watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",
+ "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
"dev": true,
"dependencies": {
"glob-to-regexp": "^0.4.1",
@@ -13638,26 +13570,26 @@
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"node_modules/webpack": {
- "version": "5.90.3",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz",
- "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==",
+ "version": "5.91.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz",
+ "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==",
"dev": true,
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
- "@webassemblyjs/ast": "^1.11.5",
- "@webassemblyjs/wasm-edit": "^1.11.5",
- "@webassemblyjs/wasm-parser": "^1.11.5",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
"acorn": "^8.7.1",
"acorn-import-assertions": "^1.9.0",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.15.0",
+ "enhanced-resolve": "^5.16.0",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.9",
+ "graceful-fs": "^4.2.11",
"json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
@@ -13665,7 +13597,7 @@
"schema-utils": "^3.2.0",
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.3.10",
- "watchpack": "^2.4.0",
+ "watchpack": "^2.4.1",
"webpack-sources": "^3.2.3"
},
"bin": {
@@ -13685,9 +13617,9 @@
}
},
"node_modules/webpack-bundle-analyzer": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz",
- "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==",
+ "version": "4.10.2",
+ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz",
+ "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==",
"dev": true,
"dependencies": {
"@discoveryjs/json-ext": "0.5.7",
@@ -13698,7 +13630,6 @@
"escape-string-regexp": "^4.0.0",
"gzip-size": "^6.0.0",
"html-escaper": "^2.0.2",
- "is-plain-object": "^5.0.0",
"opener": "^1.5.2",
"picocolors": "^1.0.0",
"sirv": "^2.0.3",
@@ -13732,15 +13663,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/webpack-bundle-analyzer/node_modules/is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/webpack-bundle-analyzer/node_modules/ws": {
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
@@ -13941,13 +13863,13 @@
}
},
"node_modules/websocket": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz",
- "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==",
+ "version": "1.0.35",
+ "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz",
+ "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==",
"dependencies": {
"bufferutil": "^4.0.1",
"debug": "^2.2.0",
- "es5-ext": "^0.10.50",
+ "es5-ext": "^0.10.63",
"typedarray-to-buffer": "^3.1.5",
"utf-8-validate": "^5.0.2",
"yaeti": "^0.0.6"
@@ -14016,16 +13938,16 @@
"dev": true
},
"node_modules/which-typed-array": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz",
- "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==",
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
"dev": true,
"dependencies": {
- "available-typed-arrays": "^1.0.6",
- "call-bind": "^1.0.5",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
- "has-tostringtag": "^1.0.1"
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -14048,6 +13970,15 @@
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
"dev": true
},
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
@@ -14127,10 +14058,16 @@
"typedarray-to-buffer": "^3.1.5"
}
},
+ "node_modules/write-file-atomic/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
"node_modules/ws": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
+ "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
"engines": {
"node": ">=10.0.0"
},
@@ -14264,12 +14201,12 @@
}
},
"node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=12.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
diff --git a/package.json b/package.json
index 0eaacce309..c4ed9e837e 100644
--- a/package.json
+++ b/package.json
@@ -78,13 +78,13 @@
"@aeternity/aepp-calldata": "^1.7.0",
"@aeternity/argon2": "^0.0.1",
"@aeternity/uuid": "^0.0.1",
- "@azure/core-client": "^1.8.0",
- "@azure/core-rest-pipeline": "^1.14.0",
- "@babel/runtime-corejs3": "^7.24.0",
- "@ledgerhq/hw-transport": "^6.30.4",
+ "@azure/core-client": "^1.9.2",
+ "@azure/core-rest-pipeline": "^1.16.0",
+ "@babel/runtime-corejs3": "^7.24.7",
+ "@ledgerhq/hw-transport": "^6.30.6",
"@types/aes-js": "^3.1.4",
"@types/json-bigint": "^1.0.4",
- "@types/node": "~18.13",
+ "@types/node": "~18.15.3",
"@types/sha.js": "^2.4.4",
"@types/uuid": "^9.0.8",
"@types/webextension-polyfill": "^0.10.7",
@@ -106,33 +106,33 @@
"tweetnacl": "^1.0.3",
"tweetnacl-auth": "^1.0.1",
"varuint-bitcoin": "^1.1.2",
- "websocket": "^1.0.34",
- "ws": "^8.16.0"
+ "websocket": "^1.0.35",
+ "ws": "^8.17.0"
},
"repository": {
"type": "git",
"url": "git+https://github.com/aeternity/aepp-sdk-js.git"
},
"devDependencies": {
- "@babel/cli": "^7.23.9",
- "@babel/core": "^7.24.0",
- "@babel/node": "^7.23.9",
- "@babel/plugin-transform-runtime": "^7.24.0",
- "@babel/preset-env": "^7.24.0",
- "@babel/preset-typescript": "^7.23.3",
- "@babel/register": "^7.23.7",
- "@commitlint/cli": "^19.0.3",
- "@commitlint/config-conventional": "^19.0.3",
- "@ledgerhq/hw-transport-mocker": "^6.28.4",
- "@ledgerhq/hw-transport-node-hid-singleton": "^6.30.4",
- "@ledgerhq/hw-transport-webusb": "^6.28.4",
- "@types/chai": "^4.3.12",
+ "@babel/cli": "^7.24.7",
+ "@babel/core": "^7.24.7",
+ "@babel/node": "^7.24.7",
+ "@babel/plugin-transform-runtime": "^7.24.7",
+ "@babel/preset-env": "^7.24.7",
+ "@babel/preset-typescript": "^7.24.7",
+ "@babel/register": "^7.24.6",
+ "@commitlint/cli": "^19.3.0",
+ "@commitlint/config-conventional": "^19.2.2",
+ "@ledgerhq/hw-transport-mocker": "^6.28.6",
+ "@ledgerhq/hw-transport-node-hid-singleton": "^6.30.6",
+ "@ledgerhq/hw-transport-webusb": "^6.28.6",
+ "@types/chai": "^4.3.16",
"@types/chai-as-promised": "^7.1.8",
"@types/mocha": "^10.0.6",
"@types/node-hid": "^1.3.4",
"@types/sinon": "^17.0.3",
- "@typescript-eslint/eslint-plugin": "^7.1.1",
- "@typescript-eslint/parser": "^7.1.1",
+ "@typescript-eslint/eslint-plugin": "^7.12.0",
+ "@typescript-eslint/parser": "^7.12.0",
"autorest": "^3.7.1",
"babel-loader": "^9.1.3",
"babel-plugin-add-import-extension": "^1.6.0",
@@ -140,25 +140,26 @@
"babel-plugin-transform-default-named-imports": "^1.2.2",
"babel-plugin-transform-import-meta": "^2.2.1",
"chai": "^4.4.1",
- "chai-as-promised": "^7.1.1",
+ "chai-as-promised": "^7.1.2",
"downlevel-dts": "github:aeternity/downlevel-dts",
"eslint": "^8.57.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^18.0.0",
+ "eslint-plugin-import": "^2.29.1",
"eslint-plugin-rulesdir": "^0.2.2",
- "eslint-plugin-tsdoc": "^0.2.17",
+ "eslint-plugin-tsdoc": "^0.3.0",
"html-webpack-plugin": "^5.6.0",
- "mocha": "^10.3.0",
+ "mocha": "^10.4.0",
"nyc": "^15.1.0",
- "sinon": "^17.0.1",
+ "sinon": "^18.0.0",
"source-map": "^0.7.4",
"standard-version": "^9.5.0",
"ts-node": "^10.9.2",
- "typedoc": "^0.25.11",
+ "typedoc": "^0.25.13",
"typedoc-plugin-missing-exports": "^2.2.0",
- "typescript": "^5.3.3",
- "webpack": "^5.90.3",
- "webpack-bundle-analyzer": "^4.10.1",
+ "typescript": "^5.4.5",
+ "webpack": "^5.91.0",
+ "webpack-bundle-analyzer": "^4.10.2",
"webpack-cli": "^5.1.4"
},
"files": [
diff --git a/tooling/autorest/compiler.yaml b/tooling/autorest/compiler.yaml
index 285a607110..783c86e293 100644
--- a/tooling/autorest/compiler.yaml
+++ b/tooling/autorest/compiler.yaml
@@ -17,7 +17,7 @@ directive:
version: ^3.7.1
use-extension:
- '@autorest/typescript': ^6.0.15
+ '@autorest/typescript': ^6.0.23
'@autorest/modelerfour': ^4.27.0
# replace with a link to https://github.com/aeternity/aesophia_http/blob/master/config/swagger.yaml
# at specific version after fixing https://github.com/aeternity/aesophia_http/issues/87
diff --git a/tooling/autorest/middleware.yaml b/tooling/autorest/middleware.yaml
index 339f2f5d42..9f5e53cc6f 100644
--- a/tooling/autorest/middleware.yaml
+++ b/tooling/autorest/middleware.yaml
@@ -81,7 +81,7 @@ directive:
version: ^3.7.1
use-extension:
- '@autorest/typescript': ^6.0.15
+ '@autorest/typescript': ^6.0.23
'@autorest/modelerfour': ^4.27.0
input-file: middleware-openapi.yaml
output-folder: ../../src/apis/middleware
diff --git a/tooling/autorest/node.yaml b/tooling/autorest/node.yaml
index 3130eba92d..1417c53a4c 100644
--- a/tooling/autorest/node.yaml
+++ b/tooling/autorest/node.yaml
@@ -157,7 +157,7 @@ directive:
version: ^3.7.1
use-extension:
- '@autorest/typescript': ^6.0.15
+ '@autorest/typescript': ^6.0.23
'@autorest/modelerfour': ^4.27.0
input-file: https://raw.githubusercontent.com/aeternity/aeternity/v7.1.0/apps/aehttp/priv/oas3.yaml
output-folder: ../../src/apis/node
From 905d6ae67b7c00d93528ae2b5f7c45c925dd2d7f Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 8 Jun 2024 14:26:28 +1000
Subject: [PATCH 045/149] test: only Ceres, drop Iris
---
test/integration/aens.ts | 15 +++--------
test/integration/contract-aci.ts | 16 +++---------
test/integration/delegation.ts | 42 ++++++++++++------------------
test/integration/node.ts | 10 +++----
test/integration/transaction.ts | 10 ++-----
test/integration/txVerification.ts | 7 ++---
test/integration/typed-data.ts | 7 ++---
7 files changed, 33 insertions(+), 74 deletions(-)
diff --git a/test/integration/aens.ts b/test/integration/aens.ts
index 52d5699ec7..07838a3163 100644
--- a/test/integration/aens.ts
+++ b/test/integration/aens.ts
@@ -7,7 +7,7 @@ import {
} from '../utils';
import {
AeSdk, Name, generateKeyPair, buildContractId, computeBidFee, ensureName, produceNameId, Contract,
- AensPointerContextError, encode, decode, Encoding, ContractMethodsBase, ConsensusProtocolVersion,
+ AensPointerContextError, encode, decode, Encoding, ContractMethodsBase,
IllegalArgumentError, Tag, unpackTx, buildTxHash,
} from '../../src';
@@ -82,9 +82,6 @@ describe('Aens', () => {
});
it('claims a long name without preclaim', async () => {
- const isIris = (await aeSdk.api.getNodeInfo())
- .consensusProtocolVersion === ConsensusProtocolVersion.Iris;
- if (isIris) return;
const nameString = randomName(30);
const n = new Name(nameString, aeSdk.getContext());
const claimed = await n.claim();
@@ -225,14 +222,11 @@ describe('Aens', () => {
const address = generateKeyPair().publicKey;
let pointers: Parameters[0];
let pointersNode: Array<{ key: string; id: typeof pointers[string] }>;
- let isIris: boolean;
before(async () => {
- isIris = (await aeSdk.api.getNodeInfo())
- .consensusProtocolVersion === ConsensusProtocolVersion.Iris;
pointers = {
myKey: address,
- ...!isIris && { 'my raw key': encode(Buffer.from('my raw value'), Encoding.Bytearray) },
+ 'my raw key': encode(Buffer.from('my raw value'), Encoding.Bytearray),
account_pubkey: address,
oracle_pubkey: encode(decode(address), Encoding.OracleAddress),
channel: encode(decode(address), Encoding.Channel),
@@ -313,9 +307,8 @@ describe('Aens', () => {
it('throws error on setting too long raw pointer', async () => {
const pointersRaw = { raw: encode(Buffer.from('t'.repeat(1025)), Encoding.Bytearray) };
- await expect(name.update(pointersRaw)).to.be.rejectedWith(isIris
- ? 'Raw pointers are available only in Ceres, the current protocol is Iris'
- : 'Raw pointer should be shorter than 1025 bytes, got 1025 bytes instead');
+ await expect(name.update(pointersRaw))
+ .to.be.rejectedWith('Raw pointer should be shorter than 1025 bytes, got 1025 bytes instead');
});
it('extends name ttl', async () => {
diff --git a/test/integration/contract-aci.ts b/test/integration/contract-aci.ts
index b60cfaf7c0..d0d37bc326 100644
--- a/test/integration/contract-aci.ts
+++ b/test/integration/contract-aci.ts
@@ -17,7 +17,6 @@ import {
AE_AMOUNT_FORMATS,
Tag,
NoSuchContractFunctionError,
- ConsensusProtocolVersion,
InvalidTxError,
ContractError,
} from '../../src';
@@ -39,7 +38,7 @@ namespace TestLib =
function sum(x: int, y: int) = x + y
`;
-const getTestContractSourceCode = (isIris: boolean): string => `
+const testContractSourceCode = `
namespace Test =
function double(x: int) = x * 2
@@ -89,7 +88,7 @@ contract StateContract =
entrypoint hashFn(s: hash) = s
entrypoint signatureFn(s: signature) = s
entrypoint bytesFn(s: bytes(32)) = s
- ${isIris ? '' : 'entrypoint bytesAnySizeFn(s: bytes) = s'}
+ entrypoint bytesAnySizeFn(s: bytes) = s
entrypoint bitsFn(s: bits) = s
@@ -104,7 +103,7 @@ contract StateContract =
entrypoint chainTtlFn(t: Chain.ttl) = t
- ${isIris ? '' : 'entrypoint aensV2Name(name: AENSv2.name) = name'}
+ entrypoint aensV2Name(name: AENSv2.name) = name
stateful entrypoint recursion(t: string) =
put(state{value = t})
@@ -188,8 +187,6 @@ interface TestContractApi extends ContractMethodsBase {
describe('Contract instance', () => {
let aeSdk: AeSdk;
- let isIris: boolean;
- let testContractSourceCode: string;
let testContract: Contract;
let testContractAddress: Encoded.ContractAddress;
let testContractAci: Aci;
@@ -197,9 +194,6 @@ describe('Contract instance', () => {
before(async () => {
aeSdk = await getSdk(2);
- isIris = (await aeSdk.api.getNodeInfo())
- .consensusProtocolVersion === ConsensusProtocolVersion.Iris;
- testContractSourceCode = getTestContractSourceCode(isIris);
const res = await aeSdk.compilerApi.compileBySourceCode(testContractSourceCode, fileSystem);
testContractAci = res.aci;
testContractBytecode = res.bytecode;
@@ -1134,13 +1128,11 @@ describe('Contract instance', () => {
describe('Bytes any size', () => {
it('Invalid type', async () => {
- if (isIris) return;
await expect(testContract.bytesAnySizeFn({} as any))
.to.be.rejectedWith('Should be one of: Array, ArrayBuffer, hex string, Number, BigInt; got [object Object] instead');
});
it('Valid', async () => {
- if (isIris) return;
const decoded = Buffer.from('0xdeadbeef', 'hex');
const { decodedResult: hashAsBuffer } = await testContract.bytesAnySizeFn(decoded);
const { decodedResult: hashAsHex } = await testContract.bytesAnySizeFn(decoded.toString('hex'));
@@ -1176,13 +1168,11 @@ describe('Contract instance', () => {
describe('AENSv2.name', () => {
it('Invalid', async () => {
- if (isIris) return;
await expect(testContract.aensV2Name({ 'AENSv2.Name': ['test'] } as any))
.to.be.rejectedWith('"AENSv2.Name" variant constructor expects 3 argument(s) but got 1 instead');
});
it('Valid', async () => {
- if (isIris) return;
const value: AENSv2Name = {
'AENSv2.Name': [
'ak_nRqnePWC6yGWBmR4wfN3AvQnqbv2TizxKJdvGXj8p7YZrUZ5J',
diff --git a/test/integration/delegation.ts b/test/integration/delegation.ts
index 4fa01e7a61..89f3298a12 100644
--- a/test/integration/delegation.ts
+++ b/test/integration/delegation.ts
@@ -6,18 +6,15 @@ import {
import { getSdk } from '.';
import {
commitmentHash, decode, encode, Encoded, Encoding,
- genSalt, AeSdk, Contract, ConsensusProtocolVersion, Oracle, OracleClient, Name,
+ genSalt, AeSdk, Contract, Oracle, OracleClient, Name,
packDelegation, DelegationTag,
} from '../../src';
describe('Operation delegation', () => {
let aeSdk: AeSdk;
- let isIris: boolean;
before(async () => {
aeSdk = await getSdk(2);
- isIris = (await aeSdk.api.getNodeInfo())
- .consensusProtocolVersion === ConsensusProtocolVersion.Iris;
});
describe('AENS', () => {
@@ -63,35 +60,33 @@ describe('Operation delegation', () => {
) => void;
}>;
let contractAddress: Encoded.ContractAddress;
- let aens: string;
before(async () => {
- aens = isIris ? 'AENS' : 'AENSv2';
contract = await Contract.initialize({
...aeSdk.getContext(),
sourceCode: `
-@compiler ${isIris ? '>= 7' : '>= 8'}
-@compiler ${isIris ? '< 8' : '< 9'}
+@compiler >= 8
+@compiler < 9
contract DelegateTest =
- entrypoint getName(name: string): option(${aens}.name) =
- ${aens}.lookup(name)
+ entrypoint getName(name: string): option(AENSv2.name) =
+ AENSv2.lookup(name)
stateful payable entrypoint signedPreclaim(addr: address, chash: hash, sign: signature): unit =
- ${aens}.preclaim(addr, chash, signature = sign)
+ AENSv2.preclaim(addr, chash, signature = sign)
stateful entrypoint signedClaim(
addr: address, name: string, salt: int, name_fee: int, sign: signature): unit =
- ${aens}.claim(addr, name, salt, name_fee, signature = sign)
+ AENSv2.claim(addr, name, salt, name_fee, signature = sign)
stateful entrypoint signedTransfer(
owner: address, new_owner: address, name: string, sign: signature): unit =
- ${aens}.transfer(owner, new_owner, name, signature = sign)
+ AENSv2.transfer(owner, new_owner, name, signature = sign)
stateful entrypoint signedRevoke(owner: address, name: string, sign: signature): unit =
- ${aens}.revoke(owner, name, signature = sign)
+ AENSv2.revoke(owner, name, signature = sign)
stateful entrypoint signedUpdate(
- owner: address, name: string, key: string, pt: ${aens}.pointee, sig: signature) =
- switch(${aens}.lookup(name))
+ owner: address, name: string, key: string, pt: AENSv2.pointee, sig: signature) =
+ switch(AENSv2.lookup(name))
None => ()
- Some(${aens}.Name(_, _, ptrs)) =>
- ${aens}.update(owner, name, None, None, Some(ptrs{[key] = pt}), signature = sig)`,
+ Some(AENSv2.Name(_, _, ptrs)) =>
+ AENSv2.update(owner, name, None, None, Some(ptrs{[key] = pt}), signature = sig)`,
});
await contract.$deploy([]);
assertNotNull(contract.$options.address);
@@ -131,7 +126,7 @@ contract DelegateTest =
});
it('updates', async () => {
- const pointee: Pointee = { [`${aens}.OraclePt`]: [newOwner] };
+ const pointee: Pointee = { 'AENSv2.OraclePt': [newOwner] };
const { result } = await contract
.signedUpdate(owner, name, 'oracle', pointee, decode(delegationSignature));
assertNotNull(result);
@@ -146,7 +141,6 @@ contract DelegateTest =
const dataPt = new Uint8Array(Buffer.from('test value'));
it('updates with raw pointer', async () => {
- if (isIris) return;
const pointee: Pointee = { 'AENSv2.DataPt': [dataPt] };
await contract.signedUpdate(owner, name, 'test key', pointee, decode(delegationSignature));
expect((await aeSdk.api.getNameEntryByName(name)).pointers[0]).to.be.eql({
@@ -157,15 +151,15 @@ contract DelegateTest =
});
it('gets', async () => {
- const nameEntry = (await contract.getName(name)).decodedResult[`${aens}.Name`];
+ const nameEntry = (await contract.getName(name)).decodedResult['AENSv2.Name'];
const ttl = nameEntry[1].FixedTTL[0];
expect(ttl).to.be.a('bigint');
expect(nameEntry).to.be.eql([
owner,
{ FixedTTL: [ttl] },
new Map([
- ['oracle', { [`${aens}.OraclePt`]: [newOwner] }],
- ...isIris ? [] : [['test key', { 'AENSv2.DataPt': [dataPt] }]] as const,
+ ['oracle', { 'AENSv2.OraclePt': [newOwner] }],
+ ['test key', { 'AENSv2.DataPt': [dataPt] }],
]),
]);
});
@@ -194,7 +188,6 @@ contract DelegateTest =
});
it('works using wildcard delegation signature', async () => {
- if (isIris) return;
const allNamesDelSig = decode(await aeSdk.signDelegation(
packDelegation(
{ tag: DelegationTag.AensWildcard, accountAddress: aeSdk.address, contractAddress },
@@ -228,7 +221,6 @@ contract DelegateTest =
});
it('claims without preclaim', async () => {
- if (isIris) return;
const n = randomName(30);
const dlgSig = await aeSdk.signDelegation(
packDelegation({
diff --git a/test/integration/node.ts b/test/integration/node.ts
index 0f46da476d..2364b89715 100644
--- a/test/integration/node.ts
+++ b/test/integration/node.ts
@@ -68,14 +68,10 @@ describe('Node client', () => {
it('throws exception if unsupported protocol', async () => {
const sandbox = createSandbox();
- const [name, version, message] = {
- 5: ['Iris', '5', '5. Supported: >= 6 < 7'],
- 6: ['Ceres', '6', '6. Supported: >= 5 < 6'],
- }[(await node.getNodeInfo()).consensusProtocolVersion];
- sandbox.stub(ConsensusProtocolVersion, name as any).value(undefined);
- sandbox.stub(ConsensusProtocolVersion, version as any).value(undefined);
+ sandbox.stub(ConsensusProtocolVersion, 'Ceres' as any).value(undefined);
+ sandbox.stub(ConsensusProtocolVersion, '6' as any).value(undefined);
await expect(node.getNodeInfo()).to.be
- .rejectedWith(`Unsupported consensus protocol version ${message}`);
+ .rejectedWith('Unsupported consensus protocol version 6. Supported: >= 5 < 6');
sandbox.restore();
});
diff --git a/test/integration/transaction.ts b/test/integration/transaction.ts
index b971205c14..333dc725a7 100644
--- a/test/integration/transaction.ts
+++ b/test/integration/transaction.ts
@@ -5,7 +5,7 @@ import { getSdk } from './index';
import {
AeSdk, Contract, Node,
commitmentHash, oracleQueryId, decode, encode, Encoded, Encoding,
- ORACLE_TTL_TYPES, Tag, AE_AMOUNT_FORMATS, buildTx, unpackTx, ConsensusProtocolVersion,
+ ORACLE_TTL_TYPES, Tag, AE_AMOUNT_FORMATS, buildTx, unpackTx,
} from '../../src';
const nonce = 1;
@@ -197,13 +197,7 @@ describe('Transaction', () => {
}),
], [
'contract create',
- async () => {
- const { consensusProtocolVersion } = await aeSdk.api.getNodeInfo();
- if (consensusProtocolVersion === ConsensusProtocolVersion.Iris) {
- return 'tx_+LAqAaEBhAyXS5cWR3ZFS6EZ2E7cTWBYqN7JK27cV4qy0wtMQgABuGr4aEYDoKEijZbj/w2AeiWwAbldusME5pm3ZgPuomnZ3TbUbYgrwLg7nv5E1kQfADcANwAaDoI/AQM//oB4IJIANwEHBwEBAJgvAhFE1kQfEWluaXQRgHggkhlnZXRBcmeCLwCFNy40LjEAgwcAA4ZHcyzkwAAAAACDTEtAhDuaygCHKxFE1kQfP+mk9Ac=';
- }
- return 'tx_+LAqAaEBhAyXS5cWR3ZFS6EZ2E7cTWBYqN7JK27cV4qy0wtMQgABuGr4aEYDoKEijZbj/w2AeiWwAbldusME5pm3ZgPuomnZ3TbUbYgrwLg7nv5E1kQfADcANwAaDoI/AQM//oB4IJIANwEHBwEBAJgvAhFE1kQfEWluaXQRgHggkhlnZXRBcmeCLwCFOC4wLjAAgwgAA4ZHcyzkwAAAAACDTEtAhDuaygCHKxFE1kQfP6UPXo4=';
- },
+ 'tx_+LAqAaEBhAyXS5cWR3ZFS6EZ2E7cTWBYqN7JK27cV4qy0wtMQgABuGr4aEYDoKEijZbj/w2AeiWwAbldusME5pm3ZgPuomnZ3TbUbYgrwLg7nv5E1kQfADcANwAaDoI/AQM//oB4IJIANwEHBwEBAJgvAhFE1kQfEWluaXQRgHggkhlnZXRBcmeCLwCFOC4wLjAAgwgAA4ZHcyzkwAAAAACDTEtAhDuaygCHKxFE1kQfP6UPXo4=',
async () => aeSdk.buildTx({
tag: Tag.ContractCreateTx,
nonce,
diff --git a/test/integration/txVerification.ts b/test/integration/txVerification.ts
index 58c63aa000..9585ea59e4 100644
--- a/test/integration/txVerification.ts
+++ b/test/integration/txVerification.ts
@@ -2,8 +2,7 @@ import { before, describe, it } from 'mocha';
import { expect } from 'chai';
import { getSdk } from '.';
import {
- AeSdk, Node, InvalidTxError, ArgumentError, Tag, MemoryAccount, verifyTransaction,
- ConsensusProtocolVersion, buildTxAsync,
+ AeSdk, Node, InvalidTxError, ArgumentError, Tag, MemoryAccount, verifyTransaction, buildTxAsync,
} from '../../src';
describe('Verify Transaction', () => {
@@ -98,9 +97,7 @@ describe('Verify Transaction', () => {
it('verifies nonce of gaAttach transaction', async () => {
const gaAttach = 'tx_+QEWUAGhAUfN4Ejc4KynKrM1XI1D2AWlqBrTeCVywu9B6hV4rnriAri0+LJGA6BFoqzc6YC/ewZLk3eumqCWL/K7O2Wqy+x14Zbcx4rB0MC4hbhV/kTWRB8ANwA3ABoOgq+CAAEAPwEDP/5s8lcLADcBBxd3AoJ3AAg8AgT7A01Ob3QgaW4gQXV0aCBjb250ZXh0AQP//qsVVmEANwCHAjcANwGXQAECgqovAxFE1kQfEWluaXQRbPJXCyVhdXRob3JpemURqxVWYSVnZXRUeEhhc2iCLwCFOC4wLjAAoGzyVwsKFZm3CCkeUKo9rxPQx/JIS8M33a0kE6N/1KAJgwgAA4ZJUs52OAAAa4Q7msoAhysRRNZEHz/z50Zp';
const errors = await verifyTransaction(gaAttach, node);
- const isIris = (await aeSdk.api.getNodeInfo())
- .consensusProtocolVersion === ConsensusProtocolVersion.Iris;
- expect(errors.find((e) => e.key === 'AccountUsed')).to.eql(isIris ? undefined : {
+ expect(errors.find((e) => e.key === 'AccountUsed')).to.eql({
message: 'Account ak_Yd9EiaBy8GNXWLkMuH53H9hiCyEuL3RKxN4wYKhN8xDnjKRpb can\'t become generalized because it is already used',
key: 'AccountUsed',
checkedKeys: ['nonce'],
diff --git a/test/integration/typed-data.ts b/test/integration/typed-data.ts
index 5a825e2ac4..c3b065113b 100644
--- a/test/integration/typed-data.ts
+++ b/test/integration/typed-data.ts
@@ -3,8 +3,7 @@ import { expect } from 'chai';
import canonicalize from 'canonicalize';
import { TypeResolver, ContractByteArrayEncoder } from '@aeternity/aepp-calldata';
import {
- AeSdk, ConsensusProtocolVersion, Contract, decode, Encoded,
- hashDomain, hashJson, hashTypedData,
+ AeSdk, Contract, decode, Encoded, hashDomain, hashJson, hashTypedData,
} from '../../src';
import { Domain } from '../../src/utils/typed-data';
import { getSdk } from '.';
@@ -69,8 +68,6 @@ describe('typed data', () => {
before(async () => {
aeSdk = await getSdk();
const typeJson = (canonicalize(recordAci) ?? '').replaceAll('"', '\\"');
- const isIris = (await aeSdk.api.getNodeInfo())
- .consensusProtocolVersion === ConsensusProtocolVersion.Iris;
contract = await Contract.initialize({
...aeSdk.getContext(),
sourceCode: ''
@@ -86,7 +83,7 @@ describe('typed data', () => {
+ '\n entrypoint getDomain(): domain =' // kind of EIP-5267
+ '\n { name = Some("Test app"),'
+ '\n version = Some(2),'
- + `\n networkId = Some(${isIris ? '"ae_dev"' : 'Chain.network_id'}),`
+ + '\n networkId = Some(Chain.network_id),'
+ '\n contractAddress = Some(Address.to_contract(Contract.address)) }'
+ '\n'
+ '\n entrypoint getDomainHash() = Crypto.blake2b(getDomain())'
From 61554b32e02a26664df6954871917a9454e6d41f Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 8 Jun 2024 16:09:52 +1000
Subject: [PATCH 046/149] refactor!: drop Iris support
BREAKING CHANGE: Iris is not supported
Stick to a previous sdk version if it is required.
---
src/aens.ts | 9 ++-------
src/contract/Contract.ts | 8 ++------
src/tx/builder/constants.ts | 1 -
src/tx/builder/field-types/abi-version.ts | 2 +-
src/tx/builder/field-types/ct-version.ts | 13 +------------
src/tx/builder/field-types/nonce.ts | 10 +++++++++-
src/tx/validator.ts | 11 -----------
test/integration/account-generalized.ts | 18 ++++++++++++++++++
test/integration/chain.ts | 2 +-
test/integration/node.ts | 13 ++++++-------
test/integration/txVerification.ts | 10 ----------
11 files changed, 40 insertions(+), 57 deletions(-)
diff --git a/src/aens.ts b/src/aens.ts
index d52f1482f0..2ef5e8eead 100644
--- a/src/aens.ts
+++ b/src/aens.ts
@@ -9,9 +9,9 @@
import BigNumber from 'bignumber.js';
import { genSalt, isAddressValid } from './utils/crypto';
import { commitmentHash, isAuctionName } from './tx/builder/helpers';
-import { Tag, AensName, ConsensusProtocolVersion } from './tx/builder/constants';
+import { Tag, AensName } from './tx/builder/constants';
import { Encoded, Encoding } from './utils/encoder';
-import { UnsupportedProtocolError, LogicError } from './utils/errors';
+import { LogicError } from './utils/errors';
import { getName } from './chain';
import { sendTransaction, SendTransactionOptions } from './send-transaction';
import { Optional } from './utils/other';
@@ -125,11 +125,6 @@ export default class Name {
const hasRawPointers = Object.values(allPointers)
.some((v) => isAddressValid(v, Encoding.Bytearray));
- const isIris = (await opt.onNode.getNodeInfo())
- .consensusProtocolVersion === ConsensusProtocolVersion.Iris;
- if (hasRawPointers && isIris) {
- throw new UnsupportedProtocolError('Raw pointers are available only in Ceres, the current protocol is Iris');
- }
const tx = await buildTxAsync({
_isInternalBuild: true,
diff --git a/src/contract/Contract.ts b/src/contract/Contract.ts
index 944ded4ba9..6bb9f34c34 100644
--- a/src/contract/Contract.ts
+++ b/src/contract/Contract.ts
@@ -6,9 +6,7 @@
*/
import { Encoder as Calldata } from '@aeternity/aepp-calldata';
-import {
- Tag, AensName, ConsensusProtocolVersion, DRY_RUN_ACCOUNT,
-} from '../tx/builder/constants';
+import { Tag, AensName, DRY_RUN_ACCOUNT } from '../tx/builder/constants';
import {
buildContractIdByContractTx, unpackTx, buildTxAsync, BuildTxOptions, buildTxHash,
} from '../tx/builder';
@@ -501,9 +499,7 @@ class Contract {
'contract_pubkey',
{ resolveByNode: true, onNode },
) as Encoded.ContractAddress;
- const isIris = (await onNode.getNodeInfo())
- .consensusProtocolVersion === ConsensusProtocolVersion.Iris;
- if (!isIris && isNameValid(address)) name = address;
+ if (isNameValid(address)) name = address;
}
if (address == null && sourceCode == null && sourceCodePath == null && bytecode == null) {
diff --git a/src/tx/builder/constants.ts b/src/tx/builder/constants.ts
index 6364435e94..94bcfa2d1b 100644
--- a/src/tx/builder/constants.ts
+++ b/src/tx/builder/constants.ts
@@ -55,7 +55,6 @@ export const NAME_BID_RANGES = mapObject({
}, ([key, value]) => [key, new BigNumber(value).times(NAME_FEE_MULTIPLIER)]);
export enum ConsensusProtocolVersion {
- Iris = 5,
Ceres = 6,
}
diff --git a/src/tx/builder/field-types/abi-version.ts b/src/tx/builder/field-types/abi-version.ts
index 50438deb65..53d286db35 100644
--- a/src/tx/builder/field-types/abi-version.ts
+++ b/src/tx/builder/field-types/abi-version.ts
@@ -12,7 +12,7 @@ export default {
serialize(
value: AbiVersion | undefined,
{ tag }: { tag: Tag },
- { consensusProtocolVersion = ConsensusProtocolVersion.Iris }:
+ { consensusProtocolVersion = ConsensusProtocolVersion.Ceres }:
{ consensusProtocolVersion?: ConsensusProtocolVersion },
): Buffer {
const result = value ?? this._getProtocolDetails(consensusProtocolVersion, tag);
diff --git a/src/tx/builder/field-types/ct-version.ts b/src/tx/builder/field-types/ct-version.ts
index c466445038..8e20110437 100644
--- a/src/tx/builder/field-types/ct-version.ts
+++ b/src/tx/builder/field-types/ct-version.ts
@@ -6,17 +6,6 @@ import Node from '../../../Node';
* @see {@link https://github.com/aeternity/protocol/blob/71cf111/contracts/contract_vms.md#virtual-machines-on-the-æternity-blockchain}
*/
export const ProtocolToVmAbi = {
- [ConsensusProtocolVersion.Iris]: {
- 'contract-create': {
- vmVersion: [VmVersion.Fate2], abiVersion: [AbiVersion.Fate],
- },
- 'contract-call': {
- vmVersion: [], abiVersion: [AbiVersion.Fate, AbiVersion.Sophia],
- },
- 'oracle-call': {
- vmVersion: [], abiVersion: [AbiVersion.NoAbi, AbiVersion.Fate],
- },
- },
[ConsensusProtocolVersion.Ceres]: {
'contract-create': {
vmVersion: [VmVersion.Fate3], abiVersion: [AbiVersion.Fate],
@@ -50,7 +39,7 @@ export default {
serialize(
value: CtVersion | undefined,
params: {},
- { consensusProtocolVersion = ConsensusProtocolVersion.Iris }:
+ { consensusProtocolVersion = ConsensusProtocolVersion.Ceres }:
{ consensusProtocolVersion?: ConsensusProtocolVersion },
): Buffer {
value ??= getProtocolDetails(consensusProtocolVersion, 'contract-create');
diff --git a/src/tx/builder/field-types/nonce.ts b/src/tx/builder/field-types/nonce.ts
index aaca3d55fc..d37a79cf3d 100644
--- a/src/tx/builder/field-types/nonce.ts
+++ b/src/tx/builder/field-types/nonce.ts
@@ -3,9 +3,10 @@ import shortUInt from './short-u-int';
import Node from '../../../Node';
import { ArgumentError } from '../../../utils/errors';
import { NextNonceStrategy } from '../../../apis/node';
+import { Tag } from '../constants';
export default function genNonceField(senderKey: SenderKey): {
- serialize: (value: number) => Buffer;
+ serialize: (value: number, params: { tag: Tag }) => Buffer;
// TODO: (value: number) => Promise | (value: undefined, ...) => Promise
prepare: (
value: number | undefined,
@@ -23,6 +24,13 @@ export default function genNonceField(senderKey: Sende
return {
...shortUInt,
+ serialize(value: number, { tag }): Buffer {
+ if (Tag.GaAttachTx === tag && value !== 1) {
+ throw new ArgumentError('nonce', 'equal 1 if GaAttachTx', value);
+ }
+ return shortUInt.serialize(value);
+ },
+
async prepare(value, params, options) {
if (value != null) return value;
// TODO: uncomment the below line
diff --git a/src/tx/validator.ts b/src/tx/validator.ts
index 4bb5a41972..bec1eac879 100644
--- a/src/tx/validator.ts
+++ b/src/tx/validator.ts
@@ -208,15 +208,4 @@ validators.push(
}];
}
},
- // TODO: move to fee field of tx builder after dropping Iris
- (tx, { consensusProtocolVersion }) => ((
- Tag.GaAttachTx === tx.tag
- && ConsensusProtocolVersion.Ceres === consensusProtocolVersion
- && tx.nonce !== 1
- ) ? [{
- message: `Account ${tx.ownerId} can't become generalized because it is already used`,
- key: 'AccountUsed',
- checkedKeys: ['nonce'],
- }]
- : []),
);
diff --git a/test/integration/account-generalized.ts b/test/integration/account-generalized.ts
index f60e739d99..f831363c62 100644
--- a/test/integration/account-generalized.ts
+++ b/test/integration/account-generalized.ts
@@ -13,6 +13,7 @@ import {
Contract, ContractMethodsBase,
MIN_GAS_PRICE,
Encoded,
+ ArgumentError,
} from '../../src';
import { ensureEqual } from '../utils';
@@ -61,6 +62,23 @@ describe('Generalized Account', () => {
.should.be.rejectedWith(`Account ${gaAccountAddress} is already GA`);
});
+ it('fails to build GaAttachTx with non-1 nonce', () => {
+ expect(() => buildTx({
+ tag: Tag.GaAttachTx,
+ version: 1,
+ ownerId: 'ak_Yd9EiaBy8GNXWLkMuH53H9hiCyEuL3RKxN4wYKhN8xDnjKRpb',
+ nonce: 2,
+ code: 'cb_+LJGA6BFoqzc6YC/ewZLk3eumqCWL/K7O2Wqy+x14Zbcx4rB0MC4hbhV/kTWRB8ANwA3ABoOgq+CAAEAPwEDP/5s8lcLADcBBxd3AoJ3AAg8AgT7A01Ob3QgaW4gQXV0aCBjb250ZXh0AQP//qsVVmEANwCHAjcANwGXQAECgqovAxFE1kQfEWluaXQRbPJXCyVhdXRob3JpemURqxVWYSVnZXRUeEhhc2iCLwCFOC4wLjAAdzf5cQ==',
+ authFun: Buffer.from('6cf2570b0a1599b708291e50aa3daf13d0c7f2484bc337ddad2413a37fd4a009', 'hex'),
+ ctVersion: { vmVersion: 8, abiVersion: 3 },
+ fee: '80620000000000',
+ ttl: 0,
+ gasLimit: 107,
+ gasPrice: '1000000000',
+ callData: 'cb_KxFE1kQfP4oEp9E=',
+ })).to.throw(ArgumentError, 'nonce should be equal 1 if GaAttachTx, got 2 instead');
+ });
+
const { publicKey } = generateKeyPair();
it('Init MemoryAccount for GA and Spend using GA', async () => {
diff --git a/test/integration/chain.ts b/test/integration/chain.ts
index 83d0eb25f6..76f8f28803 100644
--- a/test/integration/chain.ts
+++ b/test/integration/chain.ts
@@ -195,6 +195,6 @@ describe('Node Chain', () => {
.foo(v, { nonce: nextNonce + idx, gasLimit, combine: true })),
)).map((r) => r.decodedResult);
expect(results).to.be.eql(numbers.map((v) => BigInt(v * 100)));
- expect(getCount()).to.be.equal(2);
+ expect(getCount()).to.be.equal(1);
});
});
diff --git a/test/integration/node.ts b/test/integration/node.ts
index 2364b89715..2124c1debd 100644
--- a/test/integration/node.ts
+++ b/test/integration/node.ts
@@ -1,11 +1,11 @@
import { describe, it, before } from 'mocha';
import { expect } from 'chai';
-import { createSandbox } from 'sinon';
+import { stub } from 'sinon';
import { RestError } from '@azure/core-rest-pipeline';
import { FullOperationResponse } from '@azure/core-client';
import { url } from '.';
import {
- AeSdkBase, Node, NodeNotFoundError, ConsensusProtocolVersion, MemoryAccount, buildTx, Tag,
+ AeSdkBase, Node, NodeNotFoundError, MemoryAccount, buildTx, Tag,
} from '../../src';
import { bindRequestCounter } from '../utils';
@@ -67,12 +67,11 @@ describe('Node client', () => {
}, Promise.resolve()));
it('throws exception if unsupported protocol', async () => {
- const sandbox = createSandbox();
- sandbox.stub(ConsensusProtocolVersion, 'Ceres' as any).value(undefined);
- sandbox.stub(ConsensusProtocolVersion, '6' as any).value(undefined);
+ const status = await node.getStatus();
+ const s = stub(node, 'getStatus').resolves({ ...status, topBlockHeight: 0 });
await expect(node.getNodeInfo()).to.be
- .rejectedWith('Unsupported consensus protocol version 6. Supported: >= 5 < 6');
- sandbox.restore();
+ .rejectedWith('Unsupported consensus protocol version 1. Supported: >= 6 < 7');
+ s.restore();
});
it('throws exception with code', async () => {
diff --git a/test/integration/txVerification.ts b/test/integration/txVerification.ts
index 9585ea59e4..3edcd5a419 100644
--- a/test/integration/txVerification.ts
+++ b/test/integration/txVerification.ts
@@ -93,14 +93,4 @@ describe('Verify Transaction', () => {
const errors = await verifyTransaction(contractCall, node);
expect(errors.map(({ key }) => key)).to.include('ContractNotFound');
});
-
- it('verifies nonce of gaAttach transaction', async () => {
- const gaAttach = 'tx_+QEWUAGhAUfN4Ejc4KynKrM1XI1D2AWlqBrTeCVywu9B6hV4rnriAri0+LJGA6BFoqzc6YC/ewZLk3eumqCWL/K7O2Wqy+x14Zbcx4rB0MC4hbhV/kTWRB8ANwA3ABoOgq+CAAEAPwEDP/5s8lcLADcBBxd3AoJ3AAg8AgT7A01Ob3QgaW4gQXV0aCBjb250ZXh0AQP//qsVVmEANwCHAjcANwGXQAECgqovAxFE1kQfEWluaXQRbPJXCyVhdXRob3JpemURqxVWYSVnZXRUeEhhc2iCLwCFOC4wLjAAoGzyVwsKFZm3CCkeUKo9rxPQx/JIS8M33a0kE6N/1KAJgwgAA4ZJUs52OAAAa4Q7msoAhysRRNZEHz/z50Zp';
- const errors = await verifyTransaction(gaAttach, node);
- expect(errors.find((e) => e.key === 'AccountUsed')).to.eql({
- message: 'Account ak_Yd9EiaBy8GNXWLkMuH53H9hiCyEuL3RKxN4wYKhN8xDnjKRpb can\'t become generalized because it is already used',
- key: 'AccountUsed',
- checkedKeys: ['nonce'],
- });
- });
});
From c521597e4ee4243266011d5e23e0fb75a126a404 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 8 Jun 2024 17:11:45 +1000
Subject: [PATCH 047/149] refactor(contract)!: remove `encodeFateValue`,
`decodeFateValue`
BREAKING CHANGE: `encodeFateValue`, `decodeFateValue` not exported anymore
Use ContractByteArrayEncoder:encodeWithType, decodeWithType from `@aeternity/aepp-calldata`.
---
src/deprecated.ts | 19 -------------------
src/index-browser.ts | 4 +---
2 files changed, 1 insertion(+), 22 deletions(-)
diff --git a/src/deprecated.ts b/src/deprecated.ts
index d742111d3d..cde63cf1aa 100644
--- a/src/deprecated.ts
+++ b/src/deprecated.ts
@@ -1,6 +1,3 @@
-import { TypeResolver, ContractByteArrayEncoder } from '@aeternity/aepp-calldata';
-import { AciValue } from './utils/typed-data';
-import { Encoded } from './utils/encoder';
import { RpcError } from './aepp-wallet-communication/schema';
/**
@@ -23,19 +20,3 @@ export class RpcBroadcastError extends RpcError {
* @deprecated use isAuctionName instead
*/
export const NAME_BID_MAX_LENGTH = 12; // # this is the max length for a domain to be part of a bid
-
-/**
- * @deprecated use ContractByteArrayEncoder:encodeWithType from \@aeternity/aepp-calldata
- */
-export function encodeFateValue(value: unknown, aci: AciValue): Encoded.ContractBytearray {
- const valueType = new TypeResolver().resolveType(aci, {});
- return new ContractByteArrayEncoder().encodeWithType(value, valueType);
-}
-
-/**
- * @deprecated use ContractByteArrayEncoder:decodeWithType from \@aeternity/aepp-calldata
- */
-export function decodeFateValue(value: Encoded.ContractBytearray, aci: AciValue): any {
- const valueType = new TypeResolver().resolveType(aci, {});
- return new ContractByteArrayEncoder().decodeWithType(value, valueType);
-}
diff --git a/src/index-browser.ts b/src/index-browser.ts
index d804eb888b..11c54f1318 100644
--- a/src/index-browser.ts
+++ b/src/index-browser.ts
@@ -112,6 +112,4 @@ export {
TagNotFoundError, TxNotInChainError, AlreadyConnectedError, NoWalletConnectedError,
RpcConnectionError,
} from './utils/errors';
-export {
- RpcBroadcastError, NAME_BID_MAX_LENGTH, encodeFateValue, decodeFateValue,
-} from './deprecated';
+export { RpcBroadcastError, NAME_BID_MAX_LENGTH } from './deprecated';
From 83797a4a1d778104f86c9ddcc6c04fb29dce6bfe Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 8 Jun 2024 17:13:29 +1000
Subject: [PATCH 048/149] refactor!: remove `NAME_BID_MAX_LENGTH`
BREAKING CHANGE: `NAME_BID_MAX_LENGTH` not exported anymore
Use `isAuctionName` function instead.
---
src/deprecated.ts | 5 -----
src/index-browser.ts | 2 +-
2 files changed, 1 insertion(+), 6 deletions(-)
diff --git a/src/deprecated.ts b/src/deprecated.ts
index cde63cf1aa..9e2c557457 100644
--- a/src/deprecated.ts
+++ b/src/deprecated.ts
@@ -15,8 +15,3 @@ export class RpcBroadcastError extends RpcError {
this.name = 'RpcBroadcastError';
}
}
-
-/**
- * @deprecated use isAuctionName instead
- */
-export const NAME_BID_MAX_LENGTH = 12; // # this is the max length for a domain to be part of a bid
diff --git a/src/index-browser.ts b/src/index-browser.ts
index 11c54f1318..d56d58c6c8 100644
--- a/src/index-browser.ts
+++ b/src/index-browser.ts
@@ -112,4 +112,4 @@ export {
TagNotFoundError, TxNotInChainError, AlreadyConnectedError, NoWalletConnectedError,
RpcConnectionError,
} from './utils/errors';
-export { RpcBroadcastError, NAME_BID_MAX_LENGTH } from './deprecated';
+export { RpcBroadcastError } from './deprecated';
From 1f0b3bbb7edb615b05c014e90fadac1642b8a331 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 8 Jun 2024 17:15:20 +1000
Subject: [PATCH 049/149] refactor(aepp)!: remove RpcBroadcastError
BREAKING CHANGE: RpcBroadcastError not exported anymore
Because it is not thrown by wallet as well.
---
src/deprecated.ts | 17 -----------------
src/index-browser.ts | 1 -
2 files changed, 18 deletions(-)
delete mode 100644 src/deprecated.ts
diff --git a/src/deprecated.ts b/src/deprecated.ts
deleted file mode 100644
index 9e2c557457..0000000000
--- a/src/deprecated.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { RpcError } from './aepp-wallet-communication/schema';
-
-/**
- * @category exception
- * @deprecated this exception is not thrown anymore
- */
-export class RpcBroadcastError extends RpcError {
- static override code = 3;
-
- override code = 3;
-
- constructor(data?: any) {
- super('Broadcast failed');
- this.data = data;
- this.name = 'RpcBroadcastError';
- }
-}
diff --git a/src/index-browser.ts b/src/index-browser.ts
index d56d58c6c8..749336e3c3 100644
--- a/src/index-browser.ts
+++ b/src/index-browser.ts
@@ -112,4 +112,3 @@ export {
TagNotFoundError, TxNotInChainError, AlreadyConnectedError, NoWalletConnectedError,
RpcConnectionError,
} from './utils/errors';
-export { RpcBroadcastError } from './deprecated';
From 3b866321d3ecaf80a15ae0d975f8cdd460d12d59 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Mon, 6 May 2024 21:24:59 +1000
Subject: [PATCH 050/149] test(channel): enable in all networks
---
test/integration/channel.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/integration/channel.ts b/test/integration/channel.ts
index fa0bceb103..2facb78509 100644
--- a/test/integration/channel.ts
+++ b/test/integration/channel.ts
@@ -48,7 +48,7 @@ async function waitForChannel(channel: Channel): Promise {
});
}
-(networkId === 'ae_dev' ? describe : describe.skip)('Channel', () => {
+describe('Channel', () => {
let aeSdk: AeSdk;
let initiator: MemoryAccount;
let responder: MemoryAccount;
From f30b9ddea117b4c68189e8aa990a859734fdead4 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sun, 9 Jun 2024 16:37:18 +1000
Subject: [PATCH 051/149] test(channel): fix on testnet
---
.mocharc.js | 2 +-
test/integration/aens.ts | 16 ++++++++--------
test/integration/chain.ts | 6 +++---
test/integration/channel.ts | 9 ++++++---
test/integration/contract.ts | 4 ++--
test/integration/delegation.ts | 8 ++++----
test/integration/index.ts | 2 ++
test/integration/oracle.ts | 7 +++----
test/integration/typed-data.ts | 2 +-
9 files changed, 30 insertions(+), 26 deletions(-)
diff --git a/.mocharc.js b/.mocharc.js
index d36701fef6..7edd1ea5df 100644
--- a/.mocharc.js
+++ b/.mocharc.js
@@ -2,6 +2,6 @@ module.exports = {
require: 'tooling/babel-register.js',
recursive: true,
extension: '.js,.ts',
- timeout: process.env.NETWORK ? '500s' : '6s',
+ timeout: process.env.NETWORK ? '30s' : '6s',
ignore: 'test/environment/**',
}
diff --git a/test/integration/aens.ts b/test/integration/aens.ts
index 07838a3163..47a64f36d9 100644
--- a/test/integration/aens.ts
+++ b/test/integration/aens.ts
@@ -1,7 +1,7 @@
import { describe, it, before } from 'mocha';
import { expect } from 'chai';
import { RestError } from '@azure/core-rest-pipeline';
-import { getSdk, isLimitedCoins } from '.';
+import { getSdk, isLimitedCoins, timeoutBlock } from '.';
import {
assertNotNull, ensureEqual, randomName, randomString,
} from '../utils';
@@ -51,7 +51,7 @@ describe('Aens', () => {
assertNotNull(claimRes.tx);
assertNotNull(claimRes.signatures);
expect(claimRes.tx.fee).to.satisfy((fee: bigint) => fee >= 16660000000000n);
- expect(claimRes.tx.fee).to.satisfy((fee: bigint) => fee <= 17040000000000n);
+ expect(claimRes.tx.fee).to.satisfy((fee: bigint) => fee <= 17080000000000n);
expect(claimRes).to.be.eql({
tx: {
fee: claimRes.tx.fee,
@@ -79,7 +79,7 @@ describe('Aens', () => {
pointers: [],
ttl: claimRes.blockHeight + 180000,
});
- });
+ }).timeout(timeoutBlock);
it('claims a long name without preclaim', async () => {
const nameString = randomName(30);
@@ -136,7 +136,7 @@ describe('Aens', () => {
pointers: [],
ttl: claimRes.blockHeight + 180000,
});
- });
+ }).timeout(timeoutBlock);
it('preclaims name using specific account', async () => {
const onAccount = Object.values(aeSdk.accounts)[1];
@@ -241,7 +241,7 @@ describe('Aens', () => {
assertNotNull(updateRes.tx);
assertNotNull(updateRes.signatures);
expect(updateRes.tx.fee).to.satisfy((fee: bigint) => fee >= 22140000000000n);
- expect(updateRes.tx.fee).to.satisfy((fee: bigint) => fee <= 22180000000000n);
+ expect(updateRes.tx.fee).to.satisfy((fee: bigint) => fee <= 22240000000000n);
expect(updateRes).to.be.eql({
tx: {
fee: updateRes.tx.fee,
@@ -280,7 +280,7 @@ describe('Aens', () => {
const txHash = buildTxHash(rawTx);
await expect(aeSdk.poll(txHash))
.to.be.rejectedWith(new RegExp(`v3/transactions/${txHash} error: (Transaction not found|412 status code)`));
- });
+ }).timeout(timeoutBlock);
it('updates extending pointers', async () => {
const anotherContract = buildContractId(address, 12);
@@ -331,7 +331,7 @@ describe('Aens', () => {
assertNotNull(transferRes.tx);
assertNotNull(transferRes.signatures);
expect(transferRes.tx.fee).to.satisfy((fee: bigint) => fee >= 17300000000000n);
- expect(transferRes.tx.fee).to.satisfy((fee: bigint) => fee <= 17340000000000n);
+ expect(transferRes.tx.fee).to.satisfy((fee: bigint) => fee <= 17400000000000n);
expect(transferRes).to.be.eql({
tx: {
fee: transferRes.tx.fee,
@@ -359,7 +359,7 @@ describe('Aens', () => {
assertNotNull(revokeRes.tx);
assertNotNull(revokeRes.signatures);
expect(revokeRes.tx.fee).to.satisfy((fee: bigint) => fee >= 16620000000000n);
- expect(revokeRes.tx.fee).to.satisfy((fee: bigint) => fee <= 16660000000000n);
+ expect(revokeRes.tx.fee).to.satisfy((fee: bigint) => fee <= 16700000000000n);
expect(revokeRes).to.be.eql({
tx: {
fee: revokeRes.tx.fee,
diff --git a/test/integration/chain.ts b/test/integration/chain.ts
index 76f8f28803..86d31c6ba5 100644
--- a/test/integration/chain.ts
+++ b/test/integration/chain.ts
@@ -1,7 +1,7 @@
import { describe, it, before } from 'mocha';
import { expect } from 'chai';
import { stub } from 'sinon';
-import { getSdk } from '.';
+import { getSdk, timeoutBlock } from '.';
import {
generateKeyPair, AeSdk, Tag, MemoryAccount, Encoded, Node, Contract,
} from '../../src';
@@ -62,7 +62,7 @@ describe('Node Chain', () => {
const target = await aeSdkWithoutAccount.getHeight() + 1;
await aeSdkWithoutAccount.awaitHeight(target).should.eventually.be.at.least(target);
await aeSdkWithoutAccount.getHeight().should.eventually.be.at.least(target);
- });
+ }).timeout(timeoutBlock);
it('Can verify transaction from broadcast error', async () => {
const error = await aeSdk
@@ -114,7 +114,7 @@ describe('Node Chain', () => {
const res = await aeSdk.spend(1000, aeSdk.address, { confirm: 1 });
assertNotNull(res.blockHeight);
expect(await aeSdk.getHeight() >= res.blockHeight + 1).to.be.equal(true);
- });
+ }).timeout(timeoutBlock);
it('doesn\'t make extra requests', async () => {
let getCount;
diff --git a/test/integration/channel.ts b/test/integration/channel.ts
index 2facb78509..85937fdf31 100644
--- a/test/integration/channel.ts
+++ b/test/integration/channel.ts
@@ -4,7 +4,9 @@ import {
import { expect } from 'chai';
import * as sinon from 'sinon';
import BigNumber from 'bignumber.js';
-import { getSdk, networkId, channelUrl } from '.';
+import {
+ getSdk, networkId, channelUrl, timeoutBlock,
+} from '.';
import {
unpackTx,
buildTxHash,
@@ -98,6 +100,7 @@ describe('Channel', () => {
initiatorId: 'ak_' as Encoded.AccountAddress,
responderId: 'ak_' as Encoded.AccountAddress,
minimumDepth: 0,
+ minimumDepthStrategy: 'plain' as const,
};
const initiatorParams = {
role: 'initiator',
@@ -738,7 +741,7 @@ describe('Channel', () => {
.minus(responderBalanceBeforeClose)
.isEqualTo(balances[responder.address])
.should.be.equal(true);
- });
+ }).timeout(timeoutBlock);
it('can dispute via slash tx', async () => {
initiatorCh.disconnect();
@@ -809,7 +812,7 @@ describe('Channel', () => {
.plus(settleTxFee)
.isEqualTo(recentBalances[responder.address])
.should.be.equal(true);
- });
+ }).timeout(timeoutBlock);
it('can create a contract and accept', async () => {
initiatorCh.disconnect();
diff --git a/test/integration/contract.ts b/test/integration/contract.ts
index 74decf94fa..95b1b19526 100644
--- a/test/integration/contract.ts
+++ b/test/integration/contract.ts
@@ -1,7 +1,7 @@
import { expect } from 'chai';
import { before, describe, it } from 'mocha';
import { assertNotNull, InputNumber } from '../utils';
-import { getSdk } from '.';
+import { getSdk, timeoutBlock } from '.';
import {
ArgumentError, NodeInvocationError, Encoded, DRY_RUN_ACCOUNT,
messageToHash, UnexpectedTsError, AeSdk, Contract, ContractMethodsBase, isAddressValid, Encoding,
@@ -210,7 +210,7 @@ describe('Contract', () => {
await contract.call({ callStatic: true, top: beforeMicroBlockHash });
await contract.call({ callStatic: true, top: beforeKeyBlockHash });
await contract.call({ callStatic: true, top: beforeKeyBlockHeight });
- });
+ }).timeout(timeoutBlock);
it('call contract/deploy with waitMined: false', async () => {
delete identityContract.$options.address;
diff --git a/test/integration/delegation.ts b/test/integration/delegation.ts
index 89f3298a12..3cb9f9afdc 100644
--- a/test/integration/delegation.ts
+++ b/test/integration/delegation.ts
@@ -3,7 +3,7 @@ import { before, describe, it } from 'mocha';
import {
assertNotNull, randomName, ChainTtl, InputNumber,
} from '../utils';
-import { getSdk } from '.';
+import { getSdk, timeoutBlock } from '.';
import {
commitmentHash, decode, encode, Encoded, Encoding,
genSalt, AeSdk, Contract, Oracle, OracleClient, Name,
@@ -123,7 +123,7 @@ contract DelegateTest =
.signedClaim(owner, name, salt, nameFee, decode(delegationSignature));
assertNotNull(result);
result.returnType.should.be.equal('ok');
- });
+ }).timeout(timeoutBlock);
it('updates', async () => {
const pointee: Pointee = { 'AENSv2.OraclePt': [newOwner] };
@@ -197,7 +197,7 @@ contract DelegateTest =
const commitmentId = decode(commitmentHash(n, salt));
await contract.signedPreclaim(owner, commitmentId, allNamesDelSig);
- await aeSdk.awaitHeight(2 + await aeSdk.getHeight());
+ await aeSdk.awaitHeight(1 + await aeSdk.getHeight());
await contract.signedClaim(owner, n, salt, nameFee, allNamesDelSig);
@@ -218,7 +218,7 @@ contract DelegateTest =
.transfer(owner, { onAccount: aeSdk.accounts[newOwner] });
await contract.signedRevoke(owner, n, allNamesDelSig);
- });
+ }).timeout(timeoutBlock);
it('claims without preclaim', async () => {
const n = randomName(30);
diff --git a/test/integration/index.ts b/test/integration/index.ts
index 72a825ccdc..81f9085825 100644
--- a/test/integration/index.ts
+++ b/test/integration/index.ts
@@ -121,3 +121,5 @@ afterEach(async function describeTxError() {
const { status } = await response.json();
err.message += ` (node-provided transaction status: ${status})`;
});
+
+export const timeoutBlock = networkId === 'ae_dev' ? 6_000 : 700_000;
diff --git a/test/integration/oracle.ts b/test/integration/oracle.ts
index b575db1e7e..d17a62c2f0 100644
--- a/test/integration/oracle.ts
+++ b/test/integration/oracle.ts
@@ -1,7 +1,7 @@
import { describe, it, before } from 'mocha';
import { expect } from 'chai';
import { RestError } from '@azure/core-rest-pipeline';
-import { getSdk, networkId } from '.';
+import { getSdk, timeoutBlock } from '.';
import {
AeSdk, decode, encode, Encoding, Encoded, ORACLE_TTL_TYPES, Oracle, OracleClient, LogicError,
} from '../../src';
@@ -156,19 +156,18 @@ describe('Oracle', () => {
expect(query.tx.query).to.be.equal('{"city": "Berlin"}');
});
- const timeout = networkId === 'ae_dev' ? 8000 : 700000;
it('polls for response for query without response', async () => {
const { queryId } = await oracleClient.postQuery('{"city": "Berlin"}', { queryTtlValue: 1 });
await oracleClient.pollForResponse(queryId)
.should.be.rejectedWith(/Giving up at height|error: Query not found/);
- }).timeout(timeout);
+ }).timeout(timeoutBlock);
it('polls for response for query that is already expired without response', async () => {
const { queryId } = await oracleClient.postQuery('{"city": "Berlin"}', { queryTtlValue: 1 });
await aeSdk.awaitHeight(await aeSdk.getHeight() + 2);
await oracleClient.pollForResponse(queryId)
.should.be.rejectedWith(RestError, 'Query not found');
- }).timeout(timeout);
+ }).timeout(timeoutBlock * 2);
it('queries oracle', async () => {
const stopPolling = oracle.pollQueries((query) => {
diff --git a/test/integration/typed-data.ts b/test/integration/typed-data.ts
index c3b065113b..558ac04190 100644
--- a/test/integration/typed-data.ts
+++ b/test/integration/typed-data.ts
@@ -83,7 +83,7 @@ describe('typed data', () => {
+ '\n entrypoint getDomain(): domain =' // kind of EIP-5267
+ '\n { name = Some("Test app"),'
+ '\n version = Some(2),'
- + '\n networkId = Some(Chain.network_id),'
+ + '\n networkId = Some("ae_dev"),' // better `Chain.network_id`, but would complicate testing
+ '\n contractAddress = Some(Address.to_contract(Contract.address)) }'
+ '\n'
+ '\n entrypoint getDomainHash() = Crypto.blake2b(getDomain())'
From 55693e0675f125934e637e012cb4003d88c490f2 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sun, 9 Jun 2024 19:39:41 +1000
Subject: [PATCH 052/149] test(channel): split into three modules
---
test/integration/channel-contracts.ts | 351 +++++++++++++++
test/integration/channel-other.ts | 218 ++++++++++
test/integration/channel-utils.ts | 61 +++
test/integration/channel.ts | 605 +-------------------------
4 files changed, 643 insertions(+), 592 deletions(-)
create mode 100644 test/integration/channel-contracts.ts
create mode 100644 test/integration/channel-other.ts
create mode 100644 test/integration/channel-utils.ts
diff --git a/test/integration/channel-contracts.ts b/test/integration/channel-contracts.ts
new file mode 100644
index 0000000000..af0ccc51ca
--- /dev/null
+++ b/test/integration/channel-contracts.ts
@@ -0,0 +1,351 @@
+import {
+ describe, it, before, after, beforeEach, afterEach,
+} from 'mocha';
+import { expect } from 'chai';
+import * as sinon from 'sinon';
+import { getSdk, networkId } from '.';
+import {
+ buildTxHash, encode, decode, Encoded, Encoding, Tag, AbiVersion, VmVersion, AeSdk, Contract,
+ Channel, buildTx, MemoryAccount,
+} from '../../src';
+import { SignTxWithTag } from '../../src/channel/internal';
+import { assertNotNull } from '../utils';
+import { initializeChannels, recreateAccounts } from './channel-utils';
+
+const contractSourceCode = `
+contract Identity =
+ entrypoint getArg(x : int) : int = x
+`;
+
+describe('Channel contracts', () => {
+ let aeSdk: AeSdk;
+ let initiator: MemoryAccount;
+ let responder: MemoryAccount;
+ let initiatorCh: Channel;
+ let responderCh: Channel;
+ let responderShouldRejectUpdate: number | boolean;
+ let contractAddress: Encoded.ContractAddress;
+ let callerNonce: number;
+ let contract: Contract<{}>;
+ const initiatorSign = async (tx: Encoded.Transaction): Promise => (
+ initiator.signTransaction(tx, { networkId })
+ );
+ const responderSign = async (tx: Encoded.Transaction): Promise => (
+ responder.signTransaction(tx, { networkId })
+ );
+ const responderSignTag = sinon.spy(async (_tag, tx: Encoded.Transaction) => {
+ if (typeof responderShouldRejectUpdate === 'number') {
+ return responderShouldRejectUpdate as unknown as Encoded.Transaction;
+ }
+ if (responderShouldRejectUpdate) {
+ return null as unknown as Encoded.Transaction;
+ }
+ return responderSign(tx);
+ });
+ const initiatorSignedTx = async (): Promise => {
+ const { signedTx } = await initiatorCh.state();
+ assertNotNull(signedTx);
+ return buildTx(signedTx);
+ };
+ const initiatorParams = {
+ role: 'initiator',
+ host: 'localhost',
+ sign: async (_tag: string, tx: Encoded.Transaction) => initiatorSign(tx),
+ } as const;
+ const responderParams = {
+ role: 'responder',
+ sign: responderSignTag,
+ } as const;
+
+ before(async () => {
+ aeSdk = await getSdk();
+ [initiator, responder] = await recreateAccounts(aeSdk);
+ });
+
+ after(() => {
+ initiatorCh.disconnect();
+ responderCh.disconnect();
+ });
+
+ beforeEach(() => {
+ responderShouldRejectUpdate = false;
+ });
+
+ afterEach(() => {
+ responderSignTag.resetHistory();
+ });
+
+ it('can create a contract and accept', async () => {
+ [initiatorCh, responderCh] = await initializeChannels(initiatorParams, responderParams);
+ contract = await Contract.initialize({ ...aeSdk.getContext(), sourceCode: contractSourceCode });
+ const initiatorNewContract = sinon.spy();
+ initiatorCh.on('newContract', initiatorNewContract);
+ const responderNewContract = sinon.spy();
+ responderCh.on('newContract', responderNewContract);
+ const roundBefore = initiatorCh.round();
+ assertNotNull(roundBefore);
+ const callData = contract._calldata.encode('Identity', 'init', []);
+ const result = await initiatorCh.createContract({
+ code: await contract.$compile(),
+ callData,
+ deposit: 1000,
+ vmVersion: VmVersion.Fate,
+ abiVersion: AbiVersion.Fate,
+ }, initiatorSign);
+ result.should.eql({
+ accepted: true, address: result.address, signedTx: await initiatorSignedTx(),
+ });
+ expect(initiatorCh.round()).to.equal(roundBefore + 1);
+ sinon.assert.calledTwice(responderSignTag);
+ sinon.assert.calledWithExactly(
+ responderSignTag,
+ 'update_ack',
+ sinon.match.string,
+ {
+ updates: [{
+ abi_version: AbiVersion.Fate,
+ call_data: callData,
+ code: await contract.$compile(),
+ deposit: 1000,
+ op: 'OffChainNewContract',
+ owner: sinon.match.string,
+ vm_version: VmVersion.Fate,
+ }],
+ },
+ );
+ async function getContractAddresses(channel: Channel): Promise {
+ return Object.keys((await channel.state()).trees.contracts) as Encoded.ContractAddress[];
+ }
+ expect(initiatorNewContract.callCount).to.equal(1);
+ expect(initiatorNewContract.firstCall.args).to.eql([result.address]);
+ expect(responderNewContract.callCount).to.equal(1);
+ expect(responderNewContract.firstCall.args).to.eql([result.address]);
+ expect(await getContractAddresses(initiatorCh)).to.eql([result.address]);
+ expect(await getContractAddresses(responderCh)).to.eql([result.address]);
+ contractAddress = result.address;
+
+ await responderCh.createContract({
+ code: await contract.$compile(),
+ callData: contract._calldata.encode('Identity', 'init', []),
+ deposit: 1e14,
+ vmVersion: VmVersion.Fate,
+ abiVersion: AbiVersion.Fate,
+ }, responderSign);
+ const contracts = await getContractAddresses(initiatorCh);
+ expect(contracts.length).to.equal(2);
+ expect(await getContractAddresses(responderCh)).to.eql(contracts);
+ const secondContract = contracts.filter((c) => c !== result.address);
+ expect(initiatorNewContract.callCount).to.equal(2);
+ expect(initiatorNewContract.secondCall.args).to.eql(secondContract);
+ expect(responderNewContract.callCount).to.equal(2);
+ expect(responderNewContract.secondCall.args).to.eql(secondContract);
+ });
+
+ it('can create a contract and reject', async () => {
+ responderShouldRejectUpdate = true;
+ const roundBefore = initiatorCh.round();
+ const result = await initiatorCh.createContract({
+ code: await contract.$compile(),
+ callData: contract._calldata.encode('Identity', 'init', []),
+ deposit: 1e14,
+ vmVersion: VmVersion.Fate,
+ abiVersion: AbiVersion.Fate,
+ }, initiatorSign);
+ expect(initiatorCh.round()).to.equal(roundBefore);
+ result.should.eql({ ...result, accepted: false });
+ });
+
+ it('can abort contract sign request', async () => {
+ const errorCode = 12345;
+ const result = await initiatorCh.createContract(
+ {
+ code: await contract.$compile(),
+ callData: contract._calldata.encode('Identity', 'init', []),
+ deposit: 1e14,
+ vmVersion: VmVersion.Fate,
+ abiVersion: AbiVersion.Fate,
+ },
+ async () => Promise.resolve(errorCode),
+ );
+ result.should.eql({ accepted: false });
+ });
+
+ it('can abort contract with custom error code', async () => {
+ responderShouldRejectUpdate = 12345;
+ const result = await initiatorCh.createContract({
+ code: await contract.$compile(),
+ callData: contract._calldata.encode('Identity', 'init', []),
+ deposit: 1e14,
+ vmVersion: VmVersion.Fate,
+ abiVersion: AbiVersion.Fate,
+ }, initiatorSign);
+ result.should.eql({
+ accepted: false,
+ errorCode: responderShouldRejectUpdate,
+ errorMessage: 'user-defined',
+ });
+ });
+
+ it('can get balances', async () => {
+ const contractAddr = encode(decode(contractAddress), Encoding.AccountAddress);
+ const addresses = [initiator.address, responder.address, contractAddr];
+ const balances = await initiatorCh.balances(addresses);
+ balances.should.be.an('object');
+ // TODO: use the same type not depending on value after fixing https://github.com/aeternity/aepp-sdk-js/issues/1926
+ balances[initiator.address].should.be.a('number');
+ balances[responder.address].should.be.a('number');
+ balances[contractAddr].should.be.equal(1000);
+ expect(balances).to.eql(await responderCh.balances(addresses));
+ });
+
+ it('can call a contract and accept', async () => {
+ const roundBefore = initiatorCh.round();
+ assertNotNull(roundBefore);
+ const result = await initiatorCh.callContract({
+ amount: 0,
+ callData: contract._calldata.encode('Identity', 'getArg', [42]),
+ contract: contractAddress,
+ abiVersion: AbiVersion.Fate,
+ }, initiatorSign);
+ result.should.eql({ accepted: true, signedTx: await initiatorSignedTx() });
+ const round = initiatorCh.round();
+ assertNotNull(round);
+ expect(round).to.equal(roundBefore + 1);
+ callerNonce = round;
+ });
+
+ it('can call a force progress', async () => {
+ const forceTx = await initiatorCh.forceProgress({
+ amount: 0,
+ callData: contract._calldata.encode('Identity', 'getArg', [42]),
+ contract: contractAddress,
+ abiVersion: AbiVersion.Fate,
+ }, initiatorSign);
+ const hash = buildTxHash(forceTx.tx);
+ const { callInfo } = await aeSdk.api.getTransactionInfoByHash(hash);
+ assertNotNull(callInfo);
+ expect(callInfo.returnType).to.be.equal('ok');
+ });
+
+ it('can call a contract and reject', async () => {
+ responderShouldRejectUpdate = true;
+ const roundBefore = initiatorCh.round();
+ const result = await initiatorCh.callContract({
+ amount: 0,
+ callData: contract._calldata.encode('Identity', 'getArg', [42]),
+ contract: contractAddress,
+ abiVersion: AbiVersion.Fate,
+ }, initiatorSign);
+ expect(initiatorCh.round()).to.equal(roundBefore);
+ result.should.eql({ ...result, accepted: false });
+ });
+
+ it('can abort contract call sign request', async () => {
+ const errorCode = 12345;
+ const result = await initiatorCh.callContract(
+ {
+ amount: 0,
+ callData: contract._calldata.encode('Identity', 'getArg', [42]),
+ contract: contractAddress,
+ abiVersion: AbiVersion.Fate,
+ },
+ async () => Promise.resolve(errorCode),
+ );
+ result.should.eql({ accepted: false });
+ });
+
+ it('can abort contract call with custom error code', async () => {
+ responderShouldRejectUpdate = 12345;
+ const result = await initiatorCh.callContract({
+ amount: 0,
+ callData: contract._calldata.encode('Identity', 'getArg', [42]),
+ contract: contractAddress,
+ abiVersion: AbiVersion.Fate,
+ }, initiatorSign);
+ result.should.eql({
+ accepted: false,
+ errorCode: responderShouldRejectUpdate,
+ errorMessage: 'user-defined',
+ });
+ });
+
+ it('can get contract call', async () => {
+ const result = await initiatorCh.getContractCall({
+ caller: initiator.address,
+ contract: contractAddress,
+ round: callerNonce,
+ });
+ result.should.eql({
+ callerId: initiator.address,
+ callerNonce,
+ contractId: contractAddress,
+ gasPrice: result.gasPrice,
+ gasUsed: result.gasUsed,
+ height: result.height,
+ log: result.log,
+ returnType: 'ok',
+ returnValue: result.returnValue,
+ });
+ expect(result.returnType).to.be.equal('ok');
+ expect(contract._calldata.decode('Identity', 'getArg', result.returnValue).toString()).to.be.equal('42');
+ });
+
+ it('can call a contract using dry-run', async () => {
+ const result = await initiatorCh.callContractStatic({
+ amount: 0,
+ callData: contract._calldata.encode('Identity', 'getArg', [42]),
+ contract: contractAddress,
+ abiVersion: AbiVersion.Fate,
+ });
+ result.should.eql({
+ callerId: initiator.address,
+ callerNonce: result.callerNonce,
+ contractId: contractAddress,
+ gasPrice: result.gasPrice,
+ gasUsed: result.gasUsed,
+ height: result.height,
+ log: result.log,
+ returnType: 'ok',
+ returnValue: result.returnValue,
+ });
+ expect(result.returnType).to.be.equal('ok');
+ expect(contract._calldata.decode('Identity', 'getArg', result.returnValue).toString()).to.be.equal('42');
+ });
+
+ it('can clean contract calls', async () => {
+ await initiatorCh.cleanContractCalls();
+ await initiatorCh.getContractCall({
+ caller: initiator.address,
+ contract: contractAddress,
+ round: callerNonce,
+ }).should.eventually.be.rejected;
+ });
+
+ it('can get contract state', async () => {
+ const result = await initiatorCh.getContractState(contractAddress);
+ result.should.eql({
+ contract: {
+ abiVersion: AbiVersion.Fate,
+ active: true,
+ deposit: 1000,
+ id: contractAddress,
+ ownerId: initiator.address,
+ referrerIds: [],
+ vmVersion: VmVersion.Fate,
+ },
+ contractState: result.contractState,
+ });
+ // TODO: contractState deserialization
+ });
+
+ it.skip('can post snapshot solo transaction', async () => {
+ const snapshotSoloTx = await aeSdk.buildTx({
+ tag: Tag.ChannelSnapshotSoloTx,
+ channelId: initiatorCh.id(),
+ fromId: initiator.address,
+ payload: await initiatorSignedTx(),
+ });
+ // TODO: fix this, error: invalid_at_protocol
+ await aeSdk.sendTransaction(snapshotSoloTx, { onAccount: initiator });
+ });
+});
diff --git a/test/integration/channel-other.ts b/test/integration/channel-other.ts
new file mode 100644
index 0000000000..777b648766
--- /dev/null
+++ b/test/integration/channel-other.ts
@@ -0,0 +1,218 @@
+import {
+ describe, it, before, beforeEach, afterEach,
+} from 'mocha';
+import { expect } from 'chai';
+import BigNumber from 'bignumber.js';
+import { getSdk, networkId, timeoutBlock } from '.';
+import {
+ unpackTx, Encoded, Tag, AeSdk, Channel, MemoryAccount,
+} from '../../src';
+import { appendSignature } from '../../src/channel/handlers';
+import { assertNotNull } from '../utils';
+import {
+ waitForChannel, sharedParams, initializeChannels, recreateAccounts,
+} from './channel-utils';
+
+describe('Channel other', () => {
+ let aeSdk: AeSdk;
+ let initiator: MemoryAccount;
+ let responder: MemoryAccount;
+ let initiatorCh: Channel;
+ let responderCh: Channel;
+ const initiatorSign = async (tx: Encoded.Transaction): Promise => (
+ initiator.signTransaction(tx, { networkId })
+ );
+ const responderSign = async (tx: Encoded.Transaction): Promise => (
+ responder.signTransaction(tx, { networkId })
+ );
+ const initiatorParams = {
+ role: 'initiator',
+ host: 'localhost',
+ sign: async (_tag: string, tx: Encoded.Transaction) => initiatorSign(tx),
+ } as const;
+ const responderParams = {
+ role: 'responder',
+ sign: async (_tag: string, tx: Encoded.Transaction) => responderSign(tx),
+ } as const;
+
+ async function getBalances(): Promise<[string, string]> {
+ const [bi, br] = await Promise.all(
+ [initiator.address, responder.address].map(async (a) => aeSdk.getBalance(a)),
+ );
+ return [bi, br];
+ }
+
+ before(async () => {
+ aeSdk = await getSdk(3);
+ await Promise.all(
+ aeSdk.addresses().slice(1)
+ .map(async (onAccount) => aeSdk.transferFunds(1, aeSdk.address, { onAccount })),
+ );
+ });
+
+ beforeEach(async () => {
+ [initiator, responder] = await recreateAccounts(aeSdk);
+ [initiatorCh, responderCh] = await initializeChannels(initiatorParams, responderParams);
+ });
+
+ afterEach(() => {
+ initiatorCh.disconnect();
+ responderCh.disconnect();
+ });
+
+ it('can solo close a channel', async () => {
+ const { signedTx } = await initiatorCh.update(
+ initiator.address,
+ responder.address,
+ 1e14,
+ initiatorSign,
+ );
+ assertNotNull(signedTx);
+ const poi = await initiatorCh.poi({
+ accounts: [initiator.address, responder.address],
+ });
+ const balances = await initiatorCh.balances([initiator.address, responder.address]);
+ const [initiatorBalanceBeforeClose, responderBalanceBeforeClose] = await getBalances();
+ const closeSoloTx = await aeSdk.buildTx({
+ tag: Tag.ChannelCloseSoloTx,
+ channelId: await initiatorCh.id(),
+ fromId: initiator.address,
+ poi,
+ payload: signedTx,
+ });
+ const closeSoloTxFee = unpackTx(closeSoloTx, Tag.ChannelCloseSoloTx).fee;
+ await aeSdk.sendTransaction(closeSoloTx, { onAccount: initiator });
+
+ const settleTx = await aeSdk.buildTx({
+ tag: Tag.ChannelSettleTx,
+ channelId: await initiatorCh.id(),
+ fromId: initiator.address,
+ initiatorAmountFinal: balances[initiator.address],
+ responderAmountFinal: balances[responder.address],
+ });
+ const settleTxFee = unpackTx(settleTx, Tag.ChannelSettleTx).fee;
+ await aeSdk.sendTransaction(settleTx, { onAccount: initiator });
+
+ const [initiatorBalanceAfterClose, responderBalanceAfterClose] = await getBalances();
+ new BigNumber(initiatorBalanceAfterClose)
+ .minus(initiatorBalanceBeforeClose)
+ .plus(closeSoloTxFee)
+ .plus(settleTxFee)
+ .isEqualTo(balances[initiator.address])
+ .should.be.equal(true);
+ new BigNumber(responderBalanceAfterClose)
+ .minus(responderBalanceBeforeClose)
+ .isEqualTo(balances[responder.address])
+ .should.be.equal(true);
+ }).timeout(timeoutBlock);
+
+ it('can dispute via slash tx', async () => {
+ const [initiatorBalanceBeforeClose, responderBalanceBeforeClose] = await getBalances();
+ const oldUpdate = await initiatorCh
+ .update(initiator.address, responder.address, 100, initiatorSign);
+ const oldPoi = await initiatorCh.poi({
+ accounts: [initiator.address, responder.address],
+ });
+ const recentUpdate = await initiatorCh
+ .update(initiator.address, responder.address, 100, initiatorSign);
+ const recentPoi = await responderCh.poi({
+ accounts: [initiator.address, responder.address],
+ });
+ const recentBalances = await responderCh.balances([initiator.address, responder.address]);
+ assertNotNull(oldUpdate.signedTx);
+ const closeSoloTx = await aeSdk.buildTx({
+ tag: Tag.ChannelCloseSoloTx,
+ channelId: initiatorCh.id(),
+ fromId: initiator.address,
+ poi: oldPoi,
+ payload: oldUpdate.signedTx,
+ });
+ const closeSoloTxFee = unpackTx(closeSoloTx, Tag.ChannelCloseSoloTx).fee;
+ await aeSdk.sendTransaction(closeSoloTx, { onAccount: initiator });
+
+ assertNotNull(recentUpdate.signedTx);
+ const slashTx = await aeSdk.buildTx({
+ tag: Tag.ChannelSlashTx,
+ channelId: responderCh.id(),
+ fromId: responder.address,
+ poi: recentPoi,
+ payload: recentUpdate.signedTx,
+ });
+ const slashTxFee = unpackTx(slashTx, Tag.ChannelSlashTx).fee;
+ await aeSdk.sendTransaction(slashTx, { onAccount: responder });
+ const settleTx = await aeSdk.buildTx({
+ tag: Tag.ChannelSettleTx,
+ channelId: responderCh.id(),
+ fromId: responder.address,
+ initiatorAmountFinal: recentBalances[initiator.address],
+ responderAmountFinal: recentBalances[responder.address],
+ });
+ const settleTxFee = unpackTx(settleTx, Tag.ChannelSettleTx).fee;
+ await aeSdk.sendTransaction(settleTx, { onAccount: responder });
+
+ const [initiatorBalanceAfterClose, responderBalanceAfterClose] = await getBalances();
+ new BigNumber(initiatorBalanceAfterClose)
+ .minus(initiatorBalanceBeforeClose)
+ .plus(closeSoloTxFee)
+ .isEqualTo(recentBalances[initiator.address])
+ .should.be.equal(true);
+ new BigNumber(responderBalanceAfterClose)
+ .minus(responderBalanceBeforeClose)
+ .plus(slashTxFee)
+ .plus(settleTxFee)
+ .isEqualTo(recentBalances[responder.address])
+ .should.be.equal(true);
+ }).timeout(timeoutBlock);
+
+ // https://github.com/aeternity/protocol/blob/d634e7a3f3110657900759b183d0734e61e5803a/node/api/channels_api_usage.md#reestablish
+ it('can reconnect', async () => {
+ expect(await initiatorCh.round()).to.be.equal(1);
+ const result = await initiatorCh.update(
+ initiator.address,
+ responder.address,
+ 100,
+ initiatorSign,
+ );
+ expect(result.accepted).to.equal(true);
+ const channelId = await initiatorCh.id();
+ const fsmId = initiatorCh.fsmId();
+ initiatorCh.disconnect();
+ const ch = await Channel.initialize({
+ ...sharedParams,
+ ...initiatorParams,
+ existingChannelId: channelId,
+ existingFsmId: fsmId,
+ });
+ await waitForChannel(ch);
+ expect(ch.fsmId()).to.be.equal(fsmId);
+ expect(await ch.round()).to.be.equal(2);
+ const state = await ch.state();
+ ch.disconnect();
+ assertNotNull(state.signedTx);
+ expect(state.signedTx.encodedTx.tag).to.be.equal(Tag.ChannelOffChainTx);
+ });
+
+ it('can post backchannel update', async () => {
+ expect(await responderCh.round()).to.be.equal(1);
+ initiatorCh.disconnect();
+ const { accepted } = await responderCh.update(
+ initiator.address,
+ responder.address,
+ 100,
+ responderSign,
+ );
+ expect(accepted).to.equal(false);
+ expect(await responderCh.round()).to.be.equal(1);
+ const result = await responderCh.update(
+ initiator.address,
+ responder.address,
+ 100,
+ async (transaction) => (
+ appendSignature(await responderSign(transaction), initiatorSign)
+ ),
+ );
+ result.accepted.should.equal(true);
+ expect(await responderCh.round()).to.be.equal(2);
+ expect(result.signedTx).to.be.a('string');
+ });
+});
diff --git a/test/integration/channel-utils.ts b/test/integration/channel-utils.ts
new file mode 100644
index 0000000000..ae64da29de
--- /dev/null
+++ b/test/integration/channel-utils.ts
@@ -0,0 +1,61 @@
+import { channelUrl } from '.';
+import {
+ Encoded, Channel, MemoryAccount, AeSdk,
+} from '../../src';
+import { ChannelOptions, SignTxWithTag } from '../../src/channel/internal';
+
+export async function waitForChannel(channel: Channel): Promise {
+ return new Promise((resolve, reject) => {
+ channel.on('statusChanged', (status: string) => {
+ switch (status) {
+ case 'open':
+ resolve();
+ break;
+ case 'disconnected':
+ reject(new Error('Unexpected SC status: disconnected'));
+ break;
+ default:
+ }
+ });
+ });
+}
+
+export const sharedParams = {
+ url: channelUrl,
+ pushAmount: 1e13,
+ initiatorAmount: 5e14,
+ responderAmount: 5e14,
+ channelReserve: 0,
+ port: 3114,
+ lockPeriod: 1,
+ initiatorId: 'ak_' as Encoded.AccountAddress,
+ responderId: 'ak_' as Encoded.AccountAddress,
+ minimumDepth: 0,
+ minimumDepthStrategy: 'plain' as const,
+};
+
+export async function initializeChannels(
+ initiatorParams: { role: 'initiator'; host: string; sign: SignTxWithTag } & Partial,
+ responderParams: { role: 'responder'; sign: SignTxWithTag } & Partial,
+): Promise<[Channel, Channel]> {
+ const initiatorCh = await Channel.initialize({
+ ...sharedParams,
+ ...initiatorParams,
+ });
+ const responderCh = await Channel.initialize({
+ ...sharedParams,
+ ...responderParams,
+ });
+ await Promise.all([waitForChannel(initiatorCh), waitForChannel(responderCh)]);
+ return [initiatorCh, responderCh];
+}
+
+export async function recreateAccounts(aeSdk: AeSdk): Promise<[MemoryAccount, MemoryAccount]> {
+ const initiator = MemoryAccount.generate();
+ const responder = MemoryAccount.generate();
+ await aeSdk.spend(3e15, initiator.address);
+ await aeSdk.spend(3e15, responder.address);
+ sharedParams.initiatorId = initiator.address;
+ sharedParams.responderId = responder.address;
+ return [initiator, responder];
+}
diff --git a/test/integration/channel.ts b/test/integration/channel.ts
index 85937fdf31..757d55f530 100644
--- a/test/integration/channel.ts
+++ b/test/integration/channel.ts
@@ -3,52 +3,18 @@ import {
} from 'mocha';
import { expect } from 'chai';
import * as sinon from 'sinon';
-import BigNumber from 'bignumber.js';
+import { getSdk, networkId } from '.';
import {
- getSdk, networkId, channelUrl, timeoutBlock,
-} from '.';
-import {
- unpackTx,
- buildTxHash,
- encode, decode, Encoded, Encoding,
- Tag,
- AbiVersion,
- VmVersion,
- IllegalArgumentError,
- InsufficientBalanceError,
- ChannelConnectionError,
- ChannelIncomingMessageError,
- UnknownChannelStateError,
- AeSdk,
- Contract,
- Channel,
- buildTx,
- MemoryAccount,
+ unpackTx, Encoded, Tag,
+ IllegalArgumentError, InsufficientBalanceError, ChannelConnectionError,
+ ChannelIncomingMessageError, UnknownChannelStateError,
+ AeSdk, Channel, buildTx, MemoryAccount,
} from '../../src';
import { notify, SignTx, SignTxWithTag } from '../../src/channel/internal';
-import { appendSignature } from '../../src/channel/handlers';
import { assertNotNull, ensureEqual, ensureInstanceOf } from '../utils';
-
-const contractSourceCode = `
-contract Identity =
- entrypoint getArg(x : int) : int = x
-`;
-
-async function waitForChannel(channel: Channel): Promise {
- return new Promise((resolve, reject) => {
- channel.on('statusChanged', (status: string) => {
- switch (status) {
- case 'open':
- resolve();
- break;
- case 'disconnected':
- reject(new Error('Unexpected SC status: disconnected'));
- break;
- default:
- }
- });
- });
-}
+import {
+ waitForChannel, sharedParams, initializeChannels, recreateAccounts,
+} from './channel-utils';
describe('Channel', () => {
let aeSdk: AeSdk;
@@ -57,9 +23,6 @@ describe('Channel', () => {
let initiatorCh: Channel;
let responderCh: Channel;
let responderShouldRejectUpdate: number | boolean;
- let contractAddress: Encoded.ContractAddress;
- let callerNonce: number;
- let contract: Contract<{}>;
const initiatorSign = sinon.spy(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (tx: Encoded.Transaction, o?: Parameters[1]): Promise => (
@@ -89,19 +52,6 @@ describe('Channel', () => {
assertNotNull(signedTx);
return buildTx(signedTx);
};
- const sharedParams = {
- url: channelUrl,
- pushAmount: 1e13,
- initiatorAmount: 5e14,
- responderAmount: 5e14,
- channelReserve: 0,
- port: 3114,
- lockPeriod: 1,
- initiatorId: 'ak_' as Encoded.AccountAddress,
- responderId: 'ak_' as Encoded.AccountAddress,
- minimumDepth: 0,
- minimumDepthStrategy: 'plain' as const,
- };
const initiatorParams = {
role: 'initiator',
host: 'localhost',
@@ -112,25 +62,9 @@ describe('Channel', () => {
sign: responderSignTag,
} as const;
- async function recreateAccounts(): Promise {
- initiator = MemoryAccount.generate();
- responder = MemoryAccount.generate();
- await aeSdk.spend(3e15, initiator.address);
- await aeSdk.spend(3e15, responder.address);
- sharedParams.initiatorId = initiator.address;
- sharedParams.responderId = responder.address;
- }
-
- async function getBalances(): Promise<[string, string]> {
- const [bi, br] = await Promise.all(
- [initiator.address, responder.address].map(async (a) => aeSdk.getBalance(a)),
- );
- return [bi, br];
- }
-
before(async () => {
aeSdk = await getSdk();
- await recreateAccounts();
+ [initiator, responder] = await recreateAccounts(aeSdk);
});
after(() => {
@@ -150,17 +84,8 @@ describe('Channel', () => {
});
it('can open a channel', async () => {
- initiatorCh = await Channel.initialize({
- ...sharedParams,
- ...initiatorParams,
- });
- const initiatorChOpenPromise = waitForChannel(initiatorCh);
- responderCh = await Channel.initialize({
- ...sharedParams,
- ...responderParams,
- });
- const responderChOpenPromise = waitForChannel(responderCh);
- await Promise.all([initiatorChOpenPromise, responderChOpenPromise]);
+ [initiatorCh, responderCh] = await initializeChannels(initiatorParams, responderParams);
+
expect(initiatorCh.round()).to.equal(1);
expect(responderCh.round()).to.equal(1);
@@ -652,15 +577,7 @@ describe('Channel', () => {
it('can leave a channel', async () => {
initiatorCh.disconnect();
responderCh.disconnect();
- initiatorCh = await Channel.initialize({
- ...sharedParams,
- ...initiatorParams,
- });
- responderCh = await Channel.initialize({
- ...sharedParams,
- ...responderParams,
- });
- await Promise.all([waitForChannel(initiatorCh), waitForChannel(responderCh)]);
+ [initiatorCh, responderCh] = await initializeChannels(initiatorParams, responderParams);
initiatorCh.round(); // existingChannelRound
const result = await initiatorCh.leave();
expect(result.channelId).to.satisfy((t: string) => t.startsWith('ch_'));
@@ -684,507 +601,11 @@ describe('Channel', () => {
sinon.assert.notCalled(responderSignTag);
});
- it('can solo close a channel', async () => {
- initiatorCh.disconnect();
- responderCh.disconnect();
- await recreateAccounts();
- initiatorCh = await Channel.initialize({
- ...sharedParams,
- ...initiatorParams,
- });
- responderCh = await Channel.initialize({
- ...sharedParams,
- ...responderParams,
- });
- await Promise.all([waitForChannel(initiatorCh), waitForChannel(responderCh)]);
-
- const { signedTx } = await initiatorCh.update(
- initiator.address,
- responder.address,
- 1e14,
- initiatorSign,
- );
- assertNotNull(signedTx);
- const poi = await initiatorCh.poi({
- accounts: [initiator.address, responder.address],
- });
- const balances = await initiatorCh.balances([initiator.address, responder.address]);
- const [initiatorBalanceBeforeClose, responderBalanceBeforeClose] = await getBalances();
- const closeSoloTx = await aeSdk.buildTx({
- tag: Tag.ChannelCloseSoloTx,
- channelId: await initiatorCh.id(),
- fromId: initiator.address,
- poi,
- payload: signedTx,
- });
- const closeSoloTxFee = unpackTx(closeSoloTx, Tag.ChannelCloseSoloTx).fee;
- await aeSdk.sendTransaction(closeSoloTx, { onAccount: initiator });
-
- const settleTx = await aeSdk.buildTx({
- tag: Tag.ChannelSettleTx,
- channelId: await initiatorCh.id(),
- fromId: initiator.address,
- initiatorAmountFinal: balances[initiator.address],
- responderAmountFinal: balances[responder.address],
- });
- const settleTxFee = unpackTx(settleTx, Tag.ChannelSettleTx).fee;
- await aeSdk.sendTransaction(settleTx, { onAccount: initiator });
-
- const [initiatorBalanceAfterClose, responderBalanceAfterClose] = await getBalances();
- new BigNumber(initiatorBalanceAfterClose)
- .minus(initiatorBalanceBeforeClose)
- .plus(closeSoloTxFee)
- .plus(settleTxFee)
- .isEqualTo(balances[initiator.address])
- .should.be.equal(true);
- new BigNumber(responderBalanceAfterClose)
- .minus(responderBalanceBeforeClose)
- .isEqualTo(balances[responder.address])
- .should.be.equal(true);
- }).timeout(timeoutBlock);
-
- it('can dispute via slash tx', async () => {
- initiatorCh.disconnect();
- responderCh.disconnect();
- initiatorCh = await Channel.initialize({
- ...sharedParams,
- ...initiatorParams,
- lockPeriod: 2,
- });
- responderCh = await Channel.initialize({
- ...sharedParams,
- ...responderParams,
- lockPeriod: 2,
- });
- await Promise.all([waitForChannel(initiatorCh), waitForChannel(responderCh)]);
- const [initiatorBalanceBeforeClose, responderBalanceBeforeClose] = await getBalances();
- const oldUpdate = await initiatorCh
- .update(initiator.address, responder.address, 100, initiatorSign);
- const oldPoi = await initiatorCh.poi({
- accounts: [initiator.address, responder.address],
- });
- const recentUpdate = await initiatorCh
- .update(initiator.address, responder.address, 100, initiatorSign);
- const recentPoi = await responderCh.poi({
- accounts: [initiator.address, responder.address],
- });
- const recentBalances = await responderCh.balances([initiator.address, responder.address]);
- assertNotNull(oldUpdate.signedTx);
- const closeSoloTx = await aeSdk.buildTx({
- tag: Tag.ChannelCloseSoloTx,
- channelId: initiatorCh.id(),
- fromId: initiator.address,
- poi: oldPoi,
- payload: oldUpdate.signedTx,
- });
- const closeSoloTxFee = unpackTx(closeSoloTx, Tag.ChannelCloseSoloTx).fee;
- await aeSdk.sendTransaction(closeSoloTx, { onAccount: initiator });
-
- assertNotNull(recentUpdate.signedTx);
- const slashTx = await aeSdk.buildTx({
- tag: Tag.ChannelSlashTx,
- channelId: responderCh.id(),
- fromId: responder.address,
- poi: recentPoi,
- payload: recentUpdate.signedTx,
- });
- const slashTxFee = unpackTx(slashTx, Tag.ChannelSlashTx).fee;
- await aeSdk.sendTransaction(slashTx, { onAccount: responder });
- const settleTx = await aeSdk.buildTx({
- tag: Tag.ChannelSettleTx,
- channelId: responderCh.id(),
- fromId: responder.address,
- initiatorAmountFinal: recentBalances[initiator.address],
- responderAmountFinal: recentBalances[responder.address],
- });
- const settleTxFee = unpackTx(settleTx, Tag.ChannelSettleTx).fee;
- await aeSdk.sendTransaction(settleTx, { onAccount: responder });
-
- const [initiatorBalanceAfterClose, responderBalanceAfterClose] = await getBalances();
- new BigNumber(initiatorBalanceAfterClose)
- .minus(initiatorBalanceBeforeClose)
- .plus(closeSoloTxFee)
- .isEqualTo(recentBalances[initiator.address])
- .should.be.equal(true);
- new BigNumber(responderBalanceAfterClose)
- .minus(responderBalanceBeforeClose)
- .plus(slashTxFee)
- .plus(settleTxFee)
- .isEqualTo(recentBalances[responder.address])
- .should.be.equal(true);
- }).timeout(timeoutBlock);
-
- it('can create a contract and accept', async () => {
- initiatorCh.disconnect();
- responderCh.disconnect();
- initiatorCh = await Channel.initialize({
- ...sharedParams,
- ...initiatorParams,
- });
- responderCh = await Channel.initialize({
- ...sharedParams,
- ...responderParams,
- });
- await Promise.all([waitForChannel(initiatorCh), waitForChannel(responderCh)]);
- contract = await Contract.initialize({ ...aeSdk.getContext(), sourceCode: contractSourceCode });
- const initiatorNewContract = sinon.spy();
- initiatorCh.on('newContract', initiatorNewContract);
- const responderNewContract = sinon.spy();
- responderCh.on('newContract', responderNewContract);
- const roundBefore = initiatorCh.round();
- assertNotNull(roundBefore);
- const callData = contract._calldata.encode('Identity', 'init', []);
- const result = await initiatorCh.createContract({
- code: await contract.$compile(),
- callData,
- deposit: 1000,
- vmVersion: VmVersion.Fate,
- abiVersion: AbiVersion.Fate,
- }, initiatorSign);
- result.should.eql({
- accepted: true, address: result.address, signedTx: await initiatorSignedTx(),
- });
- expect(initiatorCh.round()).to.equal(roundBefore + 1);
- sinon.assert.calledTwice(responderSignTag);
- sinon.assert.calledWithExactly(
- responderSignTag,
- 'update_ack',
- sinon.match.string,
- {
- updates: [{
- abi_version: AbiVersion.Fate,
- call_data: callData,
- code: await contract.$compile(),
- deposit: 1000,
- op: 'OffChainNewContract',
- owner: sinon.match.string,
- vm_version: VmVersion.Fate,
- }],
- },
- );
- async function getContractAddresses(channel: Channel): Promise {
- return Object.keys((await channel.state()).trees.contracts) as Encoded.ContractAddress[];
- }
- expect(initiatorNewContract.callCount).to.equal(1);
- expect(initiatorNewContract.firstCall.args).to.eql([result.address]);
- expect(responderNewContract.callCount).to.equal(1);
- expect(responderNewContract.firstCall.args).to.eql([result.address]);
- expect(await getContractAddresses(initiatorCh)).to.eql([result.address]);
- expect(await getContractAddresses(responderCh)).to.eql([result.address]);
- contractAddress = result.address;
-
- await responderCh.createContract({
- code: await contract.$compile(),
- callData: contract._calldata.encode('Identity', 'init', []),
- deposit: 1e14,
- vmVersion: VmVersion.Fate,
- abiVersion: AbiVersion.Fate,
- }, responderSign);
- const contracts = await getContractAddresses(initiatorCh);
- expect(contracts.length).to.equal(2);
- expect(await getContractAddresses(responderCh)).to.eql(contracts);
- const secondContract = contracts.filter((c) => c !== result.address);
- expect(initiatorNewContract.callCount).to.equal(2);
- expect(initiatorNewContract.secondCall.args).to.eql(secondContract);
- expect(responderNewContract.callCount).to.equal(2);
- expect(responderNewContract.secondCall.args).to.eql(secondContract);
- });
-
- it('can create a contract and reject', async () => {
- responderShouldRejectUpdate = true;
- const roundBefore = initiatorCh.round();
- const result = await initiatorCh.createContract({
- code: await contract.$compile(),
- callData: contract._calldata.encode('Identity', 'init', []),
- deposit: 1e14,
- vmVersion: VmVersion.Fate,
- abiVersion: AbiVersion.Fate,
- }, initiatorSign);
- expect(initiatorCh.round()).to.equal(roundBefore);
- result.should.eql({ ...result, accepted: false });
- });
-
- it('can abort contract sign request', async () => {
- const errorCode = 12345;
- const result = await initiatorCh.createContract(
- {
- code: await contract.$compile(),
- callData: contract._calldata.encode('Identity', 'init', []),
- deposit: 1e14,
- vmVersion: VmVersion.Fate,
- abiVersion: AbiVersion.Fate,
- },
- async () => Promise.resolve(errorCode),
- );
- result.should.eql({ accepted: false });
- });
-
- it('can abort contract with custom error code', async () => {
- responderShouldRejectUpdate = 12345;
- const result = await initiatorCh.createContract({
- code: await contract.$compile(),
- callData: contract._calldata.encode('Identity', 'init', []),
- deposit: 1e14,
- vmVersion: VmVersion.Fate,
- abiVersion: AbiVersion.Fate,
- }, initiatorSign);
- result.should.eql({
- accepted: false,
- errorCode: responderShouldRejectUpdate,
- errorMessage: 'user-defined',
- });
- });
-
- it('can get balances', async () => {
- const contractAddr = encode(decode(contractAddress), Encoding.AccountAddress);
- const addresses = [initiator.address, responder.address, contractAddr];
- const balances = await initiatorCh.balances(addresses);
- balances.should.be.an('object');
- // TODO: use the same type not depending on value after fixing https://github.com/aeternity/aepp-sdk-js/issues/1926
- balances[initiator.address].should.be.a('number');
- balances[responder.address].should.be.a('number');
- balances[contractAddr].should.be.equal(1000);
- expect(balances).to.eql(await responderCh.balances(addresses));
- });
-
- it('can call a contract and accept', async () => {
- const roundBefore = initiatorCh.round();
- assertNotNull(roundBefore);
- const result = await initiatorCh.callContract({
- amount: 0,
- callData: contract._calldata.encode('Identity', 'getArg', [42]),
- contract: contractAddress,
- abiVersion: AbiVersion.Fate,
- }, initiatorSign);
- result.should.eql({ accepted: true, signedTx: await initiatorSignedTx() });
- const round = initiatorCh.round();
- assertNotNull(round);
- expect(round).to.equal(roundBefore + 1);
- callerNonce = round;
- });
-
- it('can call a force progress', async () => {
- const forceTx = await initiatorCh.forceProgress({
- amount: 0,
- callData: contract._calldata.encode('Identity', 'getArg', [42]),
- contract: contractAddress,
- abiVersion: AbiVersion.Fate,
- }, initiatorSign);
- const hash = buildTxHash(forceTx.tx);
- const { callInfo } = await aeSdk.api.getTransactionInfoByHash(hash);
- assertNotNull(callInfo);
- expect(callInfo.returnType).to.be.equal('ok');
- });
-
- it('can call a contract and reject', async () => {
- responderShouldRejectUpdate = true;
- const roundBefore = initiatorCh.round();
- const result = await initiatorCh.callContract({
- amount: 0,
- callData: contract._calldata.encode('Identity', 'getArg', [42]),
- contract: contractAddress,
- abiVersion: AbiVersion.Fate,
- }, initiatorSign);
- expect(initiatorCh.round()).to.equal(roundBefore);
- result.should.eql({ ...result, accepted: false });
- });
-
- it('can abort contract call sign request', async () => {
- const errorCode = 12345;
- const result = await initiatorCh.callContract(
- {
- amount: 0,
- callData: contract._calldata.encode('Identity', 'getArg', [42]),
- contract: contractAddress,
- abiVersion: AbiVersion.Fate,
- },
- async () => Promise.resolve(errorCode),
- );
- result.should.eql({ accepted: false });
- });
-
- it('can abort contract call with custom error code', async () => {
- responderShouldRejectUpdate = 12345;
- const result = await initiatorCh.callContract({
- amount: 0,
- callData: contract._calldata.encode('Identity', 'getArg', [42]),
- contract: contractAddress,
- abiVersion: AbiVersion.Fate,
- }, initiatorSign);
- result.should.eql({
- accepted: false,
- errorCode: responderShouldRejectUpdate,
- errorMessage: 'user-defined',
- });
- });
-
- it('can get contract call', async () => {
- const result = await initiatorCh.getContractCall({
- caller: initiator.address,
- contract: contractAddress,
- round: callerNonce,
- });
- result.should.eql({
- callerId: initiator.address,
- callerNonce,
- contractId: contractAddress,
- gasPrice: result.gasPrice,
- gasUsed: result.gasUsed,
- height: result.height,
- log: result.log,
- returnType: 'ok',
- returnValue: result.returnValue,
- });
- expect(result.returnType).to.be.equal('ok');
- expect(contract._calldata.decode('Identity', 'getArg', result.returnValue).toString()).to.be.equal('42');
- });
-
- it('can call a contract using dry-run', async () => {
- const result = await initiatorCh.callContractStatic({
- amount: 0,
- callData: contract._calldata.encode('Identity', 'getArg', [42]),
- contract: contractAddress,
- abiVersion: AbiVersion.Fate,
- });
- result.should.eql({
- callerId: initiator.address,
- callerNonce: result.callerNonce,
- contractId: contractAddress,
- gasPrice: result.gasPrice,
- gasUsed: result.gasUsed,
- height: result.height,
- log: result.log,
- returnType: 'ok',
- returnValue: result.returnValue,
- });
- expect(result.returnType).to.be.equal('ok');
- expect(contract._calldata.decode('Identity', 'getArg', result.returnValue).toString()).to.be.equal('42');
- });
-
- it('can clean contract calls', async () => {
- await initiatorCh.cleanContractCalls();
- await initiatorCh.getContractCall({
- caller: initiator.address,
- contract: contractAddress,
- round: callerNonce,
- }).should.eventually.be.rejected;
- });
-
- it('can get contract state', async () => {
- const result = await initiatorCh.getContractState(contractAddress);
- result.should.eql({
- contract: {
- abiVersion: AbiVersion.Fate,
- active: true,
- deposit: 1000,
- id: contractAddress,
- ownerId: initiator.address,
- referrerIds: [],
- vmVersion: VmVersion.Fate,
- },
- contractState: result.contractState,
- });
- // TODO: contractState deserialization
- });
-
- it.skip('can post snapshot solo transaction', async () => {
- const snapshotSoloTx = await aeSdk.buildTx({
- tag: Tag.ChannelSnapshotSoloTx,
- channelId: initiatorCh.id(),
- fromId: initiator.address,
- payload: await initiatorSignedTx(),
- });
- // TODO: fix this, error: invalid_at_protocol
- await aeSdk.sendTransaction(snapshotSoloTx, { onAccount: initiator });
- });
-
- // https://github.com/aeternity/protocol/blob/d634e7a3f3110657900759b183d0734e61e5803a/node/api/channels_api_usage.md#reestablish
- it('can reconnect', async () => {
- initiatorCh.disconnect();
- responderCh.disconnect();
- initiatorCh = await Channel.initialize({
- ...sharedParams,
- ...initiatorParams,
- });
- responderCh = await Channel.initialize({
- ...sharedParams,
- ...responderParams,
- });
- await Promise.all([waitForChannel(initiatorCh), waitForChannel(responderCh)]);
- expect(await initiatorCh.round()).to.be.equal(1);
- const result = await initiatorCh.update(
- initiator.address,
- responder.address,
- 100,
- initiatorSign,
- );
- expect(result.accepted).to.equal(true);
- const channelId = await initiatorCh.id();
- const fsmId = initiatorCh.fsmId();
- initiatorCh.disconnect();
- const ch = await Channel.initialize({
- ...sharedParams,
- ...initiatorParams,
- existingChannelId: channelId,
- existingFsmId: fsmId,
- });
- await waitForChannel(ch);
- expect(ch.fsmId()).to.be.equal(fsmId);
- expect(await ch.round()).to.be.equal(2);
- const state = await ch.state();
- ch.disconnect();
- assertNotNull(state.signedTx);
- expect(state.signedTx.encodedTx.tag).to.be.equal(Tag.ChannelOffChainTx);
- });
-
- it('can post backchannel update', async () => {
- initiatorCh.disconnect();
- responderCh.disconnect();
- initiatorCh = await Channel.initialize({
- ...sharedParams,
- ...initiatorParams,
- });
- responderCh = await Channel.initialize({
- ...sharedParams,
- ...responderParams,
- });
- await Promise.all([waitForChannel(initiatorCh), waitForChannel(responderCh)]);
- expect(await responderCh.round()).to.be.equal(1);
- initiatorCh.disconnect();
- const { accepted } = await responderCh.update(
- initiator.address,
- responder.address,
- 100,
- responderSign,
- );
- expect(accepted).to.equal(false);
- expect(await responderCh.round()).to.be.equal(1);
- const result = await responderCh.update(
- initiator.address,
- responder.address,
- 100,
- async (transaction) => (
- appendSignature(await responderSign(transaction), initiatorSign)
- ),
- );
- result.accepted.should.equal(true);
- expect(await responderCh.round()).to.be.equal(2);
- expect(result.signedTx).to.be.a('string');
- });
-
describe('throws errors', () => {
before(async () => {
initiatorCh.disconnect();
responderCh.disconnect();
- initiatorCh = await Channel.initialize({
- ...sharedParams,
- ...initiatorParams,
- });
- responderCh = await Channel.initialize({
- ...sharedParams,
- ...responderParams,
- });
- await Promise.all([waitForChannel(initiatorCh), waitForChannel(responderCh)]);
+ [initiatorCh, responderCh] = await initializeChannels(initiatorParams, responderParams);
});
after(() => {
From 329de9e8f0b824cea89aaf016a7358223b82b061 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Tue, 11 Jun 2024 14:33:45 +1000
Subject: [PATCH 053/149] fix(aens): validate minus chars in name as node does
---
src/tx/builder/helpers.ts | 9 +++++++++
test/unit/aens.ts | 12 ++++++++++++
2 files changed, 21 insertions(+)
diff --git a/src/tx/builder/helpers.ts b/src/tx/builder/helpers.ts
index 0a1c0693a9..f959e821d8 100644
--- a/src/tx/builder/helpers.ts
+++ b/src/tx/builder/helpers.ts
@@ -70,6 +70,15 @@ export function nameToPunycode(maybeName: string): AensName {
if (/\p{Emoji_Presentation}/u.test(name)) {
throw new ArgumentError('aens name', 'not containing emoji', maybeName);
}
+ if (name[2] === '-' && name[3] === '-') {
+ throw new ArgumentError('aens name', 'without "-" char in both the third and fourth positions', maybeName);
+ }
+ if (name[0] === '-') {
+ throw new ArgumentError('aens name', 'starting with no "-" char', maybeName);
+ }
+ if (name.at(-1) === '-') {
+ throw new ArgumentError('aens name', 'ending with no "-" char', maybeName);
+ }
let punycode;
try {
const u = new URL(`http://${name}.${suffix}`);
diff --git a/test/unit/aens.ts b/test/unit/aens.ts
index 5f03383635..fad5510260 100644
--- a/test/unit/aens.ts
+++ b/test/unit/aens.ts
@@ -295,6 +295,18 @@ describe('AENS utils', () => {
expect(() => ensureName('ldiDxa1Yxy1iiTRztYEN4F8nrnfZib3Q1MllPghmst8fjJ1sI3DXzOoAddE2ETxp.chain'))
.to.throw(ArgumentError, 'aens name should be not too long, got ldiDxa1Yxy1iiTRztYEN4F8nrnfZib3Q1MllPghmst8fjJ1sI3DXzOoAddE2ETxp.chain instead');
});
+
+ it('fails if name starts or ends with minus', () => {
+ expect(() => ensureName('-test.chain'))
+ .to.throw(ArgumentError, 'aens name should be starting with no "-" char, got -test.chain instead');
+ expect(() => ensureName('test-.chain'))
+ .to.throw(ArgumentError, 'aens name should be ending with no "-" char, got test-.chain instead');
+ });
+
+ it('fails if name has minus at 2, 3 chars', () => {
+ expect(() => ensureName('te--st.chain'))
+ .to.throw(ArgumentError, 'aens name should be without "-" char in both the third and fourth positions, got te--st.chain instead');
+ });
});
describe('isAuctionName', () => {
From b94e198ef1b811bd42a6f7434466884d5333e13c Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Wed, 12 Jun 2024 18:31:57 +1000
Subject: [PATCH 054/149] feat(account)!: encode secret key as sk_-prefixed
string
BREAKING CHANGE: MemoryAccount accepts secret key as sk_-prefixed string
Convert secret key as hex to new format as
```js
const oldSk = '9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b971647764' +
'54ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200';
const newSk = encode(Buffer.from(oldSk, 'hex').subarray(0, 32), Encoding.AccountSecretKey)
// 'sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf'
```
BREAKING CHANGE: `generateKeyPair` returns secretKey encoded as sk_-prefixed string
---
examples/browser/wallet-iframe/src/App.vue | 2 +-
.../wallet-web-extension/src/background.js | 2 +-
examples/node/contract-interaction.mjs | 2 +-
examples/node/paying-for-contract-call-tx.mjs | 2 +-
examples/node/paying-for-spend-tx.mjs | 2 +-
examples/node/transfer-ae.mjs | 2 +-
src/account/Memory.ts | 17 ++++------
src/utils/crypto.ts | 4 +--
src/utils/encoder-types.ts | 2 ++
src/utils/encoder.ts | 2 ++
test/charts/dynamic-gas-price.html | 2 +-
test/environment/browser.html | 2 +-
test/environment/node.js | 2 +-
test/environment/node.mjs | 2 +-
test/environment/node.ts | 2 +-
test/integration/index.ts | 9 +++---
test/unit/crypto.ts | 3 ++
test/unit/delegation.ts | 2 +-
test/unit/jwt.ts | 2 +-
test/unit/memory-account.ts | 31 +++++++++----------
20 files changed, 48 insertions(+), 46 deletions(-)
diff --git a/examples/browser/wallet-iframe/src/App.vue b/examples/browser/wallet-iframe/src/App.vue
index 5f33c97cd3..f39be6a371 100644
--- a/examples/browser/wallet-iframe/src/App.vue
+++ b/examples/browser/wallet-iframe/src/App.vue
@@ -212,7 +212,7 @@ export default {
{ name: 'ae_mainnet', instance: new Node('https://mainnet.aeternity.io') },
],
accounts: [
- new AccountMemoryProtected('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200'),
+ new AccountMemoryProtected('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf'),
AccountMemoryProtected.generate(),
],
onCompiler: new CompilerHttp('https://v7.compiler.aepps.com'),
diff --git a/examples/browser/wallet-web-extension/src/background.js b/examples/browser/wallet-web-extension/src/background.js
index a7a07c9e4d..cbce8aff54 100644
--- a/examples/browser/wallet-web-extension/src/background.js
+++ b/examples/browser/wallet-web-extension/src/background.js
@@ -106,7 +106,7 @@ const aeSdk = new AeSdkWallet({
instance: new Node('https://testnet.aeternity.io'),
}],
accounts: [
- new AccountMemoryProtected('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200'),
+ new AccountMemoryProtected('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf'),
AccountMemoryProtected.generate(),
],
id: browser.runtime.id,
diff --git a/examples/node/contract-interaction.mjs b/examples/node/contract-interaction.mjs
index 5a20a8c788..c5bab60cce 100755
--- a/examples/node/contract-interaction.mjs
+++ b/examples/node/contract-interaction.mjs
@@ -31,7 +31,7 @@ contract Multiplier =
f * 10
entrypoint multiplyBy(x : int) = x * state.factor
`;
-const ACCOUNT_SECRET_KEY = '9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200';
+const ACCOUNT_SECRET_KEY = 'sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf';
const NODE_URL = 'https://testnet.aeternity.io';
const COMPILER_URL = 'https://v7.compiler.aepps.com';
diff --git a/examples/node/paying-for-contract-call-tx.mjs b/examples/node/paying-for-contract-call-tx.mjs
index 92a3bfe69c..988ec83051 100644
--- a/examples/node/paying-for-contract-call-tx.mjs
+++ b/examples/node/paying-for-contract-call-tx.mjs
@@ -40,7 +40,7 @@ import {
// ## 2. Define constants
// The following constants are used in the subsequent code snippets.
-const PAYER_ACCOUNT_SECRET_KEY = '9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200';
+const PAYER_ACCOUNT_SECRET_KEY = 'sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf';
const NODE_URL = 'https://testnet.aeternity.io';
const COMPILER_URL = 'https://v7.compiler.aepps.com';
const CONTRACT_ADDRESS = 'ct_iy86kak8GGt4U5VjDFNQf1a9qjbyxKpmGVNe3UuKwnmcM6LW8';
diff --git a/examples/node/paying-for-spend-tx.mjs b/examples/node/paying-for-spend-tx.mjs
index cbb70cb92b..c67d6378df 100644
--- a/examples/node/paying-for-spend-tx.mjs
+++ b/examples/node/paying-for-spend-tx.mjs
@@ -26,7 +26,7 @@ import {
// ## 2. Define constants
// The following constants are used in the subsequent code snippets.
-const PAYER_ACCOUNT_SECRET_KEY = '9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200';
+const PAYER_ACCOUNT_SECRET_KEY = 'sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf';
const NODE_URL = 'https://testnet.aeternity.io';
const AMOUNT = 1;
diff --git a/examples/node/transfer-ae.mjs b/examples/node/transfer-ae.mjs
index 571796d621..eb6e67e9d4 100755
--- a/examples/node/transfer-ae.mjs
+++ b/examples/node/transfer-ae.mjs
@@ -20,7 +20,7 @@ import { AeSdk, Node, MemoryAccount } from '@aeternity/aepp-sdk';
// The following constants are used in the subsequent code snippets.
const ACCOUNT_KEYPAIR = {
publicKey: 'ak_21A27UVVt3hDkBE5J7rhhqnH5YNb4Y1dqo4PnSybrH85pnWo7E',
- secretKey: '9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200',
+ secretKey: 'sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf',
};
const NODE_URL = 'https://testnet.aeternity.io';
const [amount = 1, recipient = ACCOUNT_KEYPAIR.publicKey] = process.argv.slice(2);
diff --git a/src/account/Memory.ts b/src/account/Memory.ts
index bfa45b46dc..00b9accbfe 100644
--- a/src/account/Memory.ts
+++ b/src/account/Memory.ts
@@ -1,6 +1,7 @@
+import nacl from 'tweetnacl';
import AccountBase from './Base';
import {
- generateKeyPairFromSecret, sign, generateKeyPair, hash, messageToHash, messagePrefixLength,
+ sign, generateKeyPair, hash, messageToHash, messagePrefixLength,
} from '../utils/crypto';
import { ArgumentError, UnexpectedTsError } from '../utils/errors';
import {
@@ -33,17 +34,11 @@ export default class AccountMemory extends AccountBase {
/**
* @param secretKey - Secret key
*/
- constructor(secretKey: string | Uint8Array) {
+ constructor(secretKey: Encoded.AccountSecretKey) {
super();
- secretKey = typeof secretKey === 'string' ? Buffer.from(secretKey, 'hex') : secretKey;
- if (secretKey.length !== 64) {
- throw new ArgumentError('secretKey', '64 bytes', secretKey.length);
- }
- secretKeys.set(this, secretKey);
- this.address = encode(
- generateKeyPairFromSecret(secretKey).publicKey,
- Encoding.AccountAddress,
- );
+ const keyPair = nacl.sign.keyPair.fromSeed(decode(secretKey));
+ secretKeys.set(this, keyPair.secretKey);
+ this.address = encode(keyPair.publicKey, Encoding.AccountAddress);
}
/**
diff --git a/src/utils/crypto.ts b/src/utils/crypto.ts
index f68c86db4c..6eced1b423 100644
--- a/src/utils/crypto.ts
+++ b/src/utils/crypto.ts
@@ -118,7 +118,7 @@ export function generateKeyPairFromSecret(secret: Uint8Array): SignKeyPair {
*/
export function generateKeyPair(raw: true): { publicKey: Buffer; secretKey: Buffer };
export function generateKeyPair(raw?: false): {
- publicKey: Encoded.AccountAddress; secretKey: string;
+ publicKey: Encoded.AccountAddress; secretKey: Encoded.AccountSecretKey;
};
export function generateKeyPair(raw = false): {
publicKey: Encoded.AccountAddress | Buffer;
@@ -136,7 +136,7 @@ export function generateKeyPair(raw = false): {
}
return {
publicKey: encode(publicBuffer, Encoding.AccountAddress),
- secretKey: secretBuffer.toString('hex'),
+ secretKey: encode(secretBuffer.subarray(0, 32), Encoding.AccountSecretKey),
};
}
diff --git a/src/utils/encoder-types.ts b/src/utils/encoder-types.ts
index be4c4d99e0..4195cd5296 100644
--- a/src/utils/encoder-types.ts
+++ b/src/utils/encoder-types.ts
@@ -21,6 +21,7 @@ export enum Encoding {
OracleQueryId = 'oq',
OracleResponse = 'or',
AccountAddress = 'ak',
+ AccountSecretKey = 'sk',
Signature = 'sg',
Commitment = 'cm',
PeerPubkey = 'pp',
@@ -49,6 +50,7 @@ export type OracleQuery = `${Encoding.OracleQuery}_${string}`;
export type OracleQueryId = `${Encoding.OracleQueryId}_${string}`;
export type OracleResponse = `${Encoding.OracleResponse}_${string}`;
export type AccountAddress = `${Encoding.AccountAddress}_${string}`;
+export type AccountSecretKey = `${Encoding.AccountSecretKey}_${string}`;
export type Signature = `${Encoding.Signature}_${string}`;
export type Commitment = `${Encoding.Commitment}_${string}`;
export type PeerPubkey = `${Encoding.PeerPubkey}_${string}`;
diff --git a/src/utils/encoder.ts b/src/utils/encoder.ts
index 38bf2066a3..d9b65f937a 100644
--- a/src/utils/encoder.ts
+++ b/src/utils/encoder.ts
@@ -51,6 +51,7 @@ const base58Types = [
Encoding.OracleAddress,
Encoding.OracleQueryId,
Encoding.AccountAddress,
+ Encoding.AccountSecretKey,
Encoding.Signature,
Encoding.Commitment,
Encoding.PeerPubkey,
@@ -72,6 +73,7 @@ const byteSizeForType = {
[Encoding.OracleAddress]: 32,
[Encoding.OracleQueryId]: 32,
[Encoding.AccountAddress]: 32,
+ [Encoding.AccountSecretKey]: 32,
[Encoding.Signature]: 64,
[Encoding.Commitment]: 32,
[Encoding.PeerPubkey]: 32,
diff --git a/test/charts/dynamic-gas-price.html b/test/charts/dynamic-gas-price.html
index 91d5cd7db8..cde59ad642 100644
--- a/test/charts/dynamic-gas-price.html
+++ b/test/charts/dynamic-gas-price.html
@@ -74,7 +74,7 @@
const nodeUrl = 'http://localhost:3013';
const node = new Node(nodeUrl);
-const genesis = new MemoryAccount('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200');
+const genesis = new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf');
const minGasPriceToShow = 1e9 - 10;
async function newFrame() {
diff --git a/test/environment/browser.html b/test/environment/browser.html
index 685e92090f..edbc9078f1 100644
--- a/test/environment/browser.html
+++ b/test/environment/browser.html
@@ -18,7 +18,7 @@
const aeSdk = new AeSdk({
nodes: [{ name: 'testnet', instance: node }],
accounts: [
- new MemoryAccount('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200'),
+ new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf'),
],
onCompiler: new CompilerHttp('https://v7.compiler.aepps.com'),
});
diff --git a/test/environment/node.js b/test/environment/node.js
index de021e51ad..fda60ea7a6 100755
--- a/test/environment/node.js
+++ b/test/environment/node.js
@@ -12,7 +12,7 @@ const node = new Node('https://testnet.aeternity.io');
const aeSdk = new AeSdk({
nodes: [{ name: 'testnet', instance: node }],
accounts: [
- new MemoryAccount('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200'),
+ new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf'),
],
onCompiler: new CompilerHttp('https://v7.compiler.aepps.com'),
});
diff --git a/test/environment/node.mjs b/test/environment/node.mjs
index de52ce0361..49c263837e 100755
--- a/test/environment/node.mjs
+++ b/test/environment/node.mjs
@@ -12,7 +12,7 @@ const node = new Node('https://testnet.aeternity.io');
const aeSdk = new AeSdk({
nodes: [{ name: 'testnet', instance: node }],
accounts: [
- new MemoryAccount('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200'),
+ new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf'),
],
onCompiler: new CompilerHttp('https://v7.compiler.aepps.com'),
});
diff --git a/test/environment/node.ts b/test/environment/node.ts
index 2b30d5739b..45fdb97e8a 100755
--- a/test/environment/node.ts
+++ b/test/environment/node.ts
@@ -11,7 +11,7 @@ const node = new Node('https://testnet.aeternity.io');
const aeSdk = new AeSdk({
nodes: [{ name: 'testnet', instance: node }],
accounts: [
- new MemoryAccount('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200'),
+ new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf'),
],
onCompiler: new CompilerHttp('https://v7.compiler.aepps.com'),
});
diff --git a/test/integration/index.ts b/test/integration/index.ts
index 81f9085825..4e808badf5 100644
--- a/test/integration/index.ts
+++ b/test/integration/index.ts
@@ -1,6 +1,6 @@
import { after, afterEach } from 'mocha';
import {
- AeSdk, CompilerHttpNode, MemoryAccount, Node, Encoded,
+ AeSdk, CompilerHttpNode, MemoryAccount, Node, Encoded, isAddressValid, Encoding,
} from '../../src';
import '..';
@@ -14,6 +14,9 @@ const configuration = {
compilerUrl: 'https://v8.compiler.aepps.com',
getGenesisAccount: () => {
if (process.env.MAINNET_SECRET_KEY == null) throw new Error('MAINNET_SECRET_KEY is not set');
+ if (!isAddressValid(process.env.MAINNET_SECRET_KEY, Encoding.AccountSecretKey)) {
+ throw new Error(`MAINNET_SECRET_KEY is not valid: ${process.env.MAINNET_SECRET_KEY}`);
+ }
return new MemoryAccount(process.env.MAINNET_SECRET_KEY);
},
sdkOptions: {
@@ -45,9 +48,7 @@ const configuration = {
debugUrl: 'http://localhost:3113',
channelUrl: 'ws://localhost:3014/channel',
compilerUrl: 'http://localhost:3080',
- getGenesisAccount: () => new MemoryAccount(
- '9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200',
- ),
+ getGenesisAccount: () => new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf'),
sdkOptions: {
_expectedMineRate: 1000,
_microBlockCycle: 300,
diff --git a/test/unit/crypto.ts b/test/unit/crypto.ts
index bc538ab039..e7bf5c47a9 100644
--- a/test/unit/crypto.ts
+++ b/test/unit/crypto.ts
@@ -38,6 +38,9 @@ describe('crypto', () => {
expect(keyPair.publicKey).to.satisfy((b: string) => b.startsWith('ak_'));
assert.isAtLeast(keyPair.publicKey.length, 51);
assert.isAtMost(keyPair.publicKey.length, 53);
+ expect(keyPair.secretKey).to.satisfy((b: string) => b.startsWith('sk_'));
+ assert.isAtLeast(keyPair.secretKey.length, 51);
+ assert.isAtMost(keyPair.secretKey.length, 53);
});
it('Address from secret', () => {
diff --git a/test/unit/delegation.ts b/test/unit/delegation.ts
index 16b726c5dc..c913eef708 100644
--- a/test/unit/delegation.ts
+++ b/test/unit/delegation.ts
@@ -18,7 +18,7 @@ describe('Delegation signatures', () => {
});
it('signs delegation', async () => {
- const account = new MemoryAccount('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200');
+ const account = new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf');
expect(await account.signDelegation(delegation, { networkId: 'ae_test' }))
.to.be.equal('sg_UHnWENCvSvJPjcwR2rW82btPvDoDqPvDnn8TsXkoQSNoMHEeT1D8YkAwJQQNrALTBdqqFou4X4Q2MoqCXzwnQZTDZvH28');
});
diff --git a/test/unit/jwt.ts b/test/unit/jwt.ts
index 337303800a..a680e3142f 100644
--- a/test/unit/jwt.ts
+++ b/test/unit/jwt.ts
@@ -6,7 +6,7 @@ import {
} from '../../src';
describe('JWT', () => {
- const account = new MemoryAccount('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200');
+ const account = new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf');
const payload = { test: 'data' };
const jwt = 'eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJzdWJfandrIjp7ImNydiI6IkVkMjU1MTkiLCJrdHkiOiJPS1AiLCJ4IjoiaEF5WFM1Y1dSM1pGUzZFWjJFN2NUV0JZcU43SksyN2NWNHF5MHd0TVFnQSJ9LCJ0ZXN0IjoiZGF0YSJ9.u9El4b2O2LRhvTTW3g46vk1hx0xXWPkJEaEeEy-rLzLr2yuQlNc7qIdcr_z06BgHx5jyYv2CpUL3hqLpc0RzBA';
const jwtWithAddress = 'eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiYWtfMjFBMjdVVlZ0M2hEa0JFNUo3cmhocW5INVlOYjRZMWRxbzRQblN5YnJIODVwbldvN0UifQ._munmgMvg9SE6jJaTYd6tBSV7EtqO_YRV4TkZjQfop6W18hm_fAPWNbwNupS8doaOs2corl4Uc26zUq1Jyl6Bg';
diff --git a/test/unit/memory-account.ts b/test/unit/memory-account.ts
index bb872b9f8c..4d4910ee7f 100644
--- a/test/unit/memory-account.ts
+++ b/test/unit/memory-account.ts
@@ -1,26 +1,19 @@
import '..';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import {
- MemoryAccount, generateKeyPair, verifyMessage, ArgumentError,
-} from '../../src';
+import { MemoryAccount, verifyMessage, InvalidChecksumError } from '../../src';
-const testAcc = generateKeyPair();
+const secretKey = 'sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf';
describe('MemoryAccount', () => {
it('fails on invalid secret key', async () => {
- expect(() => new MemoryAccount(' '))
- .to.throw(ArgumentError, 'should be 64 bytes, got 0 instead');
+ expect(() => new MemoryAccount('ak_test' as any))
+ .to.throw(InvalidChecksumError, 'Invalid checksum');
});
- it('Init with secretKey as hex string', async () => {
- const acc = new MemoryAccount(testAcc.secretKey);
- expect(acc.address).to.be.equal(testAcc.publicKey);
- });
-
- it('Init with secretKey as Buffer', async () => {
- const acc = new MemoryAccount(Buffer.from(testAcc.secretKey, 'hex'));
- expect(acc.address).to.be.equal(testAcc.publicKey);
+ it('Init with secretKey', async () => {
+ const acc = new MemoryAccount(secretKey);
+ expect(acc.address).to.be.equal('ak_21A27UVVt3hDkBE5J7rhhqnH5YNb4Y1dqo4PnSybrH85pnWo7E');
});
it('generates', async () => {
@@ -30,8 +23,14 @@ describe('MemoryAccount', () => {
it('Sign message', async () => {
const message = 'test';
- const account = new MemoryAccount(testAcc.secretKey);
+ const account = new MemoryAccount(secretKey);
const signature = await account.signMessage(message);
- expect(verifyMessage(message, signature, testAcc.publicKey)).to.equal(true);
+ expect(signature).to.be.eql(Uint8Array.from([
+ 0, 140, 249, 124, 66, 31, 147, 247, 203, 165, 188, 56, 230, 186, 154, 230, 113, 200, 189,
+ 113, 6, 140, 52, 219, 199, 130, 46, 121, 201, 45, 239, 59, 109, 139, 175, 243, 83, 186, 83,
+ 6, 87, 148, 163, 176, 118, 97, 26, 22, 209, 172, 47, 88, 13, 29, 56, 200, 155, 242, 104, 110,
+ 74, 51, 47, 0,
+ ]));
+ expect(verifyMessage(message, signature, account.address)).to.be.equal(true);
});
});
From 3e390b35e3613d503b6dc64d825257d88d0a18cc Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Wed, 12 Jun 2024 18:58:03 +1000
Subject: [PATCH 055/149] docs: add an example page with tools based on sdk
---
.eslintrc.js | 2 +-
docs/build-assets.sh | 6 +
examples/browser/tools/index.html | 13 ++
examples/browser/tools/package.json | 22 ++++
examples/browser/tools/public/preact.svg | 1 +
examples/browser/tools/src/app.tsx | 13 ++
.../src/components/AccountsByMnemonic.tsx | 61 ++++++++++
.../tools/src/components/ConvertSk.tsx | 49 ++++++++
.../src/components/TransactionPacker.tsx | 111 ++++++++++++++++++
examples/browser/tools/src/index.css | 78 ++++++++++++
examples/browser/tools/src/main.tsx | 5 +
examples/browser/tools/src/vite-env.d.ts | 1 +
examples/browser/tools/tsconfig.json | 30 +++++
examples/browser/tools/tsconfig.node.json | 11 ++
examples/browser/tools/vite.config.ts | 8 ++
mkdocs.yml | 1 +
16 files changed, 411 insertions(+), 1 deletion(-)
create mode 100644 examples/browser/tools/index.html
create mode 100644 examples/browser/tools/package.json
create mode 100644 examples/browser/tools/public/preact.svg
create mode 100644 examples/browser/tools/src/app.tsx
create mode 100644 examples/browser/tools/src/components/AccountsByMnemonic.tsx
create mode 100644 examples/browser/tools/src/components/ConvertSk.tsx
create mode 100644 examples/browser/tools/src/components/TransactionPacker.tsx
create mode 100644 examples/browser/tools/src/index.css
create mode 100644 examples/browser/tools/src/main.tsx
create mode 100644 examples/browser/tools/src/vite-env.d.ts
create mode 100644 examples/browser/tools/tsconfig.json
create mode 100644 examples/browser/tools/tsconfig.node.json
create mode 100644 examples/browser/tools/vite.config.ts
diff --git a/.eslintrc.js b/.eslintrc.js
index 1106acb49f..c468887fb0 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -23,7 +23,7 @@ module.exports = {
],
ignorePatterns: [
'dist', 'es', 'src/apis', 'docs/api', 'test/environment/ledger/browser', 'types-legacy',
- 'docs/examples', 'site',
+ 'docs/examples', 'site', 'examples/browser/tools',
],
rules: {
'rulesdir/tsdoc-syntax': 'error',
diff --git a/docs/build-assets.sh b/docs/build-assets.sh
index ec3761b8cd..a7ee0af281 100755
--- a/docs/build-assets.sh
+++ b/docs/build-assets.sh
@@ -30,5 +30,11 @@ mkdir ../../../docs/examples/browser/wallet-web-extension/
mv artifacts/wallet-web-extension-v0.1.0-production.zip ../../../docs/examples/browser/wallet-web-extension/packed.zip
mv dist/report.html ../../../docs/examples/browser/wallet-web-extension/report.html
+echo Build example tools
+cd ../tools
+npm i
+npm run build
+mv dist/ ../../../docs/examples/browser/tools
+
cd ../../..
perl -i -pe 's/"rem-prepare"/"prepare"/g' package.json
diff --git a/examples/browser/tools/index.html b/examples/browser/tools/index.html
new file mode 100644
index 0000000000..53d2589435
--- /dev/null
+++ b/examples/browser/tools/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ SDK tools
+
+
+
+
+
+
diff --git a/examples/browser/tools/package.json b/examples/browser/tools/package.json
new file mode 100644
index 0000000000..1aab108715
--- /dev/null
+++ b/examples/browser/tools/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "tools",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@aeternity/aepp-sdk": "file:../../..",
+ "@scure/bip39": "^1.3.0",
+ "buffer": "^6.0.3",
+ "preact": "^10.19.6"
+ },
+ "devDependencies": {
+ "@preact/preset-vite": "^2.8.2",
+ "typescript": "^5.2.2",
+ "vite": "^5.2.0"
+ }
+}
diff --git a/examples/browser/tools/public/preact.svg b/examples/browser/tools/public/preact.svg
new file mode 100644
index 0000000000..908f17def0
--- /dev/null
+++ b/examples/browser/tools/public/preact.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/browser/tools/src/app.tsx b/examples/browser/tools/src/app.tsx
new file mode 100644
index 0000000000..359fd76db0
--- /dev/null
+++ b/examples/browser/tools/src/app.tsx
@@ -0,0 +1,13 @@
+import { ConvertSk } from './components/ConvertSk'
+import { AccountsByMnemonic } from './components/AccountsByMnemonic'
+import { TransactionPacker } from './components/TransactionPacker'
+
+export function App() {
+ return (
+ <>
+
+
+
+ >
+ )
+}
diff --git a/examples/browser/tools/src/components/AccountsByMnemonic.tsx b/examples/browser/tools/src/components/AccountsByMnemonic.tsx
new file mode 100644
index 0000000000..6beae4f396
--- /dev/null
+++ b/examples/browser/tools/src/components/AccountsByMnemonic.tsx
@@ -0,0 +1,61 @@
+import { Buffer } from 'buffer'
+import { useState } from 'preact/hooks'
+import {
+ generateSaveHDWalletFromSeed, getSaveHDWalletAccounts, encode, Encoding,
+} from '@aeternity/aepp-sdk';
+import { mnemonicToSeedSync, validateMnemonic } from '@scure/bip39';
+import { wordlist } from '@scure/bip39/wordlists/english';
+
+export function AccountsByMnemonic() {
+ const [mnemonic, setMnemonic] = useState('')
+ const [count, setCount] = useState(1)
+
+ let seed
+ try {
+ seed = mnemonicToSeedSync(mnemonic);
+ } catch (error) {}
+ let accounts
+ let validation = 'invalid'
+ if (seed) {
+ const wallet = generateSaveHDWalletFromSeed(seed, '');
+ accounts = getSaveHDWalletAccounts(wallet, '', count)
+ // TODO: getSaveHDWalletAccounts should return encoded secret keys
+ .map(({ publicKey, secretKey }) => ({
+ publicKey,
+ secretKey: encode(Buffer.from(secretKey, 'hex').subarray(0, 32), Encoding.AccountSecretKey),
+ }));
+ validation = (validateMnemonic(mnemonic, wordlist) ? '' : 'not ') + 'in english wordlist'
+ }
+
+ return (
+ <>
+ Generate accounts by mnemonic phrase
+
+
Mnemonic phrase
+
setMnemonic(event.currentTarget.value)}
+ />
+
+
+
Mnemonic {validation}
+
+ {accounts && accounts.map(({ publicKey, secretKey }, idx) => <>
+
Account #{idx}
+
+ {publicKey}
+ {secretKey}
+
+ >)}
+
+
+
+ >
+ )
+}
diff --git a/examples/browser/tools/src/components/ConvertSk.tsx b/examples/browser/tools/src/components/ConvertSk.tsx
new file mode 100644
index 0000000000..f4c44c24e4
--- /dev/null
+++ b/examples/browser/tools/src/components/ConvertSk.tsx
@@ -0,0 +1,49 @@
+import { Buffer } from 'buffer'
+import { useState } from 'preact/hooks'
+import {
+ isAddressValid, Encoding, Encoded, decode, encode, MemoryAccount,
+} from '@aeternity/aepp-sdk'
+
+function parseSecretKey(secretKey: string): Encoded.AccountSecretKey | undefined {
+ if (isAddressValid(secretKey, Encoding.AccountSecretKey)) return secretKey
+ const buffer = Buffer.from(secretKey, 'hex')
+ if (buffer.length === 64) return encode(buffer.subarray(0, 32), Encoding.AccountSecretKey)
+}
+
+export function ConvertSk() {
+ const [secretKeyRaw, setSecretKey] = useState('')
+
+ const secretKey = parseSecretKey(secretKeyRaw)
+ let address
+ let secretKeyOtherFormat
+ let secretKeyOtherValue
+ if (secretKey) {
+ address = new MemoryAccount(secretKey).address;
+ [secretKeyOtherFormat, secretKeyOtherValue] =
+ isAddressValid(secretKeyRaw, Encoding.AccountSecretKey)
+ ? ['Secret key in hex', Buffer.concat([decode(secretKey), decode(address)]).toString('hex')]
+ : ['sk_-prefixed secret key', secretKey]
+ }
+
+ return (
+ <>
+ Convert between hex secret key and sk_-prefixed
+
+
Secret key in any format
+
setSecretKey(event.currentTarget.value)}
+ />
+
+ {secretKeyOtherFormat && <>
+
{secretKeyOtherFormat}
+
{secretKeyOtherValue}
+ >}
+
+
Address
+
{address || 'Can\'t parse secret key'}
+
+ >
+ )
+}
diff --git a/examples/browser/tools/src/components/TransactionPacker.tsx b/examples/browser/tools/src/components/TransactionPacker.tsx
new file mode 100644
index 0000000000..49b9b20bfc
--- /dev/null
+++ b/examples/browser/tools/src/components/TransactionPacker.tsx
@@ -0,0 +1,111 @@
+import { Buffer } from 'buffer'
+import { useState } from 'preact/hooks'
+import { JSX } from 'preact/jsx-runtime'
+import { unpackTx, buildTx, Tag, isAddressValid, Encoding } from '@aeternity/aepp-sdk'
+
+export function TransactionPacker() {
+ const [packError, setPackError] = useState('')
+ const [unpackError, setUnpackError] = useState('')
+ const [transaction, setTransaction] = useState('')
+
+ let params: ReturnType | undefined
+ try {
+ if (isAddressValid(transaction, Encoding.Transaction)) {
+ params = unpackTx(transaction)
+ setUnpackError('')
+ } else setUnpackError(transaction ? 'Invalid encoding' : 'No transaction')
+ } catch (error) {
+ setUnpackError(String(error))
+ }
+
+ function repackTx(path: Array, value: unknown) {
+ try {
+ if (params == null) throw new Error('Transaction params not set')
+ const newParams = structuredClone(params)
+ path.reduce((pr: any, name, idx) => {
+ if (idx < path.length - 1) return pr[name]
+ pr[name] = value
+ }, newParams)
+ setTransaction(buildTx(newParams))
+ setPackError('')
+ } catch (error) {
+ setPackError(String(error))
+ }
+ }
+
+ function addName(path: Array, el: JSX.Element): JSX.Element {
+ return <>
+ {path.map((p, i) => <>{i ? . : ''}{p}>)}
+ {el}
+ >
+ }
+
+ function getEditor(path: Array, value: unknown): JSX.Element {
+ if (path.at(-1) === 'tag') {
+ const tag = value as Tag
+ return addName(path, {tag} ({Tag[tag]})
)
+ }
+ if (path.at(-1) === 'version') return addName(path, {String(value)}
)
+ if (typeof value === 'number') {
+ return addName(path, repackTx(path, +ev.currentTarget.value)}
+ />)
+ }
+ if (typeof value === 'bigint') {
+ return addName(path, repackTx(path, BigInt(ev.currentTarget.value))}
+ />)
+ }
+ if (typeof value === 'string') {
+ return addName(path, repackTx(path, ev.currentTarget.value)}
+ />)
+ }
+ if (Array.isArray(value)) {
+ return <>
+ {value.map((el, idx) => getEditor([...path, idx], el))}
+ >
+ }
+ if (value instanceof Uint8Array) {
+ return addName(path, repackTx(path, Buffer.from(ev.currentTarget.value, 'hex'))}
+ />)
+ }
+ if (value != null && typeof value === 'object') {
+ return <>
+ {Object.entries(value).map(([key, el]) => getEditor([...path, key], el))}
+ >
+ }
+ return addName(path, {String(value)}
)
+ }
+
+ return (
+ <>
+ Unpack transaction
+
+ >
+ )
+}
diff --git a/examples/browser/tools/src/index.css b/examples/browser/tools/src/index.css
new file mode 100644
index 0000000000..fe422b46b6
--- /dev/null
+++ b/examples/browser/tools/src/index.css
@@ -0,0 +1,78 @@
+:root {
+ --font-sans: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;
+ --font-mono: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;
+}
+
+body {
+ margin: 0;
+ padding: 1rem;
+ font-family: var(--font-sans);
+}
+
+button {
+ display: block;
+ width: 10rem;
+ padding: .5rem;
+ border: none;
+ border-radius: 9999px;
+ background-color: #8b5cf6;
+ color: #fff;
+ font-size: .75rem;
+ line-height: 1rem;
+
+ &:disabled {
+ cursor: not-allowed;
+ background-color: #c4b5fd;
+ }
+}
+
+h2 {
+ margin: 0;
+ font-weight: bold;
+ font-size: 1.5rem;
+}
+
+input, textarea {
+ background: #111827;
+ color: #fff;
+ padding: .5rem;
+ border: none;
+ font-size: 100%;
+ line-height: 1.5;
+ font-family: var(--font-mono);
+}
+
+textarea {
+ height: calc(1.5rem * 4);
+ resize: vertical;
+}
+
+.group {
+ margin: 1rem 0;
+ border: 1px solid #e5e7eb;
+ border-radius: .25rem;
+ background: #f3f4f6;
+ font-family: var(--font-mono);
+ display: grid;
+ grid-template-columns: 1fr 3fr;
+ align-items: center;
+ padding: .5rem;
+ grid-gap: .5rem;
+
+ @media (max-width: 640px) {
+ grid-template-columns: 1fr;
+
+ > :nth-child(2n - 1):not(button) {
+ font-weight: 600;
+ }
+ }
+
+ > * {
+ overflow: hidden;
+ overflow-wrap: break-word;
+ }
+}
+
+.error, .separator {
+ color: #6d28d9;
+}
diff --git a/examples/browser/tools/src/main.tsx b/examples/browser/tools/src/main.tsx
new file mode 100644
index 0000000000..846cd1e988
--- /dev/null
+++ b/examples/browser/tools/src/main.tsx
@@ -0,0 +1,5 @@
+import { render } from 'preact'
+import { App } from './app.tsx'
+import './index.css'
+
+render(, document.getElementById('app')!)
diff --git a/examples/browser/tools/src/vite-env.d.ts b/examples/browser/tools/src/vite-env.d.ts
new file mode 100644
index 0000000000..11f02fe2a0
--- /dev/null
+++ b/examples/browser/tools/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/examples/browser/tools/tsconfig.json b/examples/browser/tools/tsconfig.json
new file mode 100644
index 0000000000..d13245791d
--- /dev/null
+++ b/examples/browser/tools/tsconfig.json
@@ -0,0 +1,30 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "skipLibCheck": true,
+ "paths": {
+ "react": ["./node_modules/preact/compat/"],
+ "react-dom": ["./node_modules/preact/compat/"]
+ },
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "preact",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/examples/browser/tools/tsconfig.node.json b/examples/browser/tools/tsconfig.node.json
new file mode 100644
index 0000000000..97ede7ee6f
--- /dev/null
+++ b/examples/browser/tools/tsconfig.node.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "allowSyntheticDefaultImports": true,
+ "strict": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/examples/browser/tools/vite.config.ts b/examples/browser/tools/vite.config.ts
new file mode 100644
index 0000000000..619d4cf72d
--- /dev/null
+++ b/examples/browser/tools/vite.config.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from 'vite'
+import preact from '@preact/preset-vite'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [preact()],
+ base: './',
+})
diff --git a/mkdocs.yml b/mkdocs.yml
index 488d98863e..eaaebaff16 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -74,6 +74,7 @@ nav:
- examples/node/paying-for-spend-tx.md
- examples/node/account-generalized.md
- Browser:
+ - 'SDK tools': examples/browser/tools/index.html
- 'Aepp example': examples/browser/aepp/index.html
- 'Iframe wallet example': examples/browser/wallet-iframe/index.html
- 'Webextension wallet example': examples/browser/wallet-web-extension/packed.zip
From 1652a4ba81bfa4fbe9c0013a9ce6b15e84dc0fa9 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Fri, 14 Jun 2024 10:47:24 +1000
Subject: [PATCH 056/149] fix(account): improve Account:publicKey type
---
src/utils/hd-wallet.ts | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/utils/hd-wallet.ts b/src/utils/hd-wallet.ts
index 20b63ad213..00837ca713 100644
--- a/src/utils/hd-wallet.ts
+++ b/src/utils/hd-wallet.ts
@@ -2,7 +2,9 @@ import nacl from 'tweetnacl';
import { full as hmac } from 'tweetnacl-auth';
import { fromString } from 'bip32-path';
import aesjs from 'aes-js';
-import { sha256hash, encode, Encoding } from './encoder';
+import {
+ sha256hash, encode, Encoding, Encoded,
+} from './encoder';
import { CryptographyError } from './errors';
import { concatBuffers } from './other';
@@ -58,8 +60,8 @@ interface HDWallet {
}
interface Account {
- secretKey: string;
- publicKey: string;
+ secretKey: string; // TODO: use Encoded.AccountSecretKey instead hex
+ publicKey: Encoded.AccountAddress;
}
type Dec = [-1, 0, 1, 2, 3, 4][N];
From 5d4981e38421de915f956f4bd991df4a57e4ff1c Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Fri, 14 Jun 2024 10:51:48 +1000
Subject: [PATCH 057/149] docs: add bundle report to tools page
---
examples/browser/tools/package.json | 1 +
examples/browser/tools/vite.config.ts | 8 +++++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/examples/browser/tools/package.json b/examples/browser/tools/package.json
index 1aab108715..151c0f2cfd 100644
--- a/examples/browser/tools/package.json
+++ b/examples/browser/tools/package.json
@@ -16,6 +16,7 @@
},
"devDependencies": {
"@preact/preset-vite": "^2.8.2",
+ "rollup-plugin-visualizer": "^5.12.0",
"typescript": "^5.2.2",
"vite": "^5.2.0"
}
diff --git a/examples/browser/tools/vite.config.ts b/examples/browser/tools/vite.config.ts
index 619d4cf72d..51ed183417 100644
--- a/examples/browser/tools/vite.config.ts
+++ b/examples/browser/tools/vite.config.ts
@@ -1,8 +1,14 @@
import { defineConfig } from 'vite'
import preact from '@preact/preset-vite'
+import { visualizer } from 'rollup-plugin-visualizer'
// https://vitejs.dev/config/
export default defineConfig({
- plugins: [preact()],
+ plugins: [
+ preact(),
+ visualizer({
+ filename: 'dist/stats.html',
+ }),
+ ],
base: './',
})
From 29005ea7b5e6df4506fecdbfd2cbf1df15e069ca Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 15 Jun 2024 10:55:56 +1000
Subject: [PATCH 058/149] refactor(tx-builder): extract common pointers code
---
src/tx/builder/field-types/pointers.ts | 59 +++++++++++++++++------
src/tx/builder/field-types/pointers2.ts | 62 -------------------------
src/tx/builder/schema.ts | 6 +--
3 files changed, 48 insertions(+), 79 deletions(-)
delete mode 100644 src/tx/builder/field-types/pointers2.ts
diff --git a/src/tx/builder/field-types/pointers.ts b/src/tx/builder/field-types/pointers.ts
index 6063a528c1..d40a5d2df3 100644
--- a/src/tx/builder/field-types/pointers.ts
+++ b/src/tx/builder/field-types/pointers.ts
@@ -1,31 +1,56 @@
import { NamePointer as NamePointerString } from '../../../apis/node';
import { toBytes } from '../../../utils/bytes';
-import { Encoded } from '../../../utils/encoder';
-import { IllegalArgumentError } from '../../../utils/errors';
+import {
+ Encoded, Encoding, decode, encode,
+} from '../../../utils/encoder';
+import { isAddressValid } from '../../../utils/crypto';
+import { IllegalArgumentError, DecodeError, ArgumentError } from '../../../utils/errors';
import address, { AddressEncodings, idTagToEncoding } from './address';
+const ID_TAG = Buffer.from([1]);
+const DATA_TAG = Buffer.from([2]);
+const DATA_LENGTH_MAX = 1024;
const addressAny = address(...idTagToEncoding);
// TODO: remove after fixing node types
type NamePointer = NamePointerString & {
id: Encoded.Generic;
};
+type NamePointerRaw = NamePointerString & {
+ id: Encoded.Generic;
+};
-export default {
+export default (allowRaw: AllowRaw): {
+ serialize: (pointers: Array) => Buffer[][];
+ deserialize: (
+ pointers: Array<[key: Buffer, id: Buffer]>,
+ ) => Array;
+} => ({
/**
* Helper function to build pointers for name update TX
* @param pointers - Array of pointers
* `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
* @returns Serialized pointers array
*/
- serialize(pointers: NamePointer[]): Buffer[][] {
+ serialize(pointers) {
if (pointers.length > 32) {
throw new IllegalArgumentError(`Expected 32 pointers or less, got ${pointers.length} instead`);
}
-
- return pointers.map(
- (pointer) => [toBytes(pointer.key), addressAny.serialize(pointer.id)],
- );
+ return pointers.map(({ key, id }) => {
+ let payload;
+ if (isAddressValid(id, ...idTagToEncoding)) {
+ payload = [...allowRaw ? [ID_TAG] : [], addressAny.serialize(id)];
+ }
+ if (isAddressValid(id, Encoding.Bytearray)) {
+ const data = decode(id);
+ if (data.length > DATA_LENGTH_MAX) {
+ throw new ArgumentError('Raw pointer', `shorter than ${DATA_LENGTH_MAX + 1} bytes`, `${data.length} bytes`);
+ }
+ payload = [DATA_TAG, data];
+ }
+ if (payload == null) throw new DecodeError(`Unknown AENS pointer value: ${id}`);
+ return [toBytes(key), Buffer.concat(payload)];
+ });
},
/**
@@ -33,9 +58,17 @@ export default {
* @param pointers - Array of pointers
* @returns Deserialize pointer array
*/
- deserialize(pointers: Array<[key: Buffer, id: Buffer]>): NamePointer[] {
- return pointers.map(
- ([key, id]) => ({ key: key.toString(), id: addressAny.deserialize(id) }),
- );
+ deserialize(pointers) {
+ return pointers.map(([bKey, bId]) => {
+ if (!allowRaw) return { key: bKey.toString(), id: addressAny.deserialize(bId) };
+ const tag = bId.subarray(0, 1);
+ const payload = bId.subarray(1);
+ let id;
+ if (tag.equals(ID_TAG)) id = addressAny.deserialize(payload);
+ // TS can't figure out the real type depending on allowRaw
+ if (tag.equals(DATA_TAG)) id = encode(payload, Encoding.Bytearray) as Encoded.AccountAddress;
+ if (id == null) throw new DecodeError(`Unknown AENS pointer tag: ${tag}`);
+ return { key: bKey.toString(), id };
+ });
},
-};
+});
diff --git a/src/tx/builder/field-types/pointers2.ts b/src/tx/builder/field-types/pointers2.ts
deleted file mode 100644
index fe849ab3ef..0000000000
--- a/src/tx/builder/field-types/pointers2.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { NamePointer as NamePointerString } from '../../../apis/node';
-import { toBytes } from '../../../utils/bytes';
-import {
- Encoded, Encoding, decode, encode,
-} from '../../../utils/encoder';
-import { isAddressValid } from '../../../utils/crypto';
-import { IllegalArgumentError, DecodeError, ArgumentError } from '../../../utils/errors';
-import address, { AddressEncodings, idTagToEncoding } from './address';
-
-const ID_TAG = Buffer.from([1]);
-const DATA_TAG = Buffer.from([2]);
-const DATA_LENGTH_MAX = 1024;
-const addressAny = address(...idTagToEncoding);
-
-// TODO: remove after fixing node types
-type NamePointer = NamePointerString & {
- id: Encoded.Generic;
-};
-
-export default {
- /**
- * Helper function to build pointers for name update TX
- * @param pointers - Array of pointers
- * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
- * @returns Serialized pointers array
- */
- serialize(pointers: NamePointer[]): Buffer[][] {
- if (pointers.length > 32) {
- throw new IllegalArgumentError(`Expected 32 pointers or less, got ${pointers.length} instead`);
- }
- return pointers.map(({ key, id }) => {
- let payload;
- if (isAddressValid(id, ...idTagToEncoding)) payload = [ID_TAG, addressAny.serialize(id)];
- if (isAddressValid(id, Encoding.Bytearray)) {
- const data = decode(id);
- if (data.length > DATA_LENGTH_MAX) {
- throw new ArgumentError('Raw pointer', `shorter than ${DATA_LENGTH_MAX + 1} bytes`, `${data.length} bytes`);
- }
- payload = [DATA_TAG, data];
- }
- if (payload == null) throw new DecodeError(`Unknown AENS pointer value: ${id}`);
- return [toBytes(key), Buffer.concat(payload)];
- });
- },
-
- /**
- * Helper function to read pointers from name update TX
- * @param pointers - Array of pointers
- * @returns Deserialize pointer array
- */
- deserialize(pointers: Array<[key: Buffer, id: Buffer]>): NamePointer[] {
- return pointers.map(([bKey, bId]) => {
- const tag = bId.subarray(0, 1);
- const payload = bId.subarray(1);
- let id;
- if (tag.equals(ID_TAG)) id = addressAny.deserialize(payload);
- if (tag.equals(DATA_TAG)) id = encode(payload, Encoding.Bytearray);
- if (id == null) throw new DecodeError(`Unknown AENS pointer tag: ${tag}`);
- return { key: bKey.toString(), id };
- });
- },
-};
diff --git a/src/tx/builder/schema.ts b/src/tx/builder/schema.ts
index c0ec4ba76a..3d4d9231b1 100644
--- a/src/tx/builder/schema.ts
+++ b/src/tx/builder/schema.ts
@@ -22,7 +22,6 @@ import nameFee from './field-types/name-fee';
import nameId from './field-types/name-id';
import nonce from './field-types/nonce';
import pointers from './field-types/pointers';
-import pointers2 from './field-types/pointers2';
import queryFee from './field-types/query-fee';
import raw from './field-types/raw';
import shortUInt from './field-types/short-u-int';
@@ -70,7 +69,6 @@ interface EntryTreesPoi {
const entryTreesPoi = entry(EntryTag.TreesPoi) as unknown as EntryTreesPoi;
-// TODO: inline after dropping Iris compatibility
const clientTtl = withDefault(60 * 60, shortUInt);
// https://github.com/aeternity/protocol/blob/fd17982/AENS.md#update
/**
@@ -130,7 +128,7 @@ export const txSchema = [{
nonce: nonce('accountId'),
nameId,
nameTtl,
- pointers,
+ pointers: pointers(false),
clientTtl,
fee,
ttl,
@@ -141,7 +139,7 @@ export const txSchema = [{
nonce: nonce('accountId'),
nameId,
nameTtl,
- pointers: pointers2,
+ pointers: pointers(true),
clientTtl,
fee,
ttl,
From 9e47d5c2aa118890a30d61c7859493c3a995b679 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 15 Jun 2024 14:20:33 +1000
Subject: [PATCH 059/149] fix(node,compiler,middleware)!: mark $host as
readonly
BREAKING CHANGE: $host is readonly in generated APIs
It is made to don't break caching.
If you need to change a server URL, create a new server instance instead.
```diff
- node.$host = 'http://example.com';
+ node = new Node('http://example.com');
```
---
package.json | 6 +++---
test/integration/node.ts | 23 ++++++++++++++++++++---
tooling/autorest/middleware-prepare.mjs | 2 --
tooling/autorest/postprocessing.mjs | 7 +++++++
4 files changed, 30 insertions(+), 8 deletions(-)
mode change 100755 => 100644 tooling/autorest/middleware-prepare.mjs
create mode 100644 tooling/autorest/postprocessing.mjs
diff --git a/package.json b/package.json
index c4ed9e837e..8cd1533a6f 100644
--- a/package.json
+++ b/package.json
@@ -46,9 +46,9 @@
"build:assets": "node tooling/fetch-aesophia-cli.mjs",
"build:types": "tsc && node tooling/downlevel/run.mjs",
"build:es": "babel src --config-file ./babel.esm.config.js --out-dir es --extensions .js,.ts --out-file-extension .mjs --source-maps true",
- "build:api:node": "autorest tooling/autorest/node.yaml",
- "build:api:compiler": "node tooling/autorest/compiler-prepare.mjs && autorest tooling/autorest/compiler.yaml",
- "build:api:middleware": "node tooling/autorest/middleware-prepare.mjs && autorest tooling/autorest/middleware.yaml",
+ "build:api:node": "autorest tooling/autorest/node.yaml && node tooling/autorest/postprocessing.mjs node",
+ "build:api:compiler": "node tooling/autorest/compiler-prepare.mjs && autorest tooling/autorest/compiler.yaml && node tooling/autorest/postprocessing.mjs compiler",
+ "build:api:middleware": "node tooling/autorest/middleware-prepare.mjs && autorest tooling/autorest/middleware.yaml && node tooling/autorest/postprocessing.mjs middleware",
"build:api": "npm run build:api:node && npm run build:api:compiler && npm run build:api:middleware",
"build:generate": "ts-node --transpileOnly tooling/generate-schema.ts",
"build": "npm run build:api && npm run build:generate && webpack && npm run build:types && npm run build:es && npm run build:assets",
diff --git a/test/integration/node.ts b/test/integration/node.ts
index 2124c1debd..738057ea6e 100644
--- a/test/integration/node.ts
+++ b/test/integration/node.ts
@@ -2,7 +2,7 @@ import { describe, it, before } from 'mocha';
import { expect } from 'chai';
import { stub } from 'sinon';
import { RestError } from '@azure/core-rest-pipeline';
-import { FullOperationResponse } from '@azure/core-client';
+import { FullOperationResponse, OperationArguments, OperationSpec } from '@azure/core-client';
import { url } from '.';
import {
AeSdkBase, Node, NodeNotFoundError, MemoryAccount, buildTx, Tag,
@@ -84,6 +84,12 @@ describe('Node client', () => {
.to.be.rejectedWith(RestError, 'v3/transactions error: Invalid tx (nonce_too_high)');
});
+ it('can\'t change $host', async () => {
+ const n = new Node(url);
+ // @ts-expect-error $host should be readonly
+ n.$host = 'http://example.com';
+ });
+
it('returns recent gas prices', async () => {
const example: Awaited> = [
{ minGasPrice: 0n, minutes: 5, utilization: 0 },
@@ -98,9 +104,20 @@ describe('Node client', () => {
});
it('doesn\'t remember failed version request', async () => {
- const n = new Node('https://test.stg.aepps.com');
+ let shouldFail = true;
+ class CustomNode extends Node {
+ override sendOperationRequest = async (
+ args: OperationArguments,
+ spec: OperationSpec,
+ ): Promise => {
+ if (shouldFail) spec = { ...spec, path: `https://test.stg.aepps.com${spec.path}` };
+ return super.sendOperationRequest(args, spec);
+ };
+ }
+
+ const n = new CustomNode(url);
await expect(n.getTopHeader()).to.be.rejectedWith('v3/status error: 404 status code');
- n.$host = url;
+ shouldFail = false;
expect(await n.getTopHeader()).to.be.an('object');
});
diff --git a/tooling/autorest/middleware-prepare.mjs b/tooling/autorest/middleware-prepare.mjs
old mode 100755
new mode 100644
index afeaeab394..023bff4496
--- a/tooling/autorest/middleware-prepare.mjs
+++ b/tooling/autorest/middleware-prepare.mjs
@@ -1,5 +1,3 @@
-#!/usr/bin/env node
-
import { spawnSync } from 'child_process';
// eslint-disable-next-line import/extensions
import restoreFile from '../restore-file.mjs';
diff --git a/tooling/autorest/postprocessing.mjs b/tooling/autorest/postprocessing.mjs
new file mode 100644
index 0000000000..1f76d115cd
--- /dev/null
+++ b/tooling/autorest/postprocessing.mjs
@@ -0,0 +1,7 @@
+import fs from 'fs';
+
+const name = process.argv.at(-1);
+const path = `./src/apis/${name}/${name}.ts`;
+let content = await fs.promises.readFile(path, { encoding: 'utf-8' });
+content = content.replace(/ {2}\$host: string;/, ' readonly $host: string;');
+await fs.promises.writeFile(path, content);
From d7dc41407370bbb8c273f4b29e733abfee05bf99 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 18 Jun 2024 02:50:16 +0000
Subject: [PATCH 060/149] chore(deps): bump ws from 8.17.0 to 8.17.1
Bumps [ws](https://github.com/websockets/ws) from 8.17.0 to 8.17.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.17.0...8.17.1)
---
updated-dependencies:
- dependency-name: ws
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index fb99237377..1066089b06 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14065,9 +14065,9 @@
"dev": true
},
"node_modules/ws": {
- "version": "8.17.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
- "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"engines": {
"node": ">=10.0.0"
},
From ced1cf8945019de4b442e00fbb22bdb392764da2 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Sat, 15 Jun 2024 18:04:25 +1000
Subject: [PATCH 061/149] docs(node): explain how to use debug dry-run instead
protected
---
examples/README.md | 1 +
.../node/dry-run-using-debug-endpoint.mjs | 67 +++++++++++++++++++
mkdocs.yml | 1 +
test/examples.sh | 1 +
4 files changed, 70 insertions(+)
create mode 100755 examples/node/dry-run-using-debug-endpoint.mjs
diff --git a/examples/README.md b/examples/README.md
index bda25c0357..e81a5284a6 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -17,3 +17,4 @@ Create a [new issue](https://github.com/aeternity/aepp-sdk-js/issues/new) to sug
2. [Transfer AE](node/transfer-ae.mjs)
3. [Paying for spend tx](node/paying-for-spend-tx.mjs)
4. [Paying for contract call tx](node/paying-for-contract-call-tx.mjs)
+5. [Dry-run using debug endpoint](node/dry-run-using-debug-endpoint.mjs)
diff --git a/examples/node/dry-run-using-debug-endpoint.mjs b/examples/node/dry-run-using-debug-endpoint.mjs
new file mode 100755
index 0000000000..a9cdffa106
--- /dev/null
+++ b/examples/node/dry-run-using-debug-endpoint.mjs
@@ -0,0 +1,67 @@
+#!/usr/bin/env node
+
+/*
+# Dry-run using debug endpoint
+By default, sdk uses [`protectedDryRunTxs`] endpoint limited to 6e6 gas by default.
+It means if you try to dry-run a very big transaction (including intensive computations, or
+returning much data) it may be rejected with `Invocation failed: "Out of gas"` error.
+
+Ways to overcome this:
+- split transactions into multiple smaller transactions;
+- increase a gas limit for protected dry-runs by setting [`http.external.gas_limit`] in aenode
+configuration;
+- use [`dryRunTxs`] debug endpoint with the same api as a protected one.
+
+The last options would work only for self-hosted nodes or testnet.aeternity.io which have debug
+endpoints exposed via [`http.endpoints.dry-run`]. Also, sdk doesn't know anything about debug
+endpoints. This script shows how to use a debug dry-run in sdk.
+
+[`protectedDryRunTxs`]: https://api-docs.aeternity.io/#/external/ProtectedDryRunTxs
+
+[`http.external.gas_limit`]: https://docs.aeternity.io/en/stable/configuration/
+[`http.endpoints.dry-run`]: https://docs.aeternity.io/en/stable/configuration/
+[`dryRunTxs`]: https://api-docs.aeternity.io/#/internal/DryRunTxs
+*/
+
+import {
+ Node, AeSdk, MemoryAccount, CompilerHttp, Contract,
+} from '@aeternity/aepp-sdk';
+
+/*
+The idea is to extend the base Node class overriding the method that will forward a request
+to a debug endpoint in case it is a dry-run.
+*/
+class CustomNode extends Node {
+ sendOperationRequest(args, spec) {
+ if (spec.path === '/v3/dry-run') {
+ spec = {
+ ...spec,
+ path: 'https://testnet.aeternity.io/v3/debug/transactions/dry-run',
+ };
+ }
+ return super.sendOperationRequest(args, spec);
+ }
+}
+
+// Let's set up an sdk and contract to test this.
+const sourceCode = `
+contract Test =
+ entrypoint getArg(x : map(string, int)) = x
+`;
+const node = new CustomNode('https://testnet.aeternity.io');
+const aeSdk = new AeSdk({
+ nodes: [{ name: 'testnet', instance: node }],
+ accounts: [new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf')],
+ onCompiler: new CompilerHttp('https://v8.compiler.aepps.com'),
+});
+
+const contract = await Contract.initialize({ ...aeSdk.getContext(), sourceCode });
+const deployInfo = await contract.$deploy([]);
+console.log('Contract deployed at', deployInfo.address);
+
+// This map is bigger than allowed by the default gas limit
+const map = new Map(new Array(20000).fill().map((_, idx) => [`bar${idx}`, 43]));
+// Sdk needs to know that we have a different gas limit, so `gasMax` is provided.
+const { result: { gasUsed }, tx: { fee } } = await contract.getArg(map, { gasMax: 6e10 });
+// The call succeeded and the gas used more than 6e6, which means that request forwarding works!
+console.log('Call result', fee, gasUsed);
diff --git a/mkdocs.yml b/mkdocs.yml
index eaaebaff16..fac8c43373 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -73,6 +73,7 @@ nav:
- examples/node/paying-for-contract-call-tx.md
- examples/node/paying-for-spend-tx.md
- examples/node/account-generalized.md
+ - examples/node/dry-run-using-debug-endpoint.md
- Browser:
- 'SDK tools': examples/browser/tools/index.html
- 'Aepp example': examples/browser/aepp/index.html
diff --git a/test/examples.sh b/test/examples.sh
index a222af6969..aa6c490630 100755
--- a/test/examples.sh
+++ b/test/examples.sh
@@ -27,6 +27,7 @@ run_node_example contract-interaction.mjs
run_node_example paying-for-contract-call-tx.mjs
run_node_example paying-for-spend-tx.mjs
run_node_example transfer-ae.mjs
+run_node_example dry-run-using-debug-endpoint.mjs
# TODO: revisit --ignore-scripts after solving https://github.com/npm/cli/issues/4202
perl -i -pe 's/"prepare"/"rem-prepare"/g' package.json
From a2ab2f4b0d7556ae0abc5e3e7bfe7177fac81553 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Mon, 17 Jun 2024 11:27:13 +1000
Subject: [PATCH 062/149] docs: add Oracle example in nodejs
---
.eslintrc.js | 3 ++
examples/README.md | 1 +
examples/node/oracle.mjs | 50 +++++++++++++++++++
examples/node/paying-for-contract-call-tx.mjs | 0
examples/node/paying-for-spend-tx.mjs | 0
mkdocs.yml | 1 +
test/examples.sh | 1 +
7 files changed, 56 insertions(+)
create mode 100755 examples/node/oracle.mjs
mode change 100644 => 100755 examples/node/paying-for-contract-call-tx.mjs
mode change 100644 => 100755 examples/node/paying-for-spend-tx.mjs
diff --git a/.eslintrc.js b/.eslintrc.js
index c468887fb0..415da686bc 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -112,6 +112,9 @@ module.exports = {
'no-restricted-globals': 'off',
'import/no-unresolved': 'off',
},
+ }, {
+ files: 'examples/node/**/*',
+ rules: { 'no-restricted-syntax': 'off' },
}, {
files: ['tooling/**/*', 'examples/node/*', '**/*.config.js', '.eslintrc.js'],
rules: {
diff --git a/examples/README.md b/examples/README.md
index e81a5284a6..5611543d0d 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -18,3 +18,4 @@ Create a [new issue](https://github.com/aeternity/aepp-sdk-js/issues/new) to sug
3. [Paying for spend tx](node/paying-for-spend-tx.mjs)
4. [Paying for contract call tx](node/paying-for-contract-call-tx.mjs)
5. [Dry-run using debug endpoint](node/dry-run-using-debug-endpoint.mjs)
+6. [Oracle](node/oracle.mjs)
diff --git a/examples/node/oracle.mjs b/examples/node/oracle.mjs
new file mode 100755
index 0000000000..b4755bc82b
--- /dev/null
+++ b/examples/node/oracle.mjs
@@ -0,0 +1,50 @@
+#!/usr/bin/env node
+/*
+# Register and query Oracle
+
+Here we will register and query an oracle returning [factorial] of a number.
+Read more about oracles in the [guide] section.
+
+[factorial]: https://en.wikipedia.org/wiki/Factorial
+[guide]: ../../guides/oracles.md
+*/
+import {
+ Node, AeSdk, MemoryAccount, Oracle, OracleClient,
+} from '@aeternity/aepp-sdk';
+
+// Let's prepare sdk and account for Oracle
+const node = new Node('https://testnet.aeternity.io');
+const oracleAccount = MemoryAccount.generate();
+const aeSdk = new AeSdk({
+ nodes: [{ name: 'testnet', instance: node }],
+ accounts: [new MemoryAccount('sk_2CuofqWZHrABCrM7GY95YSQn8PyFvKQadnvFnpwhjUnDCFAWmf')],
+});
+await aeSdk.spend(1e14, oracleAccount.address);
+console.log('Spend done');
+
+// Creating and registering Oracle
+const oracle = new Oracle(oracleAccount, aeSdk.getContext());
+await oracle.register('factorial argument', 'factorial value');
+console.log('Oracle registered');
+
+// Start listening for queries and handle them
+const stop = oracle.handleQueries((query) => {
+ const arg = BigInt(query.decodedQuery);
+ if (arg < 0) return 'argument can\'t be negative';
+ let res = 1n;
+ for (let i = 2n; i <= arg; i += 1n) {
+ res *= i;
+ }
+ return res.toString();
+});
+
+// Creating an Oracle client, making some queries.
+// Assume it is done in a separate script/process/computer.
+const oracleClient = new OracleClient(oracle.address, aeSdk.getContext());
+for (const el of [1, 4, 20, 70, -5]) {
+ const response = await oracleClient.query(el.toString());
+ console.log(`query ${el}, response ${response}`);
+}
+
+// We don't need to handle queries anymore, so we can stop the listener.
+stop();
diff --git a/examples/node/paying-for-contract-call-tx.mjs b/examples/node/paying-for-contract-call-tx.mjs
old mode 100644
new mode 100755
diff --git a/examples/node/paying-for-spend-tx.mjs b/examples/node/paying-for-spend-tx.mjs
old mode 100644
new mode 100755
diff --git a/mkdocs.yml b/mkdocs.yml
index fac8c43373..71f23eb090 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -74,6 +74,7 @@ nav:
- examples/node/paying-for-spend-tx.md
- examples/node/account-generalized.md
- examples/node/dry-run-using-debug-endpoint.md
+ - examples/node/oracle.md
- Browser:
- 'SDK tools': examples/browser/tools/index.html
- 'Aepp example': examples/browser/aepp/index.html
diff --git a/test/examples.sh b/test/examples.sh
index aa6c490630..cf31f4d548 100755
--- a/test/examples.sh
+++ b/test/examples.sh
@@ -28,6 +28,7 @@ run_node_example paying-for-contract-call-tx.mjs
run_node_example paying-for-spend-tx.mjs
run_node_example transfer-ae.mjs
run_node_example dry-run-using-debug-endpoint.mjs
+run_node_example oracle.mjs
# TODO: revisit --ignore-scripts after solving https://github.com/npm/cli/issues/4202
perl -i -pe 's/"prepare"/"rem-prepare"/g' package.json
From c333ce8991c4e53867c7e19bf0d5e0eab1b2ca86 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Mon, 17 Jun 2024 13:30:51 +1000
Subject: [PATCH 063/149] docs: use consistent imports in errors guide
---
docs/guides/error-handling.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/guides/error-handling.md b/docs/guides/error-handling.md
index 1a1c41816f..fe6a01809f 100644
--- a/docs/guides/error-handling.md
+++ b/docs/guides/error-handling.md
@@ -137,7 +137,7 @@ try {
}
// using generic error classes
-const {AensError, TransactionError, BaseError } = require('@aeternity/aepp-sdk')
+import { AensError, TransactionError, BaseError } from '@aeternity/aepp-sdk'
try {
const spendTxResult = await aeSdk.spend(1, "ak_2tv", { onAccount: payerAccount})
From ea7b4fc13f3f4090365a86f21b045f7182165c4d Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Tue, 18 Jun 2024 13:44:48 +1000
Subject: [PATCH 064/149] docs(wallet): fix path in extension example
---
examples/browser/wallet-web-extension/vue.config.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/browser/wallet-web-extension/vue.config.js b/examples/browser/wallet-web-extension/vue.config.js
index 055e27d397..84b366fbf8 100644
--- a/examples/browser/wallet-web-extension/vue.config.js
+++ b/examples/browser/wallet-web-extension/vue.config.js
@@ -28,8 +28,8 @@ module.exports = {
configureWebpack: {
resolve: {
alias: {
- '@azure/core-client': '@azure/core-client/dist-esm/src/index.js',
- '@azure/core-rest-pipeline': '@azure/core-rest-pipeline/dist-esm/src/index.js',
+ '@azure/core-client': '@azure/core-client/dist/browser/index.js',
+ '@azure/core-rest-pipeline': '@azure/core-rest-pipeline/dist/browser/index.js',
},
},
},
From 45f3d94da3027913d05872adf48b269c7c0d7d01 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Tue, 18 Jun 2024 13:46:33 +1000
Subject: [PATCH 065/149] docs: update min TS version in compat table
---
docs/compatibility.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/compatibility.md b/docs/compatibility.md
index 12da5924e8..7ca537e4cc 100644
--- a/docs/compatibility.md
+++ b/docs/compatibility.md
@@ -17,7 +17,7 @@ This package is expected to work in these environments:
| create-react-native-app@3 (webpack@4) | mjs build is not compatible with webpack@4 [cra-webpack-4] |
| meteor@2 | |
| jest@27.5.1 | requires an environment where Buffer is instanceof Uint8Array [jest] |
-| typescript>=4.1, ideally >=4.7 | requires `tsconfig.json` adjustments [typescript] |
+| typescript>=4.2, ideally >=4.7 | requires `tsconfig.json` adjustments [typescript] |
| vite@3 | requires `build.target: 'es2020'` and `bigint: true` in vite.config.js [vite] |
[webpack-4]: https://github.com/webpack/webpack/issues/7482#issuecomment-394884837
From 5e64ec9a22246df80846b715dfe3adca2b28ef4c Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Tue, 18 Jun 2024 14:27:42 +1000
Subject: [PATCH 066/149] chore!: remove keystore implementation
BREAKING CHANGE: `recover`, `dump` removed (AEX-3 keystore implementation)
Copy the removed implementation to your project or add a previous sdk as a separate dependency
```json
"dependencies": {
"@aeternity/aepp-sdk": "^14.0.0",
"@aeternity/aepp-sdk-13": "npm:@aeternity/aepp-sdk@^13.3.2"
}
```
---
docs/guides/error-handling.md | 1 -
package-lock.json | 406 +++-------------------------------
package.json | 1 -
src/index-browser.ts | 4 +-
src/utils/errors.ts | 10 -
src/utils/keystore.ts | 189 ----------------
test/unit/keystore.ts | 52 -----
7 files changed, 29 insertions(+), 634 deletions(-)
delete mode 100644 src/utils/keystore.ts
delete mode 100644 test/unit/keystore.ts
diff --git a/docs/guides/error-handling.md b/docs/guides/error-handling.md
index fe6a01809f..bd151a48d5 100644
--- a/docs/guides/error-handling.md
+++ b/docs/guides/error-handling.md
@@ -67,7 +67,6 @@ BaseError
├── CryptographyError
│ ├── InvalidChecksumError
│ ├── DerivationError
-│ ├── InvalidPasswordError
│ ├── MerkleTreeHashMismatchError
│ ├── MissingNodeInTreeError
│ ├── UnknownNodeLengthError
diff --git a/package-lock.json b/package-lock.json
index 1066089b06..010f81e223 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,6 @@
"license": "ISC",
"dependencies": {
"@aeternity/aepp-calldata": "^1.7.0",
- "@aeternity/argon2": "^0.0.1",
"@aeternity/uuid": "^0.0.1",
"@azure/core-client": "^1.9.2",
"@azure/core-rest-pipeline": "^1.16.0",
@@ -108,20 +107,6 @@
"sha.js": "^2.4.11"
}
},
- "node_modules/@aeternity/argon2": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/@aeternity/argon2/-/argon2-0.0.1.tgz",
- "integrity": "sha512-xC+znnq5sL3FiQcGWapFqKAZpJJBXnFhW8+pP7OE2xL7zH15X66jzdgqi1LHRKJM6UHxknqKQX/pqgUrpLruxw==",
- "dependencies": {
- "@aeternity/argon2-browser": "^0.1.2",
- "argon2": "^0.28.7"
- }
- },
- "node_modules/@aeternity/argon2-browser": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@aeternity/argon2-browser/-/argon2-browser-0.1.2.tgz",
- "integrity": "sha512-nL3xZYf0JXVIm6HFyppXn9fgHjmSjYa1PBYXzD1/pLbECdikD+r3IuhIR3dAwn8nq9xShjHPr9ZnJUbbUvva4g=="
- },
"node_modules/@aeternity/uuid": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/@aeternity/uuid/-/uuid-0.0.1.tgz",
@@ -2856,81 +2841,6 @@
"resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.12.0.tgz",
"integrity": "sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA=="
},
- "node_modules/@mapbox/node-pre-gyp": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
- "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
- "dependencies": {
- "detect-libc": "^2.0.0",
- "https-proxy-agent": "^5.0.0",
- "make-dir": "^3.1.0",
- "node-fetch": "^2.6.7",
- "nopt": "^5.0.0",
- "npmlog": "^5.0.1",
- "rimraf": "^3.0.2",
- "semver": "^7.3.5",
- "tar": "^6.1.11"
- },
- "bin": {
- "node-pre-gyp": "bin/node-pre-gyp"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@microsoft/tsdoc": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz",
@@ -3007,14 +2917,6 @@
"node": ">= 8"
}
},
- "node_modules/@phc/format": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@phc/format/-/format-1.0.0.tgz",
- "integrity": "sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@polka/url": {
"version": "1.0.0-next.25",
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz",
@@ -3659,11 +3561,6 @@
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
"node_modules/acorn": {
"version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
@@ -3796,6 +3693,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -3843,50 +3741,18 @@
"node": ">=8"
}
},
- "node_modules/aproba": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
- },
"node_modules/archy": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
"integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
"dev": true
},
- "node_modules/are-we-there-yet": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
- "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
- "deprecated": "This package is no longer supported.",
- "dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
"dev": true
},
- "node_modules/argon2": {
- "version": "0.28.7",
- "resolved": "https://registry.npmjs.org/argon2/-/argon2-0.28.7.tgz",
- "integrity": "sha512-pvsScM3Fq7b+jolXkZHh8nRQx0uD/WeelnwYPMRpn4pAydoa1gqeL/KRdWAag4Hnu1TJNBTAfqyTjV+ZHwNnYA==",
- "hasInstallScript": true,
- "dependencies": {
- "@mapbox/node-pre-gyp": "^1.0.9",
- "@phc/format": "^1.0.0",
- "node-addon-api": "^5.0.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -4243,7 +4109,8 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
},
"node_modules/base-x": {
"version": "4.0.0",
@@ -4657,14 +4524,6 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/chrome-trace-event": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
@@ -4747,14 +4606,6 @@
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
- "node_modules/color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "bin": {
- "color-support": "bin.js"
- }
- },
"node_modules/colorette": {
"version": "2.0.20",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
@@ -4795,7 +4646,8 @@
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
},
"node_modules/concat-stream": {
"version": "2.0.0",
@@ -4818,11 +4670,6 @@
"integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
"dev": true
},
- "node_modules/console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
- },
"node_modules/conventional-changelog": {
"version": "3.1.25",
"resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz",
@@ -6128,11 +5975,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
- },
"node_modules/detect-indent": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
@@ -6146,6 +5988,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
"integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -6414,7 +6257,8 @@
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
},
"node_modules/end-of-stream": {
"version": "1.4.4",
@@ -7539,33 +7383,6 @@
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true
},
- "node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fs-minipass/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/fs-readdir-recursive": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
@@ -7575,7 +7392,8 @@
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
},
"node_modules/fsevents": {
"version": "2.3.3",
@@ -7627,31 +7445,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/gauge": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
- "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
- "deprecated": "This package is no longer supported.",
- "dependencies": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.2",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.1",
- "object-assign": "^4.1.1",
- "signal-exit": "^3.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gauge/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
- },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -8076,6 +7869,7 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -8113,6 +7907,7 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -8122,6 +7917,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -8345,11 +8141,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
- },
"node_modules/hasha": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz",
@@ -8739,6 +8530,7 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -8910,6 +8702,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -9998,53 +9791,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/minipass": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
- "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minizlib/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/mkdirp-classic": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
@@ -10414,11 +10160,6 @@
"node": ">=10"
}
},
- "node_modules/node-addon-api": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
- "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
- },
"node_modules/node-environment-flags": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz",
@@ -10438,25 +10179,6 @@
"semver": "bin/semver"
}
},
- "node_modules/node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
"node_modules/node-gyp-build": {
"version": "4.8.1",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz",
@@ -10509,20 +10231,6 @@
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
"dev": true
},
- "node_modules/nopt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/normalize-package-data": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
@@ -10586,18 +10294,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/npmlog": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
- "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
- "deprecated": "This package is no longer supported.",
- "dependencies": {
- "are-we-there-yet": "^2.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^3.0.0",
- "set-blocking": "^2.0.0"
- }
- },
"node_modules/nth-check": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
@@ -10867,14 +10563,6 @@
"node": ">=6"
}
},
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/object-inspect": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
@@ -10999,6 +10687,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
"dependencies": {
"wrappy": "1"
}
@@ -11182,6 +10871,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -11657,6 +11347,7 @@
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -11902,6 +11593,7 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
"dependencies": {
"glob": "^7.1.3"
},
@@ -12045,7 +11737,8 @@
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "dev": true
},
"node_modules/set-function-length": {
"version": "1.2.2",
@@ -12593,6 +12286,7 @@
"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==",
+ "dev": true,
"dependencies": {
"safe-buffer": "~5.2.0"
}
@@ -12601,6 +12295,7 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -12670,6 +12365,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -12755,22 +12451,6 @@
"node": ">=6"
}
},
- "node_modules/tar": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
- "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
- "dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^5.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/tar-fs": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
@@ -12805,11 +12485,6 @@
"node": ">=6"
}
},
- "node_modules/tar/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/terser": {
"version": "5.31.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz",
@@ -13025,11 +12700,6 @@
"node": ">=6"
}
},
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
"node_modules/trim-newlines": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
@@ -13486,7 +13156,8 @@
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
},
"node_modules/utila": {
"version": "0.4.0",
@@ -13564,11 +13235,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
"node_modules/webpack": {
"version": "5.91.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz",
@@ -13891,15 +13557,6 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -13956,14 +13613,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/wide-align": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
- "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
- "dependencies": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
"node_modules/wildcard": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
@@ -14044,7 +13693,8 @@
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
},
"node_modules/write-file-atomic": {
"version": "3.0.3",
diff --git a/package.json b/package.json
index 8cd1533a6f..958320e2cb 100644
--- a/package.json
+++ b/package.json
@@ -76,7 +76,6 @@
],
"dependencies": {
"@aeternity/aepp-calldata": "^1.7.0",
- "@aeternity/argon2": "^0.0.1",
"@aeternity/uuid": "^0.0.1",
"@azure/core-client": "^1.9.2",
"@azure/core-rest-pipeline": "^1.16.0",
diff --git a/src/index-browser.ts b/src/index-browser.ts
index 749336e3c3..74ede9597d 100644
--- a/src/index-browser.ts
+++ b/src/index-browser.ts
@@ -14,8 +14,6 @@ export {
signJwt, unpackJwt, verifyJwt, isJwt, ensureJwt,
} from './utils/jwt';
export type { Jwt } from './utils/jwt';
-export { recover, dump } from './utils/keystore';
-export type { Keystore } from './utils/keystore';
export { toBytes } from './utils/bytes';
export {
buildTx, buildTxAsync, buildTxHash, unpackTx, buildContractIdByContractTx,
@@ -105,7 +103,7 @@ export {
InactiveContractError, InvalidMethodInvocationError, MissingContractAddressError,
MissingContractDefError, MissingFunctionNameError, NodeInvocationError,
NoSuchContractFunctionError, NotPayableFunctionError, MissingEventDefinitionError,
- AmbiguousEventDefinitionError, InvalidChecksumError, InvalidPasswordError,
+ AmbiguousEventDefinitionError, InvalidChecksumError,
MerkleTreeHashMismatchError, MissingNodeInTreeError, UnknownNodeLengthError,
UnknownPathNibbleError, DuplicateNodeError, NodeNotFoundError, DecodeError, PayloadLengthError,
DryRunError, IllegalBidFeeError, InvalidSignatureError, PrefixNotFoundError, SchemaNotFoundError,
diff --git a/src/utils/errors.ts b/src/utils/errors.ts
index e48530285f..5a0c0e4b6e 100644
--- a/src/utils/errors.ts
+++ b/src/utils/errors.ts
@@ -586,16 +586,6 @@ export class InvalidChecksumError extends CryptographyError {
}
}
-/**
- * @category exception
- */
-export class InvalidPasswordError extends CryptographyError {
- constructor() {
- super('Invalid password or nonce');
- this.name = 'InvalidPasswordError';
- }
-}
-
/**
* @category exception
*/
diff --git a/src/utils/keystore.ts b/src/utils/keystore.ts
deleted file mode 100644
index c6c848849b..0000000000
--- a/src/utils/keystore.ts
+++ /dev/null
@@ -1,189 +0,0 @@
-import nacl from 'tweetnacl';
-import { v4 as uuid } from '@aeternity/uuid';
-import { hash, argon2id } from '@aeternity/argon2';
-import { getAddressFromPriv } from './crypto';
-import { InvalidPasswordError } from './errors';
-
-const DERIVED_KEY_FUNCTIONS = {
- async argon2id(
- pass: string | Uint8Array,
- salt: string | Uint8Array,
- params: Partial,
- ): Promise {
- const { memlimit_kib: memoryCost, opslimit: timeCost } = params;
-
- return hash(pass, {
- hashLength: 32,
- salt,
- timeCost,
- memoryCost,
- type: argon2id,
- });
- },
-};
-
-const CRYPTO_FUNCTIONS = {
- 'xsalsa20-poly1305': {
- encrypt: nacl.secretbox,
- decrypt(...args: Parameters): Uint8Array {
- const res = nacl.secretbox.open(...args);
- if (res == null) throw new InvalidPasswordError();
- return res;
- },
- },
-};
-
-export interface Keystore {
- name: string;
- version: 1;
- public_key: string;
- id: string;
- crypto: {
- secret_type: 'ed25519';
- symmetric_alg: keyof typeof CRYPTO_FUNCTIONS;
- ciphertext: string;
- cipher_params: {
- nonce: string;
- };
- /**
- * Key derivation function name.
- */
- kdf: keyof typeof DERIVED_KEY_FUNCTIONS;
- /**
- * Key derivation function parameters.
- */
- kdf_params: {
- memlimit_kib: number;
- opslimit: number;
- parallelism: number;
- salt: string;
- };
- };
-}
-
-const CRYPTO_DEFAULTS = {
- secret_type: 'ed25519',
- symmetric_alg: 'xsalsa20-poly1305',
- kdf: 'argon2id',
- kdf_params: {
- memlimit_kib: 65536,
- opslimit: 3,
- parallelism: 1,
- },
-} as const;
-
-/**
- * Symmetric private key encryption using secret (derived) key.
- * @category keystore
- * @param plaintext - Data to be encrypted.
- * @param key - Secret key.
- * @param nonce - Randomly generated nonce.
- * @param algo - Encryption algorithm.
- * @returns Encrypted data.
- */
-function encrypt(
- plaintext: Uint8Array,
- key: Uint8Array,
- nonce: Uint8Array,
- algo: keyof typeof CRYPTO_FUNCTIONS = CRYPTO_DEFAULTS.symmetric_alg,
-): Uint8Array {
- return CRYPTO_FUNCTIONS[algo].encrypt(plaintext, nonce, key);
-}
-
-/**
- * Symmetric private key decryption using secret (derived) key.
- * @category keystore
- * @param ciphertext - Data to be decrypted.
- * @param key - Secret key.
- * @param nonce - Nonce from key-object.
- * @param algo - Encryption algorithm.
- * @returns Decrypted data.
- */
-function decrypt(
- ciphertext: Uint8Array,
- key: Uint8Array,
- nonce: Uint8Array,
- algo: keyof typeof CRYPTO_FUNCTIONS = CRYPTO_DEFAULTS.symmetric_alg,
-): Uint8Array {
- return CRYPTO_FUNCTIONS[algo].decrypt(ciphertext, nonce, key);
-}
-
-/**
- * Derive secret key from password with key derivation function.
- * @category keystore
- * @param password - User-supplied password.
- * @param nonce - Randomly generated nonce.
- * @param kdf - Key derivation function.
- * @param kdfParams - KDF parameters.
- * @returns Secret key derived from password.
- */
-async function deriveKey(
- password: string | Uint8Array,
- nonce: string | Uint8Array,
- kdf: Keystore['crypto']['kdf'],
- kdfParams: Omit,
-): Promise {
- return DERIVED_KEY_FUNCTIONS[kdf](password, nonce, kdfParams);
-}
-
-/**
- * Recover plaintext private key from secret-storage key object.
- * @category keystore
- * @param password - Keystore object password.
- * @param keystore - Keystore object.
- * @returns Plaintext private key.
- */
-export async function recover(
- password: string | Uint8Array,
- { crypto }: Keystore,
-): Promise {
- const salt = Buffer.from(crypto.kdf_params.salt, 'hex');
- return Buffer.from(decrypt(
- Buffer.from(crypto.ciphertext, 'hex'),
- await deriveKey(password, salt, crypto.kdf, crypto.kdf_params),
- Buffer.from(crypto.cipher_params.nonce, 'hex'),
- crypto.symmetric_alg,
- )).toString('hex');
-}
-
-/**
- * Export private key to keystore secret-storage format.
- * @category keystore
- * @param name - Key name.
- * @param password - User-supplied password.
- * @param privateKey - Private key as hex-string or a Buffer.
- * @param nonce - Randomly generated 24byte nonce.
- * @param salt - Randomly generated 16byte salt.
- * @param options - Encryption parameters.
- */
-export async function dump(
- name: string,
- password: string | Uint8Array,
- privateKey: string | Uint8Array,
- nonce: Uint8Array = nacl.randomBytes(24),
- salt: Uint8Array = nacl.randomBytes(16),
- options?: Partial,
-): Promise {
- const opt = { ...CRYPTO_DEFAULTS, ...options };
- const derivedKey = await deriveKey(password, salt, opt.kdf, opt.kdf_params);
- const payload = typeof privateKey === 'string' ? Buffer.from(privateKey, 'hex') : privateKey;
- return {
- name,
- version: 1,
- public_key: getAddressFromPriv(payload),
- id: uuid(),
- crypto: {
- secret_type: opt.secret_type,
- symmetric_alg: opt.symmetric_alg,
- ciphertext: Buffer.from(
- encrypt(payload, derivedKey, nonce, opt.symmetric_alg),
- ).toString('hex'),
- cipher_params: { nonce: Buffer.from(nonce).toString('hex') },
- kdf: opt.kdf,
- kdf_params: {
- ...opt.kdf_params,
- salt: Buffer.from(salt).toString('hex'),
- },
- },
- };
-}
diff --git a/test/unit/keystore.ts b/test/unit/keystore.ts
deleted file mode 100644
index db6affc8b2..0000000000
--- a/test/unit/keystore.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import '..';
-import { describe, it } from 'mocha';
-import { expect } from 'chai';
-import {
- dump, recover, Keystore, getAddressFromPriv, InvalidPasswordError,
-} from '../../src';
-
-const password = 'test';
-const secretKey = Buffer.from('35bdc4b31d75aebea2693760a2c96afe87d99dc571ddc4666db0ac8a2b59b30ef1e0c4e567f3d08eff8330c57d70ad457e9f31fa221e14fcc851273ec9af50ae', 'hex');
-const address = getAddressFromPriv(secretKey);
-const keystoreStatic = {
- name: 'test',
- version: 1,
- public_key: address,
- id: '3459181e-f5ab-4506-acfa-cf7a2d41cdaf',
- crypto: {
- secret_type: 'ed25519',
- symmetric_alg: 'xsalsa20-poly1305',
- ciphertext: '78f77af6d1fe6cc9fad8813cd6309dbe7ac380137314c3b961bfa69fb67ccea259e5ef8b18b9014de79ebdae79b48e6b4564be1ce96e807c1458ea51d511d2d1764599338887e65987a160259eda69fb',
- cipher_params: { nonce: '0155ae65dcafdd1ec8bfd776ac351fe3da52767d3ddd9da8' },
- kdf: 'argon2id',
- kdf_params: {
- memlimit_kib: 65536,
- opslimit: 3,
- parallelism: 1,
- salt: 'ed7866c1f3bb16b077ad835b19eb510c',
- },
- },
-};
-
-describe('Keystore', () => {
- let keystore: Keystore;
-
- it('dump account to keystore object', async () => {
- keystore = await dump('test', password, secretKey);
- expect(keystore.public_key).to.be.equal(address);
- });
-
- it('dump accepts hex', async () => {
- const nonce = Buffer.from(keystoreStatic.crypto.cipher_params.nonce, 'hex');
- const salt = Buffer.from(keystoreStatic.crypto.kdf_params.salt, 'hex');
- const k = await dump('test', password, secretKey.toString('hex'), nonce, salt);
- k.id = keystoreStatic.id;
- expect(k).to.be.eql(keystoreStatic);
- });
-
- it('restore account from keystore object', async () => expect(await recover(password, keystore))
- .to.be.equal(secretKey.toString('hex')));
-
- it('use invalid keystore password', () => expect(recover(`${password}1`, keystore))
- .to.be.rejectedWith(InvalidPasswordError, 'Invalid password or nonce'));
-});
From be9963a9ea109c2d1b631cc52d5ea7365cea5559 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Tue, 18 Jun 2024 14:38:12 +1000
Subject: [PATCH 067/149] docs: fix dry-run links in mkdocs
---
examples/node/dry-run-using-debug-endpoint.mjs | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/examples/node/dry-run-using-debug-endpoint.mjs b/examples/node/dry-run-using-debug-endpoint.mjs
index a9cdffa106..03147f5bad 100755
--- a/examples/node/dry-run-using-debug-endpoint.mjs
+++ b/examples/node/dry-run-using-debug-endpoint.mjs
@@ -2,25 +2,25 @@
/*
# Dry-run using debug endpoint
-By default, sdk uses [`protectedDryRunTxs`] endpoint limited to 6e6 gas by default.
+By default, sdk uses [protectedDryRunTxs] endpoint limited to 6e6 gas by default.
It means if you try to dry-run a very big transaction (including intensive computations, or
returning much data) it may be rejected with `Invocation failed: "Out of gas"` error.
Ways to overcome this:
- split transactions into multiple smaller transactions;
-- increase a gas limit for protected dry-runs by setting [`http.external.gas_limit`] in aenode
+- increase a gas limit for protected dry-runs by setting [http.external.gas_limit] in aenode
configuration;
-- use [`dryRunTxs`] debug endpoint with the same api as a protected one.
+- use [dryRunTxs] debug endpoint with the same api as a protected one.
The last options would work only for self-hosted nodes or testnet.aeternity.io which have debug
-endpoints exposed via [`http.endpoints.dry-run`]. Also, sdk doesn't know anything about debug
+endpoints exposed via [http.endpoints.dry-run]. Also, sdk doesn't know anything about debug
endpoints. This script shows how to use a debug dry-run in sdk.
-[`protectedDryRunTxs`]: https://api-docs.aeternity.io/#/external/ProtectedDryRunTxs
+[protectedDryRunTxs]: https://api-docs.aeternity.io/#/external/ProtectedDryRunTxs
-[`http.external.gas_limit`]: https://docs.aeternity.io/en/stable/configuration/
-[`http.endpoints.dry-run`]: https://docs.aeternity.io/en/stable/configuration/
-[`dryRunTxs`]: https://api-docs.aeternity.io/#/internal/DryRunTxs
+[http.external.gas_limit]: https://docs.aeternity.io/en/stable/configuration/
+[http.endpoints.dry-run]: https://docs.aeternity.io/en/stable/configuration/
+[dryRunTxs]: https://api-docs.aeternity.io/#/internal/DryRunTxs
*/
import {
From c78552173eaf5217ebaf4ae0d08c9613674dea84 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Tue, 2 Jul 2024 22:09:43 +1000
Subject: [PATCH 068/149] feat(account): add AccountMnemonicFactory
---
babel.esm.config.js | 2 +-
examples/browser/tools/package.json | 1 -
package-lock.json | 32 +++++++++++++++++
package.json | 1 +
src/account/BaseFactory.ts | 31 ++++++++++++++++
src/account/LedgerFactory.ts | 23 ++----------
src/account/MnemonicFactory.ts | 38 ++++++++++++++++++++
src/index-browser.ts | 1 +
test/unit/mnemonic.ts | 55 +++++++++++++++++++++++++++++
9 files changed, 162 insertions(+), 22 deletions(-)
create mode 100644 src/account/BaseFactory.ts
create mode 100644 src/account/MnemonicFactory.ts
create mode 100644 test/unit/mnemonic.ts
diff --git a/babel.esm.config.js b/babel.esm.config.js
index 4b4f8ce69a..726f9c8030 100644
--- a/babel.esm.config.js
+++ b/babel.esm.config.js
@@ -9,7 +9,7 @@ config.plugins.push(
['import-globals', {
Buffer: { moduleName: 'buffer', exportName: 'Buffer' },
}],
- ['transform-default-named-imports'],
+ ['transform-default-named-imports', { exclude: ['@scure/bip39'] }],
);
config.plugins = config.plugins.filter((p) => p !== 'babel-plugin-transform-import-meta');
diff --git a/examples/browser/tools/package.json b/examples/browser/tools/package.json
index 151c0f2cfd..cb4f420f59 100644
--- a/examples/browser/tools/package.json
+++ b/examples/browser/tools/package.json
@@ -11,7 +11,6 @@
"dependencies": {
"@aeternity/aepp-sdk": "file:../../..",
"@scure/bip39": "^1.3.0",
- "buffer": "^6.0.3",
"preact": "^10.19.6"
},
"devDependencies": {
diff --git a/package-lock.json b/package-lock.json
index 010f81e223..fbb70535f2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,6 +15,7 @@
"@azure/core-rest-pipeline": "^1.16.0",
"@babel/runtime-corejs3": "^7.24.7",
"@ledgerhq/hw-transport": "^6.30.6",
+ "@scure/bip39": "^1.3.0",
"@types/aes-js": "^3.1.4",
"@types/json-bigint": "^1.0.4",
"@types/node": "~18.15.3",
@@ -2882,6 +2883,17 @@
"dev": true,
"optional": true
},
+ "node_modules/@noble/hashes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
+ "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -2923,6 +2935,26 @@
"integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==",
"dev": true
},
+ "node_modules/@scure/base": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz",
+ "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==",
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/bip39": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz",
+ "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==",
+ "dependencies": {
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
"node_modules/@sinonjs/commons": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
diff --git a/package.json b/package.json
index 958320e2cb..3d44c305a1 100644
--- a/package.json
+++ b/package.json
@@ -81,6 +81,7 @@
"@azure/core-rest-pipeline": "^1.16.0",
"@babel/runtime-corejs3": "^7.24.7",
"@ledgerhq/hw-transport": "^6.30.6",
+ "@scure/bip39": "^1.3.0",
"@types/aes-js": "^3.1.4",
"@types/json-bigint": "^1.0.4",
"@types/node": "~18.15.3",
diff --git a/src/account/BaseFactory.ts b/src/account/BaseFactory.ts
new file mode 100644
index 0000000000..c5550b1438
--- /dev/null
+++ b/src/account/BaseFactory.ts
@@ -0,0 +1,31 @@
+import Node from '../Node';
+import AccountBase from './Base';
+
+/**
+ * A factory class that generates instances of AccountBase by index.
+ */
+export default abstract class AccountBaseFactory {
+ /**
+ * Get an instance of AccountBase for a given account index.
+ * @param accountIndex - Index of account
+ */
+ abstract initialize(accountIndex: number): Promise;
+
+ /**
+ * Discovers accounts in set that already have been used (has any on-chain transactions).
+ * It returns an empty array if none of accounts been used.
+ * If a used account is preceded by an unused account then it would be ignored.
+ * @param node - Instance of Node to get account information from
+ */
+ async discover(node: Node): Promise {
+ let index = 0;
+ const result = [];
+ let account;
+ do {
+ if (account != null) result.push(account);
+ account = await this.initialize(index);
+ index += 1;
+ } while (await node.getAccountByPubkey(account.address).then(() => true, () => false));
+ return result;
+ }
+}
diff --git a/src/account/LedgerFactory.ts b/src/account/LedgerFactory.ts
index 568b72263b..9463d6fb5e 100644
--- a/src/account/LedgerFactory.ts
+++ b/src/account/LedgerFactory.ts
@@ -3,12 +3,12 @@ import AccountLedger, { CLA, GET_ADDRESS, GET_APP_CONFIGURATION } from './Ledger
import { UnsupportedVersionError } from '../utils/errors';
import { Encoded } from '../utils/encoder';
import semverSatisfies from '../utils/semver-satisfies';
-import Node from '../Node';
+import AccountBaseFactory from './BaseFactory';
/**
* A factory class that generates instances of AccountLedger based on provided transport.
*/
-export default class AccountLedgerFactory {
+export default class AccountLedgerFactory extends AccountBaseFactory {
readonly transport: Transport;
private readonly versionCheckPromise: Promise;
@@ -17,6 +17,7 @@ export default class AccountLedgerFactory {
* @param transport - Connection to Ledger to use
*/
constructor(transport: Transport) {
+ super();
this.transport = transport;
this.versionCheckPromise = this.getAppConfiguration().then(({ version }) => {
const args = [version, '0.4.4', '0.5.0'] as const;
@@ -65,22 +66,4 @@ export default class AccountLedgerFactory {
await this.versionCheckPromise;
return new AccountLedger(this.transport, accountIndex, await this.getAddress(accountIndex));
}
-
- /**
- * Discovers accounts on Ledger that already have been used (has any on-chain transactions).
- * It returns an empty array if none of accounts been used.
- * If a used account is preceded by an unused account then it would be ignored.
- * @param node - Instance of Node to get account information from
- */
- async discover(node: Node): Promise {
- let index = 0;
- const result = [];
- let account;
- do {
- if (account != null) result.push(account);
- account = await this.initialize(index);
- index += 1;
- } while (await node.getAccountByPubkey(account.address).then(() => true, () => false));
- return result;
- }
}
diff --git a/src/account/MnemonicFactory.ts b/src/account/MnemonicFactory.ts
new file mode 100644
index 0000000000..e8c0c9da30
--- /dev/null
+++ b/src/account/MnemonicFactory.ts
@@ -0,0 +1,38 @@
+import { mnemonicToSeed } from '@scure/bip39';
+import AccountBaseFactory from './BaseFactory';
+import AccountMemory from './Memory';
+import { generateSaveHDWalletFromSeed, getSaveHDWalletAccounts } from '../utils/hd-wallet';
+import { Encoding, encode } from '../utils/encoder';
+import { InternalError } from '../utils/errors';
+
+/**
+ * A factory class that generates instances of AccountMemory based on provided mnemonic phrase.
+ */
+export default class AccountMnemonicFactory extends AccountBaseFactory {
+ readonly #mnemonic: string;
+
+ /**
+ * @param mnemonic - BIP39-compatible mnemonic phrase
+ */
+ constructor(mnemonic: string) {
+ super();
+ this.#mnemonic = mnemonic;
+ }
+
+ /**
+ * Get an instance of AccountMemory for a given account index.
+ * @param accountIndex - Index of account
+ */
+ async initialize(accountIndex: number): Promise {
+ // TODO: improve performance, don't use AES
+ const seed = await mnemonicToSeed(this.#mnemonic);
+ const wallet = generateSaveHDWalletFromSeed(seed, '');
+ const account = getSaveHDWalletAccounts(wallet, '', accountIndex + 1).at(-1);
+ if (account == null) throw new InternalError('Account can\'t be empty');
+ const secretKey = encode(
+ Buffer.from(account.secretKey, 'hex').subarray(0, 32),
+ Encoding.AccountSecretKey,
+ );
+ return new AccountMemory(secretKey);
+ }
+}
diff --git a/src/index-browser.ts b/src/index-browser.ts
index 74ede9597d..122afd1319 100644
--- a/src/index-browser.ts
+++ b/src/index-browser.ts
@@ -66,6 +66,7 @@ export { default as Node } from './Node';
export { default as verifyTransaction } from './tx/validator';
export { default as AccountBase } from './account/Base';
export { default as MemoryAccount } from './account/Memory';
+export { default as AccountMnemonicFactory } from './account/MnemonicFactory';
export { default as AccountGeneralized } from './account/Generalized';
export { default as AccountLedger } from './account/Ledger';
export { default as AccountLedgerFactory } from './account/LedgerFactory';
diff --git a/test/unit/mnemonic.ts b/test/unit/mnemonic.ts
new file mode 100644
index 0000000000..5bfcb71e67
--- /dev/null
+++ b/test/unit/mnemonic.ts
@@ -0,0 +1,55 @@
+import { describe, it } from 'mocha';
+import { expect } from 'chai';
+import {
+ Node, Encoded, AccountMnemonicFactory, MemoryAccount,
+} from '../../src';
+
+const mnemonic = 'eye quarter chapter suit cruel scrub verify stuff volume control learn dust';
+
+describe('Account mnemonic factory', () => {
+ it('initializes an account', async () => {
+ const factory = new AccountMnemonicFactory(mnemonic);
+ const account = await factory.initialize(42);
+ expect(account).to.be.instanceOf(MemoryAccount);
+ expect(account.address).to.be.equal('ak_2HteeujaJzutKeFZiAmYTzcagSoRErSXpBFV179xYgqT4teakv');
+ });
+
+ class NodeMock extends Node {
+ addresses: Encoded.AccountAddress[] = [];
+
+ constructor() {
+ super('https://test.stg.aepps.com', { ignoreVersion: true });
+ }
+
+ // eslint-disable-next-line class-methods-use-this
+ override getAccountByPubkey = async (
+ address: Encoded.AccountAddress,
+ ): ReturnType => {
+ if (this.addresses.includes(address)) {
+ return {
+ id: address,
+ balance: 10n,
+ nonce: 1,
+ };
+ }
+ throw new Error('not found');
+ };
+ }
+
+ it('discovers accounts', async () => {
+ const node = new NodeMock();
+ node.addresses.push('ak_2swhLkgBPeeADxVTAVCJnZLY5NZtCFiM93JxsEaMuC59euuFRQ');
+ node.addresses.push('ak_DzELMKnSfJcfnCUZ2SbXUSxRmFYtGrWmMuKiCx68YKLH26kwc');
+ const factory = new AccountMnemonicFactory(mnemonic);
+ const accounts = await factory.discover(node);
+ expect(accounts.length).to.be.equal(node.addresses.length);
+ expect(accounts.map((a) => a.address)).to.be.eql(node.addresses);
+ });
+
+ it('discovers accounts on unused mnemonic', async () => {
+ const node = new NodeMock();
+ const factory = new AccountMnemonicFactory(mnemonic);
+ const accounts = await factory.discover(node);
+ expect(accounts.length).to.be.equal(0);
+ });
+});
From d4320e6f3aad37ff0efe12f113a5e6447d31ff07 Mon Sep 17 00:00:00 2001
From: Denis Davidyuk
Date: Tue, 2 Jul 2024 22:22:35 +1000
Subject: [PATCH 069/149] feat(account): expose `secretKey` in MemoryAccount
---
.../src/components/AccountsByMnemonic.tsx | 46 +++++++++----------
src/account/Memory.ts | 14 +++---
test/integration/AeSdkMethods.ts | 8 +++-
test/unit/memory-account.ts | 1 +
4 files changed, 35 insertions(+), 34 deletions(-)
diff --git a/examples/browser/tools/src/components/AccountsByMnemonic.tsx b/examples/browser/tools/src/components/AccountsByMnemonic.tsx
index 6beae4f396..5cc8931f6d 100644
--- a/examples/browser/tools/src/components/AccountsByMnemonic.tsx
+++ b/examples/browser/tools/src/components/AccountsByMnemonic.tsx
@@ -1,29 +1,27 @@
-import { Buffer } from 'buffer'
-import { useState } from 'preact/hooks'
-import {
- generateSaveHDWalletFromSeed, getSaveHDWalletAccounts, encode, Encoding,
-} from '@aeternity/aepp-sdk';
-import { mnemonicToSeedSync, validateMnemonic } from '@scure/bip39';
-import { wordlist } from '@scure/bip39/wordlists/english';
+import { useEffect, useState } from 'preact/hooks'
+import { AccountMnemonicFactory, MemoryAccount } from '@aeternity/aepp-sdk'
+import { validateMnemonic } from '@scure/bip39'
+import { wordlist } from '@scure/bip39/wordlists/english'
export function AccountsByMnemonic() {
const [mnemonic, setMnemonic] = useState('')
const [count, setCount] = useState(1)
+ const [accounts, setAccounts] = useState([])
+
+ useEffect(() => {
+ setAccounts([])
+ const factory = new AccountMnemonicFactory(mnemonic);
+ (async () => {
+ try {
+ setAccounts(await Promise.all(
+ new Array(count).fill(0).map((_, idx) => factory.initialize(idx))
+ ))
+ } catch (error) {}
+ })()
+ }, [mnemonic, count])
- let seed
- try {
- seed = mnemonicToSeedSync(mnemonic);
- } catch (error) {}
- let accounts
let validation = 'invalid'
- if (seed) {
- const wallet = generateSaveHDWalletFromSeed(seed, '');
- accounts = getSaveHDWalletAccounts(wallet, '', count)
- // TODO: getSaveHDWalletAccounts should return encoded secret keys
- .map(({ publicKey, secretKey }) => ({
- publicKey,
- secretKey: encode(Buffer.from(secretKey, 'hex').subarray(0, 32), Encoding.AccountSecretKey),
- }));
+ if (accounts.length) {
validation = (validateMnemonic(mnemonic, wordlist) ? '' : 'not ') + 'in english wordlist'
}
@@ -39,18 +37,18 @@ export function AccountsByMnemonic() {
/>
- Mnemonic {validation}
+ Mnemonic {validation}
- {accounts && accounts.map(({ publicKey, secretKey }, idx) => <>
+ {accounts.map(({ address, secretKey }, idx) => <>
Account #{idx}
- {publicKey}
+ {address}
{secretKey}
>)}
+
+
+
+