mirror of
https://github.com/zhigang1992/wallet.git
synced 2026-01-12 17:53:19 +08:00
test: use vitest
This commit is contained in:
2
.github/workflows/integration-tests.yml
vendored
2
.github/workflows/integration-tests.yml
vendored
@@ -66,7 +66,7 @@ jobs:
|
||||
run: |
|
||||
xvfb-run --auto-servernum -- \
|
||||
yarn jest \
|
||||
--config=./jest.integration.config.js \
|
||||
--config="./jest.integration.config.js" \
|
||||
--detectOpenHandles \
|
||||
--forceExit \
|
||||
--testPathPattern=./tests-legacy/integration/${{ matrix.dir }}/*
|
||||
|
||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -1,3 +1,4 @@
|
||||
{
|
||||
"prettier.documentSelectors": ["src/**/*.{ts,tsx}", "*.{js,json}"]
|
||||
"prettier.documentSelectors": ["src/**/*.{ts,tsx}", "*.{js,json}"],
|
||||
"vitest.include": ["src/**/*.spec.ts"]
|
||||
}
|
||||
|
||||
@@ -1,8 +1,48 @@
|
||||
const config = require('./jest.config');
|
||||
const { version } = require('./package.json');
|
||||
const { pathsToModuleNameMapper } = require('ts-jest');
|
||||
|
||||
const { compilerOptions } = require('./tsconfig');
|
||||
const pathNames = {};
|
||||
|
||||
Object.keys(compilerOptions.paths).forEach(key => {
|
||||
const [path] = compilerOptions.paths[key];
|
||||
if (key.includes('/ui')) {
|
||||
return;
|
||||
}
|
||||
if (path.startsWith('../')) {
|
||||
pathNames[key.replace(/\*/g, '(.*)')] = `<rootDir>/${path.slice(3).replace(/\*/g, '$1')}`;
|
||||
return;
|
||||
} else {
|
||||
pathNames[key.replace(/\*/g, '(.*)')] = `<rootDir>/src/${path.replace(/\*/g, '$1')}`;
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
...config,
|
||||
// Transform options not needed for integration spec
|
||||
setupFilesAfterEnv: ['./tests-legacy/jest-unit.setup.js'],
|
||||
collectCoverage: true,
|
||||
coverageReporters: ['html', 'json-summary'],
|
||||
collectCoverageFrom: ['src/**/*.{ts,tsx}'],
|
||||
testEnvironment: 'node',
|
||||
globals: {
|
||||
'ts-jest': {
|
||||
// https://huafu.github.io/ts-jest/user/config/diagnostics
|
||||
diagnostics: false,
|
||||
tsconfig: '<rootDir>/tests-legacy/tsconfig.json',
|
||||
},
|
||||
VERSION: version,
|
||||
},
|
||||
moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'node', 'd.ts'],
|
||||
|
||||
moduleNameMapper: {
|
||||
...pathNames,
|
||||
...pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/' }),
|
||||
},
|
||||
roots: ['<rootDir>/tests-legacy', '<rootDir>/src'],
|
||||
preset: 'ts-jest',
|
||||
testMatch: ['**/?(*.)+(spec).(js|ts|tsx)'],
|
||||
testRunner: 'jest-circus/runner',
|
||||
|
||||
cacheDirectory: '<rootDir>/.jest-cache',
|
||||
transform: {
|
||||
'^.+\\.tsx?$': '@swc-node/jest',
|
||||
},
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"test:integration:ci": "jest --config=./jest.integration.config.js --testPathPattern=./tests-legacy/integration/*",
|
||||
"test:integration-api": "jest --config=./jest.integration.config.js --verbose=true --runInBand --testPathPattern=./tests-legacy/test-api/*",
|
||||
"test:integration-api:ci": "jest --config=./jest.integration.config.js --testPathPattern=./tests-legacy/test-api/*",
|
||||
"test:unit": "cross-env TEST_ENV=true jest --forceExit --testPathIgnorePatterns=./tests-legacy/integration/*",
|
||||
"test:unit": "vitest",
|
||||
"test": "NODE_ENV=test jest --verbose=true",
|
||||
"test:coverage": "NODE_ENV=test jest --collect-coverage",
|
||||
"test:watch": "NODE_ENV=test jest --watch",
|
||||
@@ -187,6 +187,7 @@
|
||||
"limiter": "2.1.0",
|
||||
"lodash.get": "4.4.2",
|
||||
"mdi-react": "7.5.0",
|
||||
"micro-btc-signer": "0.2.0",
|
||||
"object-hash": "2.2.0",
|
||||
"pino": "8.6.1",
|
||||
"prismjs": "1.27.0",
|
||||
@@ -228,7 +229,7 @@
|
||||
"@stacks/eslint-config": "1.0.10",
|
||||
"@stacks/prettier-config": "0.0.10",
|
||||
"@stacks/stacks-blockchain-api-types": "0.65.0",
|
||||
"@swc-node/jest": "1.5.5",
|
||||
"@swc-node/jest": "1.5.6",
|
||||
"@swc/core": "1.3.24",
|
||||
"@testing-library/react": "12.0.0",
|
||||
"@testing-library/react-hooks": "7.0.1",
|
||||
@@ -265,6 +266,7 @@
|
||||
"@types/webpack": "5.28.0",
|
||||
"@types/webpack-dev-server": "4.5.0",
|
||||
"@types/zxcvbn": "4.4.1",
|
||||
"@vitest/coverage-istanbul": "0.26.3",
|
||||
"audit-ci": "6.3.0",
|
||||
"babel-loader": "9.1.0",
|
||||
"base64-loader": "1.0.0",
|
||||
@@ -313,6 +315,7 @@
|
||||
"ts-unused-exports": "7.0.3",
|
||||
"tsconfig-paths-webpack-plugin": "4.0.0",
|
||||
"typescript": "4.9.4",
|
||||
"vitest": "0.26.3",
|
||||
"vm-browserify": "1.1.2",
|
||||
"web-ext": "7.2.0",
|
||||
"web-ext-submit": "7.2.0",
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// @vitest-environment jsdom
|
||||
import { PostConditionMode } from '@stacks/transactions';
|
||||
import { generateContractCallToken } from '@tests-legacy/utils/transation-test-utils';
|
||||
import { decodeToken } from 'jsontokens';
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
import { getAppPrivateKey } from '@stacks/wallet-sdk';
|
||||
import { STX_TRANSFER_TX_REQUEST, TEST_WALLET } from '@tests-legacy/mocks';
|
||||
import { generateContractCallToken } from '@tests-legacy/utils/transation-test-utils';
|
||||
|
||||
import { UNAUTHORIZED_TX_REQUEST, verifyTxRequest } from './requests';
|
||||
|
||||
describe.skip('verifyTxRequest', () => {
|
||||
test('can validate a known valid tx request', async () => {
|
||||
const result = await verifyTxRequest({
|
||||
requestToken: STX_TRANSFER_TX_REQUEST,
|
||||
wallet: TEST_WALLET,
|
||||
appDomain: 'http://localhost:3000',
|
||||
});
|
||||
expect(result.stxAddress).toEqual('ST35Z3YQCTC1WZ8Z7AKHGE91HK05WKMKPTN1KX7Q7');
|
||||
expect(result).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can validate a generated valid tx request', async () => {
|
||||
const [account] = TEST_WALLET.accounts;
|
||||
const appPrivateKey = getAppPrivateKey({ account, appDomain: 'http://localhost:3000' });
|
||||
const txRequest = await generateContractCallToken({
|
||||
userData: {
|
||||
appPrivateKey: appPrivateKey,
|
||||
},
|
||||
});
|
||||
const result = await verifyTxRequest({
|
||||
requestToken: txRequest,
|
||||
wallet: TEST_WALLET,
|
||||
appDomain: 'http://localhost:3000',
|
||||
});
|
||||
expect(result.stxAddress).toBeFalsy();
|
||||
});
|
||||
|
||||
test('can invalidate a tx request with an invalid signature', async () => {
|
||||
const txRequest = await generateContractCallToken();
|
||||
await expect(
|
||||
verifyTxRequest({
|
||||
requestToken: txRequest,
|
||||
wallet: TEST_WALLET,
|
||||
appDomain: 'http://localhost:3000',
|
||||
})
|
||||
).rejects.toThrow(UNAUTHORIZED_TX_REQUEST);
|
||||
});
|
||||
|
||||
test('can invalidate a tx request with non-matching stx address', async () => {
|
||||
const [account] = TEST_WALLET.accounts;
|
||||
const appPrivateKey = getAppPrivateKey({ account, appDomain: 'http://localhost:3000' });
|
||||
const txRequest = await generateContractCallToken({
|
||||
userData: {
|
||||
appPrivateKey: appPrivateKey,
|
||||
},
|
||||
txOptions: {
|
||||
stxAddress: 'STB44HYPYAT2BB2QE513NSP81HTMYWBJP02HPGK6',
|
||||
},
|
||||
});
|
||||
await expect(
|
||||
verifyTxRequest({
|
||||
requestToken: txRequest,
|
||||
wallet: TEST_WALLET,
|
||||
appDomain: 'http://localhost:3000',
|
||||
})
|
||||
).rejects.toThrow(UNAUTHORIZED_TX_REQUEST);
|
||||
});
|
||||
});
|
||||
@@ -1,74 +0,0 @@
|
||||
import { TransactionPayload } from '@stacks/connect';
|
||||
import { getPublicKeyFromPrivate } from '@stacks/encryption';
|
||||
import { TransactionVersion, getAddressFromPrivateKey } from '@stacks/transactions';
|
||||
import { Wallet, getAppPrivateKey } from '@stacks/wallet-sdk';
|
||||
import { TokenVerifier, decodeToken } from 'jsontokens';
|
||||
|
||||
function getTransactionVersionFromRequest(tx: TransactionPayload) {
|
||||
const { network } = tx;
|
||||
if (!network) return TransactionVersion.Mainnet;
|
||||
if (![TransactionVersion.Mainnet, TransactionVersion.Testnet].includes(network.version)) {
|
||||
throw new Error('Invalid network version provided');
|
||||
}
|
||||
return network.version;
|
||||
}
|
||||
|
||||
export const UNAUTHORIZED_TX_REQUEST =
|
||||
'The transaction request provided is not signed by this wallet.';
|
||||
/**
|
||||
* Verify a transaction request.
|
||||
* A transaction request is a signed JWT that is created on an app,
|
||||
* via `@stacks/connect`. The private key used to sign this JWT is an
|
||||
* `appPrivateKey`, which an app can get from authentication.
|
||||
*
|
||||
* The payload in this JWT can include an `stxAddress`. This indicates the
|
||||
* 'default' STX address that should be used to sign this transaction. This allows
|
||||
* the wallet to use the same account to sign a transaction as it used to sign
|
||||
* in to the app.
|
||||
*
|
||||
* This JWT is invalidated if:
|
||||
* - The JWT is not signed properly
|
||||
* - The public key used to sign this tx request does not match an `appPrivateKey`
|
||||
* for any of the accounts in this wallet.
|
||||
* - The `stxAddress` provided in the payload does not match an STX address
|
||||
* for any of the accounts in this wallet.
|
||||
*
|
||||
* @returns The decoded and validated `TransactionPayload`
|
||||
* @throws if the transaction request is invalid
|
||||
*/
|
||||
interface VerifyTxRequestArgs {
|
||||
requestToken: string;
|
||||
wallet: Wallet;
|
||||
appDomain: string;
|
||||
}
|
||||
export async function verifyTxRequest({
|
||||
requestToken,
|
||||
wallet,
|
||||
appDomain,
|
||||
}: VerifyTxRequestArgs): Promise<TransactionPayload> {
|
||||
const token = decodeToken(requestToken);
|
||||
const tx = token.payload as unknown as TransactionPayload;
|
||||
const { publicKey, stxAddress } = tx;
|
||||
const txVersion = getTransactionVersionFromRequest(tx);
|
||||
const verifier = new TokenVerifier('ES256k', publicKey);
|
||||
const isSigned = await verifier.verifyAsync(requestToken);
|
||||
if (!isSigned) {
|
||||
throw new Error('Transaction request is not signed');
|
||||
}
|
||||
const foundAccount = wallet.accounts.find(account => {
|
||||
const appPrivateKey = getAppPrivateKey({
|
||||
account,
|
||||
appDomain,
|
||||
});
|
||||
const appPublicKey = getPublicKeyFromPrivate(appPrivateKey);
|
||||
if (appPublicKey !== publicKey) return false;
|
||||
if (!stxAddress) return true;
|
||||
const accountStxAddress = getAddressFromPrivateKey(account.stxPrivateKey, txVersion);
|
||||
if (stxAddress !== accountStxAddress) return false;
|
||||
return true;
|
||||
});
|
||||
if (!foundAccount) {
|
||||
throw new Error(UNAUTHORIZED_TX_REQUEST);
|
||||
}
|
||||
return tx;
|
||||
}
|
||||
@@ -1,178 +0,0 @@
|
||||
import { AddressNonces } from '@stacks/blockchain-api-client/lib/generated';
|
||||
import { MempoolTransaction, Transaction } from '@stacks/stacks-blockchain-api-types';
|
||||
import { setupHeystackEnv } from '@tests-legacy/mocks/heystack';
|
||||
|
||||
import { NonceTypes, parseAccountNoncesResponse } from './account-nonces.utils';
|
||||
|
||||
describe(parseAccountNoncesResponse, () => {
|
||||
setupHeystackEnv();
|
||||
const senderAddress = 'ST2PHCPANVT8DVPSY5W2ZZ81M285Q5Z8Y6DQMZE7Z';
|
||||
|
||||
test('possible_next_nonce', () => {
|
||||
const addressNonces: AddressNonces = {
|
||||
detected_missing_nonces: [],
|
||||
last_executed_tx_nonce: 53,
|
||||
last_mempool_tx_nonce: null,
|
||||
possible_next_nonce: 54,
|
||||
};
|
||||
const confirmedTransactions: Transaction[] = [];
|
||||
const pendingTransactions: MempoolTransaction[] = [];
|
||||
const { nonce, nonceType } = parseAccountNoncesResponse({
|
||||
addressNonces,
|
||||
confirmedTransactions,
|
||||
pendingTransactions,
|
||||
senderAddress,
|
||||
});
|
||||
expect(nonce).toEqual(54);
|
||||
expect(nonceType).toEqual(NonceTypes.apiSuggestedNonce);
|
||||
});
|
||||
|
||||
test('detected_missing_nonces', () => {
|
||||
const addressNonces: AddressNonces = {
|
||||
detected_missing_nonces: [49],
|
||||
last_executed_tx_nonce: 48,
|
||||
last_mempool_tx_nonce: null,
|
||||
possible_next_nonce: 54,
|
||||
};
|
||||
const confirmedTransactions: Transaction[] = [];
|
||||
const pendingTransactions: MempoolTransaction[] = [];
|
||||
const { nonce, nonceType } = parseAccountNoncesResponse({
|
||||
addressNonces,
|
||||
confirmedTransactions,
|
||||
pendingTransactions,
|
||||
senderAddress,
|
||||
});
|
||||
expect(nonce).toEqual(49);
|
||||
expect(nonceType).toEqual(NonceTypes.apiSuggestedNonce);
|
||||
});
|
||||
|
||||
test('possible_next_nonce is less than missing nonce', () => {
|
||||
const addressNonces: AddressNonces = {
|
||||
detected_missing_nonces: [49],
|
||||
last_executed_tx_nonce: 48,
|
||||
last_mempool_tx_nonce: null,
|
||||
possible_next_nonce: 24,
|
||||
};
|
||||
const confirmedTransactions: Transaction[] = [];
|
||||
const pendingTransactions: MempoolTransaction[] = [];
|
||||
const { nonce, nonceType } = parseAccountNoncesResponse({
|
||||
addressNonces,
|
||||
confirmedTransactions,
|
||||
pendingTransactions,
|
||||
senderAddress,
|
||||
});
|
||||
expect(nonce).toEqual(49);
|
||||
expect(nonceType).toEqual(NonceTypes.apiSuggestedNonce);
|
||||
});
|
||||
|
||||
test('invalid state: last_executed_tx_nonce is more than or equal to missing nonce', () => {
|
||||
const addressNonces: AddressNonces = {
|
||||
detected_missing_nonces: [49],
|
||||
last_executed_tx_nonce: 49,
|
||||
last_mempool_tx_nonce: null,
|
||||
possible_next_nonce: 50,
|
||||
};
|
||||
const confirmedTransactions: Transaction[] = [];
|
||||
const pendingTransactions: MempoolTransaction[] = [];
|
||||
const { nonce, nonceType } = parseAccountNoncesResponse({
|
||||
addressNonces,
|
||||
confirmedTransactions,
|
||||
pendingTransactions,
|
||||
senderAddress,
|
||||
});
|
||||
expect(nonce).toEqual(50);
|
||||
expect(nonceType).toEqual(NonceTypes.apiSuggestedNonce);
|
||||
});
|
||||
|
||||
test('new account with zero nonce', () => {
|
||||
const addressNonces: AddressNonces = {
|
||||
detected_missing_nonces: [],
|
||||
last_executed_tx_nonce: null,
|
||||
last_mempool_tx_nonce: null,
|
||||
possible_next_nonce: 0,
|
||||
};
|
||||
const confirmedTransactions: Transaction[] = [];
|
||||
const pendingTransactions: MempoolTransaction[] = [];
|
||||
const { nonce, nonceType } = parseAccountNoncesResponse({
|
||||
addressNonces,
|
||||
confirmedTransactions,
|
||||
pendingTransactions,
|
||||
senderAddress,
|
||||
});
|
||||
expect(nonce).toEqual(0);
|
||||
expect(nonceType).toEqual(NonceTypes.apiSuggestedNonce);
|
||||
});
|
||||
|
||||
test('last_mempool_tx_nonce', () => {
|
||||
const addressNonces: AddressNonces = {
|
||||
detected_missing_nonces: [71],
|
||||
last_executed_tx_nonce: 70,
|
||||
last_mempool_tx_nonce: 72,
|
||||
possible_next_nonce: 73,
|
||||
};
|
||||
const confirmedTransactions: Transaction[] = [];
|
||||
const pendingTransactions: MempoolTransaction[] = [
|
||||
{
|
||||
anchor_mode: 'any',
|
||||
fee_rate: '200',
|
||||
post_conditions: [],
|
||||
post_condition_mode: 'deny',
|
||||
receipt_time: 0,
|
||||
receipt_time_iso: '0',
|
||||
sender_address: 'ST2PHCPANVT8DVPSY5W2ZZ81M285Q5Z8Y6DQMZE7Z',
|
||||
sponsored: false,
|
||||
tx_id: '1',
|
||||
tx_status: 'pending',
|
||||
token_transfer: {
|
||||
amount: '10000',
|
||||
memo: '',
|
||||
recipient_address: '',
|
||||
},
|
||||
tx_type: 'token_transfer',
|
||||
nonce: 72,
|
||||
},
|
||||
];
|
||||
const { nonce, nonceType } = parseAccountNoncesResponse({
|
||||
addressNonces,
|
||||
confirmedTransactions,
|
||||
pendingTransactions,
|
||||
senderAddress,
|
||||
});
|
||||
expect(nonce).toEqual(71);
|
||||
expect(nonceType).toEqual(NonceTypes.apiSuggestedNonce);
|
||||
});
|
||||
|
||||
test('multiple missing nonces', () => {
|
||||
const addressNonces1: AddressNonces = {
|
||||
detected_missing_nonces: [73, 71],
|
||||
last_executed_tx_nonce: 70,
|
||||
last_mempool_tx_nonce: 74,
|
||||
possible_next_nonce: 75,
|
||||
};
|
||||
const confirmedTransactions: Transaction[] = [];
|
||||
const pendingTransactions: MempoolTransaction[] = [];
|
||||
const { nonce: nonce1, nonceType: nonceType1 } = parseAccountNoncesResponse({
|
||||
addressNonces: addressNonces1,
|
||||
confirmedTransactions,
|
||||
pendingTransactions,
|
||||
senderAddress,
|
||||
});
|
||||
expect(nonce1).toEqual(71);
|
||||
expect(nonceType1).toEqual(NonceTypes.apiSuggestedNonce);
|
||||
|
||||
const addressNonces2: AddressNonces = {
|
||||
detected_missing_nonces: [71, 73],
|
||||
last_executed_tx_nonce: 70,
|
||||
last_mempool_tx_nonce: 74,
|
||||
possible_next_nonce: 75,
|
||||
};
|
||||
const { nonce: nonce2, nonceType: nonceType2 } = parseAccountNoncesResponse({
|
||||
addressNonces: addressNonces2,
|
||||
confirmedTransactions,
|
||||
pendingTransactions,
|
||||
senderAddress,
|
||||
});
|
||||
expect(nonce2).toEqual(71);
|
||||
expect(nonceType2).toEqual(NonceTypes.apiSuggestedNonce);
|
||||
});
|
||||
});
|
||||
@@ -1,7 +1,7 @@
|
||||
import { AddressNonces } from '@stacks/blockchain-api-client/lib/generated';
|
||||
import { MempoolTransaction, Transaction } from '@stacks/stacks-blockchain-api-types';
|
||||
|
||||
export enum NonceTypes {
|
||||
enum NonceTypes {
|
||||
apiSuggestedNonce = 'api-suggested-nonce',
|
||||
clientFallbackNonce = 'client-fallback-nonce',
|
||||
undefinedNonce = 'undefined-nonce',
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { LocalStorageMock } from '@tests-legacy/mocks/localStorage-mock';
|
||||
import { vi } from 'vitest';
|
||||
|
||||
import { defaultKeyId } from '../keys/key.slice';
|
||||
import { migrateVaultReducerStoreToNewStateStructure } from './vault-reducer-migration';
|
||||
|
||||
(global as any).localStorage = new LocalStorageMock();
|
||||
(globalThis as any).localStorage = new LocalStorageMock();
|
||||
|
||||
describe(migrateVaultReducerStoreToNewStateStructure.name, () => {
|
||||
describe('no migration needed scenario', () => {
|
||||
@@ -20,7 +21,7 @@ describe(migrateVaultReducerStoreToNewStateStructure.name, () => {
|
||||
});
|
||||
|
||||
test('that it reads localstorage wallet values', () => {
|
||||
jest.spyOn(global.localStorage.__proto__, 'getItem');
|
||||
vi.spyOn(global.localStorage.__proto__, 'getItem');
|
||||
|
||||
migrateVaultReducerStoreToNewStateStructure({} as any);
|
||||
|
||||
@@ -45,7 +46,7 @@ describe(migrateVaultReducerStoreToNewStateStructure.name, () => {
|
||||
|
||||
// This functionality should be re-added, post a successful launch of the wallet refactor
|
||||
test.skip('it removes the existing existing localStorage values', () => {
|
||||
jest.spyOn(global.localStorage.__proto__, 'removeItem');
|
||||
vi.spyOn(global.localStorage.__proto__, 'removeItem');
|
||||
migrateVaultReducerStoreToNewStateStructure({} as any);
|
||||
expect(localStorage.removeItem).toHaveBeenCalledWith('stacks-wallet-salt');
|
||||
expect(localStorage.removeItem).toHaveBeenCalledWith('stacks-wallet-encrypted-key');
|
||||
|
||||
@@ -34,13 +34,11 @@ describe('Bitcoin bech32 (P2WPKH address derivation', () => {
|
||||
];
|
||||
|
||||
describe.each(accounts)('bitcoinjs-lib implementation', account => {
|
||||
describe(account.path, () => {
|
||||
const address = derivePayToWitnessPublicKeyHashAddressFromXpub(
|
||||
account.extended_public_key,
|
||||
0
|
||||
);
|
||||
test('bech 32 address', () => expect(address).toEqual(account.zeroIndexChildAddress));
|
||||
});
|
||||
const address = derivePayToWitnessPublicKeyHashAddressFromXpub(
|
||||
account.extended_public_key,
|
||||
0
|
||||
);
|
||||
test('bech 32 address', () => expect(address).toEqual(account.zeroIndexChildAddress));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { HDKey } from '@scure/bip32';
|
||||
import * as bitcoin from 'bitcoinjs-lib';
|
||||
import * as btc from 'micro-btc-signer';
|
||||
|
||||
function deriveBip32KeychainFromExtendedPublicKey(xpub: string) {
|
||||
return HDKey.fromExtendedKey(xpub);
|
||||
@@ -8,5 +8,5 @@ function deriveBip32KeychainFromExtendedPublicKey(xpub: string) {
|
||||
export function derivePayToWitnessPublicKeyHashAddressFromXpub(xpub: string, index: number) {
|
||||
const keychain = deriveBip32KeychainFromExtendedPublicKey(xpub);
|
||||
const zeroAddressIndex = keychain.deriveChild(0).deriveChild(index);
|
||||
return bitcoin.payments.p2wpkh({ pubkey: Buffer.from(zeroAddressIndex.publicKey!) }).address;
|
||||
return btc.p2wpkh(zeroAddressIndex.publicKey!).address;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import { sha256 } from '@noble/hashes/sha256';
|
||||
import { base58check } from '@scure/base';
|
||||
import { HDKey } from '@scure/bip32';
|
||||
import { hashP2WPKH } from '@stacks/transactions';
|
||||
import bip32Factory from 'bip32';
|
||||
import { BIP32Factory } from 'bip32';
|
||||
import * as bip39 from 'bip39';
|
||||
import * as bitcoin from 'bitcoinjs-lib';
|
||||
import * as ecc from 'tiny-secp256k1';
|
||||
@@ -19,7 +19,7 @@ import {
|
||||
} from './p2wsh-p2sh-address-gen';
|
||||
|
||||
describe('Bitcoin SegWit (P2WPKH-P2SH) address generation', () => {
|
||||
const bip32 = bip32Factory(ecc);
|
||||
const bip32 = BIP32Factory(ecc);
|
||||
//
|
||||
// https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/bip32.spec.ts
|
||||
describe('Sanity check tests copied from `bitcoinjs-lib` vs other libs', () => {
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
import { rest } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
|
||||
import { delay } from '@app/common/utils';
|
||||
|
||||
import {
|
||||
ADDRESS_TXS_DATA,
|
||||
FEE_ESTIMATIONS_DATA,
|
||||
HEY_CONTRACT_INFO,
|
||||
HEY_CONTRACT_INTERFACE,
|
||||
HEY_CONTRACT_SOURCE_DATA,
|
||||
TOKEN_CONTRACT_DATA,
|
||||
TOKEN_CONTRACT_INFO_DATA,
|
||||
TOKEN_CONTRACT_SOURCE_DATA,
|
||||
TOKEN_FT_DATA,
|
||||
TOKEN_GET_DECIMALS_DATA,
|
||||
TOKEN_GET_NAME_DATA,
|
||||
TOKEN_GET_SYMBOL_DATA,
|
||||
TX_MEMPOOL_DATA,
|
||||
V1_ADDRESS_DATA,
|
||||
V2_ACCOUNTS_DATA,
|
||||
} from './heystack/data';
|
||||
|
||||
enum GetRequests {
|
||||
v1Address = 'https://stacks-node-api.regtest.stacks.co/extended/v1/address/ST2PHCPANVT8DVPSY5W2ZZ81M285Q5Z8Y6DQMZE7Z/balances',
|
||||
v2Accounts = 'https://stacks-node-api.regtest.stacks.co/v2/accounts/ST2PHCPANVT8DVPSY5W2ZZ81M285Q5Z8Y6DQMZE7Z',
|
||||
addressTxs = 'https://stacks-node-api.regtest.stacks.co/extended/v1/address/ST2PHCPANVT8DVPSY5W2ZZ81M285Q5Z8Y6DQMZE7Z/transactions',
|
||||
txMempool = 'https://stacks-node-api.regtest.stacks.co/extended/v1/tx/mempool',
|
||||
tokenContractInterface = 'https://stacks-node-api.regtest.stacks.co/v2/contracts/interface/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N/hey-token',
|
||||
tokenContractSource = 'https://stacks-node-api.regtest.stacks.co/v2/contracts/source/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N/hey-token',
|
||||
tokenContractInfo = 'https://stacks-node-api.regtest.stacks.co/extended/v1/contract/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N.hey-token',
|
||||
heyContractInterface = 'https://stacks-node-api.regtest.stacks.co/v2/contracts/interface/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N/hey-final',
|
||||
heyContractSource = 'https://stacks-node-api.regtest.stacks.co/v2/contracts/source/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N/hey-final',
|
||||
heyContractInfo = 'https://stacks-node-api.regtest.stacks.co/extended/v1/contract/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N.hey-final',
|
||||
heyFtData = 'https://stacks-node-api.regtest.stacks.co/extended/v1/tokens/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N.hey-token/ft/metadata',
|
||||
fees = 'https://stacks-node-api.regtest.stacks.co/v2/fees/transfer',
|
||||
nonces = 'https://stacks-node-api.regtest.stacks.co/extended/v1/address/ST2PHCPANVT8DVPSY5W2ZZ81M285Q5Z8Y6DQMZE7Z/nonces',
|
||||
}
|
||||
|
||||
enum PostRequests {
|
||||
heyTokenGetName = 'https://stacks-node-api.regtest.stacks.co/v2/contracts/call-read/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N/hey-token/get-name',
|
||||
heyTokenGetSymbol = 'https://stacks-node-api.regtest.stacks.co/v2/contracts/call-read/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N/hey-token/get-symbol',
|
||||
heyTokenGetDecimals = 'https://stacks-node-api.regtest.stacks.co/v2/contracts/call-read/ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N/hey-token/get-decimals',
|
||||
broadcastTransaction = 'https://stacks-node-api.regtest.stacks.co/v2/transactions',
|
||||
feeEstimations = 'https://stacks-node-api.testnet.stacks.co/v2/fees/transaction',
|
||||
}
|
||||
|
||||
const getRequests: Record<string, string> = {
|
||||
[GetRequests.v1Address]: V1_ADDRESS_DATA,
|
||||
[GetRequests.v2Accounts]: V2_ACCOUNTS_DATA,
|
||||
[GetRequests.addressTxs]: ADDRESS_TXS_DATA,
|
||||
[GetRequests.txMempool]: TX_MEMPOOL_DATA,
|
||||
[GetRequests.tokenContractInterface]: TOKEN_CONTRACT_DATA,
|
||||
[GetRequests.tokenContractSource]: TOKEN_CONTRACT_SOURCE_DATA,
|
||||
[GetRequests.tokenContractInfo]: TOKEN_CONTRACT_INFO_DATA,
|
||||
[GetRequests.heyContractInfo]: HEY_CONTRACT_INFO,
|
||||
[GetRequests.heyContractSource]: HEY_CONTRACT_SOURCE_DATA,
|
||||
[GetRequests.heyContractInterface]: HEY_CONTRACT_INTERFACE,
|
||||
[GetRequests.heyFtData]: TOKEN_FT_DATA,
|
||||
[GetRequests.fees]: '1',
|
||||
};
|
||||
|
||||
const postRequests: Record<string, string> = {
|
||||
[PostRequests.heyTokenGetName]: TOKEN_GET_NAME_DATA,
|
||||
[PostRequests.heyTokenGetSymbol]: TOKEN_GET_SYMBOL_DATA,
|
||||
[PostRequests.heyTokenGetDecimals]: TOKEN_GET_DECIMALS_DATA,
|
||||
[PostRequests.broadcastTransaction]: 'null',
|
||||
[PostRequests.feeEstimations]: FEE_ESTIMATIONS_DATA,
|
||||
};
|
||||
|
||||
export function setupHeystackEnv(
|
||||
handleRequest?: Record<string, (req: any, res: any, ctx: any) => void>
|
||||
) {
|
||||
let mockLocalStorage: Record<string, string> = {};
|
||||
|
||||
const getPaths = Object.keys(getRequests).map(path => {
|
||||
return rest.get(path, async (req, res, ctx) => {
|
||||
await delay(100);
|
||||
if (handleRequest && handleRequest[path]) return handleRequest[path](req, res, ctx);
|
||||
return res(ctx.json(JSON.parse(getRequests[path] as any)));
|
||||
});
|
||||
});
|
||||
const postPaths = Object.keys(postRequests).map(path => {
|
||||
return rest.post(path, async (req, res, ctx) => {
|
||||
await delay(100);
|
||||
if (handleRequest && handleRequest[path]) return handleRequest[path](req, res, ctx);
|
||||
return res(ctx.json(JSON.parse(postRequests[path] as any)));
|
||||
});
|
||||
});
|
||||
|
||||
const server = setupServer(...getPaths, ...postPaths);
|
||||
|
||||
beforeAll(() => {
|
||||
server.listen();
|
||||
global.Storage.prototype.setItem = jest.fn((key, value) => {
|
||||
mockLocalStorage[key] = value;
|
||||
});
|
||||
global.Storage.prototype.getItem = jest.fn(key => mockLocalStorage[key]);
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
mockLocalStorage = {};
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
server.resetHandlers();
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
server.close();
|
||||
(global.Storage.prototype.setItem as jest.Mock).mockReset();
|
||||
(global.Storage.prototype.getItem as jest.Mock).mockReset();
|
||||
});
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -41,9 +41,6 @@ export const HEYSTACK_HEY_TX_REQUEST_DECODED = {
|
||||
},
|
||||
};
|
||||
|
||||
export const STX_TRANSFER_TX_REQUEST =
|
||||
'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJzdHhBZGRyZXNzIjoiU1QzNVozWVFDVEMxV1o4WjdBS0hHRTkxSEswNVdLTUtQVE4xS1g3UTciLCJuZXR3b3JrIjp7InZlcnNpb24iOjEyOCwiY2hhaW5JZCI6MjE0NzQ4MzY0OCwiY29yZUFwaVVybCI6Imh0dHBzOi8vc3RhY2tzLW5vZGUtYXBpLnhlbm9uLmJsb2Nrc3RhY2sub3JnIiwiYm5zTG9va3VwVXJsIjoiaHR0cHM6Ly9jb3JlLmJsb2Nrc3RhY2sub3JnIiwiYnJvYWRjYXN0RW5kcG9pbnQiOiIvdjIvdHJhbnNhY3Rpb25zIiwidHJhbnNmZXJGZWVFc3RpbWF0ZUVuZHBvaW50IjoiL3YyL2ZlZXMvdHJhbnNmZXIiLCJhY2NvdW50RW5kcG9pbnQiOiIvdjIvYWNjb3VudHMiLCJjb250cmFjdEFiaUVuZHBvaW50IjoiL3YyL2NvbnRyYWN0cy9pbnRlcmZhY2UiLCJyZWFkT25seUZ1bmN0aW9uQ2FsbEVuZHBvaW50IjoiL3YyL2NvbnRyYWN0cy9jYWxsLXJlYWQifSwiYXV0aE9yaWdpbiI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsIm1lbW8iOiJGcm9tIGRlbW8gYXBwIiwicmVjaXBpZW50IjoiU1RCNDRIWVBZQVQyQkIyUUU1MTNOU1A4MUhUTVlXQkpQMDJIUEdLNiIsImFtb3VudCI6IjEwMiIsInB1YmxpY0tleSI6IjAyYzY3ZTZlZWMzYzY2MzY4MDU3MzIwZTYzMWNmZjAzZjFmMzY5MjI4ZDI0Mzc5ZjM1OGEwYWU4ZmY5NDJlNGVmZiIsInR4VHlwZSI6InRva2VuX3RyYW5zZmVyIiwiYXBwRGV0YWlscyI6eyJuYW1lIjoiVGVzdGluZyBBcHAiLCJpY29uIjoiL2Fzc2V0cy9tZXNzZW5nZXItYXBwLWljb24ucG5nIn19.SQm6Pg_ny1J0o9iReIfY2D9jkYUvaER-lmHe2Jxc8opfASH8bplRN1FlI8SQ4dOLO0rfvjvIaCV4qbPAylnNSA';
|
||||
|
||||
// ts-unused-exports:disable-next-line
|
||||
export const STX_TRANSFER_DECODED = {
|
||||
stxAddress: 'ST35Z3YQCTC1WZ8Z7AKHGE91HK05WKMKPTN1KX7Q7',
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
"target": "ES2019",
|
||||
"noEmit": true,
|
||||
"rootDir": "../",
|
||||
"esModuleInterop": true
|
||||
"esModuleInterop": true,
|
||||
"types": ["jest"]
|
||||
},
|
||||
"include": ["./**/*", "../src/**/*"]
|
||||
}
|
||||
|
||||
24
tests-legacy/unit-test.setup.js
Normal file
24
tests-legacy/unit-test.setup.js
Normal file
@@ -0,0 +1,24 @@
|
||||
import { JSDOM } from 'jsdom';
|
||||
|
||||
globalThis.chrome = {
|
||||
storage: {
|
||||
local: {
|
||||
get() {},
|
||||
set() {},
|
||||
clear() {},
|
||||
},
|
||||
},
|
||||
runtime: {
|
||||
sendMessage() {},
|
||||
},
|
||||
};
|
||||
|
||||
globalThis.VERSION = '';
|
||||
|
||||
const dom = new JSDOM('', { url: 'http://localhost/' });
|
||||
|
||||
globalThis.window = dom.window;
|
||||
globalThis.document = dom.window.document;
|
||||
globalThis.navigator = dom.window.navigator;
|
||||
|
||||
globalThis.localStorage = dom.window.localStorage;
|
||||
@@ -8,8 +8,9 @@ import {
|
||||
serializePostCondition,
|
||||
} from '@stacks/transactions';
|
||||
import BN from 'bn.js';
|
||||
import { vi } from 'vitest';
|
||||
|
||||
(window as any).fetch = jest.fn(() => ({
|
||||
(window as any).fetch = vi.fn(() => ({
|
||||
text: () => Promise.resolve(1),
|
||||
ok: true,
|
||||
}));
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"types": ["jest", "chrome", "@emotion/react/types/css-prop"]
|
||||
"types": ["jest", "vitest/globals", "chrome", "@emotion/react/types/css-prop"]
|
||||
},
|
||||
"include": ["./src/**/*", "./tests/**/*", "./tests-legacy/**/*", "./scripts-ts/**/*"],
|
||||
"exclude": ["test-app"]
|
||||
|
||||
24
vitest.config.js
Normal file
24
vitest.config.js
Normal file
@@ -0,0 +1,24 @@
|
||||
import path from 'path';
|
||||
import { defineConfig } from 'vitest/config';
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
include: 'src/**/*.spec.{ts,tsx}',
|
||||
coverage: { provider: 'istanbul', reporter: ['text', 'json', 'html'] },
|
||||
globals: true,
|
||||
environment: 'node',
|
||||
setupFiles: './tests-legacy/unit-test.setup.js',
|
||||
deps: { interopDefault: true },
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@shared': path.resolve('./src/shared'),
|
||||
'@background': path.resolve('./src/background'),
|
||||
'@content-scripts': path.resolve('./src/content-scripts'),
|
||||
'@inpage': path.resolve('./src/inpage'),
|
||||
'@app': path.resolve('./src/app'),
|
||||
'@tests': path.resolve('./tests'),
|
||||
'@tests-legacy': path.resolve('./tests-legacy'),
|
||||
},
|
||||
},
|
||||
});
|
||||
407
yarn.lock
407
yarn.lock
@@ -870,6 +870,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.13.tgz#1fc9bfbff0bac558008b2ad7242db1c8024d8cfd"
|
||||
integrity sha512-r4xetsd1ez1NF9/9R2f9Q6AlxqiZLwUqo7ICOcvEVwopVkXUcspIjEbJk0EVTgT6Cp5+ymzGPT6YNV0ievx4yA==
|
||||
|
||||
"@esbuild/android-arm64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.14.tgz#f02c9f0d43086ddf6ed2795b881ddf7990f74456"
|
||||
integrity sha512-hTqB6Iq13pW4xaydeqQrs8vPntUnMjbkq+PgGiBMi69eYk74naG2ftHWqKnxn874kNrt5Or3rQ0PJutx2doJuQ==
|
||||
|
||||
"@esbuild/android-arm@0.15.18":
|
||||
version "0.15.18"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80"
|
||||
@@ -880,46 +885,91 @@
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.13.tgz#df3317286eed68c727daf39c2d585625f9c2f170"
|
||||
integrity sha512-JmtqThupn9Yf+FzANE+GG73ASUkssnPwOsndUElhp23685QzRK+MO1UompOlBaXV9D5FTuYcPnw7p4mCq2YbZQ==
|
||||
|
||||
"@esbuild/android-arm@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.14.tgz#24e4faf569d0d6bbf9ed46f6ed395d68eb7f04fc"
|
||||
integrity sha512-u0rITLxFIeYAvtJXBQNhNuV4YZe+MD1YvIWT7Nicj8hZAtRVZk2PgNH6KclcKDVHz1ChLKXRfX7d7tkbQBUfrg==
|
||||
|
||||
"@esbuild/android-x64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.13.tgz#c34826c4bdc57c60cbfb8d5bbd2306a89225626a"
|
||||
integrity sha512-hKt1bFht/Vtp0xJ0ZVzFMnPy1y1ycmM3KNnp3zsyZfQmw7nhs2WLO4vxdR5YG+6RsHKCb2zbZ3VwlC0Tij0qyA==
|
||||
|
||||
"@esbuild/android-x64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.14.tgz#1173e706cf57c0d4dbf069d18e5d50ae6a5b0871"
|
||||
integrity sha512-jir51K4J0K5Rt0KOcippjSNdOl7akKDVz5I6yrqdk4/m9y+rldGptQUF7qU4YpX8U61LtR+w2Tu2Ph+K/UaJOw==
|
||||
|
||||
"@esbuild/darwin-arm64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.13.tgz#0b80c8580c262ccfb1203053201cf19c6f7b4cdb"
|
||||
integrity sha512-ogrVuNi2URocrr3Ps20f075EMm9V7IeenOi9FRj4qdbT6mQlwLuP4l90PW2iBrKERx0oRkcZprEUNsz/3xd7ww==
|
||||
|
||||
"@esbuild/darwin-arm64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.14.tgz#67f05693c5b097bcb4ff656ba5839459f30f79c2"
|
||||
integrity sha512-vrlaP81IuwPaw1fyX8fHCmivP3Gr73ojVEZy+oWJLAiZVcG8o8Phwun/XDnYIFUHxIoUnMFEpg9o38MIvlw8zw==
|
||||
|
||||
"@esbuild/darwin-x64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.13.tgz#f1a6c9ea67d4eaaf4944e1cbceb800eabc6e7e74"
|
||||
integrity sha512-Agajik9SBGiKD7FPXE+ExW6x3MgA/dUdpZnXa9y1tyfE4lKQx+eQiknSdrBnWPeqa9wL0AOvkhghmYhpVkyqkA==
|
||||
|
||||
"@esbuild/darwin-x64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.14.tgz#519c9d127c5363d4a1e73b9d954460f798b41d2a"
|
||||
integrity sha512-KV1E01eC2hGYA2qzFDRCK4wdZCRUvMwCNcobgpiiOzp5QXpJBqFPdxI69j8vvzuU7oxFXDgANwEkXvpeQqyOyg==
|
||||
|
||||
"@esbuild/freebsd-arm64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.13.tgz#d1a45ac5c4a1be566c4eefbadbe5a967288ad338"
|
||||
integrity sha512-KxMO3/XihBcHM+xQUM6nQZO1SgQuOsd1DCnKF1a4SIf/i5VD45vrqN3k8ePgFrEbMi7m5JeGmvNqwJXinF0a4Q==
|
||||
|
||||
"@esbuild/freebsd-arm64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.14.tgz#2e3f5de2951a8ec732a3e4ec4f5d47a7c9626001"
|
||||
integrity sha512-xRM1RQsazSvL42BNa5XC7ytD4ZDp0ZyJcH7aB0SlYUcHexJUKiDNKR7dlRVlpt6W0DvoRPU2nWK/9/QWS4u2fw==
|
||||
|
||||
"@esbuild/freebsd-x64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.13.tgz#ec64a31cabb08343bb4520a221324b40509dffc8"
|
||||
integrity sha512-Ez15oqV1vwvZ30cVLeBW14BsWq/fdWNQGMOxxqaSJVQVLqHhvgfQ7gxGDiN9tpJdeQhqJO+Q0r02/Tce5+USNg==
|
||||
|
||||
"@esbuild/freebsd-x64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.14.tgz#d3cf84ff28357ac8d0123309bac37fcfcdd98f53"
|
||||
integrity sha512-7ALTAn6YRRf1O6fw9jmn0rWmOx3XfwDo7njGtjy1LXhDGUjTY/vohEPM3ii5MQ411vJv1r498EEx2aBQTJcrEw==
|
||||
|
||||
"@esbuild/linux-arm64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.13.tgz#e8db3c3751b32ecf801751424eae43f6863a2ee7"
|
||||
integrity sha512-qi5n7KwcGViyJeZeQnu8fB6dC3Mlm5PGaqSv2HhQDDx/MPvVfQGNMcv7zcBL4qk3FkuWhGVwXkjQ76x7R0PWlA==
|
||||
|
||||
"@esbuild/linux-arm64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.14.tgz#f44b0e3d5d470cd763a9bc4855a12b8cb73d6c12"
|
||||
integrity sha512-TLh2OcbBUQcMYRH4GbiDkDZfZ4t1A3GgmeXY27dHSI6xrU7IkO00MGBiJySmEV6sH3Wa6pAN6UtaVL0DwkGW4Q==
|
||||
|
||||
"@esbuild/linux-arm@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.13.tgz#ac0c8e9f3db8d418f588ae250e9c66ffdcf3cd82"
|
||||
integrity sha512-18dLd2L3mda+iFj6sswyBMSh2UwniamD9M4DwPv8VM+9apRFlQ5IGKxBdumnTuOI4NvwwAernmUseWhYQ9k+rg==
|
||||
|
||||
"@esbuild/linux-arm@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.14.tgz#b239eb7e6cb7df9c34c6b08f4adf113da47e0e09"
|
||||
integrity sha512-X6xULug66ulrr4IzrW7qq+eq9n4MtEyagdWvj4o4cmWr+JXOT47atjpDF9j5M2zHY0UQBmqnHhwl+tXpkpIb2w==
|
||||
|
||||
"@esbuild/linux-ia32@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.13.tgz#41ee9bd3b7161ab681fab6cb3990a3f5c08a9940"
|
||||
integrity sha512-2489Xad9sr+6GD7nB913fUqpCsSwVwgskkQTq4Or2mZntSPYPebyJm8l1YruHo7oqYMTGV6RiwGE4gRo3H+EPQ==
|
||||
|
||||
"@esbuild/linux-ia32@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.14.tgz#f5f7886027cd61bed59178e981a0ef47ca5b72ef"
|
||||
integrity sha512-oBZkcZ56UZDFCAfE3Fd/Jgy10EoS7Td77NzNGenM+HSY8BkdQAcI9VF9qgwdOLZ+tuftWD7UqZ26SAhtvA3XhA==
|
||||
|
||||
"@esbuild/linux-loong64@0.15.18":
|
||||
version "0.15.18"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239"
|
||||
@@ -930,61 +980,121 @@
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.13.tgz#e4a832708e0b47078b91413edcfdb6af88c854a3"
|
||||
integrity sha512-x8KplRu9Y43Px8I9YS+sPBwQ+fw44Mvp2BPVADopKDWz+h3fcj1BvRU58kxb89WObmwKX9sWdtYzepL4Fmx03A==
|
||||
|
||||
"@esbuild/linux-loong64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.14.tgz#d2329371726f9778156c89ea0bed26fc1bc3cd7e"
|
||||
integrity sha512-udz/aEHTcuHP+xdWOJmZ5C9RQXHfZd/EhCnTi1Hfay37zH3lBxn/fNs85LA9HlsniFw2zccgcbrrTMKk7Cn1Qg==
|
||||
|
||||
"@esbuild/linux-mips64el@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.13.tgz#30d8571b71e0b8bf25fc5ef11422221ed23cdacc"
|
||||
integrity sha512-qhhdWph9FLwD9rVVC/nUf7k2U4NZIA6/mGx0B7+O6PFV0GjmPA2E3zDQ4NUjq9P26E0DeAZy9akH9dYcUBRU7A==
|
||||
|
||||
"@esbuild/linux-mips64el@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.14.tgz#8af86bdc6ee937c8a2803b3c197b28824f48df8e"
|
||||
integrity sha512-kJ2iEnikUOdC1SiTGbH0fJUgpZwa0ITDTvj9EHf9lm3I0hZ4Yugsb3M6XSl696jVxrEocLe519/8CbSpQWFSrg==
|
||||
|
||||
"@esbuild/linux-ppc64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.13.tgz#32a3855d4b79ba1d2b63dab592cb9f0d4a9ba485"
|
||||
integrity sha512-cVWAPKsrRVxI1jCeJHnYSbE3BrEU+pZTZK2gfao9HRxuc+3m4+RLfs3EVEpGLmMKEcWfVCB9wZ3yNxnknutGKQ==
|
||||
|
||||
"@esbuild/linux-ppc64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.14.tgz#3fa3f8c6c9db3127f2ec5b2eba1cec67ff9a9b8e"
|
||||
integrity sha512-kclKxvZvX5YhykwlJ/K9ljiY4THe5vXubXpWmr7q3Zu3WxKnUe1VOZmhkEZlqtnJx31GHPEV4SIG95IqTdfgfg==
|
||||
|
||||
"@esbuild/linux-riscv64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.13.tgz#6139202858da8202724d7079102614c269524f34"
|
||||
integrity sha512-Agb7dbRyZWnmPn5Vvf0eyqaEUqSsaIUwwyInu2EoFTaIDRp093QU2M5alUyOooMLkRbD1WvqQNwx08Z/g+SAcQ==
|
||||
|
||||
"@esbuild/linux-riscv64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.14.tgz#1bd1b631de2533106a08876295bad3a19b20f629"
|
||||
integrity sha512-fdwP9Dc+Kx/cZwp9T9kNqjAE/PQjfrxbio4rZ3XnC3cVvZBjuxpkiyu/tuCwt6SbAK5th6AYNjFdEV9kGC020A==
|
||||
|
||||
"@esbuild/linux-s390x@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.13.tgz#df3550a51e4155cde31486e01d8121f078e959ae"
|
||||
integrity sha512-AqRBIrc/+kl08ahliNG+EyU+j41wIzQfwBTKpi80cCDiYvYFPuXjvzZsD9muiu58Isj0RVni9VgC4xK/AnSW4g==
|
||||
|
||||
"@esbuild/linux-s390x@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.14.tgz#c87440b6522b9a36a9cafd05b0f1ca3c5bad4cca"
|
||||
integrity sha512-++fw3P4fQk9nqvdzbANRqimKspL8pDCnSpXomyhV7V/ISha/BZIYvZwLBWVKp9CVWKwWPJ4ktsezuLIvlJRHqA==
|
||||
|
||||
"@esbuild/linux-x64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.13.tgz#deb7951829ea5930e0d88440aeb5df0756ebb2d0"
|
||||
integrity sha512-S4wn2BimuhPcoArRtVrdHUKIymCCZcYAXQE47kUiX4yrUrEX2/ifn5eKNbZ5c1jJKUlh1gC2ESIN+iw3wQax3g==
|
||||
|
||||
"@esbuild/linux-x64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.14.tgz#49cd974dad6042ac0141ba332df6307c44e77fed"
|
||||
integrity sha512-TomtswAuzBf2NnddlrS4W01Tv85RM9YtATB3OugY6On0PLM4Ksz5qvQKVAjtzPKoLgL1FiZtfc8mkZc4IgoMEA==
|
||||
|
||||
"@esbuild/netbsd-x64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.13.tgz#8cba08074263862138cc5c63ad7f9640fe3faa69"
|
||||
integrity sha512-2c8JWgfUMlQHTdaR5X3xNMwqOyad8kgeCupuVkdm3QkUOzGREjlTETQsK6oHifocYzDCo9FeKcUwsK356SdR+g==
|
||||
|
||||
"@esbuild/netbsd-x64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.14.tgz#53dcfb5131376feff0911adff7f01b4821706cf6"
|
||||
integrity sha512-U06pfx8P5CqyoPNfqIJmnf+5/r4mJ1S62G4zE6eOjS59naQcxi6GnscUCPH3b+hRG0qdKoGX49RAyiqW+M9aSw==
|
||||
|
||||
"@esbuild/openbsd-x64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.13.tgz#4ae19ac63c665424d248ba5c577618dd7bbcebd5"
|
||||
integrity sha512-Bwh+PmKD/LK+xBjqIpnYnKYj0fIyQJ0YpRxsn0F+WfzvQ2OA+GKDlf8AHosiCns26Q4Dje388jQVwfOBZ1GaFw==
|
||||
|
||||
"@esbuild/openbsd-x64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.14.tgz#f36888f73087bcd12c5bf9a4b18e348da9c80ad0"
|
||||
integrity sha512-/Jl8XVaWEZNu9rZw+n792GIBupQwHo6GDoapHSb/2xp/Ku28eK6QpR2O9cPBkzHH4OOoMH0LB6zg/qczJ5TTGg==
|
||||
|
||||
"@esbuild/sunos-x64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.13.tgz#592caacab6b2c7669cd869b51f66dc354da03fc2"
|
||||
integrity sha512-8wwk6f9XGnhrF94/DBdFM4Xm1JeCyGTCj67r516VS9yvBVQf3Rar54L+XPVDs/oZOokwH+XsktrgkuTMAmjntg==
|
||||
|
||||
"@esbuild/sunos-x64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.14.tgz#41e046bb0849ae59702a5cfa8be300431a61ee3a"
|
||||
integrity sha512-2iI7D34uTbDn/TaSiUbEHz+fUa8KbN90vX5yYqo12QGpu6T8Jl+kxODsWuMCwoTVlqUpwfPV22nBbFPME9OPtw==
|
||||
|
||||
"@esbuild/win32-arm64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.13.tgz#965ebbe889e4221962250c55facaa1e48130c162"
|
||||
integrity sha512-Jmwbp/5ArLCiRAHC33ODfcrlIcbP/exXkOEUVkADNJC4e/so2jm+i8IQFvVX/lA2GWvK3GdgcN0VFfp9YITAbg==
|
||||
|
||||
"@esbuild/win32-arm64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.14.tgz#d6ed78742a6edd413e75796882ddaef8c1e23b93"
|
||||
integrity sha512-SjlM7AHmQVTiGBJE/nqauY1aDh80UBsXZ94g4g60CDkrDMseatiqALVcIuElg4ZSYzJs8hsg5W6zS2zLpZTVgg==
|
||||
|
||||
"@esbuild/win32-ia32@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.13.tgz#1b04965bcf340ba4879b452ac32df63216d4c87e"
|
||||
integrity sha512-AX6WjntGjhJHzrPSVvjMD7grxt41koHfAOx6lxLorrpDwwIKKPaGDASPZgvFIZHTbwhOtILW6vAXxYPDsKpDJA==
|
||||
|
||||
"@esbuild/win32-ia32@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.14.tgz#558bd53859a83fe887d7d2dcdc6cb3fc9aa9a9bc"
|
||||
integrity sha512-z06t5zqk8ak0Xom5HG81z2iOQ1hNWYsFQp3sczVLVx+dctWdgl80tNRyTbwjaFfui2vFO12dfE3trCTvA+HO4g==
|
||||
|
||||
"@esbuild/win32-x64@0.16.13":
|
||||
version "0.16.13"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.13.tgz#0b0989cf0e7887cb0f3124e705cee68a694b96dd"
|
||||
integrity sha512-A+U4gM6OOkPS03UgVU08GTpAAAxPsP/8Z4FmneGo4TaVSD99bK9gVJXlqUEPMO/htFXEAht2O6pX4ErtLY5tVg==
|
||||
|
||||
"@esbuild/win32-x64@0.16.14":
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.14.tgz#90558dcb279989d92a42e5be4dfb884b2399361f"
|
||||
integrity sha512-ED1UpWcM6lAbalbbQ9TrGqJh4Y9TaASUvu8bI/0mgJcxhSByJ6rbpgqRhxYMaQ682WfA71nxUreaTO7L275zrw==
|
||||
|
||||
"@eslint/eslintrc@^0.4.3":
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
|
||||
@@ -3238,7 +3348,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@schemastore/web-manifest/-/web-manifest-0.0.5.tgz#97f0b1f14d095189c5672309e4975760278461b2"
|
||||
integrity sha512-3SF3OwzJ+PIqYDVW0MXoUAyypyx7N5RlYj2zek36qVuDUgoiI65q0ietwuxyVtbTRYJyP64KBGKvKqHzbIxdfA==
|
||||
|
||||
"@scure/base@1.1.1", "@scure/base@~1.1.0":
|
||||
"@scure/base@1.1.1", "@scure/base@~1.1.0", "@scure/base@~1.1.1":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938"
|
||||
integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==
|
||||
@@ -4712,39 +4822,39 @@
|
||||
"@styled-system/core" "^5.1.2"
|
||||
"@styled-system/css" "^5.1.5"
|
||||
|
||||
"@swc-node/core@^1.9.1":
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/@swc-node/core/-/core-1.9.1.tgz#f86d6be5f97beaff91786f0266734ec85e8456c7"
|
||||
integrity sha512-Mh4T/PmQOpPtqw1BNvU38uWzsXbd5RJji17YBXnj7JDDE5KlTR9sSo2RKxWKDVtHbdcD1S+CtyZXA93aEWlfGQ==
|
||||
"@swc-node/core@^1.9.2":
|
||||
version "1.9.2"
|
||||
resolved "https://registry.yarnpkg.com/@swc-node/core/-/core-1.9.2.tgz#9c126ace9c71acd8ad301b3823bde7925d8a58ab"
|
||||
integrity sha512-tInCla6NO1HEQwhIc/K7PCOu4X3ppqw5xYNEMD7i41SyRuH7yp3u8x7x2cqeAD+6IAhJ5jKDPv2QRLPz7Xt3EA==
|
||||
|
||||
"@swc-node/jest@1.5.5":
|
||||
version "1.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@swc-node/jest/-/jest-1.5.5.tgz#c3de6b0076bf84310c35995dfe449cf633436da3"
|
||||
integrity sha512-DUf0XMk5xuwt4x+BiZ++KlPxa0H9lvjhFdXU2c8lsu+UztGRUAUtI5nhNTqjS9PXw0zzf3gEFP7M8hNUo52YhQ==
|
||||
"@swc-node/jest@1.5.6":
|
||||
version "1.5.6"
|
||||
resolved "https://registry.yarnpkg.com/@swc-node/jest/-/jest-1.5.6.tgz#4e9ac87c7e5d6f0f49d3f8cc0b0521374021c461"
|
||||
integrity sha512-znW8hxrvEyuaPhkAUBn+zCY53WnE0WKNb1jPNSW+QwBOwQz7wdQn/nTRTojeFyqmGxlJNgxyVVKMx+n9xnrq8Q==
|
||||
dependencies:
|
||||
"@node-rs/xxhash" "^1.2.1"
|
||||
"@swc-node/core" "^1.9.1"
|
||||
"@swc-node/register" "^1.5.4"
|
||||
"@swc-node/core" "^1.9.2"
|
||||
"@swc-node/register" "^1.5.5"
|
||||
|
||||
"@swc-node/register@^1.5.4":
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/@swc-node/register/-/register-1.5.4.tgz#16b3f9bb94bf29dea87c4c4ef3799883d2462912"
|
||||
integrity sha512-cM5/A63bO6qLUFC4gcBnOlQO5yd8ObSdFUIp7sXf11Oq5mPVAnJy2DqjbWMUsqUaHuNk+lOIt76ie4DEseUIyA==
|
||||
"@swc-node/register@^1.5.5":
|
||||
version "1.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@swc-node/register/-/register-1.5.5.tgz#0c9c6b8ea969b7ee2280e176debd1fde89986c06"
|
||||
integrity sha512-SNpbRG8EOXShk3YAnC4suAVovYQ7oFOFdCVBA3J8hkO5qy0WHPVnlnMojTYI+8UT1CrfQ1QSUySaAARRvEdwjg==
|
||||
dependencies:
|
||||
"@swc-node/core" "^1.9.1"
|
||||
"@swc-node/sourcemap-support" "^0.2.2"
|
||||
"@swc-node/core" "^1.9.2"
|
||||
"@swc-node/sourcemap-support" "^0.2.3"
|
||||
colorette "^2.0.19"
|
||||
debug "^4.3.4"
|
||||
pirates "^4.0.5"
|
||||
tslib "^2.4.0"
|
||||
tslib "^2.4.1"
|
||||
|
||||
"@swc-node/sourcemap-support@^0.2.2":
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@swc-node/sourcemap-support/-/sourcemap-support-0.2.2.tgz#6718d1ef3f4159c571b331cd4c20096a998cd385"
|
||||
integrity sha512-PA4p7nC5LwPdEVcQXFxMTpfvizYPeMoB55nIIx+yC3FiLnyPgC2hcpUitPy5h8RRGdCZ/Mvb2ryEcVYS8nI6YA==
|
||||
"@swc-node/sourcemap-support@^0.2.3":
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@swc-node/sourcemap-support/-/sourcemap-support-0.2.3.tgz#fbd049a409bb10d198dea4e5fff5795a33ddd9dd"
|
||||
integrity sha512-LOC/z9HDUmTqSAF08YIRLThGGNZLdRrjcEdoQu/EANxPSVRedYgh4AiZlOX8sY8Rp1p7S/StOmZogJLuvR4mcA==
|
||||
dependencies:
|
||||
source-map-support "^0.5.21"
|
||||
tslib "^2.4.0"
|
||||
tslib "^2.4.1"
|
||||
|
||||
"@swc/core-darwin-arm64@1.3.24":
|
||||
version "1.3.24"
|
||||
@@ -5078,6 +5188,18 @@
|
||||
"@types/node" "*"
|
||||
"@types/responselike" "^1.0.0"
|
||||
|
||||
"@types/chai-subset@^1.3.3":
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94"
|
||||
integrity sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
|
||||
"@types/chai@*", "@types/chai@^4.3.4":
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4"
|
||||
integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==
|
||||
|
||||
"@types/chroma-js@2.1.3":
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.1.3.tgz#0b03d737ff28fad10eb884e0c6cedd5ffdc4ba0a"
|
||||
@@ -6039,6 +6161,19 @@
|
||||
resolved "https://registry.yarnpkg.com/@virtuoso.dev/urx/-/urx-0.2.13.tgz#a65e7e8d923cb03397ac876bfdd45c7f71c8edf1"
|
||||
integrity sha512-iirJNv92A1ZWxoOHHDYW/1KPoi83939o83iUBQHIim0i3tMeSKEh+bxhJdTHQ86Mr4uXx9xGUTq69cp52ZP8Xw==
|
||||
|
||||
"@vitest/coverage-istanbul@0.26.3":
|
||||
version "0.26.3"
|
||||
resolved "https://registry.yarnpkg.com/@vitest/coverage-istanbul/-/coverage-istanbul-0.26.3.tgz#327f20b77077c0afcd6db0a20d31d6f63a3df881"
|
||||
integrity sha512-pJRxb+mGy11WdYiam6iW6N4CyhaBbpne+CGPqYGid74SplcR8N07JT3ETDoHKqh5vJCX5UnEIYIreanvFjgLHg==
|
||||
dependencies:
|
||||
istanbul-lib-coverage "^3.2.0"
|
||||
istanbul-lib-instrument "^5.2.1"
|
||||
istanbul-lib-report "^3.0.0"
|
||||
istanbul-lib-source-maps "^4.0.1"
|
||||
istanbul-reports "^3.1.5"
|
||||
test-exclude "^6.0.0"
|
||||
vitest "0.26.3"
|
||||
|
||||
"@vkontakte/vk-qr@2.0.13":
|
||||
version "2.0.13"
|
||||
resolved "https://registry.yarnpkg.com/@vkontakte/vk-qr/-/vk-qr-2.0.13.tgz#989672cbebd7a7d1cf07c168cf1716ef8fb0c719"
|
||||
@@ -6321,7 +6456,7 @@ acorn-loose@8.3.0:
|
||||
dependencies:
|
||||
acorn "^8.5.0"
|
||||
|
||||
acorn-walk@8.2.0, acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1:
|
||||
acorn-walk@8.2.0, acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1, acorn-walk@^8.2.0:
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
|
||||
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
|
||||
@@ -6886,6 +7021,11 @@ assert@2.0.0:
|
||||
object-is "^1.0.1"
|
||||
util "^0.12.0"
|
||||
|
||||
assertion-error@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
|
||||
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
|
||||
|
||||
astral-regex@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
|
||||
@@ -7676,6 +7816,19 @@ caseless@~0.12.0:
|
||||
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
|
||||
integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
|
||||
|
||||
chai@^4.3.7:
|
||||
version "4.3.7"
|
||||
resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51"
|
||||
integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==
|
||||
dependencies:
|
||||
assertion-error "^1.1.0"
|
||||
check-error "^1.0.2"
|
||||
deep-eql "^4.1.2"
|
||||
get-func-name "^2.0.0"
|
||||
loupe "^2.3.1"
|
||||
pathval "^1.1.1"
|
||||
type-detect "^4.0.5"
|
||||
|
||||
chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
||||
@@ -7732,6 +7885,11 @@ chardet@^0.7.0:
|
||||
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
||||
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
|
||||
|
||||
check-error@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
|
||||
integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==
|
||||
|
||||
cheerio-select@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4"
|
||||
@@ -8703,6 +8861,13 @@ dedent@^0.7.0:
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
|
||||
integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
|
||||
|
||||
deep-eql@^4.1.2:
|
||||
version "4.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d"
|
||||
integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
|
||||
dependencies:
|
||||
type-detect "^4.0.0"
|
||||
|
||||
deep-equal@^2.0.5:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.1.0.tgz#5ba60402cf44ab92c2c07f3f3312c3d857a0e1dd"
|
||||
@@ -9539,6 +9704,34 @@ esbuild@^0.15.6:
|
||||
esbuild-windows-64 "0.15.18"
|
||||
esbuild-windows-arm64 "0.15.18"
|
||||
|
||||
esbuild@^0.16.3:
|
||||
version "0.16.14"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.14.tgz#366249a0a0fd431d3ab706195721ef1014198919"
|
||||
integrity sha512-6xAn3O6ZZyoxZAEkwfI9hw4cEqSr/o1ViJtnkvImVkblmUN65Md04o0S/7H1WNu1XGf1Cjij/on7VO4psIYjkw==
|
||||
optionalDependencies:
|
||||
"@esbuild/android-arm" "0.16.14"
|
||||
"@esbuild/android-arm64" "0.16.14"
|
||||
"@esbuild/android-x64" "0.16.14"
|
||||
"@esbuild/darwin-arm64" "0.16.14"
|
||||
"@esbuild/darwin-x64" "0.16.14"
|
||||
"@esbuild/freebsd-arm64" "0.16.14"
|
||||
"@esbuild/freebsd-x64" "0.16.14"
|
||||
"@esbuild/linux-arm" "0.16.14"
|
||||
"@esbuild/linux-arm64" "0.16.14"
|
||||
"@esbuild/linux-ia32" "0.16.14"
|
||||
"@esbuild/linux-loong64" "0.16.14"
|
||||
"@esbuild/linux-mips64el" "0.16.14"
|
||||
"@esbuild/linux-ppc64" "0.16.14"
|
||||
"@esbuild/linux-riscv64" "0.16.14"
|
||||
"@esbuild/linux-s390x" "0.16.14"
|
||||
"@esbuild/linux-x64" "0.16.14"
|
||||
"@esbuild/netbsd-x64" "0.16.14"
|
||||
"@esbuild/openbsd-x64" "0.16.14"
|
||||
"@esbuild/sunos-x64" "0.16.14"
|
||||
"@esbuild/win32-arm64" "0.16.14"
|
||||
"@esbuild/win32-ia32" "0.16.14"
|
||||
"@esbuild/win32-x64" "0.16.14"
|
||||
|
||||
escalade@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
|
||||
@@ -10613,6 +10806,11 @@ get-caller-file@^2.0.5:
|
||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||
|
||||
get-func-name@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
|
||||
integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==
|
||||
|
||||
get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
|
||||
@@ -11967,7 +12165,7 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
|
||||
integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
|
||||
|
||||
istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
|
||||
istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0, istanbul-lib-instrument@^5.2.1:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
|
||||
integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
|
||||
@@ -11987,7 +12185,7 @@ istanbul-lib-report@^3.0.0:
|
||||
make-dir "^3.0.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
istanbul-lib-source-maps@^4.0.0:
|
||||
istanbul-lib-source-maps@^4.0.0, istanbul-lib-source-maps@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551"
|
||||
integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==
|
||||
@@ -11996,7 +12194,7 @@ istanbul-lib-source-maps@^4.0.0:
|
||||
istanbul-lib-coverage "^3.0.0"
|
||||
source-map "^0.6.1"
|
||||
|
||||
istanbul-reports@^3.1.3:
|
||||
istanbul-reports@^3.1.3, istanbul-reports@^3.1.5:
|
||||
version "3.1.5"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae"
|
||||
integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==
|
||||
@@ -12602,6 +12800,11 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.1, json5@^2.2.2:
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
|
||||
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
|
||||
|
||||
jsonc-parser@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
|
||||
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
|
||||
|
||||
jsondiffpatch@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/jsondiffpatch/-/jsondiffpatch-0.4.1.tgz#9fb085036767f03534ebd46dcd841df6070c5773"
|
||||
@@ -13004,6 +13207,11 @@ loader-utils@^3.2.0:
|
||||
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576"
|
||||
integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==
|
||||
|
||||
local-pkg@^0.4.2:
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.2.tgz#13107310b77e74a0e513147a131a2ba288176c2f"
|
||||
integrity sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==
|
||||
|
||||
localforage@^1.10.0:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4"
|
||||
@@ -13156,6 +13364,13 @@ loud-rejection@^1.0.0:
|
||||
currently-unhandled "^0.4.1"
|
||||
signal-exit "^3.0.0"
|
||||
|
||||
loupe@^2.3.1:
|
||||
version "2.3.6"
|
||||
resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53"
|
||||
integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==
|
||||
dependencies:
|
||||
get-func-name "^2.0.0"
|
||||
|
||||
lower-case@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
|
||||
@@ -13368,11 +13583,28 @@ methods@~1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
|
||||
|
||||
micro-btc-signer@0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/micro-btc-signer/-/micro-btc-signer-0.2.0.tgz#cd8ee2858ffd668b9858f621d94be097a5ccecf9"
|
||||
integrity sha512-Rho4MgGnDoEt/nHKHc86+nNCU2xUu+u1XIn4+Qy3e2QeJ2FILr8f/EU80I3QDavJBGvcByrsG6qICuV178HmVg==
|
||||
dependencies:
|
||||
"@noble/hashes" "~1.1.1"
|
||||
"@noble/secp256k1" "~1.7.0"
|
||||
"@scure/base" "~1.1.0"
|
||||
micro-packed "~0.3.0"
|
||||
|
||||
micro-memoize@^4.0.9:
|
||||
version "4.0.14"
|
||||
resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.0.14.tgz#d1239ce2e5831125ac518509f5a23b54e7ca3e17"
|
||||
integrity sha512-2tzWP1w2Hh+r7kCYa4f//jpBEA6dAueiuLco38NxfjF9Py3KCCI7wVOTdCvOhmTC043t+ulclVBdl3v+s+UJIQ==
|
||||
|
||||
micro-packed@~0.3.0:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/micro-packed/-/micro-packed-0.3.1.tgz#d734127aa5a8d19848372636a76395d17c6f8e89"
|
||||
integrity sha512-GOTor/Cdd094XYPDOsNQU6qJfki9H+A8yn8VI2thIG3GRizmuw+cTInajiG8YZ7j8m6Ev7PyJOUeRd70rQf5vA==
|
||||
dependencies:
|
||||
"@scure/base" "~1.1.1"
|
||||
|
||||
micromatch@^4.0.2, micromatch@^4.0.4:
|
||||
version "4.0.5"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
|
||||
@@ -13543,6 +13775,16 @@ mkdirp@^0.5.4, mkdirp@~0.5.1:
|
||||
dependencies:
|
||||
minimist "^1.2.6"
|
||||
|
||||
mlly@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.0.0.tgz#d38ca6e33ab89b60654f71ef08931d51e83d3569"
|
||||
integrity sha512-QL108Hwt+u9bXdWgOI0dhzZfACovn5Aen4Xvc8Jasd9ouRH4NjnrXEiyP3nVvJo91zPlYjVRckta0Nt2zfoR6g==
|
||||
dependencies:
|
||||
acorn "^8.8.1"
|
||||
pathe "^1.0.0"
|
||||
pkg-types "^1.0.0"
|
||||
ufo "^1.0.0"
|
||||
|
||||
moment@^2.19.3:
|
||||
version "2.29.4"
|
||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
|
||||
@@ -14304,6 +14546,21 @@ path-type@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
|
||||
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
||||
|
||||
pathe@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339"
|
||||
integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==
|
||||
|
||||
pathe@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.0.0.tgz#135fc11464fc57c84ef93d5c5ed21247e24571df"
|
||||
integrity sha512-nPdMG0Pd09HuSsr7QOKUXO2Jr9eqaDiZvDwdyIhNG5SHYujkQHYKDfGQkulBxvbDHz8oHLsTgKN86LSwYzSHAg==
|
||||
|
||||
pathval@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
|
||||
integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
|
||||
|
||||
pause-stream@^0.0.11:
|
||||
version "0.0.11"
|
||||
resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
|
||||
@@ -14450,6 +14707,15 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
|
||||
dependencies:
|
||||
find-up "^4.0.0"
|
||||
|
||||
pkg-types@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.1.tgz#25234407f9dc63409af45ced9407625ff446a761"
|
||||
integrity sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==
|
||||
dependencies:
|
||||
jsonc-parser "^3.2.0"
|
||||
mlly "^1.0.0"
|
||||
pathe "^1.0.0"
|
||||
|
||||
pkg-up@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5"
|
||||
@@ -14492,7 +14758,7 @@ postcss@8.4.19:
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
postcss@^8.1.10:
|
||||
postcss@^8.1.10, postcss@^8.4.20:
|
||||
version "8.4.20"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.20.tgz#64c52f509644cecad8567e949f4081d98349dc56"
|
||||
integrity sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==
|
||||
@@ -15441,7 +15707,7 @@ resolve.exports@^1.1.0:
|
||||
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9"
|
||||
integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
|
||||
|
||||
resolve@^1.1.7, resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.9.0:
|
||||
resolve@^1.1.7, resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.9.0:
|
||||
version "1.22.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
|
||||
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
|
||||
@@ -15561,6 +15827,13 @@ roarr@^2.15.3:
|
||||
semver-compare "^1.0.0"
|
||||
sprintf-js "^1.1.2"
|
||||
|
||||
rollup@^3.7.0:
|
||||
version "3.9.1"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.9.1.tgz#27501d3d026418765fe379d5620d25954ff2a011"
|
||||
integrity sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
run-async@^2.2.0, run-async@^2.4.0:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
|
||||
@@ -16581,6 +16854,13 @@ strip-json-comments@~2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
|
||||
|
||||
strip-literal@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.0.0.tgz#0a484ed5a978cd9d2becf3cf8f4f2cb5ab0e1e74"
|
||||
integrity sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==
|
||||
dependencies:
|
||||
acorn "^8.8.1"
|
||||
|
||||
styled-components@^5.3.5:
|
||||
version "5.3.6"
|
||||
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.6.tgz#27753c8c27c650bee9358e343fc927966bfd00d1"
|
||||
@@ -16872,6 +17152,21 @@ tiny-warning@^1.0.2, tiny-warning@^1.0.3:
|
||||
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
|
||||
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
|
||||
|
||||
tinybench@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.3.1.tgz#14f64e6b77d7ef0b1f6ab850c7a808c6760b414d"
|
||||
integrity sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==
|
||||
|
||||
tinypool@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.3.0.tgz#c405d8b743509fc28ea4ca358433190be654f819"
|
||||
integrity sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==
|
||||
|
||||
tinyspy@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-1.0.2.tgz#6da0b3918bfd56170fb3cd3a2b5ef832ee1dff0d"
|
||||
integrity sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==
|
||||
|
||||
tippy.js@^6.3.1:
|
||||
version "6.3.7"
|
||||
resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c"
|
||||
@@ -17066,7 +17361,7 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0:
|
||||
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.4.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
|
||||
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
|
||||
@@ -17109,7 +17404,7 @@ type-check@~0.3.2:
|
||||
dependencies:
|
||||
prelude-ls "~1.1.2"
|
||||
|
||||
type-detect@4.0.8, type-detect@^4.0.8:
|
||||
type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
|
||||
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
|
||||
@@ -17169,6 +17464,11 @@ typescript@4.9.4, typescript@^4.1.2:
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78"
|
||||
integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==
|
||||
|
||||
ufo@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.0.1.tgz#64ed43b530706bda2e4892f911f568cf4cf67d29"
|
||||
integrity sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==
|
||||
|
||||
uglify-js@^3.1.4, uglify-js@^3.1.9:
|
||||
version "3.17.4"
|
||||
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c"
|
||||
@@ -17499,6 +17799,51 @@ verror@1.10.0:
|
||||
core-util-is "1.0.2"
|
||||
extsprintf "^1.2.0"
|
||||
|
||||
vite-node@0.26.3:
|
||||
version "0.26.3"
|
||||
resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.26.3.tgz#164fbaf449d5bd382b44b736653ba800397b5ebd"
|
||||
integrity sha512-Te2bq0Bfvq6XiO718I+1EinMjpNYKws6SNHKOmVbILAQimKoZKDd+IZLlkaYcBXPpK3HFe2U80k8Zw+m3w/a2w==
|
||||
dependencies:
|
||||
debug "^4.3.4"
|
||||
mlly "^1.0.0"
|
||||
pathe "^0.2.0"
|
||||
source-map "^0.6.1"
|
||||
source-map-support "^0.5.21"
|
||||
vite "^3.0.0 || ^4.0.0"
|
||||
|
||||
"vite@^3.0.0 || ^4.0.0":
|
||||
version "4.0.4"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-4.0.4.tgz#4612ce0b47bbb233a887a54a4ae0c6e240a0da31"
|
||||
integrity sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==
|
||||
dependencies:
|
||||
esbuild "^0.16.3"
|
||||
postcss "^8.4.20"
|
||||
resolve "^1.22.1"
|
||||
rollup "^3.7.0"
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
vitest@0.26.3:
|
||||
version "0.26.3"
|
||||
resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.26.3.tgz#0e3abb7674e8af7b74519b40c04efe6e43c0b0a7"
|
||||
integrity sha512-FmHxU9aUCxTi23keF3vxb/Qp0lYXaaJ+jRLGOUmMS3qVTOJvgGE+f1VArupA6pEhaG2Ans4X+zV9dqM5WISMbg==
|
||||
dependencies:
|
||||
"@types/chai" "^4.3.4"
|
||||
"@types/chai-subset" "^1.3.3"
|
||||
"@types/node" "*"
|
||||
acorn "^8.8.1"
|
||||
acorn-walk "^8.2.0"
|
||||
chai "^4.3.7"
|
||||
debug "^4.3.4"
|
||||
local-pkg "^0.4.2"
|
||||
source-map "^0.6.1"
|
||||
strip-literal "^1.0.0"
|
||||
tinybench "^2.3.1"
|
||||
tinypool "^0.3.0"
|
||||
tinyspy "^1.0.2"
|
||||
vite "^3.0.0 || ^4.0.0"
|
||||
vite-node "0.26.3"
|
||||
|
||||
vm-browserify@1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
|
||||
|
||||
Reference in New Issue
Block a user