diff --git a/.changeset/odd-tips-yawn.md b/.changeset/odd-tips-yawn.md new file mode 100644 index 0000000000..7cdefaea95 --- /dev/null +++ b/.changeset/odd-tips-yawn.md @@ -0,0 +1,35 @@ +--- +"@near-js/accounts": minor +"@near-js/biometric-ed25519": minor +"@near-js/crypto": minor +"@near-js/iframe-rpc": minor +"@near-js/keystores": minor +"@near-js/keystores-browser": minor +"@near-js/keystores-node": minor +"near-api-js": major +"@near-js/providers": major +"@near-js/signers": minor +"@near-js/transactions": minor +"@near-js/types": minor +"@near-js/utils": major +"@near-js/wallet-account": minor +--- + +Update to Node.js 20 LTS & pnpm 9.4, modularize packages, simplify dependencies, and update tests + +**Breaking Changes** + +- `near-api-js@5.0.0` + - The following functions are no longer exported: + - `logWarning` + - `fetchJson` + - the unnamed wrapped `fetch` function exported from `setup-node-fetch.ts` + - The browser bundle is no longer being built in version 5; for browser support please use modules + +- `@near-js/providers@1.0.0` + - The following functions are no longer exported: + - `fetchJson` + +- `@near-js/utils@1.0.0` + - The following functions are no longer exported: + - `logWarning` \ No newline at end of file diff --git a/.eslintrc.base.yml b/.eslintrc.base.yml index 0ffb722323..0705b4f7d4 100644 --- a/.eslintrc.base.yml +++ b/.eslintrc.base.yml @@ -4,7 +4,7 @@ env: extends: - 'eslint:recommended' parserOptions: - ecmaVersion: 2018 + ecmaVersion: 2020 sourceType: module rules: indent: diff --git a/.eslintrc.js.yml b/.eslintrc.js.yml deleted file mode 100644 index 1a932a041c..0000000000 --- a/.eslintrc.js.yml +++ /dev/null @@ -1,8 +0,0 @@ -extends: './.eslintrc.base.yml' -env: - jest: true -globals: - jasmine: true - window: false - fail: true - BigInt: true diff --git a/.eslintrc.ts.yml b/.eslintrc.ts.yml index d68c7ff9ac..e146157109 100644 --- a/.eslintrc.ts.yml +++ b/.eslintrc.ts.yml @@ -3,3 +3,9 @@ extends: - 'plugin:@typescript-eslint/eslint-recommended' - 'plugin:@typescript-eslint/recommended' parser: '@typescript-eslint/parser' +overrides: + - rules: + "@typescript-eslint/no-explicit-any": "warn" + "@typescript-eslint/no-empty-function": "warn" + files: + - "*.ts" diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index af57bd6b89..df49bf7fd7 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -20,12 +20,12 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4.0.0 with: - version: 7 + version: 9.4.0 - name: Setup Node uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: 20.15.0 cache: pnpm - name: Install dependencies diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 17567df77e..e2d9501d33 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,12 +23,12 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4.0.0 with: - version: 7 + version: 9.4.0 - name: Setup Node.js uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: 20.15.0 - name: Install Dependencies run: pnpm install diff --git a/.github/workflows/typedoc-generator.yml b/.github/workflows/typedoc-generator.yml index 316f7ea2eb..ac4fa30d56 100644 --- a/.github/workflows/typedoc-generator.yml +++ b/.github/workflows/typedoc-generator.yml @@ -6,7 +6,7 @@ on: master env: - NODE_VERSION: 18.x + NODE_VERSION: 20.15.0 ENTRY_FILE: 'packages' CONFIG_PATH: 'tsconfig.base.json' USES_PNPM: 'true' @@ -28,7 +28,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4.0.0 with: - version: 7 + version: 9.4.0 - name: Install dependencies run: pnpm install diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1d1629d303..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -language: node_js - -node_js: 12 - -env: - - NODE_ENV=ci - -cache: yarn - - -jobs: - include: - - name: yarn - script: - - yarn lint - - yarn test - - yarn browserify && yarn run bundlewatch - - - name: fossa - before_script: - - "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/fc60c6631a5d372d5a45fea35e31665b338f260d/install.sh | sudo bash" - script: - - fossa init - - fossa analyze --server-scan - - fossa test - - name: danger - script: - - yarn danger ci diff --git a/package.json b/package.json index 280b63fb54..b594b5f13a 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,15 @@ "name": "@near-js/monorepo", "private": true, "engines": { - "node": ">=16.14.0", - "pnpm": ">=7" + "node": ">=20.15.0", + "pnpm": ">=9.4.0" }, "scripts": { "preinstall": "npx only-allow pnpm", "build": "turbo run build", "clean": "turbo run clean", - "lint": "turbo run lint:ts lint:js", - "lint:fix": "turbo run lint:ts:fix lint:js:fix", + "lint": "turbo run lint", + "lint:fix": "turbo run lint:fix", "autoclave": "rimraf packages/**/dist && rimraf packages/**/lib && rimraf packages/**/node_modules && rimraf packages/**/coverage && rimraf packages/**/.turbo && rm -rf node_modules", "test": "turbo run test", "release": "changeset publish", @@ -20,17 +20,18 @@ "devDependencies": { "@changesets/changelog-github": "0.4.6", "@changesets/cli": "2.24.4", - "@commitlint/cli": "17.0.3", - "@commitlint/config-conventional": "17.0.3", - "@typescript-eslint/eslint-plugin": "5.31.0", - "@typescript-eslint/parser": "5.31.0", - "commitlint": "17.0.3", + "@commitlint/cli": "19.3.0", + "@commitlint/config-conventional": "19.2.2", + "@typescript-eslint/eslint-plugin": "6.21.0", + "@typescript-eslint/parser": "6.21.0", + "commitlint": "19.3.0", "eslint": "8.20.0", "husky": "7.0.4", - "rimraf": "3.0.2", + "rimraf": "6.0.1", "turbo": "1.4.5", - "typedoc": "0.25.3", - "typescript": "4.9.4" + "typedoc": "0.25.13", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "resolutions": { "near-sandbox": "0.0.18", diff --git a/packages/accounts/jest.config.js b/packages/accounts/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/accounts/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/accounts/jest.config.ts b/packages/accounts/jest.config.ts new file mode 100644 index 0000000000..3b66313239 --- /dev/null +++ b/packages/accounts/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true, + }, + }], + }, +}; diff --git a/packages/accounts/package.json b/packages/accounts/package.json index c43fe6e6ea..e82c0a0d8e 100644 --- a/packages/accounts/package.json +++ b/packages/accounts/package.json @@ -2,15 +2,15 @@ "name": "@near-js/accounts", "version": "1.2.2", "description": "Classes encapsulating account-specific functionality", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "lint:js": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc", - "lint:js:fix": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc --fix", - "lint:ts": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc", - "lint:ts:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc --fix", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "", @@ -22,27 +22,35 @@ "@near-js/transactions": "workspace:*", "@near-js/types": "workspace:*", "@near-js/utils": "workspace:*", + "@noble/hashes": "1.3.3", "borsh": "1.0.0", "depd": "2.0.0", "is-my-json-valid": "^2.20.6", + "isomorphic-unfetch": "^3.1.0", "lru_map": "0.4.1", "near-abi": "0.1.1" }, "devDependencies": { + "@jest/globals": "^29.7.0", "@near-js/keystores": "workspace:*", - "@types/node": "18.11.18", + "@types/json-schema": "^7.0.15", + "@types/node": "20.0.0", "bs58": "4.0.0", - "jest": "26.0.1", + "build": "workspace:*", + "jest": "29.7.0", "near-hello": "0.5.1", "near-workspaces": "3.5.0", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "node-fetch": "2.6.7", + "semver": "7.1.1", + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" ], - "resolutions": { - "near-sandbox": "0.0.18", - "near-api-js": "4.0.0" + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" } } diff --git a/packages/accounts/src/account.ts b/packages/accounts/src/account.ts index feb61ab188..47fe2245f8 100644 --- a/packages/accounts/src/account.ts +++ b/packages/accounts/src/account.ts @@ -152,7 +152,7 @@ export class Account implements IntoConnection { const block = await this.connection.provider.block({ finality: 'final' }); const blockHash = block.header.hash; - const nonce = accessKey.nonce + BigInt(1); + const nonce = accessKey.nonce + 1n; return await signTransaction( receiverId, nonce, actions, baseDecode(blockHash), this.connection.signer, this.accountId, this.connection.networkId ); @@ -444,7 +444,7 @@ export class Account implements IntoConnection { const delegateAction = buildDelegateAction({ actions, maxBlockHeight: BigInt(header.height) + BigInt(blockHeightTtl), - nonce: BigInt(accessKey.nonce) + BigInt(1), + nonce: BigInt(accessKey.nonce) + 1n, publicKey, receiverId, senderId: this.accountId, @@ -610,7 +610,7 @@ export class Account implements IntoConnection { const validatorId = uniquePools[index]; if (state.status === 'fulfilled') { const currentBN = BigInt(state.value); - if (currentBN !== BigInt(0)) { + if (currentBN !== 0n) { return { ...result, stakedValidators: [...result.stakedValidators, { validatorId, amount: currentBN.toString() }], @@ -626,7 +626,7 @@ export class Account implements IntoConnection { } return result; }, - { stakedValidators: [], failedValidators: [], total: BigInt(0) }); + { stakedValidators: [], failedValidators: [], total: 0n }); return { ...summary, diff --git a/packages/accounts/src/account_2fa.ts b/packages/accounts/src/account_2fa.ts index 78533fbee9..c2ba68caa3 100644 --- a/packages/accounts/src/account_2fa.ts +++ b/packages/accounts/src/account_2fa.ts @@ -1,8 +1,8 @@ import { PublicKey } from '@near-js/crypto'; import { FinalExecutionOutcome, TypedError, FunctionCallPermissionView } from '@near-js/types'; -import { fetchJson } from '@near-js/providers'; import { actionCreators } from '@near-js/transactions'; import { Logger } from '@near-js/utils' +import unfetch from 'isomorphic-unfetch'; import { SignAndSendTransactionOptions } from './account'; import { AccountMultisig } from './account_multisig'; @@ -75,6 +75,7 @@ export class Account2FA extends AccountMultisig { const { accountId } = this; const seedOrLedgerKey = (await this.getRecoveryMethods()).data + // @ts-ignore .filter(({ kind, publicKey }) => (kind === 'phrase' || kind === 'ledger') && publicKey !== null) .map((rm) => rm.publicKey); @@ -83,6 +84,7 @@ export class Account2FA extends AccountMultisig { .map((ak) => ak.public_key) .map(toPK); + // @ts-ignore const confirmOnlyKey = toPK((await this.postSignedJson('/2fa/getAccessKey', { accountId })).publicKey); const newArgs = Buffer.from(JSON.stringify({ 'num_confirmations': 2 })); @@ -158,7 +160,7 @@ export class Account2FA extends AccountMultisig { const currentAccountStateKeys = currentAccountState.map(({ key }) => key.toString('base64')); return currentAccountState.length ? [ deployContract(cleanupContractBytes), - functionCall('clean', { keys: currentAccountStateKeys }, MULTISIG_GAS, BigInt('0')) + functionCall('clean', { keys: currentAccountStateKeys }, MULTISIG_GAS, 0n) ] : []; } @@ -177,6 +179,7 @@ export class Account2FA extends AccountMultisig { perm.method_names.length === 4 && perm.method_names.includes('add_request_and_confirm'); }); + // @ts-ignore const confirmOnlyKey = PublicKey.from((await this.postSignedJson('/2fa/getAccessKey', { accountId })).publicKey); return [ deleteKey(confirmOnlyKey), @@ -298,10 +301,13 @@ export class Account2FA extends AccountMultisig { */ async get2faMethod() { let { data } = await this.getRecoveryMethods(); + // @ts-ignore if (data && data.length) { + // @ts-ignore data = data.find((m) => m.kind.indexOf('2fa-') === 0); } if (!data) return null; + // @ts-ignore const { kind, detail } = data; return { kind, detail }; } @@ -326,10 +332,13 @@ export class Account2FA extends AccountMultisig { * @returns {Promise} - A promise that resolves to the response from the helper. */ async postSignedJson(path, body) { - return await fetchJson(this.helperUrl + path, JSON.stringify({ - ...body, - ...(await this.signatureFor()) - })); + return await unfetch(this.helperUrl + path, { + body: JSON.stringify({ + ...body, + ...(await this.signatureFor()), + }), + method: 'POST', + }); } } diff --git a/packages/accounts/src/account_creator.ts b/packages/accounts/src/account_creator.ts index 62fac47fdb..40cadf8127 100644 --- a/packages/accounts/src/account_creator.ts +++ b/packages/accounts/src/account_creator.ts @@ -1,5 +1,5 @@ import { PublicKey } from '@near-js/crypto'; -import { fetchJson } from '@near-js/providers'; +import unfetch from 'isomorphic-unfetch'; import { Connection } from './connection'; import { Account } from './account'; @@ -50,6 +50,9 @@ export class UrlAccountCreator extends AccountCreator { * @returns {Promise} */ async createAccount(newAccountId: string, publicKey: PublicKey): Promise { - await fetchJson(`${this.helperUrl}/account`, JSON.stringify({ newAccountId, newAccountPublicKey: publicKey.toString() })); + await unfetch(`${this.helperUrl}/account`, { + body: JSON.stringify({ newAccountId, newAccountPublicKey: publicKey.toString() }), + method: 'POST', + }); } } diff --git a/packages/accounts/src/constants.ts b/packages/accounts/src/constants.ts index ad8bec4dac..7a14e61e7b 100644 --- a/packages/accounts/src/constants.ts +++ b/packages/accounts/src/constants.ts @@ -3,7 +3,7 @@ import { parseNearAmount } from '@near-js/utils'; export const MULTISIG_STORAGE_KEY = '__multisigRequest'; export const MULTISIG_ALLOWANCE = BigInt(parseNearAmount('1')); // TODO: Different gas value for different requests (can reduce gas usage dramatically) -export const MULTISIG_GAS = BigInt('100000000000000'); -export const MULTISIG_DEPOSIT = BigInt('0'); +export const MULTISIG_GAS = 100000000000000n; +export const MULTISIG_DEPOSIT = 0n; export const MULTISIG_CHANGE_METHODS = ['add_request', 'add_request_and_confirm', 'delete_request', 'confirm']; export const MULTISIG_CONFIRM_METHODS = ['confirm']; diff --git a/packages/accounts/src/local-view-execution/index.ts b/packages/accounts/src/local-view-execution/index.ts index fab8782a49..2f62c87320 100644 --- a/packages/accounts/src/local-view-execution/index.ts +++ b/packages/accounts/src/local-view-execution/index.ts @@ -76,7 +76,7 @@ export class LocalViewExecution { * @param options.blockQuery The block query options. * @returns {Promise} - A promise that resolves to the result of the view function. */ - public async viewFunction({ contractId, methodName, args = {}, blockQuery = { finality: 'optimistic' }, ...ignored }: ViewFunctionCallOptions) { + public async viewFunction({ contractId, methodName, args = {}, blockQuery = { finality: 'optimistic' } }: ViewFunctionCallOptions) { const methodArgs = JSON.stringify(args); const { contractCode, contractState, blockHeight, blockTimestamp } = await this.loadOrFetch( diff --git a/packages/accounts/src/local-view-execution/runtime.ts b/packages/accounts/src/local-view-execution/runtime.ts index d684348052..b005d5d16b 100644 --- a/packages/accounts/src/local-view-execution/runtime.ts +++ b/packages/accounts/src/local-view-execution/runtime.ts @@ -1,4 +1,4 @@ -import { createHash } from 'crypto'; +import { sha256 } from '@noble/hashes/sha256'; import { ContractState } from './types'; const notImplemented = @@ -269,9 +269,7 @@ export class Runtime { private sha256 (valueLen: bigint, valuePtr: bigint, registerId: bigint) { const value = new Uint8Array(this.memory.buffer, Number(valuePtr), Number(valueLen)); - const hash = createHash('sha256'); - hash.update(value); - this.registers[registerId.toString()] = hash.digest(); + this.registers[registerId.toString()] = sha256(value); } private returnValue (valueLen: bigint, valuePtr: bigint) { @@ -300,21 +298,21 @@ export class Runtime { const result = this.storageRead(key_len, key_ptr); if (result == null) { - return BigInt(0); + return 0n; } this.registers[register_id] = result; - return BigInt(1); + return 1n; } private hasStorageKey (key_len: bigint, key_ptr: bigint): bigint { const result = this.storageRead(key_len, key_ptr); if (result == null) { - return BigInt(0); + return 0n; } - return BigInt(1); + return 1n; } private getHostImports() { diff --git a/packages/accounts/test/.eslintrc.yml b/packages/accounts/test/.eslintrc.yml deleted file mode 100644 index 0fae1d994f..0000000000 --- a/packages/accounts/test/.eslintrc.yml +++ /dev/null @@ -1,7 +0,0 @@ -extends: '../../../.eslintrc.js.yml' -env: - jest: true -globals: - jasmine: true - window: false - fail: true diff --git a/packages/accounts/test/account.access_key.test.js b/packages/accounts/test/account.access_key.test.ts similarity index 55% rename from packages/accounts/test/account.access_key.test.js rename to packages/accounts/test/account.access_key.test.ts index a6600a0a8c..a35286e7ad 100644 --- a/packages/accounts/test/account.access_key.test.js +++ b/packages/accounts/test/account.access_key.test.ts @@ -1,22 +1,28 @@ -const { KeyPair } = require('@near-js/crypto'); +import { beforeAll, beforeEach, expect, jest, test } from '@jest/globals'; +import { KeyPair } from '@near-js/crypto'; -const testUtils = require('./test-utils'); +import { createAccount, deployContract, generateUniqueString, networkId, setUpTestConnection } from './test-utils'; let nearjs; let workingAccount; let contractId; let contract; -jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000; +jest.setTimeout(50000); beforeAll(async () => { - nearjs = await testUtils.setUpTestConnection(); + nearjs = await setUpTestConnection(); }); beforeEach(async () => { - contractId = testUtils.generateUniqueString('test'); - workingAccount = await testUtils.createAccount(nearjs); - contract = await testUtils.deployContract(nearjs.accountCreator.masterAccount, contractId); + try { + + contractId = generateUniqueString('test'); + workingAccount = await createAccount(nearjs); + contract = await deployContract(nearjs.accountCreator.masterAccount, contractId); + } catch (e) { + console.error(e); + } }); test('make function call using access key', async() => { @@ -24,52 +30,57 @@ test('make function call using access key', async() => { await workingAccount.addKey(keyPair.getPublicKey(), contractId, '', '2000000000000000000000000'); // Override in the key store the workingAccount key to the given access key. - await nearjs.connection.signer.keyStore.setKey(testUtils.networkId, workingAccount.accountId, keyPair); - const setCallValue = testUtils.generateUniqueString('setCallPrefix'); + await nearjs.connection.signer.keyStore.setKey(networkId, workingAccount.accountId, keyPair); + const setCallValue = generateUniqueString('setCallPrefix'); await contract.setValue({ args: { value: setCallValue } }); expect(await contract.getValue()).toEqual(setCallValue); }); test('remove access key no longer works', async() => { const keyPair = KeyPair.fromRandom('ed25519'); - let publicKey = keyPair.getPublicKey(); + const publicKey = keyPair.getPublicKey(); await nearjs.accountCreator.masterAccount.addKey(publicKey, contractId, '', 400000); await nearjs.accountCreator.masterAccount.deleteKey(publicKey); // Override in the key store the workingAccount key to the given access key. - await nearjs.connection.signer.keyStore.setKey(testUtils.networkId, nearjs.accountCreator.masterAccount.accountId, keyPair); + await nearjs.connection.signer.keyStore.setKey(networkId, nearjs.accountCreator.masterAccount.accountId, keyPair); + let failed = true; try { await contract.setValue({ args: { value: 'test' } }); - fail('should throw an error'); + failed = false; } catch (e) { - expect(e.message).toEqual(`Can not sign transactions for account ${nearjs.accountCreator.masterAccount.accountId} on network ${testUtils.networkId}, no matching key pair exists for this account`); + expect(e.message).toEqual(`Can not sign transactions for account ${nearjs.accountCreator.masterAccount.accountId} on network ${networkId}, no matching key pair exists for this account`); expect(e.type).toEqual('KeyNotFound'); } - nearjs = await testUtils.setUpTestConnection(); + + if (!failed) { + throw new Error('should throw an error'); + } + + nearjs = await setUpTestConnection(); }); test('view account details after adding access keys', async() => { const keyPair = KeyPair.fromRandom('ed25519'); await nearjs.accountCreator.masterAccount.addKey(keyPair.getPublicKey(), contractId, '', 1000000000); - const contract2 = await testUtils.deployContract(nearjs.accountCreator.masterAccount, testUtils.generateUniqueString('test_contract2')); + const contract2 = await deployContract(nearjs.accountCreator.masterAccount, generateUniqueString('test_contract2')); const keyPair2 = KeyPair.fromRandom('ed25519'); await nearjs.accountCreator.masterAccount.addKey(keyPair2.getPublicKey(), contract2.contractId, '', 2000000000); const details = await nearjs.accountCreator.masterAccount.getAccountDetails(); - const expectedResult = { - authorizedApps: [{ - contractId: contractId, - amount: '1000000000', - publicKey: keyPair.getPublicKey().toString(), - }, - { - contractId: contract2.contractId, - amount: '2000000000', - publicKey: keyPair2.getPublicKey().toString(), - }], - transactions: [] - }; - expect(details.authorizedApps).toEqual(jasmine.arrayContaining(expectedResult.authorizedApps)); + const authorizedApps = [{ + contractId, + amount: '1000000000', + publicKey: keyPair.getPublicKey().toString(), + }, + { + contractId: contract2.contractId, + amount: '2000000000', + publicKey: keyPair2.getPublicKey().toString(), + }]; + + // @ts-expect-error test input + expect(JSON.stringify(details.authorizedApps.toSorted((a, b) => a.amount < b.amount))).toEqual(JSON.stringify(authorizedApps.toSorted((a, b) => a.amount < b.amount))); }); test('loading account after adding a full key', async() => { @@ -77,7 +88,7 @@ test('loading account after adding a full key', async() => { // wallet calls this with an empty string for contract id and method await workingAccount.addKey(keyPair.getPublicKey(), '', ''); - let accessKeys = await workingAccount.getAccessKeys(); + const accessKeys = await workingAccount.getAccessKeys(); expect(accessKeys.length).toBe(2); const addedKey = accessKeys.find(item => item.public_key == keyPair.getPublicKey().toString()); @@ -87,12 +98,17 @@ test('loading account after adding a full key', async() => { test('load invalid key pair', async() => { // Override in the key store with invalid key pair - await nearjs.connection.signer.keyStore.setKey(testUtils.networkId, nearjs.accountCreator.masterAccount.accountId, ''); + await nearjs.connection.signer.keyStore.setKey(networkId, nearjs.accountCreator.masterAccount.accountId, ''); + let failed = true; try { await contract.setValue({ args: { value: 'test' } }); - fail('should throw an error'); + failed = false; } catch (e) { expect(e.message).toEqual(`no matching key pair found in ${nearjs.connection.signer}`); expect(e.type).toEqual('PublicKeyNotFound'); } + + if (!failed) { + throw new Error('should throw an error'); + } }); \ No newline at end of file diff --git a/packages/accounts/test/account.test.js b/packages/accounts/test/account.test.ts similarity index 86% rename from packages/accounts/test/account.test.js rename to packages/accounts/test/account.test.ts index 68c229605b..d8ffd908d1 100644 --- a/packages/accounts/test/account.test.js +++ b/packages/accounts/test/account.test.ts @@ -1,22 +1,21 @@ -const { getTransactionLastResult, Logger } = require('@near-js/utils'); -const { actionCreators } = require('@near-js/transactions'); -const { TypedError } = require('@near-js/types'); -const fs = require('fs'); +import { afterAll, beforeAll, beforeEach, describe, expect, jest, test } from '@jest/globals'; +import { KeyType } from '@near-js/crypto'; +import { getTransactionLastResult, Logger } from '@near-js/utils'; +import { actionCreators } from '@near-js/transactions'; +import { BlockResult, TypedError } from '@near-js/types'; +import * as fs from 'fs'; -const { Account, Contract } = require('../lib'); -const { KeyType } = require( '@near-js/crypto' ); -const testUtils = require('./test-utils'); +import { Account, Contract } from '../src'; +import { createAccount, generateUniqueString, HELLO_WASM_PATH, HELLO_WASM_BALANCE, networkId, setUpTestConnection } from './test-utils'; let nearjs; let workingAccount; -const { HELLO_WASM_PATH, HELLO_WASM_BALANCE } = testUtils; - -jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000; +jest.setTimeout(50000); beforeAll(async () => { - nearjs = await testUtils.setUpTestConnection(); - workingAccount = await testUtils.createAccount(nearjs); + nearjs = await setUpTestConnection(); + workingAccount = await createAccount(nearjs); }); afterAll(async () => { @@ -24,15 +23,15 @@ afterAll(async () => { }); test('view pre-defined account works and returns correct name', async () => { - let status = await workingAccount.state(); + const status = await workingAccount.state(); expect(status.code_hash).toEqual('11111111111111111111111111111111'); }); test('create account and then view account returns the created account', async () => { - const newAccountName = testUtils.generateUniqueString('test'); + const newAccountName = generateUniqueString('test'); const newAccountPublicKey = '9AhWenZ3JddamBoyMqnTbp7yVbRuvqAv3zwfrWgfVRJE'; const { amount } = await workingAccount.state(); - const newAmount = BigInt(amount) / BigInt(10); + const newAmount = BigInt(amount) / 10n; await nearjs.accountCreator.masterAccount.createAccount(newAccountName, newAccountPublicKey, newAmount); const newAccount = new Account(nearjs.connection, newAccountName); const state = await newAccount.state(); @@ -40,10 +39,10 @@ test('create account and then view account returns the created account', async ( }); test('create account with a secp256k1 key and then view account returns the created account', async () => { - const newAccountName = testUtils.generateUniqueString('test'); + const newAccountName = generateUniqueString('test'); const newAccountPublicKey = 'secp256k1:45KcWwYt6MYRnnWFSxyQVkuu9suAzxoSkUMEnFNBi9kDayTo5YPUaqMWUrf7YHUDNMMj3w75vKuvfAMgfiFXBy28'; const { amount } = await workingAccount.state(); - const newAmount = BigInt(amount) / BigInt(10); + const newAmount = BigInt(amount) / 10n; await nearjs.accountCreator.masterAccount.createAccount(newAccountName, newAccountPublicKey, newAmount); const newAccount = new Account(nearjs.connection, newAccountName); const state = await newAccount.state(); @@ -51,46 +50,48 @@ test('create account with a secp256k1 key and then view account returns the crea }); test('Secp256k1 send money', async() => { - const sender = await testUtils.createAccount(nearjs, KeyType.SECP256K1); - const receiver = await testUtils.createAccount(nearjs, KeyType.SECP256K1); + const sender = await createAccount(nearjs, KeyType.SECP256K1); + const receiver = await createAccount(nearjs, KeyType.SECP256K1); const { amount: receiverAmount } = await receiver.state(); - await sender.sendMoney(receiver.accountId, BigInt(10000)); + await sender.sendMoney(receiver.accountId, 10000n); const state = await receiver.state(); - expect(state.amount).toEqual((BigInt(receiverAmount) + BigInt(10000)).toString()); + expect(state.amount).toEqual((BigInt(receiverAmount) + 10000n).toString()); }); test('send money', async() => { - const sender = await testUtils.createAccount(nearjs); - const receiver = await testUtils.createAccount(nearjs); + const sender = await createAccount(nearjs); + const receiver = await createAccount(nearjs); const { amount: receiverAmount } = await receiver.state(); - await sender.sendMoney(receiver.accountId, BigInt(10000)); + await sender.sendMoney(receiver.accountId, 10000n); const state = await receiver.state(); - expect(state.amount).toEqual((BigInt(receiverAmount) + BigInt(10000)).toString()); + expect(state.amount).toEqual((BigInt(receiverAmount) + 10000n).toString()); }); test('send money through signAndSendTransaction', async() => { - const sender = await testUtils.createAccount(nearjs); - const receiver = await testUtils.createAccount(nearjs); + const sender = await createAccount(nearjs); + const receiver = await createAccount(nearjs); const { amount: receiverAmount } = await receiver.state(); await sender.signAndSendTransaction({ receiverId: receiver.accountId, - actions: [actionCreators.transfer(BigInt(10000))], + actions: [actionCreators.transfer(10000n)], }); const state = await receiver.state(); - expect(state.amount).toEqual((BigInt(receiverAmount) + BigInt(10000)).toString()); + expect(state.amount).toEqual((BigInt(receiverAmount) + 10000n).toString()); }); test('delete account', async() => { - const sender = await testUtils.createAccount(nearjs); - const receiver = await testUtils.createAccount(nearjs); + const sender = await createAccount(nearjs); + const receiver = await createAccount(nearjs); await sender.deleteAccount(receiver.accountId); + // @ts-expect-error test input const reloaded = new Account(sender.connection, sender); await expect(reloaded.state()).rejects.toThrow(); }); test('multiple parallel transactions', async () => { const PARALLEL_NUMBER = 5; - await Promise.all([...Array(PARALLEL_NUMBER).keys()].map(async (_, i) => { + // @ts-expect-error test input + await Promise.all(new Array(PARALLEL_NUMBER).fill().map(async (_, i) => { const account = new Account(workingAccount.connection, workingAccount.accountId); // NOTE: Need to have different transactions outside of nonce, or they all succeed by being identical // TODO: Check if randomization of exponential back off helps to do more transactions without exceeding retries @@ -99,10 +100,12 @@ test('multiple parallel transactions', async () => { }); test('findAccessKey returns the same access key when fetched simultaneously', async() => { - const account = await testUtils.createAccount(nearjs); + const account = await createAccount(nearjs); const [key1, key2] = await Promise.all([ + // @ts-expect-error test input account.findAccessKey(), + // @ts-expect-error test input account.findAccessKey() ]); @@ -137,13 +140,14 @@ describe('errors', () => { describe('with deploy contract', () => { let logs; - let contractId = testUtils.generateUniqueString('test_contract'); + const contractId = generateUniqueString('test_contract'); let contract; beforeAll(async () => { - const newPublicKey = await nearjs.connection.signer.createKey(contractId, testUtils.networkId); - const data = [...fs.readFileSync(HELLO_WASM_PATH)]; + const newPublicKey = await nearjs.connection.signer.createKey(contractId, networkId); + const data = fs.readFileSync(HELLO_WASM_PATH); await nearjs.accountCreator.masterAccount.createAndDeployContract(contractId, newPublicKey, data, HELLO_WASM_BALANCE); + // @ts-expect-error test input contract = new Contract(nearjs.accountCreator.masterAccount, contractId, { viewMethods: ['hello', 'getValue', 'returnHiWithLogs'], changeMethods: ['setValue', 'generateLogs', 'triggerAssert', 'testSetRemove', 'crossContract'] @@ -189,7 +193,7 @@ describe('with deploy contract', () => { }); expect(result).toEqual('hello trex'); - const setCallValue = testUtils.generateUniqueString('setCallPrefix'); + const setCallValue = generateUniqueString('setCallPrefix'); const result2 = await workingAccount.functionCall({ contractId, methodName: 'setValue', @@ -203,7 +207,7 @@ describe('with deploy contract', () => { }); test('view contract state', async() => { - const setCallValue = testUtils.generateUniqueString('setCallPrefix'); + const setCallValue = generateUniqueString('setCallPrefix'); await workingAccount.functionCall({ contractId, methodName: 'setValue', @@ -229,14 +233,14 @@ describe('with deploy contract', () => { const result = await contract.hello({ name: 'trex' }); expect(result).toEqual('hello trex'); - const setCallValue = testUtils.generateUniqueString('setCallPrefix'); + const setCallValue = generateUniqueString('setCallPrefix'); const result2 = await contract.setValue({ args: { value: setCallValue } }); expect(result2).toEqual(setCallValue); expect(await contract.getValue()).toEqual(setCallValue); }); test('view function calls by block Id and finality', async() => { - const setCallValue1 = testUtils.generateUniqueString('setCallPrefix'); + const setCallValue1 = generateUniqueString('setCallPrefix'); const result1 = await contract.setValue({ args: { value: setCallValue1 } }); expect(result1).toEqual(setCallValue1); expect(await contract.getValue()).toEqual(setCallValue1); @@ -268,7 +272,7 @@ describe('with deploy contract', () => { blockQuery: { blockId: blockIndex1 }, })).toEqual(setCallValue1); - const setCallValue2 = testUtils.generateUniqueString('setCallPrefix'); + const setCallValue2 = generateUniqueString('setCallPrefix'); const result2 = await contract.setValue({ args: { value: setCallValue2 } }); expect(result2).toEqual(setCallValue2); expect(await contract.getValue()).toEqual(setCallValue2); @@ -315,7 +319,7 @@ describe('with deploy contract', () => { }); test('make function calls via contract with gas', async() => { - const setCallValue = testUtils.generateUniqueString('setCallPrefix'); + const setCallValue = generateUniqueString('setCallPrefix'); const result2 = await contract.setValue({ args: { value: setCallValue }, gas: 1000000 * 1000000 @@ -332,7 +336,7 @@ describe('with deploy contract', () => { }); test('can get logs from view call', async () => { - let result = await contract.returnHiWithLogs(); + const result = await contract.returnHiWithLogs(); expect(result).toEqual('Hi'); expect(logs).toEqual([`Log [${contractId}]: loooog1`, `Log [${contractId}]: loooog2`]); }); @@ -350,14 +354,16 @@ describe('with deploy contract', () => { }); test('can have view methods only', async () => { - const contract = new Contract(workingAccount, contractId, { + // @ts-expect-error test input + const contract: any = new Contract(workingAccount, contractId, { viewMethods: ['hello'], }); expect(await contract.hello({ name: 'world' })).toEqual('hello world'); }); test('can have change methods only', async () => { - const contract = new Contract(workingAccount, contractId, { + // @ts-expect-error test input + const contract: any = new Contract(workingAccount, contractId, { changeMethods: ['hello'], }); expect(await contract.hello({ @@ -436,7 +442,7 @@ describe('with deploy contract', () => { } }; account.connection.provider.block = async () => { - return Promise.resolve({ header: { hash: 'dontcare' } }); + return Promise.resolve({ header: { hash: 'dontcare' } } as BlockResult); }; const result = await account.getActiveDelegatedStakeBalance(); expect(result).toEqual({ @@ -486,7 +492,7 @@ describe('with deploy contract', () => { } }; account.connection.provider.block = async () => { - return Promise.resolve({ header: { hash: 'dontcare' } }); + return Promise.resolve({ header: { hash: 'dontcare' } } as BlockResult); }; try { diff --git a/packages/accounts/test/account_multisig.test.js b/packages/accounts/test/account_multisig.test.ts similarity index 80% rename from packages/accounts/test/account_multisig.test.js rename to packages/accounts/test/account_multisig.test.ts index 63898d2396..996a32e5db 100644 --- a/packages/accounts/test/account_multisig.test.js +++ b/packages/accounts/test/account_multisig.test.ts @@ -1,25 +1,26 @@ -const { parseNearAmount } = require('@near-js/utils'); -const { KeyPair } = require('@near-js/crypto'); -const { InMemorySigner } = require('@near-js/signers'); -const { actionCreators } = require('@near-js/transactions'); -const fs = require('fs'); -const semver = require('semver'); +import { beforeAll, describe, expect, jest, test } from '@jest/globals'; +import { parseNearAmount } from '@near-js/utils'; +import { KeyPair } from '@near-js/crypto'; +import { InMemorySigner } from '@near-js/signers'; +import { actionCreators } from '@near-js/transactions'; +import * as fs from 'fs'; +import semver from 'semver'; -const { Account2FA, MULTISIG_DEPOSIT, MULTISIG_GAS, MultisigStateStatus } = require('../lib'); -const testUtils = require('./test-utils'); +import { Account2FA, MULTISIG_DEPOSIT, MULTISIG_GAS, MultisigStateStatus } from '../src'; +import { createAccount, setUpTestConnection } from './test-utils'; const { functionCall, transfer } = actionCreators; let nearjs; let startFromVersion; -jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000; +jest.setTimeout(50000); const getAccount2FA = async (account, keyMapping = ({ public_key: publicKey }) => ({ publicKey, kind: 'phone' })) => { // modifiers to functions replaces contract helper (CH) const { accountId } = account; const keys = await account.getAccessKeys(); - const account2fa = new Account2FA(nearjs.connection, accountId, { + const account2fa: any = new Account2FA(nearjs.connection, accountId, { // skip this (not using CH) getCode: () => {}, sendCode: () => {}, @@ -46,13 +47,13 @@ const getAccount2FA = async (account, keyMapping = ({ public_key: publicKey }) = data: keys.map(keyMapping) }); account2fa.checkMultisigCodeAndStateStatus = () => ({ codeStatus: 1, stateStatus: MultisigStateStatus.STATE_NOT_INITIALIZED }); - await account2fa.deployMultisig([...fs.readFileSync('./test/wasm/multisig.wasm')]); + await account2fa.deployMultisig(fs.readFileSync('./test/wasm/multisig.wasm')); return account2fa; }; beforeAll(async () => { - nearjs = await testUtils.setUpTestConnection(); - let nodeStatus = await nearjs.connection.provider.status(); + nearjs = await setUpTestConnection(); + const nodeStatus = await nearjs.connection.provider.status(); startFromVersion = (version) => semver.gte(nodeStatus.version.version, version); console.log(startFromVersion); }); @@ -60,13 +61,14 @@ beforeAll(async () => { describe('deployMultisig key rotations', () => { test('full access key if recovery method is "ledger" or "phrase", limited access key if "phone"', async () => { - const account = await testUtils.createAccount(nearjs); + const account = await createAccount(nearjs); await account.addKey(KeyPair.fromRandom('ed25519').getPublicKey()); await account.addKey(KeyPair.fromRandom('ed25519').getPublicKey()); const keys = await account.getAccessKeys(); const kinds = ['ledger', 'phrase', 'phone']; const account2fa = await getAccount2FA( account, + // @ts-expect-error test input ({ public_key: publicKey }, i) => ({ publicKey, kind: kinds[i] }) ); const currentKeys = await account2fa.getAccessKeys(); @@ -80,7 +82,7 @@ describe('deployMultisig key rotations', () => { describe('account2fa transactions', () => { test('add app key before deployMultisig', async() => { - let account = await testUtils.createAccount(nearjs); + let account = await createAccount(nearjs); const appPublicKey = KeyPair.fromRandom('ed25519').getPublicKey(); const appAccountId = 'foobar'; const appMethodNames = ['some_app_stuff','some_more_app_stuff']; @@ -88,13 +90,15 @@ describe('account2fa transactions', () => { account = await getAccount2FA(account); const keys = await account.getAccessKeys(); expect(keys.find(({ public_key }) => appPublicKey.toString() === public_key) + // @ts-expect-error test input .access_key.permission.FunctionCall.method_names).toEqual(appMethodNames); expect(keys.find(({ public_key }) => appPublicKey.toString() === public_key) + // @ts-expect-error test input .access_key.permission.FunctionCall.receiver_id).toEqual(appAccountId); }); test('add app key', async() => { - let account = await testUtils.createAccount(nearjs); + let account = await createAccount(nearjs); account = await getAccount2FA(account); const appPublicKey = KeyPair.fromRandom('ed25519').getPublicKey(); const appAccountId = 'foobar'; @@ -102,14 +106,16 @@ describe('account2fa transactions', () => { await account.addKey(appPublicKey.toString(), appAccountId, appMethodNames, BigInt(parseNearAmount('0.25'))); const keys = await account.getAccessKeys(); expect(keys.find(({ public_key }) => appPublicKey.toString() === public_key) + // @ts-expect-error test input .access_key.permission.FunctionCall.method_names).toEqual(appMethodNames); expect(keys.find(({ public_key }) => appPublicKey.toString() === public_key) + // @ts-expect-error test input .access_key.permission.FunctionCall.receiver_id).toEqual(appAccountId); }); test('send money', async() => { - let sender = await testUtils.createAccount(nearjs); - let receiver = await testUtils.createAccount(nearjs); + let sender = await createAccount(nearjs); + let receiver = await createAccount(nearjs); sender = await getAccount2FA(sender); receiver = await getAccount2FA(receiver); const { amount: receiverAmount } = await receiver.state(); @@ -119,8 +125,8 @@ describe('account2fa transactions', () => { }); test('send money through signAndSendTransaction', async() => { - let sender = await testUtils.createAccount(nearjs); - let receiver = await testUtils.createAccount(nearjs); + let sender = await createAccount(nearjs); + let receiver = await createAccount(nearjs); sender = await getAccount2FA(sender); receiver = await getAccount2FA(receiver); const { amount: receiverAmount } = await receiver.state(); diff --git a/packages/accounts/test/config.js b/packages/accounts/test/config.js index 23f994a1dd..f1ecd95bdc 100644 --- a/packages/accounts/test/config.js +++ b/packages/accounts/test/config.js @@ -1,5 +1,6 @@ -const { Worker } = require('near-workspaces'); -const fs = require('fs'); +import { Worker } from 'near-workspaces'; +import fs from 'fs'; + let worker; module.exports = async function getConfig(env) { switch (env) { diff --git a/packages/accounts/test/contract.test.js b/packages/accounts/test/contract.test.ts similarity index 88% rename from packages/accounts/test/contract.test.js rename to packages/accounts/test/contract.test.ts index 9f8da8426d..bcee4ad006 100644 --- a/packages/accounts/test/contract.test.js +++ b/packages/accounts/test/contract.test.ts @@ -1,7 +1,8 @@ -const { PositionalArgsError } = require('@near-js/types'); +import { afterEach, beforeAll, describe, expect, jest, test } from '@jest/globals'; +import { PositionalArgsError } from '@near-js/types'; -const { Contract, Account } = require('../lib'); -const testUtils = require('./test-utils'); +import { Contract, Account } from '../src'; +import { deployContractGuestBook, generateUniqueString, setUpTestConnection } from './test-utils'; const account = Object.setPrototypeOf({ getConnection() { @@ -15,7 +16,8 @@ const account = Object.setPrototypeOf({ } }, Account.prototype); -const contract = new Contract(account, 'contractId', { +// @ts-expect-error test input +const contract: any = new Contract(account, 'contractId', { viewMethods: ['viewMethod'], changeMethods: ['changeMethod'], }); @@ -114,8 +116,8 @@ describe('local view execution', () => { jest.setTimeout(60000); beforeAll(async () => { - nearjs = await testUtils.setUpTestConnection(); - contract = await testUtils.deployContractGuestBook(nearjs.accountCreator.masterAccount, testUtils.generateUniqueString('guestbook')); + nearjs = await setUpTestConnection(); + contract = await deployContractGuestBook(nearjs.accountCreator.masterAccount, generateUniqueString('guestbook')); await contract.add_message({ text: 'first message' }); await contract.add_message({ text: 'second message' }); @@ -158,7 +160,8 @@ describe('local view execution', () => { }); test('local execution fails and fallbacks to normal RPC call', async () => { - const _contract = new Contract(contract.account, contract.contractId, { viewMethods: ['get_msg'], useLocalViewExecution: true }); + // @ts-expect-error test input + const _contract: any = new Contract(contract.account, contract.contractId, { viewMethods: ['get_msg'], useLocalViewExecution: true }); _contract.account.viewFunction = jest.fn(_contract.account.viewFunction); try { @@ -181,10 +184,11 @@ describe('contract without account', () => { jest.setTimeout(60000); beforeAll(async () => { - nearjs = await testUtils.setUpTestConnection(); - const contractId = testUtils.generateUniqueString('guestbook'); - await testUtils.deployContractGuestBook(nearjs.accountCreator.masterAccount, contractId); + nearjs = await setUpTestConnection(); + const contractId = generateUniqueString('guestbook'); + await deployContractGuestBook(nearjs.accountCreator.masterAccount, contractId); + // @ts-expect-error test input contract = new Contract(nearjs.connection, contractId, { viewMethods: ['total_messages', 'get_messages'], changeMethods: ['add_message'], diff --git a/packages/accounts/test/contract_abi.test.js b/packages/accounts/test/contract_abi.test.ts similarity index 92% rename from packages/accounts/test/contract_abi.test.js rename to packages/accounts/test/contract_abi.test.ts index 278863dc54..e172795375 100644 --- a/packages/accounts/test/contract_abi.test.js +++ b/packages/accounts/test/contract_abi.test.ts @@ -1,6 +1,7 @@ -const { Account, Contract, ArgumentSchemaError, UnknownArgumentError, UnsupportedSerializationError } = require('../lib'); +import { describe, expect, test } from '@jest/globals'; +import { Account, Contract, ArgumentSchemaError, UnknownArgumentError, UnsupportedSerializationError } from '../src'; -let rawAbi = `{ +const rawAbi = `{ "schema_version": "0.3.0", "body": { "functions": [ @@ -106,9 +107,8 @@ const account = Object.setPrototypeOf({ const abi = JSON.parse(rawAbi); -const contract = new Contract(account, 'contractId', { - abi -}); +// @ts-expect-error test input +const contract: any = new Contract(account, 'contractId', { abi }); describe('add', () => { test('can be called successfully', async () => { @@ -155,7 +155,7 @@ describe('empty_call', () => { describe('Contract constructor', () => { test('throws UnsupportedSerializationError when ABI has borsh serialization', async () => { - let rawAbi = `{ + const rawAbi = `{ "schema_version": "0.3.0", "body": { "functions": [ @@ -182,7 +182,8 @@ describe('Contract constructor', () => { } } }`; - const contract = new Contract(account, 'contractId', { abi: JSON.parse(rawAbi) }); + // @ts-expect-error test input + const contract: any = new Contract(account, 'contractId', { abi: JSON.parse(rawAbi) }); await expect(contract.add({ a: 1 })).rejects.toBeInstanceOf(UnsupportedSerializationError); }); }); diff --git a/packages/accounts/test/lve_runtime.test.js b/packages/accounts/test/lve_runtime.test.ts similarity index 93% rename from packages/accounts/test/lve_runtime.test.js rename to packages/accounts/test/lve_runtime.test.ts index c36aee28fd..fd8572dc97 100644 --- a/packages/accounts/test/lve_runtime.test.js +++ b/packages/accounts/test/lve_runtime.test.ts @@ -1,9 +1,10 @@ -const { +import { beforeAll, describe, expect, test } from '@jest/globals'; +import { GUESTBOOK_CONTRACT_ID, GUESTBOOK_CONTRACT_STATE, loadGuestBookContractCode, -} = require('./test-utils'); -const { Runtime } = require('../lib/local-view-execution/runtime'); +} from './test-utils'; +import { Runtime } from '../src/local-view-execution/runtime'; let contractCode; const blockHeight = 1; @@ -13,15 +14,13 @@ const contractState = GUESTBOOK_CONTRACT_STATE; const parse = (result) => JSON.parse(Buffer.from(result).toString()); const newRuntime = (methodArgs = {}) => { - methodArgs = JSON.stringify(methodArgs); - return new Runtime({ contractId: GUESTBOOK_CONTRACT_ID, contractCode, contractState, blockHeight, blockTimestamp, - methodArgs, + methodArgs: JSON.stringify(methodArgs), }); }; diff --git a/packages/accounts/test/lve_storage.test.js b/packages/accounts/test/lve_storage.test.ts similarity index 89% rename from packages/accounts/test/lve_storage.test.js rename to packages/accounts/test/lve_storage.test.ts index bd455bc41d..077ea78356 100644 --- a/packages/accounts/test/lve_storage.test.js +++ b/packages/accounts/test/lve_storage.test.ts @@ -1,9 +1,10 @@ -const crypto = require('crypto'); -const { Storage } = require('../lib/local-view-execution/storage'); -const { +import { beforeAll, describe, expect, test } from '@jest/globals'; +import { sha256 } from '@noble/hashes/sha256'; +import { Storage } from '../src/local-view-execution/storage'; +import { GUESTBOOK_CONTRACT_STATE, loadGuestBookContractCode, -} = require('./test-utils'); +} from './test-utils'; let contractCode; const contractState = GUESTBOOK_CONTRACT_STATE; @@ -12,8 +13,7 @@ const blockHash = 'G2DF9Pe4KegQK7PkcxDu5cxakvcy99zgrFZEadRCxrwF'; const blockHeight = 1; const blockTimestamp = Math.floor(Date.now() * 1000000); -const createBlockHash = (data) => - crypto.createHash('sha256').update(JSON.stringify(data)).digest('base64'); +const createBlockHash = (data) => Buffer.from(sha256(JSON.stringify(data))).toString('base64'); describe('Local View Execution - Storage', () => { beforeAll(async () => { @@ -23,6 +23,7 @@ describe('Local View Execution - Storage', () => { test('load empty cached data', async () => { const storage = new Storage(); + // @ts-expect-error test input const data = storage.load({}); expect(data).toBe(undefined); diff --git a/packages/accounts/test/promise.test.js b/packages/accounts/test/promise.test.ts similarity index 92% rename from packages/accounts/test/promise.test.js rename to packages/accounts/test/promise.test.ts index 9013256ae1..8b90e305d0 100644 --- a/packages/accounts/test/promise.test.js +++ b/packages/accounts/test/promise.test.ts @@ -1,34 +1,35 @@ -const testUtils = require('./test-utils'); +import { afterEach, beforeAll, beforeEach, describe, expect, jest, test } from '@jest/globals'; +import { deployContract, generateUniqueString, setUpTestConnection } from './test-utils'; let nearjs; -jasmine.DEFAULT_TIMEOUT_INTERVAL = 120000; +const CONTRACT_CALL_GAS = 300000000000000n; -const CONTRACT_CALL_GAS = BigInt(300000000000000); +jest.setTimeout(120000); beforeAll(async () => { - nearjs = await testUtils.setUpTestConnection(); + nearjs = await setUpTestConnection(); }); describe('with promises', () => { let contract, contract1, contract2; let oldLog; let logs; - let contractName = testUtils.generateUniqueString('cnt'); - let contractName1 = testUtils.generateUniqueString('cnt'); - let contractName2 = testUtils.generateUniqueString('cnt'); + const contractName = generateUniqueString('cnt'); + const contractName1 = generateUniqueString('cnt'); + const contractName2 = generateUniqueString('cnt'); beforeAll(async () => { - contract = await testUtils.deployContract(nearjs.accountCreator.masterAccount, contractName); - contract1 = await testUtils.deployContract(nearjs.accountCreator.masterAccount, contractName1); - contract2 = await testUtils.deployContract(nearjs.accountCreator.masterAccount, contractName2); + contract = await deployContract(nearjs.accountCreator.masterAccount, contractName); + contract1 = await deployContract(nearjs.accountCreator.masterAccount, contractName1); + contract2 = await deployContract(nearjs.accountCreator.masterAccount, contractName2); }); beforeEach(async () => { oldLog = console.log; logs = []; - console.log = function() { - logs.push(Array.from(arguments).join(' ')); + console.log = function(...args: any[]) { + logs.push(Array.from(args).join(' ')); }; }); diff --git a/packages/accounts/test/providers.test.js b/packages/accounts/test/providers.test.ts similarity index 83% rename from packages/accounts/test/providers.test.js rename to packages/accounts/test/providers.test.ts index 8d335c6769..82ce5395e5 100644 --- a/packages/accounts/test/providers.test.js +++ b/packages/accounts/test/providers.test.ts @@ -1,24 +1,26 @@ -const base58 = require('bs58'); +import { beforeAll, describe, expect, jest, test } from '@jest/globals'; +import { KeyPair } from '@near-js/crypto'; +import { ErrorMessages } from '@near-js/utils'; +import base58 from 'bs58'; -const testUtils = require('./test-utils'); -const { KeyPair } = require('@near-js/crypto'); -let ERRORS_JSON = require('@near-js/utils/lib/errors/error_messages.json'); +import { createAccount, deployContract, generateUniqueString, setUpTestConnection, sleep, waitFor } from './test-utils'; jest.setTimeout(60000); let provider; let near; + beforeAll(async () => { - near = await testUtils.setUpTestConnection(); + near = await setUpTestConnection(); provider = near.connection.provider; }); describe('providers', () => { test('txStatus with string hash and buffer hash', async () => { - const sender = await testUtils.createAccount(near); - const receiver = await testUtils.createAccount(near); - const outcome = await sender.sendMoney(receiver.accountId, BigInt('1')); + const sender = await createAccount(near); + const receiver = await createAccount(near); + const outcome = await sender.sendMoney(receiver.accountId, 1n); const responseWithString = await provider.txStatus(outcome.transaction.hash, sender.accountId); const responseWithUint8Array = await provider.txStatus(base58.decode(outcome.transaction.hash), sender.accountId); expect(responseWithString).toMatchObject(outcome); @@ -26,9 +28,9 @@ describe('providers', () => { }); test('txStatusReciept with string hash and buffer hash', async () => { - const sender = await testUtils.createAccount(near); - const receiver = await testUtils.createAccount(near); - const outcome = await sender.sendMoney(receiver.accountId, BigInt('1')); + const sender = await createAccount(near); + const receiver = await createAccount(near); + const outcome = await sender.sendMoney(receiver.accountId, 1n); const reciepts = await provider.sendJsonRpc('EXPERIMENTAL_tx_status', [outcome.transaction.hash, sender.accountId]); const responseWithString = await provider.txStatusReceipts(outcome.transaction.hash, sender.accountId); @@ -45,8 +47,8 @@ describe('providers', () => { }); test('json rpc query account', async () => { - const account = await testUtils.createAccount(near); - let response = await provider.query({ + const account = await createAccount(near); + const response = await provider.query({ request_type: 'view_account', finality: 'optimistic', account_id: account.accountId }); @@ -54,11 +56,11 @@ describe('providers', () => { }); test('json rpc query view_state', async () => { - const contract = await testUtils.deployContract(near.accountCreator.masterAccount, testUtils.generateUniqueString('test')); - + const contract = await deployContract(near.accountCreator.masterAccount, generateUniqueString('test')); + // @ts-expect-error test input await contract.setValue({ args: { value: 'hello' } }); - return testUtils.waitFor(async () => { + return waitFor(async () => { const response = await provider.query({ request_type: 'view_state', finality: 'final', @@ -76,9 +78,9 @@ describe('providers', () => { }); test('json rpc query view_code', async () => { - const contract = await testUtils.deployContract(near.accountCreator.masterAccount, testUtils.generateUniqueString('test')); + const contract = await deployContract(near.accountCreator.masterAccount, generateUniqueString('test')); - return testUtils.waitFor(async () => { + return waitFor(async () => { const response = await provider.query({ request_type: 'view_code', finality: 'final', @@ -95,11 +97,12 @@ describe('providers', () => { }); test('json rpc query call_function', async () => { - const contract = await testUtils.deployContract(near.accountCreator.masterAccount, testUtils.generateUniqueString('test')); - + const contract = await deployContract(near.accountCreator.masterAccount, generateUniqueString('test')); + + // @ts-expect-error test input await contract.setValue({ args: { value: 'hello' } }); - return testUtils.waitFor(async () => { + return waitFor(async () => { const response = await provider.query({ request_type: 'call_function', finality: 'final', @@ -125,14 +128,14 @@ describe('providers', () => { }); test('json rpc light client proof', async () => { - const workingAccount = await testUtils.createAccount(near); - const executionOutcome = await workingAccount.sendMoney(workingAccount.accountId, BigInt(10000)); + const workingAccount = await createAccount(near); + const executionOutcome = await workingAccount.sendMoney(workingAccount.accountId, 10000n); const provider = near.connection.provider; async function waitForStatusMatching(isMatching) { const MAX_ATTEMPTS = 10; for (let i = 0; i < MAX_ATTEMPTS; i++) { - await testUtils.sleep(500); + await sleep(500); const nodeStatus = await provider.status(); if (isMatching(nodeStatus)) { return nodeStatus; @@ -142,6 +145,7 @@ describe('providers', () => { } const comittedStatus = await waitForStatusMatching(status => + // @ts-expect-error test input status.sync_info.latest_block_hash !== executionOutcome.transaction_outcome.block_hash); const BLOCKS_UNTIL_FINAL = 2; const finalizedStatus = await waitForStatusMatching(status => @@ -177,6 +181,7 @@ describe('providers', () => { // Use old block hash as light client head should fail lightClientRequest = { type: 'transaction', + // @ts-expect-error test input light_client_head: executionOutcome.transaction_outcome.block_hash, transaction_hash: executionOutcome.transaction.hash, sender_id: workingAccount.accountId, @@ -188,11 +193,12 @@ describe('providers', () => { describe('providers errors', () => { test('JSON RPC Error - MethodNotFound', async () => { - const contract = await testUtils.deployContract( + const contract = await deployContract( near.accountCreator.masterAccount, - testUtils.generateUniqueString('test') + generateUniqueString('test') ); + // @ts-expect-error test input await contract.setValue({ args: { value: 'hello' } }); try { @@ -207,12 +213,12 @@ describe('providers errors', () => { } catch (e) { const errorType = 'MethodNotFound'; expect(e.type).toEqual(errorType); - expect(e.message).toEqual(ERRORS_JSON[errorType]); + expect(e.message).toEqual(ErrorMessages[errorType]); } }); test('JSON RPC Error - CodeDoesNotExist', async () => { - const { accountId } = await testUtils.createAccount(near); + const { accountId } = await createAccount(near); try { const response = await provider.query({ @@ -227,7 +233,7 @@ describe('providers errors', () => { const errorType = 'CodeDoesNotExist'; expect(e.type).toEqual(errorType); expect(e.message.split(' ').slice(0, 5)).toEqual( - ERRORS_JSON[errorType].split(' ').slice(0, 5) + ErrorMessages[errorType].split(' ').slice(0, 5) ); } }); @@ -247,13 +253,13 @@ describe('providers errors', () => { const errorType = 'AccountDoesNotExist'; expect(e.type).toEqual(errorType); expect(e.message.split(' ').slice(0, 5)).toEqual( - ERRORS_JSON[errorType].split(' ').slice(0, 5) + ErrorMessages[errorType].split(' ').slice(0, 5) ); } }); test('JSON RPC Error - AccessKeyDoesNotExist', async () => { - const { accountId } = await testUtils.createAccount(near); + const { accountId } = await createAccount(near); try { const response = await provider.query({ @@ -269,7 +275,7 @@ describe('providers errors', () => { const errorType = 'AccessKeyDoesNotExist'; expect(e.type).toEqual(errorType); expect(e.message.split(' ').slice(0, 5)).toEqual( - ERRORS_JSON[errorType].split(' ').slice(0, 5) + ErrorMessages[errorType].split(' ').slice(0, 5) ); } }); diff --git a/packages/accounts/test/test-utils.js b/packages/accounts/test/test-utils.js index 133f013616..98485a59e0 100644 --- a/packages/accounts/test/test-utils.js +++ b/packages/accounts/test/test-utils.js @@ -1,26 +1,30 @@ -const { KeyPair, KeyType } = require('@near-js/crypto'); -const { InMemoryKeyStore } = require('@near-js/keystores'); -const fs = require('fs').promises; -const path = require('path'); +import { KeyPair, KeyType } from '@near-js/crypto'; +import { InMemoryKeyStore } from '@near-js/keystores'; +import { ConsoleLogger, Logger } from '@near-js/utils'; +import fs from 'fs'; +import path from 'path'; -const { Account, AccountMultisig, Contract, Connection, LocalAccountCreator } = require('../lib'); +import { Account, AccountMultisig, Contract, Connection, LocalAccountCreator } from '../src'; +import Config from './config'; -const networkId = 'unittest'; +Logger.overrideLogger(new ConsoleLogger(['error', 'fatal'])) -const HELLO_WASM_PATH = process.env.HELLO_WASM_PATH || 'node_modules/near-hello/dist/main.wasm'; -const HELLO_WASM_BALANCE = BigInt('10000000000000000000000000'); -const HELLO_WASM_METHODS = { +export const networkId = 'unittest'; + +export const HELLO_WASM_PATH = process.env.HELLO_WASM_PATH || 'node_modules/near-hello/dist/main.wasm'; +export const HELLO_WASM_BALANCE = BigInt('10000000000000000000000000'); +export const HELLO_WASM_METHODS = { viewMethods: ['getValue', 'getLastResult'], changeMethods: ['setValue', 'callPromise'] }; -const MULTISIG_WASM_PATH = process.env.MULTISIG_WASM_PATH || './test/wasm/multisig.wasm'; +export const MULTISIG_WASM_PATH = process.env.MULTISIG_WASM_PATH || './test/wasm/multisig.wasm'; // Length of a random account. Set to 40 because in the protocol minimal allowed top-level account length should be at // least 32. -const RANDOM_ACCOUNT_LENGTH = 40; +export const RANDOM_ACCOUNT_LENGTH = 40; -const GUESTBOOK_CONTRACT_ID = 'guestbook-1690363526419-7138950000000000'; -const GUESTBOOK_WASM_PATH = path.resolve(__dirname, './wasm/guestbook.wasm'); -const GUESTBOOK_CONTRACT_STATE = [ +export const GUESTBOOK_CONTRACT_ID = 'guestbook-1690363526419-7138950000000000'; +export const GUESTBOOK_WASM_PATH = path.resolve(__dirname, './wasm/guestbook.wasm'); +export const GUESTBOOK_CONTRACT_STATE = [ { key: Buffer.from('U1RBVEU=', 'base64'), value: Buffer.from( @@ -44,13 +48,13 @@ const GUESTBOOK_CONTRACT_STATE = [ }, ]; -async function loadGuestBookContractCode() { - const contractCode = await fs.readFile(GUESTBOOK_WASM_PATH); +export async function loadGuestBookContractCode() { + const contractCode = await fs.readFileSync(GUESTBOOK_WASM_PATH); return contractCode.toString('base64'); } -async function setUpTestConnection() { +export async function setUpTestConnection() { const keyStore = new InMemoryKeyStore(); - const config = Object.assign(await require('./config')(process.env.NODE_ENV || 'test'), { + const config = Object.assign(await Config(process.env.NODE_ENV || 'test'), { networkId, keyStore }); @@ -74,21 +78,21 @@ async function setUpTestConnection() { } // Generate some unique string of length at least RANDOM_ACCOUNT_LENGTH with a given prefix using the alice nonce. -function generateUniqueString(prefix) { +export function generateUniqueString(prefix) { let result = `${prefix}-${Date.now()}-${Math.round(Math.random() * 1000000)}`; let add_symbols = Math.max(RANDOM_ACCOUNT_LENGTH - result.length, 1); for (let i = add_symbols; i > 0; --i) result += '0'; return result + '.test.near'; } -async function createAccount({ accountCreator, connection }, keyType = KeyType.ED25519) { +export async function createAccount({ accountCreator, connection }, keyType = KeyType.ED25519) { const newAccountName = generateUniqueString('test'); const newPublicKey = await connection.signer.createKey(newAccountName, networkId, keyType); await accountCreator.createAccount(newAccountName, newPublicKey); return new Account(connection, newAccountName); } -async function createAccountMultisig({ accountCreator, connection }, options) { +export async function createAccountMultisig({ accountCreator, connection }, options) { const newAccountName = generateUniqueString('test'); const newPublicKey = await connection.signer.createKey(newAccountName, networkId); await accountCreator.createAccount(newAccountName, newPublicKey); @@ -107,34 +111,34 @@ async function createAccountMultisig({ accountCreator, connection }, options) { case '/2fa/getAccessKey': return { publicKey }; } }; - await accountMultisig.deployMultisig(new Uint8Array([...(await fs.readFile(MULTISIG_WASM_PATH))])); + await accountMultisig.deployMultisig(fs.readFileSync(MULTISIG_WASM_PATH)); return accountMultisig; } catch (e) { console.log(e); } } -async function deployContract(workingAccount, contractId) { +export async function deployContract(workingAccount, contractId) { const newPublicKey = await workingAccount.connection.signer.createKey(contractId, networkId); - const data = [...(await fs.readFile(HELLO_WASM_PATH))]; + const data = fs.readFileSync(HELLO_WASM_PATH); await workingAccount.createAndDeployContract(contractId, newPublicKey, data, HELLO_WASM_BALANCE); return new Contract(workingAccount, contractId, HELLO_WASM_METHODS); } -async function deployContractGuestBook(workingAccount, contractId) { +export async function deployContractGuestBook(workingAccount, contractId) { const newPublicKey = await workingAccount.connection.signer.createKey(contractId, networkId); - const data = [...(await fs.readFile(GUESTBOOK_WASM_PATH))]; + const data = fs.readFileSync(GUESTBOOK_WASM_PATH); const account = await workingAccount.createAndDeployContract(contractId, newPublicKey, data, HELLO_WASM_BALANCE); return new Contract(account, contractId, { viewMethods: ['total_messages', 'get_messages'], changeMethods: ['add_message'], useLocalViewExecution: true }); } -function sleep(time) { +export function sleep(time) { return new Promise(function (resolve) { setTimeout(resolve, time); }); } -function waitFor(fn) { +export function waitFor(fn) { const _waitFor = async (count = 10) => { try { return await fn(); @@ -149,21 +153,3 @@ function waitFor(fn) { return _waitFor(); } - -module.exports = { - setUpTestConnection, - networkId, - generateUniqueString, - createAccount, - createAccountMultisig, - deployContract, - HELLO_WASM_PATH, - HELLO_WASM_BALANCE, - loadGuestBookContractCode, - deployContractGuestBook, - GUESTBOOK_CONTRACT_ID, - GUESTBOOK_CONTRACT_STATE, - GUESTBOOK_WASM_PATH, - sleep, - waitFor, -}; diff --git a/packages/accounts/tsconfig.cjs.json b/packages/accounts/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/accounts/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/accounts/tsconfig.json b/packages/accounts/tsconfig.json index 2081c160d8..a353a73d9f 100644 --- a/packages/accounts/tsconfig.json +++ b/packages/accounts/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.node.json", + "extends": "tsconfig/esm.json", "compilerOptions": { - "preserveSymlinks": false, - "outDir": "./lib", - "lib": ["es2021", "DOM"] + "outDir": "./lib/esm", + "lib": ["es2022", "dom"] }, "files": [ "src/index.ts" diff --git a/packages/biometric-ed25519/jest.config.js b/packages/biometric-ed25519/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/biometric-ed25519/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/biometric-ed25519/jest.config.ts b/packages/biometric-ed25519/jest.config.ts new file mode 100644 index 0000000000..3b66313239 --- /dev/null +++ b/packages/biometric-ed25519/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true, + }, + }], + }, +}; diff --git a/packages/biometric-ed25519/package.json b/packages/biometric-ed25519/package.json index 0ad0de4ed3..aa93298b18 100644 --- a/packages/biometric-ed25519/package.json +++ b/packages/biometric-ed25519/package.json @@ -2,13 +2,16 @@ "name": "@near-js/biometric-ed25519", "description": "JavaScript library to handle webauthn and biometric keys", "version": "1.2.5", - "main": "lib/index.js", - "types": "lib/index.d.ts", + "main": "lib/esm/index.js", + "types": "lib/esm/index.d.ts", + "type": "module", "scripts": { - "build": "tsc -p ./tsconfig.json", - "lint:ts": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc", - "lint:ts:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc --fix", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "Pagoda", @@ -22,11 +25,18 @@ "asn1-parser": "1.1.8", "borsh": "1.0.0", "buffer": "6.0.3", + "build": "workspace:*", "cbor-js": "^0.1.0", "fido2-lib": "3.4.1" }, "devDependencies": { - "@types/node": "18.11.18", - "jest": "26.0.1" + "@jest/globals": "^29.7.0", + "@types/node": "20.0.0", + "jest": "29.7.0", + "ts-jest": "29.1.5" + }, + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" } } diff --git a/packages/biometric-ed25519/test/utils.test.js b/packages/biometric-ed25519/test/utils.test.js deleted file mode 100644 index aac7c58b23..0000000000 --- a/packages/biometric-ed25519/test/utils.test.js +++ /dev/null @@ -1,111 +0,0 @@ -const { sanitizeCreateKeyResponse, sanitizeGetKeyResponse } = require("../lib/utils"); - -// Define a mock PublicKeyCredential -class PublicKeyCredentialMock { -constructor({ - rawId, - clientDataJSON, - attestationObject, - authenticatorData, - signature, - userHandle -}) { - this.rawId = rawId; - this.response = { - clientDataJSON, - ...(attestationObject ? { attestationObject } : {}), - ...(signature ? { signature } : {}), - ...(userHandle ? { userHandle } : {}), - ...(authenticatorData ? { authenticatorData } : {}), - }; - } -} - -// Define global PublicKeyCredential to make it available during tests -global.PublicKeyCredential = PublicKeyCredentialMock; - -jest.mock('../lib/utils', () => { - const originalModule = jest.requireActual('../lib/utils'); - return { - ...originalModule, - convertUint8ArrayToArrayBuffer: jest.fn().mockImplementation(input => input.buffer), - }; -}); - -describe('sanitizeCreateKeyResponse', () => { - it('should convert Uint8Array properties to ArrayBuffer for PublicKeyCredential', () => { - const mockCredential = new PublicKeyCredentialMock({ - rawId: new Uint8Array([10, 20, 30]), - clientDataJSON: new Uint8Array([40, 50, 60]), - attestationObject: new Uint8Array([70, 80, 90]), - }); - - - const result = sanitizeCreateKeyResponse(mockCredential); - expect(result.rawId.constructor.name).toBe('ArrayBuffer'); - expect(result.response.clientDataJSON.constructor.name).toBe('ArrayBuffer'); - expect(result.response.attestationObject.constructor.name).toBe('ArrayBuffer'); - }); - - it('should return the input unchanged if not PublicKeyCredential or without Uint8Arrays', () => { - const mockCredential = new PublicKeyCredentialMock({ - rawId: [10, 20, 30], - clientDataJSON: [40, 50, 60], - attestationObject: [70, 80, 90], - }); - - const result = sanitizeCreateKeyResponse(mockCredential); - expect(result).toEqual(mockCredential); - }); - - it('should handle non-PublicKeyCredential input gracefully', () => { - const nonPublicKeyCredential = { - someProp: 'test' - }; // No casting needed - - const result = sanitizeCreateKeyResponse(nonPublicKeyCredential); - expect(result).toEqual(nonPublicKeyCredential); - }); -}); - -describe('sanitizeGetKeyResponse', () => { - it('should convert Uint8Array properties to ArrayBuffer in PublicKeyCredential', () => { - const mockCredential = new PublicKeyCredentialMock({ - rawId: new Uint8Array([10, 20, 30]), - clientDataJSON: new Uint8Array([40, 50, 60]), - authenticatorData: new Uint8Array([70, 80, 90]), - signature: new Uint8Array([100, 110, 120]), - userHandle: new Uint8Array([130, 140, 150]) - }); - - const result = sanitizeGetKeyResponse(mockCredential); - expect(result.rawId.constructor.name).toBe('ArrayBuffer'); - expect(result.response.clientDataJSON.constructor.name).toBe('ArrayBuffer'); - expect(result.response.authenticatorData.constructor.name).toBe('ArrayBuffer'); - expect(result.response.signature.constructor.name).toBe('ArrayBuffer'); - expect(result.response.userHandle.constructor.name).toBe('ArrayBuffer'); - }); - - it('should return the input unchanged if it does not meet conversion criteria', () => { - const mockCredential = new PublicKeyCredentialMock({ - rawId: [10, 20, 30], - clientDataJSON: [40, 50, 60], - authenticatorData: [70, 80, 90], - signature: [100, 110, 120], - userHandle: [130, 140, 150] - }); - - - const result = sanitizeGetKeyResponse(mockCredential); - expect(result).toEqual(mockCredential); - }); - - it('should handle non-PublicKeyCredential input gracefully', () => { - const nonPublicKeyCredential = { - someProp: 'test value' - }; - - const result = sanitizeGetKeyResponse(nonPublicKeyCredential); - expect(result).toEqual(nonPublicKeyCredential); - }); -}); \ No newline at end of file diff --git a/packages/biometric-ed25519/test/utils.test.ts b/packages/biometric-ed25519/test/utils.test.ts new file mode 100644 index 0000000000..5ed9eef6a0 --- /dev/null +++ b/packages/biometric-ed25519/test/utils.test.ts @@ -0,0 +1,128 @@ +import { describe, expect, it, jest } from '@jest/globals'; +import { sanitizeCreateKeyResponse, sanitizeGetKeyResponse } from '../src/utils'; + +// Define a mock PublicKeyCredential +class PublicKeyCredentialMock { + rawId: string; + response: any; + + constructor({ + rawId, + clientDataJSON, + attestationObject, + authenticatorData, + signature, + userHandle + }) { + this.rawId = rawId; + this.response = { + clientDataJSON, + ...(attestationObject ? { attestationObject } : {}), + ...(signature ? { signature } : {}), + ...(userHandle ? { userHandle } : {}), + ...(authenticatorData ? { authenticatorData } : {}), + }; + } +} + +// Define global PublicKeyCredential to make it available during tests +// @ts-expect-error test input +global.PublicKeyCredential = PublicKeyCredentialMock; + +jest.mock('../src/utils', () => { + const originalModule = jest.requireActual('../src/utils'); + return { + ...originalModule, + convertUint8ArrayToArrayBuffer: jest.fn().mockImplementation(input => input.buffer), + }; +}); + +describe('sanitizeCreateKeyResponse', () => { + it('should convert Uint8Array properties to ArrayBuffer for PublicKeyCredential', () => { + // @ts-expect-error test input + const mockCredential = new PublicKeyCredentialMock({ + rawId: new Uint8Array([10, 20, 30]), + clientDataJSON: new Uint8Array([40, 50, 60]), + attestationObject: new Uint8Array([70, 80, 90]), + }); + + + // @ts-expect-error test input + const result = sanitizeCreateKeyResponse(mockCredential); + // @ts-expect-error test input + expect(result.rawId.constructor.name).toBe('ArrayBuffer'); + // @ts-expect-error test input + expect(result.response.clientDataJSON.constructor.name).toBe('ArrayBuffer'); + // @ts-expect-error test input + expect(result.response.attestationObject.constructor.name).toBe('ArrayBuffer'); + }); + + it('should return the input unchanged if not PublicKeyCredential or without Uint8Arrays', () => { + // @ts-expect-error test input + const mockCredential = new PublicKeyCredentialMock({ + rawId: [10, 20, 30], + clientDataJSON: [40, 50, 60], + attestationObject: [70, 80, 90], + }); + + // @ts-expect-error test input + const result = sanitizeCreateKeyResponse(mockCredential); + expect(result).toEqual(mockCredential); + }); + + it('should handle non-PublicKeyCredential input gracefully', () => { + const nonPublicKeyCredential = { + someProp: 'test' + }; // No casting needed + + // @ts-expect-error test input + const result = sanitizeCreateKeyResponse(nonPublicKeyCredential); + expect(result).toEqual(nonPublicKeyCredential); + }); +}); + +describe('sanitizeGetKeyResponse', () => { + it('should convert Uint8Array properties to ArrayBuffer in PublicKeyCredential', () => { + // @ts-expect-error test input + const mockCredential = new PublicKeyCredentialMock({ + rawId: new Uint8Array([10, 20, 30]), + clientDataJSON: new Uint8Array([40, 50, 60]), + authenticatorData: new Uint8Array([70, 80, 90]), + signature: new Uint8Array([100, 110, 120]), + userHandle: new Uint8Array([130, 140, 150]) + }); + + // @ts-expect-error test input + const result: any = sanitizeGetKeyResponse(mockCredential); + expect(result.rawId.constructor.name).toBe('ArrayBuffer'); + expect(result.response.clientDataJSON.constructor.name).toBe('ArrayBuffer'); + expect(result.response.authenticatorData.constructor.name).toBe('ArrayBuffer'); + expect(result.response.signature.constructor.name).toBe('ArrayBuffer'); + expect(result.response.userHandle.constructor.name).toBe('ArrayBuffer'); + }); + + it('should return the input unchanged if it does not meet conversion criteria', () => { + // @ts-expect-error test input + const mockCredential = new PublicKeyCredentialMock({ + rawId: [10, 20, 30], + clientDataJSON: [40, 50, 60], + authenticatorData: [70, 80, 90], + signature: [100, 110, 120], + userHandle: [130, 140, 150] + }); + + // @ts-expect-error test input + const result = sanitizeGetKeyResponse(mockCredential); + expect(result).toEqual(mockCredential); + }); + + it('should handle non-PublicKeyCredential input gracefully', () => { + const nonPublicKeyCredential = { + someProp: 'test value' + }; + + // @ts-expect-error test input + const result = sanitizeGetKeyResponse(nonPublicKeyCredential); + expect(result).toEqual(nonPublicKeyCredential); + }); +}); \ No newline at end of file diff --git a/packages/biometric-ed25519/tsconfig.cjs.json b/packages/biometric-ed25519/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/biometric-ed25519/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/biometric-ed25519/tsconfig.json b/packages/biometric-ed25519/tsconfig.json index 548e050249..b3d721f5ca 100644 --- a/packages/biometric-ed25519/tsconfig.json +++ b/packages/biometric-ed25519/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.browser.json", + "extends": "tsconfig/browser.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts", diff --git a/packages/build/cjsify.js b/packages/build/cjsify.js new file mode 100755 index 0000000000..15a5bd0d51 --- /dev/null +++ b/packages/build/cjsify.js @@ -0,0 +1,58 @@ +import { lstat, opendir, readFile, rename, writeFile } from 'node:fs/promises'; +import path from 'node:path'; + +async function enumerateContents(contentPath) { + const dir = await opendir(contentPath); + let files = []; + for await (let entry of dir) { + if (entry.name === 'node_modules') { + continue; + } + + const entryPath = path.join(contentPath, entry.name); + if (entry.isDirectory()) { + files = [...files, ...(await enumerateContents(entryPath))]; + } else if (entry.name.endsWith('.js')) { + files.push(entryPath); + } + } + + return files; +} + +async function cjsIfy() { + const [,, inputPath] = process.argv; + const basePath = path.resolve(process.cwd(), inputPath); + + for (let projectFilePath of await enumerateContents(basePath)) { + let contents = (await readFile(projectFilePath)).toString(); + const relativeImports = [...contents.matchAll(/require\("(\.\.?\/+[^"]+)"\)/ig)]; + for (let localImport of relativeImports) { + const [matchedText, relativePath] = [...localImport]; + if (relativePath.endsWith('.json')) { + continue; + } + + const absolutePath = path.resolve(projectFilePath.split('/').slice(0, -1).join('/'), relativePath); + let isDirectory = false; + try { + isDirectory = (await lstat(absolutePath)).isDirectory(); + } catch { /* lstat has failed because `absolutePath` points to a JS file but is missing the .js extension */ } + + const replacementPath = isDirectory + ? `${relativePath}/index.cjs` + : `${relativePath}.cjs`; + contents = contents.replaceAll(matchedText, `require("${replacementPath}")`); + } + + if (relativeImports.length) { + await writeFile(projectFilePath, contents); + } + + await rename(projectFilePath, [...projectFilePath.split('.').slice(0, -1), 'cjs'].join('.')); + } +} + +(async function() { + await cjsIfy(); +}()); diff --git a/packages/build/package.json b/packages/build/package.json new file mode 100644 index 0000000000..4ae992a347 --- /dev/null +++ b/packages/build/package.json @@ -0,0 +1,9 @@ +{ + "name": "build", + "version": "0.0.0", + "type": "module", + "private": true, + "bin": { + "cjsify": "./cjsify.js" + } +} diff --git a/packages/cookbook/tsconfig.cjs.json b/packages/cookbook/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/cookbook/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/crypto/jest.config.js b/packages/crypto/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/crypto/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/crypto/jest.config.ts b/packages/crypto/jest.config.ts new file mode 100644 index 0000000000..3b66313239 --- /dev/null +++ b/packages/crypto/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true, + }, + }], + }, +}; diff --git a/packages/crypto/package.json b/packages/crypto/package.json index 60ad6f7abe..c611a82f33 100644 --- a/packages/crypto/package.json +++ b/packages/crypto/package.json @@ -2,15 +2,15 @@ "name": "@near-js/crypto", "version": "1.3.0", "description": "Abstractions around NEAR-compatible elliptical curves and cryptographic keys", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "lint:js": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc", - "lint:js:fix": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc --fix", - "lint:ts": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc", - "lint:ts:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc --fix", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "", @@ -24,12 +24,20 @@ "secp256k1": "5.0.0" }, "devDependencies": { - "@types/node": "18.11.18", - "jest": "26.0.1", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "@jest/globals": "^29.7.0", + "@noble/hashes": "^1.4.0", + "@types/node": "20.0.0", + "build": "workspace:*", + "jest": "29.7.0", + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/crypto/src/constants.ts b/packages/crypto/src/constants.ts index d3fe154111..d028d3523f 100644 --- a/packages/crypto/src/constants.ts +++ b/packages/crypto/src/constants.ts @@ -4,8 +4,8 @@ export enum KeyType { SECP256K1 = 1, } -export enum KeySize { - SECRET_KEY = 32, - ED25519_PUBLIC_KEY = 32, - SECP256k1_PUBLIC_KEY = 64, -} \ No newline at end of file +export const KeySize = { + SECRET_KEY: 32, + ED25519_PUBLIC_KEY: 32, + SECP256k1_PUBLIC_KEY: 64, +}; diff --git a/packages/crypto/src/public_key.ts b/packages/crypto/src/public_key.ts index 277d85dbcd..fbb5c89c35 100644 --- a/packages/crypto/src/public_key.ts +++ b/packages/crypto/src/public_key.ts @@ -3,7 +3,6 @@ import { ed25519 } from '@noble/curves/ed25519'; import secp256k1 from 'secp256k1'; import { KeySize, KeyType } from './constants'; -import { Assignable } from '@near-js/types'; function key_type_to_str(keyType: KeyType): string { switch (keyType) { @@ -21,23 +20,54 @@ function str_to_key_type(keyType: string): KeyType { } } -class ED25519PublicKey extends Assignable { keyType: KeyType = KeyType.ED25519; data: Uint8Array; } -class SECP256K1PublicKey extends Assignable { keyType: KeyType = KeyType.SECP256K1; data: Uint8Array; } +class ED25519PublicKey { keyType: KeyType = KeyType.ED25519; data: Uint8Array; } +class SECP256K1PublicKey { keyType: KeyType = KeyType.SECP256K1; data: Uint8Array; } + +function resolveEnumKeyName(keyType: KeyType) { + switch (keyType) { + case KeyType.ED25519: { + return 'ed25519Key'; + } + case KeyType.SECP256K1: { + return 'secp256k1Key'; + } + default: { + throw Error(`unknown type ${keyType}`); + } + } +} + +/** + * DUPLICATED FROM @near-js/types - REPLACE WITH IMPORTED REFERENCE AND DELETE + * This ends up being necessary for Wallet Selector dependencies with + * outdated peer dependencies and should only be temporary + */ +abstract class Enum { + abstract enum: string; + + constructor(properties: any) { + if (Object.keys(properties).length !== 1) { + throw new Error('Enum can only take single value'); + } + Object.keys(properties).map((key: string) => { + (this as any)[key] = properties[key]; + }); + } +} /** * PublicKey representation that has type and bytes of the key. */ -export class PublicKey extends Assignable { +export class PublicKey extends Enum { + enum: string; ed25519Key?: ED25519PublicKey; secp256k1Key?: SECP256K1PublicKey; - constructor({ keyType, data }: { keyType: KeyType, data: Uint8Array }) { - super({}); - if (keyType === KeyType.ED25519) { - this.ed25519Key = { keyType, data }; - } else if (keyType === KeyType.SECP256K1) { - this.secp256k1Key = { keyType, data }; - } + constructor(publicKey: { keyType: KeyType, data: Uint8Array }) { + const keyName = resolveEnumKeyName(publicKey.keyType); + super({ [keyName]: publicKey }); + this[keyName] = publicKey; + this.enum = keyName; } /** @@ -111,11 +141,11 @@ export class PublicKey extends Assignable { get keyPair() { return this.ed25519Key || this.secp256k1Key; } - + get keyType(): KeyType { return this.keyPair.keyType; } - + get data(): Uint8Array { return this.keyPair.data; } diff --git a/packages/crypto/test/key_pair.test.js b/packages/crypto/test/key_pair.test.ts similarity index 91% rename from packages/crypto/test/key_pair.test.js rename to packages/crypto/test/key_pair.test.ts index 10fada7096..bfec333bf3 100644 --- a/packages/crypto/test/key_pair.test.js +++ b/packages/crypto/test/key_pair.test.ts @@ -1,8 +1,9 @@ -const { baseEncode } = require('@near-js/utils'); -const { sha256 } = require('@noble/hashes/sha256'); -const { KeyPair, KeyPairEd25519, PublicKey, KeyPairSecp256k1 } = require('../lib'); +import { describe, expect, test } from '@jest/globals'; +import { baseEncode } from '@near-js/utils'; +import { sha256 } from '@noble/hashes/sha256'; +import { KeyPair, KeyPairEd25519, PublicKey, KeyPairSecp256k1 } from '../src'; -const { TextEncoder } = require('util'); +import { TextEncoder } from 'util'; global.TextEncoder = TextEncoder; describe('Using Ed25519 Curve', () => { @@ -37,7 +38,7 @@ describe('Using Ed25519 Curve', () => { test('convert to string', async () => { const keyPair = KeyPairEd25519.fromRandom(); const newKeyPair = KeyPair.fromString(keyPair.toString()); - expect(newKeyPair.secretKey).toEqual(keyPair.secretKey); + expect((newKeyPair as KeyPairEd25519).secretKey).toEqual(keyPair.secretKey); const keyString = 'ed25519:2wyRcSwSuHtRVmkMCGjPwnzZmQLeXLzLLyED1NDMt4BjnKgQL6tF85yBx6Jr26D2dUNeC716RBoTxntVHsegogYw'; const keyPair2 = KeyPair.fromString(keyString); @@ -77,7 +78,7 @@ describe('Using Secp256k1 Curve', () => { test('Should return proper key converted to string using Secp256k1', async () => { const keyPair = KeyPairSecp256k1.fromRandom(); const newKeyPair = KeyPair.fromString(keyPair.toString()); - expect(newKeyPair.secretKey).toEqual(keyPair.secretKey); + expect((newKeyPair as KeyPairSecp256k1).secretKey).toEqual(keyPair.secretKey); const keyString = 'secp256k1:7s1Jno8tbqFHBMqLh3epaFBbk194zAuMqo8yPbxvTbXn'; const keyPair2 = KeyPair.fromString(keyString); @@ -88,7 +89,7 @@ describe('Using Secp256k1 Curve', () => { test('convert to string', async () => { const keyPair = KeyPairEd25519.fromRandom(); const newKeyPair = KeyPair.fromString(keyPair.toString()); - expect(newKeyPair.secretKey).toEqual(keyPair.secretKey); + expect((newKeyPair as KeyPairEd25519).secretKey).toEqual(keyPair.secretKey); const keyString = 'ed25519:2wyRcSwSuHtRVmkMCGjPwnzZmQLeXLzLLyED1NDMt4BjnKgQL6tF85yBx6Jr26D2dUNeC716RBoTxntVHsegogYw'; const keyPair2 = KeyPair.fromString(keyString); diff --git a/packages/crypto/tsconfig.cjs.json b/packages/crypto/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/crypto/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/crypto/tsconfig.json b/packages/crypto/tsconfig.json index a698689671..75b9dc47ae 100644 --- a/packages/crypto/tsconfig.json +++ b/packages/crypto/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.node.json", + "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/iframe-rpc/package.json b/packages/iframe-rpc/package.json index b5ceed78ef..a4a9a339cd 100644 --- a/packages/iframe-rpc/package.json +++ b/packages/iframe-rpc/package.json @@ -2,10 +2,13 @@ "name": "@near-js/iframe-rpc", "version": "0.0.2", "description": "IFrame RPC client/server implementation", - "main": "lib/index.js", - "types": "lib/index.d.ts", + "main": "lib/esm/index.js", + "types": "lib/esm/index.d.ts", + "type": "module", "scripts": { - "build": "tsc -p ./tsconfig.json" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs" }, "keywords": [], "author": "Pagoda", @@ -14,6 +17,11 @@ "events": "3.3.0" }, "devDependencies": { - "@types/node": "18.11.18" + "@types/node": "18.11.18", + "build": "workspace:*" + }, + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" } } diff --git a/packages/iframe-rpc/tsconfig.cjs.json b/packages/iframe-rpc/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/iframe-rpc/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/iframe-rpc/tsconfig.json b/packages/iframe-rpc/tsconfig.json index 24c6000844..91b3dad6bf 100644 --- a/packages/iframe-rpc/tsconfig.json +++ b/packages/iframe-rpc/tsconfig.json @@ -1,7 +1,8 @@ { - "extends": "../../tsconfig.browser.json", + "extends": "tsconfig/browser.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", + "types": ["node"] }, "files": [ "src/index.ts" diff --git a/packages/keystores-browser/jest.config.js b/packages/keystores-browser/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/keystores-browser/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/keystores-browser/jest.config.ts b/packages/keystores-browser/jest.config.ts new file mode 100644 index 0000000000..d9d914d549 --- /dev/null +++ b/packages/keystores-browser/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true + } + }] + }, +}; diff --git a/packages/keystores-browser/package.json b/packages/keystores-browser/package.json index b3cdfa586d..1cbd3966f8 100644 --- a/packages/keystores-browser/package.json +++ b/packages/keystores-browser/package.json @@ -2,15 +2,15 @@ "name": "@near-js/keystores-browser", "version": "0.1.0", "description": "KeyStore implementation for working with keys in browser LocalStorage", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "lint:js": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc", - "lint:js:fix": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc --fix", - "lint:ts": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc", - "lint:ts:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc --fix", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "", @@ -20,11 +20,19 @@ "@near-js/keystores": "workspace:*" }, "devDependencies": { - "jest": "26.0.1", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "@jest/globals": "^29.7.0", + "build": "workspace:*", + "jest": "29.7.0", + "localstorage-memory": "1.0.3", + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/keystores-browser/test/browser_keystore.test.js b/packages/keystores-browser/test/browser_keystore.test.js deleted file mode 100644 index 117c8a3ef4..0000000000 --- a/packages/keystores-browser/test/browser_keystore.test.js +++ /dev/null @@ -1,22 +0,0 @@ -const { BrowserLocalStorageKeyStore, MultiContractBrowserLocalStorageKeyStore } = require('../lib'); - -describe('Browser keystore', () => { - let ctx = {}; - - beforeAll(async () => { - ctx.keyStore = new BrowserLocalStorageKeyStore(require('localstorage-memory')); - }); - - require('./keystore_common').shouldStoreAndRetrieveKeys(ctx); -}); - - -describe('Browser multi keystore', () => { - let ctx = {}; - - beforeAll(async () => { - ctx.keyStore = new MultiContractBrowserLocalStorageKeyStore(require('localstorage-memory')); - }); - - require('./multi_contract_browser_keystore_common').shouldStoreAndRetrieveKeys(ctx); -}); \ No newline at end of file diff --git a/packages/keystores-browser/test/browser_keystore.test.ts b/packages/keystores-browser/test/browser_keystore.test.ts new file mode 100644 index 0000000000..5b5541bbde --- /dev/null +++ b/packages/keystores-browser/test/browser_keystore.test.ts @@ -0,0 +1,25 @@ +import { beforeAll, describe } from '@jest/globals'; +import LocalStorageMemory from 'localstorage-memory'; + +import { BrowserLocalStorageKeyStore, MultiContractBrowserLocalStorageKeyStore } from '../src'; +import { shouldStoreAndRetrieveKeys } from './keystore_common'; + +describe('Browser keystore', () => { + const ctx: any = {}; + + beforeAll(async () => { + ctx.keyStore = new BrowserLocalStorageKeyStore(LocalStorageMemory); + }); + + shouldStoreAndRetrieveKeys(ctx); +}); + +describe('Browser multi keystore', () => { + const ctx: any = {}; + + beforeAll(async () => { + ctx.keyStore = new MultiContractBrowserLocalStorageKeyStore(LocalStorageMemory); + }); + + shouldStoreAndRetrieveKeys(ctx); +}); diff --git a/packages/keystores-node/test/keystore_common.js b/packages/keystores-browser/test/keystore_common.ts similarity index 93% rename from packages/keystores-node/test/keystore_common.js rename to packages/keystores-browser/test/keystore_common.ts index 40fd26361d..5916de371a 100644 --- a/packages/keystores-node/test/keystore_common.js +++ b/packages/keystores-browser/test/keystore_common.ts @@ -1,10 +1,11 @@ -const { KeyPairEd25519 } = require('@near-js/crypto'); +import { beforeEach, expect, test } from '@jest/globals'; +import { KeyPairEd25519 } from '@near-js/crypto'; const NETWORK_ID_SINGLE_KEY = 'singlekeynetworkid'; const ACCOUNT_ID_SINGLE_KEY = 'singlekey_accountid'; const KEYPAIR_SINGLE_KEY = new KeyPairEd25519('2wyRcSwSuHtRVmkMCGjPwnzZmQLeXLzLLyED1NDMt4BjnKgQL6tF85yBx6Jr26D2dUNeC716RBoTxntVHsegogYw'); -module.exports.shouldStoreAndRetriveKeys = ctx => { +export const shouldStoreAndRetrieveKeys = ctx => { beforeEach(async () => { await ctx.keyStore.clear(); await ctx.keyStore.setKey(NETWORK_ID_SINGLE_KEY, ACCOUNT_ID_SINGLE_KEY, KEYPAIR_SINGLE_KEY); diff --git a/packages/keystores-browser/test/multi_contract_browser_keystore_common.js b/packages/keystores-browser/test/multi_contract_browser_keystore_common.js deleted file mode 100644 index 4329544cd5..0000000000 --- a/packages/keystores-browser/test/multi_contract_browser_keystore_common.js +++ /dev/null @@ -1,64 +0,0 @@ -const { KeyPairEd25519 } = require('@near-js/crypto'); - -const NETWORK_ID = 'networkid'; -const ACCOUNT_ID = 'accountid'; -const CONTRACT_ID = 'contractid'; -const KEYPAIR = new KeyPairEd25519('2wyRcSwSuHtRVmkMCGjPwnzZmQLeXLzLLyED1NDMt4BjnKgQL6tF85yBx6Jr26D2dUNeC716RBoTxntVHsegogYw'); - -module.exports.shouldStoreAndRetrieveKeys = ctx => { - beforeEach(async () => { - await ctx.keyStore.clear(); - await ctx.keyStore.setKey(NETWORK_ID, ACCOUNT_ID, KEYPAIR, CONTRACT_ID); - }); - - test('Get all keys with empty network returns empty list', async () => { - const emptyList = await ctx.keyStore.getAccounts('emptynetwork'); - expect(emptyList).toEqual([]); - }); - - test('Get all keys with single key in keystore', async () => { - const accountIds = await ctx.keyStore.getAccounts(NETWORK_ID); - expect(accountIds).toEqual([ACCOUNT_ID]); - }); - - test('Get not-existing account', async () => { - expect(await ctx.keyStore.getKey('somenetwork', 'someaccount', 'somecontract')).toBeNull(); - }); - - test('Get account id from a network with single key', async () => { - const key = await ctx.keyStore.getKey(NETWORK_ID, ACCOUNT_ID, CONTRACT_ID); - expect(key).toEqual(KEYPAIR); - }); - - test('Get networks', async () => { - const networks = await ctx.keyStore.getNetworks(); - expect(networks).toEqual([NETWORK_ID]); - }); - - test('Get accounts', async () => { - const accounts = await ctx.keyStore.getAccounts(NETWORK_ID); - expect(accounts).toEqual([ACCOUNT_ID]); - }); - - test('Get contracts', async () => { - const contracts = await ctx.keyStore.getContracts(NETWORK_ID, ACCOUNT_ID); - expect(contracts).toEqual([CONTRACT_ID]); - }); - - test('Add two contracts to account and retrieve them', async () => { - const networkId = 'network'; - const accountId = 'account'; - const contract1 = 'contract1'; - const contract2 = 'contract2'; - const key1Expected = KeyPairEd25519.fromRandom(); - const key2Expected = KeyPairEd25519.fromRandom(); - await ctx.keyStore.setKey(networkId, accountId, key1Expected, contract1); - await ctx.keyStore.setKey(networkId, accountId, key2Expected, contract2); - const key1 = await ctx.keyStore.getKey(networkId, accountId, contract1); - const key2 = await ctx.keyStore.getKey(networkId, accountId, contract2); - expect(key1).toEqual(key1Expected); - expect(key2).toEqual(key2Expected); - const contractIds = await ctx.keyStore.getContracts(networkId, accountId); - expect(contractIds).toEqual([contract1, contract2]); - }); -}; diff --git a/packages/keystores-browser/test/multi_contract_browser_keystore_common.test.ts b/packages/keystores-browser/test/multi_contract_browser_keystore_common.test.ts new file mode 100644 index 0000000000..15b6d7397b --- /dev/null +++ b/packages/keystores-browser/test/multi_contract_browser_keystore_common.test.ts @@ -0,0 +1,50 @@ +import { beforeEach, expect, test } from '@jest/globals'; +import { KeyPairEd25519 } from '@near-js/crypto'; +import LocalStorageMemory from 'localstorage-memory'; + +import { MultiContractBrowserLocalStorageKeyStore } from '../src'; + +const NETWORK_ID = 'networkid'; +const ACCOUNT_ID = 'accountid'; +const CONTRACT_ID = 'contractid'; +const KEYPAIR = new KeyPairEd25519('2wyRcSwSuHtRVmkMCGjPwnzZmQLeXLzLLyED1NDMt4BjnKgQL6tF85yBx6Jr26D2dUNeC716RBoTxntVHsegogYw'); + +const ctx = { + keyStore: new MultiContractBrowserLocalStorageKeyStore(LocalStorageMemory) +}; + +beforeEach(async () => { + await ctx.keyStore.clear(); + await ctx.keyStore.setKey(NETWORK_ID, ACCOUNT_ID, KEYPAIR, CONTRACT_ID); +}); + +test('Get not-existing account', async () => { + expect(await ctx.keyStore.getKey('somenetwork', 'someaccount', 'somecontract')).toBeNull(); +}); + +test('Get account id from a network with single key', async () => { + const key = await ctx.keyStore.getKey(NETWORK_ID, ACCOUNT_ID, CONTRACT_ID); + expect(key).toEqual(KEYPAIR); +}); + +test('Get contracts', async () => { + const contracts = await ctx.keyStore.getContracts(NETWORK_ID, ACCOUNT_ID); + expect(contracts).toEqual([CONTRACT_ID]); +}); + +test('Add two contracts to account and retrieve them', async () => { + const networkId = 'network'; + const accountId = 'account'; + const contract1 = 'contract1'; + const contract2 = 'contract2'; + const key1Expected = KeyPairEd25519.fromRandom(); + const key2Expected = KeyPairEd25519.fromRandom(); + await ctx.keyStore.setKey(networkId, accountId, key1Expected, contract1); + await ctx.keyStore.setKey(networkId, accountId, key2Expected, contract2); + const key1 = await ctx.keyStore.getKey(networkId, accountId, contract1); + const key2 = await ctx.keyStore.getKey(networkId, accountId, contract2); + expect(key1).toEqual(key1Expected); + expect(key2).toEqual(key2Expected); + const contractIds = await ctx.keyStore.getContracts(networkId, accountId); + expect(contractIds).toEqual([contract1, contract2]); +}); diff --git a/packages/keystores-browser/tsconfig.cjs.json b/packages/keystores-browser/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/keystores-browser/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/keystores-browser/tsconfig.json b/packages/keystores-browser/tsconfig.json index 24c6000844..2c49a46795 100644 --- a/packages/keystores-browser/tsconfig.json +++ b/packages/keystores-browser/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.browser.json", + "extends": "tsconfig/browser.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/keystores-node/jest.config.js b/packages/keystores-node/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/keystores-node/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/keystores-node/jest.config.ts b/packages/keystores-node/jest.config.ts new file mode 100644 index 0000000000..545639fcad --- /dev/null +++ b/packages/keystores-node/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true, + }, + }], + }, +}; diff --git a/packages/keystores-node/package.json b/packages/keystores-node/package.json index a4f77406d3..66c16e1afc 100644 --- a/packages/keystores-node/package.json +++ b/packages/keystores-node/package.json @@ -2,15 +2,15 @@ "name": "@near-js/keystores-node", "version": "0.0.13", "description": "KeyStore implementation for working with keys in the local filesystem", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "lint:js": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc", - "lint:js:fix": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc --fix", - "lint:ts": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc", - "lint:ts:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc --fix", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "", @@ -20,12 +20,20 @@ "@near-js/keystores": "workspace:*" }, "devDependencies": { - "@types/node": "18.11.18", - "jest": "26.0.1", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "@jest/globals": "^29.7.0", + "@types/node": "20.0.0", + "build": "workspace:*", + "jest": "29.7.0", + "rimraf": "^6.0.1", + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/keystores-browser/test/keystore_common.js b/packages/keystores-node/test/keystore_common.ts similarity index 93% rename from packages/keystores-browser/test/keystore_common.js rename to packages/keystores-node/test/keystore_common.ts index 9d721f0f27..919bd38e33 100644 --- a/packages/keystores-browser/test/keystore_common.js +++ b/packages/keystores-node/test/keystore_common.ts @@ -1,10 +1,11 @@ -const { KeyPairEd25519 } = require('@near-js/crypto'); +import { beforeEach, expect, test } from '@jest/globals'; +import { KeyPairEd25519 } from '@near-js/crypto'; const NETWORK_ID_SINGLE_KEY = 'singlekeynetworkid'; const ACCOUNT_ID_SINGLE_KEY = 'singlekey_accountid'; const KEYPAIR_SINGLE_KEY = new KeyPairEd25519('2wyRcSwSuHtRVmkMCGjPwnzZmQLeXLzLLyED1NDMt4BjnKgQL6tF85yBx6Jr26D2dUNeC716RBoTxntVHsegogYw'); -module.exports.shouldStoreAndRetrieveKeys = ctx => { +export const shouldStoreAndRetriveKeys = ctx => { beforeEach(async () => { await ctx.keyStore.clear(); await ctx.keyStore.setKey(NETWORK_ID_SINGLE_KEY, ACCOUNT_ID_SINGLE_KEY, KEYPAIR_SINGLE_KEY); diff --git a/packages/keystores-node/test/unencrypted_file_system_keystore.test.node.js b/packages/keystores-node/test/unencrypted_file_system_keystore.test.ts similarity index 58% rename from packages/keystores-node/test/unencrypted_file_system_keystore.test.node.js rename to packages/keystores-node/test/unencrypted_file_system_keystore.test.ts index d4845b8393..7d6e86f299 100644 --- a/packages/keystores-node/test/unencrypted_file_system_keystore.test.node.js +++ b/packages/keystores-node/test/unencrypted_file_system_keystore.test.ts @@ -1,26 +1,28 @@ -const { KeyPairEd25519 } = require('@near-js/crypto'); -const fs = require('fs').promises; -const path = require('path'); -const rimraf = require('util').promisify(require('rimraf')); +import { beforeAll, describe, expect, it } from '@jest/globals'; +import { KeyPairEd25519 } from '@near-js/crypto'; +import * as fs from 'fs'; +import * as path from 'path'; +import { rimraf } from 'rimraf'; -const { UnencryptedFileSystemKeyStore } = require('../lib'); +import { UnencryptedFileSystemKeyStore } from '../src'; +import { shouldStoreAndRetriveKeys } from './keystore_common'; const KEYSTORE_PATH = '../../test-keys'; describe('Unencrypted file system keystore', () => { - let ctx = {}; + const ctx: { keyStore?: any } = {}; - beforeAll(async () => { - await rimraf(KEYSTORE_PATH); + beforeAll(() => { + rimraf.sync(KEYSTORE_PATH); try { - await fs.mkdir(KEYSTORE_PATH, { recursive: true }); + fs.mkdirSync(KEYSTORE_PATH, { recursive: true }); } catch (err) { if (err.code !== 'EEXIST') throw err; } ctx.keyStore = new UnencryptedFileSystemKeyStore(KEYSTORE_PATH); }); - require('./keystore_common').shouldStoreAndRetriveKeys(ctx); + shouldStoreAndRetriveKeys(ctx); it('test path resolve', async() => { expect(ctx.keyStore.keyDir).toEqual(path.join(process.cwd(), KEYSTORE_PATH)); @@ -30,7 +32,7 @@ describe('Unencrypted file system keystore', () => { const key1 = KeyPairEd25519.fromRandom(); await ctx.keyStore.setKey('network', 'account', key1); const keyFilePath = ctx.keyStore.getKeyFilePath('network', 'account'); - const content = await fs.readFile(keyFilePath); + const content = fs.readFileSync(keyFilePath).toString(); const accountInfo = JSON.parse(content.toString()); expect(accountInfo.public_key).toEqual(key1.getPublicKey().toString()); }); diff --git a/packages/keystores-node/tsconfig.cjs.json b/packages/keystores-node/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/keystores-node/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/keystores-node/tsconfig.json b/packages/keystores-node/tsconfig.json index ae42955e48..5f3d7bd793 100644 --- a/packages/keystores-node/tsconfig.json +++ b/packages/keystores-node/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.node.json", + "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/keystores/jest.config.js b/packages/keystores/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/keystores/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/keystores/jest.config.ts b/packages/keystores/jest.config.ts new file mode 100644 index 0000000000..3b66313239 --- /dev/null +++ b/packages/keystores/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true, + }, + }], + }, +}; diff --git a/packages/keystores/package.json b/packages/keystores/package.json index 70d0527b46..4d585fb658 100644 --- a/packages/keystores/package.json +++ b/packages/keystores/package.json @@ -2,15 +2,15 @@ "name": "@near-js/keystores", "version": "0.1.0", "description": "Key storage and management implementations", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "lint:js": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc", - "lint:js:fix": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc --fix", - "lint:ts": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc", - "lint:ts:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc --fix", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "", @@ -20,12 +20,19 @@ "@near-js/types": "workspace:*" }, "devDependencies": { - "@types/node": "18.11.18", - "jest": "26.0.1", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "@jest/globals": "^29.7.0", + "@types/node": "20.0.0", + "build": "workspace:*", + "jest": "29.7.0", + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/keystores/test/in_memory_keystore.test.js b/packages/keystores/test/in_memory_keystore.test.js deleted file mode 100644 index 8cf3efeaa9..0000000000 --- a/packages/keystores/test/in_memory_keystore.test.js +++ /dev/null @@ -1,11 +0,0 @@ -const { InMemoryKeyStore } = require('../lib'); - -describe('In-memory keystore', () => { - let ctx = {}; - - beforeAll(async () => { - ctx.keyStore = new InMemoryKeyStore(); - }); - - require('./keystore_common').shouldStoreAndRetrieveKeys(ctx); -}); diff --git a/packages/keystores/test/in_memory_keystore.test.ts b/packages/keystores/test/in_memory_keystore.test.ts new file mode 100644 index 0000000000..bee6110f25 --- /dev/null +++ b/packages/keystores/test/in_memory_keystore.test.ts @@ -0,0 +1,13 @@ +import { beforeAll, describe } from '@jest/globals'; +import { shouldStoreAndRetrieveKeys } from './keystore_common'; +import { InMemoryKeyStore } from '../src'; + +describe('In-memory keystore', () => { + const ctx: any = {}; + + beforeAll(async () => { + ctx.keyStore = new InMemoryKeyStore(); + }); + + shouldStoreAndRetrieveKeys(ctx); +}); diff --git a/packages/keystores/test/keystore_common.js b/packages/keystores/test/keystore_common.ts similarity index 93% rename from packages/keystores/test/keystore_common.js rename to packages/keystores/test/keystore_common.ts index 9d721f0f27..5916de371a 100644 --- a/packages/keystores/test/keystore_common.js +++ b/packages/keystores/test/keystore_common.ts @@ -1,10 +1,11 @@ -const { KeyPairEd25519 } = require('@near-js/crypto'); +import { beforeEach, expect, test } from '@jest/globals'; +import { KeyPairEd25519 } from '@near-js/crypto'; const NETWORK_ID_SINGLE_KEY = 'singlekeynetworkid'; const ACCOUNT_ID_SINGLE_KEY = 'singlekey_accountid'; const KEYPAIR_SINGLE_KEY = new KeyPairEd25519('2wyRcSwSuHtRVmkMCGjPwnzZmQLeXLzLLyED1NDMt4BjnKgQL6tF85yBx6Jr26D2dUNeC716RBoTxntVHsegogYw'); -module.exports.shouldStoreAndRetrieveKeys = ctx => { +export const shouldStoreAndRetrieveKeys = ctx => { beforeEach(async () => { await ctx.keyStore.clear(); await ctx.keyStore.setKey(NETWORK_ID_SINGLE_KEY, ACCOUNT_ID_SINGLE_KEY, KEYPAIR_SINGLE_KEY); diff --git a/packages/keystores/test/merge_keystore.test.js b/packages/keystores/test/merge_keystore.test.ts similarity index 79% rename from packages/keystores/test/merge_keystore.test.js rename to packages/keystores/test/merge_keystore.test.ts index 5a7d22ca3f..9911530fed 100644 --- a/packages/keystores/test/merge_keystore.test.js +++ b/packages/keystores/test/merge_keystore.test.ts @@ -1,9 +1,11 @@ -const { KeyPairEd25519 } = require('@near-js/crypto'); +import { beforeAll, describe, expect, it } from '@jest/globals'; +import { KeyPairEd25519 } from '@near-js/crypto'; -const { InMemoryKeyStore, MergeKeyStore } = require('../lib'); +import { InMemoryKeyStore, MergeKeyStore } from '../src'; +import { shouldStoreAndRetrieveKeys } from './keystore_common'; describe('Merge keystore', () => { - let ctx = {}; + const ctx: any = {}; beforeAll(async () => { ctx.stores = [new InMemoryKeyStore(), new InMemoryKeyStore()]; @@ -31,5 +33,5 @@ describe('Merge keystore', () => { expect(await ctx.stores[1].getAccounts('network')).toHaveLength(0); }); - require('./keystore_common').shouldStoreAndRetrieveKeys(ctx); + shouldStoreAndRetrieveKeys(ctx); }); diff --git a/packages/keystores/tsconfig.cjs.json b/packages/keystores/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/keystores/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/keystores/tsconfig.json b/packages/keystores/tsconfig.json index ae42955e48..5f3d7bd793 100644 --- a/packages/keystores/tsconfig.json +++ b/packages/keystores/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.node.json", + "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/near-api-js/browser-exports.js b/packages/near-api-js/browser-exports.js deleted file mode 100644 index 7ea92149e6..0000000000 --- a/packages/near-api-js/browser-exports.js +++ /dev/null @@ -1,2 +0,0 @@ -window.nearApi = require('./lib/browser-index'); -window.Buffer = Buffer; diff --git a/packages/near-api-js/dangerfile.ts b/packages/near-api-js/dangerfile.ts deleted file mode 100644 index 55fca86898..0000000000 --- a/packages/near-api-js/dangerfile.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { schedule, danger } from 'danger'; -import { - checkForRelease, - checkForNewDependencies, - checkForLockfileDiff, - checkForTypesInDeps -} from 'danger-plugin-yarn'; - -schedule(async () => { - const packageDiff = await danger.git.JSONDiffForFile("package.json") - checkForRelease(packageDiff) - checkForNewDependencies(packageDiff) - checkForLockfileDiff(packageDiff) - checkForTypesInDeps(packageDiff) - }) \ No newline at end of file diff --git a/packages/near-api-js/package.json b/packages/near-api-js/package.json index e4518a456a..2d8228d31a 100644 --- a/packages/near-api-js/package.json +++ b/packages/near-api-js/package.json @@ -22,40 +22,32 @@ "@near-js/types": "workspace:*", "@near-js/utils": "workspace:*", "@near-js/wallet-account": "workspace:*", + "@noble/curves": "1.2.0", "borsh": "1.0.0", "depd": "2.0.0", "http-errors": "1.7.2", "near-abi": "0.1.1", - "node-fetch": "2.6.7", - "@noble/curves": "1.2.0" + "node-fetch": "2.6.7" }, "devDependencies": { "@types/http-errors": "1.6.1", "@types/node": "18.11.18", - "browserify": "16.2.3", "bs58": "4.0.0", - "bundlewatch": "0.3.1", "concurrently": "7.3.0", - "danger": "11.1.1", - "danger-plugin-yarn": "1.3.2", "in-publish": "2.0.0", - "jest": "26.0.1", - "localstorage-memory": "1.0.3", + "jest": "29.7.0", "near-hello": "0.5.1", - "rimraf": "3.0.2", + "near-workspaces": "3.5.0", + "rimraf": "^6.0.1", "semver": "7.1.1", - "ts-jest": "26.5.6", - "uglifyify": "5.0.1", - "near-workspaces": "3.5.0" + "ts-jest": "29.1.5" }, "keywords": [], "license": "(MIT AND Apache-2.0)", "scripts": { - "dist": "pnpm browserify", - "browserify": "browserify browser-exports.js -i node-fetch -i http -i https -o dist/near-api-js.js && browserify browser-exports.js -i node-fetch -g uglifyify -o dist/near-api-js.min.js", "compile": "tsc -p ./tsconfig.json", "dev": "pnpm compile -w", - "build": "pnpm compile && pnpm browserify", + "build": "pnpm compile", "test": "jest test --passWithNoTests", "lint": "concurrently \"pnpm:lint:*(!fix) --no-error-on-unmatched-pattern\"", "lint:src": "eslint --ext .ts src", @@ -64,21 +56,11 @@ "lint:test:fix": "eslint --ext .js --fix test", "prefuzz": "pnpm build", "fuzz": "jsfuzz test/fuzz/borsh-roundtrip.js test/fuzz/corpus/", - "clean": "pnpm rimraf lib", - "bundlewatch": "bundlewatch" - }, - "bundlewatch": { - "files": [ - { - "path": "dist/near-api-js.min.js", - "maxSize": "250kB" - } - ] + "clean": "pnpm rimraf lib" }, "files": [ "lib", - "dist", - "browser-exports.js" + "dist" ], "author": "NEAR Inc" } diff --git a/packages/near-api-js/src/.eslintrc.yml b/packages/near-api-js/src/.eslintrc.yml index 0b2604422d..38a6544229 100644 --- a/packages/near-api-js/src/.eslintrc.yml +++ b/packages/near-api-js/src/.eslintrc.yml @@ -19,5 +19,5 @@ rules: '@typescript-eslint/no-use-before-define': off parserOptions: - ecmaVersion: 2018 + ecmaVersion: 2022 sourceType: module \ No newline at end of file diff --git a/packages/near-api-js/src/utils/enums.ts b/packages/near-api-js/src/utils/enums.ts index d2000e9296..21ba848dcd 100644 --- a/packages/near-api-js/src/utils/enums.ts +++ b/packages/near-api-js/src/utils/enums.ts @@ -1,16 +1 @@ -export { Assignable } from '@near-js/types'; - -/** @hidden @module */ -export abstract class Enum { - enum: string; - - constructor(properties: any) { - if (Object.keys(properties).length !== 1) { - throw new Error('Enum can only take single value'); - } - Object.keys(properties).map((key: string) => { - (this as any)[key] = properties[key]; - this.enum = key; - }); - } -} +export { Enum } from '@near-js/types'; diff --git a/packages/near-api-js/src/utils/index.ts b/packages/near-api-js/src/utils/index.ts index 43f784c3da..1c09179e17 100644 --- a/packages/near-api-js/src/utils/index.ts +++ b/packages/near-api-js/src/utils/index.ts @@ -1,25 +1,22 @@ import * as key_pair from './key_pair'; import * as serialize from './serialize'; -import * as web from './web'; import * as enums from './enums'; import * as format from './format'; import * as rpc_errors from './rpc_errors'; -import { PublicKey, KeyPair, KeyPairEd25519 } from './key_pair'; -import { logWarning } from './errors'; +import { PublicKey, KeyPair, KeyPairString, KeyPairEd25519 } from './key_pair'; import { Logger } from './logger'; export { key_pair, serialize, - web, enums, format, PublicKey, KeyPair, + KeyPairString, KeyPairEd25519, rpc_errors, - logWarning, Logger }; diff --git a/packages/near-api-js/src/utils/key_pair.ts b/packages/near-api-js/src/utils/key_pair.ts index c50a739814..90a5570cb4 100644 --- a/packages/near-api-js/src/utils/key_pair.ts +++ b/packages/near-api-js/src/utils/key_pair.ts @@ -1,5 +1,6 @@ export { KeyPair, + type KeyPairString, KeyPairEd25519, KeyType, PublicKey, diff --git a/packages/near-api-js/src/utils/setup-node-fetch.ts b/packages/near-api-js/src/utils/setup-node-fetch.ts deleted file mode 100644 index bd9660e068..0000000000 --- a/packages/near-api-js/src/utils/setup-node-fetch.ts +++ /dev/null @@ -1,21 +0,0 @@ -import fetch from 'node-fetch'; -import http from 'http'; -import https from 'https'; - -const httpAgent = new http.Agent({ keepAlive: true }); -const httpsAgent = new https.Agent({ keepAlive: true }); - -function agent(_parsedURL) { - if (_parsedURL.protocol === 'http:') { - return httpAgent; - } else { - return httpsAgent; - } -} - -export default function (resource, init) { - return fetch(resource, { - agent: agent(new URL(resource.toString())), - ...init, - }); -} diff --git a/packages/near-api-js/src/utils/web.ts b/packages/near-api-js/src/utils/web.ts deleted file mode 100644 index ba8d09f15b..0000000000 --- a/packages/near-api-js/src/utils/web.ts +++ /dev/null @@ -1 +0,0 @@ -export { fetchJson } from '@near-js/providers'; diff --git a/packages/near-api-js/tsconfig.json b/packages/near-api-js/tsconfig.json index 4345274879..ceb0534566 100644 --- a/packages/near-api-js/tsconfig.json +++ b/packages/near-api-js/tsconfig.json @@ -2,12 +2,12 @@ "compilerOptions": { "esModuleInterop": true, "lib": [ - "es2016", + "es2020", "esnext", "dom" ], "module": "commonjs", - "target": "es2016", + "target": "es2020", "moduleResolution": "node", "alwaysStrict": true, "outDir": "./lib", diff --git a/packages/providers/jest.config.js b/packages/providers/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/providers/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/providers/jest.config.ts b/packages/providers/jest.config.ts new file mode 100644 index 0000000000..0d356a2622 --- /dev/null +++ b/packages/providers/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true + } + }] + }, +}; diff --git a/packages/providers/package.json b/packages/providers/package.json index 918e995e8c..3c74e0ab22 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -2,15 +2,15 @@ "name": "@near-js/providers", "version": "0.2.3", "description": "Library of implementations for interfacing with the NEAR blockchain", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "lint:js": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc", - "lint:js:fix": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc --fix", - "lint:ts": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc", - "lint:ts:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc --fix", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "", @@ -20,14 +20,18 @@ "@near-js/types": "workspace:*", "@near-js/utils": "workspace:*", "borsh": "1.0.0", - "http-errors": "1.7.2" + "exponential-backoff": "^3.1.1", + "isomorphic-unfetch": "^3.1.0" }, "devDependencies": { - "@types/node": "18.11.18", - "jest": "26.0.1", + "@jest/globals": "^29.7.0", + "@types/node": "20.0.0", + "build": "workspace:*", + "jest": "29.7.0", "near-workspaces": "3.5.0", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "optionalDependencies": { "node-fetch": "2.6.7" @@ -35,8 +39,8 @@ "files": [ "lib" ], - "resolutions": { - "near-sandbox": "0.0.18", - "near-api-js": "4.0.0" + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" } } diff --git a/packages/providers/src/fetch.ts b/packages/providers/src/fetch.ts deleted file mode 100644 index bd9660e068..0000000000 --- a/packages/providers/src/fetch.ts +++ /dev/null @@ -1,21 +0,0 @@ -import fetch from 'node-fetch'; -import http from 'http'; -import https from 'https'; - -const httpAgent = new http.Agent({ keepAlive: true }); -const httpsAgent = new https.Agent({ keepAlive: true }); - -function agent(_parsedURL) { - if (_parsedURL.protocol === 'http:') { - return httpAgent; - } else { - return httpsAgent; - } -} - -export default function (resource, init) { - return fetch(resource, { - agent: agent(new URL(resource.toString())), - ...init, - }); -} diff --git a/packages/providers/src/fetch_json.ts b/packages/providers/src/fetch_json.ts index 376767eeab..fe83961208 100644 --- a/packages/providers/src/fetch_json.ts +++ b/packages/providers/src/fetch_json.ts @@ -1,65 +1,77 @@ import { TypedError } from '@near-js/types'; -import { Logger } from '@near-js/utils'; -import createError from 'http-errors'; +import { backOff } from 'exponential-backoff'; +import unfetch from 'isomorphic-unfetch'; -import { exponentialBackoff } from './exponential-backoff'; - -const START_WAIT_TIME_MS = 1000; const BACKOFF_MULTIPLIER = 1.5; const RETRY_NUMBER = 10; +const retryConfig = { + numOfAttempts: RETRY_NUMBER, + timeMultiple: BACKOFF_MULTIPLIER, + retry: (e: ProviderError) => { + if ([503, 408].includes(e.cause)) { + return true; + } + + if (['FetchError', 'Failed to fetch'].includes(e.toString())) { + return true; + } + + return false; + } +}; + export interface ConnectionInfo { url: string; - user?: string; - password?: string; - allowInsecure?: boolean; - timeout?: number; headers?: { [key: string]: string | number }; } +class ProviderError extends Error { + cause: number; + constructor(message: string, options: any) { + super(message, options); + } +} + +interface JsonRpcRequest { + id: number; + jsonrpc: string; + method: string; + params: object; +} + /** - * Performs an HTTP request to a specified URL or connection and returns the parsed JSON response. - * @param connectionInfoOrUrl The connection information or URL for the HTTP request. - * @param json The JSON payload to be included in the request body for POST requests. - * @returns A Promise that resolves to the parsed JSON response from the HTTP request. + * Performs an HTTP request to an RPC endpoint + * @param url URL for the HTTP request + * @param json Request body + * @param headers HTTP headers to include with the request + * @returns Promise }arsed JSON response from the HTTP request. */ -export async function fetchJson(connectionInfoOrUrl: string | ConnectionInfo, json?: string): Promise { - let connectionInfo: ConnectionInfo = { url: null }; - if (typeof (connectionInfoOrUrl) === 'string') { - connectionInfo.url = connectionInfoOrUrl; - } else { - connectionInfo = connectionInfoOrUrl as ConnectionInfo; - } +export async function fetchJsonRpc(url: string, json: JsonRpcRequest, headers: object): Promise { + const response = await backOff(async () => { + const res = await unfetch(url, { + method: 'POST', + body: JSON.stringify(json), + headers: { ...headers, 'Content-Type': 'application/json' } + }); - const response = await exponentialBackoff(START_WAIT_TIME_MS, RETRY_NUMBER, BACKOFF_MULTIPLIER, async () => { - try { + const { ok, status } = res; + if (!ok) { + throw new ProviderError(await res.text(), { cause: status }); + } - const response = await (global.fetch ?? (await import('./fetch')).default)(connectionInfo.url, { - method: json ? 'POST' : 'GET', - body: json ? json : undefined, - headers: { ...connectionInfo.headers, 'Content-Type': 'application/json' } - }); - if (!response.ok) { - if (response.status === 503) { - Logger.warn(`Retrying HTTP request for ${connectionInfo.url} as it's not available now`); - return null; - } else if (response.status === 408) { - Logger.warn(`Retrying HTTP request for ${connectionInfo.url} as the previous connection was unused for some time`); - return null; - } - throw createError(response.status, await response.text()); - } - return response; - } catch (error) { - if (error.toString().includes('FetchError') || error.toString().includes('Failed to fetch')) { - Logger.warn(`Retrying HTTP request for ${connectionInfo.url} because of error: ${error}`); - return null; - } - throw error; + if (status === 503) { + throw new ProviderError(`${url} unavailable`, { cause: status }); + } else if (status === 408) { + throw new ProviderError('Unused connection', { cause: status }); } - }); + + return res; + }, retryConfig); + if (!response) { - throw new TypedError(`Exceeded ${RETRY_NUMBER} attempts for ${connectionInfo.url}.`, 'RetriesExceeded'); + throw new TypedError(`Exceeded ${RETRY_NUMBER} attempts for ${url}.`, 'RetriesExceeded'); } + return await response.json(); } diff --git a/packages/providers/src/index.ts b/packages/providers/src/index.ts index 98ce912fdb..ff4d791ed1 100644 --- a/packages/providers/src/index.ts +++ b/packages/providers/src/index.ts @@ -2,4 +2,3 @@ export { exponentialBackoff } from './exponential-backoff'; export { JsonRpcProvider } from './json-rpc-provider'; export { FailoverRpcProvider } from './failover-rpc-provider'; export { Provider } from './provider'; -export { fetchJson } from './fetch_json'; diff --git a/packages/providers/src/json-rpc-provider.ts b/packages/providers/src/json-rpc-provider.ts index c12ed55f53..040045cc4c 100644 --- a/packages/providers/src/json-rpc-provider.ts +++ b/packages/providers/src/json-rpc-provider.ts @@ -41,7 +41,7 @@ import { import { exponentialBackoff } from './exponential-backoff'; import { Provider } from './provider'; -import { ConnectionInfo, fetchJson } from './fetch_json'; +import { ConnectionInfo, fetchJsonRpc } from './fetch_json'; import { TxExecutionStatus } from '@near-js/types'; /** @hidden */ @@ -386,7 +386,7 @@ export class JsonRpcProvider extends Provider { id: (_nextId++), jsonrpc: '2.0' }; - const response = await fetchJson(this.connection, JSON.stringify(request)); + const response = await fetchJsonRpc(this.connection.url, request, this.connection.headers); if (response.error) { if (typeof response.error.data === 'object') { if (typeof response.error.data.error_message === 'string' && typeof response.error.data.error_type === 'string') { diff --git a/packages/providers/test/fetch_json.test.js b/packages/providers/test/fetch_json.test.js deleted file mode 100644 index 6711d53e22..0000000000 --- a/packages/providers/test/fetch_json.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { fetchJson } = require('../lib'); - -describe('fetchJson', () => { - test('string parameter in fetchJson', async () => { - const RPC_URL = 'https://rpc.testnet.near.org'; - const statusRequest = { - 'jsonrpc': '2.0', - 'id': 'dontcare', - 'method': 'status', - 'params': [] - }; - const result = await fetchJson(RPC_URL, JSON.stringify(statusRequest)); - expect(result.result.chain_id).toBe('testnet'); - }); - test('object parameter in fetchJson', async () => { - const connection = { url: 'https://rpc.testnet.near.org' }; - const statusRequest = { - 'jsonrpc': '2.0', - 'id': 'dontcare', - 'method': 'status', - 'params': [] - }; - const result = await fetchJson(connection, JSON.stringify(statusRequest)); - expect(result.result.chain_id).toBe('testnet'); - }); -}); diff --git a/packages/providers/test/fetch_json.test.ts b/packages/providers/test/fetch_json.test.ts new file mode 100644 index 0000000000..a4b479b9d6 --- /dev/null +++ b/packages/providers/test/fetch_json.test.ts @@ -0,0 +1,29 @@ +import { describe, expect, test } from '@jest/globals'; +import { fetchJsonRpc } from '../src/fetch_json'; + +describe('fetchJson', () => { + test('string parameter in fetchJson', async () => { + const RPC_URL = 'https://rpc.testnet.near.org'; + const statusRequest = { + jsonrpc: '2.0', + id: 'dontcare', + method: 'status', + params: [] + }; + // @ts-expect-error test input + const result = await fetchJsonRpc(RPC_URL, statusRequest, undefined); + expect(result.result.chain_id).toBe('testnet'); + }); + test('object parameter in fetchJson', async () => { + const connection = { url: 'https://rpc.testnet.near.org' }; + const statusRequest = { + jsonrpc: '2.0', + id: 'dontcare', + method: 'status', + params: [] + }; + // @ts-expect-error test input + const result = await fetchJsonRpc(connection.url, statusRequest, undefined); + expect(result.result.chain_id).toBe('testnet'); + }); +}); diff --git a/packages/providers/test/providers.test.js b/packages/providers/test/providers.test.ts similarity index 84% rename from packages/providers/test/providers.test.js rename to packages/providers/test/providers.test.ts index 93e33cce26..44b0df64af 100644 --- a/packages/providers/test/providers.test.js +++ b/packages/providers/test/providers.test.ts @@ -1,11 +1,11 @@ -const { getTransactionLastResult } = require('@near-js/utils'); -const { Worker } = require('near-workspaces'); -const { JsonRpcProvider, FailoverRpcProvider } = require('../lib'); - -const { TextEncoder } = require('util'); -global.TextEncoder = TextEncoder; +import { afterAll, beforeAll, describe, expect, jest, test } from '@jest/globals'; +import { getTransactionLastResult } from '@near-js/utils'; +import { Worker } from 'near-workspaces'; +import { TextEncoder } from 'util'; +import { FailoverRpcProvider, JsonRpcProvider } from '../src'; jest.setTimeout(20000); +global.TextEncoder = TextEncoder; ['json provider', 'fallback provider'].forEach((name) => { describe(name, () => { @@ -35,58 +35,58 @@ jest.setTimeout(20000); }); test('rpc fetch node status', async () => { - let response = await provider.status(); + const response = await provider.status(); expect(response.chain_id).toBeTruthy(); }); test('rpc fetch block info', async () => { - let stat = await provider.status(); - let height = stat.sync_info.latest_block_height - 1; - let response = await provider.block({ blockId: height }); + const stat = await provider.status(); + const height = stat.sync_info.latest_block_height - 1; + const response = await provider.block({ blockId: height }); expect(response.header.height).toEqual(height); - let sameBlock = await provider.block({ blockId: response.header.hash }); + const sameBlock = await provider.block({ blockId: response.header.hash }); expect(sameBlock.header.height).toEqual(height); - let optimisticBlock = await provider.block({ finality: 'optimistic' }); + const optimisticBlock = await provider.block({ finality: 'optimistic' }); expect(optimisticBlock.header.height - height).toBeLessThan(5); - let nearFinalBlock = await provider.block({ finality: 'near-final' }); + const nearFinalBlock = await provider.block({ finality: 'near-final' }); expect(nearFinalBlock.header.height - height).toBeLessThan(5); - let finalBlock = await provider.block({ finality: 'final' }); + const finalBlock = await provider.block({ finality: 'final' }); expect(finalBlock.header.height - height).toBeLessThan(5); }); test('rpc fetch block changes', async () => { - let stat = await provider.status(); - let height = stat.sync_info.latest_block_height - 1; - let response = await provider.blockChanges({ blockId: height }); + const stat = await provider.status(); + const height = stat.sync_info.latest_block_height - 1; + const response = await provider.blockChanges({ blockId: height }); expect(response).toMatchObject({ block_hash: expect.any(String), - changes: expect.any(Array) + changes: expect.arrayContaining([]) }); }); test('rpc fetch chunk info', async () => { - let stat = await provider.status(); - let height = stat.sync_info.latest_block_height - 1; - let response = await provider.chunk([height, 0]); + const stat = await provider.status(); + const height = stat.sync_info.latest_block_height - 1; + const response = await provider.chunk([height, 0]); expect(response.header.shard_id).toEqual(0); - let sameChunk = await provider.chunk(response.header.chunk_hash); + const sameChunk = await provider.chunk(response.header.chunk_hash); expect(sameChunk.header.chunk_hash).toEqual(response.header.chunk_hash); expect(sameChunk.header.shard_id).toEqual(0); }); test('rpc fetch validators info', async () => { - let validators = await provider.validators(null); + const validators = await provider.validators(null); expect(validators.current_validators.length).toBeGreaterThanOrEqual(1); }); test('rpc query with block_id', async () => { const stat = await provider.status(); - let block_id = stat.sync_info.latest_block_height - 1; + const block_id = stat.sync_info.latest_block_height - 1; const response = await provider.query({ block_id, @@ -137,21 +137,21 @@ jest.setTimeout(20000); }); test('json rpc gas price', async () => { - let status = await provider.status(); - let positiveIntegerRegex = /^[+]?\d+([.]\d+)?$/; + const status = await provider.status(); + const positiveIntegerRegex = /^[+]?\d+([.]\d+)?$/; - let response1 = await provider.gasPrice(status.sync_info.latest_block_height); + const response1 = await provider.gasPrice(status.sync_info.latest_block_height); expect(response1.gas_price).toMatch(positiveIntegerRegex); - let response2 = await provider.gasPrice(status.sync_info.latest_block_hash); + const response2 = await provider.gasPrice(status.sync_info.latest_block_hash); expect(response2.gas_price).toMatch(positiveIntegerRegex); - let response3 = await provider.gasPrice(); + const response3 = await provider.gasPrice(); expect(response3.gas_price).toMatch(positiveIntegerRegex); }); test('near json rpc fetch node status', async () => { - let response = await provider.status(); + const response = await provider.status(); expect(response.chain_id).toBeTruthy(); }); }); @@ -159,6 +159,7 @@ jest.setTimeout(20000); describe('json provider', () => { test('JsonRpc connection object exist without connectionInfo provided', async () => { + // @ts-expect-error test input const provider = new JsonRpcProvider(); expect(provider.connection).toStrictEqual({ url: '' }); }); @@ -280,6 +281,7 @@ test('final tx result', async () => { }, ], }; + // @ts-expect-error test input expect(getTransactionLastResult(result)).toEqual({}); }); @@ -316,6 +318,7 @@ test('final tx result with null', async () => { }, ], }; + // @ts-expect-error test input expect(getTransactionLastResult(result)).toEqual(null); }); @@ -331,6 +334,7 @@ test('json rpc get next light client block', async () => { // NOTE: This will underflow if the network used has not produced an epoch yet. If a new network // config is required, can retrieve a block a few height behind (1+buffer for indexing). If run // on a fresh network, would need to wait for blocks to be produced and indexed. + // @ts-expect-error test input const prevEpochHeight = height - protocolConfig.epoch_length; const prevBlock = await provider.block({ blockId: prevEpochHeight }); const nextBlock = await provider.nextLightClientBlock({ last_block_hash: prevBlock.header.hash }); diff --git a/packages/providers/tsconfig.cjs.json b/packages/providers/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/providers/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/providers/tsconfig.json b/packages/providers/tsconfig.json index ae42955e48..a353a73d9f 100644 --- a/packages/providers/tsconfig.json +++ b/packages/providers/tsconfig.json @@ -1,7 +1,8 @@ { - "extends": "../../tsconfig.node.json", + "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", + "lib": ["es2022", "dom"] }, "files": [ "src/index.ts" diff --git a/packages/signers/jest.config.js b/packages/signers/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/signers/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/signers/jest.config.ts b/packages/signers/jest.config.ts new file mode 100644 index 0000000000..3b66313239 --- /dev/null +++ b/packages/signers/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true, + }, + }], + }, +}; diff --git a/packages/signers/package.json b/packages/signers/package.json index b6366bcf8a..f94901b049 100644 --- a/packages/signers/package.json +++ b/packages/signers/package.json @@ -1,15 +1,16 @@ { "name": "@near-js/signers", "version": "0.1.5", - "description": "Core dependencies for the NEAR API JavaScript client", - "main": "lib/index.js", + "description": "Modules for cryptographically signing messages", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "lint:js": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc", - "lint:ts:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc --fix", - "lint:js:fix": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc --fix", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "", @@ -20,12 +21,19 @@ "@noble/hashes": "1.3.3" }, "devDependencies": { - "@types/node": "18.11.18", - "jest": "26.0.1", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "@jest/globals": "^29.7.0", + "@types/node": "20.0.0", + "build": "workspace:*", + "jest": "29.7.0", + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/signers/test/signer.test.js b/packages/signers/test/signer.test.js deleted file mode 100644 index 13e7fac671..0000000000 --- a/packages/signers/test/signer.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { InMemoryKeyStore } = require('@near-js/keystores'); - -const { InMemorySigner } = require('../lib'); - -const { TextEncoder } = require('util'); -global.TextEncoder = TextEncoder; - -test('test no key', async() => { - const signer = new InMemorySigner(new InMemoryKeyStore()); - await expect(signer.signMessage('message', 'user', 'network')) - .rejects.toThrow(/Key for user not found in network/); -}); diff --git a/packages/signers/test/signer.test.ts b/packages/signers/test/signer.test.ts new file mode 100644 index 0000000000..f810f966e3 --- /dev/null +++ b/packages/signers/test/signer.test.ts @@ -0,0 +1,14 @@ +import { expect, test } from '@jest/globals'; +import { InMemoryKeyStore } from '@near-js/keystores'; +import { TextEncoder } from 'util'; + +import { InMemorySigner } from '../src'; + +global.TextEncoder = TextEncoder; + +test('test no key', async () => { + const signer = new InMemorySigner(new InMemoryKeyStore()); + // @ts-expect-error test input + await expect(signer.signMessage('message', 'user', 'network')) + .rejects.toThrow(/Key for user not found in network/); +}); diff --git a/packages/signers/tsconfig.cjs.json b/packages/signers/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/signers/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/signers/tsconfig.json b/packages/signers/tsconfig.json index ae42955e48..5f3d7bd793 100644 --- a/packages/signers/tsconfig.json +++ b/packages/signers/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.node.json", + "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/transactions/jest.config.js b/packages/transactions/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/transactions/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/transactions/jest.config.ts b/packages/transactions/jest.config.ts new file mode 100644 index 0000000000..3b66313239 --- /dev/null +++ b/packages/transactions/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true, + }, + }], + }, +}; diff --git a/packages/transactions/package.json b/packages/transactions/package.json index cb5772d1c3..fae3df38cc 100644 --- a/packages/transactions/package.json +++ b/packages/transactions/package.json @@ -2,15 +2,15 @@ "name": "@near-js/transactions", "version": "1.2.3", "description": "Functions and data types for transactions on NEAR", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "lint:js": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc", - "lint:js:fix": "eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc --fix", - "lint:ts": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc", - "lint:ts:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc --fix", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "", @@ -20,17 +20,24 @@ "@near-js/signers": "workspace:*", "@near-js/types": "workspace:*", "@near-js/utils": "workspace:*", - "borsh": "1.0.0", - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.3.3", + "borsh": "1.0.0" }, "devDependencies": { + "@jest/globals": "^29.7.0", "@near-js/keystores": "workspace:*", - "@types/node": "18.11.18", - "jest": "26.0.1", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "@types/node": "20.0.0", + "build": "workspace:*", + "jest": "29.7.0", + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/transactions/src/action_creators.ts b/packages/transactions/src/action_creators.ts index 2fcf064126..0c0bff7c6f 100644 --- a/packages/transactions/src/action_creators.ts +++ b/packages/transactions/src/action_creators.ts @@ -25,9 +25,9 @@ import { Signature } from './signature'; */ function fullAccessKey(): AccessKey { return new AccessKey({ - nonce: 0, + nonce: 0n, permission: new AccessKeyPermission({ - fullAccess: new FullAccessPermission({}), + fullAccess: new FullAccessPermission(), }), }); } @@ -45,7 +45,7 @@ function functionCallAccessKey( allowance?: bigint ): AccessKey { return new AccessKey({ - nonce: 0, + nonce: 0n, permission: new AccessKeyPermission({ functionCall: new FunctionCallPermission({ receiverId, @@ -61,7 +61,7 @@ function functionCallAccessKey( * @returns A new action for creating a new account. */ function createAccount(): Action { - return new Action({ createAccount: new CreateAccount({}) }); + return new Action({ createAccount: new CreateAccount() }); } /** @@ -98,14 +98,14 @@ export function stringifyJsonOrBytes(args: any): Buffer { function functionCall( methodName: string, args: Uint8Array | object, - gas = BigInt(0), - deposit = BigInt(0), + gas = 0n, + deposit = 0n, stringify = stringifyJsonOrBytes, jsContract = false ): Action { if (jsContract) { return new Action({ - functionCall: new FunctionCall({ methodName, args, gas, deposit }), + functionCall: new FunctionCall({ methodName, args: args as Uint8Array, gas, deposit }), }); } @@ -124,7 +124,7 @@ function functionCall( * @param deposit The amount to be deposited along with the transfer. Default: 0. * @returns A new action for transferring funds. */ -function transfer(deposit = BigInt(0)): Action { +function transfer(deposit = 0n): Action { return new Action({ transfer: new Transfer({ deposit }) }); } @@ -134,7 +134,7 @@ function transfer(deposit = BigInt(0)): Action { * @param publicKey The public key associated with the staking action. * @returns A new action for staking tokens. */ -function stake(stake = BigInt(0), publicKey: PublicKey): Action { +function stake(stake = 0n, publicKey: PublicKey): Action { return new Action({ stake: new Stake({ stake, publicKey }) }); } diff --git a/packages/transactions/src/actions.ts b/packages/transactions/src/actions.ts index ab0e6cd609..643abebcdd 100644 --- a/packages/transactions/src/actions.ts +++ b/packages/transactions/src/actions.ts @@ -1,58 +1,126 @@ import { PublicKey } from '@near-js/crypto'; -import { Assignable } from '@near-js/types'; +import { Enum } from '@near-js/types'; import { DelegateAction } from './delegate'; import { Signature } from './signature'; -abstract class Enum { - enum: string; - - constructor(properties: any) { - if (Object.keys(properties).length !== 1) { - throw new Error('Enum can only take single value'); - } - Object.keys(properties).map((key: string) => { - (this as any)[key] = properties[key]; - this.enum = key; - }); - } -} - -export class FunctionCallPermission extends Assignable { +export class FunctionCallPermission { allowance?: bigint; receiverId: string; methodNames: string[]; + + constructor({ allowance, receiverId, methodNames }: { allowance: bigint, receiverId: string, methodNames: string[] }) { + this.allowance = allowance; + this.receiverId = receiverId; + this.methodNames = methodNames; + } } -export class FullAccessPermission extends Assignable {} +export class FullAccessPermission {} export class AccessKeyPermission extends Enum { + enum: string; functionCall?: FunctionCallPermission; fullAccess?: FullAccessPermission; + + constructor(props: any) { + super(props); + for (const [k, v] of Object.entries(props || {})) { + this[k] = v; + this.enum = k; + } + } } -export class AccessKey extends Assignable { +export class AccessKey { nonce: bigint; permission: AccessKeyPermission; + + constructor({ nonce, permission }: { nonce: bigint, permission: AccessKeyPermission }) { + this.nonce = nonce; + this.permission = permission; + } +} + + +export class CreateAccount {} +export class DeployContract { + code: Uint8Array; + + constructor({ code }: { code: Uint8Array }) { + this.code = code; + } + +} +export class FunctionCall { + methodName: string; + args: Uint8Array; + gas: bigint; + deposit: bigint; + + constructor({ methodName, args, gas, deposit }: { methodName: string, args: Uint8Array, gas: bigint, deposit: bigint }) { + this.methodName = methodName; + this.args = args; + this.gas = gas; + this.deposit = deposit; + } +} +export class Transfer { + deposit: bigint; + + constructor({ deposit }: { deposit: bigint }) { + this.deposit = deposit; + } + +} +export class Stake { + stake: bigint; + publicKey: PublicKey; + + constructor({ stake, publicKey }: { stake: bigint, publicKey: PublicKey }) { + this.stake = stake; + this.publicKey = publicKey; + } +} +export class AddKey { + publicKey: PublicKey; + accessKey: AccessKey; + + constructor({ publicKey, accessKey }: { publicKey: PublicKey, accessKey: AccessKey }) { + this.publicKey = publicKey; + this.accessKey = accessKey; + } } +export class DeleteKey { + publicKey: PublicKey; -export class IAction extends Assignable {} + constructor({ publicKey }: { publicKey: PublicKey }) { + this.publicKey = publicKey; + } +} +export class DeleteAccount { + beneficiaryId: string; -export class CreateAccount extends IAction {} -export class DeployContract extends IAction { code: Uint8Array; } -export class FunctionCall extends IAction { methodName: string; args: Uint8Array; gas: bigint; deposit: bigint; } -export class Transfer extends IAction { deposit: bigint; } -export class Stake extends IAction { stake: bigint; publicKey: PublicKey; } -export class AddKey extends IAction { publicKey: PublicKey; accessKey: AccessKey; } -export class DeleteKey extends IAction { publicKey: PublicKey; } -export class DeleteAccount extends IAction { beneficiaryId: string; } -export class SignedDelegate extends IAction { delegateAction: DelegateAction; signature: Signature; } + constructor({ beneficiaryId }: { beneficiaryId: string }) { + this.beneficiaryId = beneficiaryId; + } +} +export class SignedDelegate { + delegateAction: DelegateAction; + signature: Signature; + + constructor({ delegateAction, signature }: { delegateAction: DelegateAction, signature: Signature }) { + this.delegateAction = delegateAction; + this.signature = signature; + } +} /** * Contains a list of the valid transaction Actions available with this API * @see {@link https://nomicon.io/RuntimeSpec/Actions.html | Actions Spec} */ export class Action extends Enum { + enum: string; createAccount?: CreateAccount; deployContract?: DeployContract; functionCall?: FunctionCall; @@ -62,4 +130,12 @@ export class Action extends Enum { deleteKey?: DeleteKey; deleteAccount?: DeleteAccount; signedDelegate?: SignedDelegate; + + constructor(props: any) { + super(props); + for (const [k, v] of Object.entries(props || {})) { + this[k] = v; + this.enum = k; + } + } } diff --git a/packages/transactions/src/delegate.ts b/packages/transactions/src/delegate.ts index b78de85fff..62421fe538 100644 --- a/packages/transactions/src/delegate.ts +++ b/packages/transactions/src/delegate.ts @@ -1,5 +1,4 @@ import { PublicKey } from '@near-js/crypto'; -import { Assignable } from '@near-js/types'; import { actionCreators } from './action_creators'; import { Action } from './actions'; @@ -15,13 +14,31 @@ const { transfer, } = actionCreators; -export class DelegateAction extends Assignable { +export class DelegateAction { senderId: string; receiverId: string; actions: Array; nonce: bigint; maxBlockHeight: bigint; publicKey: PublicKey; + + constructor({ senderId, receiverId, actions, nonce, maxBlockHeight, publicKey }: + { + senderId: string, + receiverId: string, + actions: Action[], + nonce: bigint, + maxBlockHeight: bigint, + publicKey: PublicKey, + } + ) { + this.senderId = senderId; + this.receiverId = receiverId; + this.actions = actions; + this.nonce = nonce; + this.maxBlockHeight = maxBlockHeight; + this.publicKey = publicKey; + } } /** diff --git a/packages/transactions/src/prefix.ts b/packages/transactions/src/prefix.ts index 08545a0a65..ed90b95d10 100644 --- a/packages/transactions/src/prefix.ts +++ b/packages/transactions/src/prefix.ts @@ -1,5 +1,3 @@ -import { Assignable } from '@near-js/types'; - const ACTIONABLE_MESSAGE_BASE = Math.pow(2, 30); // const NON_ACTIONABLE_MESSAGE_BASE = Math.pow(2, 31); @@ -9,8 +7,13 @@ const NEP = { }; /** Base class for NEP message prefixes **/ -abstract class NEPPrefix extends Assignable { +abstract class NEPPrefix { prefix: number; + + constructor({ prefix }: { prefix: number }) { + this.prefix = prefix; + } + } /** Class for constructing prefixes on actionable (on-chain) messages **/ diff --git a/packages/transactions/src/schema.ts b/packages/transactions/src/schema.ts index 9c6306f1f3..e4c1e53447 100644 --- a/packages/transactions/src/schema.ts +++ b/packages/transactions/src/schema.ts @@ -1,5 +1,4 @@ import { PublicKey } from '@near-js/crypto'; -import { Assignable } from '@near-js/types'; import { deserialize, serialize, Schema } from 'borsh'; import { @@ -32,10 +31,10 @@ export function encodeSignedDelegate(signedDelegate: SignedDelegate) { } /** -* Borsh-encode a transaction or signed transaction into a serialized form. -* @param transaction The transaction or signed transaction object to be encoded. -* @returns A serialized representation of the input transaction. -*/ + * Borsh-encode a transaction or signed transaction into a serialized form. + * @param transaction The transaction or signed transaction object to be encoded. + * @returns A serialized representation of the input transaction. + */ export function encodeTransaction(transaction: Transaction | SignedTransaction) { const schema: Schema = transaction instanceof SignedTransaction ? SCHEMA.SignedTransaction : SCHEMA.Transaction; return serialize(schema, transaction); @@ -46,7 +45,7 @@ export function encodeTransaction(transaction: Transaction | SignedTransaction) * @param bytes Uint8Array data to be decoded */ export function decodeTransaction(bytes: Uint8Array) { - return new Transaction(deserialize(SCHEMA.Transaction, bytes)); + return new Transaction(deserialize(SCHEMA.Transaction, bytes) as Transaction); } /** @@ -54,10 +53,10 @@ export function decodeTransaction(bytes: Uint8Array) { * @param bytes Uint8Array data to be decoded */ export function decodeSignedTransaction(bytes: Uint8Array) { - return new SignedTransaction(deserialize(SCHEMA.SignedTransaction, bytes)); + return new SignedTransaction(deserialize(SCHEMA.SignedTransaction, bytes) as SignedTransaction); } -export class Transaction extends Assignable { +export class Transaction { signerId: string; publicKey: PublicKey; nonce: bigint; @@ -65,6 +64,24 @@ export class Transaction extends Assignable { actions: Action[]; blockHash: Uint8Array; + constructor({ signerId, publicKey, nonce, receiverId, actions, blockHash }: + { + signerId: string, + publicKey: PublicKey, + nonce: bigint, + receiverId: string, + actions: Action[], + blockHash: Uint8Array, + } + ) { + this.signerId = signerId; + this.publicKey = publicKey; + this.nonce = nonce; + this.receiverId = receiverId; + this.actions = actions; + this.blockHash = blockHash; + } + encode(): Uint8Array { return encodeTransaction(this); } @@ -74,11 +91,16 @@ export class Transaction extends Assignable { } } -export class SignedTransaction extends Assignable { +export class SignedTransaction { transaction: Transaction; signature: Signature; - encode(): Uint8Array{ + constructor({ transaction, signature }: { transaction: Transaction, signature: Signature}) { + this.transaction = transaction; + this.signature = signature; + } + + encode(): Uint8Array { return encodeTransaction(this); } diff --git a/packages/transactions/src/signature.ts b/packages/transactions/src/signature.ts index 46d309a3fd..e803450472 100644 --- a/packages/transactions/src/signature.ts +++ b/packages/transactions/src/signature.ts @@ -1,30 +1,43 @@ import { KeyType } from '@near-js/crypto'; -import { Assignable } from '@near-js/types'; +import { Enum } from '@near-js/types'; -class ED25519Signature extends Assignable { keyType: KeyType = KeyType.ED25519; data: Uint8Array; } -class SECP256K1Signature extends Assignable { keyType: KeyType = KeyType.SECP256K1; data: Uint8Array; } +class ED25519Signature { keyType: KeyType = KeyType.ED25519; data: Uint8Array; } +class SECP256K1Signature { keyType: KeyType = KeyType.SECP256K1; data: Uint8Array; } -export class Signature extends Assignable { +function resolveEnumKeyName(keyType: KeyType) { + switch (keyType) { + case KeyType.ED25519: { + return 'ed25519Signature'; + } + case KeyType.SECP256K1: { + return 'secp256k1Signature'; + } + default: { + throw Error(`unknown type ${keyType}`); + } + } +} + +export class Signature extends Enum { + enum: string; ed25519Signature?: ED25519Signature; secp256k1Signature?: SECP256K1Signature; - constructor({ keyType, data }: { keyType: KeyType, data: Uint8Array }) { - super({}); - if (keyType === KeyType.ED25519) { - this.ed25519Signature = { keyType, data }; - } else if (keyType === KeyType.SECP256K1) { - this.secp256k1Signature = { keyType, data }; - } + constructor(signature: { keyType: KeyType, data: Uint8Array }) { + const keyName = resolveEnumKeyName(signature.keyType); + super({ [keyName]: signature }); + this[keyName] = signature; + this.enum = keyName; } get signature() { return this.ed25519Signature || this.secp256k1Signature; } - + get signatureType(): KeyType { return this.signature.keyType; } - + get data(): Uint8Array { return this.signature.data; } diff --git a/packages/transactions/test/serialize.test.js b/packages/transactions/test/serialize.test.ts similarity index 85% rename from packages/transactions/test/serialize.test.js rename to packages/transactions/test/serialize.test.ts index 5d3be13391..1f5f801119 100644 --- a/packages/transactions/test/serialize.test.js +++ b/packages/transactions/test/serialize.test.ts @@ -1,12 +1,13 @@ -const { KeyPair, PublicKey } = require('@near-js/crypto'); -const { InMemoryKeyStore } = require('@near-js/keystores'); -const { InMemorySigner } = require('@near-js/signers'); -const { Assignable } = require('@near-js/types'); -const { baseDecode, baseEncode } = require('@near-js/utils'); -const fs = require('fs'); -const { deserialize, serialize } = require('borsh'); +import { describe, expect, test } from '@jest/globals'; +import { KeyPair, PublicKey } from '@near-js/crypto'; +import { InMemoryKeyStore } from '@near-js/keystores'; +import { InMemorySigner } from '@near-js/signers'; +import { baseDecode, baseEncode } from '@near-js/utils'; +import { deserialize, serialize } from 'borsh'; +import * as fs from 'fs'; -const { + +import { actionCreators, createTransaction, decodeSignedTransaction, @@ -14,7 +15,7 @@ const { encodeTransaction, SCHEMA, signTransaction, -} = require('../lib'); +} from '../src'; const { addKey, @@ -28,22 +29,32 @@ const { transfer, } = actionCreators; -class Test extends Assignable { +class Test { + constructor(props: any) { + for (const [k, v] of Object.entries(props || {})) { + this[k] = v; + } + } } test('serialize object', async () => { const value = new Test({ x: 255, y: 20, z: '123', q: [1, 2, 3] }); const schema = { struct: { x: 'u8', y: 'u16', z: 'string', q: { array: { type: 'u8' } } } }; - let buf = serialize(schema, value); - let new_value = new Test(deserialize(schema, buf)); + const buf = serialize(schema, value); + const new_value = new Test(deserialize(schema, buf)); + // @ts-expect-error test input expect(new_value.x).toEqual(255); + // @ts-expect-error test input expect(new_value.y.toString()).toEqual('20'); + // @ts-expect-error test input expect(new_value.z).toEqual('123'); + // @ts-expect-error test input expect(new_value.q).toEqual([1, 2, 3]); }); test('deserialize delegate', async () => { const serialized = [8, 16, 0, 0, 0, 116, 104, 101, 45, 117, 115, 101, 114, 46, 116, 101, 115, 116, 110, 101, 116, 27, 0, 0, 0, 104, 101, 108, 108, 111, 46, 110, 101, 97, 114, 45, 101, 120, 97, 109, 112, 108, 101, 115, 46, 116, 101, 115, 116, 110, 101, 116, 1, 0, 0, 0, 2, 12, 0, 0, 0, 115, 101, 116, 95, 103, 114, 101, 101, 116, 105, 110, 103, 20, 0, 0, 0, 123, 34, 103, 114, 101, 101, 116, 105, 110, 103, 34, 58, 34, 72, 101, 108, 108, 111, 34, 125, 0, 224, 87, 235, 72, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9, 120, 166, 131, 144, 0, 0, 61, 158, 123, 9, 0, 0, 0, 0, 0, 154, 156, 80, 116, 108, 65, 42, 39, 47, 253, 146, 109, 67, 106, 83, 230, 57, 183, 195, 122, 150, 6, 246, 220, 173, 35, 120, 139, 167, 94, 183, 29, 0, 41, 98, 10, 45, 51, 177, 89, 159, 190, 247, 41, 255, 243, 17, 186, 140, 168, 139, 9, 81, 33, 8, 74, 73, 85, 254, 127, 62, 54, 193, 60, 50, 235, 49, 13, 37, 152, 94, 172, 24, 198, 220, 119, 148, 99, 89, 19, 187, 251, 80, 76, 230, 77, 28, 80, 140, 133, 81, 139, 159, 62, 245, 167, 4]; + // @ts-expect-error test input const { signedDelegate: { delegateAction } } = deserialize(SCHEMA.Action, serialized); expect(delegateAction.senderId).toEqual('the-user.testnet'); expect(delegateAction.receiverId).toEqual('hello.near-examples.testnet'); @@ -54,19 +65,20 @@ test('serialize and sign multi-action tx', async () => { const keyStore = new InMemoryKeyStore(); const keyPair = KeyPair.fromString('ed25519:2wyRcSwSuHtRVmkMCGjPwnzZmQLeXLzLLyED1NDMt4BjnKgQL6tF85yBx6Jr26D2dUNeC716RBoTxntVHsegogYw'); await keyStore.setKey('test', 'test.near', keyPair); + // @ts-expect-error test input const publicKey = keyPair.publicKey; const actions = [ createAccount(), deployContract(new Uint8Array([1, 2, 3])), - functionCall('qqq', new Uint8Array([1, 2, 3]), 1000, 1000000), - transfer(123), - stake(1000000, publicKey), + functionCall('qqq', new Uint8Array([1, 2, 3]), 1000n, 1000000n), + transfer(123n), + stake(1000000n, publicKey), addKey(publicKey, functionCallAccessKey('zzz', ['www'], null)), deleteKey(publicKey), deleteAccount('123') ]; const blockHash = baseDecode('244ZQ9cgj3CQ6bWBdytfrJMuMQ1jdXLFGnr4HhvtCTnM'); - let [hash, { transaction }] = await signTransaction('123', 1, actions, blockHash, new InMemorySigner(keyStore), 'test.near', 'test'); + const [hash, { transaction }] = await signTransaction('123', 1n, actions, blockHash, new InMemorySigner(keyStore), 'test.near', 'test'); expect(baseEncode(hash)).toEqual('Fo3MJ9XzKjnKuDuQKhDAC6fra5H2UWawRejFSEpPNk3Y'); const serialized = Buffer.from(serialize(SCHEMA.Transaction, transaction)); expect(serialized.toString('hex')).toEqual('09000000746573742e6e656172000f56a5f028dfc089ec7c39c1183b321b4d8f89ba5bec9e1762803cc2491f6ef80100000000000000030000003132330fa473fd26901df296be6adc4cc4df34d040efa2435224b6986910e630c2fef608000000000103000000010203020300000071717103000000010203e80300000000000040420f00000000000000000000000000037b0000000000000000000000000000000440420f00000000000000000000000000000f56a5f028dfc089ec7c39c1183b321b4d8f89ba5bec9e1762803cc2491f6ef805000f56a5f028dfc089ec7c39c1183b321b4d8f89ba5bec9e1762803cc2491f6ef800000000000000000000030000007a7a7a010000000300000077777706000f56a5f028dfc089ec7c39c1183b321b4d8f89ba5bec9e1762803cc2491f6ef80703000000313233'); @@ -74,7 +86,7 @@ test('serialize and sign multi-action tx', async () => { function createTransferTx() { const actions = [ - transfer(1), + transfer(1n), ]; const blockHash = baseDecode('244ZQ9cgj3CQ6bWBdytfrJMuMQ1jdXLFGnr4HhvtCTnM'); return createTransaction( @@ -116,7 +128,7 @@ test('serialize and sign transfer tx', async () => { const transaction = createTransferTx(); const keyStore = await createKeyStore(); - let [, signedTx] = await signTransaction(transaction.receiverId, transaction.nonce, transaction.actions, transaction.blockHash, new InMemorySigner(keyStore), 'test.near', 'test'); + const [, signedTx] = await signTransaction(transaction.receiverId, transaction.nonce, transaction.actions, transaction.blockHash, new InMemorySigner(keyStore), 'test.near', 'test'); verifySignedTransferTx(signedTx); }); @@ -125,7 +137,7 @@ test('serialize and sign transfer tx object', async () => { const transaction = createTransferTx(); const keyStore = await createKeyStore(); - let [, signedTx] = await signTransaction(transaction, new InMemorySigner(keyStore), 'test.near', 'test'); + const [, signedTx] = await signTransaction(transaction, new InMemorySigner(keyStore), 'test.near', 'test'); verifySignedTransferTx(signedTx); }); @@ -135,6 +147,7 @@ describe('roundtrip test', () => { const testFiles = fs.readdirSync(dataDir); for (const testFile of testFiles) { if (/.+\.json$/.test(testFile)) { + // @ts-expect-error test input const testDefinition = JSON.parse(fs.readFileSync(dataDir + '/' + testFile)); test(testFile, () => { const data = Buffer.from(testDefinition.data, 'hex'); @@ -149,10 +162,10 @@ describe('roundtrip test', () => { describe('serialize and deserialize on different types of nonce', () => { const actions = [ - transfer(1), + transfer(1n), ]; const blockHash = baseDecode('244ZQ9cgj3CQ6bWBdytfrJMuMQ1jdXLFGnr4HhvtCTnM'); - const targetNonce = BigInt(1); + const targetNonce = 1n; test('number typed nonce', async () => { const transaction = createTransaction( 'test.near', @@ -160,7 +173,8 @@ describe('serialize and deserialize on different types of nonce', () => { 'whatever.near', 1, actions, - blockHash); + blockHash + ); const serialized = encodeTransaction(transaction); expect(Buffer.from(serialized).toString('hex')).toEqual('09000000746573742e6e65617200917b3d268d4b58f7fec1b150bd68d69be3ee5d4cc39855e341538465bb77860d01000000000000000d00000077686174657665722e6e6561720fa473fd26901df296be6adc4cc4df34d040efa2435224b6986910e630c2fef6010000000301000000000000000000000000000000'); const deserialized = decodeTransaction(serialized); @@ -188,7 +202,7 @@ describe('serialize and deserialize on different types of nonce', () => { 'test.near', PublicKey.fromString('Anu7LYDfpLtkP7E16LT9imXF694BdQaa9ufVkQiwTQxC'), 'whatever.near', - BigInt(1), + 1n, actions, blockHash); const serialized = encodeTransaction(transaction); diff --git a/packages/transactions/test/transaction.test.js b/packages/transactions/test/transaction.test.ts similarity index 62% rename from packages/transactions/test/transaction.test.js rename to packages/transactions/test/transaction.test.ts index c48040a46c..2efe9cbebf 100644 --- a/packages/transactions/test/transaction.test.js +++ b/packages/transactions/test/transaction.test.ts @@ -1,29 +1,30 @@ -const { actionCreators } = require('../lib'); +import { expect, test } from '@jest/globals'; +import { actionCreators } from '../src'; const { functionCall } = actionCreators; test('functionCall with already serialized args', () => { const serializedArgs = Buffer.from('{}'); - const action = functionCall('methodName', serializedArgs, BigInt(1), BigInt(2)); + const action = functionCall('methodName', serializedArgs, 1n, 2n); expect(action).toMatchObject({ functionCall: { methodName: 'methodName', args: serializedArgs, - gas: BigInt(1), - deposit: BigInt(2) + gas: 1n, + deposit: 2n } }); }); test('functionCall with non-serialized args', () => { const serializedArgs = Buffer.from('{}'); - const action = functionCall('methodName', {}, BigInt(1), BigInt(2)); + const action = functionCall('methodName', {}, 1n, 2n); expect(action).toMatchObject({ functionCall: { methodName: 'methodName', args: serializedArgs, - gas: BigInt(1), - deposit: BigInt(2) + gas: 1n, + deposit: 2n } }); }); diff --git a/packages/transactions/tsconfig.cjs.json b/packages/transactions/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/transactions/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/transactions/tsconfig.json b/packages/transactions/tsconfig.json index ae42955e48..5f3d7bd793 100644 --- a/packages/transactions/tsconfig.json +++ b/packages/transactions/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.node.json", + "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/tsconfig/base.json b/packages/tsconfig/base.json new file mode 100644 index 0000000000..f185b78038 --- /dev/null +++ b/packages/tsconfig/base.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Default", + "compilerOptions": { + "esModuleInterop": true, + "module": "es2022", + "target": "es2022", + "lib": ["es2022"], + "moduleResolution": "node", + "alwaysStrict": true, + "declaration": true, + "declarationMap": true, + "preserveSymlinks": true, + "preserveWatchOutput": true, + "pretty": false, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": false, + "noImplicitReturns": true, + "noUnusedLocals": true, + "experimentalDecorators": true, + "resolveJsonModule": true + }, + "exclude": ["node_modules"] +} diff --git a/packages/tsconfig/browser.json b/packages/tsconfig/browser.json new file mode 100644 index 0000000000..bd3546fa32 --- /dev/null +++ b/packages/tsconfig/browser.json @@ -0,0 +1,6 @@ +{ + "extends": "./base.json", + "compilerOptions": { + "lib": ["es2022", "dom"] + } +} diff --git a/packages/tsconfig/cjs.json b/packages/tsconfig/cjs.json new file mode 100644 index 0000000000..c91f19df0c --- /dev/null +++ b/packages/tsconfig/cjs.json @@ -0,0 +1,8 @@ +{ + "extends": "./base.json", + "target": "es6", + "lib": ["es6"], + "compilerOptions": { + "module": "commonjs" + } +} diff --git a/packages/tsconfig/esm.json b/packages/tsconfig/esm.json new file mode 100644 index 0000000000..fabd6a7b9a --- /dev/null +++ b/packages/tsconfig/esm.json @@ -0,0 +1,3 @@ +{ + "extends": "./base.json" +} diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json new file mode 100644 index 0000000000..f4810fc3fa --- /dev/null +++ b/packages/tsconfig/package.json @@ -0,0 +1,10 @@ +{ + "name": "tsconfig", + "version": "0.0.0", + "private": true, + "files": [ + "base.json", + "nextjs.json", + "react-library.json" + ] +} diff --git a/packages/types/package.json b/packages/types/package.json index 3a04145cf3..c522cff680 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -2,23 +2,31 @@ "name": "@near-js/types", "version": "0.2.1", "description": "TypeScript types for working with the Near JS API", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts", - "lint:fix": "eslint **/*.ts" + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --fix" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { - "@types/node": "18.11.18", - "jest": "26.0.1", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "@types/node": "20.0.0", + "build": "workspace:*", + "jest": "29.7.0", + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/types/src/assignable.ts b/packages/types/src/assignable.ts index f73132943a..96069d3701 100644 --- a/packages/types/src/assignable.ts +++ b/packages/types/src/assignable.ts @@ -1,3 +1,4 @@ +/* DEPRECATED - backward compatibility only */ export abstract class Assignable { constructor(properties: any) { Object.keys(properties).map((key: any) => { diff --git a/packages/types/src/enum.ts b/packages/types/src/enum.ts new file mode 100644 index 0000000000..c347ae9ff5 --- /dev/null +++ b/packages/types/src/enum.ts @@ -0,0 +1,15 @@ + +// TODO determine why subclassing is still necessary even though `enum` +// cannot be set in the base class or it will not be borsh-serializable +export abstract class Enum { + abstract enum: string; + + constructor(properties: any) { + if (Object.keys(properties).length !== 1) { + throw new Error('Enum can only take single value'); + } + Object.keys(properties).map((key: string) => { + (this as any)[key] = properties[key]; + }); + } +} diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 392a6af8de..b8f27f715c 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1,3 +1,4 @@ export * from './assignable'; +export * from './enum'; export * from './errors'; export * from './provider'; diff --git a/packages/types/src/provider/protocol.ts b/packages/types/src/provider/protocol.ts index 4a000df47e..c7a98235de 100644 --- a/packages/types/src/provider/protocol.ts +++ b/packages/types/src/provider/protocol.ts @@ -127,7 +127,7 @@ export interface Chunk { export interface Transaction { actions: Array; hash: string; - nonce: BigInt; + nonce: bigint; public_key: string; receiver_id: string; signature: string; diff --git a/packages/types/tsconfig.cjs.json b/packages/types/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/types/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json index ae42955e48..5f3d7bd793 100644 --- a/packages/types/tsconfig.json +++ b/packages/types/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.node.json", + "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/utils/jest.config.js b/packages/utils/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/utils/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/utils/jest.config.ts b/packages/utils/jest.config.ts new file mode 100644 index 0000000000..3b66313239 --- /dev/null +++ b/packages/utils/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true, + }, + }], + }, +}; diff --git a/packages/utils/package.json b/packages/utils/package.json index 61320c09d0..3e7aef94ad 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -2,13 +2,15 @@ "name": "@near-js/utils", "version": "0.3.0", "description": "Common methods and constants for the NEAR API JavaScript client", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "lint:ts": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc", - "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --no-eslintrc && eslint -c ../../.eslintrc.js.yml test/**/*.js --no-eslintrc --fix --no-error-on-unmatched-pattern", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", + "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", + "test": "jest" }, "keywords": [], "author": "", @@ -20,12 +22,19 @@ "mustache": "4.0.0" }, "devDependencies": { - "@types/node": "18.11.18", - "jest": "26.0.1", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "@jest/globals": "^29.7.0", + "@types/node": "20.0.0", + "build": "workspace:*", + "jest": "29.7.0", + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/utils/src/constants.ts b/packages/utils/src/constants.ts index 01b413f985..d6b0e3bea6 100644 --- a/packages/utils/src/constants.ts +++ b/packages/utils/src/constants.ts @@ -4,4 +4,4 @@ // Due to protocol changes that charge upfront for the maximum possible gas price inflation due to // full blocks, the price of max_prepaid_gas is decreased to `300 * 10**12`. // For discussion see https://github.com/nearprotocol/NEPs/issues/67 -export const DEFAULT_FUNCTION_CALL_GAS = BigInt('30000000000000'); \ No newline at end of file +export const DEFAULT_FUNCTION_CALL_GAS = 30000000000000n; \ No newline at end of file diff --git a/packages/utils/src/errors/errors.ts b/packages/utils/src/errors/errors.ts index 474e4cfac3..83725477ce 100644 --- a/packages/utils/src/errors/errors.ts +++ b/packages/utils/src/errors/errors.ts @@ -1,7 +1,3 @@ -import { Logger } from '../logger'; +import ErrorMessagesJson from './error_messages.json'; -/** @deprecated */ -export function logWarning(...args: any[]): void { - const [message, ...optionalParams] = args; - Logger.warn(message, ...optionalParams); -} +export const ErrorMessages: { [error: string]: string } = ErrorMessagesJson; diff --git a/packages/utils/src/errors/index.ts b/packages/utils/src/errors/index.ts index 4277803310..757b4441b6 100644 --- a/packages/utils/src/errors/index.ts +++ b/packages/utils/src/errors/index.ts @@ -1,4 +1,4 @@ -export { logWarning } from './errors'; +export { ErrorMessages } from './errors'; export { ServerError, formatError, diff --git a/packages/utils/src/errors/rpc_errors.ts b/packages/utils/src/errors/rpc_errors.ts index 57e73a1529..6148b8d1ee 100644 --- a/packages/utils/src/errors/rpc_errors.ts +++ b/packages/utils/src/errors/rpc_errors.ts @@ -2,7 +2,7 @@ import { TypedError } from '@near-js/types'; import Mustache from 'mustache'; import { formatNearAmount } from '../format'; -import messages from './error_messages.json'; +import { ErrorMessages } from './errors'; import schema from './rpc_error_schema.json'; const mustacheHelpers = { @@ -36,8 +36,8 @@ export function parseResultError(result: any): ServerTransactionError { } export function formatError(errorClassName: string, errorData): string { - if (typeof messages[errorClassName] === 'string') { - return Mustache.render(messages[errorClassName], { + if (typeof ErrorMessages[errorClassName] === 'string') { + return Mustache.render(ErrorMessages[errorClassName], { ...errorData, ...mustacheHelpers }); diff --git a/packages/utils/src/format.ts b/packages/utils/src/format.ts index 8e4830d545..56df34607c 100644 --- a/packages/utils/src/format.ts +++ b/packages/utils/src/format.ts @@ -8,13 +8,13 @@ export const NEAR_NOMINATION_EXP = 24; /** * Number of indivisible units in one NEAR. Derived from {@link NEAR_NOMINATION_EXP}. */ -export const NEAR_NOMINATION = BigInt(10) ** BigInt(NEAR_NOMINATION_EXP); +export const NEAR_NOMINATION = 10n ** BigInt(NEAR_NOMINATION_EXP); // Pre-calculate offsets used for rounding to different number of digits const ROUNDING_OFFSETS: bigint[] = []; -const BN10 = BigInt(10); +const BN10 = 10n; for ( - let i = 0, offset = BigInt(5); + let i = 0, offset = 5n; i < NEAR_NOMINATION_EXP; i++, offset = offset * BN10 ) { diff --git a/packages/utils/src/logger/index.ts b/packages/utils/src/logger/index.ts index 70a0a1249d..f640d8eca1 100644 --- a/packages/utils/src/logger/index.ts +++ b/packages/utils/src/logger/index.ts @@ -1,2 +1,3 @@ +export { ConsoleLogger } from './console.logger'; export { Logger } from './logger'; export type { LoggerService } from './interface'; diff --git a/packages/utils/src/logger/logger.ts b/packages/utils/src/logger/logger.ts index d528a6792d..e23ae8c2a7 100644 --- a/packages/utils/src/logger/logger.ts +++ b/packages/utils/src/logger/logger.ts @@ -10,10 +10,7 @@ const DEFAULT_LOG_LEVELS: LogLevel[] = [ 'fatal', ]; -const DEFAULT_LOGGER = - typeof process === 'object' && process.env.NEAR_NO_LOGS - ? undefined - : new ConsoleLogger(DEFAULT_LOG_LEVELS); +const DEFAULT_LOGGER = new ConsoleLogger(DEFAULT_LOG_LEVELS); /** * Used to log the library messages diff --git a/packages/utils/src/validators.ts b/packages/utils/src/validators.ts index ff167ddd61..4160f8ba02 100644 --- a/packages/utils/src/validators.ts +++ b/packages/utils/src/validators.ts @@ -29,11 +29,11 @@ function findSeatPriceForProtocolBefore49(validators: (CurrentEpochValidatorInfo throw new Error('Stakes are below seats'); } // assert stakesSum >= numSeats - let left = BigInt(1), right = stakesSum + BigInt(1); - while (left !== right - BigInt(1)) { - const mid = (left + right) / BigInt(2); + let left = 1n, right = stakesSum + 1n; + while (left !== right - 1n) { + const mid = (left + right) / 2n; let found = false; - let currentSum = BigInt(0); + let currentSum = 0n; for (let i = 0; i < stakes.length; ++i) { currentSum = currentSum + (stakes[i] / mid); if (currentSum >= num) { @@ -59,7 +59,7 @@ function findSeatPriceForProtocolAfter49(validators: (CurrentEpochValidatorInfo if (validators.length < maxNumberOfSeats) { return stakesSum * BigInt(minimumStakeRatio[0]) / BigInt(minimumStakeRatio[1]); } else { - return stakes[0] + BigInt(1); + return stakes[0] + 1n; } } diff --git a/packages/utils/test/format.test.js b/packages/utils/test/format.test.ts similarity index 94% rename from packages/utils/test/format.test.js rename to packages/utils/test/format.test.ts index 686f8b3241..adceb7be26 100644 --- a/packages/utils/test/format.test.js +++ b/packages/utils/test/format.test.ts @@ -1,6 +1,6 @@ -const { formatNearAmount, parseNearAmount, NEAR_NOMINATION } = require('../lib'); +import { expect, test } from '@jest/globals'; +import { formatNearAmount, NEAR_NOMINATION, parseNearAmount } from '../src'; -jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000; test.each` balance | fracDigits | expected @@ -59,5 +59,5 @@ test('parseNearAmount fails when parsing values with ≥25 decimal places', () = }); test('NEAR_NOMINATION value', () => { - expect(NEAR_NOMINATION).toEqual(1000000000000000000000000n) -}) + expect(NEAR_NOMINATION).toEqual(1000000000000000000000000n); +}); diff --git a/packages/utils/test/logger.test.js b/packages/utils/test/logger.test.ts similarity index 93% rename from packages/utils/test/logger.test.js rename to packages/utils/test/logger.test.ts index d9fbeea0ce..4e9f4ec9d4 100644 --- a/packages/utils/test/logger.test.js +++ b/packages/utils/test/logger.test.ts @@ -1,4 +1,6 @@ -const { Logger } = require('../lib'); +import { beforeEach, describe, expect, test } from '@jest/globals'; +import { Logger } from '../src'; + describe('logger', () => { let logs; diff --git a/packages/utils/test/rpc-errors.test.js b/packages/utils/test/rpc-errors.test.ts similarity index 84% rename from packages/utils/test/rpc-errors.test.js rename to packages/utils/test/rpc-errors.test.ts index 2f8e989f84..6ed55094de 100644 --- a/packages/utils/test/rpc-errors.test.js +++ b/packages/utils/test/rpc-errors.test.ts @@ -1,8 +1,10 @@ -const { formatError, getErrorTypeFromErrorMessage, parseRpcError, ServerError } = require('../lib'); +import { describe, expect, test } from '@jest/globals'; + +import { formatError, getErrorTypeFromErrorMessage, parseRpcError, ServerError } from '../src'; describe('rpc-errors', () => { test('test AccountAlreadyExists error', async () => { - let rpc_error = { + const rpc_error = { TxExecutionError: { ActionError: { index: 1, @@ -10,15 +12,17 @@ describe('rpc-errors', () => { } } }; - let error = parseRpcError(rpc_error); + const error = parseRpcError(rpc_error); expect(error.type === 'AccountAlreadyExists').toBe(true); + // @ts-expect-error test input expect(error.index).toBe(1); + // @ts-expect-error test input expect(error.account_id).toBe('bob.near'); expect(formatError(error.type, error)).toBe('Can\'t create a new account bob.near, because it already exists'); }); test('test ReceiverMismatch error', async () => { - let rpc_error = { + const rpc_error = { TxExecutionError: { InvalidTxError: { InvalidAccessKeyError: { @@ -30,9 +34,11 @@ describe('rpc-errors', () => { } } }; - let error = parseRpcError(rpc_error); + const error = parseRpcError(rpc_error); expect(error.type === 'ReceiverMismatch').toBe(true); + // @ts-expect-error test input expect(error.ak_receiver).toBe('test.near'); + // @ts-expect-error test input expect(error.tx_receiver).toBe('bob.near'); expect(formatError(error.type, error)).toBe( 'Wrong AccessKey used for transaction: transaction is sent to receiver_id=bob.near, but is signed with function call access key that restricted to only use with receiver_id=test.near. Either change receiver_id in your transaction or switch to use a FullAccessKey.' @@ -40,7 +46,7 @@ describe('rpc-errors', () => { }); test('test ShardCongested error', async () => { - let rpc_error = { + const rpc_error = { TxExecutionError: { InvalidTxError: { ShardCongested: { @@ -50,7 +56,7 @@ describe('rpc-errors', () => { } } }; - let error = parseRpcError(rpc_error); + const error: any = parseRpcError(rpc_error); expect(error.type === 'ShardCongested').toBe(true); expect(error.shard_id).toBe(2); expect(error.congestion_level).toBe(0.4); @@ -60,7 +66,7 @@ describe('rpc-errors', () => { }); test('test ShardStuck error', async () => { - let rpc_error = { + const rpc_error = { TxExecutionError: { InvalidTxError: { ShardStuck: { @@ -70,7 +76,7 @@ describe('rpc-errors', () => { } } }; - let error = parseRpcError(rpc_error); + const error: any = parseRpcError(rpc_error); expect(error.type === 'ShardStuck').toBe(true); expect(error.shard_id).toBe(2); expect(error.missed_chunks).toBe(5); @@ -80,7 +86,7 @@ describe('rpc-errors', () => { }); test('test ReceiptSizeExceeded error', async () => { - let rpc_error = { + const rpc_error = { TxExecutionError: { InvalidTxError: { ReceiptValidationError: { @@ -92,17 +98,17 @@ describe('rpc-errors', () => { } } }; - let error = parseRpcError(rpc_error); + const error: any = parseRpcError(rpc_error); expect(error.type === 'ReceiptSizeExceeded').toBe(true); expect(error.limit).toBe(100); expect(error.size).toBe(101); expect(formatError(error.type, error)).toBe( - '{\"type\":\"ReceiptSizeExceeded\",\"limit\":100,\"size\":101,\"kind\":{\"limit\":100,\"size\":101}}' + '{"type":"ReceiptSizeExceeded","limit":100,"size":101,"kind":{"limit":100,"size":101}}' ); }); test('test InvalidIteratorIndex error', async () => { - let rpc_error = { + const rpc_error = { TxExecutionError: { ActionError: { FunctionCallError: { @@ -113,13 +119,13 @@ describe('rpc-errors', () => { } } }; - let error = parseRpcError(rpc_error); + const error = parseRpcError(rpc_error); expect(error.type).toBe('ActionError'); - expect(formatError(error.type, error)).toBe('{\"type\":\"ActionError\",\"kind\":{\"FunctionCallError\":{\"HostError\":{\"InvalidIteratorIndex\":{\"iterator_index\":42}}}}}'); + expect(formatError(error.type, error)).toBe('{"type":"ActionError","kind":{"FunctionCallError":{"HostError":{"InvalidIteratorIndex":{"iterator_index":42}}}}}'); }); test('test ActionError::FunctionCallError::GasLimitExceeded error', async () => { - let rpc_error = { + const rpc_error = { ActionError: { 'index': 0, 'kind': { @@ -129,10 +135,10 @@ describe('rpc-errors', () => { } } }; - let error = parseRpcError(rpc_error); + const error = parseRpcError(rpc_error); expect(error.type).toBe('ActionError'); - expect(formatError(error.type, error)).toBe('{\"type\":\"ActionError\",\"index\":0,\"kind\":{\"index\":0,\"kind\":{\"FunctionCallError\":{\"HostError\":\"GasLimitExceeded\"}}}}'); + expect(formatError(error.type, error)).toBe('{"type":"ActionError","index":0,"kind":{"index":0,"kind":{"FunctionCallError":{"HostError":"GasLimitExceeded"}}}}'); }); test('test parse error object', async () => { @@ -150,13 +156,22 @@ describe('rpc-errors', () => { const err6 = 'wasm execution failed with error: MethodResolveError(MethodNotFound)'; const err7 = 'wasm execution failed with error: FunctionCallError(CompilationError(CodeDoesNotExist { account_id: "random.testnet" }))'; const err8 = 'wasm execution failed with error: FunctionCallError(MethodResolveError(MethodNotFound))'; + + // @ts-expect-error test input expect(getErrorTypeFromErrorMessage(err1)).toEqual('AccountDoesNotExist'); + // @ts-expect-error test input expect(getErrorTypeFromErrorMessage(err2)).toEqual('AccountDoesNotExist'); + // @ts-expect-error test input expect(getErrorTypeFromErrorMessage(err3)).toEqual('AccessKeyDoesNotExist'); + // @ts-expect-error test input expect(getErrorTypeFromErrorMessage(err4)).toEqual('CodeDoesNotExist'); + // @ts-expect-error test input expect(getErrorTypeFromErrorMessage(err5)).toEqual('InvalidNonce'); + // @ts-expect-error test input expect(getErrorTypeFromErrorMessage(err6)).toEqual('MethodNotFound'); + // @ts-expect-error test input expect(getErrorTypeFromErrorMessage(err7)).toEqual('CodeDoesNotExist'); + // @ts-expect-error test input expect(getErrorTypeFromErrorMessage(err8)).toEqual('MethodNotFound'); }); diff --git a/packages/utils/test/validator.test.js b/packages/utils/test/validator.test.js deleted file mode 100644 index a90c0e09cd..0000000000 --- a/packages/utils/test/validator.test.js +++ /dev/null @@ -1,37 +0,0 @@ -const { diffEpochValidators, findSeatPrice } = require('../lib'); - -test('find seat price', async () => { - expect(findSeatPrice( - [{stake: '1000000'}, {stake: '1000000'}, {stake: '100'}], 2, [1, 6250], 49 - )).toEqual(BigInt('101')); - expect(findSeatPrice( - [{stake: '1000000'}, {stake: '1000000'}, {stake: '100'}], 3, [1, 6250] - )).toEqual(BigInt('101')); - expect(findSeatPrice( - [{stake: '1000000'}, {stake: '1000000'}, {stake: '100'}], 4, [1, 6250], 49 - )).toEqual(BigInt('320')); - expect(findSeatPrice( - [{stake: '1000000'}, {stake: '1000000'}, {stake: '100'}], 4, [1, 6250], 48 - )).toEqual(BigInt('500000')); - expect(findSeatPrice( - [{stake: '1000'}, {stake: '1000'}, {stake: '200'}], 100, [1, 25] - )).toEqual(BigInt('88')); -}); - -test('diff validators', async () => { - expect(diffEpochValidators( - [{account_id: 'x', stake: '10'}], - [{ account_id: 'x', stake: '10' }] - )).toEqual({newValidators: [], removedValidators: [], changedValidators: []}); - expect(diffEpochValidators( - [{ account_id: 'x', stake: '10' }, { account_id: 'y', stake: '10' }], - [{ account_id: 'x', stake: '11' }, { account_id: 'z', stake: '11' }] - )).toEqual({ - newValidators: [{ account_id: 'z', stake: '11' }], - removedValidators: [{ account_id: 'y', stake: '10' }], - changedValidators: [{ - current: { account_id: 'x', stake: '10' }, - next: { account_id: 'x', stake: '11' } - }] - }); -}); diff --git a/packages/utils/test/validator.test.ts b/packages/utils/test/validator.test.ts new file mode 100644 index 0000000000..fffa2ee288 --- /dev/null +++ b/packages/utils/test/validator.test.ts @@ -0,0 +1,45 @@ +import { expect, test } from '@jest/globals'; +import { diffEpochValidators, findSeatPrice } from '../src'; + +test('find seat price', async () => { + expect(findSeatPrice( + // @ts-expect-error test input + [{ stake: '1000000' }, { stake: '1000000' }, { stake: '100' }], 2, [1, 6250], 49 + )).toEqual(101n); + expect(findSeatPrice( + // @ts-expect-error test input + [{ stake: '1000000' }, { stake: '1000000' }, { stake: '100' }], 3, [1, 6250] + )).toEqual(101n); + expect(findSeatPrice( + // @ts-expect-error test input + [{ stake: '1000000' }, { stake: '1000000' }, { stake: '100' }], 4, [1, 6250], 49 + )).toEqual(320n); + expect(findSeatPrice( + // @ts-expect-error test input + [{ stake: '1000000' }, { stake: '1000000' }, { stake: '100' }], 4, [1, 6250], 48 + )).toEqual(500000n); + expect(findSeatPrice( + // @ts-expect-error test input + [{ stake: '1000' }, { stake: '1000' }, { stake: '200' }], 100, [1, 25] + )).toEqual(88n); +}); + +test('diff validators', async () => { + expect(diffEpochValidators( + // @ts-expect-error test input + [{ account_id: 'x', stake: '10' }], + [{ account_id: 'x', stake: '10' }] + )).toEqual({ newValidators: [], removedValidators: [], changedValidators: [] }); + expect(diffEpochValidators( + // @ts-expect-error test input + [{ account_id: 'x', stake: '10' }, { account_id: 'y', stake: '10' }], + [{ account_id: 'x', stake: '11' }, { account_id: 'z', stake: '11' }] + )).toEqual({ + newValidators: [{ account_id: 'z', stake: '11' }], + removedValidators: [{ account_id: 'y', stake: '10' }], + changedValidators: [{ + current: { account_id: 'x', stake: '10' }, + next: { account_id: 'x', stake: '11' } + }] + }); +}); diff --git a/packages/utils/tsconfig.cjs.json b/packages/utils/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/utils/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index ae42955e48..5f3d7bd793 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.node.json", + "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/wallet-account/jest.config.js b/packages/wallet-account/jest.config.js deleted file mode 100644 index 0303334026..0000000000 --- a/packages/wallet-account/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - preset: "ts-jest", - collectCoverage: true, - projects: [ - { - displayName: "dom", - testEnvironment: "jsdom", // runs tests in a browser-like environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.dom.js?(x)", - ], - }, - { - displayName: "node", - testEnvironment: "node", // runs tests in a Node.js environment - testMatch: [ - "**/test/**/*.test.js?(x)", - "**/test/**/*.test.node.js?(x)", - ], - }, - ], -}; diff --git a/packages/wallet-account/jest.config.ts b/packages/wallet-account/jest.config.ts new file mode 100644 index 0000000000..3b66313239 --- /dev/null +++ b/packages/wallet-account/jest.config.ts @@ -0,0 +1,13 @@ +export default { + preset: 'ts-jest', + collectCoverage: true, + testEnvironment: 'node', + testRegex: "(/tests/.*|(\\.|/)(test|spec))\\.[jt]sx?$", + transform: { + '^.+\\.[tj]s$': ['ts-jest', { + tsconfig: { + allowJs: true, + }, + }], + }, +}; diff --git a/packages/wallet-account/package.json b/packages/wallet-account/package.json index e6cc155637..ace8c48088 100644 --- a/packages/wallet-account/package.json +++ b/packages/wallet-account/package.json @@ -2,11 +2,13 @@ "name": "@near-js/wallet-account", "version": "1.2.3", "description": "Dependencies for the NEAR API JavaScript client in the browser", - "main": "lib/index.js", + "main": "lib/esm/index.js", + "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", - "test": "jest test" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", + "test": "jest" }, "keywords": [], "author": "", @@ -15,21 +17,28 @@ "@near-js/accounts": "workspace:*", "@near-js/crypto": "workspace:*", "@near-js/keystores": "workspace:*", + "@near-js/providers": "workspace:*", "@near-js/signers": "workspace:*", "@near-js/transactions": "workspace:*", "@near-js/types": "workspace:*", "@near-js/utils": "workspace:*", - "@near-js/providers": "workspace:*", "borsh": "1.0.0" }, "devDependencies": { - "@types/node": "18.11.18", - "jest": "26.0.1", + "@jest/globals": "^29.7.0", + "@types/node": "20.0.0", + "build": "workspace:*", + "jest": "29.7.0", "localstorage-memory": "1.0.3", - "ts-jest": "26.5.6", - "typescript": "4.9.4" + "ts-jest": "29.1.5", + "tsconfig": "workspace:*", + "typescript": "5.4.5" }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/wallet-account/src/near.ts b/packages/wallet-account/src/near.ts index 0b614e34c9..30bef48c08 100644 --- a/packages/wallet-account/src/near.ts +++ b/packages/wallet-account/src/near.ts @@ -114,7 +114,7 @@ export class Near { if (config.masterAccount) { // TODO: figure out better way of specifiying initial balance. // Hardcoded number below must be enough to pay the gas cost to dev-deploy with near-shell for multiple times - const initialBalance = config.initialBalance ? BigInt(config.initialBalance) : BigInt('500000000000000000000000000'); + const initialBalance = config.initialBalance ? BigInt(config.initialBalance) : 500000000000000000000000000n; this.accountCreator = new LocalAccountCreator(new Account(this.connection, config.masterAccount), initialBalance); } else if (config.helperUrl) { this.accountCreator = new UrlAccountCreator(this.connection, config.helperUrl); diff --git a/packages/wallet-account/src/wallet_account.ts b/packages/wallet-account/src/wallet_account.ts index 95630033f2..ca60eed4b0 100644 --- a/packages/wallet-account/src/wallet_account.ts +++ b/packages/wallet-account/src/wallet_account.ts @@ -371,7 +371,7 @@ export class ConnectedWalletAccount extends Account { const publicKey = PublicKey.from(accessKey.public_key); // TODO: Cache & listen for nonce updates for given access key - const nonce = accessKey.access_key.nonce + BigInt(1); + const nonce = accessKey.access_key.nonce + 1n; const transaction = createTransaction(this.accountId, publicKey, receiverId, nonce, actions, blockHash); await this.walletConnection.requestSignTransactions({ transactions: [transaction], diff --git a/packages/wallet-account/test/wallet_account.js b/packages/wallet-account/test/wallet_account.js deleted file mode 100644 index bfa9302d32..0000000000 --- a/packages/wallet-account/test/wallet_account.js +++ /dev/null @@ -1,454 +0,0 @@ -const { KeyPair, PublicKey } = require('@near-js/crypto'); -const { InMemoryKeyStore } = require('@near-js/keystores'); -const { InMemorySigner } = require('@near-js/signers'); -const { baseDecode } = require('@near-js/utils'); -const { actionCreators, createTransaction, SCHEMA } = require('@near-js/transactions'); -const BN = require('bn.js'); -const { deserialize } = require('borsh'); -const localStorage = require('localstorage-memory'); -const url = require('url'); - -const { WalletConnection } = require('../lib/wallet_account'); - -const { functionCall, transfer } = actionCreators; -// If an access key has itself as receiverId and method permission add_request_and_confirm, then it is being used in a wallet with multisig contract: https://github.com/near/core-contracts/blob/671c05f09abecabe7a7e58efe942550a35fc3292/multisig/src/lib.rs#L149-L153 -const MULTISIG_HAS_METHOD = 'add_request_and_confirm'; - -let lastRedirectUrl; -let lastTransaction; -global.window = { - localStorage -}; -global.document = { - title: 'documentTitle' -}; - -let history; -let nearFake; -let walletConnection; -let keyStore = new InMemoryKeyStore(); -module.exports.createTransactions = () => { - beforeEach(() => { - keyStore.clear(); - nearFake = { - config: { - networkId: 'networkId', - contractName: 'contractId', - walletUrl: 'http://example.com/wallet', - }, - connection: { - networkId: 'networkId', - signer: new InMemorySigner(keyStore) - }, - account() { - return { - state() {} - }; - } - }; - lastRedirectUrl = null; - history = []; - Object.assign(global.window, { - location: { - href: 'http://example.com/location', - assign(url) { - lastRedirectUrl = url; - } - }, - history: { - replaceState: (state, title, url) => history.push([state, title, url]) - } - }); - walletConnection = new WalletConnection(nearFake, ''); - }); - - it('not signed in by default', () => { - expect(walletConnection.isSignedIn()).not.toBeTruthy(); - }); - - it('throws if non string appKeyPrefix', () => { - expect(() => new WalletConnection(nearFake)).toThrow(/appKeyPrefix/); - expect(() => new WalletConnection(nearFake, 1)).toThrow(/appKeyPrefix/); - expect(() => new WalletConnection(nearFake, null)).toThrow(/appKeyPrefix/); - expect(() => new WalletConnection(nearFake, undefined)).toThrow(/appKeyPrefix/); - }); - // const windowValueBefore = global.window; - - // beforeEach(() => { - // global.window = undefined; - // keyStore.clear(); - // }); - - // afterEach(() => { - // global.window = windowValueBefore; - // }); - - // it('does not throw on instantiation', () => { - // expect(() => new WalletConnection(nearFake, '')).not.toThrowError(); - // }); - - // it('throws if non string appKeyPrefix in server context', () => { - // expect(() => new WalletConnection(nearFake)).toThrow(/appKeyPrefix/); - // expect(() => new WalletConnection(nearFake, 1)).toThrow(/appKeyPrefix/); - // expect(() => new WalletConnection(nearFake, null)).toThrow(/appKeyPrefix/); - // expect(() => new WalletConnection(nearFake, undefined)).toThrow(/appKeyPrefix/); - // }); - - // it('returns an empty string as accountId', () => { - // const serverWalletConnection = new WalletConnection(nearFake, ''); - // expect(serverWalletConnection.getAccountId()).toEqual(''); - // }); - - // it('returns false as isSignedIn', () => { - // const serverWalletConnection = new WalletConnection(nearFake, ''); - // expect(serverWalletConnection.isSignedIn()).toEqual(false); - // }); - - // it('throws explicit error when calling other methods on the instance', () => { - // const serverWalletConnection = new WalletConnection(nearFake, ''); - // expect(() => serverWalletConnection.requestSignIn('signInContract', 'signInTitle', 'http://example.com/success', 'http://example.com/fail')).toThrow(/please ensure you are using WalletConnection on the browser/); - // expect(() => serverWalletConnection.requestSignInUrl('signInContract', 'signInTitle', 'http://example.com/success', 'http://example.com/fail')).toThrow(/please ensure you are using WalletConnection on the browser/); - // expect(() => serverWalletConnection.requestSignTransactions('signInContract', 'signInTitle', 'http://example.com/success', 'http://example.com/fail')).toThrow(/please ensure you are using WalletConnection on the browser/); - // expect(() => serverWalletConnection.requestSignTransactionsUrl('signInContract', 'signInTitle', 'http://example.com/success', 'http://example.com/fail')).toThrow(/please ensure you are using WalletConnection on the browser/); - // }); - - // it('can access other props on the instance', () => { - // const serverWalletConnection = new WalletConnection(nearFake, ''); - // expect(serverWalletConnection['randomValue']).toEqual(undefined); - // }); - // }); - - // describe('can request sign in', () => { - // beforeEach(() => keyStore.clear()); - - // it('V2', () => { - // return walletConnection.requestSignIn({ - // contractId: 'signInContract', - // successUrl: 'http://example.com/success', - // failureUrl: 'http://example.com/fail' - // }); - // }); - - // afterEach(async () => { - // let accounts = await keyStore.getAccounts('networkId'); - // expect(accounts).toHaveLength(1); - // expect(accounts[0]).toMatch(/^pending_key.+/); - // expect(url.parse(lastRedirectUrl, true)).toMatchObject({ - // protocol: 'http:', - // host: 'example.com', - // query: { - // contract_id: 'signInContract', - // success_url: 'http://example.com/success', - // failure_url: 'http://example.com/fail', - // public_key: (await keyStore.getKey('networkId', accounts[0])).publicKey.toString() - // } - // }); - // }); - // }); - - // it('can request sign in with methodNames', async () => { - // await walletConnection.requestSignIn({ - // contractId: 'signInContract', - // methodNames: ['hello', 'goodbye'], - // successUrl: 'http://example.com/success', - // failureUrl: 'http://example.com/fail' - // }); - - // let accounts = await keyStore.getAccounts('networkId'); - // expect(accounts).toHaveLength(1); - // expect(accounts[0]).toMatch(/^pending_key.+/); - // expect(url.parse(lastRedirectUrl, true)).toMatchObject({ - // protocol: 'http:', - // host: 'example.com', - // query: { - // contract_id: 'signInContract', - // methodNames: ['hello', 'goodbye'], - // success_url: 'http://example.com/success', - // failure_url: 'http://example.com/fail', - // public_key: (await keyStore.getKey('networkId', accounts[0])).publicKey.toString() - // } - // }); - // }); - - // it('can complete sign in', async () => { - // const keyPair = KeyPair.fromRandom('ed25519'); - // global.window.location.href = `http://example.com/location?account_id=near.account&public_key=${keyPair.publicKey}`; - // await keyStore.setKey('networkId', 'pending_key' + keyPair.publicKey, keyPair); - - // await walletConnection._completeSignInWithAccessKey(); - - // expect(await keyStore.getKey('networkId', 'near.account')).toEqual(keyPair); - // expect(localStorage.getItem('contractId_wallet_auth_key')); - // expect(history.slice(1)).toEqual([ - // [{}, 'documentTitle', 'http://example.com/location'] - // ]); - // }); - - // it('Promise until complete sign in', async () => { - // const keyPair = KeyPair.fromRandom('ed25519'); - // global.window.location.href = `http://example.com/location?account_id=near2.account&public_key=${keyPair.publicKey}`; - // await keyStore.setKey('networkId', 'pending_key' + keyPair.publicKey, keyPair); - - // const newWalletConn = new WalletConnection(nearFake, 'promise_on_complete_signin'); - - // expect(newWalletConn.isSignedIn()).toEqual(false); - // expect(await newWalletConn.isSignedInAsync()).toEqual(true); - // expect(await keyStore.getKey('networkId', 'near2.account')).toEqual(keyPair); - // expect(localStorage.getItem('promise_on_complete_signin_wallet_auth_key')); - // expect(history).toEqual([ - // [{}, 'documentTitle', 'http://example.com/location'] - // ]); - // }); - - const BLOCK_HASH = '244ZQ9cgj3CQ6bWBdytfrJMuMQ1jdXLFGnr4HhvtCTnM'; - - function setupWalletConnectionForSigning({ allKeys, accountAccessKeys }) { - walletConnection._authData = { - allKeys: allKeys, - accountId: 'signer.near' - }; - nearFake.connection.provider = { - query(params) { - if (params.request_type === 'view_account' && params.account_id === 'signer.near') { - return { }; - } - if (params.request_type === 'view_access_key_list' && params.account_id === 'signer.near') { - return { keys: accountAccessKeys }; - } - if (params.request_type === 'view_access_key' && params.account_id === 'signer.near') { - for (let accessKey of accountAccessKeys) { - if (accessKey.public_key === params.public_key) { - return accessKey; - } - } - } - fail(`Unexpected query: ${JSON.stringify(params)}`); - }, - sendTransaction(signedTransaction) { - lastTransaction = signedTransaction; - return { - transaction_outcome: { outcome: { logs: [] } }, - receipts_outcome: [] - }; - }, - block() { - return { - header: { - hash: BLOCK_HASH - } - }; - } - }; - } - // const keyPair = KeyPair.fromRandom('ed25519'); - // let transactions; - // beforeEach(() => { - // setupWalletConnectionForSigning({ - // allKeys: [ 'no_such_access_key', keyPair.publicKey.toString() ], - // accountAccessKeys: [{ - // access_key: { - // nonce: 1, - // permission: 'FullAccess' - // }, - // public_key: keyPair.publicKey.toString() - // }] - // }); - // }); - - // it('V2', async() => { - // try { - // await walletConnection.account().signAndSendTransaction({ - // receiverId: 'receiver.near', - // actions: [transfer(1)], - // walletCallbackUrl: 'http://callback.com/callback' - // }); - // fail('expected to throw'); - // } catch (e) { - // expect(e.message).toEqual('Failed to redirect to sign transaction'); - // } - // transactions = parseTransactionsFromUrl(lastRedirectUrl, 'http://callback.com/callback'); - // }); - - // afterEach(() => { - // expect(transactions).toHaveLength(1); - // expect(transactions[0]).toMatchObject({ - // signerId: 'signer.near', - // // nonce: new BN(2) - // receiverId: 'receiver.near', - // actions: [{ - // transfer: { - // // deposit: new BN(1) - // } - // }] - // }); - // expect(transactions[0].nonce.toString()).toEqual('2'); - // expect(transactions[0].actions[0].transfer.deposit.toString()).toEqual('1'); - // expect(Buffer.from(transactions[0].publicKey.data)).toEqual(Buffer.from(keyPair.publicKey.data)); - // }); - // }); - - // describe('requests transaction signing automatically when function call has attached deposit', () => { - // beforeEach(async() => { - // const localKeyPair = KeyPair.fromRandom('ed25519'); - // const walletKeyPair = KeyPair.fromRandom('ed25519'); - // setupWalletConnectionForSigning({ - // allKeys: [ walletKeyPair.publicKey.toString() ], - // accountAccessKeys: [{ - // access_key: { - // nonce: 1, - // permission: { - // FunctionCall: { - // allowance: '1000000000', - // receiver_id: 'receiver.near', - // method_names: [] - // } - // } - // }, - // public_key: localKeyPair.publicKey.toString() - // }, { - // access_key: { - // nonce: 1, - // permission: 'FullAccess' - // }, - // public_key: walletKeyPair.publicKey.toString() - // }] - // }); - // await keyStore.setKey('networkId', 'signer.near', localKeyPair); - // }); - - // it('V2', async() => { - // try { - // await walletConnection.account().signAndSendTransaction({ - // receiverId: 'receiver.near', - // actions: [functionCall('someMethod', new Uint8Array(), new BN('1'), new BN('1'))], - // walletCallbackUrl: 'http://example.com/after', - // walletMeta: 'someStuff' - // }); - // fail('expected to throw'); - // } catch (e) { - // expect(e.message).toEqual('Failed to redirect to sign transaction'); - // } - - // const transactions = parseTransactionsFromUrl(lastRedirectUrl, 'http://example.com/after'); - // expect(transactions).toHaveLength(1); - // }); - // }); - - describe('requests transaction signing with 2fa access key', () => { - beforeEach(async () => { - let localKeyPair = KeyPair.fromRandom('ed25519'); - let walletKeyPair = KeyPair.fromRandom('ed25519'); - setupWalletConnectionForSigning({ - allKeys: [ walletKeyPair.publicKey.toString() ], - accountAccessKeys: [{ - access_key: { - nonce: 1, - permission: { - FunctionCall: { - allowance: '1000000000', - receiver_id: 'signer.near', - method_names: [MULTISIG_HAS_METHOD] - } - } - }, - public_key: localKeyPair.publicKey.toString() - }] - }); - await keyStore.setKey('networkId', 'signer.near', localKeyPair); - }); - - it('V2', async () => { - try { - const res = await walletConnection.account().signAndSendTransaction({ - receiverId: 'receiver.near', - actions: [functionCall('someMethod', new Uint8Array(), new BN('1'), new BN('1'))] - }); - - // multisig access key is accepted res is object representing transaction, populated upon wallet redirect to app - expect(res).toHaveProperty('transaction_outcome'); - expect(res).toHaveProperty('receipts_outcome'); - } catch (e) { - fail('expected transaction outcome'); - } - }); - }); - - describe('fails requests transaction signing without 2fa access key', () => { - beforeEach(async () => { - const localKeyPair = KeyPair.fromRandom('ed25519'); - const walletKeyPair = KeyPair.fromRandom('ed25519'); - setupWalletConnectionForSigning({ - allKeys: [ walletKeyPair.publicKey.toString() ], - accountAccessKeys: [{ - access_key: { - nonce: 1, - permission: { - FunctionCall: { - allowance: '1000000000', - receiver_id: 'signer.near', - method_names: ['not_a_valid_2fa_method'] - } - } - }, - public_key: localKeyPair.publicKey.toString() - }] - }); - await keyStore.setKey('networkId', 'signer.near', localKeyPair); - }); - - it('V2', () => { - return expect( - walletConnection.account().signAndSendTransaction({ - receiverId: 'receiver.near', - actions: [functionCall('someMethod', new Uint8Array(), new BN('1'), new BN('1'))] - }) - ).rejects.toThrow('Cannot find matching key for transaction sent to receiver.near'); - }); - }); - - describe('can sign transaction locally when function call has no attached deposit', () => { - beforeEach(async () => { - const localKeyPair = KeyPair.fromRandom('ed25519'); - setupWalletConnectionForSigning({ - allKeys: [ /* no keys in wallet needed */ ], - accountAccessKeys: [{ - access_key: { - nonce: 1, - permission: { - FunctionCall: { - allowance: '1000000000', - receiver_id: 'receiver.near', - method_names: [] - } - } - }, - public_key: localKeyPair.publicKey.toString() - }] - }); - await keyStore.setKey('networkId', 'signer.near', localKeyPair); - }); - - it.each([ - functionCall('someMethod', new Uint8Array(), new BN('1'), new BN('0')), - functionCall('someMethod', new Uint8Array(), new BN('1')), - functionCall('someMethod', new Uint8Array()) - ])('V2', async (functionCall) => { - await walletConnection.account().signAndSendTransaction({ - receiverId: 'receiver.near', - actions: [ functionCall ] - }); - // NOTE: Transaction gets signed without wallet in this test - expect(lastTransaction).toMatchObject({ - transaction: { - receiverId: 'receiver.near', - signerId: 'signer.near', - actions: [{ - functionCall: { - methodName: 'someMethod', - } - }] - } - }); - }); - }); -} \ No newline at end of file diff --git a/packages/wallet-account/test/wallet_account.test.js b/packages/wallet-account/test/wallet_account.test.js deleted file mode 100644 index dd723aa02f..0000000000 --- a/packages/wallet-account/test/wallet_account.test.js +++ /dev/null @@ -1 +0,0 @@ -require('./wallet_account').createTransactions(); diff --git a/packages/wallet-account/test/wallet_account.test.ts b/packages/wallet-account/test/wallet_account.test.ts new file mode 100644 index 0000000000..43a6a3667a --- /dev/null +++ b/packages/wallet-account/test/wallet_account.test.ts @@ -0,0 +1,3 @@ +import { createTransactions } from './wallet_account'; + +createTransactions(); diff --git a/packages/wallet-account/test/wallet_account.ts b/packages/wallet-account/test/wallet_account.ts new file mode 100644 index 0000000000..820533eed4 --- /dev/null +++ b/packages/wallet-account/test/wallet_account.ts @@ -0,0 +1,232 @@ +import { beforeEach, describe, expect, it } from '@jest/globals'; +import { KeyPair } from '@near-js/crypto'; +import { InMemoryKeyStore } from '@near-js/keystores'; +import { InMemorySigner } from '@near-js/signers'; +import { actionCreators } from '@near-js/transactions'; +import localStorage from 'localstorage-memory'; +import { WalletConnection } from '../src'; + + +const { functionCall } = actionCreators; +// If an access key has itself as receiverId and method permission add_request_and_confirm, then it is being used in a wallet with multisig contract: https://github.com/near/core-contracts/blob/671c05f09abecabe7a7e58efe942550a35fc3292/multisig/src/lib.rs#L149-L153 +const MULTISIG_HAS_METHOD = 'add_request_and_confirm'; + +let lastTransaction; + +// @ts-ignore +global.window = { + localStorage +}; +// @ts-ignore +global.document = { + title: 'documentTitle' +}; + +let history; +let nearFake; +let walletConnection; +let keyStore = new InMemoryKeyStore(); +export const createTransactions = () => { + beforeEach(() => { + keyStore.clear(); + nearFake = { + config: { + networkId: 'networkId', + contractName: 'contractId', + walletUrl: 'http://example.com/wallet', + }, + connection: { + networkId: 'networkId', + signer: new InMemorySigner(keyStore) + }, + account() { + return { + state() {} + }; + } + }; + history = []; + Object.assign(global.window, { + location: { + href: 'http://example.com/location', + }, + history: { + replaceState: (state, title, url) => history.push([state, title, url]) + } + }); + walletConnection = new WalletConnection(nearFake, ''); + }); + + it('not signed in by default', () => { + expect(walletConnection.isSignedIn()).not.toBeTruthy(); + }); + + it('throws if non string appKeyPrefix', () => { + // @ts-ignore + expect(() => new WalletConnection(nearFake)).toThrow(/appKeyPrefix/); +// @ts-ignore + expect(() => new WalletConnection(nearFake, 1)).toThrow(/appKeyPrefix/); + expect(() => new WalletConnection(nearFake, null)).toThrow(/appKeyPrefix/); + expect(() => new WalletConnection(nearFake, undefined)).toThrow(/appKeyPrefix/); + }); + + const BLOCK_HASH = '244ZQ9cgj3CQ6bWBdytfrJMuMQ1jdXLFGnr4HhvtCTnM'; + + function setupWalletConnectionForSigning({ allKeys, accountAccessKeys }) { + walletConnection._authData = { + allKeys: allKeys, + accountId: 'signer.near' + }; + nearFake.connection.provider = { + query(params) { + if (params.request_type === 'view_account' && params.account_id === 'signer.near') { + return { }; + } + if (params.request_type === 'view_access_key_list' && params.account_id === 'signer.near') { + return { keys: accountAccessKeys }; + } + if (params.request_type === 'view_access_key' && params.account_id === 'signer.near') { + for (let accessKey of accountAccessKeys) { + if (accessKey.public_key === params.public_key) { + return accessKey; + } + } + } + throw new Error(`Unexpected query: ${JSON.stringify(params)}`); + }, + sendTransaction(signedTransaction) { + lastTransaction = signedTransaction; + return { + transaction_outcome: { outcome: { logs: [] } }, + receipts_outcome: [] + }; + }, + block() { + return { + header: { + hash: BLOCK_HASH + } + }; + } + }; + } + + describe('requests transaction signing with 2fa access key', () => { + beforeEach(async () => { + let localKeyPair = KeyPair.fromRandom('ed25519'); + let walletKeyPair = KeyPair.fromRandom('ed25519'); + setupWalletConnectionForSigning({ + // @ts-ignore + allKeys: [ walletKeyPair.publicKey.toString() ], + accountAccessKeys: [{ + access_key: { + nonce: 1, + permission: { + FunctionCall: { + allowance: '1000000000', + receiver_id: 'signer.near', + method_names: [MULTISIG_HAS_METHOD] + } + } + }, + // @ts-ignore + public_key: localKeyPair.publicKey.toString() + }] + }); + await keyStore.setKey('networkId', 'signer.near', localKeyPair); + }); + + it('V2', async () => { + const res = await walletConnection.account().signAndSendTransaction({ + receiverId: 'receiver.near', + actions: [functionCall('someMethod', new Uint8Array(), 1n, 1n)] + }); + + // multisig access key is accepted res is object representing transaction, populated upon wallet redirect to app + expect(res).toHaveProperty('transaction_outcome'); + expect(res).toHaveProperty('receipts_outcome'); + }); + }); + + describe('fails requests transaction signing without 2fa access key', () => { + beforeEach(async () => { + const localKeyPair = KeyPair.fromRandom('ed25519'); + const walletKeyPair = KeyPair.fromRandom('ed25519'); + setupWalletConnectionForSigning({ + // @ts-ignore + allKeys: [ walletKeyPair.publicKey.toString() ], + accountAccessKeys: [{ + access_key: { + nonce: 1, + permission: { + FunctionCall: { + allowance: '1000000000', + receiver_id: 'signer.near', + method_names: ['not_a_valid_2fa_method'] + } + } + }, + // @ts-ignore + public_key: localKeyPair.publicKey.toString() + }] + }); + await keyStore.setKey('networkId', 'signer.near', localKeyPair); + }); + + it('V2', () => { + return expect( + walletConnection.account().signAndSendTransaction({ + receiverId: 'receiver.near', + actions: [functionCall('someMethod', new Uint8Array(), 1n, 1n)] + }) + ).rejects.toThrow('Cannot find matching key for transaction sent to receiver.near'); + }); + }); + + describe('can sign transaction locally when function call has no attached deposit', () => { + beforeEach(async () => { + const localKeyPair = KeyPair.fromRandom('ed25519'); + setupWalletConnectionForSigning({ + allKeys: [ /* no keys in wallet needed */ ], + accountAccessKeys: [{ + access_key: { + nonce: 1, + permission: { + FunctionCall: { + allowance: '1000000000', + receiver_id: 'receiver.near', + method_names: [] + } + } + }, + // @ts-ignore + public_key: localKeyPair.publicKey.toString() + }] + }); + await keyStore.setKey('networkId', 'signer.near', localKeyPair); + }); + + it.each([ + functionCall('someMethod', new Uint8Array(), 1n, 0n), + functionCall('someMethod', new Uint8Array(), 1n), + functionCall('someMethod', new Uint8Array()) + ])('V2', async (functionCall) => { + await walletConnection.account().signAndSendTransaction({ + receiverId: 'receiver.near', + actions: [ functionCall ] + }); + // NOTE: Transaction gets signed without wallet in this test + expect(lastTransaction).toMatchObject({ + transaction: { + receiverId: 'receiver.near', + signerId: 'signer.near', + actions: [{ + functionCall: { + methodName: 'someMethod', + } + }] + } + }); + }); + }); +} \ No newline at end of file diff --git a/packages/wallet-account/test/wallet_accounts.test.node.js b/packages/wallet-account/test/wallet_accounts.test.ts similarity index 87% rename from packages/wallet-account/test/wallet_accounts.test.node.js rename to packages/wallet-account/test/wallet_accounts.test.ts index c0c1a22e3e..e4f610a842 100644 --- a/packages/wallet-account/test/wallet_accounts.test.node.js +++ b/packages/wallet-account/test/wallet_accounts.test.ts @@ -1,26 +1,24 @@ -const { KeyPair, PublicKey } = require("@near-js/crypto"); -const { InMemoryKeyStore } = require("@near-js/keystores"); -const { InMemorySigner } = require("@near-js/signers"); -const { baseDecode } = require("@near-js/utils"); -const { - actionCreators, - createTransaction, - SCHEMA, -} = require("@near-js/transactions"); -const BN = require("bn.js"); -const { deserialize } = require("borsh"); -const localStorage = require("localstorage-memory"); -const url = require("url"); - -const { WalletConnection } = require("../lib/wallet_account"); +import { afterEach, beforeEach, describe, expect, it } from '@jest/globals'; +import { KeyPair, PublicKey } from '@near-js/crypto'; +import { InMemoryKeyStore } from '@near-js/keystores'; +import { baseDecode } from '@near-js/utils'; +import { InMemorySigner } from '@near-js/signers'; +import { actionCreators, createTransaction, SCHEMA } from '@near-js/transactions'; +import { deserialize } from 'borsh'; +import localStorage from 'localstorage-memory'; +import * as url from 'url'; +import { WalletConnection } from '../src'; + const { functionCall, transfer } = actionCreators; let lastRedirectUrl; -let lastTransaction; + +// @ts-expect-error test input global.window = { localStorage }; +// @ts-expect-error test input global.document = { title: 'documentTitle' }; @@ -81,9 +79,11 @@ describe("Wallet account tests", () => { }); it("throws if non string appKeyPrefix in server context", () => { + // @ts-expect-error test input expect(() => new WalletConnection(nearFake)).toThrow( /appKeyPrefix/ ); + // @ts-expect-error invalid type check expect(() => new WalletConnection(nearFake, 1)).toThrow( /appKeyPrefix/ ); @@ -110,6 +110,7 @@ describe("Wallet account tests", () => { expect(() => serverWalletConnection.requestSignIn( "signInContract", + // @ts-expect-error test input "signInTitle", "http://example.com/success", "http://example.com/fail" @@ -120,6 +121,7 @@ describe("Wallet account tests", () => { expect(() => serverWalletConnection.requestSignInUrl( "signInContract", + // @ts-expect-error test input "signInTitle", "http://example.com/success", "http://example.com/fail" @@ -130,6 +132,7 @@ describe("Wallet account tests", () => { expect(() => serverWalletConnection.requestSignTransactions( "signInContract", + // @ts-expect-error test input "signInTitle", "http://example.com/success", "http://example.com/fail" @@ -140,6 +143,7 @@ describe("Wallet account tests", () => { expect(() => serverWalletConnection.requestSignTransactionsUrl( "signInContract", + // @ts-expect-error test input "signInTitle", "http://example.com/success", "http://example.com/fail" @@ -179,6 +183,7 @@ describe("Wallet account tests", () => { failure_url: "http://example.com/fail", public_key: ( await keyStore.getKey("networkId", accounts[0]) + // @ts-expect-error test input ).publicKey.toString(), }, }); @@ -206,6 +211,7 @@ describe("Wallet account tests", () => { failure_url: "http://example.com/fail", public_key: ( await keyStore.getKey("networkId", accounts[0]) + // @ts-expect-error test input ).publicKey.toString(), }, }); @@ -213,9 +219,11 @@ describe("Wallet account tests", () => { it("can complete sign in", async () => { const keyPair = KeyPair.fromRandom("ed25519"); + // @ts-expect-error test input global.window.location.href = `http://example.com/location?account_id=near.account&public_key=${keyPair.publicKey}`; await keyStore.setKey( "networkId", + // @ts-expect-error test input "pending_key" + keyPair.publicKey, keyPair ); @@ -233,9 +241,11 @@ describe("Wallet account tests", () => { it("Promise until complete sign in", async () => { const keyPair = KeyPair.fromRandom("ed25519"); + // @ts-expect-error test input global.window.location.href = `http://example.com/location?account_id=near2.account&public_key=${keyPair.publicKey}`; await keyStore.setKey( "networkId", + // @ts-expect-error test input "pending_key" + keyPair.publicKey, keyPair ); @@ -261,7 +271,7 @@ describe("Wallet account tests", () => { const BLOCK_HASH = "244ZQ9cgj3CQ6bWBdytfrJMuMQ1jdXLFGnr4HhvtCTnM"; const blockHash = baseDecode(BLOCK_HASH); function createTransferTx() { - const actions = [transfer(1)]; + const actions = [transfer(1n)]; return createTransaction( "test.near", PublicKey.fromString( @@ -325,6 +335,7 @@ describe("Wallet account tests", () => { }, }); const transactions = parsedUrl.query.transactions + // @ts-expect-error test input .split(",") .map((txBase64) => deserialize(SCHEMA.Transaction, Buffer.from(txBase64, "base64")) @@ -361,10 +372,9 @@ describe("Wallet account tests", () => { } } } - fail(`Unexpected query: ${JSON.stringify(params)}`); + throw new Error(`Unexpected query: ${JSON.stringify(params)}`); }, - sendTransaction(signedTransaction) { - lastTransaction = signedTransaction; + sendTransaction() { return { transaction_outcome: { outcome: { logs: [] } }, receipts_outcome: [], @@ -385,6 +395,7 @@ describe("Wallet account tests", () => { let transactions; beforeEach(() => { setupWalletConnectionForSigning({ + // @ts-expect-error test input allKeys: ["no_such_access_key", keyPair.publicKey.toString()], accountAccessKeys: [ { @@ -392,6 +403,7 @@ describe("Wallet account tests", () => { nonce: 1, permission: "FullAccess", }, + // @ts-expect-error test input public_key: keyPair.publicKey.toString(), }, ], @@ -399,18 +411,22 @@ describe("Wallet account tests", () => { }); it("V2", async () => { + let failed = true; try { await walletConnection.account().signAndSendTransaction({ receiverId: "receiver.near", - actions: [transfer(1)], + actions: [transfer(1n)], walletCallbackUrl: "http://callback.com/callback", }); - fail("expected to throw"); + failed = false; } catch (e) { expect(e.message).toEqual( "Failed to redirect to sign transaction" ); } + if (!failed) { + throw new Error("expected to throw"); + } transactions = parseTransactionsFromUrl( lastRedirectUrl, "http://callback.com/callback" @@ -435,8 +451,9 @@ describe("Wallet account tests", () => { expect( transactions[0].actions[0].transfer.deposit.toString() ).toEqual("1"); - const txData = transactions[0].publicKey.ed25519Key.data ? transactions[0].publicKey.ed25519Key.data : transactions[0].publicKey.secp256k1Key.data; - const keyPairData = keyPair.publicKey.ed25519Key.data ? keyPair.publicKey.ed25519Key.data : keyPair.publicKey.secp256k1Key.data; + const txData = transactions[0].publicKey.ed25519Key.data ? transactions[0].publicKey.ed25519Key.data : transactions[0].publicKey.secp256k1Key.data; + const publicKey = keyPair.getPublicKey(); + const keyPairData = publicKey.ed25519Key.data ? publicKey.ed25519Key.data : publicKey.secp256k1Key.data; expect(Buffer.from(txData)).toEqual( Buffer.from(keyPairData) ); @@ -448,6 +465,7 @@ describe("Wallet account tests", () => { const localKeyPair = KeyPair.fromRandom("ed25519"); const walletKeyPair = KeyPair.fromRandom("ed25519"); setupWalletConnectionForSigning({ + // @ts-expect-error test input allKeys: [walletKeyPair.publicKey.toString()], accountAccessKeys: [ { @@ -461,6 +479,7 @@ describe("Wallet account tests", () => { }, }, }, + // @ts-expect-error test input public_key: localKeyPair.publicKey.toString(), }, { @@ -468,6 +487,7 @@ describe("Wallet account tests", () => { nonce: 1, permission: "FullAccess", }, + // @ts-expect-error test input public_key: walletKeyPair.publicKey.toString(), }, ], @@ -476,6 +496,7 @@ describe("Wallet account tests", () => { }); it("V2", async () => { + let failed = true; try { await walletConnection.account().signAndSendTransaction({ receiverId: "receiver.near", @@ -483,20 +504,24 @@ describe("Wallet account tests", () => { functionCall( "someMethod", new Uint8Array(), - new BN("1"), - new BN("1") + 1n, + 1n ), ], walletCallbackUrl: "http://example.com/after", walletMeta: "someStuff", }); - fail("expected to throw"); + failed = false; } catch (e) { expect(e.message).toEqual( "Failed to redirect to sign transaction" ); } + if (!failed) { + throw new Error("expected to throw"); + } + const transactions = parseTransactionsFromUrl( lastRedirectUrl, "http://example.com/after" diff --git a/packages/wallet-account/tsconfig.cjs.json b/packages/wallet-account/tsconfig.cjs.json new file mode 100644 index 0000000000..83abd57c4f --- /dev/null +++ b/packages/wallet-account/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/wallet-account/tsconfig.json b/packages/wallet-account/tsconfig.json index cd1fd28f0a..c228e5cdfe 100644 --- a/packages/wallet-account/tsconfig.json +++ b/packages/wallet-account/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.browser.json", + "extends": "tsconfig/browser.json", "compilerOptions": { "preserveSymlinks": false, - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2ef65e6113..f2be411fb0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,7 +1,7 @@ lockfileVersion: '9.0' settings: - autoInstallPeers: false + autoInstallPeers: true excludeLinksFromLockfile: false overrides: @@ -19,20 +19,20 @@ importers: specifier: 2.24.4 version: 2.24.4 '@commitlint/cli': - specifier: 17.0.3 - version: 17.0.3 + specifier: 19.3.0 + version: 19.3.0(@types/node@20.5.1)(typescript@5.4.5) '@commitlint/config-conventional': - specifier: 17.0.3 - version: 17.0.3 + specifier: 19.2.2 + version: 19.2.2 '@typescript-eslint/eslint-plugin': - specifier: 5.31.0 - version: 5.31.0(@typescript-eslint/parser@5.31.0(eslint@8.20.0)(typescript@4.9.4))(eslint@8.20.0)(typescript@4.9.4) + specifier: 6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.20.0)(typescript@5.4.5))(eslint@8.20.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: 5.31.0 - version: 5.31.0(eslint@8.20.0)(typescript@4.9.4) + specifier: 6.21.0 + version: 6.21.0(eslint@8.20.0)(typescript@5.4.5) commitlint: - specifier: 17.0.3 - version: 17.0.3 + specifier: 19.3.0 + version: 19.3.0(@types/node@20.5.1)(typescript@5.4.5) eslint: specifier: 8.20.0 version: 8.20.0 @@ -40,17 +40,20 @@ importers: specifier: 7.0.4 version: 7.0.4 rimraf: - specifier: 3.0.2 - version: 3.0.2 + specifier: 6.0.1 + version: 6.0.1 + tsconfig: + specifier: workspace:* + version: link:packages/tsconfig turbo: specifier: 1.4.5 version: 1.4.5 typedoc: - specifier: 0.25.3 - version: 0.25.3(typescript@4.9.4) + specifier: 0.25.13 + version: 0.25.13(typescript@5.4.5) typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/accounts: dependencies: @@ -72,6 +75,9 @@ importers: '@near-js/utils': specifier: workspace:* version: link:../utils + '@noble/hashes': + specifier: 1.3.3 + version: 1.3.3 borsh: specifier: 1.0.0 version: 1.0.0 @@ -81,6 +87,9 @@ importers: is-my-json-valid: specifier: ^2.20.6 version: 2.20.6 + isomorphic-unfetch: + specifier: ^3.1.0 + version: 3.1.0(encoding@0.1.13) lru_map: specifier: 0.4.1 version: 0.4.1 @@ -88,30 +97,48 @@ importers: specifier: 0.1.1 version: 0.1.1 devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 '@near-js/keystores': specifier: workspace:* version: link:../keystores + '@types/json-schema': + specifier: ^7.0.15 + version: 7.0.15 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 bs58: specifier: 4.0.0 version: 4.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) near-hello: specifier: 0.5.1 version: 0.5.1 near-workspaces: specifier: 3.5.0 version: 3.5.0(encoding@0.1.13) + node-fetch: + specifier: 2.6.7 + version: 2.6.7(encoding@0.1.13) + semver: + specifier: 7.1.1 + version: 7.1.1 ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/biometric-ed25519: dependencies: @@ -139,6 +166,9 @@ importers: buffer: specifier: 6.0.3 version: 6.0.3 + build: + specifier: workspace:* + version: link:../build cbor-js: specifier: ^0.1.0 version: 0.1.0 @@ -146,12 +176,20 @@ importers: specifier: 3.4.1 version: 3.4.1 devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) + ts-jest: + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + + packages/build: {} packages/cookbook: dependencies: @@ -201,18 +239,30 @@ importers: specifier: 5.0.0 version: 5.0.0 devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 + '@noble/hashes': + specifier: ^1.4.0 + version: 1.4.0 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/iframe-rpc: dependencies: @@ -223,6 +273,9 @@ importers: '@types/node': specifier: 18.11.18 version: 18.11.18 + build: + specifier: workspace:* + version: link:../build packages/keystores: dependencies: @@ -233,18 +286,27 @@ importers: specifier: workspace:* version: link:../types devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/keystores-browser: dependencies: @@ -255,15 +317,27 @@ importers: specifier: workspace:* version: link:../keystores devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.5.1)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) + localstorage-memory: + specifier: 1.0.3 + version: 1.0.3 ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.5.1)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/keystores-node: dependencies: @@ -274,18 +348,30 @@ importers: specifier: workspace:* version: link:../keystores devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) + rimraf: + specifier: ^6.0.1 + version: 6.0.1 ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/near-api-js: dependencies: @@ -347,33 +433,18 @@ importers: '@types/node': specifier: 18.11.18 version: 18.11.18 - browserify: - specifier: 16.2.3 - version: 16.2.3 bs58: specifier: 4.0.0 version: 4.0.0 - bundlewatch: - specifier: 0.3.1 - version: 0.3.1 concurrently: specifier: 7.3.0 version: 7.3.0 - danger: - specifier: 11.1.1 - version: 11.1.1(encoding@0.1.13) - danger-plugin-yarn: - specifier: 1.3.2 - version: 1.3.2 in-publish: specifier: 2.0.0 version: 2.0.0 jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - localstorage-memory: - specifier: 1.0.3 - version: 1.0.3 + specifier: 29.7.0 + version: 29.7.0(@types/node@18.11.18)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) near-hello: specifier: 0.5.1 version: 0.5.1 @@ -381,17 +452,14 @@ importers: specifier: 3.5.0 version: 3.5.0(encoding@0.1.13) rimraf: - specifier: 3.0.2 - version: 3.0.2 + specifier: ^6.0.1 + version: 6.0.1 semver: specifier: 7.1.1 version: 7.1.1 ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) - uglifyify: - specifier: 5.0.1 - version: 5.0.1 + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@18.11.18)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)))(typescript@5.4.5) packages/providers: dependencies: @@ -407,29 +475,41 @@ importers: borsh: specifier: 1.0.0 version: 1.0.0 - http-errors: - specifier: 1.7.2 - version: 1.7.2 + exponential-backoff: + specifier: ^3.1.1 + version: 3.1.1 + isomorphic-unfetch: + specifier: ^3.1.0 + version: 3.1.0(encoding@0.1.13) optionalDependencies: node-fetch: specifier: 2.6.7 version: 2.6.7(encoding@0.1.13) devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) near-workspaces: specifier: 3.5.0 version: 3.5.0(encoding@0.1.13) ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/signers: dependencies: @@ -443,18 +523,27 @@ importers: specifier: 1.3.3 version: 1.3.3 devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/transactions: dependencies: @@ -477,36 +566,53 @@ importers: specifier: 1.0.0 version: 1.0.0 devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 '@near-js/keystores': specifier: workspace:* version: link:../keystores '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 + + packages/tsconfig: {} packages/types: devDependencies: '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/utils: dependencies: @@ -523,18 +629,27 @@ importers: specifier: 4.0.0 version: 4.0.0 devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages/wallet-account: dependencies: @@ -566,108 +681,113 @@ importers: specifier: 1.0.0 version: 1.0.0 devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.0.0 + version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: - specifier: 26.0.1 - version: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + specifier: 29.7.0 + version: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) localstorage-memory: specifier: 1.0.3 version: 1.0.3 ts-jest: - specifier: 26.5.6 - version: 26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4) + specifier: 29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.4.5 + version: 5.4.5 packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.24.2': - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.4': - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + '@babel/compat-data@7.24.7': + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.4': - resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} + '@babel/core@7.24.7': + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.4': - resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} + '@babel/generator@7.24.7': + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.23.6': - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + '@babel/helper-compilation-targets@7.24.7': + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.3': - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.23.3': - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + '@babel/helper-module-transforms@7.24.7': + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.24.0': - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + '@babel/helper-plugin-utils@7.24.7': + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.1': - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + '@babel/helper-string-parser@7.24.7': + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + '@babel/helper-validator-option@7.24.7': + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.4': - resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + '@babel/helpers@7.24.7': + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.2': - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.4': - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} engines: {node: '>=6.0.0'} hasBin: true @@ -696,6 +816,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -732,20 +858,26 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.24.4': - resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.24.7': + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} engines: {node: '>=6.9.0'} - '@babel/template@7.24.0': - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + '@babel/template@7.24.7': + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.1': - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + '@babel/traverse@7.24.7': + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -842,84 +974,89 @@ packages: '@changesets/write@0.2.3': resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} - '@cnakazawa/watch@1.0.4': - resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} - engines: {node: '>=0.1.95'} + '@commitlint/cli@19.3.0': + resolution: {integrity: sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g==} + engines: {node: '>=v18'} hasBin: true - '@commitlint/cli@17.0.3': - resolution: {integrity: sha512-oAo2vi5d8QZnAbtU5+0cR2j+A7PO8zuccux65R/EycwvsZrDVyW518FFrnJK2UQxbRtHFFIG+NjQ6vOiJV0Q8A==} - engines: {node: '>=v14'} - hasBin: true - - '@commitlint/config-conventional@17.0.3': - resolution: {integrity: sha512-HCnzTm5ATwwwzNVq5Y57poS0a1oOOcd5pc1MmBpLbGmSysc4i7F/++JuwtdFPu16sgM3H9J/j2zznRLOSGVO2A==} - engines: {node: '>=v14'} + '@commitlint/config-conventional@19.2.2': + resolution: {integrity: sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==} + engines: {node: '>=v18'} - '@commitlint/config-validator@17.8.1': - resolution: {integrity: sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==} - engines: {node: '>=v14'} + '@commitlint/config-validator@19.0.3': + resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==} + engines: {node: '>=v18'} - '@commitlint/ensure@17.8.1': - resolution: {integrity: sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==} - engines: {node: '>=v14'} + '@commitlint/ensure@19.0.3': + resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==} + engines: {node: '>=v18'} - '@commitlint/execute-rule@17.8.1': - resolution: {integrity: sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==} - engines: {node: '>=v14'} + '@commitlint/execute-rule@19.0.0': + resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} + engines: {node: '>=v18'} - '@commitlint/format@17.8.1': - resolution: {integrity: sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==} - engines: {node: '>=v14'} + '@commitlint/format@19.3.0': + resolution: {integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==} + engines: {node: '>=v18'} - '@commitlint/is-ignored@17.8.1': - resolution: {integrity: sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==} - engines: {node: '>=v14'} + '@commitlint/is-ignored@19.2.2': + resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==} + engines: {node: '>=v18'} - '@commitlint/lint@17.8.1': - resolution: {integrity: sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==} - engines: {node: '>=v14'} + '@commitlint/lint@19.2.2': + resolution: {integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==} + engines: {node: '>=v18'} - '@commitlint/load@17.8.1': - resolution: {integrity: sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==} - engines: {node: '>=v14'} + '@commitlint/load@19.2.0': + resolution: {integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==} + engines: {node: '>=v18'} - '@commitlint/message@17.8.1': - resolution: {integrity: sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==} - engines: {node: '>=v14'} + '@commitlint/message@19.0.0': + resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==} + engines: {node: '>=v18'} - '@commitlint/parse@17.8.1': - resolution: {integrity: sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==} - engines: {node: '>=v14'} + '@commitlint/parse@19.0.3': + resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} + engines: {node: '>=v18'} - '@commitlint/read@17.8.1': - resolution: {integrity: sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==} - engines: {node: '>=v14'} + '@commitlint/read@19.2.1': + resolution: {integrity: sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw==} + engines: {node: '>=v18'} - '@commitlint/resolve-extends@17.8.1': - resolution: {integrity: sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==} - engines: {node: '>=v14'} + '@commitlint/resolve-extends@19.1.0': + resolution: {integrity: sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==} + engines: {node: '>=v18'} - '@commitlint/rules@17.8.1': - resolution: {integrity: sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==} - engines: {node: '>=v14'} + '@commitlint/rules@19.0.3': + resolution: {integrity: sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==} + engines: {node: '>=v18'} - '@commitlint/to-lines@17.8.1': - resolution: {integrity: sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==} - engines: {node: '>=v14'} + '@commitlint/to-lines@19.0.0': + resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==} + engines: {node: '>=v18'} - '@commitlint/top-level@17.8.1': - resolution: {integrity: sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==} - engines: {node: '>=v14'} + '@commitlint/top-level@19.0.0': + resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==} + engines: {node: '>=v18'} - '@commitlint/types@17.8.1': - resolution: {integrity: sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==} - engines: {node: '>=v14'} + '@commitlint/types@19.0.3': + resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} + engines: {node: '>=v18'} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.10.1': + resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/eslintrc@1.4.1': resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -930,9 +1067,15 @@ packages: '@humanwhocodes/config-array@0.9.5': resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/object-schema@1.2.1': resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + deprecated: Use @eslint/object-schema instead + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -942,49 +1085,71 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@26.6.2': - resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} - engines: {node: '>= 10.14.2'} + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/core@26.6.3': - resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} - engines: {node: '>= 10.14.2'} + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/environment@26.6.2': - resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} - engines: {node: '>= 10.14.2'} + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/fake-timers@26.6.2': - resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} - engines: {node: '>= 10.14.2'} + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/globals@26.6.2': - resolution: {integrity: sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==} - engines: {node: '>= 10.14.2'} + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - '@jest/reporters@26.6.2': - resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} - engines: {node: '>= 10.14.2'} + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/source-map@26.6.2': - resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} - engines: {node: '>= 10.14.2'} + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/test-result@26.6.2': - resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} - engines: {node: '>= 10.14.2'} + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/test-sequencer@26.6.3': - resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} - engines: {node: '>= 10.14.2'} + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/transform@26.6.2': - resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} - engines: {node: '>= 10.14.2'} + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/types@26.6.2': - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} @@ -1057,6 +1222,10 @@ packages: resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} engines: {node: '>= 16'} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1069,48 +1238,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@octokit/auth-token@2.5.0': - resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} - - '@octokit/core@3.6.0': - resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} - - '@octokit/endpoint@6.0.12': - resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} - - '@octokit/graphql@4.8.0': - resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} - - '@octokit/openapi-types@12.11.0': - resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} - - '@octokit/plugin-paginate-rest@2.21.3': - resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} - peerDependencies: - '@octokit/core': '>=2' - - '@octokit/plugin-request-log@1.0.4': - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/plugin-rest-endpoint-methods@5.16.2': - resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/request-error@2.1.0': - resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} - - '@octokit/request@5.6.3': - resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} - - '@octokit/rest@18.12.0': - resolution: {integrity: sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==} - - '@octokit/types@6.41.0': - resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} - '@peculiar/asn1-schema@2.3.8': resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} @@ -1122,24 +1249,27 @@ packages: resolution: {integrity: sha512-YBcMfqNSwn3SujUJvAaySy5tlYbYm6tVt9SKoXu8BaTdKGROiJDgPR3TXpZdAKUfklzm3lRapJEAltiMQtBgZg==} engines: {node: '>=10.12.0'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@sinonjs/commons@1.8.6': - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - '@sinonjs/fake-timers@6.0.1': - resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==} + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - '@tootallnate/once@1.1.2': - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -1161,12 +1291,15 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.5': - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} '@types/cacheable-request@6.0.3': resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + '@types/conventional-commits-parser@5.0.0': + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -1203,142 +1336,114 @@ packages: '@types/node@18.11.18': resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + '@types/node@20.0.0': + resolution: {integrity: sha512-cD2uPTDnQQCVpmRefonO98/PPijuOnnEy5oytWJFPY1N9aJCz2wJ5kSGWO+zJoed2cY2JxQh6yBuUq4vIn61hw==} + '@types/node@20.5.1': resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/prettier@2.7.3': - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} '@types/semver@6.2.7': resolution: {integrity: sha512-blctEWbzUFzQx799RZjzzIdBJOXmE37YYEyDtKkx5Dg+V7o/zyyAxLPiI98A2jdTtDgxZleMdfV+7p8WbRJ1OQ==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@15.0.19': - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - '@typescript-eslint/eslint-plugin@5.31.0': - resolution: {integrity: sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/eslint-plugin@6.21.0': + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@5.31.0': - resolution: {integrity: sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@5.31.0': - resolution: {integrity: sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/type-utils@5.31.0': - resolution: {integrity: sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/type-utils@6.21.0': + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@5.31.0': - resolution: {integrity: sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/typescript-estree@5.31.0': - resolution: {integrity: sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@5.31.0': - resolution: {integrity: sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 - '@typescript-eslint/visitor-keys@5.31.0': - resolution: {integrity: sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - acorn-globals@6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-node@1.8.2: - resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} - - acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@4.3.0: - resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} - engines: {node: '>= 4.0.0'} - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.16.0: + resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -1352,6 +1457,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + ansi-sequence-parser@1.1.1: resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} @@ -1363,8 +1472,13 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - anymatch@2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -1379,18 +1493,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - - arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - - arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} @@ -1402,10 +1504,6 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} @@ -1421,61 +1519,36 @@ packages: asn1-parser@1.1.8: resolution: {integrity: sha512-3aYtVA7yzCK7r+qbBzpvzcq53kz7IRfGWTObbAGZieTj+By8wbSGSncZO7TztQ5UXrHELCesUIlJGD4JJcUAsA==} - asn1.js@4.10.1: - resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} - asn1js@3.0.5: resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} engines: {node: '>=12.0.0'} - assert@1.5.1: - resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} - - assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - - async-retry@1.2.3: - resolution: {integrity: sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@0.19.2: - resolution: {integrity: sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==} - deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 - - babel-jest@26.6.3: - resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} - engines: {node: '>= 10.14.2'} + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.8.0 babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} - babel-plugin-jest-hoist@26.6.2: - resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} - engines: {node: '>= 10.14.2'} + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} babel-preset-current-node-syntax@1.0.1: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 - babel-preset-jest@26.6.2: - resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} - engines: {node: '>= 10.14.2'} + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 @@ -1497,13 +1570,6 @@ packages: resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} engines: {node: '>=6.0.0'} - base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - - before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -1526,12 +1592,8 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} breakword@1.0.6: @@ -1540,45 +1602,8 @@ packages: brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - browser-pack@6.1.0: - resolution: {integrity: sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==} - hasBin: true - - browser-process-hrtime@1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - - browser-resolve@1.11.3: - resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} - - browser-resolve@2.0.0: - resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - - browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - - browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - - browserify-sign@4.2.3: - resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} - engines: {node: '>= 0.12'} - - browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - - browserify@16.2.3: - resolution: {integrity: sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ==} - engines: {node: '>= 0.8'} - hasBin: true - - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1595,41 +1620,16 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - builtin-status-codes@3.0.0: - resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - - bundlewatch@0.3.1: - resolution: {integrity: sha512-yVuOHljZCxRrDgujRn7GED+7Ms8G7hQJmP8vtQWIquDwDfocJH6RdRX42mqDWhMXGdsT3qhB1GYJ5q5zFZ0AEA==} - engines: {node: '>=10'} - hasBin: true - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - bytestreamjs@2.0.1: resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} engines: {node: '>=6.0.0'} - cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} @@ -1638,9 +1638,6 @@ packages: resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} engines: {node: '>=8'} - cached-path-relative@1.1.0: - resolution: {integrity: sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==} - call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -1665,12 +1662,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001612: - resolution: {integrity: sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==} - - capture-exit@2.0.0: - resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} - engines: {node: 6.* || 8.* || >= 10.*} + caniuse-lite@1.0.30001636: + resolution: {integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==} cbor-extract@2.2.0: resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} @@ -1694,6 +1687,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -1705,25 +1702,12 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - ci-env@1.17.0: - resolution: {integrity: sha512-NtTjhgSEqv4Aj90TUYHQLxHdnCPXnjdtuGG1X8lTfp/JqeXTdw0FTWl/vUAPuvbWZTF8QVpv6ASe/XacE+7R2A==} - - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - - cjs-module-lexer@0.6.0: - resolution: {integrity: sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==} - - class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} + cjs-module-lexer@1.3.1: + resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -1746,10 +1730,6 @@ packages: collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -1763,96 +1743,48 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - colors@1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - - combine-source-map@0.8.0: - resolution: {integrity: sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} - - commitlint@17.0.3: - resolution: {integrity: sha512-/KbIyrd6nmrRvu5zj8KKrjoC4z5V6hBmYphHgCFu75kPjHODg1XTtGFgbnb0AdSGBHlGMzmDvykO7ETs8wBKFg==} - engines: {node: '>=v14'} + commitlint@19.3.0: + resolution: {integrity: sha512-B8eUVQCjz+1ZAjR3LC3+vzKg7c4/qN4QhSxkjp0u0v7Pi79t9CsnGAluvveKmFh56e885zgToPL5ax+l8BHTPg==} + engines: {node: '>=v18'} hasBin: true compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - component-emitter@1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - concurrently@7.3.0: resolution: {integrity: sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA==} engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} hasBin: true - console-browserify@1.2.0: - resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} - constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} - conventional-changelog-angular@6.0.0: - resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} - engines: {node: '>=14'} - - conventional-changelog-conventionalcommits@5.0.0: - resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} - engines: {node: '>=10'} - - conventional-commits-parser@4.0.0: - resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} - engines: {node: '>=14'} + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} hasBin: true - convert-source-map@1.1.3: - resolution: {integrity: sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==} - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - - core-js@3.37.0: - resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig-typescript-loader@4.4.0: - resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} - engines: {node: '>=v14.21.3'} + cosmiconfig-typescript-loader@5.0.0: + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} peerDependencies: '@types/node': '*' - cosmiconfig: '>=7' - ts-node: '>=10' + cosmiconfig: '>=8.2' typescript: '>=4' - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -1860,14 +1792,10 @@ packages: typescript: optional: true - create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -1875,27 +1803,10 @@ packages: cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - - cssom@0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - - cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} @@ -1909,25 +1820,9 @@ packages: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} - danger-plugin-yarn@1.3.2: - resolution: {integrity: sha512-g+7guMig986giNyUxM15sFH32HKBGzHcKHMrAojvGOU9lpB53KwxX5yrYnokRlfW0aSaAwm9GCInXTQc9MoW3w==} - engines: {node: '>=4.0.0'} - - danger@11.1.1: - resolution: {integrity: sha512-kQX1/Rggut/KFgArOloAdw6paB7hkoznRaUhpPFKVHKRgc6FtlhC8zpb480jVE71Z6eI7rrHVDGEYLv8x96yyA==} - engines: {node: '>=14.13.1'} - hasBin: true - - dargs@7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} - - dash-ast@1.0.0: - resolution: {integrity: sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==} - - data-urls@2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} @@ -1944,65 +1839,39 @@ packages: dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - date-fns@1.30.1: - resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} - date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: supports-color: optional: true - debug@3.1.0: - resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2025,25 +1894,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - - define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - - define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - - defined@1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -2052,16 +1902,6 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - - deps-sort@2.0.1: - resolution: {integrity: sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==} - hasBin: true - - des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -2074,22 +1914,14 @@ packages: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - detective@5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} - hasBin: true - - diff-sequences@26.6.2: - resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} - engines: {node: '>= 10.14.2'} + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2098,15 +1930,6 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} - domain-browser@1.2.0: - resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} - engines: {node: '>=0.4', npm: '>=1.2'} - - domexception@2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - deprecated: Use your platform's native DOMException instead - dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2115,28 +1938,25 @@ packages: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} - duplexer2@0.1.4: - resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.4.746: - resolution: {integrity: sha512-jeWaIta2rIG2FzHaYIhSuVWqC6KJYo7oSBX4Jv7g+aVujKztfvdpf+n6MGwZdC5hQXbax4nntykLH2juIQrfPg==} + electron-to-chromium@1.4.807: + resolution: {integrity: sha512-kSmJl2ZwhNf/bcIuCH/imtNOKlpkLDn2jqT5FJ+/0CXjhnFaOa9cOe9gHKKy71eM49izwuQjZhKk+lWQ1JxB7A==} elliptic@6.5.5: resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} - emittery@0.7.2: - resolution: {integrity: sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==} - engines: {node: '>=10'} + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} @@ -2147,6 +1967,10 @@ packages: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -2177,12 +2001,6 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -2199,15 +2017,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2248,10 +2057,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -2260,62 +2065,28 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - events@2.1.0: - resolution: {integrity: sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==} - engines: {node: '>=0.4.x'} - events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - - exec-sh@0.3.6: - resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} - - execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - - execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - - expect@26.6.2: - resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} - engines: {node: '>= 10.14.2'} + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - - extend@1.3.0: - resolution: {integrity: sha512-hT3PRBs1qm4P8g2keUBZ9bPaFHAcS78o5aCd9WhFTluHZZgBEkI08R+zYrpRpImyRTH+dw7IlqxrOp9iartTkw==} + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -2324,10 +2095,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2335,18 +2102,12 @@ packages: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} - fast-json-patch@3.1.1: - resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} - fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -2361,18 +2122,10 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -2381,6 +2134,10 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} @@ -2391,41 +2148,17 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - follow-redirects@1.5.10: - resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==} - engines: {node: '>=4.0'} - for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - - form-data@2.5.1: - resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} - engines: {node: '>= 0.12'} - - form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - - fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - - fs-exists-sync@0.1.0: - resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} - engines: {node: '>=0.10.0'} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -2469,9 +2202,6 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-assigned-identifiers@1.2.0: - resolution: {integrity: sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==} - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -2484,14 +2214,6 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - get-stdin@6.0.0: - resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} - engines: {node: '>=4'} - - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -2500,28 +2222,19 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - - git-config-path@1.0.1: - resolution: {integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==} - engines: {node: '>=0.10.0'} - - git-raw-commits@2.0.11: - resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} - engines: {node: '>=10'} + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} hasBin: true - gitlab@10.2.1: - resolution: {integrity: sha512-z+DxRF1C9uayVbocs9aJkJz+kGy14TSm1noB/rAIEBbXOkOYbjKxyuqJzt+0zeFpXFdgA0yq6DVVbvM7HIfGwg==} - engines: {node: '>=10.0.0'} - deprecated: 'This package has found a new home in the @gitbeaker organization. For the latest GitLab API library for node, browser, and deno usage, check out @gitbeaker/rest. A full list of the features can be found here: https://github.com/jdalrymple/gitbeaker#readme' - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2530,12 +2243,18 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported - global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -2545,8 +2264,8 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@11.1.0: @@ -2566,13 +2285,12 @@ packages: grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + growly@1.3.0: resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} - gzip-size@5.1.1: - resolution: {integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==} - engines: {node: '>=6'} - hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -2580,10 +2298,6 @@ packages: has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - has-flag@2.0.0: - resolution: {integrity: sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==} - engines: {node: '>=0.10.0'} - has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -2607,34 +2321,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - - has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - - has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - - has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - - has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} - engines: {node: '>= 0.4.0'} - - hash-base@3.0.4: - resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} - engines: {node: '>=4'} - - hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} @@ -2642,38 +2328,18 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hasurl@1.0.0: - resolution: {integrity: sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ==} - engines: {node: '>= 4'} - hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - homedir@0.6.0: resolution: {integrity: sha512-KZFBHenkVuyyG4uaqRSXqWJr3HTxcaPguM7rU1BlH/mtbDlzaXNSXTa9AhV+fXEjrNemHu9vtLRIaM8/8OW0xA==} hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - - html-encoding-sniffer@2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - htmlescape@1.1.1: - resolution: {integrity: sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==} - engines: {node: '>=0.10'} - http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -2681,52 +2347,26 @@ packages: resolution: {integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==} engines: {node: '>= 0.6'} - http-proxy-agent@2.1.0: - resolution: {integrity: sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==} - engines: {node: '>= 4.5.0'} - - http-proxy-agent@4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - http2-wrapper@1.0.3: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} - https-browserify@1.0.0: - resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - - https-proxy-agent@2.2.4: - resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} - engines: {node: '>= 4.5.0'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - humps@2.0.1: - resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} husky@7.0.4: resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} engines: {node: '>=12'} hasBin: true - hyperlinker@1.0.0: - resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} - engines: {node: '>=4'} - iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -2751,6 +2391,9 @@ packages: engines: {node: '>=8'} hasBin: true + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -2765,6 +2408,7 @@ packages: inflight@1.0.6: resolution: {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. inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -2772,24 +2416,14 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - inline-source-map@0.6.3: - resolution: {integrity: sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==} - - insert-module-globals@7.2.1: - resolution: {integrity: sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==} - hasBin: true + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} - is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} - is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -2804,17 +2438,10 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true @@ -2822,10 +2449,6 @@ packages: is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - is-data-descriptor@1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} - is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} engines: {node: '>= 0.4'} @@ -2834,27 +2457,11 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} - is-descriptor@0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} - - is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} - is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -2885,10 +2492,6 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} - is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2901,17 +2504,6 @@ packages: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-property@1.0.2: resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} @@ -2923,14 +2515,14 @@ packages: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -2943,17 +2535,14 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} - is-text-path@1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} @@ -2965,35 +2554,27 @@ packages: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} + isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-instrument@4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} - istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} + istanbul-lib-instrument@6.0.2: + resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} + engines: {node: '>=10'} + istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} @@ -3006,71 +2587,79 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} - jest-changed-files@26.6.2: - resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} - engines: {node: '>= 10.14.2'} + jackspeak@4.0.1: + resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} + engines: {node: 20 || >=22} + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-cli@26.6.3: - resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} - engines: {node: '>= 10.14.2'} + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - jest-config@26.6.3: - resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} - engines: {node: '>= 10.14.2'} + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: + '@types/node': '*' ts-node: '>=9.0.0' peerDependenciesMeta: + '@types/node': + optional: true ts-node: optional: true - jest-diff@26.6.2: - resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} - engines: {node: '>= 10.14.2'} - - jest-docblock@26.0.0: - resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} - engines: {node: '>= 10.14.2'} + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-each@26.6.2: - resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} - engines: {node: '>= 10.14.2'} + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-environment-jsdom@26.6.2: - resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} - engines: {node: '>= 10.14.2'} + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-environment-node@26.6.2: - resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} - engines: {node: '>= 10.14.2'} + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-get-type@26.3.0: - resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} - engines: {node: '>= 10.14.2'} + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@26.6.2: - resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} - engines: {node: '>= 10.14.2'} + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-jasmine2@26.6.3: - resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} - engines: {node: '>= 10.14.2'} + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-leak-detector@26.6.2: - resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} - engines: {node: '>= 10.14.2'} + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-matcher-utils@26.6.2: - resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} - engines: {node: '>= 10.14.2'} + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-message-util@26.6.2: - resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} - engines: {node: '>= 10.14.2'} - - jest-mock@26.6.2: - resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} - engines: {node: '>= 10.14.2'} + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-pnp-resolver@1.2.3: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} @@ -3081,58 +2670,62 @@ packages: jest-resolve: optional: true - jest-regex-util@26.0.0: - resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} - engines: {node: '>= 10.14.2'} + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-resolve-dependencies@26.6.3: - resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} - engines: {node: '>= 10.14.2'} + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-resolve@26.6.2: - resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} - engines: {node: '>= 10.14.2'} + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-runner@26.6.3: - resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} - engines: {node: '>= 10.14.2'} + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-runtime@26.6.3: - resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} - engines: {node: '>= 10.14.2'} - hasBin: true + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-serializer@26.6.2: - resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} - engines: {node: '>= 10.14.2'} + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-snapshot@26.6.2: - resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} - engines: {node: '>= 10.14.2'} + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-util@26.6.2: - resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} - engines: {node: '>= 10.14.2'} + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-validate@26.6.2: - resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} - engines: {node: '>= 10.14.2'} + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-watcher@26.6.2: - resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} - engines: {node: '>= 10.14.2'} + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - jest@26.0.1: - resolution: {integrity: sha512-29Q54kn5Bm7ZGKIuH2JRmnKl85YRigp0o0asTc6Sb6l2ch1DCXIeZTLLFy9ultJvhkTqbswF5DEx4+RlkmCxWg==} - engines: {node: '>= 10.14.2'} + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true - jose@4.15.5: - resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} + jose@4.15.7: + resolution: {integrity: sha512-L7ioP+JAuZe8v+T5+zVI9Tx8LtU8BL7NxkyDFVMv+Qr3JW0jSoYDedLtodaXwfqMpeCyx4WXFNyu9tJt4WvC1A==} js-sha256@0.9.0: resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} @@ -3148,15 +2741,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdom@16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -3177,9 +2761,6 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stable-stringify@0.0.1: - resolution: {integrity: sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw==} - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -3194,12 +2775,6 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsonify@0.0.1: - resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} - - jsonpack@1.1.5: - resolution: {integrity: sha512-d2vwomK605ks7Q+uCpbwGyoIF5j+UZuJjlYcugISBt3CxM+eBo/W6y63yVPIyIvbYON+pvJYsYZjCYbzqJj/xQ==} - jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} @@ -3208,27 +2783,9 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} - jsonwebtoken@8.5.1: - resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} - engines: {node: '>=4', npm: '>=1.4.28'} - - jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - - jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - - kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -3241,19 +2798,6 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - ky-universal@0.3.0: - resolution: {integrity: sha512-CM4Bgb2zZZpsprcjI6DNYTaH3oGHXL2u7BU4DK+lfCuC4snkt9/WRpMYeKbBbXscvKkeqBwzzjFX2WwmKY5K/A==} - engines: {node: '>=8'} - peerDependencies: - ky: '>=0.12.0' - - ky@0.12.0: - resolution: {integrity: sha512-t9b7v3V2fGwAcQnnDDQwKQGF55eWrf4pwi1RN08Fy8b/9GEwV7Ea0xQiaSW6ZbeghBHIwl8kgnla4vVo9seepQ==} - engines: {node: '>=8'} - - labeled-stream-splicer@2.0.2: - resolution: {integrity: sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==} - leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -3262,9 +2806,6 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - li@1.3.0: - resolution: {integrity: sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw==} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3283,48 +2824,19 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash.find@4.6.0: - resolution: {integrity: sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==} - - lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - - lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - - lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - - lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - - lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - - lodash.isobject@3.0.2: - resolution: {integrity: sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==} - lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - lodash.keys@4.2.0: - resolution: {integrity: sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ==} - - lodash.mapvalues@4.6.0: - resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} - - lodash.memoize@3.0.4: - resolution: {integrity: sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==} - lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} @@ -3334,15 +2846,9 @@ packages: lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} @@ -3359,16 +2865,16 @@ packages: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} + lru-cache@11.0.0: + resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==} + engines: {node: 20 || >=22} + lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lru_map@0.4.1: resolution: {integrity: sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==} @@ -3385,10 +2891,6 @@ packages: makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -3397,29 +2899,19 @@ packages: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} - map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} hasBin: true - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - - memfs-or-file-map-to-github-branch@1.2.1: - resolution: {integrity: sha512-I/hQzJ2a/pCGR8fkSQ9l5Yx+FQ4e7X6blNHyWBm2ojeFLT3GVzGkTj7xnyWpdclrr7Nq4dmx3xrvu70m3ypzAQ==} + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} - meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3427,29 +2919,17 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} - miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} @@ -3469,9 +2949,17 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -3491,50 +2979,31 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - mixme@0.5.10: resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} engines: {node: '>= 8.0.0'} - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - module-deps@6.2.3: - resolution: {integrity: sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==} - engines: {node: '>= 0.8.0'} - hasBin: true - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mustache@4.0.0: resolution: {integrity: sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA==} engines: {npm: '>=1.4.0'} hasBin: true - nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -3559,18 +3028,9 @@ packages: resolution: {integrity: sha512-lkRCP2os8v7W+q1maQPSEI98f+YiPb86ibDyIy8bxr6fqnJPOsIRR3xE33rOwBsiph3WuUH46qtpYK0a+Co+EQ==} engines: {node: '>= 14.0.0', npm: '>= 6.0.0'} - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - node-addon-api@5.1.0: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - node-cleanup@2.1.2: - resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} - - node-fetch@1.7.3: - resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} - node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -3584,8 +3044,8 @@ packages: resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} hasBin: true - node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true node-int64@0.4.0: @@ -3603,14 +3063,6 @@ packages: normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - - normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3619,20 +3071,13 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - nwsapi@2.2.9: - resolution: {integrity: sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==} - - object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} @@ -3641,18 +3086,10 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} - object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3660,12 +3097,13 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} - os-browserify@0.3.0: - resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} @@ -3674,25 +3112,14 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - override-require@1.1.1: - resolution: {integrity: sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg==} - p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} - p-each-series@2.2.0: - resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} - engines: {node: '>=8'} - p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -3701,6 +3128,10 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -3709,6 +3140,10 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} @@ -3717,86 +3152,50 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parents@1.0.1: - resolution: {integrity: sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==} - - parse-asn1@5.1.7: - resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} - engines: {node: '>= 0.10'} - - parse-diff@0.7.1: - resolution: {integrity: sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg==} - - parse-git-config@2.0.3: - resolution: {integrity: sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A==} - engines: {node: '>=6'} - - parse-github-url@1.0.2: - resolution: {integrity: sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==} - engines: {node: '>=0.10.0'} - hasBin: true - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-link-header@2.0.0: - resolution: {integrity: sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==} - - parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - - pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - - path-browserify@0.0.1: - resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-platform@0.11.15: - resolution: {integrity: sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==} - engines: {node: '>= 0.8.0'} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -3806,9 +3205,6 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pinpoint@1.1.0: - resolution: {integrity: sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg==} - pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} @@ -3821,10 +3217,6 @@ packages: resolution: {integrity: sha512-iDUm90wfgtfd1PDV1oEnQj/4jBIU9hCSJeV0kQKThwDpbseFxC4TdpoMYlwE9maol5u0wMGZX9cNG2h1/0Lhww==} engines: {node: '>=12.0.0'} - posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -3842,20 +3234,9 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} - - prettyjson@1.2.5: - resolution: {integrity: sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==} - hasBin: true - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} promisify-child-process@4.1.2: resolution: {integrity: sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==} @@ -3871,22 +3252,16 @@ packages: pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - - public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + pure-uuid@1.8.1: resolution: {integrity: sha512-PIwHXU7NZb/wTBwUfzCSjI85tfwx6DQOm74sRLtNLH8KHsFZEvAQbBQdz7E5ij8SNSv9WGdQPWiiM6NpNIeNfA==} engines: {node: '>=8.0.0'} @@ -3898,25 +3273,6 @@ packages: resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} engines: {node: '>=6.0.0'} - q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - - qs@6.12.1: - resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} - engines: {node: '>=0.6'} - - query-string@6.14.1: - resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} - engines: {node: '>=6'} - - querystring-es3@0.2.1: - resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} - engines: {node: '>=0.4.x'} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -3931,14 +3287,8 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - read-only-stream@2.0.0: - resolution: {integrity: sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} @@ -3952,31 +3302,13 @@ packages: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readline-sync@1.4.10: - resolution: {integrity: sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==} - engines: {node: '>= 0.8.0'} - redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} @@ -3985,17 +3317,6 @@ packages: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - - repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -4007,9 +3328,6 @@ packages: require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -4025,16 +3343,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - - resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - - resolve@1.1.7: - resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} @@ -4043,10 +3354,6 @@ packages: responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -4057,14 +3364,13 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - - rsvp@4.8.5: - resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} - engines: {node: 6.* || >= 7.*} + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -4076,9 +3382,6 @@ packages: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -4086,22 +3389,9 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} - safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sane@4.1.0: - resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} - engines: {node: 6.* || 8.* || >= 10.*} - deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added - hasBin: true - - saxes@5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - secp256k1@5.0.0: resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} engines: {node: '>=14.0.0'} @@ -4119,13 +3409,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true @@ -4140,23 +3425,9 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - setprototypeof@1.1.1: resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - shasum-object@1.0.0: - resolution: {integrity: sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==} - - shasum@1.0.2: - resolution: {integrity: sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw==} - shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -4189,8 +3460,9 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -4204,41 +3476,13 @@ packages: engines: {node: '>=6'} hasBin: true - snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - - snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - - snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - - source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - spawn-command@0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} @@ -4254,19 +3498,12 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.17: - resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} - - split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - - split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} - split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -4275,33 +3512,13 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} - stream-browserify@2.0.2: - resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} - - stream-combiner2@1.1.1: - resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} - - stream-http@2.8.3: - resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} - - stream-splicer@2.0.1: - resolution: {integrity: sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==} - stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -4310,6 +3527,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -4321,16 +3542,14 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -4339,14 +3558,14 @@ packages: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -4355,9 +3574,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - subarg@1.0.0: - resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4370,24 +3586,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - supports-hyperlinks@1.0.1: - resolution: {integrity: sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==} - engines: {node: '>=4'} - - supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - syntax-error@1.4.0: - resolution: {integrity: sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==} - tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -4400,15 +3602,6 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - - terser@3.17.0: - resolution: {integrity: sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==} - engines: {node: '>=6.0.0'} - hasBin: true - test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -4416,31 +3609,18 @@ packages: text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - text-extensions@1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - - through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - timers-browserify@1.4.2: - resolution: {integrity: sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==} - engines: {node: '>=0.6.0'} - - tldts-core@6.1.18: - resolution: {integrity: sha512-e4wx32F/7dMBSZyKAx825Yte3U0PQtZZ0bkWxYQiwLteRVnQ5zM40fEbi0IyNtwQssgJAk3GCr7Q+w39hX0VKA==} + tldts-core@6.1.28: + resolution: {integrity: sha512-MJIfu8oVA4GVEuZKxk1GaaLpdq45w8b/UoWwuq3k+oIWbFBFtFG37xCTe3qz7D/ZBcHFZ2LmQb66grE1/Q93Hw==} tldts@6.0.23: resolution: {integrity: sha512-LaA60X7J9mts1EliB7Nq/OBqicaI7TgsheWeQ8RR1uqwcVLjvRVHTGOkWjKAPa/XF+0t2ZBy1oF6OW8ufqOsKA==} @@ -4453,47 +3633,21 @@ packages: tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-arraybuffer@1.0.1: - resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} - to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - - to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - toidentifier@1.0.0: resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} engines: {node: '>=0.6'} - tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} - engines: {node: '>=6'} - tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - tr46@2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} - tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -4502,13 +3656,35 @@ packages: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - ts-jest@26.5.6: - resolution: {integrity: sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==} - engines: {node: '>= 10'} + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-jest@29.1.5: + resolution: {integrity: sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - jest: '>=26 <27' - typescript: '>=3.8 <5.0' + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -4524,20 +3700,8 @@ packages: '@swc/wasm': optional: true - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - - tty-browserify@0.0.1: - resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} tty-table@4.2.3: resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} @@ -4630,10 +3794,6 @@ packages: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} - type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -4666,67 +3826,38 @@ packages: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - typedoc@0.25.3: - resolution: {integrity: sha512-Ow8Bo7uY1Lwy7GTmphRIMEo6IOZ+yYUyrc8n5KXIZg1svpqhZSWgni2ZrDhe+wLosFS8yswowUzljTAV/3jmWw==} + typedoc@0.25.13: + resolution: {integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==} engines: {node: '>= 16'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x - - typescript@4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} - engines: {node: '>=4.2.0'} - hasBin: true - - uglifyify@5.0.1: - resolution: {integrity: sha512-PO44rgExvwj3rkK0UzenHVnPU18drBy9x9HOUmgkuRh6K2KIsDqrB5LqxGtjybgGTOS1JeP8SBc+TN5rhiva6w==} + 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 - umd@3.0.3: - resolution: {integrity: sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==} + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} hasBin: true unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - undeclared-identifiers@1.1.3: - resolution: {integrity: sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==} - hasBin: true - - union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - - universal-url@2.0.0: - resolution: {integrity: sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg==} - engines: {node: '>= 6'} + unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - universal-user-agent@6.0.1: - resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -4734,26 +3865,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - url@0.11.3: - resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} - - use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.10.4: - resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} - uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -4764,69 +3875,34 @@ packages: v8-compile-cache@2.4.0: resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - v8-to-istanbul@7.1.2: - resolution: {integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==} - engines: {node: '>=10.10.0'} + v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vm-browserify@1.1.2: - resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} - vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - w3c-hr-time@1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - deprecated: Use your platform's native performance.now() and performance.timeOrigin. - - w3c-xmlserializer@2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - webcrypto-core@1.7.9: - resolution: {integrity: sha512-FE+a4PPkOmBbgNDIyRmcHhgXn+2ClRl3JzJdDu/P4+B8y81LqKe6RAsI9b3lAOHe1T1BMkSjsRHTYRikImZnVA==} + webcrypto-core@1.8.0: + resolution: {integrity: sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==} webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - - webidl-conversions@5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - - webidl-conversions@6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} - - whatwg-encoding@1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - - whatwg-mimetype@2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - - whatwg-url@8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} - which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -4850,6 +3926,10 @@ packages: engines: {node: '>= 8'} hasBin: true + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -4858,29 +3938,16 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xml-name-validator@3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -4906,10 +3973,6 @@ packages: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -4930,205 +3993,224 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} -snapshots: + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} - '@aashutoshrathi/word-wrap@1.2.6': {} +snapshots: '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.24.2': + '@babel/code-frame@7.24.7': dependencies: - '@babel/highlight': 7.24.2 - picocolors: 1.0.0 + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 - '@babel/compat-data@7.24.4': {} + '@babel/compat-data@7.24.7': {} - '@babel/core@7.24.4': + '@babel/core@7.24.7': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) - '@babel/helpers': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@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/core@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.3.4 + debug: 4.3.5 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.24.4': + '@babel/generator@7.24.7': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/helper-compilation-targets@7.23.6': + '@babel/helper-compilation-targets@7.24.7': dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-environment-visitor@7.22.20': {} + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.24.7 - '@babel/helper-function-name@7.23.0': + '@babel/helper-function-name@7.24.7': dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 - '@babel/helper-hoist-variables@7.22.5': + '@babel/helper-hoist-variables@7.24.7': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 - '@babel/helper-module-imports@7.24.3': + '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/types': 7.24.0 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/core': 7.24.7 + '@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 + transitivePeerDependencies: + - supports-color - '@babel/helper-plugin-utils@7.24.0': {} + '@babel/helper-plugin-utils@7.24.7': {} - '@babel/helper-simple-access@7.22.5': + '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/types': 7.24.0 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-split-export-declaration@7.22.6': + '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 - '@babel/helper-string-parser@7.24.1': {} + '@babel/helper-string-parser@7.24.7': {} - '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-option@7.23.5': {} + '@babel/helper-validator-option@7.24.7': {} - '@babel/helpers@7.24.4': + '@babel/helpers@7.24.7': dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 - '@babel/highlight@7.24.2': + '@babel/highlight@7.24.7': dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.24.7': + dependencies: + '@babel/types': 7.24.7 - '@babel/parser@7.24.4': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)': dependencies: - '@babel/types': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/runtime@7.24.4': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/runtime@7.24.7': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.24.0': + '@babel/template@7.24.7': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 - '@babel/traverse@7.24.1': + '@babel/traverse@7.24.7': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@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.4 - '@babel/types': 7.24.0 - debug: 4.3.4 + '@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.5 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.24.0': + '@babel/types@7.24.7': dependencies: - '@babel/helper-string-parser': 7.24.1 - '@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 '@bcoe/v8-coverage@0.2.3': {} @@ -5153,7 +4235,7 @@ snapshots: '@changesets/apply-release-plan@6.1.4': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/config': 2.3.1 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -5165,16 +4247,16 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.2 '@changesets/assemble-release-plan@5.2.4': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.6 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 - semver: 7.6.0 + semver: 7.6.2 '@changesets/changelog-git@0.1.14': dependencies: @@ -5190,7 +4272,7 @@ snapshots: '@changesets/cli@2.24.4': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/apply-release-plan': 6.1.4 '@changesets/assemble-release-plan': 5.2.4 '@changesets/changelog-git': 0.1.14 @@ -5232,7 +4314,7 @@ snapshots: '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - micromatch: 4.0.5 + micromatch: 4.0.7 '@changesets/errors@0.1.4': dependencies: @@ -5244,7 +4326,7 @@ snapshots: '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.6.0 + semver: 7.6.2 '@changesets/get-github-info@0.5.2(encoding@0.1.13)': dependencies: @@ -5255,7 +4337,7 @@ snapshots: '@changesets/get-release-plan@3.0.17': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/assemble-release-plan': 5.2.4 '@changesets/config': 2.3.1 '@changesets/pre': 1.0.14 @@ -5267,7 +4349,7 @@ snapshots: '@changesets/git@1.5.0': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -5276,12 +4358,12 @@ snapshots: '@changesets/git@2.0.0': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 - micromatch: 4.0.5 + micromatch: 4.0.7 spawndamnit: 2.0.0 '@changesets/logger@0.0.5': @@ -5295,7 +4377,7 @@ snapshots: '@changesets/pre@1.0.14': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -5303,7 +4385,7 @@ snapshots: '@changesets/read@0.5.9': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -5318,141 +4400,139 @@ snapshots: '@changesets/write@0.2.3': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 - '@cnakazawa/watch@1.0.4': - dependencies: - exec-sh: 0.3.6 - minimist: 1.2.8 - - '@commitlint/cli@17.0.3': + '@commitlint/cli@19.3.0(@types/node@20.5.1)(typescript@5.4.5)': dependencies: - '@commitlint/format': 17.8.1 - '@commitlint/lint': 17.8.1 - '@commitlint/load': 17.8.1 - '@commitlint/read': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 - lodash: 4.17.21 - resolve-from: 5.0.0 - resolve-global: 1.0.0 + '@commitlint/format': 19.3.0 + '@commitlint/lint': 19.2.2 + '@commitlint/load': 19.2.0(@types/node@20.5.1)(typescript@5.4.5) + '@commitlint/read': 19.2.1 + '@commitlint/types': 19.0.3 + execa: 8.0.1 yargs: 17.7.2 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + - '@types/node' + - typescript - '@commitlint/config-conventional@17.0.3': + '@commitlint/config-conventional@19.2.2': dependencies: - conventional-changelog-conventionalcommits: 5.0.0 + '@commitlint/types': 19.0.3 + conventional-changelog-conventionalcommits: 7.0.2 - '@commitlint/config-validator@17.8.1': + '@commitlint/config-validator@19.0.3': dependencies: - '@commitlint/types': 17.8.1 - ajv: 8.12.0 + '@commitlint/types': 19.0.3 + ajv: 8.16.0 - '@commitlint/ensure@17.8.1': + '@commitlint/ensure@19.0.3': dependencies: - '@commitlint/types': 17.8.1 + '@commitlint/types': 19.0.3 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 lodash.startcase: 4.4.0 lodash.upperfirst: 4.3.1 - '@commitlint/execute-rule@17.8.1': {} + '@commitlint/execute-rule@19.0.0': {} - '@commitlint/format@17.8.1': + '@commitlint/format@19.3.0': dependencies: - '@commitlint/types': 17.8.1 - chalk: 4.1.1 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 - '@commitlint/is-ignored@17.8.1': + '@commitlint/is-ignored@19.2.2': dependencies: - '@commitlint/types': 17.8.1 - semver: 7.5.4 + '@commitlint/types': 19.0.3 + semver: 7.6.2 - '@commitlint/lint@17.8.1': + '@commitlint/lint@19.2.2': dependencies: - '@commitlint/is-ignored': 17.8.1 - '@commitlint/parse': 17.8.1 - '@commitlint/rules': 17.8.1 - '@commitlint/types': 17.8.1 + '@commitlint/is-ignored': 19.2.2 + '@commitlint/parse': 19.0.3 + '@commitlint/rules': 19.0.3 + '@commitlint/types': 19.0.3 - '@commitlint/load@17.8.1': + '@commitlint/load@19.2.0(@types/node@20.5.1)(typescript@5.4.5)': dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/execute-rule': 17.8.1 - '@commitlint/resolve-extends': 17.8.1 - '@commitlint/types': 17.8.1 - '@types/node': 20.5.1 - chalk: 4.1.1 - cosmiconfig: 8.3.6(typescript@4.9.4) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@4.9.4))(ts-node@10.9.2(@types/node@20.5.1)(typescript@4.9.4))(typescript@4.9.4) + '@commitlint/config-validator': 19.0.3 + '@commitlint/execute-rule': 19.0.0 + '@commitlint/resolve-extends': 19.1.0 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.4.5) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.5.1)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - ts-node: 10.9.2(@types/node@20.5.1)(typescript@4.9.4) - typescript: 4.9.4 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + - '@types/node' + - typescript - '@commitlint/message@17.8.1': {} + '@commitlint/message@19.0.0': {} - '@commitlint/parse@17.8.1': + '@commitlint/parse@19.0.3': dependencies: - '@commitlint/types': 17.8.1 - conventional-changelog-angular: 6.0.0 - conventional-commits-parser: 4.0.0 + '@commitlint/types': 19.0.3 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 - '@commitlint/read@17.8.1': + '@commitlint/read@19.2.1': dependencies: - '@commitlint/top-level': 17.8.1 - '@commitlint/types': 17.8.1 - fs-extra: 11.2.0 - git-raw-commits: 2.0.11 + '@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 - '@commitlint/resolve-extends@17.8.1': + '@commitlint/resolve-extends@19.1.0': dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/types': 17.8.1 - import-fresh: 3.3.0 + '@commitlint/config-validator': 19.0.3 + '@commitlint/types': 19.0.3 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - resolve-global: 1.0.0 - '@commitlint/rules@17.8.1': + '@commitlint/rules@19.0.3': dependencies: - '@commitlint/ensure': 17.8.1 - '@commitlint/message': 17.8.1 - '@commitlint/to-lines': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 + '@commitlint/ensure': 19.0.3 + '@commitlint/message': 19.0.0 + '@commitlint/to-lines': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 - '@commitlint/to-lines@17.8.1': {} + '@commitlint/to-lines@19.0.0': {} - '@commitlint/top-level@17.8.1': + '@commitlint/top-level@19.0.0': dependencies: - find-up: 5.0.0 + find-up: 7.0.0 - '@commitlint/types@17.8.1': + '@commitlint/types@19.0.3': dependencies: - chalk: 4.1.1 + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.20.0)': + dependencies: + eslint: 8.20.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.10.1': {} '@eslint/eslintrc@1.4.1': dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.5 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -5468,13 +4548,22 @@ snapshots: '@humanwhocodes/config-array@0.9.5': dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.5 minimatch: 3.1.2 transitivePeerDependencies: - supports-color '@humanwhocodes/object-schema@1.2.1': {} + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -5485,209 +4574,244 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jest/console@26.6.2': + '@jest/console@29.7.0': dependencies: - '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 chalk: 4.1.1 - jest-message-util: 26.6.2 - jest-util: 26.6.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4))': + '@jest/core@29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5))': dependencies: - '@jest/console': 26.6.2 - '@jest/reporters': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0(node-notifier@8.0.2) + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 ansi-escapes: 4.3.2 chalk: 4.1.1 + ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 - jest-changed-files: 26.6.2 - jest-config: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-resolve-dependencies: 26.6.3 - jest-runner: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-runtime: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - jest-watcher: 26.6.2 - micromatch: 4.0.5 - p-each-series: 2.2.0 - rimraf: 3.0.2 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.7 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 + optionalDependencies: + node-notifier: 8.0.2 transitivePeerDependencies: - - bufferutil - - canvas + - babel-plugin-macros - supports-color - ts-node - - utf-8-validate - '@jest/core@26.6.3(ts-node@10.9.2(typescript@4.9.4))': + '@jest/core@29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5))': dependencies: - '@jest/console': 26.6.2 - '@jest/reporters': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0(node-notifier@8.0.2) + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 ansi-escapes: 4.3.2 chalk: 4.1.1 + ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 - jest-changed-files: 26.6.2 - jest-config: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-resolve-dependencies: 26.6.3 - jest-runner: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-runtime: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - jest-watcher: 26.6.2 - micromatch: 4.0.5 - p-each-series: 2.2.0 - rimraf: 3.0.2 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.7 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 + optionalDependencies: + node-notifier: 8.0.2 transitivePeerDependencies: - - bufferutil - - canvas + - babel-plugin-macros - supports-color - ts-node - - utf-8-validate - '@jest/environment@26.6.2': + '@jest/core@29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5))': dependencies: - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 - jest-mock: 26.6.2 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0(node-notifier@8.0.2) + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.1 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.7 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + optionalDependencies: + node-notifier: 8.0.2 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node - '@jest/fake-timers@26.6.2': + '@jest/environment@29.7.0': dependencies: - '@jest/types': 26.6.2 - '@sinonjs/fake-timers': 6.0.1 - '@types/node': 18.11.18 - jest-message-util: 26.6.2 - jest-mock: 26.6.2 - jest-util: 26.6.2 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.0.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 - '@jest/globals@26.6.2': + '@jest/globals@29.7.0': dependencies: - '@jest/environment': 26.6.2 - '@jest/types': 26.6.2 - expect: 26.6.2 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color - '@jest/reporters@26.6.2': + '@jest/reporters@29.7.0(node-notifier@8.0.2)': dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 20.0.0 chalk: 4.1.1 collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 4.0.3 + istanbul-lib-instrument: 6.0.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.7 - jest-haste-map: 26.6.2 - jest-resolve: 26.6.2 - jest-util: 26.6.2 - jest-worker: 26.6.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 slash: 3.0.0 - source-map: 0.6.1 string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 7.1.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 optionalDependencies: node-notifier: 8.0.2 transitivePeerDependencies: - supports-color - '@jest/source-map@26.6.2': + '@jest/schemas@29.6.3': dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 - source-map: 0.6.1 - '@jest/test-result@26.6.2': + '@jest/test-result@29.7.0': dependencies: - '@jest/console': 26.6.2 - '@jest/types': 26.6.2 + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - '@jest/test-sequencer@26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4))': - dependencies: - '@jest/test-result': 26.6.2 - graceful-fs: 4.2.11 - jest-haste-map: 26.6.2 - jest-runner: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-runtime: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - - '@jest/test-sequencer@26.6.3(ts-node@10.9.2(typescript@4.9.4))': + '@jest/test-sequencer@29.7.0': dependencies: - '@jest/test-result': 26.6.2 + '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 - jest-haste-map: 26.6.2 - jest-runner: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-runtime: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate + jest-haste-map: 29.7.0 + slash: 3.0.0 - '@jest/transform@26.6.2': + '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.24.4 - '@jest/types': 26.6.2 + '@babel/core': 7.24.7 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 chalk: 4.1.1 - convert-source-map: 1.9.0 + convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 26.6.2 - jest-regex-util: 26.0.0 - jest-util: 26.6.2 - micromatch: 4.0.5 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.7 pirates: 4.0.6 slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 + write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color - '@jest/types@26.6.2': + '@jest/types@29.6.3': dependencies: + '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.11.18 - '@types/yargs': 15.0.19 + '@types/node': 20.0.0 + '@types/yargs': 17.0.32 chalk: 4.1.1 '@jridgewell/gen-mapping@0.3.5': @@ -5711,17 +4835,18 @@ snapshots: dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + optional: true '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.24.7 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -5825,6 +4950,8 @@ snapshots: '@noble/hashes@1.3.3': {} + '@noble/hashes@1.4.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5837,156 +4964,90 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@octokit/auth-token@2.5.0': - dependencies: - '@octokit/types': 6.41.0 - - '@octokit/core@3.6.0(encoding@0.1.13)': - dependencies: - '@octokit/auth-token': 2.5.0 - '@octokit/graphql': 4.8.0(encoding@0.1.13) - '@octokit/request': 5.6.3(encoding@0.1.13) - '@octokit/request-error': 2.1.0 - '@octokit/types': 6.41.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/endpoint@6.0.12': - dependencies: - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.1 - - '@octokit/graphql@4.8.0(encoding@0.1.13)': - dependencies: - '@octokit/request': 5.6.3(encoding@0.1.13) - '@octokit/types': 6.41.0 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/openapi-types@12.11.0': {} - - '@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0(encoding@0.1.13))': - dependencies: - '@octokit/core': 3.6.0(encoding@0.1.13) - '@octokit/types': 6.41.0 - - '@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0(encoding@0.1.13))': - dependencies: - '@octokit/core': 3.6.0(encoding@0.1.13) - - '@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0(encoding@0.1.13))': - dependencies: - '@octokit/core': 3.6.0(encoding@0.1.13) - '@octokit/types': 6.41.0 - deprecation: 2.3.1 - - '@octokit/request-error@2.1.0': - dependencies: - '@octokit/types': 6.41.0 - deprecation: 2.3.1 - once: 1.4.0 - - '@octokit/request@5.6.3(encoding@0.1.13)': - dependencies: - '@octokit/endpoint': 6.0.12 - '@octokit/request-error': 2.1.0 - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - node-fetch: 2.6.7(encoding@0.1.13) - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/rest@18.12.0(encoding@0.1.13)': - dependencies: - '@octokit/core': 3.6.0(encoding@0.1.13) - '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0(encoding@0.1.13)) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0(encoding@0.1.13)) - '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0(encoding@0.1.13)) - transitivePeerDependencies: - - encoding - - '@octokit/types@6.41.0': - dependencies: - '@octokit/openapi-types': 12.11.0 - '@peculiar/asn1-schema@2.3.8': dependencies: asn1js: 3.0.5 pvtsutils: 1.3.5 - tslib: 2.6.2 + tslib: 2.6.3 '@peculiar/json-schema@1.1.12': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 '@peculiar/webcrypto@1.4.6': dependencies: '@peculiar/asn1-schema': 2.3.8 '@peculiar/json-schema': 1.1.12 pvtsutils: 1.3.5 - tslib: 2.6.2 - webcrypto-core: 1.7.9 + tslib: 2.6.3 + webcrypto-core: 1.8.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@sinclair/typebox@0.27.8': {} '@sindresorhus/is@4.6.0': {} - '@sinonjs/commons@1.8.6': + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@6.0.1': + '@sinonjs/fake-timers@10.3.0': dependencies: - '@sinonjs/commons': 1.8.6 + '@sinonjs/commons': 3.0.1 '@szmarczak/http-timer@4.0.6': dependencies: defer-to-connect: 2.0.1 - '@tootallnate/once@1.1.2': {} - - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.11': + optional: true - '@tsconfig/node12@1.0.11': {} + '@tsconfig/node12@1.0.11': + optional: true - '@tsconfig/node14@1.0.3': {} + '@tsconfig/node14@1.0.3': + optional: true - '@tsconfig/node16@1.0.4': {} + '@tsconfig/node16@1.0.4': + optional: true '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 + '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 - '@types/babel__traverse@7.20.5': + '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 18.11.18 + '@types/node': 20.0.0 '@types/responselike': 1.0.3 + '@types/conventional-commits-parser@5.0.0': + dependencies: + '@types/node': 20.0.0 + '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 18.11.18 + '@types/node': 20.0.0 '@types/http-cache-semantics@4.0.4': {} @@ -6010,7 +5071,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 18.11.18 + '@types/node': 20.0.0 '@types/minimist@1.2.5': {} @@ -6018,104 +5079,112 @@ snapshots: '@types/node@18.11.18': {} + '@types/node@20.0.0': {} + '@types/node@20.5.1': {} '@types/normalize-package-data@2.4.4': {} - '@types/prettier@2.7.3': {} - '@types/responselike@1.0.3': dependencies: - '@types/node': 18.11.18 + '@types/node': 20.0.0 '@types/semver@6.2.7': {} + '@types/semver@7.5.8': {} + '@types/stack-utils@2.0.3': {} '@types/yargs-parser@21.0.3': {} - '@types/yargs@15.0.19': + '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.31.0(@typescript-eslint/parser@5.31.0(eslint@8.20.0)(typescript@4.9.4))(eslint@8.20.0)(typescript@4.9.4)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.20.0)(typescript@5.4.5))(eslint@8.20.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/parser': 5.31.0(eslint@8.20.0)(typescript@4.9.4) - '@typescript-eslint/scope-manager': 5.31.0 - '@typescript-eslint/type-utils': 5.31.0(eslint@8.20.0)(typescript@4.9.4) - '@typescript-eslint/utils': 5.31.0(eslint@8.20.0)(typescript@4.9.4) - debug: 4.3.4 + '@eslint-community/regexpp': 4.10.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.20.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.20.0)(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.20.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.5 eslint: 8.20.0 - functional-red-black-tree: 1.0.1 + graphemer: 1.4.0 ignore: 5.3.1 - regexpp: 3.2.0 - semver: 7.6.0 - tsutils: 3.21.0(typescript@4.9.4) + natural-compare: 1.4.0 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: - typescript: 4.9.4 + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@5.31.0(eslint@8.20.0)(typescript@4.9.4)': + '@typescript-eslint/parser@6.21.0(eslint@8.20.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 5.31.0 - '@typescript-eslint/types': 5.31.0 - '@typescript-eslint/typescript-estree': 5.31.0(typescript@4.9.4) - debug: 4.3.4 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.5 eslint: 8.20.0 optionalDependencies: - typescript: 4.9.4 + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.31.0': + '@typescript-eslint/scope-manager@6.21.0': dependencies: - '@typescript-eslint/types': 5.31.0 - '@typescript-eslint/visitor-keys': 5.31.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 - '@typescript-eslint/type-utils@5.31.0(eslint@8.20.0)(typescript@4.9.4)': + '@typescript-eslint/type-utils@6.21.0(eslint@8.20.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/utils': 5.31.0(eslint@8.20.0)(typescript@4.9.4) - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.20.0)(typescript@5.4.5) + debug: 4.3.5 eslint: 8.20.0 - tsutils: 3.21.0(typescript@4.9.4) + ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: - typescript: 4.9.4 + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@5.31.0': {} + '@typescript-eslint/types@6.21.0': {} - '@typescript-eslint/typescript-estree@5.31.0(typescript@4.9.4)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 5.31.0 - '@typescript-eslint/visitor-keys': 5.31.0 - debug: 4.3.4 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.0 - tsutils: 3.21.0(typescript@4.9.4) + minimatch: 9.0.3 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: - typescript: 4.9.4 + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.31.0(eslint@8.20.0)(typescript@4.9.4)': + '@typescript-eslint/utils@6.21.0(eslint@8.20.0)(typescript@5.4.5)': dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.20.0) '@types/json-schema': 7.0.15 - '@typescript-eslint/scope-manager': 5.31.0 - '@typescript-eslint/types': 5.31.0 - '@typescript-eslint/typescript-estree': 5.31.0(typescript@4.9.4) + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) eslint: 8.20.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.20.0) + semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@5.31.0': + '@typescript-eslint/visitor-keys@6.21.0': dependencies: - '@typescript-eslint/types': 5.31.0 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 JSONStream@1.3.5: @@ -6123,44 +5192,16 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - abab@2.0.6: {} - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - acorn-globals@6.0.0: - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - - acorn-node@1.8.2: + acorn-jsx@5.3.2(acorn@8.12.0): dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - xtend: 4.0.2 - - acorn-walk@7.2.0: {} - - acorn-walk@8.3.2: {} + acorn: 8.12.0 - acorn@7.4.1: {} - - acorn@8.11.3: {} - - agent-base@4.3.0: + acorn-walk@8.3.3: dependencies: - es6-promisify: 5.0.0 + acorn: 8.12.0 + optional: true - agent-base@6.0.2: - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color + acorn@8.12.0: {} ajv@6.12.6: dependencies: @@ -6169,7 +5210,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + ajv@8.16.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -6184,6 +5225,8 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.0.1: {} + ansi-sequence-parser@1.1.1: {} ansi-styles@3.2.1: @@ -6194,19 +5237,17 @@ snapshots: dependencies: color-convert: 2.0.1 - anymatch@2.0.0: - dependencies: - micromatch: 3.1.10 - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@4.1.3: {} + arg@4.1.3: + optional: true argparse@1.0.10: dependencies: @@ -6214,12 +5255,6 @@ snapshots: argparse@2.0.1: {} - arr-diff@4.0.0: {} - - arr-flatten@1.1.0: {} - - arr-union@3.1.0: {} - array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -6229,8 +5264,6 @@ snapshots: array-union@2.1.0: {} - array-unique@0.3.2: {} - array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 @@ -6253,51 +5286,23 @@ snapshots: asn1-parser@1.1.8: {} - asn1.js@4.10.1: - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - asn1js@3.0.5: dependencies: pvtsutils: 1.3.5 pvutils: 1.1.3 - tslib: 2.6.2 - - assert@1.5.1: - dependencies: - object.assign: 4.1.5 - util: 0.10.4 - - assign-symbols@1.0.0: {} - - async-retry@1.2.3: - dependencies: - retry: 0.12.0 - - asynckit@0.4.0: {} - - atob@2.1.2: {} + tslib: 2.6.3 available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - axios@0.19.2: - dependencies: - follow-redirects: 1.5.10 - transitivePeerDependencies: - - supports-color - - babel-jest@26.6.3(@babel/core@7.24.4): + babel-jest@29.7.0(@babel/core@7.24.7): dependencies: - '@babel/core': 7.24.4 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 + '@babel/core': 7.24.7 + '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 26.6.2(@babel/core@7.24.4) + babel-preset-jest: 29.6.3(@babel/core@7.24.7) chalk: 4.1.1 graceful-fs: 4.2.11 slash: 3.0.0 @@ -6306,7 +5311,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.24.7 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -6314,34 +5319,34 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@26.6.2: + babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.5 - - babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.4): - dependencies: - '@babel/core': 7.24.4 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.4) - - babel-preset-jest@26.6.2(@babel/core@7.24.4): - dependencies: - '@babel/core': 7.24.4 - babel-plugin-jest-hoist: 26.6.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.4) + '@types/babel__traverse': 7.20.6 + + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7): + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) + + babel-preset-jest@29.6.3(@babel/core@7.24.7): + dependencies: + '@babel/core': 7.24.7 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) balanced-match@1.0.2: {} @@ -6357,18 +5362,6 @@ snapshots: base64url@3.0.1: {} - base@0.11.2: - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.1 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - - before-after-hook@2.2.3: {} - better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -6394,24 +5387,9 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@2.3.2: - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - braces@3.0.2: + braces@3.0.3: dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 breakword@1.0.6: dependencies: @@ -6419,126 +5397,12 @@ snapshots: brorand@1.1.0: {} - browser-pack@6.1.0: - dependencies: - JSONStream: 1.3.5 - combine-source-map: 0.8.0 - defined: 1.0.1 - safe-buffer: 5.2.1 - through2: 2.0.5 - umd: 3.0.3 - - browser-process-hrtime@1.0.0: {} - - browser-resolve@1.11.3: - dependencies: - resolve: 1.1.7 - - browser-resolve@2.0.0: - dependencies: - resolve: 1.22.8 - - browserify-aes@1.2.0: - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-cipher@1.0.1: - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - - browserify-des@1.0.2: - dependencies: - cipher-base: 1.0.4 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-rsa@4.1.0: - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - - browserify-sign@4.2.3: - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.5 - hash-base: 3.0.4 - inherits: 2.0.4 - parse-asn1: 5.1.7 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - - browserify-zlib@0.2.0: - dependencies: - pako: 1.0.11 - - browserify@16.2.3: - dependencies: - JSONStream: 1.3.5 - assert: 1.5.1 - browser-pack: 6.1.0 - browser-resolve: 1.11.3 - browserify-zlib: 0.2.0 - buffer: 5.7.1 - cached-path-relative: 1.1.0 - concat-stream: 1.6.2 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - crypto-browserify: 3.12.0 - defined: 1.0.1 - deps-sort: 2.0.1 - domain-browser: 1.2.0 - duplexer2: 0.1.4 - events: 2.1.0 - glob: 7.2.3 - has: 1.0.4 - htmlescape: 1.1.1 - https-browserify: 1.0.0 - inherits: 2.0.4 - insert-module-globals: 7.2.1 - labeled-stream-splicer: 2.0.2 - mkdirp: 0.5.6 - module-deps: 6.2.3 - os-browserify: 0.3.0 - parents: 1.0.1 - path-browserify: 0.0.1 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - read-only-stream: 2.0.0 - readable-stream: 2.3.8 - resolve: 1.22.8 - shasum: 1.0.2 - shell-quote: 1.8.1 - stream-browserify: 2.0.2 - stream-http: 2.8.3 - string_decoder: 1.3.0 - subarg: 1.0.0 - syntax-error: 1.4.0 - through2: 2.0.5 - timers-browserify: 1.4.2 - tty-browserify: 0.0.1 - url: 0.11.3 - util: 0.10.4 - vm-browserify: 1.1.2 - xtend: 4.0.2 - - browserslist@4.23.0: + browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001612 - electron-to-chromium: 1.4.746 + caniuse-lite: 1.0.30001636 + electron-to-chromium: 1.4.807 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + update-browserslist-db: 1.0.16(browserslist@4.23.1) bs-logger@0.2.6: dependencies: @@ -6556,54 +5420,14 @@ snapshots: dependencies: node-int64: 0.4.0 - buffer-equal-constant-time@1.0.1: {} - buffer-from@1.1.2: {} - buffer-xor@1.0.3: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - builtin-status-codes@3.0.0: {} - - bundlewatch@0.3.1: - dependencies: - axios: 0.19.2 - bytes: 3.1.2 - chalk: 4.1.1 - ci-env: 1.17.0 - commander: 5.1.0 - glob: 7.2.3 - gzip-size: 5.1.1 - jsonpack: 1.1.5 - lodash.merge: 4.6.2 - read-pkg-up: 7.0.1 - transitivePeerDependencies: - - supports-color - - bytes@3.1.2: {} - - bytestreamjs@2.0.1: {} - - cache-base@1.0.1: - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.1 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 + bytestreamjs@2.0.1: {} cacheable-lookup@5.0.4: {} @@ -6617,8 +5441,6 @@ snapshots: normalize-url: 6.1.0 responselike: 2.0.1 - cached-path-relative@1.1.0: {} - call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -6641,11 +5463,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001612: {} - - capture-exit@2.0.0: - dependencies: - rsvp: 4.8.5 + caniuse-lite@1.0.30001636: {} cbor-extract@2.2.0: dependencies: @@ -6681,31 +5499,17 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.3.0: {} + char-regex@1.0.2: {} chardet@0.7.0: {} chownr@2.0.0: {} - ci-env@1.17.0: {} - - ci-info@2.0.0: {} - ci-info@3.9.0: {} - cipher-base@1.0.4: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - cjs-module-lexer@0.6.0: {} - - class-utils@0.3.6: - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 + cjs-module-lexer@1.3.1: {} cliui@6.0.0: dependencies: @@ -6729,11 +5533,6 @@ snapshots: collect-v8-coverage@1.0.2: {} - collection-visit@1.0.0: - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -6746,47 +5545,21 @@ snapshots: color-name@1.1.4: {} - colors@1.4.0: {} - - combine-source-map@0.8.0: - dependencies: - convert-source-map: 1.1.3 - inline-source-map: 0.6.3 - lodash.memoize: 3.0.4 - source-map: 0.5.7 - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - commander@2.20.3: {} - - commander@5.1.0: {} - - commitlint@17.0.3: + commitlint@19.3.0(@types/node@20.5.1)(typescript@5.4.5): dependencies: - '@commitlint/cli': 17.0.3 - '@commitlint/types': 17.8.1 + '@commitlint/cli': 19.3.0(@types/node@20.5.1)(typescript@5.4.5) + '@commitlint/types': 19.0.3 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + - '@types/node' + - typescript compare-func@2.0.0: dependencies: array-ify: 1.0.0 dot-prop: 5.3.0 - component-emitter@1.3.1: {} - concat-map@0.0.1: {} - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - concurrently@7.3.0: dependencies: chalk: 4.1.1 @@ -6799,78 +5572,86 @@ snapshots: tree-kill: 1.2.2 yargs: 17.7.2 - console-browserify@1.2.0: {} - - constants-browserify@1.0.0: {} - - conventional-changelog-angular@6.0.0: + conventional-changelog-angular@7.0.0: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@5.0.0: + conventional-changelog-conventionalcommits@7.0.2: dependencies: compare-func: 2.0.0 - lodash: 4.17.21 - q: 1.5.1 - conventional-commits-parser@4.0.0: + conventional-commits-parser@5.0.0: dependencies: JSONStream: 1.3.5 - is-text-path: 1.0.1 - meow: 8.1.2 - split2: 3.2.2 - - convert-source-map@1.1.3: {} - - convert-source-map@1.9.0: {} + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 convert-source-map@2.0.0: {} - copy-descriptor@0.1.1: {} - - core-js@3.37.0: {} - - core-util-is@1.0.3: {} - - cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@4.9.4))(ts-node@10.9.2(@types/node@20.5.1)(typescript@4.9.4))(typescript@4.9.4): + cosmiconfig-typescript-loader@5.0.0(@types/node@20.5.1)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5): dependencies: '@types/node': 20.5.1 - cosmiconfig: 8.3.6(typescript@4.9.4) - ts-node: 10.9.2(@types/node@20.5.1)(typescript@4.9.4) - typescript: 4.9.4 + cosmiconfig: 9.0.0(typescript@5.4.5) + jiti: 1.21.6 + typescript: 5.4.5 - cosmiconfig@8.3.6(typescript@4.9.4): + cosmiconfig@9.0.0(typescript@5.4.5): 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 optionalDependencies: - typescript: 4.9.4 + typescript: 5.4.5 - create-ecdh@4.0.4: + create-jest@29.7.0(@types/node@18.11.18)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)): dependencies: - bn.js: 4.12.0 - elliptic: 6.5.5 + '@jest/types': 29.6.3 + chalk: 4.1.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.11.18)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node - create-hash@1.2.0: + create-jest@29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)): dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 + '@jest/types': 29.6.3 + chalk: 4.1.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node - create-hmac@1.1.7: + create-jest@29.7.0(@types/node@20.5.1)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)): dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 + '@jest/types': 29.6.3 + chalk: 4.1.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.5.1)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node - create-require@1.1.1: {} + create-require@1.1.1: + optional: true cross-spawn@5.1.0: dependencies: @@ -6878,42 +5659,12 @@ snapshots: shebang-command: 1.2.0 which: 1.3.1 - cross-spawn@6.0.5: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypto-browserify@3.12.0: - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.3 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - - cssom@0.3.8: {} - - cssom@0.4.4: {} - - cssstyle@2.3.0: - dependencies: - cssom: 0.3.8 - csv-generate@3.4.3: {} csv-parse@4.16.3: {} @@ -6927,66 +5678,7 @@ snapshots: csv-stringify: 5.6.5 stream-transform: 2.1.3 - danger-plugin-yarn@1.3.2: - dependencies: - date-fns: 1.30.1 - lodash.flatten: 4.4.0 - lodash.includes: 4.3.0 - node-fetch: 1.7.3 - semver: 5.7.2 - - danger@11.1.1(encoding@0.1.13): - dependencies: - '@octokit/rest': 18.12.0(encoding@0.1.13) - async-retry: 1.2.3 - chalk: 2.4.2 - commander: 2.20.3 - core-js: 3.37.0 - debug: 4.3.4 - fast-json-patch: 3.1.1 - get-stdin: 6.0.0 - gitlab: 10.2.1(encoding@0.1.13) - http-proxy-agent: 2.1.0 - https-proxy-agent: 2.2.4 - hyperlinker: 1.0.0 - json5: 2.2.3 - jsonpointer: 5.0.1 - jsonwebtoken: 8.5.1 - lodash.find: 4.6.0 - lodash.includes: 4.3.0 - lodash.isobject: 3.0.2 - lodash.keys: 4.2.0 - lodash.mapvalues: 4.6.0 - lodash.memoize: 4.1.2 - memfs-or-file-map-to-github-branch: 1.2.1(encoding@0.1.13) - micromatch: 4.0.5 - node-cleanup: 2.1.2 - node-fetch: 2.6.7(encoding@0.1.13) - override-require: 1.1.1 - p-limit: 2.3.0 - parse-diff: 0.7.1 - parse-git-config: 2.0.3 - parse-github-url: 1.0.2 - parse-link-header: 2.0.0 - pinpoint: 1.1.0 - prettyjson: 1.2.5 - readline-sync: 1.4.10 - regenerator-runtime: 0.13.11 - require-from-string: 2.0.2 - supports-hyperlinks: 1.0.1 - transitivePeerDependencies: - - encoding - - supports-color - - dargs@7.0.0: {} - - dash-ast@1.0.0: {} - - data-urls@2.0.0: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 + dargs@8.1.0: {} data-view-buffer@1.0.1: dependencies: @@ -7008,25 +5700,11 @@ snapshots: dataloader@1.4.0: {} - date-fns@1.30.1: {} - date-fns@2.30.0: dependencies: - '@babel/runtime': 7.24.4 - - debug@2.6.9: - dependencies: - ms: 2.0.0 - - debug@3.1.0: - dependencies: - ms: 2.0.0 - - debug@3.2.7: - dependencies: - ms: 2.1.3 + '@babel/runtime': 7.24.7 - debug@4.3.4: + debug@4.3.5: dependencies: ms: 2.1.2 @@ -7037,14 +5715,12 @@ snapshots: decamelize@1.2.0: {} - decimal.js@10.4.3: {} - - decode-uri-component@0.2.2: {} - decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 + dedent@1.5.3: {} + deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -7067,41 +5743,10 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - define-property@0.2.5: - dependencies: - is-descriptor: 0.1.7 - - define-property@1.0.0: - dependencies: - is-descriptor: 1.0.3 - - define-property@2.0.2: - dependencies: - is-descriptor: 1.0.3 - isobject: 3.0.1 - - defined@1.0.1: {} - - delayed-stream@1.0.0: {} - depd@1.1.2: {} depd@2.0.0: {} - deprecation@2.3.1: {} - - deps-sort@2.0.1: - dependencies: - JSONStream: 1.3.5 - shasum-object: 1.0.0 - subarg: 1.0.0 - through2: 2.0.5 - - des.js@1.1.0: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - detect-indent@6.1.0: {} detect-libc@2.0.3: @@ -7109,21 +5754,10 @@ snapshots: detect-newline@3.1.0: {} - detective@5.2.1: - dependencies: - acorn-node: 1.8.2 - defined: 1.0.1 - minimist: 1.2.8 - - diff-sequences@26.6.2: {} - - diff@4.0.2: {} + diff-sequences@29.6.3: {} - diffie-hellman@5.0.3: - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 + diff@4.0.2: + optional: true dir-glob@3.0.1: dependencies: @@ -7133,29 +5767,15 @@ snapshots: dependencies: esutils: 2.0.3 - domain-browser@1.2.0: {} - - domexception@2.0.1: - dependencies: - webidl-conversions: 5.0.0 - dot-prop@5.3.0: dependencies: is-obj: 2.0.0 dotenv@8.6.0: {} - duplexer2@0.1.4: - dependencies: - readable-stream: 2.3.8 - - duplexer@0.1.2: {} + eastasianwidth@0.2.0: {} - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 - - electron-to-chromium@1.4.746: {} + electron-to-chromium@1.4.807: {} elliptic@6.5.5: dependencies: @@ -7167,13 +5787,16 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - emittery@0.7.2: {} + emittery@0.13.1: {} emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 + optional: true end-of-stream@1.4.4: dependencies: @@ -7184,6 +5807,8 @@ snapshots: ansi-colors: 4.1.3 strip-ansi: 6.0.1 + env-paths@2.2.1: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -7205,7 +5830,7 @@ snapshots: function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.3 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 @@ -7263,12 +5888,6 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - escalade@3.1.2: {} escape-string-regexp@1.0.5: {} @@ -7277,19 +5896,6 @@ snapshots: escape-string-regexp@4.0.0: {} - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 @@ -7311,7 +5917,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.1 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.5 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -7335,7 +5941,7 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 regexpp: 3.2.0 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 @@ -7346,8 +5952,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -7360,47 +5966,12 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} esutils@2.0.3: {} - event-target-shim@5.0.1: {} - - events@2.1.0: {} - events@3.3.0: {} - evp_bytestokey@1.0.3: - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - - exec-sh@0.3.6: {} - - execa@1.0.0: - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - - execa@4.1.0: - dependencies: - cross-spawn: 7.0.3 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - execa@5.1.1: dependencies: cross-spawn: 7.0.3 @@ -7413,43 +5984,29 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - exit@0.1.2: {} - - expand-brackets@2.1.4: - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - expand-tilde@2.0.2: - dependencies: - homedir-polyfill: 1.0.3 - - expect@26.6.2: + execa@8.0.1: dependencies: - '@jest/types': 26.6.2 - ansi-styles: 4.3.0 - jest-get-type: 26.3.0 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 + exit@0.1.2: {} - extend-shallow@3.0.2: + expect@29.7.0: dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 - extend@1.3.0: {} + exponential-backoff@3.1.1: {} extendable-error@0.1.7: {} @@ -7459,19 +6016,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - extglob@2.0.4: - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -7480,16 +6024,12 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 - - fast-json-patch@3.1.1: {} + micromatch: 4.0.7 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fast-safe-stringify@2.1.1: {} - fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -7504,7 +6044,7 @@ snapshots: '@peculiar/webcrypto': 1.4.6 asn1js: 3.0.5 cbor-x: 1.5.9 - jose: 4.15.5 + jose: 4.15.7 pkijs: 3.0.16 tldts: 6.0.23 @@ -7512,19 +6052,10 @@ snapshots: dependencies: flat-cache: 3.2.0 - fill-range@4.0.0: - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - - fill-range@7.0.1: + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - filter-obj@1.1.0: {} - find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -7535,9 +6066,15 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + find-yarn-workspace-root2@1.2.16: dependencies: - micromatch: 4.0.5 + micromatch: 4.0.7 pkg-dir: 4.2.0 flat-cache@3.2.0: @@ -7548,35 +6085,14 @@ snapshots: flatted@3.3.1: {} - follow-redirects@1.5.10: - dependencies: - debug: 3.1.0 - transitivePeerDependencies: - - supports-color - for-each@0.3.3: dependencies: is-callable: 1.2.7 - for-in@1.0.2: {} - - form-data@2.5.1: + foreground-child@3.3.0: dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@3.0.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - fragment-cache@0.2.1: - dependencies: - map-cache: 0.2.2 - - fs-exists-sync@0.1.0: {} + cross-spawn: 7.0.3 + signal-exit: 4.1.0 fs-extra@10.1.0: dependencies: @@ -7584,12 +6100,6 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -7634,8 +6144,6 @@ snapshots: gensync@1.0.0-beta.2: {} - get-assigned-identifiers@1.2.0: {} - get-caller-file@2.0.5: {} get-intrinsic@1.2.4: @@ -7648,51 +6156,25 @@ snapshots: get-package-type@0.1.0: {} - get-stdin@6.0.0: {} - - get-stream@4.1.0: - dependencies: - pump: 3.0.0 - get-stream@5.2.0: dependencies: pump: 3.0.0 get-stream@6.0.1: {} + get-stream@8.0.1: {} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-value@2.0.6: {} - - git-config-path@1.0.1: - dependencies: - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - homedir-polyfill: 1.0.3 - - git-raw-commits@2.0.11: + git-raw-commits@4.0.0: dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - - gitlab@10.2.1(encoding@0.1.13): - dependencies: - form-data: 2.5.1 - humps: 2.0.1 - ky: 0.12.0 - ky-universal: 0.3.0(encoding@0.1.13)(ky@0.12.0) - li: 1.3.0 - query-string: 6.14.1 - universal-url: 2.0.0 - transitivePeerDependencies: - - encoding + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 glob-parent@5.1.2: dependencies: @@ -7702,6 +6184,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@11.0.0: + dependencies: + foreground-child: 3.3.0 + jackspeak: 4.0.1 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -7711,9 +6202,9 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - global-dirs@0.1.1: + global-directory@4.0.1: dependencies: - ini: 1.3.8 + ini: 4.1.1 globals@11.12.0: {} @@ -7721,9 +6212,10 @@ snapshots: dependencies: type-fest: 0.20.2 - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.0.1 globby@11.1.0: dependencies: @@ -7756,20 +6248,15 @@ snapshots: grapheme-splitter@1.0.4: {} + graphemer@1.4.0: {} + growly@1.3.0: optional: true - gzip-size@5.1.1: - dependencies: - duplexer: 0.1.2 - pify: 4.0.1 - hard-rejection@2.1.0: {} has-bigints@1.0.2: {} - has-flag@2.0.0: {} - has-flag@3.0.0: {} has-flag@4.0.0: {} @@ -7786,75 +6273,27 @@ snapshots: dependencies: has-symbols: 1.0.3 - has-value@0.3.1: + hash.js@1.1.7: dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 - has-value@1.0.0: + hasown@2.0.2: dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - - has-values@0.1.4: {} + function-bind: 1.1.2 - has-values@1.0.0: - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - - has@1.0.4: {} - - hash-base@3.0.4: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - hash-base@3.1.0: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hasurl@1.0.0: {} - - hmac-drbg@1.0.1: + hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - homedir-polyfill@1.0.3: - dependencies: - parse-passwd: 1.0.0 - homedir@0.6.0: {} hosted-git-info@2.8.9: {} - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 - - html-encoding-sniffer@2.0.1: - dependencies: - whatwg-encoding: 1.0.5 - html-escaper@2.0.2: {} - htmlescape@1.1.1: {} - http-cache-semantics@4.1.1: {} http-errors@1.7.2: @@ -7865,54 +6304,19 @@ snapshots: statuses: 1.5.0 toidentifier: 1.0.0 - http-proxy-agent@2.1.0: - dependencies: - agent-base: 4.3.0 - debug: 3.1.0 - transitivePeerDependencies: - - supports-color - - http-proxy-agent@4.0.1: - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - http2-wrapper@1.0.3: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - https-browserify@1.0.0: {} - - https-proxy-agent@2.2.4: - dependencies: - agent-base: 4.3.0 - debug: 3.2.7 - transitivePeerDependencies: - - supports-color - - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - human-id@1.0.2: {} - human-signals@1.1.1: {} - human-signals@2.1.0: {} - humps@2.0.1: {} + human-signals@5.0.0: {} husky@7.0.4: {} - hyperlinker@1.0.0: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -7920,6 +6324,7 @@ snapshots: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 + optional: true ieee754@1.2.1: {} @@ -7935,6 +6340,8 @@ snapshots: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + import-meta-resolve@4.1.0: {} + imurmurhash@0.1.4: {} in-publish@2.0.0: {} @@ -7950,24 +6357,7 @@ snapshots: inherits@2.0.4: {} - ini@1.3.8: {} - - inline-source-map@0.6.3: - dependencies: - source-map: 0.5.7 - - insert-module-globals@7.2.1: - dependencies: - JSONStream: 1.3.5 - acorn-node: 1.8.2 - combine-source-map: 0.8.0 - concat-stream: 1.6.2 - is-buffer: 1.1.6 - path-is-absolute: 1.0.1 - process: 0.11.10 - through2: 2.0.5 - undeclared-identifiers: 1.1.3 - xtend: 4.0.2 + ini@4.1.1: {} internal-slot@1.0.7: dependencies: @@ -7975,10 +6365,6 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 - is-accessor-descriptor@1.0.1: - dependencies: - hasown: 2.0.2 - is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 @@ -7995,14 +6381,8 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-buffer@1.1.6: {} - is-callable@1.2.7: {} - is-ci@2.0.0: - dependencies: - ci-info: 2.0.0 - is-ci@3.0.1: dependencies: ci-info: 3.9.0 @@ -8011,10 +6391,6 @@ snapshots: dependencies: hasown: 2.0.2 - is-data-descriptor@1.0.1: - dependencies: - hasown: 2.0.2 - is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 @@ -8023,25 +6399,9 @@ snapshots: dependencies: has-tostringtag: 1.0.2 - is-descriptor@0.1.7: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - - is-descriptor@1.0.3: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - is-docker@2.2.1: optional: true - is-extendable@0.1.1: {} - - is-extendable@1.0.1: - dependencies: - is-plain-object: 2.0.4 - is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -8068,24 +6428,12 @@ snapshots: dependencies: has-tostringtag: 1.0.2 - is-number@3.0.0: - dependencies: - kind-of: 3.2.2 - is-number@7.0.0: {} is-obj@2.0.0: {} is-plain-obj@1.1.0: {} - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - - is-plain-object@5.0.0: {} - - is-potential-custom-element-name@1.0.1: {} - is-property@1.0.2: {} is-regex@1.1.4: @@ -8097,10 +6445,10 @@ snapshots: dependencies: call-bind: 1.0.7 - is-stream@1.1.0: {} - is-stream@2.0.1: {} + is-stream@3.0.0: {} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 @@ -8113,16 +6461,14 @@ snapshots: dependencies: has-symbols: 1.0.3 - is-text-path@1.0.1: + is-text-path@2.0.0: dependencies: - text-extensions: 1.9.0 + text-extensions: 2.4.0 is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 - is-typedarray@1.0.0: {} - is-weakref@1.0.2: dependencies: call-bind: 1.0.7 @@ -8134,36 +6480,36 @@ snapshots: is-docker: 2.2.1 optional: true - isarray@1.0.0: {} - isarray@2.0.5: {} isexe@2.0.0: {} - isobject@2.1.0: + isomorphic-unfetch@3.1.0(encoding@0.1.13): dependencies: - isarray: 1.0.0 - - isobject@3.0.1: {} + node-fetch: 2.6.7(encoding@0.1.13) + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@4.0.3: + istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color - istanbul-lib-instrument@5.2.1: + istanbul-lib-instrument@6.0.2: dependencies: - '@babel/core': 7.24.4 - '@babel/parser': 7.24.4 + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 + semver: 7.6.2 transitivePeerDependencies: - supports-color @@ -8175,7 +6521,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.4 + debug: 4.3.5 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -8186,500 +6532,522 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jest-changed-files@26.6.2: + jackspeak@4.0.1: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 + chalk: 4.1.1 + co: 4.6.0 + dedent: 1.5.3 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@18.11.18)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)): dependencies: - '@jest/types': 26.6.2 - execa: 4.1.0 - throat: 5.0.0 + '@jest/core': 29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.1 + create-jest: 29.7.0(@types/node@18.11.18)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@18.11.18)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + optionalDependencies: + node-notifier: 8.0.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node - jest-cli@26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)): + jest-cli@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)): dependencies: - '@jest/core': 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 + '@jest/core': 29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.1 + create-jest: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) exit: 0.1.2 - graceful-fs: 4.2.11 import-local: 3.1.0 - is-ci: 2.0.0 - jest-config: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-util: 26.6.2 - jest-validate: 26.6.2 - prompts: 2.4.2 - yargs: 15.4.1 + jest-config: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + optionalDependencies: + node-notifier: 8.0.2 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' + - babel-plugin-macros - supports-color - ts-node - - utf-8-validate - jest-cli@26.6.3(ts-node@10.9.2(typescript@4.9.4)): + jest-cli@29.7.0(@types/node@20.5.1)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)): dependencies: - '@jest/core': 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 + '@jest/core': 29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.1 + create-jest: 29.7.0(@types/node@20.5.1)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) exit: 0.1.2 - graceful-fs: 4.2.11 import-local: 3.1.0 - is-ci: 2.0.0 - jest-config: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-util: 26.6.2 - jest-validate: 26.6.2 - prompts: 2.4.2 - yargs: 15.4.1 + jest-config: 29.7.0(@types/node@20.5.1)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + optionalDependencies: + node-notifier: 8.0.2 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' + - babel-plugin-macros - supports-color - ts-node - - utf-8-validate - jest-config@26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)): + jest-config@29.7.0(@types/node@18.11.18)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)): dependencies: - '@babel/core': 7.24.4 - '@jest/test-sequencer': 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - '@jest/types': 26.6.2 - babel-jest: 26.6.3(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) chalk: 4.1.1 + ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-environment-jsdom: 26.6.2 - jest-environment-node: 26.6.2 - jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - micromatch: 4.0.5 - pretty-format: 26.6.2 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 optionalDependencies: - ts-node: 10.9.2(@types/node@18.11.18)(typescript@4.9.4) + '@types/node': 18.11.18 + ts-node: 10.9.2(@types/node@18.11.18)(typescript@5.4.5) transitivePeerDependencies: - - bufferutil - - canvas + - babel-plugin-macros - supports-color - - utf-8-validate - jest-config@26.6.3(ts-node@10.9.2(typescript@4.9.4)): + jest-config@29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)): dependencies: - '@babel/core': 7.24.4 - '@jest/test-sequencer': 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - '@jest/types': 26.6.2 - babel-jest: 26.6.3(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) chalk: 4.1.1 + ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-environment-jsdom: 26.6.2 - jest-environment-node: 26.6.2 - jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - micromatch: 4.0.5 - pretty-format: 26.6.2 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 optionalDependencies: - ts-node: 10.9.2(typescript@4.9.4) + '@types/node': 20.0.0 + ts-node: 10.9.2(@types/node@18.11.18)(typescript@5.4.5) transitivePeerDependencies: - - bufferutil - - canvas + - babel-plugin-macros - supports-color - - utf-8-validate - jest-diff@26.6.2: + jest-config@29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)): dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) chalk: 4.1.1 - diff-sequences: 26.6.2 - jest-get-type: 26.3.0 - pretty-format: 26.6.2 - - jest-docblock@26.0.0: - dependencies: - detect-newline: 3.1.0 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.0.0 + ts-node: 10.9.2(@types/node@20.0.0)(typescript@5.4.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color - jest-each@26.6.2: + jest-config@29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)): dependencies: - '@jest/types': 26.6.2 + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) chalk: 4.1.1 - jest-get-type: 26.3.0 - jest-util: 26.6.2 - pretty-format: 26.6.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.0.0 + ts-node: 10.9.2(@types/node@20.5.1)(typescript@5.4.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color - jest-environment-jsdom@26.6.2: + jest-config@29.7.0(@types/node@20.5.1)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)): dependencies: - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 - jest-mock: 26.6.2 - jest-util: 26.6.2 - jsdom: 16.7.0 + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + chalk: 4.1.1 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.5.1 + ts-node: 10.9.2(@types/node@20.5.1)(typescript@5.4.5) transitivePeerDependencies: - - bufferutil - - canvas + - babel-plugin-macros - supports-color - - utf-8-validate - jest-environment-node@26.6.2: + jest-diff@29.7.0: dependencies: - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 - jest-mock: 26.6.2 - jest-util: 26.6.2 + chalk: 4.1.1 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.1 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 - jest-get-type@26.3.0: {} + jest-get-type@29.6.3: {} - jest-haste-map@26.6.2: + jest-haste-map@29.7.0: dependencies: - '@jest/types': 26.6.2 + '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 18.11.18 + '@types/node': 20.0.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 - jest-regex-util: 26.0.0 - jest-serializer: 26.6.2 - jest-util: 26.6.2 - jest-worker: 26.6.2 - micromatch: 4.0.5 - sane: 4.1.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.7 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 - transitivePeerDependencies: - - supports-color - jest-jasmine2@26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)): + jest-leak-detector@29.7.0: dependencies: - '@babel/traverse': 7.24.1 - '@jest/environment': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 - chalk: 4.1.1 - co: 4.6.0 - expect: 26.6.2 - is-generator-fn: 2.1.0 - jest-each: 26.6.2 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-runtime: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - pretty-format: 26.6.2 - throat: 5.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - jest-jasmine2@26.6.3(ts-node@10.9.2(typescript@4.9.4)): + jest-matcher-utils@29.7.0: dependencies: - '@babel/traverse': 7.24.1 - '@jest/environment': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 chalk: 4.1.1 - co: 4.6.0 - expect: 26.6.2 - is-generator-fn: 2.1.0 - jest-each: 26.6.2 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-runtime: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - pretty-format: 26.6.2 - throat: 5.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - - jest-leak-detector@26.6.2: - dependencies: - jest-get-type: 26.3.0 - pretty-format: 26.6.2 - - jest-matcher-utils@26.6.2: - dependencies: - chalk: 4.1.1 - jest-diff: 26.6.2 - jest-get-type: 26.3.0 - pretty-format: 26.6.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - jest-message-util@26.6.2: + jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.24.2 - '@jest/types': 26.6.2 + '@babel/code-frame': 7.24.7 + '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.1 graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 26.6.2 + micromatch: 4.0.7 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@26.6.2: + jest-mock@29.7.0: dependencies: - '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 + jest-util: 29.7.0 - jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): optionalDependencies: - jest-resolve: 26.6.2 + jest-resolve: 29.7.0 - jest-regex-util@26.0.0: {} + jest-regex-util@29.6.3: {} - jest-resolve-dependencies@26.6.3: + jest-resolve-dependencies@29.7.0: dependencies: - '@jest/types': 26.6.2 - jest-regex-util: 26.0.0 - jest-snapshot: 26.6.2 + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - jest-resolve@26.6.2: + jest-resolve@29.7.0: dependencies: - '@jest/types': 26.6.2 chalk: 4.1.1 graceful-fs: 4.2.11 - jest-pnp-resolver: 1.2.3(jest-resolve@26.6.2) - jest-util: 26.6.2 - read-pkg-up: 7.0.1 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 resolve: 1.22.8 + resolve.exports: 2.0.2 slash: 3.0.0 - jest-runner@26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)): + jest-runner@29.7.0: dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 chalk: 4.1.1 - emittery: 0.7.2 - exit: 0.1.2 + emittery: 0.13.1 graceful-fs: 4.2.11 - jest-config: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-docblock: 26.0.0 - jest-haste-map: 26.6.2 - jest-leak-detector: 26.6.2 - jest-message-util: 26.6.2 - jest-resolve: 26.6.2 - jest-runtime: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-util: 26.6.2 - jest-worker: 26.6.2 - source-map-support: 0.5.21 - throat: 5.0.0 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - ts-node - - utf-8-validate - jest-runner@26.6.3(ts-node@10.9.2(typescript@4.9.4)): + jest-runtime@29.7.0: dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 - chalk: 4.1.1 - emittery: 0.7.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-docblock: 26.0.0 - jest-haste-map: 26.6.2 - jest-leak-detector: 26.6.2 - jest-message-util: 26.6.2 - jest-resolve: 26.6.2 - jest-runtime: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-util: 26.6.2 - jest-worker: 26.6.2 - source-map-support: 0.5.21 - throat: 5.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - - jest-runtime@26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)): - dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/globals': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/yargs': 15.0.19 - chalk: 4.1.1 - cjs-module-lexer: 0.6.0 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-config: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-mock: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - slash: 3.0.0 - strip-bom: 4.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - - jest-runtime@26.6.3(ts-node@10.9.2(typescript@4.9.4)): - dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/globals': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/yargs': 15.0.19 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 chalk: 4.1.1 - cjs-module-lexer: 0.6.0 + cjs-module-lexer: 1.3.1 collect-v8-coverage: 1.0.2 - exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 - jest-config: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-mock: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 strip-bom: 4.0.0 - yargs: 15.4.1 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - ts-node - - utf-8-validate - jest-serializer@26.6.2: - dependencies: - '@types/node': 18.11.18 - graceful-fs: 4.2.11 - - jest-snapshot@26.6.2: - dependencies: - '@babel/types': 7.24.0 - '@jest/types': 26.6.2 - '@types/babel__traverse': 7.20.5 - '@types/prettier': 2.7.3 + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/types': 7.24.7 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) chalk: 4.1.1 - expect: 26.6.2 + expect: 29.7.0 graceful-fs: 4.2.11 - jest-diff: 26.6.2 - jest-get-type: 26.3.0 - jest-haste-map: 26.6.2 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-resolve: 26.6.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 natural-compare: 1.4.0 - pretty-format: 26.6.2 - semver: 7.6.0 + pretty-format: 29.7.0 + semver: 7.6.2 transitivePeerDependencies: - supports-color - jest-util@26.6.2: + jest-util@29.7.0: dependencies: - '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 chalk: 4.1.1 + ci-info: 3.9.0 graceful-fs: 4.2.11 - is-ci: 2.0.0 - micromatch: 4.0.5 + picomatch: 2.3.1 - jest-validate@26.6.2: + jest-validate@29.7.0: dependencies: - '@jest/types': 26.6.2 + '@jest/types': 29.6.3 camelcase: 6.3.0 chalk: 4.1.1 - jest-get-type: 26.3.0 + jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 26.6.2 + pretty-format: 29.7.0 - jest-watcher@26.6.2: + jest-watcher@29.7.0: dependencies: - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.0.0 ansi-escapes: 4.3.2 chalk: 4.1.1 - jest-util: 26.6.2 + emittery: 0.13.1 + jest-util: 29.7.0 string-length: 4.0.2 - jest-worker@26.6.2: + jest-worker@29.7.0: dependencies: - '@types/node': 18.11.18 + '@types/node': 20.0.0 + jest-util: 29.7.0 merge-stream: 2.0.0 - supports-color: 7.2.0 + supports-color: 8.1.1 - jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)): + jest@29.7.0(@types/node@18.11.18)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)): dependencies: - '@jest/core': 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + '@jest/core': 29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) + '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 26.6.3(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) + jest-cli: 29.7.0(@types/node@18.11.18)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) + optionalDependencies: + node-notifier: 8.0.2 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' + - babel-plugin-macros - supports-color - ts-node - - utf-8-validate - jest@26.0.1(ts-node@10.9.2(typescript@4.9.4)): + jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)): dependencies: - '@jest/core': 26.6.3(ts-node@10.9.2(typescript@4.9.4)) + '@jest/core': 29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) + '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 26.6.3(ts-node@10.9.2(typescript@4.9.4)) + jest-cli: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) + optionalDependencies: + node-notifier: 8.0.2 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' + - babel-plugin-macros - supports-color - ts-node - - utf-8-validate - jose@4.15.5: {} + jest@29.7.0(@types/node@20.5.1)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)): + dependencies: + '@jest/core': 29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.5.1)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) + optionalDependencies: + node-notifier: 8.0.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jiti@1.21.6: {} + + jose@4.15.7: {} js-sha256@0.9.0: {} @@ -8694,40 +7062,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@16.7.0: - dependencies: - abab: 2.0.6 - acorn: 8.11.3 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.4.3 - domexception: 2.0.1 - escodegen: 2.1.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.9 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.9 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jsesc@2.5.2: {} json-buffer@3.0.1: {} @@ -8740,10 +7074,6 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json-stable-stringify@0.0.1: - dependencies: - jsonify: 0.0.1 - json5@2.2.3: {} jsonc-parser@3.2.1: {} @@ -8758,71 +7088,20 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonify@0.0.1: {} - - jsonpack@1.1.5: {} - jsonparse@1.3.1: {} jsonpointer@5.0.1: {} - jsonwebtoken@8.5.1: - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 5.7.2 - - jwa@1.4.1: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - - jws@3.2.2: - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - keyv@4.5.4: dependencies: json-buffer: 3.0.1 - kind-of@3.2.2: - dependencies: - is-buffer: 1.1.6 - - kind-of@4.0.0: - dependencies: - is-buffer: 1.1.6 - kind-of@6.0.3: {} kleur@3.0.3: {} kleur@4.1.5: {} - ky-universal@0.3.0(encoding@0.1.13)(ky@0.12.0): - dependencies: - abort-controller: 3.0.0 - ky: 0.12.0 - node-fetch: 2.6.7(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - ky@0.12.0: {} - - labeled-stream-splicer@2.0.2: - dependencies: - inherits: 2.0.4 - stream-splicer: 2.0.1 - leven@3.1.0: {} levn@0.4.1: @@ -8830,8 +7109,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - li@1.3.0: {} - lines-and-columns@1.2.4: {} load-yaml-file@0.2.0: @@ -8851,46 +7128,24 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash.camelcase@4.3.0: {} - - lodash.find@4.6.0: {} - - lodash.flatten@4.4.0: {} - - lodash.includes@4.3.0: {} - - lodash.isboolean@3.0.3: {} - - lodash.isinteger@4.0.4: {} - - lodash.isnumber@3.0.3: {} + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 - lodash.isobject@3.0.2: {} + lodash.camelcase@4.3.0: {} lodash.isplainobject@4.0.6: {} - lodash.isstring@4.0.1: {} - lodash.kebabcase@4.1.1: {} - lodash.keys@4.2.0: {} - - lodash.mapvalues@4.6.0: {} - - lodash.memoize@3.0.4: {} - lodash.memoize@4.1.2: {} lodash.merge@4.6.2: {} lodash.mergewith@4.6.2: {} - lodash.once@4.1.1: {} - lodash.snakecase@4.1.1: {} - lodash.sortby@4.7.0: {} - lodash.startcase@4.4.0: {} lodash.uniq@4.5.0: {} @@ -8901,6 +7156,8 @@ snapshots: lowercase-keys@2.0.0: {} + lru-cache@11.0.0: {} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 @@ -8910,17 +7167,13 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lru_map@0.4.1: {} lunr@2.3.9: {} make-dir@4.0.0: dependencies: - semver: 7.6.0 + semver: 7.6.2 make-error@1.3.6: {} @@ -8928,29 +7181,13 @@ snapshots: dependencies: tmpl: 1.0.5 - map-cache@0.2.2: {} - map-obj@1.0.1: {} map-obj@4.3.0: {} - map-visit@1.0.0: - dependencies: - object-visit: 1.0.1 - marked@4.3.0: {} - md5.js@1.3.5: - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - memfs-or-file-map-to-github-branch@1.2.1(encoding@0.1.13): - dependencies: - '@octokit/rest': 18.12.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding + meow@12.1.1: {} meow@6.1.1: dependencies: @@ -8966,60 +7203,19 @@ snapshots: type-fest: 0.13.1 yargs-parser: 18.1.3 - meow@8.1.2: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - merge-stream@2.0.0: {} merge2@1.4.1: {} - micromatch@3.1.10: + micromatch@4.0.7: dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 - miller-rabin@4.0.1: - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} + mimic-response@1.0.1: {} mimic-response@3.1.0: {} @@ -9030,10 +7226,18 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + minimatch@9.0.4: dependencies: brace-expansion: 2.0.1 @@ -9052,66 +7256,21 @@ snapshots: minipass@5.0.0: {} + minipass@7.1.2: {} + minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 - mixin-deep@1.3.2: - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - mixme@0.5.10: {} - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - mkdirp@1.0.4: {} - module-deps@6.2.3: - dependencies: - JSONStream: 1.3.5 - browser-resolve: 2.0.0 - cached-path-relative: 1.1.0 - concat-stream: 1.6.2 - defined: 1.0.1 - detective: 5.2.1 - duplexer2: 0.1.4 - inherits: 2.0.4 - parents: 1.0.1 - readable-stream: 2.3.8 - resolve: 1.22.8 - stream-combiner2: 1.1.1 - subarg: 1.0.0 - through2: 2.0.5 - xtend: 4.0.2 - - ms@2.0.0: {} - ms@2.1.2: {} - ms@2.1.3: {} - mustache@4.0.0: {} - nanomatch@1.2.13: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - natural-compare@1.4.0: {} near-abi@0.1.1: @@ -9172,17 +7331,8 @@ snapshots: transitivePeerDependencies: - encoding - nice-try@1.0.5: {} - node-addon-api@5.1.0: {} - node-cleanup@2.1.2: {} - - node-fetch@1.7.3: - dependencies: - encoding: 0.1.13 - is-stream: 1.1.0 - node-fetch@2.6.7(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -9194,7 +7344,7 @@ snapshots: detect-libc: 2.0.3 optional: true - node-gyp-build@4.8.0: {} + node-gyp-build@4.8.1: {} node-int64@0.4.0: {} @@ -9202,7 +7352,7 @@ snapshots: dependencies: growly: 1.3.0 is-wsl: 2.2.0 - semver: 7.6.0 + semver: 7.6.2 shellwords: 0.1.1 uuid: 8.3.2 which: 2.0.2 @@ -9219,45 +7369,22 @@ snapshots: semver: 5.7.2 validate-npm-package-license: 3.0.4 - normalize-package-data@3.0.3: - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.6.0 - validate-npm-package-license: 3.0.4 - - normalize-path@2.1.1: - dependencies: - remove-trailing-separator: 1.1.0 - normalize-path@3.0.0: {} normalize-url@6.1.0: {} - npm-run-path@2.0.2: - dependencies: - path-key: 2.0.1 - npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - nwsapi@2.2.9: {} - - object-copy@0.1.0: + npm-run-path@5.3.0: dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 + path-key: 4.0.0 object-inspect@1.13.1: {} object-keys@1.1.1: {} - object-visit@1.0.1: - dependencies: - isobject: 3.0.1 - object.assign@4.1.5: dependencies: call-bind: 1.0.7 @@ -9265,10 +7392,6 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 - object.pick@1.3.0: - dependencies: - isobject: 3.0.1 - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -9277,33 +7400,29 @@ snapshots: dependencies: mimic-fn: 2.1.0 - optionator@0.9.3: + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - - os-browserify@0.3.0: {} + word-wrap: 1.2.5 os-tmpdir@1.0.2: {} outdent@0.5.0: {} - override-require@1.1.1: {} - p-cancelable@2.1.1: {} - p-each-series@2.2.0: {} - p-filter@2.1.0: dependencies: p-map: 2.1.0 - p-finally@1.0.0: {} - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -9312,6 +7431,10 @@ snapshots: dependencies: yocto-queue: 0.1.0 + p-limit@4.0.0: + dependencies: + yocto-queue: 1.0.0 + p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -9320,88 +7443,52 @@ snapshots: dependencies: p-limit: 3.1.0 + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + p-map@2.1.0: {} p-try@2.2.0: {} - pako@1.0.11: {} + package-json-from-dist@1.0.0: {} parent-module@1.0.1: dependencies: callsites: 3.1.0 - parents@1.0.1: - dependencies: - path-platform: 0.11.15 - - parse-asn1@5.1.7: - dependencies: - asn1.js: 4.10.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - hash-base: 3.0.4 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - - parse-diff@0.7.1: {} - - parse-git-config@2.0.3: - dependencies: - expand-tilde: 2.0.2 - git-config-path: 1.0.1 - ini: 1.3.8 - - parse-github-url@1.0.2: {} - parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-link-header@2.0.0: - dependencies: - xtend: 4.0.2 - - parse-passwd@1.0.0: {} - - parse5@6.0.1: {} - - pascalcase@0.1.1: {} - - path-browserify@0.0.1: {} - path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} + path-exists@5.0.0: {} - path-key@2.0.1: {} + path-is-absolute@1.0.1: {} path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} - path-platform@0.11.15: {} + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.0 + minipass: 7.1.2 path-type@4.0.0: {} - pbkdf2@3.1.2: - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - picocolors@1.0.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} pify@4.0.1: {} - pinpoint@1.1.0: {} - pirates@4.0.6: {} pkg-dir@4.2.0: @@ -9414,9 +7501,7 @@ snapshots: bytestreamjs: 2.0.1 pvtsutils: 1.3.5 pvutils: 1.1.3 - tslib: 2.6.2 - - posix-character-classes@0.1.1: {} + tslib: 2.6.3 possible-typed-array-names@1.0.0: {} @@ -9431,21 +7516,11 @@ snapshots: prettier@2.8.8: {} - pretty-format@26.6.2: - dependencies: - '@jest/types': 26.6.2 - ansi-regex: 5.0.1 - ansi-styles: 4.3.0 - react-is: 17.0.2 - - prettyjson@1.2.5: + pretty-format@29.7.0: dependencies: - colors: 1.4.0 - minimist: 1.2.8 - - process-nextick-args@2.0.1: {} - - process@0.11.10: {} + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 promisify-child-process@4.1.2: {} @@ -9462,51 +7537,23 @@ snapshots: pseudomap@1.0.2: {} - psl@1.9.0: {} - - public-encrypt@4.0.3: - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.7 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - punycode@1.4.1: {} - punycode@2.3.1: {} + pure-rand@6.1.0: {} + pure-uuid@1.8.1: {} pvtsutils@1.3.5: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 pvutils@1.1.3: {} - q@1.5.1: {} - - qs@6.12.1: - dependencies: - side-channel: 1.0.6 - - query-string@6.14.1: - dependencies: - decode-uri-component: 0.2.2 - filter-obj: 1.1.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 - - querystring-es3@0.2.1: {} - - querystringify@2.2.0: {} - queue-microtask@1.2.3: {} quick-lru@4.0.1: {} @@ -9517,16 +7564,7 @@ snapshots: dependencies: safe-buffer: 5.2.1 - randomfill@1.0.4: - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - react-is@17.0.2: {} - - read-only-stream@2.0.0: - dependencies: - readable-stream: 2.3.8 + react-is@18.3.1: {} read-pkg-up@7.0.1: dependencies: @@ -9548,38 +7586,13 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readline-sync@1.4.10: {} - redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - regenerator-runtime@0.13.11: {} - regenerator-runtime@0.14.1: {} - regex-not@1.0.2: - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 @@ -9589,20 +7602,12 @@ snapshots: regexpp@3.2.0: {} - remove-trailing-separator@1.1.0: {} - - repeat-element@1.1.4: {} - - repeat-string@1.6.1: {} - require-directory@2.1.1: {} require-from-string@2.0.2: {} require-main-filename@2.0.0: {} - requires-port@1.0.0: {} - resolve-alpn@1.2.1: {} resolve-cwd@3.0.0: @@ -9613,13 +7618,7 @@ snapshots: resolve-from@5.0.0: {} - resolve-global@1.0.0: - dependencies: - global-dirs: 0.1.1 - - resolve-url@0.2.1: {} - - resolve@1.1.7: {} + resolve.exports@2.0.2: {} resolve@1.22.8: dependencies: @@ -9631,8 +7630,6 @@ snapshots: dependencies: lowercase-keys: 2.0.0 - ret@0.1.15: {} - retry@0.12.0: {} reusify@1.0.4: {} @@ -9641,12 +7638,10 @@ snapshots: dependencies: glob: 7.2.3 - ripemd160@2.0.2: + rimraf@6.0.1: dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - - rsvp@4.8.5: {} + glob: 11.0.0 + package-json-from-dist: 1.0.0 run-parallel@1.2.0: dependencies: @@ -9654,7 +7649,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 safe-array-concat@1.1.2: dependencies: @@ -9663,8 +7658,6 @@ snapshots: has-symbols: 1.0.3 isarray: 2.0.5 - safe-buffer@5.1.2: {} - safe-buffer@5.2.1: {} safe-regex-test@1.0.3: @@ -9673,35 +7666,13 @@ snapshots: es-errors: 1.3.0 is-regex: 1.1.4 - safe-regex@1.1.0: - dependencies: - ret: 0.1.15 - safer-buffer@2.1.2: {} - sane@4.1.0: - dependencies: - '@cnakazawa/watch': 1.0.4 - anymatch: 2.0.0 - capture-exit: 2.0.0 - exec-sh: 0.3.6 - execa: 1.0.0 - fb-watchman: 2.0.2 - micromatch: 3.1.10 - minimist: 1.2.8 - walker: 1.0.8 - transitivePeerDependencies: - - supports-color - - saxes@5.0.1: - dependencies: - xmlchars: 2.2.0 - secp256k1@5.0.0: dependencies: elliptic: 6.5.5 node-addon-api: 5.1.0 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 semver@5.7.2: {} @@ -9709,13 +7680,7 @@ snapshots: semver@7.1.1: {} - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + semver@7.6.2: {} set-blocking@2.0.0: {} @@ -9735,29 +7700,8 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - set-value@2.0.1: - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - setprototypeof@1.1.1: {} - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - shasum-object@1.0.0: - dependencies: - fast-safe-stringify: 2.1.1 - - shasum@1.0.2: - dependencies: - json-stable-stringify: 0.0.1 - sha.js: 2.4.11 - shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -9791,7 +7735,7 @@ snapshots: signal-exit@3.0.7: {} - simple-concat@1.0.1: {} + signal-exit@4.1.0: {} sisteransi@1.0.5: {} @@ -9806,50 +7750,13 @@ snapshots: wcwidth: 1.0.1 yargs: 15.4.1 - snapdragon-node@2.1.1: - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - - snapdragon-util@3.0.1: - dependencies: - kind-of: 3.2.2 - - snapdragon@0.8.2: - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - - source-map-resolve@0.5.3: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - - source-map-support@0.5.21: + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map-url@0.4.1: {} - - source-map@0.5.7: {} - source-map@0.6.1: {} - source-map@0.7.4: {} - spawn-command@0.0.2-1: {} spawndamnit@2.0.0: @@ -9860,26 +7767,18 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 - - spdx-license-ids@3.0.17: {} - - split-on-first@1.1.0: {} + spdx-license-ids: 3.0.18 - split-string@3.1.0: - dependencies: - extend-shallow: 3.0.2 + spdx-license-ids@3.0.18: {} - split2@3.2.2: - dependencies: - readable-stream: 3.6.2 + split2@4.2.0: {} sprintf-js@1.0.3: {} @@ -9887,42 +7786,12 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 - static-extend@0.1.2: - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - statuses@1.5.0: {} - stream-browserify@2.0.2: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - stream-combiner2@1.1.1: - dependencies: - duplexer2: 0.1.4 - readable-stream: 2.3.8 - - stream-http@2.8.3: - dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 2.3.8 - to-arraybuffer: 1.0.1 - xtend: 4.0.2 - - stream-splicer@2.0.1: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-transform@2.1.3: dependencies: mixme: 0.5.10 - strict-uri-encode@2.0.0: {} - string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -9934,6 +7803,12 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 @@ -9953,36 +7828,28 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + strip-bom@3.0.0: {} strip-bom@4.0.0: {} - strip-eof@1.0.0: {} - strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 strip-json-comments@3.1.1: {} - subarg@1.0.0: - dependencies: - minimist: 1.2.8 - supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -9995,24 +7862,8 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@1.0.1: - dependencies: - has-flag: 2.0.0 - supports-color: 5.5.0 - - supports-hyperlinks@2.3.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - supports-preserve-symlinks-flag@1.0.0: {} - symbol-tree@3.2.4: {} - - syntax-error@1.4.0: - dependencies: - acorn-node: 1.8.2 - tar@6.2.1: dependencies: chownr: 2.0.0 @@ -10026,18 +7877,6 @@ snapshots: term-size@2.2.1: {} - terminal-link@2.1.1: - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - - terser@3.17.0: - dependencies: - acorn: 8.11.3 - commander: 2.20.3 - source-map: 0.6.1 - source-map-support: 0.5.21 - test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -10046,32 +7885,17 @@ snapshots: text-encoding-utf-8@1.0.2: {} - text-extensions@1.9.0: {} + text-extensions@2.4.0: {} text-table@0.2.0: {} - throat@5.0.0: {} - - through2@2.0.5: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - - through2@4.0.2: - dependencies: - readable-stream: 3.6.2 - through@2.3.8: {} - timers-browserify@1.4.2: - dependencies: - process: 0.11.10 - - tldts-core@6.1.18: {} + tldts-core@6.1.28: {} tldts@6.0.23: dependencies: - tldts-core: 6.1.18 + tldts-core: 6.1.28 tmp@0.0.33: dependencies: @@ -10079,84 +7903,79 @@ snapshots: tmpl@1.0.5: {} - to-arraybuffer@1.0.1: {} - to-fast-properties@2.0.0: {} - to-object-path@0.3.0: - dependencies: - kind-of: 3.2.2 - - to-regex-range@2.1.1: - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - to-regex@3.0.2: - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - toidentifier@1.0.0: {} - tough-cookie@4.1.3: - dependencies: - psl: 1.9.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - tr46@0.0.3: {} - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - - tr46@2.1.0: - dependencies: - punycode: 2.3.1 - tree-kill@1.2.2: {} trim-newlines@3.0.1: {} - ts-jest@26.5.6(jest@26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)))(typescript@4.9.4): + ts-api-utils@1.3.0(typescript@5.4.5): + dependencies: + typescript: 5.4.5 + + ts-jest@29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@18.11.18)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)))(typescript@5.4.5): dependencies: bs-logger: 0.2.6 - buffer-from: 1.1.2 fast-json-stable-stringify: 2.1.0 - jest: 26.0.1(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4)) - jest-util: 26.6.2 + jest: 29.7.0(@types/node@18.11.18)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) + jest-util: 29.7.0 json5: 2.2.3 - lodash: 4.17.21 + lodash.memoize: 4.1.2 make-error: 1.3.6 - mkdirp: 1.0.4 - semver: 7.1.1 - typescript: 4.9.4 - yargs-parser: 20.2.9 + semver: 7.6.2 + typescript: 5.4.5 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.24.7 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) - ts-jest@26.5.6(jest@26.0.1(ts-node@10.9.2(typescript@4.9.4)))(typescript@4.9.4): + ts-jest@29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5): dependencies: bs-logger: 0.2.6 - buffer-from: 1.1.2 fast-json-stable-stringify: 2.1.0 - jest: 26.0.1(ts-node@10.9.2(typescript@4.9.4)) - jest-util: 26.6.2 + jest: 29.7.0(@types/node@20.0.0)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) + jest-util: 29.7.0 json5: 2.2.3 - lodash: 4.17.21 + lodash.memoize: 4.1.2 make-error: 1.3.6 - mkdirp: 1.0.4 - semver: 7.1.1 - typescript: 4.9.4 - yargs-parser: 20.2.9 + semver: 7.6.2 + typescript: 5.4.5 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.24.7 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + + ts-jest@29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.5.1)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)))(typescript@5.4.5): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.5.1)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.2 + typescript: 5.4.5 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.24.7 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) - ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.4): + ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -10164,63 +7983,56 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 18.11.18 - acorn: 8.11.3 - acorn-walk: 8.3.2 + acorn: 8.12.0 + acorn-walk: 8.3.3 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.4 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@20.5.1)(typescript@4.9.4): + ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.5.1 - acorn: 8.11.3 - acorn-walk: 8.3.2 + '@types/node': 20.0.0 + acorn: 8.12.0 + acorn-walk: 8.3.3 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.4 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optional: true - ts-node@10.9.2(typescript@4.9.4): + ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - acorn: 8.11.3 - acorn-walk: 8.3.2 + '@types/node': 20.5.1 + acorn: 8.12.0 + acorn-walk: 8.3.3 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.4 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optional: true - tslib@1.14.1: {} - - tslib@2.6.2: {} - - tsutils@3.21.0(typescript@4.9.4): - dependencies: - tslib: 1.14.1 - typescript: 4.9.4 - - tty-browserify@0.0.1: {} + tslib@2.6.3: {} tty-table@4.2.3: dependencies: @@ -10299,8 +8111,6 @@ snapshots: type-fest@0.13.1: {} - type-fest@0.18.1: {} - type-fest@0.20.2: {} type-fest@0.21.3: {} @@ -10341,31 +8151,15 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - - typedarray@0.0.6: {} - - typedoc@0.25.3(typescript@4.9.4): + typedoc@0.25.13(typescript@5.4.5): dependencies: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.4 shiki: 0.14.7 - typescript: 4.9.4 - - typescript@4.9.4: {} - - uglifyify@5.0.1: - dependencies: - convert-source-map: 1.1.3 - extend: 1.3.0 - minimatch: 3.1.2 - terser: 3.17.0 - through: 2.3.8 + typescript: 5.4.5 - umd@3.0.3: {} + typescript@5.4.5: {} unbox-primitive@1.0.2: dependencies: @@ -10374,101 +8168,47 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - undeclared-identifiers@1.1.3: - dependencies: - acorn-node: 1.8.2 - dash-ast: 1.0.0 - get-assigned-identifiers: 1.2.0 - simple-concat: 1.0.1 - xtend: 4.0.2 - - union-value@1.0.1: - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - - universal-url@2.0.0: - dependencies: - hasurl: 1.0.0 - whatwg-url: 7.1.0 + unfetch@4.2.0: {} - universal-user-agent@6.0.1: {} + unicorn-magic@0.1.0: {} universalify@0.1.2: {} - universalify@0.2.0: {} - universalify@2.0.1: {} - unset-value@1.0.0: - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - - update-browserslist-db@1.0.13(browserslist@4.23.0): + update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 uri-js@4.4.1: dependencies: punycode: 2.3.1 - urix@0.1.0: {} - - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - url@0.11.3: - dependencies: - punycode: 1.4.1 - qs: 6.12.1 - - use@3.1.1: {} - - util-deprecate@1.0.2: {} - - util@0.10.4: - dependencies: - inherits: 2.0.3 - uuid@8.3.2: optional: true - v8-compile-cache-lib@3.0.1: {} + v8-compile-cache-lib@3.0.1: + optional: true v8-compile-cache@2.4.0: {} - v8-to-istanbul@7.1.2: + v8-to-istanbul@9.2.0: dependencies: + '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 1.9.0 - source-map: 0.7.4 + convert-source-map: 2.0.0 validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vm-browserify@1.1.2: {} - vscode-oniguruma@1.7.0: {} vscode-textmate@8.0.0: {} - w3c-hr-time@1.0.2: - dependencies: - browser-process-hrtime: 1.0.0 - - w3c-xmlserializer@2.0.0: - dependencies: - xml-name-validator: 3.0.0 - walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -10477,45 +8217,21 @@ snapshots: dependencies: defaults: 1.0.4 - webcrypto-core@1.7.9: + webcrypto-core@1.8.0: dependencies: '@peculiar/asn1-schema': 2.3.8 '@peculiar/json-schema': 1.1.12 asn1js: 3.0.5 pvtsutils: 1.3.5 - tslib: 2.6.2 + tslib: 2.6.3 webidl-conversions@3.0.1: {} - webidl-conversions@4.0.2: {} - - webidl-conversions@5.0.0: {} - - webidl-conversions@6.1.0: {} - - whatwg-encoding@1.0.5: - dependencies: - iconv-lite: 0.4.24 - - whatwg-mimetype@2.3.0: {} - whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - - whatwg-url@8.7.0: - dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 - which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 @@ -10547,6 +8263,8 @@ snapshots: dependencies: isexe: 2.0.0 + word-wrap@1.2.5: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -10559,20 +8277,18 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} - write-file-atomic@3.0.3: + write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 - is-typedarray: 1.0.0 signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - - ws@7.5.9: {} - - xml-name-validator@3.0.0: {} - - xmlchars@2.2.0: {} xtend@4.0.2: {} @@ -10591,8 +8307,6 @@ snapshots: camelcase: 5.3.1 decamelize: 1.2.0 - yargs-parser@20.2.9: {} - yargs-parser@21.1.1: {} yargs@15.4.1: @@ -10619,6 +8333,9 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yn@3.1.1: {} + yn@3.1.1: + optional: true yocto-queue@0.1.0: {} + + yocto-queue@1.0.0: {} diff --git a/tsconfig.base.json b/tsconfig.base.json deleted file mode 100644 index bdf0a92ecc..0000000000 --- a/tsconfig.base.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "esModuleInterop": true, - "module": "commonjs", - "target": "es2016", - "moduleResolution": "node", - "alwaysStrict": true, - "declaration": true, - "declarationMap": true, - "preserveSymlinks": true, - "preserveWatchOutput": true, - "pretty": false, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "noImplicitAny": false, - "noImplicitReturns": true, - "noUnusedLocals": true, - "experimentalDecorators": true, - "resolveJsonModule": true, - } -} diff --git a/tsconfig.browser.json b/tsconfig.browser.json deleted file mode 100644 index 473e66c139..0000000000 --- a/tsconfig.browser.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "lib": [ - "es2016", - "esnext", - "dom" - ], - } -} diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index e55fcd0b07..0000000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "lib": [ - "es2016", - "esnext" - ], - }, -} diff --git a/turbo.json b/turbo.json index f33c9656f2..0161019775 100644 --- a/turbo.json +++ b/turbo.json @@ -3,7 +3,7 @@ "pipeline": { "build": { "dependsOn": ["^build"], - "inputs": ["src/**/*.ts", "test/**/*.js"], + "inputs": ["src/**/*.ts", "test/**/*.js", "tsconfig.json"], "outputs": ["dist/**", "lib/**"] }, "test": { @@ -11,25 +11,13 @@ "inputs": ["src/**/*.ts", "test/**/*.js"] }, "lint": { - "inputs": ["src/**/*.ts", "test/**/*.js"], + "inputs": ["src/**/*.ts", "test/**/*.ts"], "outputs": [] }, - "lint:js": { - "inputs": ["test/**/*.js"], + "lint:fix": { + "inputs": ["src/**/*.ts", "test/**/*.ts"], "outputs": [] }, - "lint:js:fix": { - "inputs": ["test/**/*.js"], - "outputs": [] - }, - "lint:ts": { - "inputs": ["src/**/*.ts"], - "outputs": [] - }, - "lint:ts:fix": { - "inputs": ["src/**/*.ts"], - "outputs": [] - }, "clean": { "outputs": [], "cache": false