difftreelog
Merge pull request #802 from UniqueNetwork/tests/eth-helpers
in: master
51 files changed
tests/.eslintrc.jsondiffbeforeafterboth18 "mocha"18 "mocha"19 ],19 ],20 "rules": {20 "rules": {21 "@typescript-eslint/no-floating-promises": [22 "error"23 ],21 "indent": [24 "indent": [22 "error",25 "error",23 2,26 2,tests/package.jsondiffbeforeafterboth11 "@types/chai-subset": "^1.3.3",11 "@types/chai-subset": "^1.3.3",12 "@types/mocha": "^10.0.0",12 "@types/mocha": "^10.0.0",13 "@types/node": "^18.11.2",13 "@types/node": "^18.11.2",14 "@typescript-eslint/eslint-plugin": "^5.40.1",14 "@typescript-eslint/eslint-plugin": "^5.47.0",15 "@typescript-eslint/parser": "^5.40.1",15 "@typescript-eslint/parser": "^5.47.0",16 "chai": "^4.3.6",16 "chai": "^4.3.6",17 "chai-subset": "^1.6.0",17 "chai-subset": "^1.6.0",18 "eslint": "^8.25.0",18 "eslint": "^8.25.0",tests/src/apiConsts.test.tsdiffbeforeafterbothno syntactic changes
tests/src/app-promotion.seqtest.tsdiffbeforeafterbothno syntactic changes
tests/src/approve.test.tsdiffbeforeafterbothno syntactic changes
tests/src/burnItem.test.tsdiffbeforeafterbothno syntactic changes
tests/src/calibrate.tsdiffbeforeafterboth295 }295 }296}296}297297298// eslint-disable-next-line @typescript-eslint/no-floating-promises298(async () => {299(async () => {299 await usingEthPlaygrounds(async (helper: EthUniqueHelper, privateKey) => {300 await usingEthPlaygrounds(async (helper: EthUniqueHelper, privateKey) => {300 // Subsequent runs reduce error, as price line is not actually straight, this is a curve301 // Subsequent runs reduce error, as price line is not actually straight, this is a curvetests/src/createCollection.test.tsdiffbeforeafterbothno syntactic changes
tests/src/createMultipleItems.test.tsdiffbeforeafterbothno syntactic changes
tests/src/eth/collectionSponsoring.test.tsdiffbeforeafterboth101 expect(await collectionEvm.methods.hasCollectionPendingSponsor().call({from: owner})).to.be.true;101 expect(await collectionEvm.methods.hasCollectionPendingSponsor().call({from: owner})).to.be.true;102102103 await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor});103 await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor});104 let sponsorTuple = await collectionEvm.methods.collectionSponsor().call({from: owner});105 expect(helper.address.restoreCrossAccountFromBigInt(BigInt(sponsorTuple.sub))).to.be.eq(helper.address.ethToSubstrate(sponsor, true));104 expect(await collectionEvm.methods.hasCollectionPendingSponsor().call({from: owner})).to.be.false;106 expect(await collectionEvm.methods.hasCollectionPendingSponsor().call({from: owner})).to.be.false;105107106 await collectionEvm.methods.removeCollectionSponsor().send({from: owner});108 await collectionEvm.methods.removeCollectionSponsor().send({from: owner});107109108 const sponsorTuple = await collectionEvm.methods.collectionSponsor().call({from: owner});110 sponsorTuple = await collectionEvm.methods.collectionSponsor().call({from: owner});109 expect(sponsorTuple.eth).to.be.eq('0x0000000000000000000000000000000000000000');111 expect(sponsorTuple.eth).to.be.eq('0x0000000000000000000000000000000000000000');110 }));112 }));111113tests/src/eth/createFTCollection.test.tsdiffbeforeafterboth32 });32 });33 });33 });343435 // TODO move sponsorship tests to another file:35 // Soft-deprecated36 // Soft-deprecated36 itEth('[eth] Set sponsorship', async ({helper}) => {37 itEth('[eth] Set sponsorship', async ({helper}) => {37 const owner = await helper.eth.createAccountWithBalance(donor);38 const owner = await helper.eth.createAccountWithBalance(donor);94 .methods.isCollectionExist(collectionAddress).call())95 .methods.isCollectionExist(collectionAddress).call())95 .to.be.true;96 .to.be.true;9798 // check collectionOwner:99 const collectionEvm = await helper.ethNativeContract.collection(collectionAddress, 'ft', owner, true);100 const collectionOwner = await collectionEvm.methods.collectionOwner().call();101 expect(helper.address.restoreCrossAccountFromBigInt(BigInt(collectionOwner.sub))).to.eq(helper.address.ethToSubstrate(owner, true));96 });102 });9710398 itEth('destroyCollection', async ({helper}) => {104 itEth('destroyCollection', async ({helper}) => {tests/src/eth/createNFTCollection.test.tsdiffbeforeafterboth135 .methods.isCollectionExist(collectionAddress).call())135 .methods.isCollectionExist(collectionAddress).call())136 .to.be.true;136 .to.be.true;137138 // check collectionOwner:139 const collectionEvm = await helper.ethNativeContract.collection(collectionAddress, 'ft', owner, true);140 const collectionOwner = await collectionEvm.methods.collectionOwner().call();141 expect(helper.address.restoreCrossAccountFromBigInt(BigInt(collectionOwner.sub))).to.eq(helper.address.ethToSubstrate(owner, true));137 });142 });138});143});139144tests/src/eth/createRFTCollection.test.tsdiffbeforeafterboth88 ]);88 ]);89 });89 });9091 // this test will occasionally fail when in async environment.92 itEth.skip('Check collection address exist', async ({helper}) => {93 const owner = await helper.eth.createAccountWithBalance(donor);9495 const expectedCollectionId = +(await helper.callRpc('api.rpc.unique.collectionStats')).created + 1;96 const expectedCollectionAddress = helper.ethAddress.fromCollectionId(expectedCollectionId);97 const collectionHelpers = await helper.ethNativeContract.collectionHelpers(owner);9899 expect(await collectionHelpers.methods100 .isCollectionExist(expectedCollectionAddress)101 .call()).to.be.false;102103 await collectionHelpers.methods104 .createRFTCollection('A', 'A', 'A')105 .send({value: Number(2n * helper.balance.getOneTokenNominal())});106107 expect(await collectionHelpers.methods108 .isCollectionExist(expectedCollectionAddress)109 .call()).to.be.true;110 });11190112 // Soft-deprecated91 // Soft-deprecated113 itEth('[eth] Set sponsorship', async ({helper}) => {92 itEth('[eth] Set sponsorship', async ({helper}) => {167 .methods.isCollectionExist(collectionAddress).call())146 .methods.isCollectionExist(collectionAddress).call())168 .to.be.true;147 .to.be.true;148149 // check collectionOwner:150 const collectionEvm = await helper.ethNativeContract.collection(collectionAddress, 'ft', owner, true);151 const collectionOwner = await collectionEvm.methods.collectionOwner().call();152 expect(helper.address.restoreCrossAccountFromBigInt(BigInt(collectionOwner.sub))).to.eq(helper.address.ethToSubstrate(owner, true));169 });153 });170});154});171155tests/src/eth/evmCoder.test.tsdiffbeforeafterbothno syntactic changes
tests/src/eth/nonFungible.test.tsdiffbeforeafterboth167 expect(event.returnValues.to).to.be.equal(receiver);167 expect(event.returnValues.to).to.be.equal(receiver);168168169 expect(await contract.methods.tokenURI(tokenId).call()).to.be.equal('Test URI');169 expect(await contract.methods.tokenURI(tokenId).call()).to.be.equal('Test URI');170 console.log(await contract.methods.crossOwnerOf(tokenId).call());171 expect(await contract.methods.crossOwnerOf(tokenId).call()).to.be.like([receiver, '0']);170 expect(await contract.methods.crossOwnerOf(tokenId).call()).to.be.like([receiver, '0']);172 // TODO: this wont work right now, need release 919000 first171 // TODO: this wont work right now, need release 919000 first173 // await helper.methods.setOffchainSchema(collectionIdAddress, 'https://offchain-service.local/token-info/{id}').send();172 // await helper.methods.setOffchainSchema(collectionIdAddress, 'https://offchain-service.local/token-info/{id}').send();tests/src/eth/proxyContract.test.tsdiffbeforeafterbothno syntactic changes
tests/src/eth/scheduling.test.tsdiffbeforeafterbothno syntactic changes
tests/src/eth/util/index.tsdiffbeforeafterbothno syntactic changes
tests/src/fungible.test.tsdiffbeforeafterbothno syntactic changes
tests/src/inflation.seqtest.tsdiffbeforeafterbothno syntactic changes
tests/src/interfaces/unique/definitions.tsdiffbeforeafterbothno syntactic changes
tests/src/limits.test.tsdiffbeforeafterbothno syntactic changes
tests/src/nesting/collectionProperties.seqtest.tsdiffbeforeafterbothno syntactic changes
tests/src/nesting/collectionProperties.test.tsdiffbeforeafterbothno syntactic changes
tests/src/nesting/graphs.test.tsdiffbeforeafterbothno syntactic changes
tests/src/nesting/nest.test.tsdiffbeforeafterbothno syntactic changes
tests/src/nesting/propertyPermissions.test.tsdiffbeforeafterbothno syntactic changes
tests/src/nesting/tokenProperties.seqtest.tsdiffbeforeafterbothno syntactic changes
tests/src/nesting/tokenProperties.test.tsdiffbeforeafterbothno syntactic changes
tests/src/nesting/unnest.test.tsdiffbeforeafterbothno syntactic changes
tests/src/nextSponsoring.test.tsdiffbeforeafterboth52 await token.transfer(alice, {Substrate: bob.address});52 await token.transfer(alice, {Substrate: bob.address});53 expect(await token.getNextSponsored({Substrate: alice.address})).to.be.lessThanOrEqual(SPONSORING_TIMEOUT);53 expect(await token.getNextSponsored({Substrate: alice.address})).to.be.lessThanOrEqual(SPONSORING_TIMEOUT);545455 // Non-existing token 55 // Non-existing token56 expect(await collection.getTokenNextSponsored(0, {Substrate: alice.address})).to.be.null;56 expect(await collection.getTokenNextSponsored(0, {Substrate: alice.address})).to.be.null;57 });57 });585891 await token.transfer(alice, {Substrate: bob.address});91 await token.transfer(alice, {Substrate: bob.address});92 expect(await token.getNextSponsored({Substrate: alice.address})).to.be.lessThanOrEqual(SPONSORING_TIMEOUT);92 expect(await token.getNextSponsored({Substrate: alice.address})).to.be.lessThanOrEqual(SPONSORING_TIMEOUT);939394 // Non-existing token 94 // Non-existing token95 expect(await collection.getTokenNextSponsored(0, {Substrate: alice.address})).to.be.null;95 expect(await collection.getTokenNextSponsored(0, {Substrate: alice.address})).to.be.null;96 });96 });97});97});tests/src/refungible.test.tsdiffbeforeafterbothno syntactic changes
tests/src/removeCollectionAdmin.test.tsdiffbeforeafterbothno syntactic changes
tests/src/rpc.test.tsdiffbeforeafterbothno syntactic changes
tests/src/scheduler.seqtest.tsdiffbeforeafterbothno syntactic changes
tests/src/setCollectionLimits.test.tsdiffbeforeafterbothno syntactic changes
tests/src/setCollectionSponsor.test.tsdiffbeforeafterbothno syntactic changes
tests/src/setPermissions.test.tsdiffbeforeafterbothno syntactic changes
tests/src/transfer.nload.tsdiffbeforeafterboth14// You should have received a copy of the GNU General Public License14// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161617/* eslint-disable @typescript-eslint/no-floating-promises */17import os from 'os';18import os from 'os';18import {IKeyringPair} from '@polkadot/types/types';19import {IKeyringPair} from '@polkadot/types/types';19import {usingPlaygrounds} from './util';20import {usingPlaygrounds} from './util';tests/src/transfer.test.tsdiffbeforeafterbothno syntactic changes
tests/src/transferFrom.test.tsdiffbeforeafterbothno syntactic changes
tests/src/util/globalSetup.tsdiffbeforeafterboth17 // 2. Create donors for test files17 // 2. Create donors for test files18 await fundFilenamesWithRetries(3)18 await fundFilenamesWithRetries(3)19 .then((result) => {19 .then((result) => {20 if (!result) Promise.reject();20 if (!result) throw Error('Some problems with fundFilenamesWithRetries');21 });21 });222223 // 3. Configure App Promotion 23 // 3. Configure App Promotion24 const missingPallets = helper.fetchMissingPalletNames([Pallets.AppPromotion]);24 const missingPallets = helper.fetchMissingPalletNames([Pallets.AppPromotion]);25 if (missingPallets.length === 0) {25 if (missingPallets.length === 0) {26 const superuser = await privateKey('//Alice');26 const superuser = await privateKey('//Alice');38 }38 }39 } catch (error) {39 } catch (error) {40 console.error(error);40 console.error(error);41 Promise.reject();41 throw Error('Error during globalSetup');42 }42 }43 });43 });44};44};tests/src/util/index.tsdiffbeforeafterboth41 else {41 else {42 const actualSeed = getTestSeed(seed.filename);42 const actualSeed = getTestSeed(seed.filename);43 let account = helper.util.fromSeed(actualSeed, ss58Format);43 let account = helper.util.fromSeed(actualSeed, ss58Format);44 // here's to hoping that no 44 // here's to hoping that no45 if (!seed.ignoreFundsPresence && ((helper as any)['balance'] == undefined || await (helper as any).balance.getSubstrate(account.address) < MINIMUM_DONOR_FUND)) {45 if (!seed.ignoreFundsPresence && ((helper as any)['balance'] == undefined || await (helper as any).balance.getSubstrate(account.address) < MINIMUM_DONOR_FUND)) {46 console.warn(`${path.basename(seed.filename)}: Not enough funds present on the filename account. Using the default one as the donor instead.`);46 console.warn(`${path.basename(seed.filename)}: Not enough funds present on the filename account. Using the default one as the donor instead.`);47 account = helper.util.fromSeed('//Alice', ss58Format);47 account = helper.util.fromSeed('//Alice', ss58Format);tests/src/util/playgrounds/types.tsdiffbeforeafterbothno syntactic changes
tests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth187 this.helper = helper;187 this.helper = helper;188 }188 }189189190 /**190 /**191 * Generates accounts with the specified UNQ token balance 191 * Generates accounts with the specified UNQ token balance192 * @param balances balances for generated accounts. Each balance will be multiplied by the token nominal.192 * @param balances balances for generated accounts. Each balance will be multiplied by the token nominal.193 * @param donor donor account for balances193 * @param donor donor account for balances194 * @returns array of newly created accounts194 * @returns array of newly created accounts195 * @example const [acc1, acc2, acc3] = await createAccounts([0n, 10n, 20n], donor); 195 * @example const [acc1, acc2, acc3] = await createAccounts([0n, 10n, 20n], donor);196 */196 */197 createAccounts = async (balances: bigint[], donor: IKeyringPair): Promise<IKeyringPair[]> => {197 createAccounts = async (balances: bigint[], donor: IKeyringPair): Promise<IKeyringPair[]> => {198 let nonce = await this.helper.chain.getNonce(donor.address);198 let nonce = await this.helper.chain.getNonce(donor.address);199 const wait = new WaitGroup(this.helper);199 const wait = new WaitGroup(this.helper);250 const tokenNominal = this.helper.balance.getOneTokenNominal();250 const tokenNominal = this.helper.balance.getOneTokenNominal();251 for (let i = 0; i < accountsToCreate; i++) {251 for (let i = 0; i < accountsToCreate; i++) {252 if (i === 500) { // if there are too many accounts to create252 if (i === 500) { // if there are too many accounts to create253 await Promise.allSettled(transactions); // wait while first 500 (should be 100 for devnode) tx will be settled 253 await Promise.allSettled(transactions); // wait while first 500 (should be 100 for devnode) tx will be settled254 transactions = []; //254 transactions = []; //255 nonce = await this.helper.chain.getNonce(donor.address); // update nonce 255 nonce = await this.helper.chain.getNonce(donor.address); // update nonce256 }256 }257 const recepient = this.helper.util.fromSeed(mnemonicGenerate());257 const recepient = this.helper.util.fromSeed(mnemonicGenerate());258 accounts.push(recepient);258 accounts.push(recepient);421 return promise;421 return promise;422 }422 }423423424 /**424 /**425 * Wait for specified number of blocks425 * Wait for specified number of blocks426 * @param blocksCount number of blocks to wait426 * @param blocksCount number of blocks to wait427 * @returns 427 * @returns428 */428 */429 async newBlocks(blocksCount = 1, timeout?: number): Promise<void> {429 async newBlocks(blocksCount = 1, timeout?: number): Promise<void> {430 timeout = timeout ?? blocksCount * 60_000;430 timeout = timeout ?? blocksCount * 60_000;431 // eslint-disable-next-line no-async-promise-executor431 // eslint-disable-next-line no-async-promise-executortests/src/util/playgrounds/unique.tsdiffbeforeafterboth2420 if (!event) throw Error('Cannot find transfer in events');2420 if (!event) throw Error('Cannot find transfer in events');2421 }2421 }242224222423 /**2423 /**2424 * Get schedule for recepient of vested transfer2424 * Get schedule for recepient of vested transfer2425 * @param address Substrate address of recipient2425 * @param address Substrate address of recipient2426 * @returns 2426 * @returns2427 */2427 */2428 async getVestingSchedules(address: TSubstrateAccount): Promise<{start: bigint, period: bigint, periodCount: bigint, perPeriod: bigint}[]> {2428 async getVestingSchedules(address: TSubstrateAccount): Promise<{start: bigint, period: bigint, periodCount: bigint, perPeriod: bigint}[]> {2429 const schedule = (await this.helper.callRpc('api.query.vesting.vestingSchedules', [address])).toJSON();2429 const schedule = (await this.helper.callRpc('api.query.vesting.vestingSchedules', [address])).toJSON();2430 return schedule.map((schedule: any) => {2430 return schedule.map((schedule: any) => {tests/src/vesting.test.tsdiffbeforeafterbothno syntactic changes
tests/src/xcm/xcmOpal.test.tsdiffbeforeafterboth287 await helper.wait.newBlocks(3);287 await helper.wait.newBlocks(3);288 288289 // The USDT token never paid fees. Its amount not changed from begin value.289 // The USDT token never paid fees. Its amount not changed from begin value.290 // Also check that xcm transfer has been succeeded 290 // Also check that xcm transfer has been succeeded291 expect((await helper.assets.account(ASSET_ID, alice.address))! == ASSET_AMOUNT).to.be.true;291 expect((await helper.assets.account(ASSET_ID, alice.address))! == ASSET_AMOUNT).to.be.true;292 });292 });293 });293 });tests/src/xcm/xcmQuartz.test.tsdiffbeforeafterboth321 await helper.wait.newBlocks(3);321 await helper.wait.newBlocks(3);322 322323 // The USDT token never paid fees. Its amount not changed from begin value.323 // The USDT token never paid fees. Its amount not changed from begin value.324 // Also check that xcm transfer has been succeeded 324 // Also check that xcm transfer has been succeeded325 expect((await helper.assets.account(USDT_ASSET_ID, alice.address))! == USDT_ASSET_AMOUNT).to.be.true;325 expect((await helper.assets.account(USDT_ASSET_ID, alice.address))! == USDT_ASSET_AMOUNT).to.be.true;326 });326 });327 });327 });tests/src/xcm/xcmUnique.test.tsdiffbeforeafterboth321 await helper.wait.newBlocks(3);321 await helper.wait.newBlocks(3);322 322323 // The USDT token never paid fees. Its amount not changed from begin value.323 // The USDT token never paid fees. Its amount not changed from begin value.324 // Also check that xcm transfer has been succeeded 324 // Also check that xcm transfer has been succeeded325 expect((await helper.assets.account(USDT_ASSET_ID, alice.address))! == USDT_ASSET_AMOUNT).to.be.true;325 expect((await helper.assets.account(USDT_ASSET_ID, alice.address))! == USDT_ASSET_AMOUNT).to.be.true;326 });326 });327 });327 });tests/yarn.lockdiffbeforeafterboth1064 dependencies:1064 dependencies:1065 "@types/node" "*"1065 "@types/node" "*"106610661067"@typescript-eslint/eslint-plugin@^5.40.1":1067"@typescript-eslint/eslint-plugin@^5.47.0":1068 version "5.46.1"1068 version "5.47.0"1069 resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz#098abb4c9354e19f460d57ab18bff1f676a6cff0"1069 resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.0.tgz#dadb79df3b0499699b155839fd6792f16897d910"1070 integrity sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==1070 integrity sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ==1071 dependencies:1071 dependencies:1072 "@typescript-eslint/scope-manager" "5.46.1"1072 "@typescript-eslint/scope-manager" "5.47.0"1073 "@typescript-eslint/type-utils" "5.46.1"1073 "@typescript-eslint/type-utils" "5.47.0"1074 "@typescript-eslint/utils" "5.46.1"1074 "@typescript-eslint/utils" "5.47.0"1075 debug "^4.3.4"1075 debug "^4.3.4"1076 ignore "^5.2.0"1076 ignore "^5.2.0"1077 natural-compare-lite "^1.4.0"1077 natural-compare-lite "^1.4.0"1078 regexpp "^3.2.0"1078 regexpp "^3.2.0"1079 semver "^7.3.7"1079 semver "^7.3.7"1080 tsutils "^3.21.0"1080 tsutils "^3.21.0"108110811082"@typescript-eslint/parser@^5.40.1":1082"@typescript-eslint/parser@^5.47.0":1083 version "5.46.1"1083 version "5.47.0"1084 resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.46.1.tgz#1fc8e7102c1141eb64276c3b89d70da8c0ba5699"1084 resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.47.0.tgz#62e83de93499bf4b500528f74bf2e0554e3a6c8d"1085 integrity sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==1085 integrity sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==1086 dependencies:1086 dependencies:1087 "@typescript-eslint/scope-manager" "5.46.1"1087 "@typescript-eslint/scope-manager" "5.47.0"1088 "@typescript-eslint/types" "5.46.1"1088 "@typescript-eslint/types" "5.47.0"1089 "@typescript-eslint/typescript-estree" "5.46.1"1089 "@typescript-eslint/typescript-estree" "5.47.0"1090 debug "^4.3.4"1090 debug "^4.3.4"109110911092"@typescript-eslint/scope-manager@5.46.1":1092"@typescript-eslint/scope-manager@5.47.0":1093 version "5.46.1"1093 version "5.47.0"1094 resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz#70af8425c79bbc1178b5a63fb51102ddf48e104a"1094 resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.47.0.tgz#f58144a6b0ff58b996f92172c488813aee9b09df"1095 integrity sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==1095 integrity sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==1096 dependencies:1096 dependencies:1097 "@typescript-eslint/types" "5.46.1"1097 "@typescript-eslint/types" "5.47.0"1098 "@typescript-eslint/visitor-keys" "5.46.1"1098 "@typescript-eslint/visitor-keys" "5.47.0"109910991100"@typescript-eslint/type-utils@5.46.1":1100"@typescript-eslint/type-utils@5.47.0":1101 version "5.46.1"1101 version "5.47.0"1102 resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz#195033e4b30b51b870dfcf2828e88d57b04a11cc"1102 resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.47.0.tgz#2b440979c574e317d3473225ae781f292c99e55d"1103 integrity sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==1103 integrity sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg==1104 dependencies:1104 dependencies:1105 "@typescript-eslint/typescript-estree" "5.46.1"1105 "@typescript-eslint/typescript-estree" "5.47.0"1106 "@typescript-eslint/utils" "5.46.1"1106 "@typescript-eslint/utils" "5.47.0"1107 debug "^4.3.4"1107 debug "^4.3.4"1108 tsutils "^3.21.0"1108 tsutils "^3.21.0"110911091110"@typescript-eslint/types@5.46.1":1110"@typescript-eslint/types@5.47.0":1111 version "5.46.1"1111 version "5.47.0"1112 resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.46.1.tgz#4e9db2107b9a88441c4d5ecacde3bb7a5ebbd47e"1112 resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.47.0.tgz#67490def406eaa023dbbd8da42ee0d0c9b5229d3"1113 integrity sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==1113 integrity sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==111411141115"@typescript-eslint/typescript-estree@5.46.1":1115"@typescript-eslint/typescript-estree@5.47.0":1116 version "5.46.1"1116 version "5.47.0"1117 resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz#5358088f98a8f9939355e0996f9c8f41c25eced2"1117 resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.0.tgz#ed971a11c5c928646d6ba7fc9dfdd6e997649aca"1118 integrity sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==1118 integrity sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==1119 dependencies:1119 dependencies:1120 "@typescript-eslint/types" "5.46.1"1120 "@typescript-eslint/types" "5.47.0"1121 "@typescript-eslint/visitor-keys" "5.46.1"1121 "@typescript-eslint/visitor-keys" "5.47.0"1122 debug "^4.3.4"1122 debug "^4.3.4"1123 globby "^11.1.0"1123 globby "^11.1.0"1124 is-glob "^4.0.3"1124 is-glob "^4.0.3"1125 semver "^7.3.7"1125 semver "^7.3.7"1126 tsutils "^3.21.0"1126 tsutils "^3.21.0"112711271128"@typescript-eslint/utils@5.46.1":1128"@typescript-eslint/utils@5.47.0":1129 version "5.46.1"1129 version "5.47.0"1130 resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.46.1.tgz#7da3c934d9fd0eb4002a6bb3429f33298b469b4a"1130 resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.47.0.tgz#b5005f7d2696769a1fdc1e00897005a25b3a0ec7"1131 integrity sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==1131 integrity sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw==1132 dependencies:1132 dependencies:1133 "@types/json-schema" "^7.0.9"1133 "@types/json-schema" "^7.0.9"1134 "@types/semver" "^7.3.12"1134 "@types/semver" "^7.3.12"1135 "@typescript-eslint/scope-manager" "5.46.1"1135 "@typescript-eslint/scope-manager" "5.47.0"1136 "@typescript-eslint/types" "5.46.1"1136 "@typescript-eslint/types" "5.47.0"1137 "@typescript-eslint/typescript-estree" "5.46.1"1137 "@typescript-eslint/typescript-estree" "5.47.0"1138 eslint-scope "^5.1.1"1138 eslint-scope "^5.1.1"1139 eslint-utils "^3.0.0"1139 eslint-utils "^3.0.0"1140 semver "^7.3.7"1140 semver "^7.3.7"114111411142"@typescript-eslint/visitor-keys@5.46.1":1142"@typescript-eslint/visitor-keys@5.47.0":1143 version "5.46.1"1143 version "5.47.0"1144 resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz#126cc6fe3c0f83608b2b125c5d9daced61394242"1144 resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.0.tgz#4aca4efbdf6209c154df1f7599852d571b80bb45"1145 integrity sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==1145 integrity sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==1146 dependencies:1146 dependencies:1147 "@typescript-eslint/types" "5.46.1"1147 "@typescript-eslint/types" "5.47.0"1148 eslint-visitor-keys "^3.3.0"1148 eslint-visitor-keys "^3.3.0"114911491150abortcontroller-polyfill@^1.7.3:1150abortcontroller-polyfill@^1.7.3: