From 232c01ad77d9ac138e11deb6fd2f9722c1075982 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Mon, 12 May 2025 13:39:26 +0300 Subject: [PATCH 01/27] first version --- package.json | 63 +- src/contracts/base/constants.tact | 1 + src/contracts/base/jetton-minter.tact | 34 +- src/contracts/base/jetton-wallet.tact | 92 +- yarn.lock | 1626 +++++++++++++++---------- 5 files changed, 1130 insertions(+), 686 deletions(-) diff --git a/package.json b/package.json index 443830a..274c6ec 100644 --- a/package.json +++ b/package.json @@ -30,44 +30,51 @@ }, "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", - "@nowarp/misti": "^0.8.1", + "@nowarp/misti": "^0.8.3", "@orbs-network/ton-access": "^2.3.3", - "@tact-lang/compiler": "^1.6.7", + "chalk": "5.4.1", + "cli-table3": "^0.6.5", + "cross-env": "^7.0.3", + "dotenv": "^16.5.0", + "yarn-deduplicate": "^6.0.2", + "@tact-lang/compiler": "1.6.7", + "@tact-lang/deployer": "^0.2.0", + "@tact-lang/ton-abi": "^0.0.3", "@tact-lang/ton-jest": "^0.0.4", "@ton/core": "^0.60.1", - "@ton/crypto": "^3.2.0", - "@ton/sandbox": "^0.20.0", - "@ton/test-utils": "^0.4.2", - "@ton/ton": "^13.9.0", - "@types/jest": "^29.2.4", - "@types/node": "^18.11.14", - "@types/qs": "^6.9.7", + "@ton/crypto": "^3.3.0", + "@ton/sandbox": "0.29.0", + "@ton/test-utils": "^0.6.0", + "@ton/ton": "^15.2.1", + "@tondevwallet/traces": "^0.1.6", + "@types/jest": "^29.5.14", + "@types/node": "^22.15.17", + "@types/qs": "^6.9.18", "base64url": "^3.0.1", - "chalk": "4.1.2", - "cli-table3": "^0.6.5", - "cross-env": "^7.0.3", - "dotenv": "^16.4.5", - "jest": "^29.3.1", - "qs": "^6.11.0", - "ts-jest": "^29.0.3", - "ts-node": "^10.9.1", - "typescript": "^4.9.4", - "yarn-deduplicate": "^6.0.2" + "enquirer": "^2.4.1", + "jest": "^29.7.0", + "open": "^10.1.2", + "prando": "^6.0.1", + "prettier": "^3.5.3", + "qs": "^6.14.0", + "ts-jest": "^29.3.2", + "ts-node": "^10.9.2", + "typescript": "^5.8.3" }, "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e", "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "cspell": "^8.3.2", + "@typescript-eslint/eslint-plugin": "^8.32.0", + "@typescript-eslint/parser": "^8.32.0", + "cspell": "^9.0.1", "depcheck": "^1.4.7", - "eslint": "^9.19.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-unicorn": "^56.0.1", + "eslint": "^9.26.0", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-prettier": "^5.4.0", + "eslint-plugin-unicorn": "^59.0.1", "eslint-plugin-unused-imports": "^4.1.4", "husky": "^9.1.7", - "lint-staged": "^15.4.3", - "prettier": "^3.4.2" + "lint-staged": "^16.0.0", + "prettier": "^3.5.3" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ diff --git a/src/contracts/base/constants.tact b/src/contracts/base/constants.tact index 57d5a40..a7da380 100644 --- a/src/contracts/base/constants.tact +++ b/src/contracts/base/constants.tact @@ -2,3 +2,4 @@ const gasForBurn: Int = 6700; const gasForTransfer: Int = 10500; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future const Basechain: Int = 0; +const prefix_length: Int = 8; \ No newline at end of file diff --git a/src/contracts/base/jetton-minter.tact b/src/contracts/base/jetton-minter.tact index 36eb15e..5f789bf 100644 --- a/src/contracts/base/jetton-minter.tact +++ b/src/contracts/base/jetton-minter.tact @@ -42,12 +42,13 @@ contract JettonMinter( self.totalSupply += msg.mintMessage.amount; // basechain destination is calculated inside deploy function - deploy(DeployParameters { + shardDeploy(ShardDeployParameters{ value: 0, // ignore msg.tonAmount and use SendMode 64 instead bounce: true, mode: SendRemainingValue | SendBounceIfActionFail, body: msg.mintMessage.toCell(), - init: getJettonWalletInit(msg.receiver), + init: initOf JettonWallet(msg.receiver, myAddress(), 0), + shard: msg.receiver.asSlice().loadUint(prefix_length), }); } @@ -56,7 +57,7 @@ contract JettonMinter( // If owner is basechain address, we can calculate jettonWallet let targetJettonWallet: BasechainAddress = (ownerWorkchain == Basechain) - ? contractBasechainAddress(getJettonWalletInit(msg.ownerAddress)) + ? BasechainAddress { hash: getJettonWalletInit(msg.ownerAddress).hash(), } : emptyBasechainAddress(); message(MessageParameters { @@ -135,14 +136,33 @@ contract JettonMinter( } } -inline fun getJettonWalletInit(address: Address): StateInit { - return initOf JettonWallet(address, myAddress(), 0); +inline fun getJettonWalletInit(address: Address): Cell { + let init = initOf JettonWallet(address, myAddress(), 0); + + return beginCell() + .storeUint(1, 1) + .storeUint(prefix_length, 5) + .storeUint(0, 1) + .storeMaybeRef(init.code) + .storeMaybeRef(init.data) + .storeUint(0, 1) + .endCell(); } inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { - return contractAddress(getJettonWalletInit(jettonWalletOwner)); + let init = getJettonWalletInit(jettonWalletOwner); + + let expectedAddr = beginCell() + .storeUint(4, 3) + .storeUint(0, 8) + .storeUint((init.hash() & ((1 << (256 - prefix_length)) - 1)) | (jettonWalletOwner.asSlice().loadUint(prefix_length) << (256 - prefix_length)), 256) + .asSlice(); + + return expectedAddr.loadAddress(); } inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress { - return contractBasechainAddress(getJettonWalletInit(jettonWalletOwner)); + let init = getJettonWalletInit(jettonWalletOwner); + + return BasechainAddress{ hash: ((init.hash() & ((1 << (256 - prefix_length)) - 1)) | (jettonWalletOwner.asSlice().loadUint(prefix_length) << (256 - prefix_length))) }; } diff --git a/src/contracts/base/jetton-wallet.tact b/src/contracts/base/jetton-wallet.tact index 980bf09..e048844 100644 --- a/src/contracts/base/jetton-wallet.tact +++ b/src/contracts/base/jetton-wallet.tact @@ -1,6 +1,90 @@ import "./messages"; import "./constants"; +struct ShardDeployParameters { + /// An 8-bit value that configures how to send a message, defaults to 0. + /// See: https://docs.tact-lang.org/book/message-mode + mode: Int = SendDefaultMode; + + /// Optional message body as a `Cell`. + body: Cell; + + /// The amount of nanoToncoins you want to send with + /// the message. This value is used to cover forward fees, + /// unless the optional flag `SendPayGasSeparately` is used. + value: Int; + + /// When set to `true` (default) message bounces back to the sender if + /// the recipient contract doesn't exist or wasn't able to process the message. + bounce: Bool = true; + + /// Initial package of the contract (initial code and initial data). + /// See: https://docs.tact-lang.org/book/expressions#initof + init: StateInit; + + shard: Int as uint30; +} + +fun shardDeploy(params: ShardDeployParameters) { + let newStateInit = beginCell() + .storeUint(1, 1) + .storeUint(prefix_length, 5) + .storeUint(0, 1) + .storeMaybeRef(params.init.code) + .storeMaybeRef(params.init.data) + .storeUint(0, 1) + .endCell(); + + let expectedAddr = beginCell() + .storeUint(4, 3) + .storeUint(0, 8) + .storeUint((newStateInit.hash() & ((1 << (256 - prefix_length)) - 1)) | (params.shard << (256 - prefix_length)), 256) // + .asSlice(); + + let parsedAddr = parseStdAddress(expectedAddr); + let realAddr = beginCell() + .storeUint(4, 3) + .storeUint(0, 8) + .storeUint(parsedAddr.address, 256) // First 32 bits of address will be 0 + .asSlice(); + + let msg = beginCell() + .storeUint(0x18, 6) + .storeSlice(realAddr) + .storeCoins(0) + .storeUint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) + .storeRef(newStateInit) + .storeRef(params.body) + .endCell(); + + sendRawMessage(msg, params.mode); +} + + +fun initToPrefixInit(init: StateInit): Cell { + let newStateInit = beginCell() + .storeUint(1, 1) + .storeUint(prefix_length, 5) + .storeUint(0, 1) + .storeMaybeRef(init.code) + .storeMaybeRef(init.data) + .storeUint(0, 1) + .endCell(); + return newStateInit; +} + +inline fun contractBasechainAddressPrefix(s: StateInit): BasechainAddress { + let hash = initToPrefixInit(s).hash(); + return newBasechainAddress(hash); +} + + +inline extends fun hasSameBasechainAddressPrefix(self: StateInit, sender: Address): Bool { + let senderAddress = parseStdAddress(sender.asSlice()).address; + let baseAddress = contractBasechainAddressPrefix(self); + return (baseAddress.hash!! & ((1 << (256 - prefix_length)) - 1)) == (senderAddress & ((1 << (256 - prefix_length)) - 1)); +} + contract JettonWallet( owner: Address, minter: Address, @@ -24,7 +108,7 @@ contract JettonWallet( "Insufficient amount of TON attached", ); - deploy(DeployParameters { + shardDeploy(ShardDeployParameters{ value: 0, mode: SendRemainingValue, bounce: true, @@ -37,6 +121,7 @@ contract JettonWallet( forwardPayload: msg.forwardPayload, }.toCell(), init: initOf JettonWallet(msg.destination, self.minter, 0), + shard: sender().asSlice().loadUint(prefix_length), }); } @@ -45,10 +130,9 @@ contract JettonWallet( // This message should come only from master, or from other JettonWallet let wallet: StateInit = initOf JettonWallet(msg.sender, self.minter, 0); - if (!wallet.hasSameBasechainAddress(sender())) { + if (!wallet.hasSameBasechainAddressPrefix(sender())) { require(self.minter == sender(), "Incorrect sender"); } - let ctx: Context = context(); let msgValue: Int = ctx.value; let tonBalanceBeforeMsg = myBalance() - msgValue; @@ -71,7 +155,7 @@ contract JettonWallet( } nativeReserve(max(tonBalanceBeforeMsg, minTonsForStorage), ReserveAtMost); // 0xd53276db -- Cashback to the original Sender - if (msg.responseDestination != null && msgValue > 0) { + if (msg.responseDestination != null && msgValue > 0){ message(MessageParameters { to: msg.responseDestination!!, value: msgValue, diff --git a/yarn.lock b/yarn.lock index 16d96a5..1205f1d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -125,7 +125,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== -"@babel/helper-validator-identifier@^7.24.7", "@babel/helper-validator-identifier@^7.25.9": +"@babel/helper-validator-identifier@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== @@ -309,37 +309,37 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cspell/cspell-bundled-dicts@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.17.5.tgz#3b7dc22c5b722e608fe9038beedc9df631fa3b1b" - integrity sha512-b/Ntabar+g4gsRNwOct909cvatO/auHhNvBzJZfyFQzryI1nqHMaSFuDsrrtzbhQkGJ4GiMAKCXZC2EOdHMgmw== +"@cspell/cspell-bundled-dicts@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-9.0.1.tgz#a61b34317f5cbe3fda56af9a399af6fe7041fc82" + integrity sha512-h7gTqg0VF4N8VhOPk66XewuSsT56OP2ujgxtAyYQ4H+NuYd3HMfS0h/I3/y9uBhllwOEamaeAzYhc5JF/qIrsQ== dependencies: "@cspell/dict-ada" "^4.1.0" "@cspell/dict-al" "^1.1.0" - "@cspell/dict-aws" "^4.0.9" + "@cspell/dict-aws" "^4.0.10" "@cspell/dict-bash" "^4.2.0" - "@cspell/dict-companies" "^3.1.14" - "@cspell/dict-cpp" "^6.0.4" + "@cspell/dict-companies" "^3.2.1" + "@cspell/dict-cpp" "^6.0.8" "@cspell/dict-cryptocurrencies" "^5.0.4" "@cspell/dict-csharp" "^4.0.6" "@cspell/dict-css" "^4.0.17" "@cspell/dict-dart" "^2.3.0" - "@cspell/dict-data-science" "^2.0.7" + "@cspell/dict-data-science" "^2.0.8" "@cspell/dict-django" "^4.1.4" - "@cspell/dict-docker" "^1.1.12" + "@cspell/dict-docker" "^1.1.14" "@cspell/dict-dotnet" "^5.0.9" "@cspell/dict-elixir" "^4.0.7" - "@cspell/dict-en-common-misspellings" "^2.0.9" - "@cspell/dict-en-gb" "1.1.33" - "@cspell/dict-en_us" "^4.3.33" - "@cspell/dict-filetypes" "^3.0.11" + "@cspell/dict-en-common-misspellings" "^2.0.11" + "@cspell/dict-en-gb-mit" "^3.0.6" + "@cspell/dict-en_us" "^4.4.8" + "@cspell/dict-filetypes" "^3.0.12" "@cspell/dict-flutter" "^1.1.0" "@cspell/dict-fonts" "^4.0.4" "@cspell/dict-fsharp" "^1.1.0" - "@cspell/dict-fullstack" "^3.2.5" - "@cspell/dict-gaming-terms" "^1.1.0" + "@cspell/dict-fullstack" "^3.2.6" + "@cspell/dict-gaming-terms" "^1.1.1" "@cspell/dict-git" "^3.0.4" - "@cspell/dict-golang" "^6.0.18" + "@cspell/dict-golang" "^6.0.21" "@cspell/dict-google" "^1.0.8" "@cspell/dict-haskell" "^4.0.5" "@cspell/dict-html" "^4.0.11" @@ -352,55 +352,55 @@ "@cspell/dict-lorem-ipsum" "^4.0.4" "@cspell/dict-lua" "^4.0.7" "@cspell/dict-makefile" "^1.0.4" - "@cspell/dict-markdown" "^2.0.9" + "@cspell/dict-markdown" "^2.0.10" "@cspell/dict-monkeyc" "^1.0.10" - "@cspell/dict-node" "^5.0.6" - "@cspell/dict-npm" "^5.1.27" + "@cspell/dict-node" "^5.0.7" + "@cspell/dict-npm" "^5.2.3" "@cspell/dict-php" "^4.0.14" "@cspell/dict-powershell" "^5.0.14" "@cspell/dict-public-licenses" "^2.0.13" - "@cspell/dict-python" "^4.2.15" + "@cspell/dict-python" "^4.2.18" "@cspell/dict-r" "^2.1.0" - "@cspell/dict-ruby" "^5.0.7" + "@cspell/dict-ruby" "^5.0.8" "@cspell/dict-rust" "^4.0.11" "@cspell/dict-scala" "^5.0.7" "@cspell/dict-shell" "^1.1.0" - "@cspell/dict-software-terms" "^4.2.5" + "@cspell/dict-software-terms" "^5.0.8" "@cspell/dict-sql" "^2.2.0" "@cspell/dict-svelte" "^1.0.6" "@cspell/dict-swift" "^2.0.5" - "@cspell/dict-terraform" "^1.1.0" - "@cspell/dict-typescript" "^3.2.0" + "@cspell/dict-terraform" "^1.1.1" + "@cspell/dict-typescript" "^3.2.1" "@cspell/dict-vue" "^3.0.4" -"@cspell/cspell-json-reporter@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.17.5.tgz#a1a5615b29662cd02a4283590622cb39d6b8eaef" - integrity sha512-+eVFCdnda74Frv8hguHYwDtxvqDuJJ/luFRl4dC5oknPMRab0JCHM1DDYjp3NzsehTex0HmcxplxqVW6QoDosg== +"@cspell/cspell-json-reporter@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/cspell-json-reporter/-/cspell-json-reporter-9.0.1.tgz#c21c750fdd006a5dec308efec01063e80cd32d49" + integrity sha512-Rpn7Tuq9t8bZpXZFV43NkhCl0LaPDJZSON4/JFxGbOcH16ryXfrx7oObUTIIyxSxO3fGkzaJZHIwGibRJSsbNQ== dependencies: - "@cspell/cspell-types" "8.17.5" + "@cspell/cspell-types" "9.0.1" -"@cspell/cspell-pipe@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-8.17.5.tgz#8c2913cee23afc1d507fccaa75ca3f377c6a0ade" - integrity sha512-VOIfFdIo3FYQFcSpIyGkqHupOx0LgfBrWs79IKnTT1II27VUHPF+0oGq0WWf4c2Zpd8tzdHvS3IUhGarWZq69g== +"@cspell/cspell-pipe@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-9.0.1.tgz#34e2b167dae4bda4c9e03639efdc8efabdbd7b7d" + integrity sha512-bhFcvF2a8KYKVh/OebCfJ8LFw5GYHyUsUjAbxnznTBrYOFSIclDjwUwT29yVDXwnQkJkB6Px5Y9e2VvtFizVFg== -"@cspell/cspell-resolver@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/cspell-resolver/-/cspell-resolver-8.17.5.tgz#dd8f7bc57f36fdba1d6079a5382ec5db51398b9c" - integrity sha512-5MhYInligPbGctWxoklAKxtg+sxvtJCuRKGSQHHA0JlCOLSsducypl780P6zvpjLK59XmdfC+wtFONxSmRbsuA== +"@cspell/cspell-resolver@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/cspell-resolver/-/cspell-resolver-9.0.1.tgz#8cb2a3d21cb9bd4f7dbba69e496a0fc9155afd5b" + integrity sha512-AhIXAhX1qt7Y3EyiP/5rAk7Ow7DJpAyB44wPbfdF9p1vhnk6oQ7RslnD3G6S9o/vNxZ0DWFPREMWx19J/3c+hw== dependencies: global-directory "^4.0.1" -"@cspell/cspell-service-bus@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/cspell-service-bus/-/cspell-service-bus-8.17.5.tgz#5a2b2df9f900c9564cb93702f01051ca060c2de2" - integrity sha512-Ur3IK0R92G/2J6roopG9cU/EhoYAMOx2um7KYlq93cdrly8RBAK2NCcGCL7DbjQB6C9RYEAV60ueMUnQ45RrCQ== +"@cspell/cspell-service-bus@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/cspell-service-bus/-/cspell-service-bus-9.0.1.tgz#c151e5a3b48306b48b36a043fa282f254691f5e9" + integrity sha512-DoW6hLkFIO3BXePtUYQEax3FTH9fkwCUbf6qphAEXnr4PjoyPZsgBhR6iCrZd4DyhuFiRvK3Cgpq2o3O0NdODQ== -"@cspell/cspell-types@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-8.17.5.tgz#5b0aa09fd7fe078a4b8de904ef4f29714cb9fa7c" - integrity sha512-91y2+0teunRSRZj940ORDA3kdjyenrUiM+4j6nQQH24sAIAJdRmQl2LG3eUTmeaSReJGkZIpnToQ6DyU5cC88Q== +"@cspell/cspell-types@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-9.0.1.tgz#6143b68e1c5c9115ec397fba9615c90e4b37fa52" + integrity sha512-8FRmvyV1AYEepJB3J7jji1ZYG9yOK0eYr4WuUVPfUJa6N3HyeZjWKhxbVvqedmEI74f5Ls3cQKHY1T2Yvqk/ag== "@cspell/dict-ada@^4.1.0": version "4.1.0" @@ -412,10 +412,10 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-al/-/dict-al-1.1.0.tgz#8091d046b6fe74004f3f1df8d1403a280818537f" integrity sha512-PtNI1KLmYkELYltbzuoztBxfi11jcE9HXBHCpID2lou/J4VMYKJPNqe4ZjVzSI9NYbMnMnyG3gkbhIdx66VSXg== -"@cspell/dict-aws@^4.0.9": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-4.0.9.tgz#10c1dc6431e05f02809367b70942189acb35d720" - integrity sha512-bDYdnnJGwSkIZ4gzrauu7qzOs/ZAY/FnU4k11LgdMI8BhwMfsbsy2EI1iS+sD/BI5ZnNT9kU5YR3WADeNOmhRg== +"@cspell/dict-aws@^4.0.10": + version "4.0.10" + resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-4.0.10.tgz#d1aa477b751113898d51b14443f1e9c418e4ab71" + integrity sha512-0qW4sI0GX8haELdhfakQNuw7a2pnWXz3VYQA2MpydH2xT2e6EN9DWFpKAi8DfcChm8MgDAogKkoHtIo075iYng== "@cspell/dict-bash@^4.2.0": version "4.2.0" @@ -424,15 +424,15 @@ dependencies: "@cspell/dict-shell" "1.1.0" -"@cspell/dict-companies@^3.1.14": - version "3.1.14" - resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-3.1.14.tgz#3021973b6f6cbe82b9819669095f2094d0f3ed7f" - integrity sha512-iqo1Ce4L7h0l0GFSicm2wCLtfuymwkvgFGhmu9UHyuIcTbdFkDErH+m6lH3Ed+QuskJlpQ9dM7puMIGqUlVERw== +"@cspell/dict-companies@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-3.2.1.tgz#6ce1375975c5152fbea707b66f0b30dc2811265d" + integrity sha512-ryaeJ1KhTTKL4mtinMtKn8wxk6/tqD4vX5tFP+Hg89SiIXmbMk5vZZwVf+eyGUWJOyw5A1CVj9EIWecgoi+jYQ== -"@cspell/dict-cpp@^6.0.4": - version "6.0.5" - resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-6.0.5.tgz#2819a3c4f030c1691034d8a6d1b7815b15692b8c" - integrity sha512-OrWqPuLf5EV+H/2sIYUSDF4UyiyCR4/+Q2n+xRx09CBg7YBx16h61V9892TKWCUr9FiJfAkKY24aWW3WRU9Nqg== +"@cspell/dict-cpp@^6.0.8": + version "6.0.8" + resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-6.0.8.tgz#bb3b6763daa1dd152250785de6dc7fca031320c1" + integrity sha512-BzurRZilWqaJt32Gif6/yCCPi+FtrchjmnehVEIFzbWyeBd/VOUw77IwrEzehZsu5cRU91yPWuWp5fUsKfDAXA== "@cspell/dict-cryptocurrencies@^5.0.4": version "5.0.4" @@ -454,20 +454,20 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-dart/-/dict-dart-2.3.0.tgz#2bc39f965712c798dce143cafa656125ea30c0d8" integrity sha512-1aY90lAicek8vYczGPDKr70pQSTQHwMFLbmWKTAI6iavmb1fisJBS1oTmMOKE4ximDf86MvVN6Ucwx3u/8HqLg== -"@cspell/dict-data-science@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@cspell/dict-data-science/-/dict-data-science-2.0.7.tgz#3939bd105ef9ee487272e8b25e3433e7f03a6b91" - integrity sha512-XhAkK+nSW6zmrnWzusmZ1BpYLc62AWYHZc2p17u4nE2Z9XG5DleG55PCZxXQTKz90pmwlhFM9AfpkJsYaBWATA== +"@cspell/dict-data-science@^2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@cspell/dict-data-science/-/dict-data-science-2.0.8.tgz#512ac2f805ec86ad6fd7eee8a11821c94361f1f9" + integrity sha512-uyAtT+32PfM29wRBeAkUSbkytqI8bNszNfAz2sGPtZBRmsZTYugKMEO9eDjAIE/pnT9CmbjNuoiXhk+Ss4fCOg== "@cspell/dict-django@^4.1.4": version "4.1.4" resolved "https://registry.yarnpkg.com/@cspell/dict-django/-/dict-django-4.1.4.tgz#69298021c60b9b39d491c1a9caa2b33346311a2f" integrity sha512-fX38eUoPvytZ/2GA+g4bbdUtCMGNFSLbdJJPKX2vbewIQGfgSFJKY56vvcHJKAvw7FopjvgyS/98Ta9WN1gckg== -"@cspell/dict-docker@^1.1.12": - version "1.1.12" - resolved "https://registry.yarnpkg.com/@cspell/dict-docker/-/dict-docker-1.1.12.tgz#aa18dbfe8d5b0df7118cdee9f2f7f44ea4b45621" - integrity sha512-6d25ZPBnYZaT9D9An/x6g/4mk542R8bR3ipnby3QFCxnfdd6xaWiTcwDPsCgwN2aQZIQ1jX/fil9KmBEqIK/qA== +"@cspell/dict-docker@^1.1.14": + version "1.1.14" + resolved "https://registry.yarnpkg.com/@cspell/dict-docker/-/dict-docker-1.1.14.tgz#867797789360e7b9b36d8a146facf5a454f6fb08" + integrity sha512-p6Qz5mokvcosTpDlgSUREdSbZ10mBL3ndgCdEKMqjCSZJFdfxRdNdjrGER3lQ6LMq5jGr1r7nGXA0gvUJK80nw== "@cspell/dict-dotnet@^5.0.9": version "5.0.9" @@ -479,25 +479,25 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-elixir/-/dict-elixir-4.0.7.tgz#fd6136db9acb7912e495e02777e2141ef16822f4" integrity sha512-MAUqlMw73mgtSdxvbAvyRlvc3bYnrDqXQrx5K9SwW8F7fRYf9V4vWYFULh+UWwwkqkhX9w03ZqFYRTdkFku6uA== -"@cspell/dict-en-common-misspellings@^2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.9.tgz#0b123d2e46a16ef4cd3838c2ef3e9a50d8d6433e" - integrity sha512-O/jAr1VNtuyCFckbTmpeEf43ZFWVD9cJFvWaA6rO2IVmLirJViHWJUyBZOuQcesSplzEIw80MAYmnK06/MDWXQ== +"@cspell/dict-en-common-misspellings@^2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.11.tgz#5ba78c86c1d638d6c1acd4c6409d756266860822" + integrity sha512-xFQjeg0wFHh9sFhshpJ+5BzWR1m9Vu8pD0CGPkwZLK9oii8AD8RXNchabLKy/O5VTLwyqPOi9qpyp1cxm3US4Q== -"@cspell/dict-en-gb@1.1.33": - version "1.1.33" - resolved "https://registry.yarnpkg.com/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz#7f1fd90fc364a5cb77111b5438fc9fcf9cc6da0e" - integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g== +"@cspell/dict-en-gb-mit@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@cspell/dict-en-gb-mit/-/dict-en-gb-mit-3.0.6.tgz#23af2677bc32deaca829efdfc45bd0efd1779af6" + integrity sha512-QYDwuXi9Yh+AvU1omhz8sWX+A1SxWI3zeK1HdGfTrICZavhp8xxcQGTa5zxTTFRCcQc483YzUH2Dl+6Zd50tJg== -"@cspell/dict-en_us@^4.3.33": - version "4.3.34" - resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-4.3.34.tgz#4b562b238df86c482187ec7f65c892c822e6f9f2" - integrity sha512-ewJXNV7Nk5vxbGvHvxYLDGoXN0Lq5sfSgX8SAlcYL+2bZ7r25nNOLHou5hdFlNgvviGTx/SFPlVKjdjVJlblgA== +"@cspell/dict-en_us@^4.4.8": + version "4.4.8" + resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-4.4.8.tgz#36513b6b578d8d90ec8b68a7e780fde42ae08033" + integrity sha512-OkNUVuU9Q+Sf827/61YPkk6ya6dSsllzeYniBFqNW9TkoqQXT3vggkgmtCE1aEhSvVctMwxpPYoC8pZgn1TeSA== -"@cspell/dict-filetypes@^3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@cspell/dict-filetypes/-/dict-filetypes-3.0.11.tgz#2c1066833c7490108b7ed1e6193750b547a4ccb0" - integrity sha512-bBtCHZLo7MiSRUqx5KEiPdGOmXIlDGY+L7SJEtRWZENpAKE+96rT7hj+TUUYWBbCzheqHr0OXZJFEKDgsG/uZg== +"@cspell/dict-filetypes@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@cspell/dict-filetypes/-/dict-filetypes-3.0.12.tgz#cff1c2b3a8fed06235e5faf7a62f53ded06c2f4d" + integrity sha512-+ds5wgNdlUxuJvhg8A1TjuSpalDFGCh7SkANCWvIplg6QZPXL4j83lqxP7PgjHpx7PsBUS7vw0aiHPjZy9BItw== "@cspell/dict-flutter@^1.1.0": version "1.1.0" @@ -514,25 +514,25 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-fsharp/-/dict-fsharp-1.1.0.tgz#b14f6fff20486c45651303323e467534afdc6727" integrity sha512-oguWmHhGzgbgbEIBKtgKPrFSVAFtvGHaQS0oj+vacZqMObwkapcTGu7iwf4V3Bc2T3caf0QE6f6rQfIJFIAVsw== -"@cspell/dict-fullstack@^3.2.5": +"@cspell/dict-fullstack@^3.2.6": version "3.2.6" resolved "https://registry.yarnpkg.com/@cspell/dict-fullstack/-/dict-fullstack-3.2.6.tgz#a5916de25a0acc9cedef2fd97760e1656017280e" integrity sha512-cSaq9rz5RIU9j+0jcF2vnKPTQjxGXclntmoNp4XB7yFX2621PxJcekGjwf/lN5heJwVxGLL9toR0CBlGKwQBgA== -"@cspell/dict-gaming-terms@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.1.0.tgz#89b8b73796368a03ea6e0e4f04c6105110c66df9" - integrity sha512-46AnDs9XkgJ2f1Sqol1WgfJ8gOqp60fojpc9Wxch7x+BA63g4JfMV5/M5x0sI0TLlLY8EBSglcr8wQF/7C80AQ== +"@cspell/dict-gaming-terms@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.1.1.tgz#755d96864650f679ed5d0381e867380bf8efcf9a" + integrity sha512-tb8GFxjTLDQstkJcJ90lDqF4rKKlMUKs5/ewePN9P+PYRSehqDpLI5S5meOfPit8LGszeOrjUdBQ4zXo7NpMyQ== "@cspell/dict-git@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@cspell/dict-git/-/dict-git-3.0.4.tgz#3753f17a2a122f4dc734a51820fac7b6ffc594f1" integrity sha512-C44M+m56rYn6QCsLbiKiedyPTMZxlDdEYAsPwwlL5bhMDDzXZ3Ic8OCQIhMbiunhCOJJT+er4URmOmM+sllnjg== -"@cspell/dict-golang@^6.0.18": - version "6.0.18" - resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-6.0.18.tgz#44e144409c3141ee58d854e49e118f7d264c9d43" - integrity sha512-Mt+7NwfodDwUk7423DdaQa0YaA+4UoV3XSxQwZioqjpFBCuxfvvv4l80MxCTAAbK6duGj0uHbGTwpv8fyKYPKg== +"@cspell/dict-golang@^6.0.21": + version "6.0.21" + resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-6.0.21.tgz#dc6fb7177cd99faa8bdebaecb22ec13570154424" + integrity sha512-D3wG1MWhFx54ySFJ00CS1MVjR4UiBVsOWGIjJ5Av+HamnguqEshxbF9mvy+BX0KqzdLVzwFkoLBs8QeOID56HA== "@cspell/dict-google@^1.0.8": version "1.0.8" @@ -594,25 +594,25 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-makefile/-/dict-makefile-1.0.4.tgz#52ea60fbf30a9814229c222788813bf93cbf1f3e" integrity sha512-E4hG/c0ekPqUBvlkrVvzSoAA+SsDA9bLi4xSV3AXHTVru7Y2bVVGMPtpfF+fI3zTkww/jwinprcU1LSohI3ylw== -"@cspell/dict-markdown@^2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@cspell/dict-markdown/-/dict-markdown-2.0.9.tgz#0ecf2703fb69b47494bac81557d539cb4a541939" - integrity sha512-j2e6Eg18BlTb1mMP1DkyRFMM/FLS7qiZjltpURzDckB57zDZbUyskOFdl4VX7jItZZEeY0fe22bSPOycgS1Z5A== +"@cspell/dict-markdown@^2.0.10": + version "2.0.10" + resolved "https://registry.yarnpkg.com/@cspell/dict-markdown/-/dict-markdown-2.0.10.tgz#7e00957036aa3da2ea133135ae53a9108fb6b223" + integrity sha512-vtVa6L/84F9sTjclTYDkWJF/Vx2c5xzxBKkQp+CEFlxOF2SYgm+RSoEvAvg5vj4N5kuqR4350ZlY3zl2eA3MXw== "@cspell/dict-monkeyc@^1.0.10": version "1.0.10" resolved "https://registry.yarnpkg.com/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.10.tgz#21955a891b27270424c6e1edaaa4b444fb077c4f" integrity sha512-7RTGyKsTIIVqzbvOtAu6Z/lwwxjGRtY5RkKPlXKHEoEAgIXwfDxb5EkVwzGQwQr8hF/D3HrdYbRT8MFBfsueZw== -"@cspell/dict-node@^5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@cspell/dict-node/-/dict-node-5.0.6.tgz#80f156f79f15d58c5d4df89358314e128070ad98" - integrity sha512-CEbhPCpxGvRNByGolSBTrXXW2rJA4bGqZuTx1KKO85mwR6aadeOmUE7xf/8jiCkXSy+qvr9aJeh+jlfXcsrziQ== +"@cspell/dict-node@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@cspell/dict-node/-/dict-node-5.0.7.tgz#d26e558b2b157c254c6d5e5bf9b63cf35654c5ea" + integrity sha512-ZaPpBsHGQCqUyFPKLyCNUH2qzolDRm1/901IO8e7btk7bEDF56DN82VD43gPvD4HWz3yLs/WkcLa01KYAJpnOw== -"@cspell/dict-npm@^5.1.27": - version "5.1.29" - resolved "https://registry.yarnpkg.com/@cspell/dict-npm/-/dict-npm-5.1.29.tgz#578d0353373a84c109f84f0bd58c4cb90a4357cb" - integrity sha512-FPCE9MpO42WGc9u/lx3J6CZSfPVO5kMUaOQkTVqXo3sTDX6+o5ulb+9W/MD33kiA0AvXr1Lk8knhA6koW9t/Yw== +"@cspell/dict-npm@^5.2.3": + version "5.2.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-npm/-/dict-npm-5.2.3.tgz#f33d259245ea15796627661ae91e6e25b039b3ae" + integrity sha512-EdGkCpAq66Mhi9Qldgsr+NvPVL4TdtmdlqDe4VBp0P3n6J0B7b0jT1MlVDIiLR+F1eqBfL0qjfHf0ey1CafeNw== "@cspell/dict-php@^4.0.14": version "4.0.14" @@ -629,22 +629,22 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.13.tgz#904c8b97ffb60691d28cce0fb5186a8dd473587d" integrity sha512-1Wdp/XH1ieim7CadXYE7YLnUlW0pULEjVl9WEeziZw3EKCAw8ZI8Ih44m4bEa5VNBLnuP5TfqC4iDautAleQzQ== -"@cspell/dict-python@^4.2.15": - version "4.2.15" - resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-4.2.15.tgz#97c2d3ce3becc4dcb061f444232e903f9723cd16" - integrity sha512-VNXhj0Eh+hdHN89MgyaoSAexBQKmYtJaMhucbMI7XmBs4pf8fuFFN3xugk51/A4TZJr8+RImdFFsGMOw+I4bDA== +"@cspell/dict-python@^4.2.18": + version "4.2.18" + resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-4.2.18.tgz#3f7fdd73a392a563491ffc0e7812356863af4b14" + integrity sha512-hYczHVqZBsck7DzO5LumBLJM119a3F17aj8a7lApnPIS7cmEwnPc2eACNscAHDk7qAo2127oI7axUoFMe9/g1g== dependencies: - "@cspell/dict-data-science" "^2.0.7" + "@cspell/dict-data-science" "^2.0.8" "@cspell/dict-r@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@cspell/dict-r/-/dict-r-2.1.0.tgz#147a01b36fc4ae2381c88a00b1f8ba7fad77a4f1" integrity sha512-k2512wgGG0lTpTYH9w5Wwco+lAMf3Vz7mhqV8+OnalIE7muA0RSuD9tWBjiqLcX8zPvEJr4LdgxVju8Gk3OKyA== -"@cspell/dict-ruby@^5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-5.0.7.tgz#3593a955baaffe3c5d28fb178b72fdf93c7eec71" - integrity sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q== +"@cspell/dict-ruby@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-5.0.8.tgz#25a8f47db12cabeaddde2f38ba3d6c51fb94d7f7" + integrity sha512-ixuTneU0aH1cPQRbWJvtvOntMFfeQR2KxT8LuAv5jBKqQWIHSxzGlp+zX3SVyoeR0kOWiu64/O5Yn836A5yMcQ== "@cspell/dict-rust@^4.0.11": version "4.0.11" @@ -661,10 +661,10 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-shell/-/dict-shell-1.1.0.tgz#3110d5c81cb5bd7f6c0cc88e6e8ac7ccf6fa65b5" integrity sha512-D/xHXX7T37BJxNRf5JJHsvziFDvh23IF/KvkZXNSh8VqcRdod3BAz9VGHZf6VDqcZXr1VRqIYR3mQ8DSvs3AVQ== -"@cspell/dict-software-terms@^4.2.5": - version "4.2.5" - resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-4.2.5.tgz#7baf7abd410748b823805be16b01fd0ec85739d3" - integrity sha512-CaRzkWti3AgcXoxuRcMijaNG7YUk/MH1rHjB8VX34v3UdCxXXeqvRyElRKnxhFeVLB/robb2UdShqh/CpskxRg== +"@cspell/dict-software-terms@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-5.0.8.tgz#baa277fabfc70f3d8453830e26628ee6df53fad9" + integrity sha512-VsJesitvaHZpMgNwHHms3yDsZz7LNToC2HuSAnyt1znn37ribiJF1ty0jWhVQO6fv7K4PM1KsKTJIwqBwc446g== "@cspell/dict-sql@^2.2.0": version "2.2.0" @@ -681,43 +681,43 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-swift/-/dict-swift-2.0.5.tgz#72d37a3ea53d6a9ec1f4b553959268ce58acff28" integrity sha512-3lGzDCwUmnrfckv3Q4eVSW3sK3cHqqHlPprFJZD4nAqt23ot7fic5ALR7J4joHpvDz36nHX34TgcbZNNZOC/JA== -"@cspell/dict-terraform@^1.1.0": +"@cspell/dict-terraform@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@cspell/dict-terraform/-/dict-terraform-1.1.1.tgz#23a25f64eb7495642ab17b8fbeda46ac10cd6f43" integrity sha512-07KFDwCU7EnKl4hOZLsLKlj6Zceq/IsQ3LRWUyIjvGFfZHdoGtFdCp3ZPVgnFaAcd/DKv+WVkrOzUBSYqHopQQ== -"@cspell/dict-typescript@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-3.2.0.tgz#6133c086cf11c3823450860e6221fe256c48434d" - integrity sha512-Pk3zNePLT8qg51l0M4g1ISowYAEGxTuNfZlgkU5SvHa9Cu7x/BWoyYq9Fvc3kAyoisCjRPyvWF4uRYrPitPDFw== +"@cspell/dict-typescript@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-3.2.1.tgz#638b5d48b97d00b3db15746dd5cdf5535147fb55" + integrity sha512-jdnKg4rBl75GUBTsUD6nTJl7FGvaIt5wWcWP7TZSC3rV1LfkwvbUiY3PiGpfJlAIdnLYSeFWIpYU9gyVgz206w== "@cspell/dict-vue@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@cspell/dict-vue/-/dict-vue-3.0.4.tgz#0f1cb65e2f640925de72acbc1cae9e87f7727c05" integrity sha512-0dPtI0lwHcAgSiQFx8CzvqjdoXROcH+1LyqgROCpBgppommWpVhbQ0eubnKotFEXgpUCONVkeZJ6Ql8NbTEu+w== -"@cspell/dynamic-import@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/dynamic-import/-/dynamic-import-8.17.5.tgz#f1ce16fe5e3922d582f5d20979bc3d5bd9561b03" - integrity sha512-tY+cVkRou+0VKvH+K1NXv8/R7mOlW3BDGSs9fcgvhatj0m00Yf8blFC7tE4VVI9Qh2bkC/KDFqM24IqZbuwXUQ== +"@cspell/dynamic-import@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dynamic-import/-/dynamic-import-9.0.1.tgz#e71d33bd13ffd2ab86227d955a3d4c62791a3b6b" + integrity sha512-BoWzHwkufo90ubMZUN8Jy4HQYYWFW7psVCdG/4RUgfvVnazkPfLxWBbsPQsLrlIP0utaqei7D9FU0K7r7mpl4A== dependencies: - "@cspell/url" "8.17.5" + "@cspell/url" "9.0.1" import-meta-resolve "^4.1.0" -"@cspell/filetypes@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/filetypes/-/filetypes-8.17.5.tgz#a5c21864bd0e08575ee9a989e0812a14ffe8f50f" - integrity sha512-Fj6py2Rl+FEnMiXhRQUM1A5QmyeCLxi6dY/vQ0qfH6tp6KSaBiaC8wuPUKhr8hKyTd3+8lkUbobDhUf6xtMEXg== +"@cspell/filetypes@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/filetypes/-/filetypes-9.0.1.tgz#349f5e6e28ff741720df8f6e44a8e6d42ea37e6e" + integrity sha512-swZu3ra2AueyjEz/bPsvwFuHGYhjWZBx1K9FSvZA/yDIX5RVr6orQSuf9zvXNFui6Nyk0tudLnn3y9jT0LHk8A== -"@cspell/strong-weak-map@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/strong-weak-map/-/strong-weak-map-8.17.5.tgz#29bd258554de6989132f44ec541ec72132ff11f7" - integrity sha512-Z4eo+rZJr1086wZWycBiIG/n7gGvVoqn28I7ZicS8xedRYu/4yp2loHgLn4NpxG3e46+dNWs4La6vinod+UydQ== +"@cspell/strong-weak-map@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/strong-weak-map/-/strong-weak-map-9.0.1.tgz#509819ab5503ffb21794fbba5d19650fdf05985b" + integrity sha512-u87PWr1xACqs/F3HibZ4Eb0Za/ghWIa6WLvEKV9OaiLfEUQuczbrXPVgHmGr83H0XXWUKy8FvVbWGFmXwiw+gQ== -"@cspell/url@8.17.5": - version "8.17.5" - resolved "https://registry.yarnpkg.com/@cspell/url/-/url-8.17.5.tgz#fd8eeb710ab19236ec30c681e2086201497c45e1" - integrity sha512-GNQqST7zI85dAFVyao6oiTeg5rNhO9FH1ZAd397qQhvwfxrrniNfuoewu8gPXyP0R4XBiiaCwhBL7w9S/F5guw== +"@cspell/url@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@cspell/url/-/url-9.0.1.tgz#bffe68a51b98e4c1a7dfbd2d42994451510a02f9" + integrity sha512-8xaLrsQ742dmwXwS6tjreps3NpSQe6WEZFPQQT2DprVJXGZnfQR8ob0c+kPhD0hu9A6PwShJsRsfh3DQGKCqAw== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" @@ -726,27 +726,39 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": +"@eslint-community/eslint-utils@^4.2.0": version "4.4.1" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: eslint-visitor-keys "^3.4.3" +"@eslint-community/eslint-utils@^4.5.1", "@eslint-community/eslint-utils@^4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + dependencies: + eslint-visitor-keys "^3.4.3" + "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/config-array@^0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa" - integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w== +"@eslint/config-array@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.20.0.tgz#7a1232e82376712d3340012a2f561a2764d1988f" + integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ== dependencies: "@eslint/object-schema" "^2.1.6" debug "^4.3.1" minimatch "^3.1.2" +"@eslint/config-helpers@^0.2.1": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.2.tgz#3779f76b894de3a8ec4763b79660e6d54d5b1010" + integrity sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg== + "@eslint/core@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e" @@ -754,10 +766,17 @@ dependencies: "@types/json-schema" "^7.0.15" -"@eslint/eslintrc@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.0.tgz#96a558f45842989cca7ea1ecd785ad5491193846" - integrity sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ== +"@eslint/core@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.13.0.tgz#bf02f209846d3bf996f9e8009db62df2739b458c" + integrity sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" + integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -769,10 +788,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.21.0": - version "9.21.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.21.0.tgz#4303ef4e07226d87c395b8fad5278763e9c15c08" - integrity sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw== +"@eslint/js@9.26.0": + version "9.26.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.26.0.tgz#1e13126b67a3db15111d2dcc61f69a2acff70bd5" + integrity sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ== "@eslint/object-schema@^2.1.6": version "2.1.6" @@ -787,6 +806,14 @@ "@eslint/core" "^0.12.0" levn "^0.4.1" +"@eslint/plugin-kit@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz#47488d8f8171b5d4613e833313f3ce708e3525f8" + integrity sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA== + dependencies: + "@eslint/core" "^0.13.0" + levn "^0.4.1" + "@humanfs/core@^0.19.1": version "0.19.1" resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" @@ -1070,6 +1097,22 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@modelcontextprotocol/sdk@^1.8.0": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz#c7f4a1432872ef10130f5d9b0072060c17a3946b" + integrity sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ== + dependencies: + content-type "^1.0.5" + cors "^2.8.5" + cross-spawn "^7.0.3" + eventsource "^3.0.2" + express "^5.0.1" + express-rate-limit "^7.5.0" + pkce-challenge "^5.0.0" + raw-body "^3.0.0" + zod "^3.23.8" + zod-to-json-schema "^3.24.1" + "@multiformats/murmur3@^1.0.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-1.1.3.tgz#70349166992e5f981f1ddff0200fa775b2bf6606" @@ -1099,13 +1142,13 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nowarp/misti@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@nowarp/misti/-/misti-0.8.1.tgz#adaf865bfb64be157073f9ace650ff80d5bba905" - integrity sha512-rd+3B3FUlucPhRtYpi2vLddDwrIUt3DVo4R3sn1urUeh8mlGMwgha/hJpKQ4M9Vn48cxXy+e/1isz4Wkidlvrg== +"@nowarp/misti@^0.8.3": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@nowarp/misti/-/misti-0.8.3.tgz#85390a029c4c40dd5616962cf3d46acaa6c678f6" + integrity sha512-+1HttfF/ww1rgu9BcqVqTvJXTTNivjwb63uSHyAEmymN2OP7STViNrl3wqvaU4aLw6PAO98SR9VFmQQMWGhOow== dependencies: "@nowarp/souffle" "^0.1.2" - "@tact-lang/compiler" "~1.6.6" + "@tact-lang/compiler" "~1.6.7" "@types/benchmark" "^2.1.5" "@types/fs-extra" "^11.0.4" "@types/json-bigint" "^1.0.4" @@ -1128,10 +1171,10 @@ dependencies: isomorphic-fetch "^3.0.0" -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== +"@pkgr/core@^0.2.3": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.4.tgz#d897170a2b0ba51f78a099edccd968f7b103387c" + integrity sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw== "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" @@ -1235,7 +1278,7 @@ "@smithy/util-buffer-from" "^2.2.0" tslib "^2.6.2" -"@tact-lang/compiler@^1.6.7", "@tact-lang/compiler@~1.6.6": +"@tact-lang/compiler@1.6.7", "@tact-lang/compiler@~1.6.7": version "1.6.7" resolved "https://registry.yarnpkg.com/@tact-lang/compiler/-/compiler-1.6.7.tgz#5c4c134f4c765d59ede61124504226a04f443e3a" integrity sha512-SOAg0xnjobbA1KStH56faiZknczpqKtFp+IHcsKwwbPuYLUVdaygt8Wp++NYYYETSrRW5ysMPb96HPSqWY/tYg== @@ -1249,6 +1292,15 @@ path-normalize "^6.0.13" zod "^3.22.4" +"@tact-lang/deployer@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@tact-lang/deployer/-/deployer-0.2.0.tgz#8819cf76e0521a4f467ad4129c51423bbfc4dec8" + integrity sha512-OIRydgnetFyrAxQefubGiy2L77cngmDNcKkuKIuzxuPCanmmVJvUEg6tDdRfhTaP1z+a4WbFPsHiDH3CslESRw== + dependencies: + axios "^1.3.4" + form-data "^4.0.0" + zod "^3.20.6" + "@tact-lang/opcode@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@tact-lang/opcode/-/opcode-0.3.1.tgz#bd9c7b10771f7a100fe2e5e5f18b33350225dc96" @@ -1257,6 +1309,11 @@ "@ton/core" "^0.60.0" "@ton/crypto" "^3.3.0" +"@tact-lang/ton-abi@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@tact-lang/ton-abi/-/ton-abi-0.0.3.tgz#68aa8ecf8e14d91f37252773395753e4c623798e" + integrity sha512-n3ecmlwJiRI+4YKodc2/I3OsI14kYuxjPgFSWdNfr+GRMSZ76OvDIzq8Qr8k8iA3mSE+1RIplpluNnO9HCtgXg== + "@tact-lang/ton-jest@^0.0.4": version "0.0.4" resolved "https://registry.yarnpkg.com/@tact-lang/ton-jest/-/ton-jest-0.0.4.tgz#c87604669ed0c6b4ba1a2e6f06616e267f7fc8ca" @@ -1285,22 +1342,22 @@ jssha "3.2.0" tweetnacl "1.0.3" -"@ton/sandbox@^0.20.0": - version "0.20.0" - resolved "https://registry.yarnpkg.com/@ton/sandbox/-/sandbox-0.20.0.tgz#229ef12bd99b313b91003393890cdb01262189b5" - integrity sha512-uci6DRDZGW1eu+hHgbVzf4lDTi29PV+5XKPC8ZyYUJaoOtulkHDtgyrfZ1H5QSOVOmUIjHDQhPwLsn1kU51yHw== +"@ton/sandbox@0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@ton/sandbox/-/sandbox-0.29.0.tgz#af53e6d5eb066fcc7158997c15e16af93bd9d74e" + integrity sha512-Xl364A6XeH/vr2iG2MER1o0RWv2wP0kK/gbZkREPOd3bY2TRDcCwtnsFBsRfUQUi9/QHPCpNOz//guc5HhOw5g== -"@ton/test-utils@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@ton/test-utils/-/test-utils-0.4.2.tgz#965429aaf3258a49cc8ba0ef6623867f2c8b8e27" - integrity sha512-fthY8Nrlmy8jnOl/vx6yjeKzzu62ZXMe7ej9Xg7rb4d3511V7dVQK+nw4YLSW5+dD/6WT03dFuNZXnuMYy5fHw== +"@ton/test-utils@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@ton/test-utils/-/test-utils-0.6.0.tgz#09e519cf2a209d22c8fb55746321a3e851469d1a" + integrity sha512-cy1X6261BVVlsBS05Y4ch3ZfddxJr7BVSPnORUVHILU2XtJaqS9txneEQlKHmyF0NUtec3NrtQskRKgHYD2/Fg== dependencies: node-inspect-extracted "^2.0.0" -"@ton/ton@^13.9.0": - version "13.11.2" - resolved "https://registry.yarnpkg.com/@ton/ton/-/ton-13.11.2.tgz#e40204df6a663fdf1b862dfe8ba2a91be3c0dddc" - integrity sha512-EPqW+ZTe0MmfqguJEIGMuAqTAFRKMEce95HlDx8h6CGn2y3jiMgV1/oO+WpDIOiX+1wnTu+xtajk8JTWr8nKRQ== +"@ton/ton@^15.2.1": + version "15.2.1" + resolved "https://registry.yarnpkg.com/@ton/ton/-/ton-15.2.1.tgz#be5a5b8576c4bae9e7ad52616b3092b6abcf7672" + integrity sha512-ICzozzATRfymkVfFVZrfVpKnCc5PLxAVeaB62mx/HsgllsjnR64UuoLuE6hqWHcA3/Hft9YLGdk2/rOHGZM6qA== dependencies: axios "^1.6.7" dataloader "^2.0.0" @@ -1308,6 +1365,11 @@ teslabot "^1.3.0" zod "^3.21.4" +"@tondevwallet/traces@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@tondevwallet/traces/-/traces-0.1.6.tgz#716ee5923c51ee8fd83b68f629d8773347e55cd4" + integrity sha512-/aOwNLBUCtgweNzHzRQ1cm1kweXn3Kv5/pUYKYDiyOyV9GPKCBdWp1lwc4t9hgr6WrzUOrbovJkqxH1hG2Mhcw== + "@tonstudio/parser-runtime@0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@tonstudio/parser-runtime/-/parser-runtime-0.0.1.tgz#469955fb7ea354d4fadaa5964359b11fd17f926b" @@ -1410,7 +1472,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.2.4": +"@types/jest@^29.5.14": version "29.5.14" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== @@ -1452,27 +1514,22 @@ dependencies: undici-types "~6.21.0" -"@types/node@^18.11.14": - version "18.19.68" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.68.tgz#f4f10d9927a7eaf3568c46a6d739cc0967ccb701" - integrity sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw== +"@types/node@^22.15.17": + version "22.15.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.17.tgz#355ccec95f705b664e4332bb64a7f07db30b7055" + integrity sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw== dependencies: - undici-types "~5.26.4" - -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + undici-types "~6.21.0" "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== -"@types/qs@^6.9.7": - version "6.9.17" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a" - integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ== +"@types/qs@^6.9.18": + version "6.9.18" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.18.tgz#877292caa91f7c1b213032b34626505b746624c2" + integrity sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA== "@types/stack-utils@^2.0.0": version "2.0.3" @@ -1491,86 +1548,86 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^7.0.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" - integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== +"@typescript-eslint/eslint-plugin@^8.32.0": + version "8.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.0.tgz#86630dd3084f9d6c4239bbcd6a7ee1a7ee844f7f" + integrity sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/type-utils" "7.18.0" - "@typescript-eslint/utils" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/scope-manager" "8.32.0" + "@typescript-eslint/type-utils" "8.32.0" + "@typescript-eslint/utils" "8.32.0" + "@typescript-eslint/visitor-keys" "8.32.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" - ts-api-utils "^1.3.0" + ts-api-utils "^2.1.0" -"@typescript-eslint/parser@^7.0.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" - integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== +"@typescript-eslint/parser@^8.32.0": + version "8.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.32.0.tgz#fe840ecb2726a82fa9f5562837ec40503ae71caf" + integrity sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A== dependencies: - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/scope-manager" "8.32.0" + "@typescript-eslint/types" "8.32.0" + "@typescript-eslint/typescript-estree" "8.32.0" + "@typescript-eslint/visitor-keys" "8.32.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" - integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== +"@typescript-eslint/scope-manager@8.32.0": + version "8.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz#6be89f652780f0d3d19d58dc0ee107b1a9e3282c" + integrity sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ== dependencies: - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/types" "8.32.0" + "@typescript-eslint/visitor-keys" "8.32.0" -"@typescript-eslint/type-utils@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" - integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== +"@typescript-eslint/type-utils@8.32.0": + version "8.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.32.0.tgz#5e0882393e801963f749bea38888e716045fe895" + integrity sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg== dependencies: - "@typescript-eslint/typescript-estree" "7.18.0" - "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/typescript-estree" "8.32.0" + "@typescript-eslint/utils" "8.32.0" debug "^4.3.4" - ts-api-utils "^1.3.0" + ts-api-utils "^2.1.0" -"@typescript-eslint/types@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" - integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== +"@typescript-eslint/types@8.32.0": + version "8.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.32.0.tgz#a4a66b8876b8391970cf069b49572e43f1fc957a" + integrity sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA== -"@typescript-eslint/typescript-estree@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" - integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== +"@typescript-eslint/typescript-estree@8.32.0": + version "8.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz#11d45f47bfabb141206a3da6c7b91a9d869ff32d" + integrity sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ== dependencies: - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/types" "8.32.0" + "@typescript-eslint/visitor-keys" "8.32.0" debug "^4.3.4" - globby "^11.1.0" + fast-glob "^3.3.2" is-glob "^4.0.3" minimatch "^9.0.4" semver "^7.6.0" - ts-api-utils "^1.3.0" + ts-api-utils "^2.1.0" -"@typescript-eslint/utils@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" - integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== +"@typescript-eslint/utils@8.32.0": + version "8.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.32.0.tgz#24570f68cf845d198b73a7f94ca88d8c2505ba47" + integrity sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw== dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.32.0" + "@typescript-eslint/types" "8.32.0" + "@typescript-eslint/typescript-estree" "8.32.0" -"@typescript-eslint/visitor-keys@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" - integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== +"@typescript-eslint/visitor-keys@8.32.0": + version "8.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz#0cca2cac046bc71cc40ce8214bac2850d6ecf4a6" + integrity sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w== dependencies: - "@typescript-eslint/types" "7.18.0" - eslint-visitor-keys "^3.4.3" + "@typescript-eslint/types" "8.32.0" + eslint-visitor-keys "^4.2.0" "@vue/compiler-core@3.5.13": version "3.5.13" @@ -1624,6 +1681,14 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +accepts@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895" + integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng== + dependencies: + mime-types "^3.0.0" + negotiator "^1.0.0" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -1651,6 +1716,11 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1747,6 +1817,15 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +axios@^1.3.4: + version "1.9.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.9.0.tgz#25534e3b72b54540077d33046f77e3b8d7081901" + integrity sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axios@^1.6.7: version "1.7.9" resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" @@ -1870,6 +1949,21 @@ blockstore-core@1.0.5: it-take "^1.0.1" multiformats "^9.4.7" +body-parser@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.0.tgz#f7a9656de305249a715b549b7b8fd1ab9dfddcfa" + integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg== + dependencies: + bytes "^3.1.2" + content-type "^1.0.5" + debug "^4.4.0" + http-errors "^2.0.0" + iconv-lite "^0.6.3" + on-finished "^2.4.1" + qs "^6.14.0" + raw-body "^3.0.0" + type-is "^2.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1929,10 +2023,22 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== +builtin-modules@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-5.0.0.tgz#9be95686dedad2e9eed05592b07733db87dcff1a" + integrity sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg== + +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + +bytes@3.1.2, bytes@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== call-bind-apply-helpers@^1.0.1: version "1.0.1" @@ -1982,7 +2088,12 @@ chalk-template@^1.1.0: dependencies: chalk "^5.2.0" -chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2: +chalk@5.4.1, chalk@^5.2.0, chalk@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== + +chalk@^4.0.0, chalk@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1990,11 +2101,6 @@ chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^5.2.0, chalk@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" - integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -2005,10 +2111,10 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -ci-info@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.1.0.tgz#92319d2fa29d2620180ea5afed31f589bc98cf83" - integrity sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A== +ci-info@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" + integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== cjs-module-lexer@^1.0.0: version "1.4.1" @@ -2137,15 +2243,37 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +content-disposition@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.0.0.tgz#844426cb398f934caefcbb172200126bc7ceace2" + integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg== + dependencies: + safe-buffer "5.2.1" + +content-type@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.38.1: - version "3.41.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17" - integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== +cookie-signature@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.2.tgz#57c7fc3cc293acab9fec54d73e15690ebe4a1793" + integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg== + +cookie@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + +core-js-compat@^3.41.0: + version "3.42.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.42.0.tgz#ce19c29706ee5806e26d3cb3c542d4cfc0ed51bb" + integrity sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ== dependencies: browserslist "^4.24.4" @@ -2154,6 +2282,14 @@ core-util-is@^1.0.3: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cors@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + cosmiconfig@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -2199,80 +2335,79 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" -cspell-config-lib@8.17.5: - version "8.17.5" - resolved "https://registry.yarnpkg.com/cspell-config-lib/-/cspell-config-lib-8.17.5.tgz#06dbd6289b01211825a7452a7706527668707622" - integrity sha512-XDc+UJO5RZ9S9e2Ajz332XjT7dv6Og2UqCiSnAlvHt7t/MacLHSPARZFIivheObNkWZ7E1iWI681RxKoH4o40w== +cspell-config-lib@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cspell-config-lib/-/cspell-config-lib-9.0.1.tgz#ec00b2bf75d88507cc3e9b6e26d6a6ed0f6194f5" + integrity sha512-hbeyU6cY4NPKh69L4QpBZgGz00f7rLk10xPlCo6MxEmCqSOTuXXvDEUR51d2ED69G+GyFAeZi5VU9IdJ4jhvzQ== dependencies: - "@cspell/cspell-types" "8.17.5" + "@cspell/cspell-types" "9.0.1" comment-json "^4.2.5" - yaml "^2.7.0" + yaml "^2.7.1" -cspell-dictionary@8.17.5: - version "8.17.5" - resolved "https://registry.yarnpkg.com/cspell-dictionary/-/cspell-dictionary-8.17.5.tgz#4ff4c18705603e7b83c75a2e0f0e8cf3cf2e795b" - integrity sha512-O/Uuhv1RuDu+5WYQml0surudweaTvr+2YJSmPSdlihByUSiogCbpGqwrRow7wQv/C5p1W1FlFjotvUfoR0fxHA== +cspell-dictionary@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cspell-dictionary/-/cspell-dictionary-9.0.1.tgz#de6c70c509a863f667cb21bb75f6f41332fe1e81" + integrity sha512-I9gjRpfV4djxN0i2p9OzWIrkjtUaGUyVE9atvRbkHUMeqDUhC2Qt0Mb9tnF8I7qnHeZt+U44vUa9Dg7yrJ+k4Q== dependencies: - "@cspell/cspell-pipe" "8.17.5" - "@cspell/cspell-types" "8.17.5" - cspell-trie-lib "8.17.5" + "@cspell/cspell-pipe" "9.0.1" + "@cspell/cspell-types" "9.0.1" + cspell-trie-lib "9.0.1" fast-equals "^5.2.2" -cspell-gitignore@8.17.5: - version "8.17.5" - resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-8.17.5.tgz#9c186d016aca534a6a4e17a7bc8517ca467c076d" - integrity sha512-I27fgOUZzH14jeIYo65LooB60fZ42f6OJL1lOR9Mk6IrIlDyUtzherGR+xx5KshK2katYkX42Qu4zsVYM6VFPA== +cspell-gitignore@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-9.0.1.tgz#ae7f74a876d621542fcca6a2216bd74cb1738c40" + integrity sha512-xjgOmeGbHEaeF0erRQ2QXwqxWqGDiI4mu+NjCL7ZHPoAM5y8PEO6IbxVNabIB1xC4QAborbtEQ/8ydDWLJcPoQ== dependencies: - "@cspell/url" "8.17.5" - cspell-glob "8.17.5" - cspell-io "8.17.5" - find-up-simple "^1.0.0" + "@cspell/url" "9.0.1" + cspell-glob "9.0.1" + cspell-io "9.0.1" -cspell-glob@8.17.5: - version "8.17.5" - resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-8.17.5.tgz#71dddfc2044b7f20611fec6b050e8e452402a6bf" - integrity sha512-OXquou7UykInlGV5et5lNKYYrW0dwa28aEF995x1ocANND7o0bbHmFlbgyci/Lp4uFQai8sifmfFJbuIg2IC/A== +cspell-glob@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-9.0.1.tgz#0249ba4a0a41cac8454678df84300e36a28cc5b1" + integrity sha512-dQU/ln6J9Qe31zk1cLJnq/WNAjRrTUig1GG8WA2oK1jHZKY9VbyJLb5DUFnDUx35cI0jdOEnGSCWi8qNjHSc1Q== dependencies: - "@cspell/url" "8.17.5" - micromatch "^4.0.8" + "@cspell/url" "9.0.1" + picomatch "^4.0.2" -cspell-grammar@8.17.5: - version "8.17.5" - resolved "https://registry.yarnpkg.com/cspell-grammar/-/cspell-grammar-8.17.5.tgz#fe05a0bfa253cf0337554727db6b5451e1f9e09b" - integrity sha512-st2n+FVw25MvMbsGb3TeJNRr6Oih4g14rjOd/UJN0qn+ceH360SAShUFqSd4kHHu2ADazI/TESFU6FRtMTPNOg== - dependencies: - "@cspell/cspell-pipe" "8.17.5" - "@cspell/cspell-types" "8.17.5" - -cspell-io@8.17.5: - version "8.17.5" - resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-8.17.5.tgz#87d2be1db3b77215ace251e0437c009af9d40abb" - integrity sha512-oevM/8l0s6nc1NCYPqNFumrW50QSHoa6wqUT8cWs09gtZdE2AWG0U6bIE8ZEVz6e6FxS+6IenGKTdUUwP0+3fg== - dependencies: - "@cspell/cspell-service-bus" "8.17.5" - "@cspell/url" "8.17.5" - -cspell-lib@8.17.5: - version "8.17.5" - resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-8.17.5.tgz#c289e67ec4e895c93a2c2ecec5f412a8c8f82f6f" - integrity sha512-S3KuOrcST1d2BYmTXA+hnbRdho5n3w5GUvEaCx3QZQBwAPfLpAwJbe2yig1TxBpyEJ5LqP02i/mDg1pUCOP0hQ== - dependencies: - "@cspell/cspell-bundled-dicts" "8.17.5" - "@cspell/cspell-pipe" "8.17.5" - "@cspell/cspell-resolver" "8.17.5" - "@cspell/cspell-types" "8.17.5" - "@cspell/dynamic-import" "8.17.5" - "@cspell/filetypes" "8.17.5" - "@cspell/strong-weak-map" "8.17.5" - "@cspell/url" "8.17.5" +cspell-grammar@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cspell-grammar/-/cspell-grammar-9.0.1.tgz#84509e77210106f6fa025691dd2e2a6a38791760" + integrity sha512-FZ1z1p3pslfotZT/W/VRZjB4S+z0ETrTbNmQ5pGmhdY0nm7Slmg+8nIJluLEjBneBGTJIOcLjYykwS2vI6jzxw== + dependencies: + "@cspell/cspell-pipe" "9.0.1" + "@cspell/cspell-types" "9.0.1" + +cspell-io@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-9.0.1.tgz#1c4a6071f734df070039c0d057a75cd8333886a3" + integrity sha512-L5fZY0glVeQb6nmt1WL1wKzZzoHJUkBQ9BGCrwqSXIrjZrYmBNSKixCjo6o9n2keRUwpNjsvZj1TQDKDV+FsXA== + dependencies: + "@cspell/cspell-service-bus" "9.0.1" + "@cspell/url" "9.0.1" + +cspell-lib@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-9.0.1.tgz#1cc10f485cfe976c5091999278c4c37f548b67e9" + integrity sha512-F4vJG6GmAGVAuhgcepO12UtG7yev7Rcfa31MLIyYNTrd5NeORzM+GTHnL970FlEflwYPYjcSTGwkyowQ+ZbmDg== + dependencies: + "@cspell/cspell-bundled-dicts" "9.0.1" + "@cspell/cspell-pipe" "9.0.1" + "@cspell/cspell-resolver" "9.0.1" + "@cspell/cspell-types" "9.0.1" + "@cspell/dynamic-import" "9.0.1" + "@cspell/filetypes" "9.0.1" + "@cspell/strong-weak-map" "9.0.1" + "@cspell/url" "9.0.1" clear-module "^4.1.2" comment-json "^4.2.5" - cspell-config-lib "8.17.5" - cspell-dictionary "8.17.5" - cspell-glob "8.17.5" - cspell-grammar "8.17.5" - cspell-io "8.17.5" - cspell-trie-lib "8.17.5" + cspell-config-lib "9.0.1" + cspell-dictionary "9.0.1" + cspell-glob "9.0.1" + cspell-grammar "9.0.1" + cspell-io "9.0.1" + cspell-trie-lib "9.0.1" env-paths "^3.0.0" fast-equals "^5.2.2" gensequence "^7.0.0" @@ -2282,45 +2417,44 @@ cspell-lib@8.17.5: vscode-uri "^3.1.0" xdg-basedir "^5.1.0" -cspell-trie-lib@8.17.5: - version "8.17.5" - resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-8.17.5.tgz#49e4f09e37353480d669a6220d392d452bd1527b" - integrity sha512-9hjI3nRQxtGEua6CgnLbK3sGHLx9dXR/BHwI/csRL4dN5GGRkE5X3CCoy1RJVL7iGFLIzi43+L10xeFRmWniKw== +cspell-trie-lib@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-9.0.1.tgz#219acb8e6d249504a1fd4026df9c50871cad05a7" + integrity sha512-gIupiHwLdsQun79biJgiqmXffKUGzFjGLFEeVptI2Zy5Oa3XhRJsHap4PyeleErONkpzxMG1tgpOWzhOqwl65Q== dependencies: - "@cspell/cspell-pipe" "8.17.5" - "@cspell/cspell-types" "8.17.5" + "@cspell/cspell-pipe" "9.0.1" + "@cspell/cspell-types" "9.0.1" gensequence "^7.0.0" -cspell@^8.3.2: - version "8.17.5" - resolved "https://registry.yarnpkg.com/cspell/-/cspell-8.17.5.tgz#dd5c4246f3eed1953e7902f3062d029218ff7d72" - integrity sha512-l3Cfp87d7Yrodem675irdxV6+7+OsdR+jNwYHe33Dgnd6ePEfooYrvmfGdXF9rlQrNLUQp/HqYgHJzSq19UEsg== +cspell@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cspell/-/cspell-9.0.1.tgz#f279181887fb79961f588eab93af69be703f1918" + integrity sha512-AJqsX+3eSTz9GmIuyEZUzCCTbvCPw6+Nv7UYa4PCn7vNV3XEb5LHTp5i9y2i65fNaeNEcQXLrLYoY/JcBFmUSQ== dependencies: - "@cspell/cspell-json-reporter" "8.17.5" - "@cspell/cspell-pipe" "8.17.5" - "@cspell/cspell-types" "8.17.5" - "@cspell/dynamic-import" "8.17.5" - "@cspell/url" "8.17.5" + "@cspell/cspell-json-reporter" "9.0.1" + "@cspell/cspell-pipe" "9.0.1" + "@cspell/cspell-types" "9.0.1" + "@cspell/dynamic-import" "9.0.1" + "@cspell/url" "9.0.1" chalk "^5.4.1" chalk-template "^1.1.0" commander "^13.1.0" - cspell-dictionary "8.17.5" - cspell-gitignore "8.17.5" - cspell-glob "8.17.5" - cspell-io "8.17.5" - cspell-lib "8.17.5" + cspell-dictionary "9.0.1" + cspell-gitignore "9.0.1" + cspell-glob "9.0.1" + cspell-io "9.0.1" + cspell-lib "9.0.1" fast-json-stable-stringify "^2.1.0" file-entry-cache "^9.1.0" - get-stdin "^9.0.0" semver "^7.7.1" - tinyglobby "^0.2.12" + tinyglobby "^0.2.13" dataloader@^2.0.0: version "2.2.3" resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.3.tgz#42d10b4913515f5b37c6acedcb4960d6ae1b1517" integrity sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA== -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== @@ -2342,6 +2476,24 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + +default-browser@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" + integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -2376,6 +2528,11 @@ depcheck@^1.4.7: semver "^7.5.4" yargs "^16.2.0" +depd@2.0.0, depd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + deps-regex@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/deps-regex/-/deps-regex-0.2.0.tgz#3ee7ddae5fd784f3accf29d5a711aa6e10044137" @@ -2401,17 +2558,10 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dotenv@^16.4.5: - version "16.4.7" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" - integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== +dotenv@^16.5.0: + version "16.5.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692" + integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== dunder-proto@^1.0.0: version "1.0.1" @@ -2422,6 +2572,11 @@ dunder-proto@^1.0.0: es-errors "^1.3.0" gopd "^1.2.0" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + ejs@^3.1.10: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" @@ -2449,6 +2604,19 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +encodeurl@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +enquirer@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + entities@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" @@ -2498,6 +2666,11 @@ escalade@^3.1.1, escalade@^3.2.0: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -2513,50 +2686,51 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== +eslint-config-prettier@^10.1.5: + version "10.1.5" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz#00c18d7225043b6fbce6a665697377998d453782" + integrity sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw== -eslint-plugin-prettier@^5.1.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz#c4af01691a6fa9905207f0fbba0d7bea0902cce5" - integrity sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw== +eslint-plugin-prettier@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.0.tgz#54d4748904e58eaf1ffe26c4bffa4986ca7f952b" + integrity sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA== dependencies: prettier-linter-helpers "^1.0.0" - synckit "^0.9.1" + synckit "^0.11.0" -eslint-plugin-unicorn@^56.0.1: - version "56.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz#d10a3df69ba885939075bdc95a65a0c872e940d4" - integrity sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog== +eslint-plugin-unicorn@^59.0.1: + version "59.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-59.0.1.tgz#e76ca18f6b92633440973e5442923a36544a1422" + integrity sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q== dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - "@eslint-community/eslint-utils" "^4.4.0" - ci-info "^4.0.0" + "@babel/helper-validator-identifier" "^7.25.9" + "@eslint-community/eslint-utils" "^4.5.1" + "@eslint/plugin-kit" "^0.2.7" + ci-info "^4.2.0" clean-regexp "^1.0.0" - core-js-compat "^3.38.1" + core-js-compat "^3.41.0" esquery "^1.6.0" - globals "^15.9.0" - indent-string "^4.0.0" - is-builtin-module "^3.2.1" - jsesc "^3.0.2" + find-up-simple "^1.0.1" + globals "^16.0.0" + indent-string "^5.0.0" + is-builtin-module "^5.0.0" + jsesc "^3.1.0" pluralize "^8.0.0" - read-pkg-up "^7.0.1" regexp-tree "^0.1.27" - regjsparser "^0.10.0" - semver "^7.6.3" - strip-indent "^3.0.0" + regjsparser "^0.12.0" + semver "^7.7.1" + strip-indent "^4.0.0" eslint-plugin-unused-imports@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz#62ddc7446ccbf9aa7b6f1f0b00a980423cda2738" integrity sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ== -eslint-scope@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" - integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== +eslint-scope@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d" + integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -2571,21 +2745,23 @@ eslint-visitor-keys@^4.2.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== -eslint@^9.19.0: - version "9.21.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.21.0.tgz#b1c9c16f5153ff219791f627b94ab8f11f811591" - integrity sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg== +eslint@^9.26.0: + version "9.26.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.26.0.tgz#978fe029adc2aceed28ab437bca876e83461c3b4" + integrity sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.19.2" - "@eslint/core" "^0.12.0" - "@eslint/eslintrc" "^3.3.0" - "@eslint/js" "9.21.0" - "@eslint/plugin-kit" "^0.2.7" + "@eslint/config-array" "^0.20.0" + "@eslint/config-helpers" "^0.2.1" + "@eslint/core" "^0.13.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.26.0" + "@eslint/plugin-kit" "^0.2.8" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.2" + "@modelcontextprotocol/sdk" "^1.8.0" "@types/estree" "^1.0.6" "@types/json-schema" "^7.0.15" ajv "^6.12.4" @@ -2593,7 +2769,7 @@ eslint@^9.19.0: cross-spawn "^7.0.6" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.2.0" + eslint-scope "^8.3.0" eslint-visitor-keys "^4.2.0" espree "^10.3.0" esquery "^1.5.0" @@ -2610,6 +2786,7 @@ eslint@^9.19.0: minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" + zod "^3.24.2" espree@^10.0.1, espree@^10.3.0: version "10.3.0" @@ -2654,11 +2831,28 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +etag@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + eventemitter3@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== +eventsource-parser@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eventsource-parser/-/eventsource-parser-3.0.1.tgz#5e358dba9a55ba64ca90da883c4ca35bd82467bd" + integrity sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA== + +eventsource@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-3.0.7.tgz#1157622e2f5377bb6aef2114372728ba0c156989" + integrity sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA== + dependencies: + eventsource-parser "^3.0.1" + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -2674,21 +2868,6 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execa@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - 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.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -2712,6 +2891,44 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" +express-rate-limit@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-7.5.0.tgz#6a67990a724b4fbbc69119419feef50c51e8b28f" + integrity sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg== + +express@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/express/-/express-5.1.0.tgz#d31beaf715a0016f0d53f47d3b4d7acf28c75cc9" + integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA== + dependencies: + accepts "^2.0.0" + body-parser "^2.2.0" + content-disposition "^1.0.0" + content-type "^1.0.5" + cookie "^0.7.1" + cookie-signature "^1.2.1" + debug "^4.4.0" + encodeurl "^2.0.0" + escape-html "^1.0.3" + etag "^1.8.1" + finalhandler "^2.1.0" + fresh "^2.0.0" + http-errors "^2.0.0" + merge-descriptors "^2.0.0" + mime-types "^3.0.0" + on-finished "^2.4.1" + once "^1.4.0" + parseurl "^1.3.3" + proxy-addr "^2.0.7" + qs "^6.14.0" + range-parser "^1.2.1" + router "^2.2.0" + send "^1.1.0" + serve-static "^2.2.0" + statuses "^2.0.1" + type-is "^2.0.1" + vary "^1.1.2" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -2727,7 +2944,7 @@ fast-equals@^5.2.2: resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.2.2.tgz#885d7bfb079fac0ce0e8450374bce29e9b742484" integrity sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw== -fast-glob@^3.2.9: +fast-glob@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -2762,10 +2979,10 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fdir@^6.4.3: - version "6.4.3" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72" - integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== +fdir@^6.4.4: + version "6.4.4" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.4.tgz#1cfcf86f875a883e19a8fab53622cfe992e8d2f9" + integrity sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg== file-entry-cache@^8.0.0: version "8.0.0" @@ -2795,7 +3012,19 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -find-up-simple@^1.0.0: +finalhandler@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.1.0.tgz#72306373aa89d05a8242ed569ed86a1bff7c561f" + integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q== + dependencies: + debug "^4.4.0" + encodeurl "^2.0.0" + escape-html "^1.0.3" + on-finished "^2.4.1" + parseurl "^1.3.3" + statuses "^2.0.1" + +find-up-simple@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/find-up-simple/-/find-up-simple-1.0.1.tgz#18fb90ad49e45252c4d7fca56baade04fa3fca1e" integrity sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ== @@ -2861,6 +3090,16 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4" + integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== + fs-extra@^11.2.0: version "11.2.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" @@ -2926,21 +3165,11 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stdin@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" - integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3004,22 +3233,10 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globals@^15.9.0: - version "15.15.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" - integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" +globals@^16.0.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-16.1.0.tgz#ee6ab147d41c64e9f2beaaaf66572d18df8e1e60" + integrity sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g== gopd@^1.2.0: version "1.2.0" @@ -3073,31 +3290,39 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +http-errors@2.0.0, http-errors@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== - husky@^9.1.7: version "9.1.7" resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== +iconv-lite@0.6.3, iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -3139,10 +3364,10 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +indent-string@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" + integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== inflight@^1.0.4: version "1.0.6" @@ -3152,7 +3377,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3180,6 +3405,11 @@ interface-store@^2.0.1, interface-store@^2.0.2: resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + ipfs-unixfs-importer@9.0.10: version "9.0.10" resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-9.0.10.tgz#2527ea0b4e018a9e80fa981101485babcd05c494" @@ -3214,12 +3444,12 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== +is-builtin-module@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-5.0.0.tgz#19df4b9c7451149b68176b0e06d18646db6308dd" + integrity sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA== dependencies: - builtin-modules "^3.3.0" + builtin-modules "^5.0.0" is-core-module@^2.12.0, is-core-module@^2.16.0: version "2.16.1" @@ -3228,6 +3458,11 @@ is-core-module@^2.12.0, is-core-module@^2.16.0: dependencies: hasown "^2.0.2" +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -3262,6 +3497,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -3272,21 +3514,28 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-promise@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" + integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - is-windows@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -3748,7 +3997,7 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.3.1: +jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== @@ -3778,15 +4027,15 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsesc@^3.0.2: +jsesc@^3.0.2, jsesc@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== json-bigint@^1.0.0: version "1.0.0" @@ -3869,26 +4118,26 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^15.4.3: - version "15.4.3" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.4.3.tgz#e73587cc857f580c99f907abefe9ac8d8d5e74c1" - integrity sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g== +lint-staged@^16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-16.0.0.tgz#31826709bde6a62542431da3055f038e386a20db" + integrity sha512-sUCprePs6/rbx4vKC60Hez6X10HPkpDJaGcy3D1NdwR7g1RcNkWL8q9mJMreOqmHBTs+1sNFp+wOiX9fr+hoOQ== dependencies: chalk "^5.4.1" commander "^13.1.0" debug "^4.4.0" - execa "^8.0.1" lilconfig "^3.1.3" - listr2 "^8.2.5" + listr2 "^8.3.3" micromatch "^4.0.8" + nano-spawn "^1.0.0" pidtree "^0.6.0" string-argv "^0.3.2" - yaml "^2.7.0" + yaml "^2.7.1" -listr2@^8.2.5: - version "8.2.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d" - integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ== +listr2@^8.3.3: + version "8.3.3" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.3.3.tgz#815fc8f738260ff220981bf9e866b3e11e8121bf" + integrity sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ== dependencies: cli-truncate "^4.0.0" colorette "^2.0.20" @@ -3980,6 +4229,16 @@ math-intrinsics@^1.0.0: resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== +media-typer@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" + integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== + +merge-descriptors@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808" + integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g== + merge-options@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" @@ -3992,7 +4251,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -4010,6 +4269,11 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== +mime-db@^1.54.0: + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + mime-types@^2.1.12: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" @@ -4017,22 +4281,24 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" +mime-types@^3.0.0, mime-types@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce" + integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA== + dependencies: + mime-db "^1.54.0" + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - mimic-function@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== -min-indent@^1.0.0: +min-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== @@ -4096,6 +4362,11 @@ murmurhash3js-revisited@^3.0.0: resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== +nano-spawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nano-spawn/-/nano-spawn-1.0.1.tgz#c8e4c1e133e567e3efba44041dcfb12113d861b6" + integrity sha512-BfcvzBlUTxSDWfT+oH7vd6CbUV+rThLLHCIym/QO6GGLBsyVXleZs00fto2i2jzC/wPiBYk5jyOmpXWg4YopiA== + nanoid@^3.3.8: version "3.3.9" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.9.tgz#e0097d8e026b3343ff053e9ccd407360a03f503a" @@ -4106,6 +4377,11 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +negotiator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" + integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== + node-fetch@^2.6.1: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -4128,16 +4404,6 @@ node-releases@^2.0.19: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -4150,19 +4416,24 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" +object-assign@^4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.13.3: version "1.13.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== -once@^1.3.0: +on-finished@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -4176,13 +4447,6 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - onetime@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" @@ -4190,6 +4454,16 @@ onetime@^7.0.0: dependencies: mimic-function "^5.0.0" +open@^10.1.2: + version "10.1.2" + resolved "https://registry.yarnpkg.com/open/-/open-10.1.2.tgz#d5df40984755c9a9c3c93df8156a12467e882925" + integrity sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^3.1.0" + optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -4264,6 +4538,11 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== +parseurl@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -4279,11 +4558,6 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - path-normalize@^6.0.13: version "6.0.13" resolved "https://registry.yarnpkg.com/path-normalize/-/path-normalize-6.0.13.tgz#f80575c85ef041366040b00cdbeea97b8e255231" @@ -4294,6 +4568,11 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-to-regexp@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" + integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -4324,6 +4603,11 @@ pirates@^4.0.4: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +pkce-challenge@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkce-challenge/-/pkce-challenge-5.0.0.tgz#c3a405cb49e272094a38e890a2b51da0228c4d97" + integrity sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ== + pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -4357,6 +4641,11 @@ postcss@^8.4.48: picocolors "^1.1.1" source-map-js "^1.2.1" +prando@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/prando/-/prando-6.0.1.tgz#ffa8de84c2adc4975dd9df37ae4ada0458face53" + integrity sha512-ghUWxQ1T9IJmPu6eshc3VU0OwveUtXQ33ZLXYUcz1Oc5ppKLDXKp0TBDj6b0epwhEctzcQSNGR2iHyvQSn4W5A== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -4369,7 +4658,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^3.4.2: +prettier@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== @@ -4410,6 +4699,14 @@ protobufjs@^6.10.2: "@types/node" ">=13.7.0" long "^4.0.0" +proxy-addr@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -4425,12 +4722,12 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== -qs@^6.11.0: - version "6.13.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.1.tgz#3ce5fc72bd3a8171b85c99b93c65dd20b7d1b16e" - integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg== +qs@^6.14.0: + version "6.14.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== dependencies: - side-channel "^1.0.6" + side-channel "^1.1.0" queue-microtask@^1.2.2: version "1.2.3" @@ -4449,30 +4746,26 @@ rabin-wasm@^0.1.4: node-fetch "^2.6.1" readable-stream "^3.6.0" +range-parser@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.0.tgz#25b3476f07a51600619dae3fe82ddc28a36e5e0f" + integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.6.3" + unpipe "1.0.0" + react-is@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -4494,12 +4787,12 @@ regexp-tree@^0.1.27: resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== -regjsparser@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" - integrity sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA== +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== dependencies: - jsesc "~0.5.0" + jsesc "~3.0.2" repeat-string@^1.6.1: version "1.6.1" @@ -4546,7 +4839,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== -resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.3: +resolve@^1.20.0, resolve@^1.22.3: version "1.22.10" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -4573,6 +4866,22 @@ rfdc@^1.4.1: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== +router@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/router/-/router-2.2.0.tgz#019be620b711c87641167cc79b99090f00b146ef" + integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ== + dependencies: + debug "^4.4.0" + depd "^2.0.0" + is-promise "^4.0.0" + parseurl "^1.3.3" + path-to-regexp "^8.0.0" + +run-applescript@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" + integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -4580,31 +4889,63 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== -"semver@2 || 3 || 4 || 5": - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.0, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1: +semver@^7.5.0, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.1: version "7.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== +send@^1.1.0, send@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/send/-/send-1.2.0.tgz#32a7554fb777b831dfa828370f773a3808d37212" + integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw== + dependencies: + debug "^4.3.5" + encodeurl "^2.0.0" + escape-html "^1.0.3" + etag "^1.8.1" + fresh "^2.0.0" + http-errors "^2.0.0" + mime-types "^3.0.1" + ms "^2.1.3" + on-finished "^2.4.1" + range-parser "^1.2.1" + statuses "^2.0.1" + +serve-static@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.0.tgz#9c02564ee259bdd2251b82d659a2e7e1938d66f9" + integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ== + dependencies: + encodeurl "^2.0.0" + escape-html "^1.0.3" + parseurl "^1.3.3" + send "^1.2.0" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -4646,7 +4987,7 @@ side-channel-weakmap@^1.0.2: object-inspect "^1.13.3" side-channel-map "^1.0.1" -side-channel@^1.0.6: +side-channel@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== @@ -4716,32 +5057,6 @@ sparse-array@^1.3.1: resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.21" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3" - integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -4754,6 +5069,11 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +statuses@2.0.1, statuses@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + string-argv@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" @@ -4816,17 +5136,12 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== +strip-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" + integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA== dependencies: - min-indent "^1.0.0" + min-indent "^1.0.1" strip-json-comments@^3.1.1: version "3.1.1" @@ -4857,13 +5172,13 @@ symbol.inspect@1.0.1: resolved "https://registry.yarnpkg.com/symbol.inspect/-/symbol.inspect-1.0.1.tgz#e13125b8038c4996eb0dfa1567332ad4dcd0763f" integrity sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ== -synckit@^0.9.1: - version "0.9.2" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" - integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== +synckit@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.4.tgz#48972326b59723fc15b8d159803cf8302b545d59" + integrity sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ== dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" + "@pkgr/core" "^0.2.3" + tslib "^2.8.1" teslabot@^1.3.0: version "1.5.0" @@ -4879,12 +5194,12 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -tinyglobby@^0.2.12: - version "0.2.12" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5" - integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== +tinyglobby@^0.2.13: + version "0.2.13" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.13.tgz#a0e46515ce6cbcd65331537e57484af5a7b2ff7e" + integrity sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw== dependencies: - fdir "^6.4.3" + fdir "^6.4.4" picomatch "^4.0.2" tmpl@1.0.5: @@ -4899,20 +5214,25 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -ts-api-utils@^1.3.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" - integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== +ts-api-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" + integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== -ts-jest@^29.0.3: - version "29.2.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" - integrity sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA== +ts-jest@^29.3.2: + version "29.3.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.3.2.tgz#0576cdf0a507f811fe73dcd16d135ce89f8156cb" + integrity sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug== dependencies: bs-logger "^0.2.6" ejs "^3.1.10" @@ -4921,10 +5241,11 @@ ts-jest@^29.0.3: json5 "^2.2.3" lodash.memoize "^4.1.2" make-error "^1.3.6" - semver "^7.6.3" + semver "^7.7.1" + type-fest "^4.39.1" yargs-parser "^21.1.1" -ts-node@^10.9.1: +ts-node@^10.9.2: version "10.9.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== @@ -4943,7 +5264,7 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tslib@^2.5.0, tslib@^2.6.2: +tslib@^2.5.0, tslib@^2.6.2, tslib@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -4970,20 +5291,24 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== +type-fest@^4.39.1: + version "4.41.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-is@^2.0.0, type-is@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97" + integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw== + dependencies: + content-type "^1.0.5" + media-typer "^1.1.0" + mime-types "^3.0.0" -typescript@^4.9.4: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" + integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== uint8arrays@^3.0.0: version "3.1.1" @@ -4992,11 +5317,6 @@ uint8arrays@^3.0.0: dependencies: multiformats "^9.4.2" -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - undici-types@~6.21.0: version "6.21.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" @@ -5007,6 +5327,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + update-browserslist-db@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" @@ -5041,13 +5366,10 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" +vary@^1, vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== vscode-languageserver-textdocument@^1.0.12: version "1.0.12" @@ -5154,10 +5476,10 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" - integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== +yaml@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.1.tgz#44a247d1b88523855679ac7fa7cda6ed7e135cf6" + integrity sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ== yargs-parser@^20.2.2: version "20.2.9" @@ -5215,6 +5537,16 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== +zod-to-json-schema@^3.24.1: + version "3.24.5" + resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz#d1095440b147fb7c2093812a53c54df8d5df50a3" + integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g== + +zod@^3.20.6, zod@^3.23.8, zod@^3.24.2: + version "3.24.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.4.tgz#e2e2cca5faaa012d76e527d0d36622e0a90c315f" + integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg== + zod@^3.21.4, zod@^3.22.4: version "3.24.3" resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.3.tgz#1f40f750a05e477396da64438e0e1c0995dafd87" From a9916871a1d933656865093f71f51b0f825efce5 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Mon, 12 May 2025 19:59:32 +0300 Subject: [PATCH 02/27] Add files to shard/ --- package.json | 2 +- yarn.lock | 495 +++++++++++++++++++++++++-------------------------- 2 files changed, 240 insertions(+), 257 deletions(-) diff --git a/package.json b/package.json index 274c6ec..7644b90 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@tact-lang/ton-jest": "^0.0.4", "@ton/core": "^0.60.1", "@ton/crypto": "^3.3.0", - "@ton/sandbox": "0.29.0", + "@ton/sandbox": "0.30.0", "@ton/test-utils": "^0.6.0", "@ton/ton": "^15.2.1", "@tondevwallet/traces": "^0.1.6", diff --git a/yarn.lock b/yarn.lock index 1205f1d..e147474 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,121 +34,121 @@ tslib "^2.6.2" "@aws-sdk/types@^3.222.0": - version "3.714.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.714.0.tgz#de6afee1436d2d95364efa0663887f3bf0b1303a" - integrity sha512-ZjpP2gYbSFlxxaUDa1Il5AVvfggvUPbjzzB/l3q0gIE5Thd6xKW+yzEpt2mLZ5s5UaYSABZbF94g8NUOF4CVGA== + version "3.804.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.804.0.tgz#b70a734fa721450cf8a513cec0c276001a5d154f" + integrity sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg== dependencies: - "@smithy/types" "^3.7.2" + "@smithy/types" "^4.2.0" tslib "^2.6.2" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-validator-identifier" "^7.27.1" js-tokens "^4.0.0" - picocolors "^1.0.0" + picocolors "^1.1.1" -"@babel/compat-data@^7.25.9": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" - integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== +"@babel/compat-data@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9" + integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" - integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.1.tgz#89de51e86bd12246003e3524704c49541b16c3e6" + integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.0" - "@babel/generator" "^7.26.0" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.0" - "@babel/parser" "^7.26.0" - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.26.0" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.1" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helpers" "^7.27.1" + "@babel/parser" "^7.27.1" + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.26.0", "@babel/generator@^7.26.9", "@babel/generator@^7.7.2": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.9.tgz#75a9482ad3d0cc7188a537aa4910bc59db67cbca" - integrity sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg== +"@babel/generator@^7.27.1", "@babel/generator@^7.7.2": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230" + integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w== dependencies: - "@babel/parser" "^7.26.9" - "@babel/types" "^7.26.9" + "@babel/parser" "^7.27.1" + "@babel/types" "^7.27.1" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/helper-compilation-targets@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" - integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== +"@babel/helper-compilation-targets@^7.27.1": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== dependencies: - "@babel/compat-data" "^7.25.9" - "@babel/helper-validator-option" "^7.25.9" + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-module-imports@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" - integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" -"@babel/helper-module-transforms@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" - integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== +"@babel/helper-module-transforms@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f" + integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g== dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" - integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== +"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== -"@babel/helpers@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" - integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== +"@babel/helpers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4" + integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ== dependencies: - "@babel/template" "^7.25.9" - "@babel/types" "^7.26.0" + "@babel/template" "^7.27.1" + "@babel/types" "^7.27.1" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.26.0", "@babel/parser@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.9.tgz#d9e78bee6dc80f9efd8f2349dcfbbcdace280fd5" - integrity sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.27.1", "@babel/parser@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.2.tgz#577518bedb17a2ce4212afd052e01f7df0941127" + integrity sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw== dependencies: - "@babel/types" "^7.26.9" + "@babel/types" "^7.27.1" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -179,11 +179,11 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" - integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -200,11 +200,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" - integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -263,41 +263,41 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" - integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.3.3": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2" - integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.26.9" - "@babel/types" "^7.26.9" - -"@babel/traverse@^7.23.2", "@babel/traverse@^7.25.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.9.tgz#4398f2394ba66d05d988b2ad13c219a2c857461a" - integrity sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.9" - "@babel/parser" "^7.26.9" - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.9" + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/template@^7.27.1", "@babel/template@^7.3.3": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.23.2", "@babel/traverse@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291" + integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.1" + "@babel/parser" "^7.27.1" + "@babel/template" "^7.27.1" + "@babel/types" "^7.27.1" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.9", "@babel/types@^7.3.3": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.9.tgz#08b43dec79ee8e682c2ac631c010bdcac54a21ce" - integrity sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.3.3": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" + integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -726,14 +726,7 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" - integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/eslint-utils@^4.5.1", "@eslint-community/eslint-utils@^4.7.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.5.1", "@eslint-community/eslint-utils@^4.7.0": version "4.7.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== @@ -759,13 +752,6 @@ resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.2.tgz#3779f76b894de3a8ec4763b79660e6d54d5b1010" integrity sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg== -"@eslint/core@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e" - integrity sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg== - dependencies: - "@types/json-schema" "^7.0.15" - "@eslint/core@^0.13.0": version "0.13.0" resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.13.0.tgz#bf02f209846d3bf996f9e8009db62df2739b458c" @@ -798,15 +784,7 @@ resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== -"@eslint/plugin-kit@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz#9901d52c136fb8f375906a73dcc382646c3b6a27" - integrity sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g== - dependencies: - "@eslint/core" "^0.12.0" - levn "^0.4.1" - -"@eslint/plugin-kit@^0.2.8": +"@eslint/plugin-kit@^0.2.7", "@eslint/plugin-kit@^0.2.8": version "0.2.8" resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz#47488d8f8171b5d4613e833313f3ce708e3525f8" integrity sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA== @@ -838,9 +816,9 @@ integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== "@humanwhocodes/retry@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.2.tgz#1860473de7dfa1546767448f333db80cb0ff2161" - integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ== + version "0.4.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== "@ipld/dag-pb@^2.0.2": version "2.1.18" @@ -1098,9 +1076,9 @@ "@jridgewell/sourcemap-codec" "^1.4.14" "@modelcontextprotocol/sdk@^1.8.0": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz#c7f4a1432872ef10130f5d9b0072060c17a3946b" - integrity sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ== + version "1.11.2" + resolved "https://registry.yarnpkg.com/@modelcontextprotocol/sdk/-/sdk-1.11.2.tgz#d81784c140d1a9cc937f61af9f071d8b78befe30" + integrity sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ== dependencies: content-type "^1.0.5" cors "^2.8.5" @@ -1255,10 +1233,10 @@ dependencies: tslib "^2.6.2" -"@smithy/types@^3.7.2": - version "3.7.2" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.7.2.tgz#05cb14840ada6f966de1bf9a9c7dd86027343e10" - integrity sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg== +"@smithy/types@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.2.0.tgz#e7998984cc54b1acbc32e6d4cf982c712e3d26b6" + integrity sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg== dependencies: tslib "^2.6.2" @@ -1342,10 +1320,10 @@ jssha "3.2.0" tweetnacl "1.0.3" -"@ton/sandbox@0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@ton/sandbox/-/sandbox-0.29.0.tgz#af53e6d5eb066fcc7158997c15e16af93bd9d74e" - integrity sha512-Xl364A6XeH/vr2iG2MER1o0RWv2wP0kK/gbZkREPOd3bY2TRDcCwtnsFBsRfUQUi9/QHPCpNOz//guc5HhOw5g== +"@ton/sandbox@0.30.0": + version "0.30.0" + resolved "https://registry.yarnpkg.com/@ton/sandbox/-/sandbox-0.30.0.tgz#8af17d60bee83d8b9a7050516b4b3286e12e5445" + integrity sha512-fFqwZrMT0KVdWmc/GieBbV0xrs58bx+JUbcHTq/fGLP8dNAKqbnX9ddIT1jA0N8WFOIIAF9MDw0CeIc6h0C8tA== "@ton/test-utils@^0.6.0": version "0.6.0" @@ -1407,9 +1385,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + version "7.27.0" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.27.0.tgz#b5819294c51179957afaec341442f9341e4108a9" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== dependencies: "@babel/types" "^7.0.0" @@ -1422,9 +1400,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.7.tgz#968cdc2366ec3da159f61166428ee40f370e56c2" + integrity sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng== dependencies: "@babel/types" "^7.20.7" @@ -1434,9 +1412,9 @@ integrity sha512-cKio2eFB3v7qmKcvIHLUMw/dIx/8bhWPuzpzRT4unCPRTD8VdA9Zb0afxpcxOqR4PixRS7yT42FqGS8BYL8g1w== "@types/estree@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" + integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== "@types/fs-extra@^11.0.4": version "11.0.4" @@ -1507,14 +1485,7 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/node@*", "@types/node@>=13.7.0": - version "22.15.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.2.tgz#1db55aa64618ee93a58c8912f74beefe44aca905" - integrity sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A== - dependencies: - undici-types "~6.21.0" - -"@types/node@^22.15.17": +"@types/node@*", "@types/node@>=13.7.0", "@types/node@^22.15.17": version "22.15.17" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.17.tgz#355ccec95f705b664e4332bb64a7f07db30b7055" integrity sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw== @@ -1817,7 +1788,7 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -axios@^1.3.4: +axios@^1.3.4, axios@^1.6.7: version "1.9.0" resolved "https://registry.yarnpkg.com/axios/-/axios-1.9.0.tgz#25534e3b72b54540077d33046f77e3b8d7081901" integrity sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg== @@ -1826,15 +1797,6 @@ axios@^1.3.4: form-data "^4.0.0" proxy-from-env "^1.1.0" -axios@^1.6.7: - version "1.7.9" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" - integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" @@ -1922,9 +1884,9 @@ benchmark@^2.1.4: platform "^1.3.3" bignumber.js@^9.0.0: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + version "9.3.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.0.tgz#bdba7e2a4c1a2eba08290e8dcad4f36393c92acd" + integrity sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA== bl@^5.0.0: version "5.1.0" @@ -1987,14 +1949,14 @@ braces@^3.0.3: fill-range "^7.1.1" browserslist@^4.24.0, browserslist@^4.24.4: - version "4.24.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" - integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== + version "4.24.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.5.tgz#aa0f5b8560fe81fde84c6dcb38f759bafba0e11b" + integrity sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw== dependencies: - caniuse-lite "^1.0.30001688" - electron-to-chromium "^1.5.73" + caniuse-lite "^1.0.30001716" + electron-to-chromium "^1.5.149" node-releases "^2.0.19" - update-browserslist-db "^1.1.1" + update-browserslist-db "^1.1.3" bs-logger@^0.2.6: version "0.2.6" @@ -2040,21 +2002,21 @@ bytes@3.1.2, bytes@^3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind-apply-helpers@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" - integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== dependencies: es-errors "^1.3.0" function-bind "^1.1.2" call-bound@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" - integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== dependencies: - call-bind-apply-helpers "^1.0.1" - get-intrinsic "^1.2.6" + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" callsite@^1.0.0: version "1.0.0" @@ -2076,10 +2038,10 @@ camelcase@^6.2.0, camelcase@^6.3.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001688: - version "1.0.30001690" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" - integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== +caniuse-lite@^1.0.30001716: + version "1.0.30001717" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz#5d9fec5ce09796a1893013825510678928aca129" + integrity sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw== chalk-template@^1.1.0: version "1.1.0" @@ -2117,9 +2079,9 @@ ci-info@^4.2.0: integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== cjs-module-lexer@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" - integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== + version "1.4.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" + integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== clean-regexp@^1.0.0: version "1.0.0" @@ -2462,9 +2424,9 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3 ms "^2.1.3" dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== + version "1.6.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2" + integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== deep-is@^0.1.3: version "0.1.4" @@ -2563,7 +2525,7 @@ dotenv@^16.5.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692" integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== -dunder-proto@^1.0.0: +dunder-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== @@ -2584,10 +2546,10 @@ ejs@^3.1.10: dependencies: jake "^10.8.5" -electron-to-chromium@^1.5.73: - version "1.5.76" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz#db20295c5061b68f07c8ea4dfcbd701485d94a3d" - integrity sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ== +electron-to-chromium@^1.5.149: + version "1.5.151" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.151.tgz#5edd6c17e1b2f14b4662c41b9379f96cc8c2bb7c" + integrity sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA== emittery@^0.13.1: version "0.13.1" @@ -2654,13 +2616,23 @@ es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== dependencies: es-errors "^1.3.0" +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" @@ -3082,12 +3054,13 @@ follow-redirects@^1.15.6: integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== form-data@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" - integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + version "4.0.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" + integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" mime-types "^2.1.12" forwarded@0.2.0: @@ -3101,9 +3074,9 @@ fresh@^2.0.0: integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== fs-extra@^11.2.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + version "11.3.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" + integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -3144,27 +3117,35 @@ get-east-asian-width@^1.0.0: resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389" integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== -get-intrinsic@^1.2.5, get-intrinsic@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz#43dd3dd0e7b49b82b2dfcad10dc824bf7fc265d5" - integrity sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA== +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== dependencies: - call-bind-apply-helpers "^1.0.1" - dunder-proto "^1.0.0" + call-bind-apply-helpers "^1.0.2" es-define-property "^1.0.1" es-errors "^1.3.0" - es-object-atoms "^1.0.0" + es-object-atoms "^1.1.1" function-bind "^1.1.2" + get-proto "^1.0.1" gopd "^1.2.0" has-symbols "^1.1.0" hasown "^2.0.2" - math-intrinsics "^1.0.0" + math-intrinsics "^1.1.0" get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -3271,11 +3252,18 @@ has-own-prop@^2.0.0: resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== -has-symbols@^1.1.0: +has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -4224,7 +4212,7 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -math-intrinsics@^1.0.0: +math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== @@ -4368,9 +4356,9 @@ nano-spawn@^1.0.0: integrity sha512-BfcvzBlUTxSDWfT+oH7vd6CbUV+rThLLHCIym/QO6GGLBsyVXleZs00fto2i2jzC/wPiBYk5jyOmpXWg4YopiA== nanoid@^3.3.8: - version "3.3.9" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.9.tgz#e0097d8e026b3343ff053e9ccd407360a03f503a" - integrity sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg== + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== natural-compare@^1.4.0: version "1.4.0" @@ -4422,9 +4410,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.13.3: - version "1.13.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" - integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== on-finished@^2.4.1: version "2.4.1" @@ -4578,7 +4566,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: +picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -4599,9 +4587,9 @@ pidtree@^0.6.0: integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + version "4.0.7" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== pkce-challenge@^5.0.0: version "5.0.0" @@ -5332,13 +5320,13 @@ unpipe@1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" - integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== dependencies: escalade "^3.2.0" - picocolors "^1.1.0" + picocolors "^1.1.1" uri-js@^4.2.2: version "4.4.1" @@ -5542,12 +5530,7 @@ zod-to-json-schema@^3.24.1: resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz#d1095440b147fb7c2093812a53c54df8d5df50a3" integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g== -zod@^3.20.6, zod@^3.23.8, zod@^3.24.2: +zod@^3.20.6, zod@^3.21.4, zod@^3.22.4, zod@^3.23.8, zod@^3.24.2: version "3.24.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.4.tgz#e2e2cca5faaa012d76e527d0d36622e0a90c315f" integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg== - -zod@^3.21.4, zod@^3.22.4: - version "3.24.3" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.3.tgz#1f40f750a05e477396da64438e0e1c0995dafd87" - integrity sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg== From 155573f1d7d239aa05d92c3fa5bb90ec508d2fa4 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Mon, 12 May 2025 19:59:51 +0300 Subject: [PATCH 03/27] Revert changes in base/ --- .husky/pre-push | 12 ++-- package.json | 2 +- src/contracts/base/jetton-minter.tact | 25 ++++++-- src/contracts/base/jetton-wallet.tact | 90 ++------------------------- tact.config.json | 18 ++++++ yarn.lock | 12 ++-- 6 files changed, 58 insertions(+), 101 deletions(-) diff --git a/.husky/pre-push b/.husky/pre-push index dcd572b..6e6bb9e 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,7 +1,7 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" +# #!/usr/bin/env sh +# . "$(dirname -- "$0")/_/husky.sh" -yarn lint:es -yarn spell -yarn fmt:check -yarn tact-fmt --check ./src +# yarn lint:es +# yarn spell +# yarn fmt:check +# yarn tact-fmt --check ./src diff --git a/package.json b/package.json index 7644b90..2295b25 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@aws-crypto/sha256-js": "^5.2.0", "@nowarp/misti": "^0.8.3", "@orbs-network/ton-access": "^2.3.3", - "chalk": "5.4.1", + "chalk": "4.1.2", "cli-table3": "^0.6.5", "cross-env": "^7.0.3", "dotenv": "^16.5.0", diff --git a/src/contracts/base/jetton-minter.tact b/src/contracts/base/jetton-minter.tact index 5f789bf..e51bfa6 100644 --- a/src/contracts/base/jetton-minter.tact +++ b/src/contracts/base/jetton-minter.tact @@ -3,6 +3,7 @@ import "./messages"; import "./constants"; import "../utils.tact"; import "../utils"; +import "../shard-utils"; struct JettonMinterState { totalSupply: Int as coins; @@ -41,6 +42,10 @@ contract JettonMinter( self.totalSupply += msg.mintMessage.amount; + let receiverSlice = msg.receiver.asSlice(); + let _ = receiverSlice.loadUint(11); // skip workchain + let receiverPrefix = receiverSlice.loadUint(prefix_length); + // basechain destination is calculated inside deploy function shardDeploy(ShardDeployParameters{ value: 0, // ignore msg.tonAmount and use SendMode 64 instead @@ -48,16 +53,20 @@ contract JettonMinter( mode: SendRemainingValue | SendBounceIfActionFail, body: msg.mintMessage.toCell(), init: initOf JettonWallet(msg.receiver, myAddress(), 0), - shard: msg.receiver.asSlice().loadUint(prefix_length), + shard: receiverPrefix, }); } receive(msg: ProvideWalletAddress) { let ownerWorkchain: Int = parseStdAddress(msg.ownerAddress.asSlice()).workchain; + let ownerSlice = msg.ownerAddress.asSlice(); + let _ = ownerSlice.loadUint(11); // skip workchain + let ownerPrefix = ownerSlice.loadUint(prefix_length); + // If owner is basechain address, we can calculate jettonWallet let targetJettonWallet: BasechainAddress = (ownerWorkchain == Basechain) - ? BasechainAddress { hash: getJettonWalletInit(msg.ownerAddress).hash(), } + ? BasechainAddress { hash: changeAddressHashPrefix(getJettonWalletInit(msg.ownerAddress).hash(), ownerPrefix) } : emptyBasechainAddress(); message(MessageParameters { @@ -152,10 +161,14 @@ inline fun getJettonWalletInit(address: Address): Cell { inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { let init = getJettonWalletInit(jettonWalletOwner); + let ownerSlice = jettonWalletOwner.asSlice(); + let _ = ownerSlice.loadUint(11); // skip workchain + let ownerPrefix = ownerSlice.loadUint(prefix_length); + let expectedAddr = beginCell() .storeUint(4, 3) .storeUint(0, 8) - .storeUint((init.hash() & ((1 << (256 - prefix_length)) - 1)) | (jettonWalletOwner.asSlice().loadUint(prefix_length) << (256 - prefix_length)), 256) + .storeUint(changeAddressHashPrefix(init.hash(), ownerPrefix), 256) .asSlice(); return expectedAddr.loadAddress(); @@ -163,6 +176,10 @@ inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress { let init = getJettonWalletInit(jettonWalletOwner); + + let ownerSlice = jettonWalletOwner.asSlice(); + let _ = ownerSlice.loadUint(11); // skip workchain + let ownerPrefix = ownerSlice.loadUint(prefix_length); - return BasechainAddress{ hash: ((init.hash() & ((1 << (256 - prefix_length)) - 1)) | (jettonWalletOwner.asSlice().loadUint(prefix_length) << (256 - prefix_length))) }; + return BasechainAddress{ hash: changeAddressHashPrefix(init.hash(), ownerPrefix) }; } diff --git a/src/contracts/base/jetton-wallet.tact b/src/contracts/base/jetton-wallet.tact index e048844..ad25838 100644 --- a/src/contracts/base/jetton-wallet.tact +++ b/src/contracts/base/jetton-wallet.tact @@ -1,89 +1,7 @@ import "./messages"; import "./constants"; +import "../shard-utils"; -struct ShardDeployParameters { - /// An 8-bit value that configures how to send a message, defaults to 0. - /// See: https://docs.tact-lang.org/book/message-mode - mode: Int = SendDefaultMode; - - /// Optional message body as a `Cell`. - body: Cell; - - /// The amount of nanoToncoins you want to send with - /// the message. This value is used to cover forward fees, - /// unless the optional flag `SendPayGasSeparately` is used. - value: Int; - - /// When set to `true` (default) message bounces back to the sender if - /// the recipient contract doesn't exist or wasn't able to process the message. - bounce: Bool = true; - - /// Initial package of the contract (initial code and initial data). - /// See: https://docs.tact-lang.org/book/expressions#initof - init: StateInit; - - shard: Int as uint30; -} - -fun shardDeploy(params: ShardDeployParameters) { - let newStateInit = beginCell() - .storeUint(1, 1) - .storeUint(prefix_length, 5) - .storeUint(0, 1) - .storeMaybeRef(params.init.code) - .storeMaybeRef(params.init.data) - .storeUint(0, 1) - .endCell(); - - let expectedAddr = beginCell() - .storeUint(4, 3) - .storeUint(0, 8) - .storeUint((newStateInit.hash() & ((1 << (256 - prefix_length)) - 1)) | (params.shard << (256 - prefix_length)), 256) // - .asSlice(); - - let parsedAddr = parseStdAddress(expectedAddr); - let realAddr = beginCell() - .storeUint(4, 3) - .storeUint(0, 8) - .storeUint(parsedAddr.address, 256) // First 32 bits of address will be 0 - .asSlice(); - - let msg = beginCell() - .storeUint(0x18, 6) - .storeSlice(realAddr) - .storeCoins(0) - .storeUint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) - .storeRef(newStateInit) - .storeRef(params.body) - .endCell(); - - sendRawMessage(msg, params.mode); -} - - -fun initToPrefixInit(init: StateInit): Cell { - let newStateInit = beginCell() - .storeUint(1, 1) - .storeUint(prefix_length, 5) - .storeUint(0, 1) - .storeMaybeRef(init.code) - .storeMaybeRef(init.data) - .storeUint(0, 1) - .endCell(); - return newStateInit; -} - -inline fun contractBasechainAddressPrefix(s: StateInit): BasechainAddress { - let hash = initToPrefixInit(s).hash(); - return newBasechainAddress(hash); -} - - -inline extends fun hasSameBasechainAddressPrefix(self: StateInit, sender: Address): Bool { - let senderAddress = parseStdAddress(sender.asSlice()).address; - let baseAddress = contractBasechainAddressPrefix(self); - return (baseAddress.hash!! & ((1 << (256 - prefix_length)) - 1)) == (senderAddress & ((1 << (256 - prefix_length)) - 1)); -} contract JettonWallet( owner: Address, @@ -108,6 +26,10 @@ contract JettonWallet( "Insufficient amount of TON attached", ); + let destinationSlice = msg.destination.asSlice(); + let _ = destinationSlice.loadUint(11); // skip workchain + let destinationPrefix = destinationSlice.loadUint(prefix_length); + shardDeploy(ShardDeployParameters{ value: 0, mode: SendRemainingValue, @@ -121,7 +43,7 @@ contract JettonWallet( forwardPayload: msg.forwardPayload, }.toCell(), init: initOf JettonWallet(msg.destination, self.minter, 0), - shard: sender().asSlice().loadUint(prefix_length), + shard: destinationPrefix, }); } diff --git a/tact.config.json b/tact.config.json index d7b2ba1..48988cf 100644 --- a/tact.config.json +++ b/tact.config.json @@ -50,6 +50,24 @@ "alwaysSaveContractData": false } } + }, + { + "name": "Shard", + "path": "./src/contracts/shard/jetton-minter.tact", + "output": "./src/output", + "mode": "full", + "options": { + "external": false, + "debug": false, + "ipfsAbiGetter": false, + "interfacesGetter": false, + "experimental": { + "inline": true + }, + "optimizations": { + "alwaysSaveContractData": false + } + } } ] } diff --git a/yarn.lock b/yarn.lock index e147474..edcf1de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2050,12 +2050,7 @@ chalk-template@^1.1.0: dependencies: chalk "^5.2.0" -chalk@5.4.1, chalk@^5.2.0, chalk@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" - integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== - -chalk@^4.0.0, chalk@^4.0.2: +chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2063,6 +2058,11 @@ chalk@^4.0.0, chalk@^4.0.2: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.2.0, chalk@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" From a95a28cd6776191d70b48197f831180938632460 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Mon, 12 May 2025 20:02:00 +0300 Subject: [PATCH 04/27] Revert "first version" --- package.json | 39 +- src/contracts/base/constants.tact | 1 - src/contracts/base/jetton-minter.tact | 42 +- src/contracts/base/jetton-wallet.tact | 14 +- src/contracts/shard-utils.tact | 88 ++ src/contracts/shard/constants.tact | 5 + src/contracts/shard/jetton-minter.tact | 185 +++ src/contracts/shard/jetton-wallet.tact | 166 +++ src/contracts/shard/messages.tact | 117 ++ yarn.lock | 1486 ++++++++++-------------- 10 files changed, 1215 insertions(+), 928 deletions(-) create mode 100644 src/contracts/shard-utils.tact create mode 100644 src/contracts/shard/constants.tact create mode 100644 src/contracts/shard/jetton-minter.tact create mode 100644 src/contracts/shard/jetton-wallet.tact create mode 100644 src/contracts/shard/messages.tact diff --git a/package.json b/package.json index 2295b25..11d4450 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ }, "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", - "@nowarp/misti": "^0.8.3", + "@nowarp/misti": "^0.8.1", "@orbs-network/ton-access": "^2.3.3", "chalk": "4.1.2", "cli-table3": "^0.6.5", @@ -51,30 +51,31 @@ "@types/node": "^22.15.17", "@types/qs": "^6.9.18", "base64url": "^3.0.1", - "enquirer": "^2.4.1", - "jest": "^29.7.0", - "open": "^10.1.2", - "prando": "^6.0.1", - "prettier": "^3.5.3", - "qs": "^6.14.0", - "ts-jest": "^29.3.2", - "ts-node": "^10.9.2", - "typescript": "^5.8.3" + "chalk": "4.1.2", + "cli-table3": "^0.6.5", + "cross-env": "^7.0.3", + "dotenv": "^16.4.5", + "jest": "^29.3.1", + "qs": "^6.11.0", + "ts-jest": "^29.0.3", + "ts-node": "^10.9.1", + "typescript": "^4.9.4", + "yarn-deduplicate": "^6.0.2" }, "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e", "devDependencies": { - "@typescript-eslint/eslint-plugin": "^8.32.0", - "@typescript-eslint/parser": "^8.32.0", - "cspell": "^9.0.1", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "cspell": "^8.3.2", "depcheck": "^1.4.7", - "eslint": "^9.26.0", - "eslint-config-prettier": "^10.1.5", - "eslint-plugin-prettier": "^5.4.0", - "eslint-plugin-unicorn": "^59.0.1", + "eslint": "^9.19.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-unicorn": "^56.0.1", "eslint-plugin-unused-imports": "^4.1.4", "husky": "^9.1.7", - "lint-staged": "^16.0.0", - "prettier": "^3.5.3" + "lint-staged": "^15.4.3", + "prettier": "^3.4.2" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ diff --git a/src/contracts/base/constants.tact b/src/contracts/base/constants.tact index a7da380..57d5a40 100644 --- a/src/contracts/base/constants.tact +++ b/src/contracts/base/constants.tact @@ -2,4 +2,3 @@ const gasForBurn: Int = 6700; const gasForTransfer: Int = 10500; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future const Basechain: Int = 0; -const prefix_length: Int = 8; \ No newline at end of file diff --git a/src/contracts/base/jetton-minter.tact b/src/contracts/base/jetton-minter.tact index e51bfa6..b4d2604 100644 --- a/src/contracts/base/jetton-minter.tact +++ b/src/contracts/base/jetton-minter.tact @@ -47,13 +47,12 @@ contract JettonMinter( let receiverPrefix = receiverSlice.loadUint(prefix_length); // basechain destination is calculated inside deploy function - shardDeploy(ShardDeployParameters{ + deploy(DeployParameters { value: 0, // ignore msg.tonAmount and use SendMode 64 instead bounce: true, mode: SendRemainingValue | SendBounceIfActionFail, body: msg.mintMessage.toCell(), - init: initOf JettonWallet(msg.receiver, myAddress(), 0), - shard: receiverPrefix, + init: getJettonWalletInit(msg.receiver), }); } @@ -66,7 +65,7 @@ contract JettonMinter( // If owner is basechain address, we can calculate jettonWallet let targetJettonWallet: BasechainAddress = (ownerWorkchain == Basechain) - ? BasechainAddress { hash: changeAddressHashPrefix(getJettonWalletInit(msg.ownerAddress).hash(), ownerPrefix) } + ? contractBasechainAddress(getJettonWalletInit(msg.ownerAddress)) : emptyBasechainAddress(); message(MessageParameters { @@ -145,41 +144,14 @@ contract JettonMinter( } } -inline fun getJettonWalletInit(address: Address): Cell { - let init = initOf JettonWallet(address, myAddress(), 0); - - return beginCell() - .storeUint(1, 1) - .storeUint(prefix_length, 5) - .storeUint(0, 1) - .storeMaybeRef(init.code) - .storeMaybeRef(init.data) - .storeUint(0, 1) - .endCell(); +inline fun getJettonWalletInit(address: Address): StateInit { + return initOf JettonWallet(address, myAddress(), 0); } inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { - let init = getJettonWalletInit(jettonWalletOwner); - - let ownerSlice = jettonWalletOwner.asSlice(); - let _ = ownerSlice.loadUint(11); // skip workchain - let ownerPrefix = ownerSlice.loadUint(prefix_length); - - let expectedAddr = beginCell() - .storeUint(4, 3) - .storeUint(0, 8) - .storeUint(changeAddressHashPrefix(init.hash(), ownerPrefix), 256) - .asSlice(); - - return expectedAddr.loadAddress(); + return contractAddress(getJettonWalletInit(jettonWalletOwner)); } inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress { - let init = getJettonWalletInit(jettonWalletOwner); - - let ownerSlice = jettonWalletOwner.asSlice(); - let _ = ownerSlice.loadUint(11); // skip workchain - let ownerPrefix = ownerSlice.loadUint(prefix_length); - - return BasechainAddress{ hash: changeAddressHashPrefix(init.hash(), ownerPrefix) }; + return contractBasechainAddress(getJettonWalletInit(jettonWalletOwner)); } diff --git a/src/contracts/base/jetton-wallet.tact b/src/contracts/base/jetton-wallet.tact index ad25838..980bf09 100644 --- a/src/contracts/base/jetton-wallet.tact +++ b/src/contracts/base/jetton-wallet.tact @@ -1,7 +1,5 @@ import "./messages"; import "./constants"; -import "../shard-utils"; - contract JettonWallet( owner: Address, @@ -26,11 +24,7 @@ contract JettonWallet( "Insufficient amount of TON attached", ); - let destinationSlice = msg.destination.asSlice(); - let _ = destinationSlice.loadUint(11); // skip workchain - let destinationPrefix = destinationSlice.loadUint(prefix_length); - - shardDeploy(ShardDeployParameters{ + deploy(DeployParameters { value: 0, mode: SendRemainingValue, bounce: true, @@ -43,7 +37,6 @@ contract JettonWallet( forwardPayload: msg.forwardPayload, }.toCell(), init: initOf JettonWallet(msg.destination, self.minter, 0), - shard: destinationPrefix, }); } @@ -52,9 +45,10 @@ contract JettonWallet( // This message should come only from master, or from other JettonWallet let wallet: StateInit = initOf JettonWallet(msg.sender, self.minter, 0); - if (!wallet.hasSameBasechainAddressPrefix(sender())) { + if (!wallet.hasSameBasechainAddress(sender())) { require(self.minter == sender(), "Incorrect sender"); } + let ctx: Context = context(); let msgValue: Int = ctx.value; let tonBalanceBeforeMsg = myBalance() - msgValue; @@ -77,7 +71,7 @@ contract JettonWallet( } nativeReserve(max(tonBalanceBeforeMsg, minTonsForStorage), ReserveAtMost); // 0xd53276db -- Cashback to the original Sender - if (msg.responseDestination != null && msgValue > 0){ + if (msg.responseDestination != null && msgValue > 0) { message(MessageParameters { to: msg.responseDestination!!, value: msgValue, diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact new file mode 100644 index 0000000..154a752 --- /dev/null +++ b/src/contracts/shard-utils.tact @@ -0,0 +1,88 @@ +struct ShardDeployParameters { + /// An 8-bit value that configures how to send a message, defaults to 0. + /// See: https://docs.tact-lang.org/book/message-mode + mode: Int = SendDefaultMode; + + /// Optional message body as a `Cell`. + body: Cell; + + /// The amount of nanoToncoins you want to send with + /// the message. This value is used to cover forward fees, + /// unless the optional flag `SendPayGasSeparately` is used. + value: Int; + + /// When set to `true` (default) message bounces back to the sender if + /// the recipient contract doesn't exist or wasn't able to process the message. + bounce: Bool = true; + + /// Initial package of the contract (initial code and initial data). + /// See: https://docs.tact-lang.org/book/expressions#initof + init: StateInit; + + shard: Int as uint30; +} + +fun changeAddressHashPrefix(addr_hash: Int, prefix: Int): Int { + return (addr_hash & ((1 << (256 - prefix_length)) - 1)) | (prefix << (256 - prefix_length)); +} + +fun shardDeploy(params: ShardDeployParameters) { + let newStateInit = beginCell() + .storeUint(1, 1) + .storeUint(prefix_length, 5) + .storeUint(0, 1) + .storeMaybeRef(params.init.code) + .storeMaybeRef(params.init.data) + .storeUint(0, 1) + .endCell(); + + let expectedAddr = beginCell() + .storeUint(4, 3) + .storeUint(0, 8) + .storeUint(changeAddressHashPrefix(newStateInit.hash(), params.shard), 256) // + .asSlice(); + + let parsedAddr = parseStdAddress(expectedAddr); + let realAddr = beginCell() + .storeUint(4, 3) + .storeUint(0, 8) + .storeUint(parsedAddr.address, 256) // First 32 bits of address will be 0 + .asSlice(); + + let msg = beginCell() + .storeUint(0x18, 6) + .storeSlice(realAddr) + .storeCoins(0) + .storeUint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) + .storeRef(newStateInit) + .storeRef(params.body) + .endCell(); + + sendRawMessage(msg, params.mode); +} + + + +fun initToPrefixInit(init: StateInit): Cell { + let newStateInit = beginCell() + .storeUint(1, 1) + .storeUint(prefix_length, 5) + .storeUint(0, 1) + .storeMaybeRef(init.code) + .storeMaybeRef(init.data) + .storeUint(0, 1) + .endCell(); + return newStateInit; +} + +inline fun contractBasechainAddressPrefix(s: StateInit): BasechainAddress { + let hash = initToPrefixInit(s).hash(); + return newBasechainAddress(hash); +} + + +inline extends fun hasSameBasechainAddressPrefix(self: StateInit, sender: Address): Bool { + let senderAddress = parseStdAddress(sender.asSlice()).address; + let baseAddress = contractBasechainAddressPrefix(self); + return (baseAddress.hash!! & ((1 << (256 - prefix_length)) - 1)) == (senderAddress & ((1 << (256 - prefix_length)) - 1)); +} \ No newline at end of file diff --git a/src/contracts/shard/constants.tact b/src/contracts/shard/constants.tact new file mode 100644 index 0000000..a7da380 --- /dev/null +++ b/src/contracts/shard/constants.tact @@ -0,0 +1,5 @@ +const gasForBurn: Int = 6700; +const gasForTransfer: Int = 10500; +const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future +const Basechain: Int = 0; +const prefix_length: Int = 8; \ No newline at end of file diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact new file mode 100644 index 0000000..e51bfa6 --- /dev/null +++ b/src/contracts/shard/jetton-minter.tact @@ -0,0 +1,185 @@ +import "./jetton-wallet"; +import "./messages"; +import "./constants"; +import "../utils.tact"; +import "../utils"; +import "../shard-utils"; + +struct JettonMinterState { + totalSupply: Int as coins; + mintable: Bool; + adminAddress: Address; + jettonContent: Cell; + jettonWalletCode: Cell; +} + +contract JettonMinter( + totalSupply: Int as coins, + owner: Address, + jettonContent: Cell, + mintable: Bool, // Should be deployed with this flag set to true +) { + // Owner of this contract may be masterchain address, + // however minting is possible only to basechain addresses + // it is asserted inside the deploy function + receive(msg: Mint) { + require(sender() == self.owner, "Incorrect sender"); + require(self.mintable, "Mint is closed"); + + checkEitherForwardPayload(msg.mintMessage.forwardPayload); + + let ctx = context(); + // we don't add compute fees for mint itself and reserve here + // it's okay since it’s sent only by the admin and excesses will return back + require( + ctx.value > + minTonsForStorage + + msg.mintMessage.forwardTonAmount + + ctx.readForwardFee() + + 2 * getComputeFee(gasForTransfer, false), + "Insufficient gas for mint", + ); + + self.totalSupply += msg.mintMessage.amount; + + let receiverSlice = msg.receiver.asSlice(); + let _ = receiverSlice.loadUint(11); // skip workchain + let receiverPrefix = receiverSlice.loadUint(prefix_length); + + // basechain destination is calculated inside deploy function + shardDeploy(ShardDeployParameters{ + value: 0, // ignore msg.tonAmount and use SendMode 64 instead + bounce: true, + mode: SendRemainingValue | SendBounceIfActionFail, + body: msg.mintMessage.toCell(), + init: initOf JettonWallet(msg.receiver, myAddress(), 0), + shard: receiverPrefix, + }); + } + + receive(msg: ProvideWalletAddress) { + let ownerWorkchain: Int = parseStdAddress(msg.ownerAddress.asSlice()).workchain; + + let ownerSlice = msg.ownerAddress.asSlice(); + let _ = ownerSlice.loadUint(11); // skip workchain + let ownerPrefix = ownerSlice.loadUint(prefix_length); + + // If owner is basechain address, we can calculate jettonWallet + let targetJettonWallet: BasechainAddress = (ownerWorkchain == Basechain) + ? BasechainAddress { hash: changeAddressHashPrefix(getJettonWalletInit(msg.ownerAddress).hash(), ownerPrefix) } + : emptyBasechainAddress(); + + message(MessageParameters { + body: makeTakeWalletAddressMsg(targetJettonWallet, msg), + to: sender(), + value: 0, + mode: SendRemainingValue, + }); + } + + receive(msg: JettonBurnNotification) { + let sender = parseStdAddress(sender().asSlice()); + let wallet = getJettonBasechainWalletByOwner(msg.sender); + + // Workchain 0 is basechain + require(sender.workchain == Basechain && sender.address == wallet.hash!!, "Unauthorized burn"); + + self.totalSupply -= msg.amount; + + if (msg.responseDestination != null) { + message(MessageParameters { + to: msg.responseDestination!!, + body: JettonExcesses { queryId: msg.queryId }.toCell(), + value: 0, + bounce: false, + mode: SendRemainingValue | SendIgnoreErrors, // ignore errors, because supply has already been updated + }); + } + } + + receive(msg: JettonUpdateContent) { + require(sender() == self.owner, "Incorrect sender"); + self.jettonContent = msg.content; + } + + receive(msg: ChangeOwner) { + require(sender() == self.owner, "Incorrect sender"); + self.owner = msg.newOwner; + } + + receive(msg: CloseMinting) { + require(sender() == self.owner, "Incorrect sender"); + self.mintable = false; + cashback(sender()); + } + + receive(msg: ClaimTON) { + require(sender() == self.owner, "Incorrect sender"); + nativeReserve(minTonsForStorage, ReserveExact | ReserveBounceIfActionFail); + + // we allow bounce here and don't handle it, if claim fails we just accept the TONs back + message(MessageParameters { + bounce: true, + to: msg.receiver, + value: 0, + mode: SendRemainingBalance, + }); + } + + bounced(msg: bounced) { + self.totalSupply -= msg.amount; + } + + get fun get_jetton_data(): JettonMinterState { + return JettonMinterState { + totalSupply: self.totalSupply, + mintable: self.mintable, + adminAddress: self.owner, + jettonContent: self.jettonContent, + jettonWalletCode: codeOf JettonWallet, + }; + } + + get fun get_wallet_address(ownerAddress: Address): Address { + return getJettonWalletByOwner(ownerAddress); + } +} + +inline fun getJettonWalletInit(address: Address): Cell { + let init = initOf JettonWallet(address, myAddress(), 0); + + return beginCell() + .storeUint(1, 1) + .storeUint(prefix_length, 5) + .storeUint(0, 1) + .storeMaybeRef(init.code) + .storeMaybeRef(init.data) + .storeUint(0, 1) + .endCell(); +} + +inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { + let init = getJettonWalletInit(jettonWalletOwner); + + let ownerSlice = jettonWalletOwner.asSlice(); + let _ = ownerSlice.loadUint(11); // skip workchain + let ownerPrefix = ownerSlice.loadUint(prefix_length); + + let expectedAddr = beginCell() + .storeUint(4, 3) + .storeUint(0, 8) + .storeUint(changeAddressHashPrefix(init.hash(), ownerPrefix), 256) + .asSlice(); + + return expectedAddr.loadAddress(); +} + +inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress { + let init = getJettonWalletInit(jettonWalletOwner); + + let ownerSlice = jettonWalletOwner.asSlice(); + let _ = ownerSlice.loadUint(11); // skip workchain + let ownerPrefix = ownerSlice.loadUint(prefix_length); + + return BasechainAddress{ hash: changeAddressHashPrefix(init.hash(), ownerPrefix) }; +} diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact new file mode 100644 index 0000000..ad25838 --- /dev/null +++ b/src/contracts/shard/jetton-wallet.tact @@ -0,0 +1,166 @@ +import "./messages"; +import "./constants"; +import "../shard-utils"; + + +contract JettonWallet( + owner: Address, + minter: Address, + balance: Int as coins, +) { + receive(msg: JettonTransfer) { + forceBasechain(msg.destination); + require(sender() == self.owner, "Incorrect sender"); + + self.balance -= msg.amount; + require(self.balance >= 0, "Incorrect balance after send"); + checkEitherForwardPayload(msg.forwardPayload); + + let ctx = context(); + let fwdCount = 1 + sign(msg.forwardTonAmount); // msg.forwardTonAmount is coins, so it's positive + require( + ctx.value > + msg.forwardTonAmount + + fwdCount * ctx.readForwardFee() + + (2 * getComputeFee(gasForTransfer, false) + minTonsForStorage), + "Insufficient amount of TON attached", + ); + + let destinationSlice = msg.destination.asSlice(); + let _ = destinationSlice.loadUint(11); // skip workchain + let destinationPrefix = destinationSlice.loadUint(prefix_length); + + shardDeploy(ShardDeployParameters{ + value: 0, + mode: SendRemainingValue, + bounce: true, + body: JettonTransferInternal { + queryId: msg.queryId, + amount: msg.amount, + sender: self.owner, + responseDestination: msg.responseDestination, + forwardTonAmount: msg.forwardTonAmount, + forwardPayload: msg.forwardPayload, + }.toCell(), + init: initOf JettonWallet(msg.destination, self.minter, 0), + shard: destinationPrefix, + }); + } + + receive(msg: JettonTransferInternal) { + self.balance += msg.amount; + + // This message should come only from master, or from other JettonWallet + let wallet: StateInit = initOf JettonWallet(msg.sender, self.minter, 0); + if (!wallet.hasSameBasechainAddressPrefix(sender())) { + require(self.minter == sender(), "Incorrect sender"); + } + let ctx: Context = context(); + let msgValue: Int = ctx.value; + let tonBalanceBeforeMsg = myBalance() - msgValue; + + if (msg.forwardTonAmount > 0) { + let fwdFee: Int = ctx.readForwardFee(); + msgValue -= msg.forwardTonAmount + fwdFee; + message(MessageParameters { + to: self.owner, + value: msg.forwardTonAmount, + mode: SendPayGasSeparately, + bounce: false, + body: JettonNotification { // 0x7362d09c -- Remind the new Owner + queryId: msg.queryId, + amount: msg.amount, + sender: msg.sender, + forwardPayload: msg.forwardPayload, + }.toCell(), + }); + } + nativeReserve(max(tonBalanceBeforeMsg, minTonsForStorage), ReserveAtMost); + // 0xd53276db -- Cashback to the original Sender + if (msg.responseDestination != null && msgValue > 0){ + message(MessageParameters { + to: msg.responseDestination!!, + value: msgValue, + mode: SendRemainingBalance + SendIgnoreErrors, + bounce: false, + body: JettonExcesses { queryId: msg.queryId }.toCell(), + }); + } + } + + receive(msg: ProvideWalletBalance) { + let info: VerifyInfo? = null; + if (msg.includeVerifyInfo) { + info = VerifyInfo { + minter: self.minter, + owner: self.owner, + code: myCode(), + }; + } + + message(MessageParameters { + body: TakeWalletBalance { + balance: self.balance, + verifyInfo: info, + }.toCell(), + to: msg.receiver, + value: 0, + mode: SendRemainingValue, + }); + } + + receive(msg: JettonBurn) { + // we can skip forceBasechain here because with other checks in place it's not possible + // to acquire jettons outside of basechain, so amount check is enough + require(sender() == self.owner, "Incorrect sender"); + + self.balance -= msg.amount; + require(self.balance >= 0, "Incorrect balance after send"); + + let ctx = context(); + let fwdFee: Int = ctx.readForwardFee(); + require(ctx.value > (fwdFee + 2 * getComputeFee(gasForBurn, false)), "Insufficient amount of TON attached"); + + message(MessageParameters { + to: self.minter, + value: 0, + mode: SendRemainingValue, + bounce: true, + body: JettonBurnNotification { + queryId: msg.queryId, + amount: msg.amount, + sender: self.owner, + responseDestination: msg.responseDestination, + }.toCell(), + }); + } + + receive(msg: ClaimTON) { + require(sender() == self.owner, "Incorrect sender"); + nativeReserve(minTonsForStorage, ReserveExact | ReserveBounceIfActionFail); + + // we allow bounce here and don't handle it, if claim fails we just accept the TONs back + message(MessageParameters { + to: msg.receiver, + value: 0, + mode: SendRemainingBalance, + }); + } + + bounced(msg: bounced) { + self.balance += msg.amount; + } + + bounced(msg: bounced) { + self.balance += msg.amount; + } + + get fun get_wallet_data(): JettonWalletData { + return JettonWalletData { + balance: self.balance, + owner: self.owner, + minter: self.minter, + code: myCode(), + }; + } +} diff --git a/src/contracts/shard/messages.tact b/src/contracts/shard/messages.tact new file mode 100644 index 0000000..c4b90c6 --- /dev/null +++ b/src/contracts/shard/messages.tact @@ -0,0 +1,117 @@ +struct JettonData { + totalSupply: Int; + mintable: Bool; + owner: Address; + content: Cell; + jettonWalletCode: Cell; +} + +struct JettonWalletData { + balance: Int; + owner: Address; + minter: Address; + code: Cell; +} + +struct MaybeAddress { + address: Address?; +} + +message(4) JettonUpdateContent { + queryId: Int as uint64; + content: Cell; +} + +message(0xf8a7ea5) JettonTransfer { + queryId: Int as uint64; + amount: Int as coins; + destination: Address; + responseDestination: Address?; + customPayload: Cell?; + forwardTonAmount: Int as coins; + forwardPayload: Slice as remaining; +} + +message(0x178d4519) JettonTransferInternal { + queryId: Int as uint64; + amount: Int as coins; + sender: Address; + responseDestination: Address?; + forwardTonAmount: Int as coins; + forwardPayload: Slice as remaining; +} + +message(0x7362d09c) JettonNotification { + queryId: Int as uint64; + amount: Int as coins; + sender: Address; + forwardPayload: Slice as remaining; +} + +message(0x595f07bc) JettonBurn { + queryId: Int as uint64; + amount: Int as coins; + responseDestination: Address?; + customPayload: Cell?; +} + +message(0x7bdd97de) JettonBurnNotification { + queryId: Int as uint64; + amount: Int as coins; + sender: Address; + responseDestination: Address?; +} + +message(0xd53276db) JettonExcesses { + queryId: Int as uint64; +} + +message(0x2c76b973) ProvideWalletAddress { + queryId: Int as uint64; + ownerAddress: Address; + includeAddress: Bool; +} + +message(0xd1735400) TakeWalletAddress { + queryId: Int as uint64; + walletAddress: Address; + ownerAddress: Cell?; //It is Maybe ^Address, just encoded it like this +} + +message(0x642b7d07) Mint { + queryId: Int as uint64; + receiver: Address; + tonAmount: Int as coins; + mintMessage: JettonTransferInternal; +} + +message(22) CloseMinting {} + +message(3) ChangeOwner { + queryId: Int as uint64; + newOwner: Address; +} + +// provide_wallet_balance#7ac8d559 receiver:MsgAddress include_verify_info:Bool = InternalMsgBody +message(0x7ac8d559) ProvideWalletBalance { + receiver: Address; + includeVerifyInfo: Bool; +} + +struct VerifyInfo { + owner: Address; + minter: Address; + code: Cell; +} + +// verify_info$_ owner:MsgAddress minter:MsgAddress code:^Cell = VerifyInfo +// take_wallet_balance#ca77fdc2 balance:Coins verify_info:(Maybe VerifyInfo) = InternalMsgBody +message(0xca77fdc2) TakeWalletBalance { + balance: Int as coins; + verifyInfo: VerifyInfo?; +} + +// claim_ton#0393b1ce receiver:MsgAddress = InternalMsgBody +message(0x0393b1ce) ClaimTON { + receiver: Address; +} diff --git a/yarn.lock b/yarn.lock index edcf1de..2101edc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -309,37 +309,37 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cspell/cspell-bundled-dicts@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-9.0.1.tgz#a61b34317f5cbe3fda56af9a399af6fe7041fc82" - integrity sha512-h7gTqg0VF4N8VhOPk66XewuSsT56OP2ujgxtAyYQ4H+NuYd3HMfS0h/I3/y9uBhllwOEamaeAzYhc5JF/qIrsQ== +"@cspell/cspell-bundled-dicts@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.17.5.tgz#3b7dc22c5b722e608fe9038beedc9df631fa3b1b" + integrity sha512-b/Ntabar+g4gsRNwOct909cvatO/auHhNvBzJZfyFQzryI1nqHMaSFuDsrrtzbhQkGJ4GiMAKCXZC2EOdHMgmw== dependencies: "@cspell/dict-ada" "^4.1.0" "@cspell/dict-al" "^1.1.0" - "@cspell/dict-aws" "^4.0.10" + "@cspell/dict-aws" "^4.0.9" "@cspell/dict-bash" "^4.2.0" - "@cspell/dict-companies" "^3.2.1" - "@cspell/dict-cpp" "^6.0.8" + "@cspell/dict-companies" "^3.1.14" + "@cspell/dict-cpp" "^6.0.4" "@cspell/dict-cryptocurrencies" "^5.0.4" "@cspell/dict-csharp" "^4.0.6" "@cspell/dict-css" "^4.0.17" "@cspell/dict-dart" "^2.3.0" - "@cspell/dict-data-science" "^2.0.8" + "@cspell/dict-data-science" "^2.0.7" "@cspell/dict-django" "^4.1.4" - "@cspell/dict-docker" "^1.1.14" + "@cspell/dict-docker" "^1.1.12" "@cspell/dict-dotnet" "^5.0.9" "@cspell/dict-elixir" "^4.0.7" - "@cspell/dict-en-common-misspellings" "^2.0.11" - "@cspell/dict-en-gb-mit" "^3.0.6" - "@cspell/dict-en_us" "^4.4.8" - "@cspell/dict-filetypes" "^3.0.12" + "@cspell/dict-en-common-misspellings" "^2.0.9" + "@cspell/dict-en-gb" "1.1.33" + "@cspell/dict-en_us" "^4.3.33" + "@cspell/dict-filetypes" "^3.0.11" "@cspell/dict-flutter" "^1.1.0" "@cspell/dict-fonts" "^4.0.4" "@cspell/dict-fsharp" "^1.1.0" - "@cspell/dict-fullstack" "^3.2.6" - "@cspell/dict-gaming-terms" "^1.1.1" + "@cspell/dict-fullstack" "^3.2.5" + "@cspell/dict-gaming-terms" "^1.1.0" "@cspell/dict-git" "^3.0.4" - "@cspell/dict-golang" "^6.0.21" + "@cspell/dict-golang" "^6.0.18" "@cspell/dict-google" "^1.0.8" "@cspell/dict-haskell" "^4.0.5" "@cspell/dict-html" "^4.0.11" @@ -352,55 +352,55 @@ "@cspell/dict-lorem-ipsum" "^4.0.4" "@cspell/dict-lua" "^4.0.7" "@cspell/dict-makefile" "^1.0.4" - "@cspell/dict-markdown" "^2.0.10" + "@cspell/dict-markdown" "^2.0.9" "@cspell/dict-monkeyc" "^1.0.10" - "@cspell/dict-node" "^5.0.7" - "@cspell/dict-npm" "^5.2.3" + "@cspell/dict-node" "^5.0.6" + "@cspell/dict-npm" "^5.1.27" "@cspell/dict-php" "^4.0.14" "@cspell/dict-powershell" "^5.0.14" "@cspell/dict-public-licenses" "^2.0.13" - "@cspell/dict-python" "^4.2.18" + "@cspell/dict-python" "^4.2.15" "@cspell/dict-r" "^2.1.0" - "@cspell/dict-ruby" "^5.0.8" + "@cspell/dict-ruby" "^5.0.7" "@cspell/dict-rust" "^4.0.11" "@cspell/dict-scala" "^5.0.7" "@cspell/dict-shell" "^1.1.0" - "@cspell/dict-software-terms" "^5.0.8" + "@cspell/dict-software-terms" "^4.2.5" "@cspell/dict-sql" "^2.2.0" "@cspell/dict-svelte" "^1.0.6" "@cspell/dict-swift" "^2.0.5" - "@cspell/dict-terraform" "^1.1.1" - "@cspell/dict-typescript" "^3.2.1" + "@cspell/dict-terraform" "^1.1.0" + "@cspell/dict-typescript" "^3.2.0" "@cspell/dict-vue" "^3.0.4" -"@cspell/cspell-json-reporter@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/cspell-json-reporter/-/cspell-json-reporter-9.0.1.tgz#c21c750fdd006a5dec308efec01063e80cd32d49" - integrity sha512-Rpn7Tuq9t8bZpXZFV43NkhCl0LaPDJZSON4/JFxGbOcH16ryXfrx7oObUTIIyxSxO3fGkzaJZHIwGibRJSsbNQ== +"@cspell/cspell-json-reporter@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.17.5.tgz#a1a5615b29662cd02a4283590622cb39d6b8eaef" + integrity sha512-+eVFCdnda74Frv8hguHYwDtxvqDuJJ/luFRl4dC5oknPMRab0JCHM1DDYjp3NzsehTex0HmcxplxqVW6QoDosg== dependencies: - "@cspell/cspell-types" "9.0.1" + "@cspell/cspell-types" "8.17.5" -"@cspell/cspell-pipe@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-9.0.1.tgz#34e2b167dae4bda4c9e03639efdc8efabdbd7b7d" - integrity sha512-bhFcvF2a8KYKVh/OebCfJ8LFw5GYHyUsUjAbxnznTBrYOFSIclDjwUwT29yVDXwnQkJkB6Px5Y9e2VvtFizVFg== +"@cspell/cspell-pipe@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-8.17.5.tgz#8c2913cee23afc1d507fccaa75ca3f377c6a0ade" + integrity sha512-VOIfFdIo3FYQFcSpIyGkqHupOx0LgfBrWs79IKnTT1II27VUHPF+0oGq0WWf4c2Zpd8tzdHvS3IUhGarWZq69g== -"@cspell/cspell-resolver@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/cspell-resolver/-/cspell-resolver-9.0.1.tgz#8cb2a3d21cb9bd4f7dbba69e496a0fc9155afd5b" - integrity sha512-AhIXAhX1qt7Y3EyiP/5rAk7Ow7DJpAyB44wPbfdF9p1vhnk6oQ7RslnD3G6S9o/vNxZ0DWFPREMWx19J/3c+hw== +"@cspell/cspell-resolver@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/cspell-resolver/-/cspell-resolver-8.17.5.tgz#dd8f7bc57f36fdba1d6079a5382ec5db51398b9c" + integrity sha512-5MhYInligPbGctWxoklAKxtg+sxvtJCuRKGSQHHA0JlCOLSsducypl780P6zvpjLK59XmdfC+wtFONxSmRbsuA== dependencies: global-directory "^4.0.1" -"@cspell/cspell-service-bus@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/cspell-service-bus/-/cspell-service-bus-9.0.1.tgz#c151e5a3b48306b48b36a043fa282f254691f5e9" - integrity sha512-DoW6hLkFIO3BXePtUYQEax3FTH9fkwCUbf6qphAEXnr4PjoyPZsgBhR6iCrZd4DyhuFiRvK3Cgpq2o3O0NdODQ== +"@cspell/cspell-service-bus@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/cspell-service-bus/-/cspell-service-bus-8.17.5.tgz#5a2b2df9f900c9564cb93702f01051ca060c2de2" + integrity sha512-Ur3IK0R92G/2J6roopG9cU/EhoYAMOx2um7KYlq93cdrly8RBAK2NCcGCL7DbjQB6C9RYEAV60ueMUnQ45RrCQ== -"@cspell/cspell-types@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-9.0.1.tgz#6143b68e1c5c9115ec397fba9615c90e4b37fa52" - integrity sha512-8FRmvyV1AYEepJB3J7jji1ZYG9yOK0eYr4WuUVPfUJa6N3HyeZjWKhxbVvqedmEI74f5Ls3cQKHY1T2Yvqk/ag== +"@cspell/cspell-types@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-8.17.5.tgz#5b0aa09fd7fe078a4b8de904ef4f29714cb9fa7c" + integrity sha512-91y2+0teunRSRZj940ORDA3kdjyenrUiM+4j6nQQH24sAIAJdRmQl2LG3eUTmeaSReJGkZIpnToQ6DyU5cC88Q== "@cspell/dict-ada@^4.1.0": version "4.1.0" @@ -412,10 +412,10 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-al/-/dict-al-1.1.0.tgz#8091d046b6fe74004f3f1df8d1403a280818537f" integrity sha512-PtNI1KLmYkELYltbzuoztBxfi11jcE9HXBHCpID2lou/J4VMYKJPNqe4ZjVzSI9NYbMnMnyG3gkbhIdx66VSXg== -"@cspell/dict-aws@^4.0.10": - version "4.0.10" - resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-4.0.10.tgz#d1aa477b751113898d51b14443f1e9c418e4ab71" - integrity sha512-0qW4sI0GX8haELdhfakQNuw7a2pnWXz3VYQA2MpydH2xT2e6EN9DWFpKAi8DfcChm8MgDAogKkoHtIo075iYng== +"@cspell/dict-aws@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-4.0.9.tgz#10c1dc6431e05f02809367b70942189acb35d720" + integrity sha512-bDYdnnJGwSkIZ4gzrauu7qzOs/ZAY/FnU4k11LgdMI8BhwMfsbsy2EI1iS+sD/BI5ZnNT9kU5YR3WADeNOmhRg== "@cspell/dict-bash@^4.2.0": version "4.2.0" @@ -424,15 +424,15 @@ dependencies: "@cspell/dict-shell" "1.1.0" -"@cspell/dict-companies@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-3.2.1.tgz#6ce1375975c5152fbea707b66f0b30dc2811265d" - integrity sha512-ryaeJ1KhTTKL4mtinMtKn8wxk6/tqD4vX5tFP+Hg89SiIXmbMk5vZZwVf+eyGUWJOyw5A1CVj9EIWecgoi+jYQ== +"@cspell/dict-companies@^3.1.14": + version "3.1.14" + resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-3.1.14.tgz#3021973b6f6cbe82b9819669095f2094d0f3ed7f" + integrity sha512-iqo1Ce4L7h0l0GFSicm2wCLtfuymwkvgFGhmu9UHyuIcTbdFkDErH+m6lH3Ed+QuskJlpQ9dM7puMIGqUlVERw== -"@cspell/dict-cpp@^6.0.8": - version "6.0.8" - resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-6.0.8.tgz#bb3b6763daa1dd152250785de6dc7fca031320c1" - integrity sha512-BzurRZilWqaJt32Gif6/yCCPi+FtrchjmnehVEIFzbWyeBd/VOUw77IwrEzehZsu5cRU91yPWuWp5fUsKfDAXA== +"@cspell/dict-cpp@^6.0.4": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-6.0.5.tgz#2819a3c4f030c1691034d8a6d1b7815b15692b8c" + integrity sha512-OrWqPuLf5EV+H/2sIYUSDF4UyiyCR4/+Q2n+xRx09CBg7YBx16h61V9892TKWCUr9FiJfAkKY24aWW3WRU9Nqg== "@cspell/dict-cryptocurrencies@^5.0.4": version "5.0.4" @@ -454,20 +454,20 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-dart/-/dict-dart-2.3.0.tgz#2bc39f965712c798dce143cafa656125ea30c0d8" integrity sha512-1aY90lAicek8vYczGPDKr70pQSTQHwMFLbmWKTAI6iavmb1fisJBS1oTmMOKE4ximDf86MvVN6Ucwx3u/8HqLg== -"@cspell/dict-data-science@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@cspell/dict-data-science/-/dict-data-science-2.0.8.tgz#512ac2f805ec86ad6fd7eee8a11821c94361f1f9" - integrity sha512-uyAtT+32PfM29wRBeAkUSbkytqI8bNszNfAz2sGPtZBRmsZTYugKMEO9eDjAIE/pnT9CmbjNuoiXhk+Ss4fCOg== +"@cspell/dict-data-science@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@cspell/dict-data-science/-/dict-data-science-2.0.7.tgz#3939bd105ef9ee487272e8b25e3433e7f03a6b91" + integrity sha512-XhAkK+nSW6zmrnWzusmZ1BpYLc62AWYHZc2p17u4nE2Z9XG5DleG55PCZxXQTKz90pmwlhFM9AfpkJsYaBWATA== "@cspell/dict-django@^4.1.4": version "4.1.4" resolved "https://registry.yarnpkg.com/@cspell/dict-django/-/dict-django-4.1.4.tgz#69298021c60b9b39d491c1a9caa2b33346311a2f" integrity sha512-fX38eUoPvytZ/2GA+g4bbdUtCMGNFSLbdJJPKX2vbewIQGfgSFJKY56vvcHJKAvw7FopjvgyS/98Ta9WN1gckg== -"@cspell/dict-docker@^1.1.14": - version "1.1.14" - resolved "https://registry.yarnpkg.com/@cspell/dict-docker/-/dict-docker-1.1.14.tgz#867797789360e7b9b36d8a146facf5a454f6fb08" - integrity sha512-p6Qz5mokvcosTpDlgSUREdSbZ10mBL3ndgCdEKMqjCSZJFdfxRdNdjrGER3lQ6LMq5jGr1r7nGXA0gvUJK80nw== +"@cspell/dict-docker@^1.1.12": + version "1.1.12" + resolved "https://registry.yarnpkg.com/@cspell/dict-docker/-/dict-docker-1.1.12.tgz#aa18dbfe8d5b0df7118cdee9f2f7f44ea4b45621" + integrity sha512-6d25ZPBnYZaT9D9An/x6g/4mk542R8bR3ipnby3QFCxnfdd6xaWiTcwDPsCgwN2aQZIQ1jX/fil9KmBEqIK/qA== "@cspell/dict-dotnet@^5.0.9": version "5.0.9" @@ -479,25 +479,25 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-elixir/-/dict-elixir-4.0.7.tgz#fd6136db9acb7912e495e02777e2141ef16822f4" integrity sha512-MAUqlMw73mgtSdxvbAvyRlvc3bYnrDqXQrx5K9SwW8F7fRYf9V4vWYFULh+UWwwkqkhX9w03ZqFYRTdkFku6uA== -"@cspell/dict-en-common-misspellings@^2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.11.tgz#5ba78c86c1d638d6c1acd4c6409d756266860822" - integrity sha512-xFQjeg0wFHh9sFhshpJ+5BzWR1m9Vu8pD0CGPkwZLK9oii8AD8RXNchabLKy/O5VTLwyqPOi9qpyp1cxm3US4Q== +"@cspell/dict-en-common-misspellings@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.9.tgz#0b123d2e46a16ef4cd3838c2ef3e9a50d8d6433e" + integrity sha512-O/jAr1VNtuyCFckbTmpeEf43ZFWVD9cJFvWaA6rO2IVmLirJViHWJUyBZOuQcesSplzEIw80MAYmnK06/MDWXQ== -"@cspell/dict-en-gb-mit@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@cspell/dict-en-gb-mit/-/dict-en-gb-mit-3.0.6.tgz#23af2677bc32deaca829efdfc45bd0efd1779af6" - integrity sha512-QYDwuXi9Yh+AvU1omhz8sWX+A1SxWI3zeK1HdGfTrICZavhp8xxcQGTa5zxTTFRCcQc483YzUH2Dl+6Zd50tJg== +"@cspell/dict-en-gb@1.1.33": + version "1.1.33" + resolved "https://registry.yarnpkg.com/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz#7f1fd90fc364a5cb77111b5438fc9fcf9cc6da0e" + integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g== -"@cspell/dict-en_us@^4.4.8": - version "4.4.8" - resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-4.4.8.tgz#36513b6b578d8d90ec8b68a7e780fde42ae08033" - integrity sha512-OkNUVuU9Q+Sf827/61YPkk6ya6dSsllzeYniBFqNW9TkoqQXT3vggkgmtCE1aEhSvVctMwxpPYoC8pZgn1TeSA== +"@cspell/dict-en_us@^4.3.33": + version "4.3.34" + resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-4.3.34.tgz#4b562b238df86c482187ec7f65c892c822e6f9f2" + integrity sha512-ewJXNV7Nk5vxbGvHvxYLDGoXN0Lq5sfSgX8SAlcYL+2bZ7r25nNOLHou5hdFlNgvviGTx/SFPlVKjdjVJlblgA== -"@cspell/dict-filetypes@^3.0.12": - version "3.0.12" - resolved "https://registry.yarnpkg.com/@cspell/dict-filetypes/-/dict-filetypes-3.0.12.tgz#cff1c2b3a8fed06235e5faf7a62f53ded06c2f4d" - integrity sha512-+ds5wgNdlUxuJvhg8A1TjuSpalDFGCh7SkANCWvIplg6QZPXL4j83lqxP7PgjHpx7PsBUS7vw0aiHPjZy9BItw== +"@cspell/dict-filetypes@^3.0.11": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@cspell/dict-filetypes/-/dict-filetypes-3.0.11.tgz#2c1066833c7490108b7ed1e6193750b547a4ccb0" + integrity sha512-bBtCHZLo7MiSRUqx5KEiPdGOmXIlDGY+L7SJEtRWZENpAKE+96rT7hj+TUUYWBbCzheqHr0OXZJFEKDgsG/uZg== "@cspell/dict-flutter@^1.1.0": version "1.1.0" @@ -514,25 +514,25 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-fsharp/-/dict-fsharp-1.1.0.tgz#b14f6fff20486c45651303323e467534afdc6727" integrity sha512-oguWmHhGzgbgbEIBKtgKPrFSVAFtvGHaQS0oj+vacZqMObwkapcTGu7iwf4V3Bc2T3caf0QE6f6rQfIJFIAVsw== -"@cspell/dict-fullstack@^3.2.6": +"@cspell/dict-fullstack@^3.2.5": version "3.2.6" resolved "https://registry.yarnpkg.com/@cspell/dict-fullstack/-/dict-fullstack-3.2.6.tgz#a5916de25a0acc9cedef2fd97760e1656017280e" integrity sha512-cSaq9rz5RIU9j+0jcF2vnKPTQjxGXclntmoNp4XB7yFX2621PxJcekGjwf/lN5heJwVxGLL9toR0CBlGKwQBgA== -"@cspell/dict-gaming-terms@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.1.1.tgz#755d96864650f679ed5d0381e867380bf8efcf9a" - integrity sha512-tb8GFxjTLDQstkJcJ90lDqF4rKKlMUKs5/ewePN9P+PYRSehqDpLI5S5meOfPit8LGszeOrjUdBQ4zXo7NpMyQ== +"@cspell/dict-gaming-terms@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.1.0.tgz#89b8b73796368a03ea6e0e4f04c6105110c66df9" + integrity sha512-46AnDs9XkgJ2f1Sqol1WgfJ8gOqp60fojpc9Wxch7x+BA63g4JfMV5/M5x0sI0TLlLY8EBSglcr8wQF/7C80AQ== "@cspell/dict-git@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@cspell/dict-git/-/dict-git-3.0.4.tgz#3753f17a2a122f4dc734a51820fac7b6ffc594f1" integrity sha512-C44M+m56rYn6QCsLbiKiedyPTMZxlDdEYAsPwwlL5bhMDDzXZ3Ic8OCQIhMbiunhCOJJT+er4URmOmM+sllnjg== -"@cspell/dict-golang@^6.0.21": - version "6.0.21" - resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-6.0.21.tgz#dc6fb7177cd99faa8bdebaecb22ec13570154424" - integrity sha512-D3wG1MWhFx54ySFJ00CS1MVjR4UiBVsOWGIjJ5Av+HamnguqEshxbF9mvy+BX0KqzdLVzwFkoLBs8QeOID56HA== +"@cspell/dict-golang@^6.0.18": + version "6.0.18" + resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-6.0.18.tgz#44e144409c3141ee58d854e49e118f7d264c9d43" + integrity sha512-Mt+7NwfodDwUk7423DdaQa0YaA+4UoV3XSxQwZioqjpFBCuxfvvv4l80MxCTAAbK6duGj0uHbGTwpv8fyKYPKg== "@cspell/dict-google@^1.0.8": version "1.0.8" @@ -594,25 +594,25 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-makefile/-/dict-makefile-1.0.4.tgz#52ea60fbf30a9814229c222788813bf93cbf1f3e" integrity sha512-E4hG/c0ekPqUBvlkrVvzSoAA+SsDA9bLi4xSV3AXHTVru7Y2bVVGMPtpfF+fI3zTkww/jwinprcU1LSohI3ylw== -"@cspell/dict-markdown@^2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@cspell/dict-markdown/-/dict-markdown-2.0.10.tgz#7e00957036aa3da2ea133135ae53a9108fb6b223" - integrity sha512-vtVa6L/84F9sTjclTYDkWJF/Vx2c5xzxBKkQp+CEFlxOF2SYgm+RSoEvAvg5vj4N5kuqR4350ZlY3zl2eA3MXw== +"@cspell/dict-markdown@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@cspell/dict-markdown/-/dict-markdown-2.0.9.tgz#0ecf2703fb69b47494bac81557d539cb4a541939" + integrity sha512-j2e6Eg18BlTb1mMP1DkyRFMM/FLS7qiZjltpURzDckB57zDZbUyskOFdl4VX7jItZZEeY0fe22bSPOycgS1Z5A== "@cspell/dict-monkeyc@^1.0.10": version "1.0.10" resolved "https://registry.yarnpkg.com/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.10.tgz#21955a891b27270424c6e1edaaa4b444fb077c4f" integrity sha512-7RTGyKsTIIVqzbvOtAu6Z/lwwxjGRtY5RkKPlXKHEoEAgIXwfDxb5EkVwzGQwQr8hF/D3HrdYbRT8MFBfsueZw== -"@cspell/dict-node@^5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@cspell/dict-node/-/dict-node-5.0.7.tgz#d26e558b2b157c254c6d5e5bf9b63cf35654c5ea" - integrity sha512-ZaPpBsHGQCqUyFPKLyCNUH2qzolDRm1/901IO8e7btk7bEDF56DN82VD43gPvD4HWz3yLs/WkcLa01KYAJpnOw== +"@cspell/dict-node@^5.0.6": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@cspell/dict-node/-/dict-node-5.0.6.tgz#80f156f79f15d58c5d4df89358314e128070ad98" + integrity sha512-CEbhPCpxGvRNByGolSBTrXXW2rJA4bGqZuTx1KKO85mwR6aadeOmUE7xf/8jiCkXSy+qvr9aJeh+jlfXcsrziQ== -"@cspell/dict-npm@^5.2.3": - version "5.2.3" - resolved "https://registry.yarnpkg.com/@cspell/dict-npm/-/dict-npm-5.2.3.tgz#f33d259245ea15796627661ae91e6e25b039b3ae" - integrity sha512-EdGkCpAq66Mhi9Qldgsr+NvPVL4TdtmdlqDe4VBp0P3n6J0B7b0jT1MlVDIiLR+F1eqBfL0qjfHf0ey1CafeNw== +"@cspell/dict-npm@^5.1.27": + version "5.1.29" + resolved "https://registry.yarnpkg.com/@cspell/dict-npm/-/dict-npm-5.1.29.tgz#578d0353373a84c109f84f0bd58c4cb90a4357cb" + integrity sha512-FPCE9MpO42WGc9u/lx3J6CZSfPVO5kMUaOQkTVqXo3sTDX6+o5ulb+9W/MD33kiA0AvXr1Lk8knhA6koW9t/Yw== "@cspell/dict-php@^4.0.14": version "4.0.14" @@ -629,22 +629,22 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.13.tgz#904c8b97ffb60691d28cce0fb5186a8dd473587d" integrity sha512-1Wdp/XH1ieim7CadXYE7YLnUlW0pULEjVl9WEeziZw3EKCAw8ZI8Ih44m4bEa5VNBLnuP5TfqC4iDautAleQzQ== -"@cspell/dict-python@^4.2.18": - version "4.2.18" - resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-4.2.18.tgz#3f7fdd73a392a563491ffc0e7812356863af4b14" - integrity sha512-hYczHVqZBsck7DzO5LumBLJM119a3F17aj8a7lApnPIS7cmEwnPc2eACNscAHDk7qAo2127oI7axUoFMe9/g1g== +"@cspell/dict-python@^4.2.15": + version "4.2.15" + resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-4.2.15.tgz#97c2d3ce3becc4dcb061f444232e903f9723cd16" + integrity sha512-VNXhj0Eh+hdHN89MgyaoSAexBQKmYtJaMhucbMI7XmBs4pf8fuFFN3xugk51/A4TZJr8+RImdFFsGMOw+I4bDA== dependencies: - "@cspell/dict-data-science" "^2.0.8" + "@cspell/dict-data-science" "^2.0.7" "@cspell/dict-r@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@cspell/dict-r/-/dict-r-2.1.0.tgz#147a01b36fc4ae2381c88a00b1f8ba7fad77a4f1" integrity sha512-k2512wgGG0lTpTYH9w5Wwco+lAMf3Vz7mhqV8+OnalIE7muA0RSuD9tWBjiqLcX8zPvEJr4LdgxVju8Gk3OKyA== -"@cspell/dict-ruby@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-5.0.8.tgz#25a8f47db12cabeaddde2f38ba3d6c51fb94d7f7" - integrity sha512-ixuTneU0aH1cPQRbWJvtvOntMFfeQR2KxT8LuAv5jBKqQWIHSxzGlp+zX3SVyoeR0kOWiu64/O5Yn836A5yMcQ== +"@cspell/dict-ruby@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-5.0.7.tgz#3593a955baaffe3c5d28fb178b72fdf93c7eec71" + integrity sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q== "@cspell/dict-rust@^4.0.11": version "4.0.11" @@ -661,10 +661,10 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-shell/-/dict-shell-1.1.0.tgz#3110d5c81cb5bd7f6c0cc88e6e8ac7ccf6fa65b5" integrity sha512-D/xHXX7T37BJxNRf5JJHsvziFDvh23IF/KvkZXNSh8VqcRdod3BAz9VGHZf6VDqcZXr1VRqIYR3mQ8DSvs3AVQ== -"@cspell/dict-software-terms@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-5.0.8.tgz#baa277fabfc70f3d8453830e26628ee6df53fad9" - integrity sha512-VsJesitvaHZpMgNwHHms3yDsZz7LNToC2HuSAnyt1znn37ribiJF1ty0jWhVQO6fv7K4PM1KsKTJIwqBwc446g== +"@cspell/dict-software-terms@^4.2.5": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-4.2.5.tgz#7baf7abd410748b823805be16b01fd0ec85739d3" + integrity sha512-CaRzkWti3AgcXoxuRcMijaNG7YUk/MH1rHjB8VX34v3UdCxXXeqvRyElRKnxhFeVLB/robb2UdShqh/CpskxRg== "@cspell/dict-sql@^2.2.0": version "2.2.0" @@ -681,43 +681,43 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-swift/-/dict-swift-2.0.5.tgz#72d37a3ea53d6a9ec1f4b553959268ce58acff28" integrity sha512-3lGzDCwUmnrfckv3Q4eVSW3sK3cHqqHlPprFJZD4nAqt23ot7fic5ALR7J4joHpvDz36nHX34TgcbZNNZOC/JA== -"@cspell/dict-terraform@^1.1.1": +"@cspell/dict-terraform@^1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@cspell/dict-terraform/-/dict-terraform-1.1.1.tgz#23a25f64eb7495642ab17b8fbeda46ac10cd6f43" integrity sha512-07KFDwCU7EnKl4hOZLsLKlj6Zceq/IsQ3LRWUyIjvGFfZHdoGtFdCp3ZPVgnFaAcd/DKv+WVkrOzUBSYqHopQQ== -"@cspell/dict-typescript@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-3.2.1.tgz#638b5d48b97d00b3db15746dd5cdf5535147fb55" - integrity sha512-jdnKg4rBl75GUBTsUD6nTJl7FGvaIt5wWcWP7TZSC3rV1LfkwvbUiY3PiGpfJlAIdnLYSeFWIpYU9gyVgz206w== +"@cspell/dict-typescript@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-3.2.0.tgz#6133c086cf11c3823450860e6221fe256c48434d" + integrity sha512-Pk3zNePLT8qg51l0M4g1ISowYAEGxTuNfZlgkU5SvHa9Cu7x/BWoyYq9Fvc3kAyoisCjRPyvWF4uRYrPitPDFw== "@cspell/dict-vue@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@cspell/dict-vue/-/dict-vue-3.0.4.tgz#0f1cb65e2f640925de72acbc1cae9e87f7727c05" integrity sha512-0dPtI0lwHcAgSiQFx8CzvqjdoXROcH+1LyqgROCpBgppommWpVhbQ0eubnKotFEXgpUCONVkeZJ6Ql8NbTEu+w== -"@cspell/dynamic-import@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/dynamic-import/-/dynamic-import-9.0.1.tgz#e71d33bd13ffd2ab86227d955a3d4c62791a3b6b" - integrity sha512-BoWzHwkufo90ubMZUN8Jy4HQYYWFW7psVCdG/4RUgfvVnazkPfLxWBbsPQsLrlIP0utaqei7D9FU0K7r7mpl4A== +"@cspell/dynamic-import@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/dynamic-import/-/dynamic-import-8.17.5.tgz#f1ce16fe5e3922d582f5d20979bc3d5bd9561b03" + integrity sha512-tY+cVkRou+0VKvH+K1NXv8/R7mOlW3BDGSs9fcgvhatj0m00Yf8blFC7tE4VVI9Qh2bkC/KDFqM24IqZbuwXUQ== dependencies: - "@cspell/url" "9.0.1" + "@cspell/url" "8.17.5" import-meta-resolve "^4.1.0" -"@cspell/filetypes@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/filetypes/-/filetypes-9.0.1.tgz#349f5e6e28ff741720df8f6e44a8e6d42ea37e6e" - integrity sha512-swZu3ra2AueyjEz/bPsvwFuHGYhjWZBx1K9FSvZA/yDIX5RVr6orQSuf9zvXNFui6Nyk0tudLnn3y9jT0LHk8A== +"@cspell/filetypes@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/filetypes/-/filetypes-8.17.5.tgz#a5c21864bd0e08575ee9a989e0812a14ffe8f50f" + integrity sha512-Fj6py2Rl+FEnMiXhRQUM1A5QmyeCLxi6dY/vQ0qfH6tp6KSaBiaC8wuPUKhr8hKyTd3+8lkUbobDhUf6xtMEXg== -"@cspell/strong-weak-map@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/strong-weak-map/-/strong-weak-map-9.0.1.tgz#509819ab5503ffb21794fbba5d19650fdf05985b" - integrity sha512-u87PWr1xACqs/F3HibZ4Eb0Za/ghWIa6WLvEKV9OaiLfEUQuczbrXPVgHmGr83H0XXWUKy8FvVbWGFmXwiw+gQ== +"@cspell/strong-weak-map@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/strong-weak-map/-/strong-weak-map-8.17.5.tgz#29bd258554de6989132f44ec541ec72132ff11f7" + integrity sha512-Z4eo+rZJr1086wZWycBiIG/n7gGvVoqn28I7ZicS8xedRYu/4yp2loHgLn4NpxG3e46+dNWs4La6vinod+UydQ== -"@cspell/url@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@cspell/url/-/url-9.0.1.tgz#bffe68a51b98e4c1a7dfbd2d42994451510a02f9" - integrity sha512-8xaLrsQ742dmwXwS6tjreps3NpSQe6WEZFPQQT2DprVJXGZnfQR8ob0c+kPhD0hu9A6PwShJsRsfh3DQGKCqAw== +"@cspell/url@8.17.5": + version "8.17.5" + resolved "https://registry.yarnpkg.com/@cspell/url/-/url-8.17.5.tgz#fd8eeb710ab19236ec30c681e2086201497c45e1" + integrity sha512-GNQqST7zI85dAFVyao6oiTeg5rNhO9FH1ZAd397qQhvwfxrrniNfuoewu8gPXyP0R4XBiiaCwhBL7w9S/F5guw== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" @@ -738,10 +738,10 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/config-array@^0.20.0": - version "0.20.0" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.20.0.tgz#7a1232e82376712d3340012a2f561a2764d1988f" - integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ== +"@eslint/config-array@^0.19.2": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa" + integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w== dependencies: "@eslint/object-schema" "^2.1.6" debug "^4.3.1" @@ -774,10 +774,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.26.0": - version "9.26.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.26.0.tgz#1e13126b67a3db15111d2dcc61f69a2acff70bd5" - integrity sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ== +"@eslint/js@9.21.0": + version "9.21.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.21.0.tgz#4303ef4e07226d87c395b8fad5278763e9c15c08" + integrity sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw== "@eslint/object-schema@^2.1.6": version "2.1.6" @@ -1120,13 +1120,13 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nowarp/misti@^0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@nowarp/misti/-/misti-0.8.3.tgz#85390a029c4c40dd5616962cf3d46acaa6c678f6" - integrity sha512-+1HttfF/ww1rgu9BcqVqTvJXTTNivjwb63uSHyAEmymN2OP7STViNrl3wqvaU4aLw6PAO98SR9VFmQQMWGhOow== +"@nowarp/misti@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@nowarp/misti/-/misti-0.8.1.tgz#adaf865bfb64be157073f9ace650ff80d5bba905" + integrity sha512-rd+3B3FUlucPhRtYpi2vLddDwrIUt3DVo4R3sn1urUeh8mlGMwgha/hJpKQ4M9Vn48cxXy+e/1isz4Wkidlvrg== dependencies: "@nowarp/souffle" "^0.1.2" - "@tact-lang/compiler" "~1.6.7" + "@tact-lang/compiler" "~1.6.6" "@types/benchmark" "^2.1.5" "@types/fs-extra" "^11.0.4" "@types/json-bigint" "^1.0.4" @@ -1149,10 +1149,10 @@ dependencies: isomorphic-fetch "^3.0.0" -"@pkgr/core@^0.2.3": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.4.tgz#d897170a2b0ba51f78a099edccd968f7b103387c" - integrity sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw== +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" @@ -1256,7 +1256,7 @@ "@smithy/util-buffer-from" "^2.2.0" tslib "^2.6.2" -"@tact-lang/compiler@1.6.7", "@tact-lang/compiler@~1.6.7": +"@tact-lang/compiler@^1.6.7", "@tact-lang/compiler@~1.6.6": version "1.6.7" resolved "https://registry.yarnpkg.com/@tact-lang/compiler/-/compiler-1.6.7.tgz#5c4c134f4c765d59ede61124504226a04f443e3a" integrity sha512-SOAg0xnjobbA1KStH56faiZknczpqKtFp+IHcsKwwbPuYLUVdaygt8Wp++NYYYETSrRW5ysMPb96HPSqWY/tYg== @@ -1270,15 +1270,6 @@ path-normalize "^6.0.13" zod "^3.22.4" -"@tact-lang/deployer@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@tact-lang/deployer/-/deployer-0.2.0.tgz#8819cf76e0521a4f467ad4129c51423bbfc4dec8" - integrity sha512-OIRydgnetFyrAxQefubGiy2L77cngmDNcKkuKIuzxuPCanmmVJvUEg6tDdRfhTaP1z+a4WbFPsHiDH3CslESRw== - dependencies: - axios "^1.3.4" - form-data "^4.0.0" - zod "^3.20.6" - "@tact-lang/opcode@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@tact-lang/opcode/-/opcode-0.3.1.tgz#bd9c7b10771f7a100fe2e5e5f18b33350225dc96" @@ -1287,11 +1278,6 @@ "@ton/core" "^0.60.0" "@ton/crypto" "^3.3.0" -"@tact-lang/ton-abi@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@tact-lang/ton-abi/-/ton-abi-0.0.3.tgz#68aa8ecf8e14d91f37252773395753e4c623798e" - integrity sha512-n3ecmlwJiRI+4YKodc2/I3OsI14kYuxjPgFSWdNfr+GRMSZ76OvDIzq8Qr8k8iA3mSE+1RIplpluNnO9HCtgXg== - "@tact-lang/ton-jest@^0.0.4": version "0.0.4" resolved "https://registry.yarnpkg.com/@tact-lang/ton-jest/-/ton-jest-0.0.4.tgz#c87604669ed0c6b4ba1a2e6f06616e267f7fc8ca" @@ -1325,17 +1311,17 @@ resolved "https://registry.yarnpkg.com/@ton/sandbox/-/sandbox-0.30.0.tgz#8af17d60bee83d8b9a7050516b4b3286e12e5445" integrity sha512-fFqwZrMT0KVdWmc/GieBbV0xrs58bx+JUbcHTq/fGLP8dNAKqbnX9ddIT1jA0N8WFOIIAF9MDw0CeIc6h0C8tA== -"@ton/test-utils@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@ton/test-utils/-/test-utils-0.6.0.tgz#09e519cf2a209d22c8fb55746321a3e851469d1a" - integrity sha512-cy1X6261BVVlsBS05Y4ch3ZfddxJr7BVSPnORUVHILU2XtJaqS9txneEQlKHmyF0NUtec3NrtQskRKgHYD2/Fg== +"@ton/test-utils@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@ton/test-utils/-/test-utils-0.4.2.tgz#965429aaf3258a49cc8ba0ef6623867f2c8b8e27" + integrity sha512-fthY8Nrlmy8jnOl/vx6yjeKzzu62ZXMe7ej9Xg7rb4d3511V7dVQK+nw4YLSW5+dD/6WT03dFuNZXnuMYy5fHw== dependencies: node-inspect-extracted "^2.0.0" -"@ton/ton@^15.2.1": - version "15.2.1" - resolved "https://registry.yarnpkg.com/@ton/ton/-/ton-15.2.1.tgz#be5a5b8576c4bae9e7ad52616b3092b6abcf7672" - integrity sha512-ICzozzATRfymkVfFVZrfVpKnCc5PLxAVeaB62mx/HsgllsjnR64UuoLuE6hqWHcA3/Hft9YLGdk2/rOHGZM6qA== +"@ton/ton@^13.9.0": + version "13.11.2" + resolved "https://registry.yarnpkg.com/@ton/ton/-/ton-13.11.2.tgz#e40204df6a663fdf1b862dfe8ba2a91be3c0dddc" + integrity sha512-EPqW+ZTe0MmfqguJEIGMuAqTAFRKMEce95HlDx8h6CGn2y3jiMgV1/oO+WpDIOiX+1wnTu+xtajk8JTWr8nKRQ== dependencies: axios "^1.6.7" dataloader "^2.0.0" @@ -1343,11 +1329,6 @@ teslabot "^1.3.0" zod "^3.21.4" -"@tondevwallet/traces@^0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@tondevwallet/traces/-/traces-0.1.6.tgz#716ee5923c51ee8fd83b68f629d8773347e55cd4" - integrity sha512-/aOwNLBUCtgweNzHzRQ1cm1kweXn3Kv5/pUYKYDiyOyV9GPKCBdWp1lwc4t9hgr6WrzUOrbovJkqxH1hG2Mhcw== - "@tonstudio/parser-runtime@0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@tonstudio/parser-runtime/-/parser-runtime-0.0.1.tgz#469955fb7ea354d4fadaa5964359b11fd17f926b" @@ -1450,7 +1431,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.14": +"@types/jest@^29.2.4": version "29.5.14" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== @@ -1490,17 +1471,22 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.17.tgz#355ccec95f705b664e4332bb64a7f07db30b7055" integrity sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw== dependencies: - undici-types "~6.21.0" + undici-types "~5.26.4" + +"@types/normalize-package-data@^2.4.0": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== -"@types/qs@^6.9.18": - version "6.9.18" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.18.tgz#877292caa91f7c1b213032b34626505b746624c2" - integrity sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA== +"@types/qs@^6.9.7": + version "6.9.17" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a" + integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ== "@types/stack-utils@^2.0.0": version "2.0.3" @@ -1519,86 +1505,86 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^8.32.0": - version "8.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.0.tgz#86630dd3084f9d6c4239bbcd6a7ee1a7ee844f7f" - integrity sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ== +"@typescript-eslint/eslint-plugin@^7.0.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" + integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.32.0" - "@typescript-eslint/type-utils" "8.32.0" - "@typescript-eslint/utils" "8.32.0" - "@typescript-eslint/visitor-keys" "8.32.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/type-utils" "7.18.0" + "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" - ts-api-utils "^2.1.0" + ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^8.32.0": - version "8.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.32.0.tgz#fe840ecb2726a82fa9f5562837ec40503ae71caf" - integrity sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A== +"@typescript-eslint/parser@^7.0.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" + integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== dependencies: - "@typescript-eslint/scope-manager" "8.32.0" - "@typescript-eslint/types" "8.32.0" - "@typescript-eslint/typescript-estree" "8.32.0" - "@typescript-eslint/visitor-keys" "8.32.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.32.0": - version "8.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz#6be89f652780f0d3d19d58dc0ee107b1a9e3282c" - integrity sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ== +"@typescript-eslint/scope-manager@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" + integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== dependencies: - "@typescript-eslint/types" "8.32.0" - "@typescript-eslint/visitor-keys" "8.32.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" -"@typescript-eslint/type-utils@8.32.0": - version "8.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.32.0.tgz#5e0882393e801963f749bea38888e716045fe895" - integrity sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg== +"@typescript-eslint/type-utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" + integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== dependencies: - "@typescript-eslint/typescript-estree" "8.32.0" - "@typescript-eslint/utils" "8.32.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/utils" "7.18.0" debug "^4.3.4" - ts-api-utils "^2.1.0" + ts-api-utils "^1.3.0" -"@typescript-eslint/types@8.32.0": - version "8.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.32.0.tgz#a4a66b8876b8391970cf069b49572e43f1fc957a" - integrity sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA== +"@typescript-eslint/types@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" + integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== -"@typescript-eslint/typescript-estree@8.32.0": - version "8.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz#11d45f47bfabb141206a3da6c7b91a9d869ff32d" - integrity sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ== +"@typescript-eslint/typescript-estree@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" + integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== dependencies: - "@typescript-eslint/types" "8.32.0" - "@typescript-eslint/visitor-keys" "8.32.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" - fast-glob "^3.3.2" + globby "^11.1.0" is-glob "^4.0.3" minimatch "^9.0.4" semver "^7.6.0" - ts-api-utils "^2.1.0" + ts-api-utils "^1.3.0" -"@typescript-eslint/utils@8.32.0": - version "8.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.32.0.tgz#24570f68cf845d198b73a7f94ca88d8c2505ba47" - integrity sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw== +"@typescript-eslint/utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" + integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== dependencies: - "@eslint-community/eslint-utils" "^4.7.0" - "@typescript-eslint/scope-manager" "8.32.0" - "@typescript-eslint/types" "8.32.0" - "@typescript-eslint/typescript-estree" "8.32.0" + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" -"@typescript-eslint/visitor-keys@8.32.0": - version "8.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz#0cca2cac046bc71cc40ce8214bac2850d6ecf4a6" - integrity sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w== +"@typescript-eslint/visitor-keys@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" + integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== dependencies: - "@typescript-eslint/types" "8.32.0" - eslint-visitor-keys "^4.2.0" + "@typescript-eslint/types" "7.18.0" + eslint-visitor-keys "^3.4.3" "@vue/compiler-core@3.5.13": version "3.5.13" @@ -1652,14 +1638,6 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -accepts@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895" - integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng== - dependencies: - mime-types "^3.0.0" - negotiator "^1.0.0" - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -1687,11 +1665,6 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1911,21 +1884,6 @@ blockstore-core@1.0.5: it-take "^1.0.1" multiformats "^9.4.7" -body-parser@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.0.tgz#f7a9656de305249a715b549b7b8fd1ab9dfddcfa" - integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg== - dependencies: - bytes "^3.1.2" - content-type "^1.0.5" - debug "^4.4.0" - http-errors "^2.0.0" - iconv-lite "^0.6.3" - on-finished "^2.4.1" - qs "^6.14.0" - raw-body "^3.0.0" - type-is "^2.0.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2050,6 +2008,7 @@ chalk-template@^1.1.0: dependencies: chalk "^5.2.0" +chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2: chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -2063,6 +2022,11 @@ chalk@^5.2.0, chalk@^5.4.1: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== +chalk@^5.2.0, chalk@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -2073,10 +2037,10 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -ci-info@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" - integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== +ci-info@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.1.0.tgz#92319d2fa29d2620180ea5afed31f589bc98cf83" + integrity sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A== cjs-module-lexer@^1.0.0: version "1.4.3" @@ -2205,37 +2169,15 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -content-disposition@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.0.0.tgz#844426cb398f934caefcbb172200126bc7ceace2" - integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg== - dependencies: - safe-buffer "5.2.1" - -content-type@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie-signature@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.2.tgz#57c7fc3cc293acab9fec54d73e15690ebe4a1793" - integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg== - -cookie@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" - integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== - -core-js-compat@^3.41.0: - version "3.42.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.42.0.tgz#ce19c29706ee5806e26d3cb3c542d4cfc0ed51bb" - integrity sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ== +core-js-compat@^3.38.1: + version "3.41.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17" + integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== dependencies: browserslist "^4.24.4" @@ -2244,14 +2186,6 @@ core-util-is@^1.0.3: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cors@^2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - cosmiconfig@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -2297,79 +2231,80 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" -cspell-config-lib@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cspell-config-lib/-/cspell-config-lib-9.0.1.tgz#ec00b2bf75d88507cc3e9b6e26d6a6ed0f6194f5" - integrity sha512-hbeyU6cY4NPKh69L4QpBZgGz00f7rLk10xPlCo6MxEmCqSOTuXXvDEUR51d2ED69G+GyFAeZi5VU9IdJ4jhvzQ== +cspell-config-lib@8.17.5: + version "8.17.5" + resolved "https://registry.yarnpkg.com/cspell-config-lib/-/cspell-config-lib-8.17.5.tgz#06dbd6289b01211825a7452a7706527668707622" + integrity sha512-XDc+UJO5RZ9S9e2Ajz332XjT7dv6Og2UqCiSnAlvHt7t/MacLHSPARZFIivheObNkWZ7E1iWI681RxKoH4o40w== dependencies: - "@cspell/cspell-types" "9.0.1" + "@cspell/cspell-types" "8.17.5" comment-json "^4.2.5" - yaml "^2.7.1" + yaml "^2.7.0" -cspell-dictionary@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cspell-dictionary/-/cspell-dictionary-9.0.1.tgz#de6c70c509a863f667cb21bb75f6f41332fe1e81" - integrity sha512-I9gjRpfV4djxN0i2p9OzWIrkjtUaGUyVE9atvRbkHUMeqDUhC2Qt0Mb9tnF8I7qnHeZt+U44vUa9Dg7yrJ+k4Q== +cspell-dictionary@8.17.5: + version "8.17.5" + resolved "https://registry.yarnpkg.com/cspell-dictionary/-/cspell-dictionary-8.17.5.tgz#4ff4c18705603e7b83c75a2e0f0e8cf3cf2e795b" + integrity sha512-O/Uuhv1RuDu+5WYQml0surudweaTvr+2YJSmPSdlihByUSiogCbpGqwrRow7wQv/C5p1W1FlFjotvUfoR0fxHA== dependencies: - "@cspell/cspell-pipe" "9.0.1" - "@cspell/cspell-types" "9.0.1" - cspell-trie-lib "9.0.1" + "@cspell/cspell-pipe" "8.17.5" + "@cspell/cspell-types" "8.17.5" + cspell-trie-lib "8.17.5" fast-equals "^5.2.2" -cspell-gitignore@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-9.0.1.tgz#ae7f74a876d621542fcca6a2216bd74cb1738c40" - integrity sha512-xjgOmeGbHEaeF0erRQ2QXwqxWqGDiI4mu+NjCL7ZHPoAM5y8PEO6IbxVNabIB1xC4QAborbtEQ/8ydDWLJcPoQ== +cspell-gitignore@8.17.5: + version "8.17.5" + resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-8.17.5.tgz#9c186d016aca534a6a4e17a7bc8517ca467c076d" + integrity sha512-I27fgOUZzH14jeIYo65LooB60fZ42f6OJL1lOR9Mk6IrIlDyUtzherGR+xx5KshK2katYkX42Qu4zsVYM6VFPA== dependencies: - "@cspell/url" "9.0.1" - cspell-glob "9.0.1" - cspell-io "9.0.1" + "@cspell/url" "8.17.5" + cspell-glob "8.17.5" + cspell-io "8.17.5" + find-up-simple "^1.0.0" -cspell-glob@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-9.0.1.tgz#0249ba4a0a41cac8454678df84300e36a28cc5b1" - integrity sha512-dQU/ln6J9Qe31zk1cLJnq/WNAjRrTUig1GG8WA2oK1jHZKY9VbyJLb5DUFnDUx35cI0jdOEnGSCWi8qNjHSc1Q== +cspell-glob@8.17.5: + version "8.17.5" + resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-8.17.5.tgz#71dddfc2044b7f20611fec6b050e8e452402a6bf" + integrity sha512-OXquou7UykInlGV5et5lNKYYrW0dwa28aEF995x1ocANND7o0bbHmFlbgyci/Lp4uFQai8sifmfFJbuIg2IC/A== dependencies: - "@cspell/url" "9.0.1" - picomatch "^4.0.2" + "@cspell/url" "8.17.5" + micromatch "^4.0.8" -cspell-grammar@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cspell-grammar/-/cspell-grammar-9.0.1.tgz#84509e77210106f6fa025691dd2e2a6a38791760" - integrity sha512-FZ1z1p3pslfotZT/W/VRZjB4S+z0ETrTbNmQ5pGmhdY0nm7Slmg+8nIJluLEjBneBGTJIOcLjYykwS2vI6jzxw== - dependencies: - "@cspell/cspell-pipe" "9.0.1" - "@cspell/cspell-types" "9.0.1" - -cspell-io@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-9.0.1.tgz#1c4a6071f734df070039c0d057a75cd8333886a3" - integrity sha512-L5fZY0glVeQb6nmt1WL1wKzZzoHJUkBQ9BGCrwqSXIrjZrYmBNSKixCjo6o9n2keRUwpNjsvZj1TQDKDV+FsXA== - dependencies: - "@cspell/cspell-service-bus" "9.0.1" - "@cspell/url" "9.0.1" - -cspell-lib@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-9.0.1.tgz#1cc10f485cfe976c5091999278c4c37f548b67e9" - integrity sha512-F4vJG6GmAGVAuhgcepO12UtG7yev7Rcfa31MLIyYNTrd5NeORzM+GTHnL970FlEflwYPYjcSTGwkyowQ+ZbmDg== - dependencies: - "@cspell/cspell-bundled-dicts" "9.0.1" - "@cspell/cspell-pipe" "9.0.1" - "@cspell/cspell-resolver" "9.0.1" - "@cspell/cspell-types" "9.0.1" - "@cspell/dynamic-import" "9.0.1" - "@cspell/filetypes" "9.0.1" - "@cspell/strong-weak-map" "9.0.1" - "@cspell/url" "9.0.1" +cspell-grammar@8.17.5: + version "8.17.5" + resolved "https://registry.yarnpkg.com/cspell-grammar/-/cspell-grammar-8.17.5.tgz#fe05a0bfa253cf0337554727db6b5451e1f9e09b" + integrity sha512-st2n+FVw25MvMbsGb3TeJNRr6Oih4g14rjOd/UJN0qn+ceH360SAShUFqSd4kHHu2ADazI/TESFU6FRtMTPNOg== + dependencies: + "@cspell/cspell-pipe" "8.17.5" + "@cspell/cspell-types" "8.17.5" + +cspell-io@8.17.5: + version "8.17.5" + resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-8.17.5.tgz#87d2be1db3b77215ace251e0437c009af9d40abb" + integrity sha512-oevM/8l0s6nc1NCYPqNFumrW50QSHoa6wqUT8cWs09gtZdE2AWG0U6bIE8ZEVz6e6FxS+6IenGKTdUUwP0+3fg== + dependencies: + "@cspell/cspell-service-bus" "8.17.5" + "@cspell/url" "8.17.5" + +cspell-lib@8.17.5: + version "8.17.5" + resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-8.17.5.tgz#c289e67ec4e895c93a2c2ecec5f412a8c8f82f6f" + integrity sha512-S3KuOrcST1d2BYmTXA+hnbRdho5n3w5GUvEaCx3QZQBwAPfLpAwJbe2yig1TxBpyEJ5LqP02i/mDg1pUCOP0hQ== + dependencies: + "@cspell/cspell-bundled-dicts" "8.17.5" + "@cspell/cspell-pipe" "8.17.5" + "@cspell/cspell-resolver" "8.17.5" + "@cspell/cspell-types" "8.17.5" + "@cspell/dynamic-import" "8.17.5" + "@cspell/filetypes" "8.17.5" + "@cspell/strong-weak-map" "8.17.5" + "@cspell/url" "8.17.5" clear-module "^4.1.2" comment-json "^4.2.5" - cspell-config-lib "9.0.1" - cspell-dictionary "9.0.1" - cspell-glob "9.0.1" - cspell-grammar "9.0.1" - cspell-io "9.0.1" - cspell-trie-lib "9.0.1" + cspell-config-lib "8.17.5" + cspell-dictionary "8.17.5" + cspell-glob "8.17.5" + cspell-grammar "8.17.5" + cspell-io "8.17.5" + cspell-trie-lib "8.17.5" env-paths "^3.0.0" fast-equals "^5.2.2" gensequence "^7.0.0" @@ -2379,44 +2314,45 @@ cspell-lib@9.0.1: vscode-uri "^3.1.0" xdg-basedir "^5.1.0" -cspell-trie-lib@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-9.0.1.tgz#219acb8e6d249504a1fd4026df9c50871cad05a7" - integrity sha512-gIupiHwLdsQun79biJgiqmXffKUGzFjGLFEeVptI2Zy5Oa3XhRJsHap4PyeleErONkpzxMG1tgpOWzhOqwl65Q== +cspell-trie-lib@8.17.5: + version "8.17.5" + resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-8.17.5.tgz#49e4f09e37353480d669a6220d392d452bd1527b" + integrity sha512-9hjI3nRQxtGEua6CgnLbK3sGHLx9dXR/BHwI/csRL4dN5GGRkE5X3CCoy1RJVL7iGFLIzi43+L10xeFRmWniKw== dependencies: - "@cspell/cspell-pipe" "9.0.1" - "@cspell/cspell-types" "9.0.1" + "@cspell/cspell-pipe" "8.17.5" + "@cspell/cspell-types" "8.17.5" gensequence "^7.0.0" -cspell@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cspell/-/cspell-9.0.1.tgz#f279181887fb79961f588eab93af69be703f1918" - integrity sha512-AJqsX+3eSTz9GmIuyEZUzCCTbvCPw6+Nv7UYa4PCn7vNV3XEb5LHTp5i9y2i65fNaeNEcQXLrLYoY/JcBFmUSQ== +cspell@^8.3.2: + version "8.17.5" + resolved "https://registry.yarnpkg.com/cspell/-/cspell-8.17.5.tgz#dd5c4246f3eed1953e7902f3062d029218ff7d72" + integrity sha512-l3Cfp87d7Yrodem675irdxV6+7+OsdR+jNwYHe33Dgnd6ePEfooYrvmfGdXF9rlQrNLUQp/HqYgHJzSq19UEsg== dependencies: - "@cspell/cspell-json-reporter" "9.0.1" - "@cspell/cspell-pipe" "9.0.1" - "@cspell/cspell-types" "9.0.1" - "@cspell/dynamic-import" "9.0.1" - "@cspell/url" "9.0.1" + "@cspell/cspell-json-reporter" "8.17.5" + "@cspell/cspell-pipe" "8.17.5" + "@cspell/cspell-types" "8.17.5" + "@cspell/dynamic-import" "8.17.5" + "@cspell/url" "8.17.5" chalk "^5.4.1" chalk-template "^1.1.0" commander "^13.1.0" - cspell-dictionary "9.0.1" - cspell-gitignore "9.0.1" - cspell-glob "9.0.1" - cspell-io "9.0.1" - cspell-lib "9.0.1" + cspell-dictionary "8.17.5" + cspell-gitignore "8.17.5" + cspell-glob "8.17.5" + cspell-io "8.17.5" + cspell-lib "8.17.5" fast-json-stable-stringify "^2.1.0" file-entry-cache "^9.1.0" + get-stdin "^9.0.0" semver "^7.7.1" - tinyglobby "^0.2.13" + tinyglobby "^0.2.12" dataloader@^2.0.0: version "2.2.3" resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.3.tgz#42d10b4913515f5b37c6acedcb4960d6ae1b1517" integrity sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA== -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== @@ -2438,24 +2374,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -default-browser-id@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" - integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== - -default-browser@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" - integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== - dependencies: - bundle-name "^4.1.0" - default-browser-id "^5.0.0" - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -2490,11 +2408,6 @@ depcheck@^1.4.7: semver "^7.5.4" yargs "^16.2.0" -depd@2.0.0, depd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - deps-regex@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/deps-regex/-/deps-regex-0.2.0.tgz#3ee7ddae5fd784f3accf29d5a711aa6e10044137" @@ -2520,10 +2433,17 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -dotenv@^16.5.0: - version "16.5.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692" - integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dotenv@^16.4.5: + version "16.4.7" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== dunder-proto@^1.0.1: version "1.0.1" @@ -2534,11 +2454,6 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - ejs@^3.1.10: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" @@ -2566,19 +2481,6 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -encodeurl@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" - integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== - -enquirer@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" - integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== - dependencies: - ansi-colors "^4.1.1" - strip-ansi "^6.0.1" - entities@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" @@ -2638,11 +2540,6 @@ escalade@^3.1.1, escalade@^3.2.0: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-html@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -2658,51 +2555,50 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@^10.1.5: - version "10.1.5" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz#00c18d7225043b6fbce6a665697377998d453782" - integrity sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw== +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== -eslint-plugin-prettier@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.0.tgz#54d4748904e58eaf1ffe26c4bffa4986ca7f952b" - integrity sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA== +eslint-plugin-prettier@^5.1.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz#c4af01691a6fa9905207f0fbba0d7bea0902cce5" + integrity sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw== dependencies: prettier-linter-helpers "^1.0.0" - synckit "^0.11.0" + synckit "^0.9.1" -eslint-plugin-unicorn@^59.0.1: - version "59.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-59.0.1.tgz#e76ca18f6b92633440973e5442923a36544a1422" - integrity sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q== +eslint-plugin-unicorn@^56.0.1: + version "56.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz#d10a3df69ba885939075bdc95a65a0c872e940d4" + integrity sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - "@eslint-community/eslint-utils" "^4.5.1" - "@eslint/plugin-kit" "^0.2.7" - ci-info "^4.2.0" + "@babel/helper-validator-identifier" "^7.24.7" + "@eslint-community/eslint-utils" "^4.4.0" + ci-info "^4.0.0" clean-regexp "^1.0.0" - core-js-compat "^3.41.0" + core-js-compat "^3.38.1" esquery "^1.6.0" - find-up-simple "^1.0.1" - globals "^16.0.0" - indent-string "^5.0.0" - is-builtin-module "^5.0.0" - jsesc "^3.1.0" + globals "^15.9.0" + indent-string "^4.0.0" + is-builtin-module "^3.2.1" + jsesc "^3.0.2" pluralize "^8.0.0" + read-pkg-up "^7.0.1" regexp-tree "^0.1.27" - regjsparser "^0.12.0" - semver "^7.7.1" - strip-indent "^4.0.0" + regjsparser "^0.10.0" + semver "^7.6.3" + strip-indent "^3.0.0" eslint-plugin-unused-imports@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz#62ddc7446ccbf9aa7b6f1f0b00a980423cda2738" integrity sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ== -eslint-scope@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d" - integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -2717,23 +2613,21 @@ eslint-visitor-keys@^4.2.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== -eslint@^9.26.0: - version "9.26.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.26.0.tgz#978fe029adc2aceed28ab437bca876e83461c3b4" - integrity sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ== +eslint@^9.19.0: + version "9.21.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.21.0.tgz#b1c9c16f5153ff219791f627b94ab8f11f811591" + integrity sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.20.0" - "@eslint/config-helpers" "^0.2.1" - "@eslint/core" "^0.13.0" - "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.26.0" - "@eslint/plugin-kit" "^0.2.8" + "@eslint/config-array" "^0.19.2" + "@eslint/core" "^0.12.0" + "@eslint/eslintrc" "^3.3.0" + "@eslint/js" "9.21.0" + "@eslint/plugin-kit" "^0.2.7" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.2" - "@modelcontextprotocol/sdk" "^1.8.0" "@types/estree" "^1.0.6" "@types/json-schema" "^7.0.15" ajv "^6.12.4" @@ -2741,7 +2635,7 @@ eslint@^9.26.0: cross-spawn "^7.0.6" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.3.0" + eslint-scope "^8.2.0" eslint-visitor-keys "^4.2.0" espree "^10.3.0" esquery "^1.5.0" @@ -2758,7 +2652,6 @@ eslint@^9.26.0: minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - zod "^3.24.2" espree@^10.0.1, espree@^10.3.0: version "10.3.0" @@ -2803,28 +2696,11 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - eventemitter3@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -eventsource-parser@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eventsource-parser/-/eventsource-parser-3.0.1.tgz#5e358dba9a55ba64ca90da883c4ca35bd82467bd" - integrity sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA== - -eventsource@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-3.0.7.tgz#1157622e2f5377bb6aef2114372728ba0c156989" - integrity sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA== - dependencies: - eventsource-parser "^3.0.1" - execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -2840,6 +2716,21 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + 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.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -2863,44 +2754,6 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -express-rate-limit@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-7.5.0.tgz#6a67990a724b4fbbc69119419feef50c51e8b28f" - integrity sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg== - -express@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/express/-/express-5.1.0.tgz#d31beaf715a0016f0d53f47d3b4d7acf28c75cc9" - integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA== - dependencies: - accepts "^2.0.0" - body-parser "^2.2.0" - content-disposition "^1.0.0" - content-type "^1.0.5" - cookie "^0.7.1" - cookie-signature "^1.2.1" - debug "^4.4.0" - encodeurl "^2.0.0" - escape-html "^1.0.3" - etag "^1.8.1" - finalhandler "^2.1.0" - fresh "^2.0.0" - http-errors "^2.0.0" - merge-descriptors "^2.0.0" - mime-types "^3.0.0" - on-finished "^2.4.1" - once "^1.4.0" - parseurl "^1.3.3" - proxy-addr "^2.0.7" - qs "^6.14.0" - range-parser "^1.2.1" - router "^2.2.0" - send "^1.1.0" - serve-static "^2.2.0" - statuses "^2.0.1" - type-is "^2.0.1" - vary "^1.1.2" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -2916,7 +2769,7 @@ fast-equals@^5.2.2: resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.2.2.tgz#885d7bfb079fac0ce0e8450374bce29e9b742484" integrity sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw== -fast-glob@^3.3.2: +fast-glob@^3.2.9: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -2951,10 +2804,10 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fdir@^6.4.4: - version "6.4.4" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.4.tgz#1cfcf86f875a883e19a8fab53622cfe992e8d2f9" - integrity sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg== +fdir@^6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72" + integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== file-entry-cache@^8.0.0: version "8.0.0" @@ -2984,19 +2837,7 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.1.0.tgz#72306373aa89d05a8242ed569ed86a1bff7c561f" - integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q== - dependencies: - debug "^4.4.0" - encodeurl "^2.0.0" - escape-html "^1.0.3" - on-finished "^2.4.1" - parseurl "^1.3.3" - statuses "^2.0.1" - -find-up-simple@^1.0.1: +find-up-simple@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/find-up-simple/-/find-up-simple-1.0.1.tgz#18fb90ad49e45252c4d7fca56baade04fa3fca1e" integrity sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ== @@ -3063,16 +2904,6 @@ form-data@^4.0.0: es-set-tostringtag "^2.1.0" mime-types "^2.1.12" -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4" - integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== - fs-extra@^11.2.0: version "11.3.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" @@ -3151,6 +2982,11 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3214,10 +3050,22 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globals@^16.0.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-16.1.0.tgz#ee6ab147d41c64e9f2beaaaf66572d18df8e1e60" - integrity sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g== +globals@^15.9.0: + version "15.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" + integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" gopd@^1.2.0: version "1.2.0" @@ -3278,39 +3126,31 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-errors@2.0.0, http-errors@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + husky@^9.1.7: version "9.1.7" resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== -iconv-lite@0.6.3, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -3352,10 +3192,10 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -indent-string@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" - integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== inflight@^1.0.4: version "1.0.6" @@ -3365,7 +3205,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3393,11 +3233,6 @@ interface-store@^2.0.1, interface-store@^2.0.2: resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipfs-unixfs-importer@9.0.10: version "9.0.10" resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-9.0.10.tgz#2527ea0b4e018a9e80fa981101485babcd05c494" @@ -3432,12 +3267,12 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-builtin-module@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-5.0.0.tgz#19df4b9c7451149b68176b0e06d18646db6308dd" - integrity sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA== +is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== dependencies: - builtin-modules "^5.0.0" + builtin-modules "^3.3.0" is-core-module@^2.12.0, is-core-module@^2.16.0: version "2.16.1" @@ -3446,11 +3281,6 @@ is-core-module@^2.12.0, is-core-module@^2.16.0: dependencies: hasown "^2.0.2" -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -3485,13 +3315,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -3502,28 +3325,21 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-promise@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-windows@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" - integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== - dependencies: - is-inside-container "^1.0.0" - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -3985,7 +3801,7 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.7.0: +jest@^29.3.1: version "29.7.0" resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== @@ -4015,15 +3831,15 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsesc@^3.0.2, jsesc@^3.1.0: +jsesc@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== -jsesc@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-bigint@^1.0.0: version "1.0.0" @@ -4106,26 +3922,26 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-16.0.0.tgz#31826709bde6a62542431da3055f038e386a20db" - integrity sha512-sUCprePs6/rbx4vKC60Hez6X10HPkpDJaGcy3D1NdwR7g1RcNkWL8q9mJMreOqmHBTs+1sNFp+wOiX9fr+hoOQ== +lint-staged@^15.4.3: + version "15.4.3" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.4.3.tgz#e73587cc857f580c99f907abefe9ac8d8d5e74c1" + integrity sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g== dependencies: chalk "^5.4.1" commander "^13.1.0" debug "^4.4.0" + execa "^8.0.1" lilconfig "^3.1.3" - listr2 "^8.3.3" + listr2 "^8.2.5" micromatch "^4.0.8" - nano-spawn "^1.0.0" pidtree "^0.6.0" string-argv "^0.3.2" - yaml "^2.7.1" + yaml "^2.7.0" -listr2@^8.3.3: - version "8.3.3" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.3.3.tgz#815fc8f738260ff220981bf9e866b3e11e8121bf" - integrity sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ== +listr2@^8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d" + integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ== dependencies: cli-truncate "^4.0.0" colorette "^2.0.20" @@ -4217,16 +4033,6 @@ math-intrinsics@^1.1.0: resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== -media-typer@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" - integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== - -merge-descriptors@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808" - integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g== - merge-options@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" @@ -4239,7 +4045,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -4257,11 +4063,6 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-db@^1.54.0: - version "1.54.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" - integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== - mime-types@^2.1.12: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" @@ -4269,24 +4070,22 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" -mime-types@^3.0.0, mime-types@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce" - integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA== - dependencies: - mime-db "^1.54.0" - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + mimic-function@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== -min-indent@^1.0.1: +min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== @@ -4350,11 +4149,6 @@ murmurhash3js-revisited@^3.0.0: resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== -nano-spawn@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nano-spawn/-/nano-spawn-1.0.1.tgz#c8e4c1e133e567e3efba44041dcfb12113d861b6" - integrity sha512-BfcvzBlUTxSDWfT+oH7vd6CbUV+rThLLHCIym/QO6GGLBsyVXleZs00fto2i2jzC/wPiBYk5jyOmpXWg4YopiA== - nanoid@^3.3.8: version "3.3.11" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" @@ -4365,11 +4159,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" - integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== - node-fetch@^2.6.1: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -4392,6 +4181,16 @@ node-releases@^2.0.19: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -4404,10 +4203,12 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -object-assign@^4: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" object-inspect@^1.13.3: version "1.13.4" @@ -4435,6 +4236,13 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + onetime@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" @@ -4442,16 +4250,6 @@ onetime@^7.0.0: dependencies: mimic-function "^5.0.0" -open@^10.1.2: - version "10.1.2" - resolved "https://registry.yarnpkg.com/open/-/open-10.1.2.tgz#d5df40984755c9a9c3c93df8156a12467e882925" - integrity sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw== - dependencies: - default-browser "^5.2.1" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - is-wsl "^3.1.0" - optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -4526,11 +4324,6 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== -parseurl@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -4546,6 +4339,11 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-normalize@^6.0.13: version "6.0.13" resolved "https://registry.yarnpkg.com/path-normalize/-/path-normalize-6.0.13.tgz#f80575c85ef041366040b00cdbeea97b8e255231" @@ -4556,11 +4354,6 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" - integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -4629,11 +4422,6 @@ postcss@^8.4.48: picocolors "^1.1.1" source-map-js "^1.2.1" -prando@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/prando/-/prando-6.0.1.tgz#ffa8de84c2adc4975dd9df37ae4ada0458face53" - integrity sha512-ghUWxQ1T9IJmPu6eshc3VU0OwveUtXQ33ZLXYUcz1Oc5ppKLDXKp0TBDj6b0epwhEctzcQSNGR2iHyvQSn4W5A== - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -4646,7 +4434,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^3.5.3: +prettier@^3.4.2: version "3.5.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== @@ -4687,14 +4475,6 @@ protobufjs@^6.10.2: "@types/node" ">=13.7.0" long "^4.0.0" -proxy-addr@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -4710,12 +4490,12 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== -qs@^6.14.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" - integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== +qs@^6.11.0: + version "6.13.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.1.tgz#3ce5fc72bd3a8171b85c99b93c65dd20b7d1b16e" + integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg== dependencies: - side-channel "^1.1.0" + side-channel "^1.0.6" queue-microtask@^1.2.2: version "1.2.3" @@ -4734,26 +4514,30 @@ rabin-wasm@^0.1.4: node-fetch "^2.6.1" readable-stream "^3.6.0" -range-parser@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.0.tgz#25b3476f07a51600619dae3fe82ddc28a36e5e0f" - integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.6.3" - unpipe "1.0.0" - react-is@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -4775,12 +4559,12 @@ regexp-tree@^0.1.27: resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== -regjsparser@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" - integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== +regjsparser@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" + integrity sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA== dependencies: - jsesc "~3.0.2" + jsesc "~0.5.0" repeat-string@^1.6.1: version "1.6.1" @@ -4827,7 +4611,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== -resolve@^1.20.0, resolve@^1.22.3: +resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.3: version "1.22.10" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -4854,22 +4638,6 @@ rfdc@^1.4.1: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== -router@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/router/-/router-2.2.0.tgz#019be620b711c87641167cc79b99090f00b146ef" - integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ== - dependencies: - debug "^4.4.0" - depd "^2.0.0" - is-promise "^4.0.0" - parseurl "^1.3.3" - path-to-regexp "^8.0.0" - -run-applescript@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" - integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -4877,63 +4645,31 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@5.2.1, safe-buffer@~5.2.0: +safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.0, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.1: +semver@^7.5.0, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1: version "7.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== -send@^1.1.0, send@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/send/-/send-1.2.0.tgz#32a7554fb777b831dfa828370f773a3808d37212" - integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw== - dependencies: - debug "^4.3.5" - encodeurl "^2.0.0" - escape-html "^1.0.3" - etag "^1.8.1" - fresh "^2.0.0" - http-errors "^2.0.0" - mime-types "^3.0.1" - ms "^2.1.3" - on-finished "^2.4.1" - range-parser "^1.2.1" - statuses "^2.0.1" - -serve-static@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.0.tgz#9c02564ee259bdd2251b82d659a2e7e1938d66f9" - integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ== - dependencies: - encodeurl "^2.0.0" - escape-html "^1.0.3" - parseurl "^1.3.3" - send "^1.2.0" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -4975,7 +4711,7 @@ side-channel-weakmap@^1.0.2: object-inspect "^1.13.3" side-channel-map "^1.0.1" -side-channel@^1.1.0: +side-channel@^1.0.6: version "1.1.0" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== @@ -5045,6 +4781,32 @@ sparse-array@^1.3.1: resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.21" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3" + integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -5057,11 +4819,6 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -statuses@2.0.1, statuses@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - string-argv@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" @@ -5124,12 +4881,17 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" - integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: - min-indent "^1.0.1" + min-indent "^1.0.0" strip-json-comments@^3.1.1: version "3.1.1" @@ -5160,13 +4922,13 @@ symbol.inspect@1.0.1: resolved "https://registry.yarnpkg.com/symbol.inspect/-/symbol.inspect-1.0.1.tgz#e13125b8038c4996eb0dfa1567332ad4dcd0763f" integrity sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ== -synckit@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.4.tgz#48972326b59723fc15b8d159803cf8302b545d59" - integrity sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ== +synckit@^0.9.1: + version "0.9.2" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" + integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== dependencies: - "@pkgr/core" "^0.2.3" - tslib "^2.8.1" + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" teslabot@^1.3.0: version "1.5.0" @@ -5182,12 +4944,12 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -tinyglobby@^0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.13.tgz#a0e46515ce6cbcd65331537e57484af5a7b2ff7e" - integrity sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw== +tinyglobby@^0.2.12: + version "0.2.12" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5" + integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== dependencies: - fdir "^6.4.4" + fdir "^6.4.3" picomatch "^4.0.2" tmpl@1.0.5: @@ -5202,25 +4964,20 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -ts-api-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" - integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== +ts-api-utils@^1.3.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== -ts-jest@^29.3.2: - version "29.3.2" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.3.2.tgz#0576cdf0a507f811fe73dcd16d135ce89f8156cb" - integrity sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug== +ts-jest@^29.0.3: + version "29.2.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" + integrity sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA== dependencies: bs-logger "^0.2.6" ejs "^3.1.10" @@ -5229,11 +4986,10 @@ ts-jest@^29.3.2: json5 "^2.2.3" lodash.memoize "^4.1.2" make-error "^1.3.6" - semver "^7.7.1" - type-fest "^4.39.1" + semver "^7.6.3" yargs-parser "^21.1.1" -ts-node@^10.9.2: +ts-node@^10.9.1: version "10.9.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== @@ -5252,7 +5008,7 @@ ts-node@^10.9.2: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tslib@^2.5.0, tslib@^2.6.2, tslib@^2.8.1: +tslib@^2.5.0, tslib@^2.6.2: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -5279,24 +5035,20 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^4.39.1: - version "4.41.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" - integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -type-is@^2.0.0, type-is@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97" - integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw== - dependencies: - content-type "^1.0.5" - media-typer "^1.1.0" - mime-types "^3.0.0" +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -typescript@^5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" - integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== +typescript@^4.9.4: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== uint8arrays@^3.0.0: version "3.1.1" @@ -5305,6 +5057,11 @@ uint8arrays@^3.0.0: dependencies: multiformats "^9.4.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + undici-types@~6.21.0: version "6.21.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" @@ -5354,10 +5111,13 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" -vary@^1, vary@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" vscode-languageserver-textdocument@^1.0.12: version "1.0.12" @@ -5464,10 +5224,10 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.1.tgz#44a247d1b88523855679ac7fa7cda6ed7e135cf6" - integrity sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ== +yaml@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" + integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== yargs-parser@^20.2.2: version "20.2.9" From 28aa1121ce12587b53335e7a13098ef4900bef45 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 02:30:11 +0300 Subject: [PATCH 05/27] add tests --- package.json | 6 +- src/contracts/shard-utils.tact | 2 + src/contracts/shard/constants.tact | 7 +- src/tests/base/extended.spec.ts | 25 ++- src/tests/base/jetton.spec.ts | 7 + src/tests/shard/shard.spec.ts | 67 +++++++ src/wrappers/ExtendedShardedJettonMinter.ts | 194 ++++++++++++++++++++ src/wrappers/ExtendedShardedJettonWallet.ts | 148 +++++++++++++++ 8 files changed, 444 insertions(+), 12 deletions(-) create mode 100644 src/tests/shard/shard.spec.ts create mode 100644 src/wrappers/ExtendedShardedJettonMinter.ts create mode 100644 src/wrappers/ExtendedShardedJettonWallet.ts diff --git a/package.json b/package.json index 11d4450..cb4e7e8 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,19 @@ { "private": true, "scripts": { - "build": "yarn build:base && yarn build:governance && yarn build:feature-rich", + "build": "yarn build:base && yarn build:governance && yarn build:feature-rich && yarn build:shard", "build:base": "tact --config ./tact.config.json --project Jetton", "build:governance": "tact --config ./tact.config.json --project Governance", "build:feature-rich": "tact --config ./tact.config.json --project FeatureRich", + "build:shard": "tact --config ./tact.config.json --project Shard", "lint": "tact-fmt --check ./src && yarn misti ./tact.config.json", "lint:es": "eslint .", "lint:fix": "eslint . --fix", - "test": "yarn test:base && yarn test:governance && yarn test:feature-rich", + "test": "yarn test:base && yarn test:governance && yarn test:feature-rich && yarn test:shard", "test:base": "yarn build:base && jest src/tests/base -t 'Base Jetton'", "test:governance": "yarn build:governance && jest src/tests/governance-tests", "test:feature-rich": "yarn build:feature-rich && jest src/tests/base -t 'Feature Rich Jetton' && jest src/tests/feature-rich", + "test:shard": "yarn build:shard && jest src/tests/base -t 'Shard' && jest src/tests/shard", "deploy:base": "ts-node ./src/scripts/base.deploy.ts", "deploy:governace": "ts-node ./src/scripts/governance.deploy.ts", "read": "ts-node ./src/scripts/contract.read.ts", diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index 154a752..e3e1531 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -1,3 +1,5 @@ +const prefix_length: Int = 8; + struct ShardDeployParameters { /// An 8-bit value that configures how to send a message, defaults to 0. /// See: https://docs.tact-lang.org/book/message-mode diff --git a/src/contracts/shard/constants.tact b/src/contracts/shard/constants.tact index a7da380..c1e0ebb 100644 --- a/src/contracts/shard/constants.tact +++ b/src/contracts/shard/constants.tact @@ -1,5 +1,4 @@ -const gasForBurn: Int = 6700; -const gasForTransfer: Int = 10500; +const gasForBurn: Int = 7473; +const gasForTransfer: Int = 10877; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future -const Basechain: Int = 0; -const prefix_length: Int = 8; \ No newline at end of file +const Basechain: Int = 0; \ No newline at end of file diff --git a/src/tests/base/extended.spec.ts b/src/tests/base/extended.spec.ts index 536c189..e9f95a4 100644 --- a/src/tests/base/extended.spec.ts +++ b/src/tests/base/extended.spec.ts @@ -4,6 +4,8 @@ import {ExtendedJettonWallet} from "../../wrappers/ExtendedJettonWallet" import {ExtendedJettonMinter} from "../../wrappers/ExtendedJettonMinter" import {ExtendedFeatureRichJettonWallet} from "../../wrappers/ExtendedFeatureRichJettonWallet" import {ExtendedFeatureRichJettonMinter} from "../../wrappers/ExtendedFeatureRichJettonMinter" +import {ExtendedShardedJettonWallet} from "../../wrappers/ExtendedShardedJettonWallet" +import {ExtendedShardedJettonMinter} from "../../wrappers/ExtendedShardedJettonMinter" import {findTransactionRequired, randomAddress} from "@ton/test-utils" import { computeGasFee, @@ -36,6 +38,11 @@ describe.each([ MinterWrapper: ExtendedFeatureRichJettonMinter, WalletWrapper: ExtendedFeatureRichJettonWallet, }, + // { + // name: "Shard Jetton", + // MinterWrapper: ExtendedShardedJettonMinter, + // WalletWrapper: ExtendedShardedJettonWallet, + // }, ])("$name", ({MinterWrapper, WalletWrapper}) => { let blockchain: Blockchain let jettonMinter: SandboxContract> @@ -91,12 +98,13 @@ describe.each([ jettonWallet = blockchain.openContract( await WalletWrapper.fromInit(deployer.address, jettonMinter.address, 0n), ) - const walletCode = jettonWallet.init?.code - if (walletCode === undefined) { - throw new Error("JettonWallet init is not defined") - } else { - _jwallet_code = walletCode - } + + _jwallet_code = (await WalletWrapper.fromInit(deployer.address, jettonMinter.address, 0n)) + .init?.code! + + console.log(_jwallet_code.hash().toString("hex")) + + console.log(jettonWallet.init?.code.hash().toString("hex")) userWallet = async (address: Address) => { return blockchain.openContract( @@ -209,6 +217,7 @@ describe.each([ 0n, toNano(1), ) + const deployerJettonWallet = await userWallet(deployer.address) const jettonBalance = await deployerJettonWallet.getJettonBalance() @@ -226,10 +235,14 @@ describe.each([ $$type: "VerifyInfo", owner: deployer.address, minter: jettonMinter.address, + // code: Cell.fromHex("b5ee9c72010210010004ef00022cff008e88f4a413f4bcf2c80bed53208e8130e1ed43d901020033a65ec0bb51343e903e903e8015481b04fe0a95185014901b0d20049401d072d721d200d200fa4021103450666f04f86102f862ed44d0fa40fa40fa0055206c1304e30202d70d1ff2e0822182100f8a7ea5bae302218210178d4519bae3022182107ac8d559ba0304050600b2028020d7217021d749c21f9430d31f01de208210178d4519ba8e1930d33ffa00596c2113a0c855205acf1658cf1601fa02c9ed54e082107bdd97deba8e18d33ffa00596c2113a0c855205acf1658cf1601fa02c9ed54e05f0401fe31d33ffa00fa4020d70b01c30093fa40019472d7216de201f404fa0051661615144330323622fa4430f2d08a8123fff8425280c705f2f45183a181093e21c2fff2f428f404016e913091d1e2f8416f2429b8a4541432817d7106fa40fa0071d721fa00fa00306c6170f83a12a85280a081290470f836aa008208989680a0a00701f831d33ffa00fa4020d70b01c30093fa40019472d7216de201fa00515515144330365183a0532770f82ac855215acf1658cf1601fa02c9f842fa443159c87101cb007801cb047001cb0012f400f4007001cb00c9f900206ef2d08084f7b00184f7b0ba9a8123fff84229c705f2f4dff8416f2421f8276f1021a12ec2000902fe8e6331fa40d200596d339931f82a4330126f0301926c22e259c8598210ca77fdc25003cb1f01fa02216eb38e137f01ca0001206ef2d0806f235acf1658cf16cc947032ca00e2c90170804043137fc8cf8580ca00cf8440ce01fa02806acf40f400c901fb00e0218210595f07bcbae302333302820b93b1cebae3025bf2c0820d0e01b4bcf2f450437080407f294813509cc855508210178d45195007cb1f15cb3f5003fa0201cf1601206e9430cf848092cf16e201fa0201cf16c9543167f82ac855215acf1658cf1601fa02c9f84278d70130106910491056103510340800d03333c87101cb007801cb047001cb00f40012f4007001cb00c9c87401cb027001cb0721f90084f7b003aaf713b158cbffc9d0fa4431c87401cb027001cb07cbffc9d0c8801801cb0501cf1670fa027701cb6bccccc901fb0002c855205acf1658cf1601fa02c9ed5403fa8e5c5531fa40fa0071d721fa00fa00306c6170f83a52b0a012a17170284813507ac8553082107362d09c5005cb1f13cb3f01fa0201cf1601cf16c92804103b4655441359c8cf8580ca00cf8440ce01fa02806acf40f400c901fb0006503396107e106b6c82e28208989680b60972fb02256eb39320c2009170e2e30f020a0b0c007205206ef2d0808100827003c8018210d53276db58cb1fcb3fc9102410374170441359c8cf8580ca00cf8440ce01fa02806acf40f400c901fb0000045b33001ec855205acf1658cf1601fa02c9ed5401c831d33ffa0020d70b01c30093fa40019472d7216de201f404553030338123fff8425250c705f2f45155a181093e21c2fff2f4f8416f2443305230fa40fa0071d721fa00fa00306c6170f83a817d71811a2c70f836aa0012a012bcf2f47080405413757f060f006cfa4001318123fff84213c70512f2f482089896808010fb027083066d40037fc8cf8580ca00cf8440ce01fa02806acf40f400c901fb0000a0c8553082107bdd97de5005cb1f13cb3f01fa0201cf1601206e9430cf848092cf16e2c9254744441359c8cf8580ca00cf8440ce01fa02806acf40f400c901fb0002c855205acf1658cf1601fa02c9ed54"), code: _jwallet_code, }, } + // console.log((await blockchain.getContract(deployerJettonWallet.address)).accountState) + console.log(_jwallet_code.hash().toString("hex")) + // expect(_jwallet_code).toBe((await blockchain.getContract(deployerJettonWallet.address)).accountState) expect(provideResult.transactions).toHaveTransaction({ from: deployerJettonWallet.address, to: notDeployer.address, diff --git a/src/tests/base/jetton.spec.ts b/src/tests/base/jetton.spec.ts index 5f0ac9e..b20efb5 100644 --- a/src/tests/base/jetton.spec.ts +++ b/src/tests/base/jetton.spec.ts @@ -4,6 +4,8 @@ import {ExtendedJettonWallet} from "../../wrappers/ExtendedJettonWallet" import {ExtendedJettonMinter} from "../../wrappers/ExtendedJettonMinter" import {ExtendedFeatureRichJettonWallet} from "../../wrappers/ExtendedFeatureRichJettonWallet" import {ExtendedFeatureRichJettonMinter} from "../../wrappers/ExtendedFeatureRichJettonMinter" +import {ExtendedShardedJettonWallet} from "../../wrappers/ExtendedShardedJettonWallet" +import {ExtendedShardedJettonMinter} from "../../wrappers/ExtendedShardedJettonMinter" import { JettonUpdateContent, @@ -36,6 +38,11 @@ describe.each([ MinterWrapper: ExtendedFeatureRichJettonMinter, WalletWrapper: ExtendedFeatureRichJettonWallet, }, + { + name: "Shard Jetton", + MinterWrapper: ExtendedShardedJettonMinter, + WalletWrapper: ExtendedShardedJettonWallet, + }, ])("$name", ({MinterWrapper, WalletWrapper}) => { let blockchain: Blockchain let jettonMinter: SandboxContract> diff --git a/src/tests/shard/shard.spec.ts b/src/tests/shard/shard.spec.ts new file mode 100644 index 0000000..c3fbc29 --- /dev/null +++ b/src/tests/shard/shard.spec.ts @@ -0,0 +1,67 @@ +import {Address, beginCell, Cell, toNano} from "@ton/core" +import {Blockchain, BlockchainSnapshot, SandboxContract, TreasuryContract} from "@ton/sandbox" +import "@ton/test-utils" + +import {JettonUpdateContent, prefix_length} from "../../output/Jetton_JettonMinter" +import {ExtendedShardedJettonMinter} from "../../wrappers/ExtendedShardedJettonMinter" +import {ExtendedShardedJettonWallet} from "../../wrappers/ExtendedShardedJettonWallet" + +// this is test suite for shard jetton minter +describe("Shard Jetton Minter", () => { + let blockchain: Blockchain + let jettonMinter: SandboxContract + let deployer: SandboxContract + + let userWallet: (address: Address) => Promise> + let defaultContent: Cell + let snapshot: BlockchainSnapshot + beforeAll(async () => { + blockchain = await Blockchain.create() + deployer = await blockchain.treasury("deployer") + + defaultContent = beginCell().endCell() + const msg: JettonUpdateContent = { + $$type: "JettonUpdateContent", + queryId: 0n, + content: defaultContent, + } + + jettonMinter = blockchain.openContract( + await ExtendedShardedJettonMinter.fromInit(0n, deployer.address, defaultContent), + ) + + const deployResult = await jettonMinter.send( + deployer.getSender(), + {value: toNano("0.1")}, + msg, + ) + + expect(deployResult.transactions).toHaveTransaction({ + from: deployer.address, + to: jettonMinter.address, + deploy: true, + success: true, + }) + + userWallet = async (address: Address) => { + return blockchain.openContract( + new ExtendedShardedJettonWallet(await jettonMinter.getGetWalletAddress(address)), + ) + } + + snapshot = blockchain.snapshot() + }) + + beforeEach(async () => { + await blockchain.loadFrom(snapshot) + }) + + it("should deploy in the same shard", async () => { + const wallet = await userWallet(deployer.address) + const walletHash = BigInt("0x" + wallet.address.hash.toString("hex")) + const deployerHash = BigInt("0x" + deployer.address.hash.toString("hex")) + expect(walletHash >> BigInt(256n - prefix_length)).toBe( + deployerHash >> BigInt(256n - prefix_length), + ) // compare only first prefix_length bits + }) +}) diff --git a/src/wrappers/ExtendedShardedJettonMinter.ts b/src/wrappers/ExtendedShardedJettonMinter.ts new file mode 100644 index 0000000..b05672a --- /dev/null +++ b/src/wrappers/ExtendedShardedJettonMinter.ts @@ -0,0 +1,194 @@ +import { + ChangeOwner, + ClaimTON, + gasForBurn, + gasForTransfer, + JettonMinter, + JettonUpdateContent, + Mint, + minTonsForStorage, + ProvideWalletAddress, + storeMint, +} from "../output/Shard_JettonMinter" +import {Address, beginCell, Cell, ContractProvider, Sender, toNano} from "@ton/core" + +export class ExtendedShardedJettonMinter extends JettonMinter { + constructor(address: Address, init?: {code: Cell; data: Cell}) { + super(address, init) + } + + static async fromInit(totalSupply: bigint, owner: Address, jettonContent: Cell) { + const base = await JettonMinter.fromInit(totalSupply, owner, jettonContent, true) + if (base.init === undefined) { + throw new Error("JettonMinter init is not defined") + } + return new ExtendedShardedJettonMinter(base.address, { + code: base.init.code, + data: base.init.data, + }) + } + + async getTotalSupply(provider: ContractProvider): Promise { + const res = await this.getGetJettonData(provider) + return res.totalSupply + } + + async getWalletAddress(provider: ContractProvider, owner: Address): Promise
{ + return this.getGetWalletAddress(provider, owner) + } + + async getAdminAddress(provider: ContractProvider): Promise
{ + const res = await this.getGetJettonData(provider) + return res.adminAddress + } + + async getContent(provider: ContractProvider): Promise { + const res = await this.getGetJettonData(provider) + return res.jettonContent + } + + /** + * Sends a mint message to the Jetton Minter contract to mint new Jettons for a specified recipient. + * + * @param provider - The contract provider used to interact with the blockchain. + * @param via - The sender object representing the wallet or account initiating the mint operation. + * @param to - The recipient address to which the newly minted Jettons will be sent. + * @param jettonAmount - The amount of Jettons to mint. + * @param forwardTonAmount - The amount of TONs to forward to the recipient along with the Jettons. + * @param totalTonAmount - The total amount of TONs to attach to the mint operation for fees and forwarding. + * + * @throws {Error} If the `totalTonAmount` is less than or equal to the `forwardTonAmount`. + * + * @returns A promise that resolves when the mint message has been sent. + * + * @example + * await jettonMinter.sendMint( + * provider, + * sender, + * recipientAddress, + * toNano("1000"), // Jetton amount + * toNano("0.05"), // Forward TON amount + * toNano("0.1"), // Total TON amount + * ); + */ + async sendMint( + provider: ContractProvider, + via: Sender, + to: Address, + jettonAmount: bigint, + forwardTonAmount: bigint, + totalTonAmount: bigint, + ): Promise { + if (totalTonAmount <= forwardTonAmount) { + throw new Error("Total TON amount should be greater than the forward amount") + } + const msg: Mint = { + $$type: "Mint", + queryId: 0n, + receiver: to, + tonAmount: totalTonAmount, + mintMessage: { + $$type: "JettonTransferInternal", + queryId: 0n, + amount: jettonAmount, + sender: this.address, + responseDestination: this.address, + forwardTonAmount: forwardTonAmount, + forwardPayload: beginCell().storeUint(0, 1).asSlice(), + }, + } + return this.send(provider, via, {value: totalTonAmount + toNano("0.015")}, msg) + } + + async sendChangeAdmin( + provider: ContractProvider, + via: Sender, + newOwner: Address, + ): Promise { + const msg: ChangeOwner = { + $$type: "ChangeOwner", + queryId: 0n, + newOwner: newOwner, + } + return this.send(provider, via, {value: toNano("0.05")}, msg) + } + + async sendChangeContent(provider: ContractProvider, via: Sender, content: Cell): Promise { + const msg: JettonUpdateContent = { + $$type: "JettonUpdateContent", + queryId: 0n, + content: content, + } + return this.send(provider, via, {value: toNano("0.05")}, msg) + } + + async sendDiscovery( + provider: ContractProvider, + via: Sender, + address: Address, + includeAddress: boolean, + value: bigint = toNano("0.1"), + ): Promise { + const msg: ProvideWalletAddress = { + $$type: "ProvideWalletAddress", + queryId: 0n, + ownerAddress: address, + includeAddress: includeAddress, + } + return this.send(provider, via, {value: value}, msg) + } + + async sendClaimTon( + provider: ContractProvider, + via: Sender, + address: Address, + value: bigint = toNano("0.1"), + ): Promise { + const msg: ClaimTON = { + $$type: "ClaimTON", + receiver: address, + } + return this.send(provider, via, {value: value}, msg) + } + + loadMintMessage( + mintAmount: bigint, + receiver: Address, + sender: Address, + responseDestination: Address, + forwardTonAmount: bigint, + forwardPayload: Cell | null, + ): Cell { + return beginCell() + .store( + storeMint({ + $$type: "Mint", + mintMessage: { + $$type: "JettonTransferInternal", + amount: mintAmount, + sender: sender, + responseDestination: responseDestination, + queryId: 0n, + forwardTonAmount: forwardTonAmount, + forwardPayload: beginCell().storeMaybeRef(forwardPayload).asSlice(), + }, + queryId: 0n, + receiver: receiver, + tonAmount: forwardTonAmount, + }), + ) + .endCell() + } + + loadGasForBurn(): bigint { + return gasForBurn + } + + loadGasForTransfer(): bigint { + return gasForTransfer + } + + loadMinTonsForStorage(): bigint { + return minTonsForStorage + } +} diff --git a/src/wrappers/ExtendedShardedJettonWallet.ts b/src/wrappers/ExtendedShardedJettonWallet.ts new file mode 100644 index 0000000..07db1d2 --- /dev/null +++ b/src/wrappers/ExtendedShardedJettonWallet.ts @@ -0,0 +1,148 @@ +import {ClaimTON, JettonTransfer, JettonWallet} from "../output/Jetton_JettonWallet" +import {Address, Builder, Cell, ContractProvider, Sender, toNano} from "@ton/core" +import {JettonBurn, ProvideWalletBalance} from "../output/Shard_JettonMinter" + +export class ExtendedShardedJettonWallet extends JettonWallet { + constructor(address: Address, init?: {code: Cell; data: Cell}) { + super(address, init) + } + + static async fromInit(owner: Address, minter: Address, balance: bigint) { + const base = await JettonWallet.fromInit(owner, minter, balance) + if (base.init === undefined) { + throw new Error("JettonWallet init is not defined") + } + return new ExtendedShardedJettonWallet(base.address, { + code: base.init.code, + data: base.init.data, + }) + } + + getJettonBalance = async (provider: ContractProvider): Promise => { + const state = await provider.getState() + if (state.state.type !== "active") { + return 0n + } + return (await this.getGetWalletData(provider)).balance + } + + /** + * Sends a Jetton transfer message from this wallet to a specified recipient. + * + * @param provider - The contract provider used to interact with the blockchain. Automatically passed by the test environment proxy + * @param via - The sender object representing the wallet or account initiating the transfer. + * @param value - The amount of TONs to attach to the transfer for fees and forwarding. + * @param jettonAmount - The amount of Jettons to transfer. + * @param to - The recipient address to which the Jettons will be sent. + * @param responseAddress - The address to receive the response from the transfer operation (Jetton excesses) + * @param customPayload - An optional custom payload to include in the transfer message. + * @param forwardTonAmount - The amount of TONs to forward to the recipient along with the Jettons. + * @param forwardPayload - An optional payload to include in the forwarded message to the recipient. + * + * @returns A promise that resolves when the transfer message has been sent, returns SendResult. + * + * @example + * await jettonWallet.sendTransfer( + * provider, + * sender, + * toNano("0.05"), + * toNano("100"), + * recipientAddress, + * responseAddress, + * null, + * toNano("0.01"), + * null + * ); + */ + sendTransfer = async ( + provider: ContractProvider, + via: Sender, + value: bigint, + jettonAmount: bigint, + to: Address, + responseAddress: Address, + customPayload: Cell | null, + forwardTonAmount: bigint, + forwardPayload: Cell | null, + ): Promise => { + const parsedForwardPayload = + forwardPayload != null + ? forwardPayload.beginParse() + : new Builder().storeUint(0, 1).endCell().beginParse() + + const msg: JettonTransfer = { + $$type: "JettonTransfer", + queryId: 0n, + amount: jettonAmount, + destination: to, + responseDestination: responseAddress, + customPayload: customPayload, + forwardTonAmount: forwardTonAmount, + forwardPayload: parsedForwardPayload, + } + + await this.send(provider, via, {value}, msg) + } + + sendBurn = async ( + provider: ContractProvider, + via: Sender, + value: bigint, + jettonAmount: bigint, + responseAddress: Address | null, + customPayload: Cell | null, + ): Promise => { + const msg: JettonBurn = { + $$type: "JettonBurn", + queryId: 0n, + amount: jettonAmount, + responseDestination: responseAddress, + customPayload: customPayload, + } + + await this.send(provider, via, {value}, msg) + } + + sendProvideWalletBalance = async ( + provider: ContractProvider, + via: Sender, + value: bigint, + receiver: Address, + includeInfo: boolean, + ): Promise => { + const msg: ProvideWalletBalance = { + $$type: "ProvideWalletBalance", + receiver: receiver, + includeVerifyInfo: includeInfo, + } + + await this.send(provider, via, {value}, msg) + } + + async sendClaimTon( + provider: ContractProvider, + via: Sender, + address: Address, + value: bigint = toNano("0.1"), + ): Promise { + const msg: ClaimTON = { + $$type: "ClaimTON", + receiver: address, + } + return this.send(provider, via, {value: value}, msg) + } + + // for compatibility with the reference implementation tests + sendWithdrawTons = async (_provider: ContractProvider, _via: Sender): Promise => { + throw new Error("Not implemented") + } + + sendWithdrawJettons = async ( + _provider: ContractProvider, + _via: Sender, + _from: Address, + _amount: bigint, + ): Promise => { + throw new Error("Not implemented") + } +} From b1a918d7ed890735de0075e613e096d214d2cdd8 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 02:33:28 +0300 Subject: [PATCH 06/27] revert base minter --- src/contracts/base/jetton-minter.tact | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/contracts/base/jetton-minter.tact b/src/contracts/base/jetton-minter.tact index b4d2604..36eb15e 100644 --- a/src/contracts/base/jetton-minter.tact +++ b/src/contracts/base/jetton-minter.tact @@ -3,7 +3,6 @@ import "./messages"; import "./constants"; import "../utils.tact"; import "../utils"; -import "../shard-utils"; struct JettonMinterState { totalSupply: Int as coins; @@ -42,10 +41,6 @@ contract JettonMinter( self.totalSupply += msg.mintMessage.amount; - let receiverSlice = msg.receiver.asSlice(); - let _ = receiverSlice.loadUint(11); // skip workchain - let receiverPrefix = receiverSlice.loadUint(prefix_length); - // basechain destination is calculated inside deploy function deploy(DeployParameters { value: 0, // ignore msg.tonAmount and use SendMode 64 instead @@ -59,10 +54,6 @@ contract JettonMinter( receive(msg: ProvideWalletAddress) { let ownerWorkchain: Int = parseStdAddress(msg.ownerAddress.asSlice()).workchain; - let ownerSlice = msg.ownerAddress.asSlice(); - let _ = ownerSlice.loadUint(11); // skip workchain - let ownerPrefix = ownerSlice.loadUint(prefix_length); - // If owner is basechain address, we can calculate jettonWallet let targetJettonWallet: BasechainAddress = (ownerWorkchain == Basechain) ? contractBasechainAddress(getJettonWalletInit(msg.ownerAddress)) From ed1b0fa6681e35726bcab99654dc444926cc2db8 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 02:51:19 +0300 Subject: [PATCH 07/27] pobeda?? --- src/tests/base/extended.spec.ts | 38 ++++----- src/tests/shard/shard.spec.ts | 2 +- yarn.lock | 145 ++++++++++++-------------------- 3 files changed, 74 insertions(+), 111 deletions(-) diff --git a/src/tests/base/extended.spec.ts b/src/tests/base/extended.spec.ts index e9f95a4..20f2828 100644 --- a/src/tests/base/extended.spec.ts +++ b/src/tests/base/extended.spec.ts @@ -23,26 +23,28 @@ import { storeJettonTransfer, storeTakeWalletBalance, TakeWalletBalance, -} from "../../output/Jetton_JettonMinter" +} from "../../output/Shard_JettonMinter" +import {JettonWallet} from "../../output/Shard_JettonWallet" + import {getComputeGasForTx} from "../../utils/gas" // Use describe.each to parameterize the test suite for both base and feature-rich jetton versions describe.each([ - { - name: "Base Jetton", - MinterWrapper: ExtendedJettonMinter, - WalletWrapper: ExtendedJettonWallet, - }, - { - name: "Feature Rich Jetton", - MinterWrapper: ExtendedFeatureRichJettonMinter, - WalletWrapper: ExtendedFeatureRichJettonWallet, - }, // { - // name: "Shard Jetton", - // MinterWrapper: ExtendedShardedJettonMinter, - // WalletWrapper: ExtendedShardedJettonWallet, + // name: "Base Jetton", + // MinterWrapper: ExtendedJettonMinter, + // WalletWrapper: ExtendedJettonWallet, // }, + // { + // name: "Feature Rich Jetton", + // MinterWrapper: ExtendedFeatureRichJettonMinter, + // WalletWrapper: ExtendedFeatureRichJettonWallet, + // }, + { + name: "Shard Jetton", + MinterWrapper: ExtendedShardedJettonMinter, + WalletWrapper: ExtendedShardedJettonWallet, + }, ])("$name", ({MinterWrapper, WalletWrapper}) => { let blockchain: Blockchain let jettonMinter: SandboxContract> @@ -99,13 +101,9 @@ describe.each([ await WalletWrapper.fromInit(deployer.address, jettonMinter.address, 0n), ) - _jwallet_code = (await WalletWrapper.fromInit(deployer.address, jettonMinter.address, 0n)) + _jwallet_code = (await JettonWallet.fromInit(deployer.address, jettonMinter.address, 0n)) .init?.code! - console.log(_jwallet_code.hash().toString("hex")) - - console.log(jettonWallet.init?.code.hash().toString("hex")) - userWallet = async (address: Address) => { return blockchain.openContract( new WalletWrapper(await jettonMinter.getGetWalletAddress(address)), @@ -241,7 +239,7 @@ describe.each([ } // console.log((await blockchain.getContract(deployerJettonWallet.address)).accountState) - console.log(_jwallet_code.hash().toString("hex")) + // console.log(_jwallet_code.hash().toString("hex")) // expect(_jwallet_code).toBe((await blockchain.getContract(deployerJettonWallet.address)).accountState) expect(provideResult.transactions).toHaveTransaction({ from: deployerJettonWallet.address, diff --git a/src/tests/shard/shard.spec.ts b/src/tests/shard/shard.spec.ts index c3fbc29..4ea6c4f 100644 --- a/src/tests/shard/shard.spec.ts +++ b/src/tests/shard/shard.spec.ts @@ -2,7 +2,7 @@ import {Address, beginCell, Cell, toNano} from "@ton/core" import {Blockchain, BlockchainSnapshot, SandboxContract, TreasuryContract} from "@ton/sandbox" import "@ton/test-utils" -import {JettonUpdateContent, prefix_length} from "../../output/Jetton_JettonMinter" +import {JettonUpdateContent, prefix_length} from "../../output/Shard_JettonMinter" import {ExtendedShardedJettonMinter} from "../../wrappers/ExtendedShardedJettonMinter" import {ExtendedShardedJettonWallet} from "../../wrappers/ExtendedShardedJettonWallet" diff --git a/yarn.lock b/yarn.lock index 2101edc..87f3a10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -125,7 +125,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.27.1": +"@babel/helper-validator-identifier@^7.24.7", "@babel/helper-validator-identifier@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== @@ -726,7 +726,7 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.5.1", "@eslint-community/eslint-utils@^4.7.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.7.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== @@ -747,10 +747,12 @@ debug "^4.3.1" minimatch "^3.1.2" -"@eslint/config-helpers@^0.2.1": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.2.tgz#3779f76b894de3a8ec4763b79660e6d54d5b1010" - integrity sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg== +"@eslint/core@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e" + integrity sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg== + dependencies: + "@types/json-schema" "^7.0.15" "@eslint/core@^0.13.0": version "0.13.0" @@ -759,7 +761,7 @@ dependencies: "@types/json-schema" "^7.0.15" -"@eslint/eslintrc@^3.3.1": +"@eslint/eslintrc@^3.3.0": version "3.3.1" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== @@ -784,7 +786,7 @@ resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== -"@eslint/plugin-kit@^0.2.7", "@eslint/plugin-kit@^0.2.8": +"@eslint/plugin-kit@^0.2.7": version "0.2.8" resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz#47488d8f8171b5d4613e833313f3ce708e3525f8" integrity sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA== @@ -1075,22 +1077,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@modelcontextprotocol/sdk@^1.8.0": - version "1.11.2" - resolved "https://registry.yarnpkg.com/@modelcontextprotocol/sdk/-/sdk-1.11.2.tgz#d81784c140d1a9cc937f61af9f071d8b78befe30" - integrity sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ== - dependencies: - content-type "^1.0.5" - cors "^2.8.5" - cross-spawn "^7.0.3" - eventsource "^3.0.2" - express "^5.0.1" - express-rate-limit "^7.5.0" - pkce-challenge "^5.0.0" - raw-body "^3.0.0" - zod "^3.23.8" - zod-to-json-schema "^3.24.1" - "@multiformats/murmur3@^1.0.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-1.1.3.tgz#70349166992e5f981f1ddff0200fa775b2bf6606" @@ -1256,7 +1242,7 @@ "@smithy/util-buffer-from" "^2.2.0" tslib "^2.6.2" -"@tact-lang/compiler@^1.6.7", "@tact-lang/compiler@~1.6.6": +"@tact-lang/compiler@1.6.7", "@tact-lang/compiler@~1.6.6": version "1.6.7" resolved "https://registry.yarnpkg.com/@tact-lang/compiler/-/compiler-1.6.7.tgz#5c4c134f4c765d59ede61124504226a04f443e3a" integrity sha512-SOAg0xnjobbA1KStH56faiZknczpqKtFp+IHcsKwwbPuYLUVdaygt8Wp++NYYYETSrRW5ysMPb96HPSqWY/tYg== @@ -1270,6 +1256,15 @@ path-normalize "^6.0.13" zod "^3.22.4" +"@tact-lang/deployer@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@tact-lang/deployer/-/deployer-0.2.0.tgz#8819cf76e0521a4f467ad4129c51423bbfc4dec8" + integrity sha512-OIRydgnetFyrAxQefubGiy2L77cngmDNcKkuKIuzxuPCanmmVJvUEg6tDdRfhTaP1z+a4WbFPsHiDH3CslESRw== + dependencies: + axios "^1.3.4" + form-data "^4.0.0" + zod "^3.20.6" + "@tact-lang/opcode@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@tact-lang/opcode/-/opcode-0.3.1.tgz#bd9c7b10771f7a100fe2e5e5f18b33350225dc96" @@ -1278,6 +1273,11 @@ "@ton/core" "^0.60.0" "@ton/crypto" "^3.3.0" +"@tact-lang/ton-abi@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@tact-lang/ton-abi/-/ton-abi-0.0.3.tgz#68aa8ecf8e14d91f37252773395753e4c623798e" + integrity sha512-n3ecmlwJiRI+4YKodc2/I3OsI14kYuxjPgFSWdNfr+GRMSZ76OvDIzq8Qr8k8iA3mSE+1RIplpluNnO9HCtgXg== + "@tact-lang/ton-jest@^0.0.4": version "0.0.4" resolved "https://registry.yarnpkg.com/@tact-lang/ton-jest/-/ton-jest-0.0.4.tgz#c87604669ed0c6b4ba1a2e6f06616e267f7fc8ca" @@ -1311,17 +1311,17 @@ resolved "https://registry.yarnpkg.com/@ton/sandbox/-/sandbox-0.30.0.tgz#8af17d60bee83d8b9a7050516b4b3286e12e5445" integrity sha512-fFqwZrMT0KVdWmc/GieBbV0xrs58bx+JUbcHTq/fGLP8dNAKqbnX9ddIT1jA0N8WFOIIAF9MDw0CeIc6h0C8tA== -"@ton/test-utils@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@ton/test-utils/-/test-utils-0.4.2.tgz#965429aaf3258a49cc8ba0ef6623867f2c8b8e27" - integrity sha512-fthY8Nrlmy8jnOl/vx6yjeKzzu62ZXMe7ej9Xg7rb4d3511V7dVQK+nw4YLSW5+dD/6WT03dFuNZXnuMYy5fHw== +"@ton/test-utils@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@ton/test-utils/-/test-utils-0.6.0.tgz#09e519cf2a209d22c8fb55746321a3e851469d1a" + integrity sha512-cy1X6261BVVlsBS05Y4ch3ZfddxJr7BVSPnORUVHILU2XtJaqS9txneEQlKHmyF0NUtec3NrtQskRKgHYD2/Fg== dependencies: node-inspect-extracted "^2.0.0" -"@ton/ton@^13.9.0": - version "13.11.2" - resolved "https://registry.yarnpkg.com/@ton/ton/-/ton-13.11.2.tgz#e40204df6a663fdf1b862dfe8ba2a91be3c0dddc" - integrity sha512-EPqW+ZTe0MmfqguJEIGMuAqTAFRKMEce95HlDx8h6CGn2y3jiMgV1/oO+WpDIOiX+1wnTu+xtajk8JTWr8nKRQ== +"@ton/ton@^15.2.1": + version "15.2.1" + resolved "https://registry.yarnpkg.com/@ton/ton/-/ton-15.2.1.tgz#be5a5b8576c4bae9e7ad52616b3092b6abcf7672" + integrity sha512-ICzozzATRfymkVfFVZrfVpKnCc5PLxAVeaB62mx/HsgllsjnR64UuoLuE6hqWHcA3/Hft9YLGdk2/rOHGZM6qA== dependencies: axios "^1.6.7" dataloader "^2.0.0" @@ -1329,6 +1329,11 @@ teslabot "^1.3.0" zod "^3.21.4" +"@tondevwallet/traces@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@tondevwallet/traces/-/traces-0.1.6.tgz#716ee5923c51ee8fd83b68f629d8773347e55cd4" + integrity sha512-/aOwNLBUCtgweNzHzRQ1cm1kweXn3Kv5/pUYKYDiyOyV9GPKCBdWp1lwc4t9hgr6WrzUOrbovJkqxH1hG2Mhcw== + "@tonstudio/parser-runtime@0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@tonstudio/parser-runtime/-/parser-runtime-0.0.1.tgz#469955fb7ea354d4fadaa5964359b11fd17f926b" @@ -1431,7 +1436,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.2.4": +"@types/jest@^29.5.14": version "29.5.14" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== @@ -1471,7 +1476,7 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.17.tgz#355ccec95f705b664e4332bb64a7f07db30b7055" integrity sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw== dependencies: - undici-types "~5.26.4" + undici-types "~6.21.0" "@types/normalize-package-data@^2.4.0": version "2.4.4" @@ -1483,10 +1488,10 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== -"@types/qs@^6.9.7": - version "6.9.17" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a" - integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ== +"@types/qs@^6.9.18": + version "6.9.18" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.18.tgz#877292caa91f7c1b213032b34626505b746624c2" + integrity sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA== "@types/stack-utils@^2.0.0": version "2.0.3" @@ -1943,22 +1948,10 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -builtin-modules@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-5.0.0.tgz#9be95686dedad2e9eed05592b07733db87dcff1a" - integrity sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg== - -bundle-name@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" - integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== - dependencies: - run-applescript "^7.0.0" - -bytes@3.1.2, bytes@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" @@ -2008,7 +2001,6 @@ chalk-template@^1.1.0: dependencies: chalk "^5.2.0" -chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2: chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -2022,11 +2014,6 @@ chalk@^5.2.0, chalk@^5.4.1: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== -chalk@^5.2.0, chalk@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" - integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -2977,6 +2964,11 @@ get-proto@^1.0.1: dunder-proto "^1.0.1" es-object-atoms "^1.0.0" +get-stdin@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" + integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -4215,14 +4207,7 @@ object-inspect@^1.13.3: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== -on-finished@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -4384,11 +4369,6 @@ pirates@^4.0.4: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== -pkce-challenge@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pkce-challenge/-/pkce-challenge-5.0.0.tgz#c3a405cb49e272094a38e890a2b51da0228c4d97" - integrity sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ== - pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -5062,21 +5042,11 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~6.21.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" - integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== - universalify@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - update-browserslist-db@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" @@ -5285,12 +5255,7 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod-to-json-schema@^3.24.1: - version "3.24.5" - resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz#d1095440b147fb7c2093812a53c54df8d5df50a3" - integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g== - -zod@^3.20.6, zod@^3.21.4, zod@^3.22.4, zod@^3.23.8, zod@^3.24.2: +zod@^3.20.6, zod@^3.21.4, zod@^3.22.4: version "3.24.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.4.tgz#e2e2cca5faaa012d76e527d0d36622e0a90c315f" integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg== From 6826816da115fd5c162ca15379c19f60b100e125 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 02:54:54 +0300 Subject: [PATCH 08/27] small fix --- src/tests/base/extended.spec.ts | 39 ++++++++++----------- src/wrappers/ExtendedShardedJettonWallet.ts | 2 +- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/tests/base/extended.spec.ts b/src/tests/base/extended.spec.ts index 20f2828..79e81db 100644 --- a/src/tests/base/extended.spec.ts +++ b/src/tests/base/extended.spec.ts @@ -6,6 +6,7 @@ import {ExtendedFeatureRichJettonWallet} from "../../wrappers/ExtendedFeatureRic import {ExtendedFeatureRichJettonMinter} from "../../wrappers/ExtendedFeatureRichJettonMinter" import {ExtendedShardedJettonWallet} from "../../wrappers/ExtendedShardedJettonWallet" import {ExtendedShardedJettonMinter} from "../../wrappers/ExtendedShardedJettonMinter" + import {findTransactionRequired, randomAddress} from "@ton/test-utils" import { computeGasFee, @@ -23,23 +24,21 @@ import { storeJettonTransfer, storeTakeWalletBalance, TakeWalletBalance, -} from "../../output/Shard_JettonMinter" -import {JettonWallet} from "../../output/Shard_JettonWallet" - +} from "../../output/Jetton_JettonMinter" import {getComputeGasForTx} from "../../utils/gas" // Use describe.each to parameterize the test suite for both base and feature-rich jetton versions describe.each([ - // { - // name: "Base Jetton", - // MinterWrapper: ExtendedJettonMinter, - // WalletWrapper: ExtendedJettonWallet, - // }, - // { - // name: "Feature Rich Jetton", - // MinterWrapper: ExtendedFeatureRichJettonMinter, - // WalletWrapper: ExtendedFeatureRichJettonWallet, - // }, + { + name: "Base Jetton", + MinterWrapper: ExtendedJettonMinter, + WalletWrapper: ExtendedJettonWallet, + }, + { + name: "Feature Rich Jetton", + MinterWrapper: ExtendedFeatureRichJettonMinter, + WalletWrapper: ExtendedFeatureRichJettonWallet, + }, { name: "Shard Jetton", MinterWrapper: ExtendedShardedJettonMinter, @@ -100,9 +99,12 @@ describe.each([ jettonWallet = blockchain.openContract( await WalletWrapper.fromInit(deployer.address, jettonMinter.address, 0n), ) - - _jwallet_code = (await JettonWallet.fromInit(deployer.address, jettonMinter.address, 0n)) - .init?.code! + const walletCode = jettonWallet.init?.code + if (walletCode === undefined) { + throw new Error("JettonWallet init is not defined") + } else { + _jwallet_code = walletCode + } userWallet = async (address: Address) => { return blockchain.openContract( @@ -215,7 +217,6 @@ describe.each([ 0n, toNano(1), ) - const deployerJettonWallet = await userWallet(deployer.address) const jettonBalance = await deployerJettonWallet.getJettonBalance() @@ -233,14 +234,10 @@ describe.each([ $$type: "VerifyInfo", owner: deployer.address, minter: jettonMinter.address, - // code: Cell.fromHex("b5ee9c72010210010004ef00022cff008e88f4a413f4bcf2c80bed53208e8130e1ed43d901020033a65ec0bb51343e903e903e8015481b04fe0a95185014901b0d20049401d072d721d200d200fa4021103450666f04f86102f862ed44d0fa40fa40fa0055206c1304e30202d70d1ff2e0822182100f8a7ea5bae302218210178d4519bae3022182107ac8d559ba0304050600b2028020d7217021d749c21f9430d31f01de208210178d4519ba8e1930d33ffa00596c2113a0c855205acf1658cf1601fa02c9ed54e082107bdd97deba8e18d33ffa00596c2113a0c855205acf1658cf1601fa02c9ed54e05f0401fe31d33ffa00fa4020d70b01c30093fa40019472d7216de201f404fa0051661615144330323622fa4430f2d08a8123fff8425280c705f2f45183a181093e21c2fff2f428f404016e913091d1e2f8416f2429b8a4541432817d7106fa40fa0071d721fa00fa00306c6170f83a12a85280a081290470f836aa008208989680a0a00701f831d33ffa00fa4020d70b01c30093fa40019472d7216de201fa00515515144330365183a0532770f82ac855215acf1658cf1601fa02c9f842fa443159c87101cb007801cb047001cb0012f400f4007001cb00c9f900206ef2d08084f7b00184f7b0ba9a8123fff84229c705f2f4dff8416f2421f8276f1021a12ec2000902fe8e6331fa40d200596d339931f82a4330126f0301926c22e259c8598210ca77fdc25003cb1f01fa02216eb38e137f01ca0001206ef2d0806f235acf1658cf16cc947032ca00e2c90170804043137fc8cf8580ca00cf8440ce01fa02806acf40f400c901fb00e0218210595f07bcbae302333302820b93b1cebae3025bf2c0820d0e01b4bcf2f450437080407f294813509cc855508210178d45195007cb1f15cb3f5003fa0201cf1601206e9430cf848092cf16e201fa0201cf16c9543167f82ac855215acf1658cf1601fa02c9f84278d70130106910491056103510340800d03333c87101cb007801cb047001cb00f40012f4007001cb00c9c87401cb027001cb0721f90084f7b003aaf713b158cbffc9d0fa4431c87401cb027001cb07cbffc9d0c8801801cb0501cf1670fa027701cb6bccccc901fb0002c855205acf1658cf1601fa02c9ed5403fa8e5c5531fa40fa0071d721fa00fa00306c6170f83a52b0a012a17170284813507ac8553082107362d09c5005cb1f13cb3f01fa0201cf1601cf16c92804103b4655441359c8cf8580ca00cf8440ce01fa02806acf40f400c901fb0006503396107e106b6c82e28208989680b60972fb02256eb39320c2009170e2e30f020a0b0c007205206ef2d0808100827003c8018210d53276db58cb1fcb3fc9102410374170441359c8cf8580ca00cf8440ce01fa02806acf40f400c901fb0000045b33001ec855205acf1658cf1601fa02c9ed5401c831d33ffa0020d70b01c30093fa40019472d7216de201f404553030338123fff8425250c705f2f45155a181093e21c2fff2f4f8416f2443305230fa40fa0071d721fa00fa00306c6170f83a817d71811a2c70f836aa0012a012bcf2f47080405413757f060f006cfa4001318123fff84213c70512f2f482089896808010fb027083066d40037fc8cf8580ca00cf8440ce01fa02806acf40f400c901fb0000a0c8553082107bdd97de5005cb1f13cb3f01fa0201cf1601206e9430cf848092cf16e2c9254744441359c8cf8580ca00cf8440ce01fa02806acf40f400c901fb0002c855205acf1658cf1601fa02c9ed54"), code: _jwallet_code, }, } - // console.log((await blockchain.getContract(deployerJettonWallet.address)).accountState) - // console.log(_jwallet_code.hash().toString("hex")) - // expect(_jwallet_code).toBe((await blockchain.getContract(deployerJettonWallet.address)).accountState) expect(provideResult.transactions).toHaveTransaction({ from: deployerJettonWallet.address, to: notDeployer.address, diff --git a/src/wrappers/ExtendedShardedJettonWallet.ts b/src/wrappers/ExtendedShardedJettonWallet.ts index 07db1d2..97c2acc 100644 --- a/src/wrappers/ExtendedShardedJettonWallet.ts +++ b/src/wrappers/ExtendedShardedJettonWallet.ts @@ -1,4 +1,4 @@ -import {ClaimTON, JettonTransfer, JettonWallet} from "../output/Jetton_JettonWallet" +import {ClaimTON, JettonTransfer, JettonWallet} from "../output/Shard_JettonWallet" import {Address, Builder, Cell, ContractProvider, Sender, toNano} from "@ton/core" import {JettonBurn, ProvideWalletBalance} from "../output/Shard_JettonMinter" From aca9194efebdcc3f687c4e627372a36d44b958dc Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 02:58:59 +0300 Subject: [PATCH 09/27] update yarnlock --- package.json | 7 +------ yarn.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index cb4e7e8..2e923b8 100644 --- a/package.json +++ b/package.json @@ -53,16 +53,11 @@ "@types/node": "^22.15.17", "@types/qs": "^6.9.18", "base64url": "^3.0.1", - "chalk": "4.1.2", - "cli-table3": "^0.6.5", - "cross-env": "^7.0.3", - "dotenv": "^16.4.5", "jest": "^29.3.1", "qs": "^6.11.0", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", - "typescript": "^4.9.4", - "yarn-deduplicate": "^6.0.2" + "typescript": "^4.9.4" }, "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e", "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 87f3a10..981f3d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2427,10 +2427,10 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -dotenv@^16.4.5: - version "16.4.7" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" - integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== +dotenv@^16.5.0: + version "16.5.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692" + integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== dunder-proto@^1.0.1: version "1.0.1" @@ -5037,10 +5037,10 @@ uint8arrays@^3.0.0: dependencies: multiformats "^9.4.2" -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== universalify@^2.0.0: version "2.0.1" From 4b45ee174fd81ade9882f508ae9e1a8475d04688 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 03:00:35 +0300 Subject: [PATCH 10/27] tact-fmt & get back husky --- .husky/pre-push | 12 ++++++------ src/contracts/shard-utils.tact | 7 ++----- src/contracts/shard/constants.tact | 2 +- src/contracts/shard/jetton-minter.tact | 6 +++--- src/contracts/shard/jetton-wallet.tact | 5 ++--- 5 files changed, 14 insertions(+), 18 deletions(-) diff --git a/.husky/pre-push b/.husky/pre-push index 6e6bb9e..dcd572b 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,7 +1,7 @@ -# #!/usr/bin/env sh -# . "$(dirname -- "$0")/_/husky.sh" +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" -# yarn lint:es -# yarn spell -# yarn fmt:check -# yarn tact-fmt --check ./src +yarn lint:es +yarn spell +yarn fmt:check +yarn tact-fmt --check ./src diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index e3e1531..722e59d 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -63,9 +63,7 @@ fun shardDeploy(params: ShardDeployParameters) { sendRawMessage(msg, params.mode); } - - -fun initToPrefixInit(init: StateInit): Cell { +fun initToPrefixInit(init: StateInit): Cell { let newStateInit = beginCell() .storeUint(1, 1) .storeUint(prefix_length, 5) @@ -82,9 +80,8 @@ inline fun contractBasechainAddressPrefix(s: StateInit): BasechainAddress { return newBasechainAddress(hash); } - inline extends fun hasSameBasechainAddressPrefix(self: StateInit, sender: Address): Bool { let senderAddress = parseStdAddress(sender.asSlice()).address; let baseAddress = contractBasechainAddressPrefix(self); return (baseAddress.hash!! & ((1 << (256 - prefix_length)) - 1)) == (senderAddress & ((1 << (256 - prefix_length)) - 1)); -} \ No newline at end of file +} diff --git a/src/contracts/shard/constants.tact b/src/contracts/shard/constants.tact index c1e0ebb..c39c5fc 100644 --- a/src/contracts/shard/constants.tact +++ b/src/contracts/shard/constants.tact @@ -1,4 +1,4 @@ const gasForBurn: Int = 7473; const gasForTransfer: Int = 10877; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future -const Basechain: Int = 0; \ No newline at end of file +const Basechain: Int = 0; diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index e51bfa6..19fe1b7 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -47,7 +47,7 @@ contract JettonMinter( let receiverPrefix = receiverSlice.loadUint(prefix_length); // basechain destination is calculated inside deploy function - shardDeploy(ShardDeployParameters{ + shardDeploy(ShardDeployParameters { value: 0, // ignore msg.tonAmount and use SendMode 64 instead bounce: true, mode: SendRemainingValue | SendBounceIfActionFail, @@ -176,10 +176,10 @@ inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress { let init = getJettonWalletInit(jettonWalletOwner); - + let ownerSlice = jettonWalletOwner.asSlice(); let _ = ownerSlice.loadUint(11); // skip workchain let ownerPrefix = ownerSlice.loadUint(prefix_length); - return BasechainAddress{ hash: changeAddressHashPrefix(init.hash(), ownerPrefix) }; + return BasechainAddress { hash: changeAddressHashPrefix(init.hash(), ownerPrefix) }; } diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index ad25838..295028c 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -2,7 +2,6 @@ import "./messages"; import "./constants"; import "../shard-utils"; - contract JettonWallet( owner: Address, minter: Address, @@ -30,7 +29,7 @@ contract JettonWallet( let _ = destinationSlice.loadUint(11); // skip workchain let destinationPrefix = destinationSlice.loadUint(prefix_length); - shardDeploy(ShardDeployParameters{ + shardDeploy(ShardDeployParameters { value: 0, mode: SendRemainingValue, bounce: true, @@ -77,7 +76,7 @@ contract JettonWallet( } nativeReserve(max(tonBalanceBeforeMsg, minTonsForStorage), ReserveAtMost); // 0xd53276db -- Cashback to the original Sender - if (msg.responseDestination != null && msgValue > 0){ + if (msg.responseDestination != null && msgValue > 0) { message(MessageParameters { to: msg.responseDestination!!, value: msgValue, From 67ccea21db6c2157c085acc69dd6885ed54f9e58 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 03:02:17 +0300 Subject: [PATCH 11/27] update spell --- spell/custom-dictionary.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/spell/custom-dictionary.txt b/spell/custom-dictionary.txt index da4f4d1..9d71f19 100644 --- a/spell/custom-dictionary.txt +++ b/spell/custom-dictionary.txt @@ -25,3 +25,4 @@ tonweb utime workchain yada +Toncoins From 999ae0715335ba264c9674964fa69617b056075c Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 03:30:59 +0300 Subject: [PATCH 12/27] small update --- src/contracts/shard-utils.tact | 14 ++++++++++---- src/contracts/shard/constants.tact | 2 +- src/contracts/shard/jetton-minter.tact | 16 ++++------------ src/contracts/shard/jetton-wallet.tact | 6 ++---- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index 722e59d..5569e4b 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -21,14 +21,20 @@ struct ShardDeployParameters { /// See: https://docs.tact-lang.org/book/expressions#initof init: StateInit; - shard: Int as uint30; + /// The shard number to deploy the contract to. + shard: Int as uint8; } -fun changeAddressHashPrefix(addr_hash: Int, prefix: Int): Int { +inline fun changeAddressHashPrefix(addr_hash: Int, prefix: Int): Int { return (addr_hash & ((1 << (256 - prefix_length)) - 1)) | (prefix << (256 - prefix_length)); } -fun shardDeploy(params: ShardDeployParameters) { +inline fun getShardFromAddress(addr: Slice): Int { + addr.skipBits(11); + return addr.loadUint(prefix_length); +} + +inline fun shardDeploy(params: ShardDeployParameters) { let newStateInit = beginCell() .storeUint(1, 1) .storeUint(prefix_length, 5) @@ -63,7 +69,7 @@ fun shardDeploy(params: ShardDeployParameters) { sendRawMessage(msg, params.mode); } -fun initToPrefixInit(init: StateInit): Cell { +inline fun initToPrefixInit(init: StateInit): Cell { let newStateInit = beginCell() .storeUint(1, 1) .storeUint(prefix_length, 5) diff --git a/src/contracts/shard/constants.tact b/src/contracts/shard/constants.tact index c39c5fc..d6b96bb 100644 --- a/src/contracts/shard/constants.tact +++ b/src/contracts/shard/constants.tact @@ -1,4 +1,4 @@ -const gasForBurn: Int = 7473; +const gasForBurn: Int = 7481; const gasForTransfer: Int = 10877; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future const Basechain: Int = 0; diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index 19fe1b7..af5039d 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -42,9 +42,7 @@ contract JettonMinter( self.totalSupply += msg.mintMessage.amount; - let receiverSlice = msg.receiver.asSlice(); - let _ = receiverSlice.loadUint(11); // skip workchain - let receiverPrefix = receiverSlice.loadUint(prefix_length); + let receiverPrefix = getShardFromAddress(msg.receiver.asSlice()); // basechain destination is calculated inside deploy function shardDeploy(ShardDeployParameters { @@ -60,9 +58,7 @@ contract JettonMinter( receive(msg: ProvideWalletAddress) { let ownerWorkchain: Int = parseStdAddress(msg.ownerAddress.asSlice()).workchain; - let ownerSlice = msg.ownerAddress.asSlice(); - let _ = ownerSlice.loadUint(11); // skip workchain - let ownerPrefix = ownerSlice.loadUint(prefix_length); + let ownerPrefix = getShardFromAddress(msg.ownerAddress.asSlice()); // If owner is basechain address, we can calculate jettonWallet let targetJettonWallet: BasechainAddress = (ownerWorkchain == Basechain) @@ -161,9 +157,7 @@ inline fun getJettonWalletInit(address: Address): Cell { inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { let init = getJettonWalletInit(jettonWalletOwner); - let ownerSlice = jettonWalletOwner.asSlice(); - let _ = ownerSlice.loadUint(11); // skip workchain - let ownerPrefix = ownerSlice.loadUint(prefix_length); + let ownerPrefix = getShardFromAddress(jettonWalletOwner.asSlice()); let expectedAddr = beginCell() .storeUint(4, 3) @@ -177,9 +171,7 @@ inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress { let init = getJettonWalletInit(jettonWalletOwner); - let ownerSlice = jettonWalletOwner.asSlice(); - let _ = ownerSlice.loadUint(11); // skip workchain - let ownerPrefix = ownerSlice.loadUint(prefix_length); + let ownerPrefix = getShardFromAddress(jettonWalletOwner.asSlice()); return BasechainAddress { hash: changeAddressHashPrefix(init.hash(), ownerPrefix) }; } diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index 295028c..0cf9e20 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -25,9 +25,7 @@ contract JettonWallet( "Insufficient amount of TON attached", ); - let destinationSlice = msg.destination.asSlice(); - let _ = destinationSlice.loadUint(11); // skip workchain - let destinationPrefix = destinationSlice.loadUint(prefix_length); + let destinationPrefix = getShardFromAddress(msg.destination.asSlice()); shardDeploy(ShardDeployParameters { value: 0, @@ -51,7 +49,7 @@ contract JettonWallet( // This message should come only from master, or from other JettonWallet let wallet: StateInit = initOf JettonWallet(msg.sender, self.minter, 0); - if (!wallet.hasSameBasechainAddressPrefix(sender())) { + if (!wallet.hasSameBasechainAddressPrefix(sender())) { // TODO should we check exactly same address? require(self.minter == sender(), "Incorrect sender"); } let ctx: Context = context(); From a8bc35eef9a1299f9b8e2f6575a28bedb20d48a1 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 14:04:43 +0300 Subject: [PATCH 13/27] small update --- src/contracts/shard-utils.tact | 62 +++++++++++--------------- src/contracts/shard/constants.tact | 4 +- src/contracts/shard/jetton-minter.tact | 27 +++++------ src/contracts/shard/jetton-wallet.tact | 6 +-- src/tests/shard/shard.spec.ts | 8 ++-- src/utils/assert.ts | 10 ++++- 6 files changed, 53 insertions(+), 64 deletions(-) diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index 5569e4b..e38244e 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -1,4 +1,4 @@ -const prefix_length: Int = 8; +const prefixLength: Int = 8; struct ShardDeployParameters { /// An 8-bit value that configures how to send a message, defaults to 0. @@ -6,7 +6,7 @@ struct ShardDeployParameters { mode: Int = SendDefaultMode; /// Optional message body as a `Cell`. - body: Cell; + body: Cell?; /// The amount of nanoToncoins you want to send with /// the message. This value is used to cover forward fees, @@ -25,69 +25,57 @@ struct ShardDeployParameters { shard: Int as uint8; } -inline fun changeAddressHashPrefix(addr_hash: Int, prefix: Int): Int { - return (addr_hash & ((1 << (256 - prefix_length)) - 1)) | (prefix << (256 - prefix_length)); +inline fun changeAddressHashShard(addr_hash: Int, shard: Int): Int { + return (addr_hash & ((1 << (256 - prefixLength)) - 1)) | (shard << (256 - prefixLength)); } inline fun getShardFromAddress(addr: Slice): Int { addr.skipBits(11); - return addr.loadUint(prefix_length); + return addr.loadUint(prefixLength); } inline fun shardDeploy(params: ShardDeployParameters) { - let newStateInit = beginCell() - .storeUint(1, 1) - .storeUint(prefix_length, 5) - .storeUint(0, 1) - .storeMaybeRef(params.init.code) - .storeMaybeRef(params.init.data) - .storeUint(0, 1) - .endCell(); + let newStateInit = initToShardInit(params.init); let expectedAddr = beginCell() .storeUint(4, 3) .storeUint(0, 8) - .storeUint(changeAddressHashPrefix(newStateInit.hash(), params.shard), 256) // + .storeUint(changeAddressHashShard(newStateInit.hash(), params.shard), 256) .asSlice(); - let parsedAddr = parseStdAddress(expectedAddr); - let realAddr = beginCell() - .storeUint(4, 3) - .storeUint(0, 8) - .storeUint(parsedAddr.address, 256) // First 32 bits of address will be 0 - .asSlice(); let msg = beginCell() - .storeUint(0x18, 6) - .storeSlice(realAddr) - .storeCoins(0) - .storeUint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) + .storeUint(1, 2) // 0 1 + .storeBool(params.bounce) + .storeUint(0, 3) // 0 0 0 + .storeSlice(expectedAddr) + .storeCoins(params.value) + .storeUint(2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1) .storeRef(newStateInit) - .storeRef(params.body) + .storeMaybeRef(params.body) .endCell(); sendRawMessage(msg, params.mode); } -inline fun initToPrefixInit(init: StateInit): Cell { +inline fun initToShardInit(init: StateInit): Cell { let newStateInit = beginCell() - .storeUint(1, 1) - .storeUint(prefix_length, 5) - .storeUint(0, 1) - .storeMaybeRef(init.code) - .storeMaybeRef(init.data) - .storeUint(0, 1) + .storeUint(32 + prefixLength, 6) + .storeUint(6, 4) // 0 1 1 0 + .storeRef(init.code) + .storeRef(init.data) .endCell(); + return newStateInit; } -inline fun contractBasechainAddressPrefix(s: StateInit): BasechainAddress { - let hash = initToPrefixInit(s).hash(); +inline fun contractBasechainAddressShard(s: StateInit): BasechainAddress { + let hash = initToShardInit(s).hash(); return newBasechainAddress(hash); } -inline extends fun hasSameBasechainAddressPrefix(self: StateInit, sender: Address): Bool { +inline extends fun hasSameBasechainAddressShard(self: StateInit, sender: Address): Bool { let senderAddress = parseStdAddress(sender.asSlice()).address; - let baseAddress = contractBasechainAddressPrefix(self); - return (baseAddress.hash!! & ((1 << (256 - prefix_length)) - 1)) == (senderAddress & ((1 << (256 - prefix_length)) - 1)); + let baseAddress = contractBasechainAddressShard(self); + return (baseAddress.hash!! & ((1 << (256 - prefixLength)) - 1)) == (senderAddress & ((1 << (256 - prefixLength)) - 1)); } diff --git a/src/contracts/shard/constants.tact b/src/contracts/shard/constants.tact index d6b96bb..c1041e5 100644 --- a/src/contracts/shard/constants.tact +++ b/src/contracts/shard/constants.tact @@ -1,4 +1,4 @@ -const gasForBurn: Int = 7481; -const gasForTransfer: Int = 10877; +const gasForBurn: Int = 8000; +const gasForTransfer: Int = 11000; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future const Basechain: Int = 0; diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index af5039d..a6f5f07 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -42,7 +42,7 @@ contract JettonMinter( self.totalSupply += msg.mintMessage.amount; - let receiverPrefix = getShardFromAddress(msg.receiver.asSlice()); + let receiverShard = getShardFromAddress(msg.receiver.asSlice()); // basechain destination is calculated inside deploy function shardDeploy(ShardDeployParameters { @@ -51,18 +51,18 @@ contract JettonMinter( mode: SendRemainingValue | SendBounceIfActionFail, body: msg.mintMessage.toCell(), init: initOf JettonWallet(msg.receiver, myAddress(), 0), - shard: receiverPrefix, + shard: receiverShard, }); } receive(msg: ProvideWalletAddress) { let ownerWorkchain: Int = parseStdAddress(msg.ownerAddress.asSlice()).workchain; - let ownerPrefix = getShardFromAddress(msg.ownerAddress.asSlice()); + let ownerShard = getShardFromAddress(msg.ownerAddress.asSlice()); // If owner is basechain address, we can calculate jettonWallet let targetJettonWallet: BasechainAddress = (ownerWorkchain == Basechain) - ? BasechainAddress { hash: changeAddressHashPrefix(getJettonWalletInit(msg.ownerAddress).hash(), ownerPrefix) } + ? BasechainAddress { hash: changeAddressHashShard(getJettonWalletInit(msg.ownerAddress).hash(), ownerShard) } : emptyBasechainAddress(); message(MessageParameters { @@ -143,26 +143,19 @@ contract JettonMinter( inline fun getJettonWalletInit(address: Address): Cell { let init = initOf JettonWallet(address, myAddress(), 0); - - return beginCell() - .storeUint(1, 1) - .storeUint(prefix_length, 5) - .storeUint(0, 1) - .storeMaybeRef(init.code) - .storeMaybeRef(init.data) - .storeUint(0, 1) - .endCell(); + + return initToShardInit(init); } inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { let init = getJettonWalletInit(jettonWalletOwner); - let ownerPrefix = getShardFromAddress(jettonWalletOwner.asSlice()); + let ownerShard = getShardFromAddress(jettonWalletOwner.asSlice()); let expectedAddr = beginCell() .storeUint(4, 3) .storeUint(0, 8) - .storeUint(changeAddressHashPrefix(init.hash(), ownerPrefix), 256) + .storeUint(changeAddressHashShard(init.hash(), ownerShard), 256) .asSlice(); return expectedAddr.loadAddress(); @@ -171,7 +164,7 @@ inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress { let init = getJettonWalletInit(jettonWalletOwner); - let ownerPrefix = getShardFromAddress(jettonWalletOwner.asSlice()); + let ownerShard = getShardFromAddress(jettonWalletOwner.asSlice()); - return BasechainAddress { hash: changeAddressHashPrefix(init.hash(), ownerPrefix) }; + return BasechainAddress { hash: changeAddressHashShard(init.hash(), ownerShard) }; } diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index 0cf9e20..7601f0f 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -25,7 +25,7 @@ contract JettonWallet( "Insufficient amount of TON attached", ); - let destinationPrefix = getShardFromAddress(msg.destination.asSlice()); + let destinationShard = getShardFromAddress(msg.destination.asSlice()); shardDeploy(ShardDeployParameters { value: 0, @@ -40,7 +40,7 @@ contract JettonWallet( forwardPayload: msg.forwardPayload, }.toCell(), init: initOf JettonWallet(msg.destination, self.minter, 0), - shard: destinationPrefix, + shard: destinationShard, }); } @@ -49,7 +49,7 @@ contract JettonWallet( // This message should come only from master, or from other JettonWallet let wallet: StateInit = initOf JettonWallet(msg.sender, self.minter, 0); - if (!wallet.hasSameBasechainAddressPrefix(sender())) { // TODO should we check exactly same address? + if (!wallet.hasSameBasechainAddressShard(sender())) { // TODO should we check exactly same address? require(self.minter == sender(), "Incorrect sender"); } let ctx: Context = context(); diff --git a/src/tests/shard/shard.spec.ts b/src/tests/shard/shard.spec.ts index 4ea6c4f..8e9a1b3 100644 --- a/src/tests/shard/shard.spec.ts +++ b/src/tests/shard/shard.spec.ts @@ -2,7 +2,7 @@ import {Address, beginCell, Cell, toNano} from "@ton/core" import {Blockchain, BlockchainSnapshot, SandboxContract, TreasuryContract} from "@ton/sandbox" import "@ton/test-utils" -import {JettonUpdateContent, prefix_length} from "../../output/Shard_JettonMinter" +import {JettonUpdateContent, prefixLength} from "../../output/Shard_JettonMinter" import {ExtendedShardedJettonMinter} from "../../wrappers/ExtendedShardedJettonMinter" import {ExtendedShardedJettonWallet} from "../../wrappers/ExtendedShardedJettonWallet" @@ -60,8 +60,8 @@ describe("Shard Jetton Minter", () => { const wallet = await userWallet(deployer.address) const walletHash = BigInt("0x" + wallet.address.hash.toString("hex")) const deployerHash = BigInt("0x" + deployer.address.hash.toString("hex")) - expect(walletHash >> BigInt(256n - prefix_length)).toBe( - deployerHash >> BigInt(256n - prefix_length), - ) // compare only first prefix_length bits + expect(walletHash >> BigInt(256n - prefixLength)).toBe( + deployerHash >> BigInt(256n - prefixLength), + ) // compare only first prefixLength bits }) }) diff --git a/src/utils/assert.ts b/src/utils/assert.ts index 6f44259..ff57838 100644 --- a/src/utils/assert.ts +++ b/src/utils/assert.ts @@ -4,7 +4,15 @@ import chalk from "chalk" import {BlockchainTransaction} from "@ton/sandbox" import {flattenTransaction, FlatTransaction} from "@ton/test-utils" -type FlatTransactionValue = number | bigint | boolean | Address | Cell | AccountStatus | undefined +type FlatTransactionValue = + | number + | bigint + | boolean + | Address + | Cell + | AccountStatus + | [number, bigint][] + | undefined type FlatPrintLevels = "info" | "extended" | "raw" From 68d45301670d33ab09566fda75c3ce8b3e55cc38 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 14:06:25 +0300 Subject: [PATCH 14/27] fmt --- src/contracts/shard-utils.tact | 3 +-- src/contracts/shard/jetton-minter.tact | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index e38244e..cb35916 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -40,10 +40,9 @@ inline fun shardDeploy(params: ShardDeployParameters) { let expectedAddr = beginCell() .storeUint(4, 3) .storeUint(0, 8) - .storeUint(changeAddressHashShard(newStateInit.hash(), params.shard), 256) + .storeUint(changeAddressHashShard(newStateInit.hash(), params.shard), 256) .asSlice(); - let msg = beginCell() .storeUint(1, 2) // 0 1 .storeBool(params.bounce) diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index a6f5f07..f156d8b 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -143,7 +143,7 @@ contract JettonMinter( inline fun getJettonWalletInit(address: Address): Cell { let init = initOf JettonWallet(address, myAddress(), 0); - + return initToShardInit(init); } From 8f9d17c705f517327f8eb8fa0c707cb2f090c63c Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Tue, 13 May 2025 14:18:07 +0300 Subject: [PATCH 15/27] update checking same wallet --- src/contracts/shard-utils.tact | 4 ++++ src/contracts/shard/constants.tact | 2 +- src/contracts/shard/jetton-wallet.tact | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index cb35916..3473ec7 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -78,3 +78,7 @@ inline extends fun hasSameBasechainAddressShard(self: StateInit, sender: Address let baseAddress = contractBasechainAddressShard(self); return (baseAddress.hash!! & ((1 << (256 - prefixLength)) - 1)) == (senderAddress & ((1 << (256 - prefixLength)) - 1)); } + +inline extends fun hasSameShard(self: Address, b: Address): Bool { + return getShardFromAddress(self.asSlice()) == getShardFromAddress(b.asSlice()); +} diff --git a/src/contracts/shard/constants.tact b/src/contracts/shard/constants.tact index c1041e5..62b042f 100644 --- a/src/contracts/shard/constants.tact +++ b/src/contracts/shard/constants.tact @@ -1,4 +1,4 @@ const gasForBurn: Int = 8000; -const gasForTransfer: Int = 11000; +const gasForTransfer: Int = 11050; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future const Basechain: Int = 0; diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index 7601f0f..89742ec 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -49,7 +49,7 @@ contract JettonWallet( // This message should come only from master, or from other JettonWallet let wallet: StateInit = initOf JettonWallet(msg.sender, self.minter, 0); - if (!wallet.hasSameBasechainAddressShard(sender())) { // TODO should we check exactly same address? + if (!(wallet.hasSameBasechainAddressShard(sender()) && sender().hasSameShard(msg.sender))) { require(self.minter == sender(), "Incorrect sender"); } let ctx: Context = context(); From edc3e82e69d41c0be8c4def721afce549620ac5a Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Wed, 14 May 2025 19:50:43 +0300 Subject: [PATCH 16/27] NEW SEND --- src/contracts/send.tact | 232 +++++++++++++++++++++++++ src/contracts/shard-utils.tact | 76 ++++---- src/contracts/shard/constants.tact | 2 +- src/contracts/shard/jetton-minter.tact | 12 +- src/contracts/shard/jetton-wallet.tact | 11 +- 5 files changed, 277 insertions(+), 56 deletions(-) create mode 100644 src/contracts/send.tact diff --git a/src/contracts/send.tact b/src/contracts/send.tact new file mode 100644 index 0000000..659ce5c --- /dev/null +++ b/src/contracts/send.tact @@ -0,0 +1,232 @@ +import "./shard-utils"; + + +// NEW USAGE +// DeployParameters.send() +// SendParameters.send() +// MessageParameters.send() + + +asm extends inline fun send(self: DeployParameters) { + // Instructions are grouped, and the stack states they produce as a group are shown right after. + // + // → Stack state + // s0: `params.init.data` + // s1: `params.init.code` + // s2: `params.bounce` + // s3: `params.value` + // s4: `params.body` + // s5: `params.mode` + // For brevity, the "params" prefix will be omitted from now on. + + // Group 1: Preparation of needed params + // For almost identical logic and instructions, + // see comments inside `contractHash()` function in contract.tact + 4 1 BLKPUSH // pushes 2 copies of `init.code` and `init.data` + HASHCU // `init.data` hash + SWAP + HASHCU // `init.code` hash + SWAP2 + CDEPTH // `init.data` depth + SWAP + CDEPTH // `init.code` depth + + // Group 2: Calculating destination address + // For almost identical logic and instructions, + // see comments inside `contractHash()` function in contract.tact + 131380 INT // (2 << 16) | (1 << 8) | 0x34 + NEWC + 24 STU + 16 STU + 16 STU + 256 STU + 256 STU + ONE HASHEXT_SHA256 // obtains hash part (account id) of the address + // → Stack state + // s0: destAddr(hash part) + // s1: `init.data` + // s2: `init.code` + // s3 and below: `bounce`, `value`, `body`, `mode` + + // Group 3: Building a message (CommonMsgInfoRelaxed) + s3 XCHG0 // swaps `bounce` with destAddr(hash part) + NEWC + b{01} STSLICECONST // store tag = $0 and ihr_disabled = true + 1 STI // store `bounce` + s1 s2 XCHG // swap `init.data` with `init.code`, placing code on s1 + STREF // store `init.code` + STREF // store `init.data` + // Inline StateInit: + b{00010000000000} STSLICECONST + // 0 + 00 + 10 + 0 + 00000000 + // 1) 0 - bounced = false + // 2) 00 - src = addr_none + // 3) 10 - tag of addr_std (part of dest) + // 4) 0 - Maybe Anycast = false + // 5) 00000000 - workchain_id (part of dest) + // + 256 STU // store destAddr(hash part) + SWAP // Builder on top, `value` below + STGRAMS // store `value` + 105 PUSHINT // 1 + 4 + 4 + 64 + 32 + STZEROES // store currency_collection, ihr_fee, fwd_fee, created_lt and created_at + + // Group 4: Continue building a message (CommonMsgInfoRelaxed into MessageRelaxed) + // Remaining bits of MessageRelaxed: + b{1000110} STSLICECONST + // 10 + 0 + 0 + 1 + 1 + 0 + // 10 - Maybe (Either StateInit ^StateInit) = true false + // 0 - split_depth:(Maybe (## 5)) = false + // 0 = special:(Maybe TickTock) = false + // 1 = code:(Maybe ^Cell) = true + // 1 = data:(Maybe ^Cell) = true + // 0 = library:(Maybe ^Cell) = false + // + STDICT // store `body` as ref with an extra Maybe bit, since `body` might be null + ENDC // finalize the message + // → Stack state + // s0: Cell + // s1: params.`mode` + + // Group 5: Sending the message, with `mode` on top + SWAP + SENDRAWMSG +} + +extends inline fun send(self: ShardDeployParameters) { + let newStateInit = self.deployParameters.init.toShardCell(); + + let msg = beginCell() + .storeUint(1, 2) // 0 1 + .storeBool(self.deployParameters.bounce) + .storeUint(1 << 10, 14) // 0 0 0 1 0 0 0 0 0 0 0 0 0 0 + .storeUint(changeAddressHashShard(newStateInit.hash(), self.shard), 256) + .storeCoins(self.deployParameters.value) + .storeUint(2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1) + .storeRef(newStateInit) + .storeMaybeRef(self.deployParameters.body) + .endCell(); + + sendRawMessage(msg, self.deployParameters.mode); +} + +extends inline fun send(self: ShardMessageParameters) { + self.messageParameters.to = changeAddressShard(self.messageParameters.to, self.shard); + self.messageParameters.send() +} + +asm extends inline fun send(self: MessageParameters) { + NEWC + b{01} STSLICECONST // store tag = $0 and ihr_disabled = true + 1 STI // store `bounce` + b{000} STSLICECONST // store bounced = false and src = addr_none + STSLICE // store `to` + SWAP + STGRAMS // store `value` + 106 PUSHINT // 1 + 4 + 4 + 64 + 32 + 1 + STZEROES + // → Stack state + // s0: Builder + // s1: `body` + // s2: `mode` + STDICT + ENDC + SWAP + SENDRAWMSG +} + + +asm extends inline fun send(self: SendParameters) { + // Instructions are grouped, and the stack states they produce as a group are shown right after. + // In the end, our message Cell should have the following TL-B structure: + // message$_ {X:Type} + // info:CommonMsgInfoRelaxed + // init:(Maybe (Either StateInit ^StateInit)) + // body:(Either X ^X) + // = MessageRelaxed X; + + // → Stack state + // s0: `self.bounce` + // s1: `self.to` + // s2: `self.value` + // s3: `self.data` + // s4: `self.code` + // s5: `self.body` + // s6: `self.mode` + // For brevity, the "self" prefix will be omitted from now on. + + // Group 1: Storing the `bounce`, `to` and `value` into a Builder + NEWC + b{01} STSLICECONST // store tag = $0 and ihr_disabled = true + 1 STI // store `bounce` + b{000} STSLICECONST // store bounced = false and src = addr_none + STSLICE // store `to` + SWAP + STGRAMS // store `value` + 105 PUSHINT // 1 + 4 + 4 + 64 + 32 + STZEROES // store currency_collection, ihr_fee, fwd_fee, created_lt and created_at + // → Stack state + // s0: Builder + // s1: `data` + // s2: `code` + // s3: `body` + // s4: `mode` + + // Group 2: Placing the Builder after code and data, then checking those for nullability + s2 XCHG0 + DUP2 + ISNULL + SWAP + ISNULL + AND + // → Stack state + // s0: -1 (true) if `data` and `code` are both null, 0 (false) otherwise + // s1: `code` + // s2: `data` + // s3: Builder + // s4: `body` + // s5: `mode` + + // Group 3: Left branch of the IFELSE, executed if s0 is -1 (true) + <{ + DROP2 // drop `data` and `code`, since either of those is null + b{0} STSLICECONST + }> PUSHCONT + + // Group 3: Right branch of the IFELSE, executed if s0 is 0 (false) + <{ + // _ split_depth:(Maybe (## 5)) + // special:(Maybe TickTock) + // code:(Maybe ^Cell) + // data:(Maybe ^Cell) + // library:(Maybe ^Cell) + // = StateInit; + ROT // place message Builder on top + b{10} STSLICECONST // store Maybe = true, Either = false + // Start composing inlined StateInit + b{00} STSLICECONST // store split_depth and special first + STDICT // store code + STDICT // store data + b{0} STSLICECONST // store library + }> PUSHCONT + + // Group 3: IFELSE that does the branching shown above + IFELSE + // → Stack state + // s0: Builder + // s1: null or StateInit + // s2: `body` + // s3: `mode` + + // Group 4: Finalizing the message + STDICT // store `body` as ref with an extra Maybe bit, since `body` might be null + ENDC + // → Stack state + // s0: Cell + // s1: `mode` + + // Group 5: Sending the message, with `mode` on top + SWAP + SENDRAWMSG // https://github.com/tact-lang/tact/issues/1558 +} + diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index 3473ec7..82f8662 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -1,75 +1,63 @@ const prefixLength: Int = 8; struct ShardDeployParameters { - /// An 8-bit value that configures how to send a message, defaults to 0. - /// See: https://docs.tact-lang.org/book/message-mode - mode: Int = SendDefaultMode; + deployParameters: DeployParameters; - /// Optional message body as a `Cell`. - body: Cell?; - - /// The amount of nanoToncoins you want to send with - /// the message. This value is used to cover forward fees, - /// unless the optional flag `SendPayGasSeparately` is used. - value: Int; - - /// When set to `true` (default) message bounces back to the sender if - /// the recipient contract doesn't exist or wasn't able to process the message. - bounce: Bool = true; + /// The shard number to deploy the contract to. + shard: Int as uint8; +} - /// Initial package of the contract (initial code and initial data). - /// See: https://docs.tact-lang.org/book/expressions#initof - init: StateInit; +struct ShardMessageParameters { + messageParameters: MessageParameters; /// The shard number to deploy the contract to. shard: Int as uint8; } +extends inline fun toShard(self: DeployParameters, shard: Int): ShardDeployParameters { + return ShardDeployParameters{ + shard, + deployParameters: self, + } +} + +extends inline fun toShard(self: MessageParameters, shard: Int): ShardMessageParameters { + return ShardMessageParameters { + shard, + messageParameters: self, + } +} + inline fun changeAddressHashShard(addr_hash: Int, shard: Int): Int { return (addr_hash & ((1 << (256 - prefixLength)) - 1)) | (shard << (256 - prefixLength)); } +inline fun changeAddressShard(addr: Address, shard: Int): Address { + let sl: Slice = addr.asSlice(); + + return beginCell().storeUint(sl.loadUint(11), 11).storeUint(changeAddressHashShard(sl.loadUint(256), shard), 256).asSlice().loadAddress(); +} + inline fun getShardFromAddress(addr: Slice): Int { addr.skipBits(11); return addr.loadUint(prefixLength); } -inline fun shardDeploy(params: ShardDeployParameters) { - let newStateInit = initToShardInit(params.init); - - let expectedAddr = beginCell() - .storeUint(4, 3) - .storeUint(0, 8) - .storeUint(changeAddressHashShard(newStateInit.hash(), params.shard), 256) - .asSlice(); - - let msg = beginCell() - .storeUint(1, 2) // 0 1 - .storeBool(params.bounce) - .storeUint(0, 3) // 0 0 0 - .storeSlice(expectedAddr) - .storeCoins(params.value) - .storeUint(2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1) - .storeRef(newStateInit) - .storeMaybeRef(params.body) - .endCell(); - - sendRawMessage(msg, params.mode); -} -inline fun initToShardInit(init: StateInit): Cell { +extends inline fun toShardCell(self: StateInit): Cell { let newStateInit = beginCell() .storeUint(32 + prefixLength, 6) - .storeUint(6, 4) // 0 1 1 0 - .storeRef(init.code) - .storeRef(init.data) + .storeUint(6, 4) + .storeRef(self.code) + .storeRef(self.data) .endCell(); return newStateInit; } + inline fun contractBasechainAddressShard(s: StateInit): BasechainAddress { - let hash = initToShardInit(s).hash(); + let hash = s.toShardCell().hash(); return newBasechainAddress(hash); } diff --git a/src/contracts/shard/constants.tact b/src/contracts/shard/constants.tact index 62b042f..364f3b7 100644 --- a/src/contracts/shard/constants.tact +++ b/src/contracts/shard/constants.tact @@ -1,4 +1,4 @@ const gasForBurn: Int = 8000; const gasForTransfer: Int = 11050; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future -const Basechain: Int = 0; +const Basechain: Int = 0; \ No newline at end of file diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index f156d8b..33bb805 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -4,6 +4,7 @@ import "./constants"; import "../utils.tact"; import "../utils"; import "../shard-utils"; +import "../send"; struct JettonMinterState { totalSupply: Int as coins; @@ -45,14 +46,13 @@ contract JettonMinter( let receiverShard = getShardFromAddress(msg.receiver.asSlice()); // basechain destination is calculated inside deploy function - shardDeploy(ShardDeployParameters { + DeployParameters{ value: 0, // ignore msg.tonAmount and use SendMode 64 instead bounce: true, mode: SendRemainingValue | SendBounceIfActionFail, body: msg.mintMessage.toCell(), - init: initOf JettonWallet(msg.receiver, myAddress(), 0), - shard: receiverShard, - }); + init: initOf JettonWallet(msg.receiver, myAddress(), 0) + }.toShard(receiverShard).send(); } receive(msg: ProvideWalletAddress) { @@ -143,8 +143,8 @@ contract JettonMinter( inline fun getJettonWalletInit(address: Address): Cell { let init = initOf JettonWallet(address, myAddress(), 0); - - return initToShardInit(init); + + return init.toShardCell(); } inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index 89742ec..8a523bd 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -1,6 +1,7 @@ import "./messages"; import "./constants"; import "../shard-utils"; +import "../send"; contract JettonWallet( owner: Address, @@ -27,7 +28,7 @@ contract JettonWallet( let destinationShard = getShardFromAddress(msg.destination.asSlice()); - shardDeploy(ShardDeployParameters { + DeployParameters{ value: 0, mode: SendRemainingValue, bounce: true, @@ -39,9 +40,8 @@ contract JettonWallet( forwardTonAmount: msg.forwardTonAmount, forwardPayload: msg.forwardPayload, }.toCell(), - init: initOf JettonWallet(msg.destination, self.minter, 0), - shard: destinationShard, - }); + init: initOf JettonWallet(msg.destination, self.minter, 0) + }.toShard(destinationShard).send(); } receive(msg: JettonTransferInternal) { @@ -49,9 +49,10 @@ contract JettonWallet( // This message should come only from master, or from other JettonWallet let wallet: StateInit = initOf JettonWallet(msg.sender, self.minter, 0); - if (!(wallet.hasSameBasechainAddressShard(sender()) && sender().hasSameShard(msg.sender))) { + if (!(wallet.hasSameBasechainAddressShard(sender()))) { require(self.minter == sender(), "Incorrect sender"); } + let ctx: Context = context(); let msgValue: Int = ctx.value; let tonBalanceBeforeMsg = myBalance() - msgValue; From a89f5783b31b70bd721d494ea75fe94de0c25c9c Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Wed, 14 May 2025 19:54:08 +0300 Subject: [PATCH 17/27] fmt :( --- src/contracts/send.tact | 15 +++------------ src/contracts/shard-utils.tact | 16 +++++++--------- src/contracts/shard/constants.tact | 2 +- src/contracts/shard/jetton-minter.tact | 6 +++--- src/contracts/shard/jetton-wallet.tact | 6 +++--- 5 files changed, 17 insertions(+), 28 deletions(-) diff --git a/src/contracts/send.tact b/src/contracts/send.tact index 659ce5c..7e56c80 100644 --- a/src/contracts/send.tact +++ b/src/contracts/send.tact @@ -1,12 +1,5 @@ import "./shard-utils"; - -// NEW USAGE -// DeployParameters.send() -// SendParameters.send() -// MessageParameters.send() - - asm extends inline fun send(self: DeployParameters) { // Instructions are grouped, and the stack states they produce as a group are shown right after. // @@ -93,13 +86,13 @@ asm extends inline fun send(self: DeployParameters) { SENDRAWMSG } -extends inline fun send(self: ShardDeployParameters) { +extends inline fun send(self: ShardDeployParameters) { let newStateInit = self.deployParameters.init.toShardCell(); let msg = beginCell() .storeUint(1, 2) // 0 1 .storeBool(self.deployParameters.bounce) - .storeUint(1 << 10, 14) // 0 0 0 1 0 0 0 0 0 0 0 0 0 0 + .storeUint(1 << 10, 14) // 0 0 0 1 0 0 0 0 0 0 0 0 0 0 .storeUint(changeAddressHashShard(newStateInit.hash(), self.shard), 256) .storeCoins(self.deployParameters.value) .storeUint(2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1) @@ -112,7 +105,7 @@ extends inline fun send(self: ShardDeployParameters) { extends inline fun send(self: ShardMessageParameters) { self.messageParameters.to = changeAddressShard(self.messageParameters.to, self.shard); - self.messageParameters.send() + self.messageParameters.send(); } asm extends inline fun send(self: MessageParameters) { @@ -135,7 +128,6 @@ asm extends inline fun send(self: MessageParameters) { SENDRAWMSG } - asm extends inline fun send(self: SendParameters) { // Instructions are grouped, and the stack states they produce as a group are shown right after. // In the end, our message Cell should have the following TL-B structure: @@ -229,4 +221,3 @@ asm extends inline fun send(self: SendParameters) { SWAP SENDRAWMSG // https://github.com/tact-lang/tact/issues/1558 } - diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index 82f8662..f764ae6 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -15,24 +15,24 @@ struct ShardMessageParameters { } extends inline fun toShard(self: DeployParameters, shard: Int): ShardDeployParameters { - return ShardDeployParameters{ - shard, + return ShardDeployParameters { + shard, deployParameters: self, - } + }; } -extends inline fun toShard(self: MessageParameters, shard: Int): ShardMessageParameters { +extends inline fun toShard(self: MessageParameters, shard: Int): ShardMessageParameters { return ShardMessageParameters { shard, messageParameters: self, - } + }; } inline fun changeAddressHashShard(addr_hash: Int, shard: Int): Int { return (addr_hash & ((1 << (256 - prefixLength)) - 1)) | (shard << (256 - prefixLength)); } -inline fun changeAddressShard(addr: Address, shard: Int): Address { +inline fun changeAddressShard(addr: Address, shard: Int): Address { let sl: Slice = addr.asSlice(); return beginCell().storeUint(sl.loadUint(11), 11).storeUint(changeAddressHashShard(sl.loadUint(256), shard), 256).asSlice().loadAddress(); @@ -43,8 +43,7 @@ inline fun getShardFromAddress(addr: Slice): Int { return addr.loadUint(prefixLength); } - -extends inline fun toShardCell(self: StateInit): Cell { +extends inline fun toShardCell(self: StateInit): Cell { let newStateInit = beginCell() .storeUint(32 + prefixLength, 6) .storeUint(6, 4) @@ -55,7 +54,6 @@ extends inline fun toShardCell(self: StateInit): Cell { return newStateInit; } - inline fun contractBasechainAddressShard(s: StateInit): BasechainAddress { let hash = s.toShardCell().hash(); return newBasechainAddress(hash); diff --git a/src/contracts/shard/constants.tact b/src/contracts/shard/constants.tact index 364f3b7..62b042f 100644 --- a/src/contracts/shard/constants.tact +++ b/src/contracts/shard/constants.tact @@ -1,4 +1,4 @@ const gasForBurn: Int = 8000; const gasForTransfer: Int = 11050; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future -const Basechain: Int = 0; \ No newline at end of file +const Basechain: Int = 0; diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index 33bb805..5ba959d 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -46,12 +46,12 @@ contract JettonMinter( let receiverShard = getShardFromAddress(msg.receiver.asSlice()); // basechain destination is calculated inside deploy function - DeployParameters{ + DeployParameters { value: 0, // ignore msg.tonAmount and use SendMode 64 instead bounce: true, mode: SendRemainingValue | SendBounceIfActionFail, body: msg.mintMessage.toCell(), - init: initOf JettonWallet(msg.receiver, myAddress(), 0) + init: initOf JettonWallet(msg.receiver, myAddress(), 0), }.toShard(receiverShard).send(); } @@ -143,7 +143,7 @@ contract JettonMinter( inline fun getJettonWalletInit(address: Address): Cell { let init = initOf JettonWallet(address, myAddress(), 0); - + return init.toShardCell(); } diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index 8a523bd..62cb5cf 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -28,7 +28,7 @@ contract JettonWallet( let destinationShard = getShardFromAddress(msg.destination.asSlice()); - DeployParameters{ + DeployParameters { value: 0, mode: SendRemainingValue, bounce: true, @@ -40,7 +40,7 @@ contract JettonWallet( forwardTonAmount: msg.forwardTonAmount, forwardPayload: msg.forwardPayload, }.toCell(), - init: initOf JettonWallet(msg.destination, self.minter, 0) + init: initOf JettonWallet(msg.destination, self.minter, 0), }.toShard(destinationShard).send(); } @@ -52,7 +52,7 @@ contract JettonWallet( if (!(wallet.hasSameBasechainAddressShard(sender()))) { require(self.minter == sender(), "Incorrect sender"); } - + let ctx: Context = context(); let msgValue: Int = ctx.value; let tonBalanceBeforeMsg = myBalance() - msgValue; From a5a7ed3aacc16958f3845251f7bd6df3632bed28 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Sat, 17 May 2025 16:37:53 +0300 Subject: [PATCH 18/27] v2.0 --- src/contracts/send.tact | 216 ++----------------------- src/contracts/shard-utils.tact | 55 ++++--- src/contracts/shard/jetton-minter.tact | 28 ++-- src/contracts/shard/jetton-wallet.tact | 24 +-- 4 files changed, 72 insertions(+), 251 deletions(-) diff --git a/src/contracts/send.tact b/src/contracts/send.tact index 7e56c80..7e02308 100644 --- a/src/contracts/send.tact +++ b/src/contracts/send.tact @@ -1,101 +1,26 @@ import "./shard-utils"; -asm extends inline fun send(self: DeployParameters) { - // Instructions are grouped, and the stack states they produce as a group are shown right after. - // - // → Stack state - // s0: `params.init.data` - // s1: `params.init.code` - // s2: `params.bounce` - // s3: `params.value` - // s4: `params.body` - // s5: `params.mode` - // For brevity, the "params" prefix will be omitted from now on. - - // Group 1: Preparation of needed params - // For almost identical logic and instructions, - // see comments inside `contractHash()` function in contract.tact - 4 1 BLKPUSH // pushes 2 copies of `init.code` and `init.data` - HASHCU // `init.data` hash - SWAP - HASHCU // `init.code` hash - SWAP2 - CDEPTH // `init.data` depth - SWAP - CDEPTH // `init.code` depth - - // Group 2: Calculating destination address - // For almost identical logic and instructions, - // see comments inside `contractHash()` function in contract.tact - 131380 INT // (2 << 16) | (1 << 8) | 0x34 - NEWC - 24 STU - 16 STU - 16 STU - 256 STU - 256 STU - ONE HASHEXT_SHA256 // obtains hash part (account id) of the address - // → Stack state - // s0: destAddr(hash part) - // s1: `init.data` - // s2: `init.code` - // s3 and below: `bounce`, `value`, `body`, `mode` - - // Group 3: Building a message (CommonMsgInfoRelaxed) - s3 XCHG0 // swaps `bounce` with destAddr(hash part) - NEWC - b{01} STSLICECONST // store tag = $0 and ihr_disabled = true - 1 STI // store `bounce` - s1 s2 XCHG // swap `init.data` with `init.code`, placing code on s1 - STREF // store `init.code` - STREF // store `init.data` - // Inline StateInit: - b{00010000000000} STSLICECONST - // 0 + 00 + 10 + 0 + 00000000 - // 1) 0 - bounced = false - // 2) 00 - src = addr_none - // 3) 10 - tag of addr_std (part of dest) - // 4) 0 - Maybe Anycast = false - // 5) 00000000 - workchain_id (part of dest) - // - 256 STU // store destAddr(hash part) - SWAP // Builder on top, `value` below - STGRAMS // store `value` - 105 PUSHINT // 1 + 4 + 4 + 64 + 32 - STZEROES // store currency_collection, ihr_fee, fwd_fee, created_lt and created_at +extends inline fun send(self: DeployParameters) { + deploy(self); +} - // Group 4: Continue building a message (CommonMsgInfoRelaxed into MessageRelaxed) - // Remaining bits of MessageRelaxed: - b{1000110} STSLICECONST - // 10 + 0 + 0 + 1 + 1 + 0 - // 10 - Maybe (Either StateInit ^StateInit) = true false - // 0 - split_depth:(Maybe (## 5)) = false - // 0 = special:(Maybe TickTock) = false - // 1 = code:(Maybe ^Cell) = true - // 1 = data:(Maybe ^Cell) = true - // 0 = library:(Maybe ^Cell) = false - // - STDICT // store `body` as ref with an extra Maybe bit, since `body` might be null - ENDC // finalize the message - // → Stack state - // s0: Cell - // s1: params.`mode` +extends inline fun send(self: MessageParameters) { + message(self); +} - // Group 5: Sending the message, with `mode` on top - SWAP - SENDRAWMSG +extends inline fun send(self: SendParameters) { + send(self); } extends inline fun send(self: ShardDeployParameters) { - let newStateInit = self.deployParameters.init.toShardCell(); - + let newStateInit = beginCell().storeShardedStateInit(self.deployParameters.init).endCell(); let msg = beginCell() - .storeUint(1, 2) // 0 1 + .storeUint(1, 2) // store tag = $0 and ihr_disabled = true .storeBool(self.deployParameters.bounce) - .storeUint(1 << 10, 14) // 0 0 0 1 0 0 0 0 0 0 0 0 0 0 - .storeUint(changeAddressHashShard(newStateInit.hash(), self.shard), 256) + .storeUint(1 << 10, 14) // store bounced = false and src = addr_none, addr_std$10, anycast: false, workchain = 0 (int8) + .storeUint(changeShard(newStateInit.hash(), self.shard), 256) // addrHash .storeCoins(self.deployParameters.value) - .storeUint(2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1) + .storeUint(2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1) // 1 + 4 + 4 + 64 + 32, stateInit: true, inRef: false .storeRef(newStateInit) .storeMaybeRef(self.deployParameters.body) .endCell(); @@ -104,120 +29,7 @@ extends inline fun send(self: ShardDeployParameters) { } extends inline fun send(self: ShardMessageParameters) { - self.messageParameters.to = changeAddressShard(self.messageParameters.to, self.shard); + self.messageParameters.to =self.messageParameters.to.changeShard(self.shard); self.messageParameters.send(); } -asm extends inline fun send(self: MessageParameters) { - NEWC - b{01} STSLICECONST // store tag = $0 and ihr_disabled = true - 1 STI // store `bounce` - b{000} STSLICECONST // store bounced = false and src = addr_none - STSLICE // store `to` - SWAP - STGRAMS // store `value` - 106 PUSHINT // 1 + 4 + 4 + 64 + 32 + 1 - STZEROES - // → Stack state - // s0: Builder - // s1: `body` - // s2: `mode` - STDICT - ENDC - SWAP - SENDRAWMSG -} - -asm extends inline fun send(self: SendParameters) { - // Instructions are grouped, and the stack states they produce as a group are shown right after. - // In the end, our message Cell should have the following TL-B structure: - // message$_ {X:Type} - // info:CommonMsgInfoRelaxed - // init:(Maybe (Either StateInit ^StateInit)) - // body:(Either X ^X) - // = MessageRelaxed X; - - // → Stack state - // s0: `self.bounce` - // s1: `self.to` - // s2: `self.value` - // s3: `self.data` - // s4: `self.code` - // s5: `self.body` - // s6: `self.mode` - // For brevity, the "self" prefix will be omitted from now on. - - // Group 1: Storing the `bounce`, `to` and `value` into a Builder - NEWC - b{01} STSLICECONST // store tag = $0 and ihr_disabled = true - 1 STI // store `bounce` - b{000} STSLICECONST // store bounced = false and src = addr_none - STSLICE // store `to` - SWAP - STGRAMS // store `value` - 105 PUSHINT // 1 + 4 + 4 + 64 + 32 - STZEROES // store currency_collection, ihr_fee, fwd_fee, created_lt and created_at - // → Stack state - // s0: Builder - // s1: `data` - // s2: `code` - // s3: `body` - // s4: `mode` - - // Group 2: Placing the Builder after code and data, then checking those for nullability - s2 XCHG0 - DUP2 - ISNULL - SWAP - ISNULL - AND - // → Stack state - // s0: -1 (true) if `data` and `code` are both null, 0 (false) otherwise - // s1: `code` - // s2: `data` - // s3: Builder - // s4: `body` - // s5: `mode` - - // Group 3: Left branch of the IFELSE, executed if s0 is -1 (true) - <{ - DROP2 // drop `data` and `code`, since either of those is null - b{0} STSLICECONST - }> PUSHCONT - - // Group 3: Right branch of the IFELSE, executed if s0 is 0 (false) - <{ - // _ split_depth:(Maybe (## 5)) - // special:(Maybe TickTock) - // code:(Maybe ^Cell) - // data:(Maybe ^Cell) - // library:(Maybe ^Cell) - // = StateInit; - ROT // place message Builder on top - b{10} STSLICECONST // store Maybe = true, Either = false - // Start composing inlined StateInit - b{00} STSLICECONST // store split_depth and special first - STDICT // store code - STDICT // store data - b{0} STSLICECONST // store library - }> PUSHCONT - - // Group 3: IFELSE that does the branching shown above - IFELSE - // → Stack state - // s0: Builder - // s1: null or StateInit - // s2: `body` - // s3: `mode` - - // Group 4: Finalizing the message - STDICT // store `body` as ref with an extra Maybe bit, since `body` might be null - ENDC - // → Stack state - // s0: Cell - // s1: `mode` - - // Group 5: Sending the message, with `mode` on top - SWAP - SENDRAWMSG // https://github.com/tact-lang/tact/issues/1558 -} diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index f764ae6..7f60c9e 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -28,43 +28,52 @@ extends inline fun toShard(self: MessageParameters, shard: Int): ShardMessagePar }; } -inline fun changeAddressHashShard(addr_hash: Int, shard: Int): Int { - return (addr_hash & ((1 << (256 - prefixLength)) - 1)) | (shard << (256 - prefixLength)); +asm fun extractLowBits(value: Int, count: Int): Int { + MODPOW2 } -inline fun changeAddressShard(addr: Address, shard: Int): Address { - let sl: Slice = addr.asSlice(); +inline fun changeShard(hash: Int, shard: Int): Int { + return extractLowBits(hash, 256 - prefixLength) | (shard << (256 - prefixLength)); +} + +extends inline fun changeShard(self: Address, shard: Int): Address { + let sl: Slice = self.asSlice(); - return beginCell().storeUint(sl.loadUint(11), 11).storeUint(changeAddressHashShard(sl.loadUint(256), shard), 256).asSlice().loadAddress(); + return beginCell().storeUint(sl.loadUint(11), 11).storeUint(changeShard(sl.loadUint(256), shard), 256).asSlice().loadAddress(); } -inline fun getShardFromAddress(addr: Slice): Int { - addr.skipBits(11); - return addr.loadUint(prefixLength); +extends inline fun getShard(self: Address): Int { + let sl = self.asSlice(); + sl.skipBits(11); // addr_std$10, anycast: false, workchain: int8 + return sl.loadUint(prefixLength); } -extends inline fun toShardCell(self: StateInit): Cell { - let newStateInit = beginCell() - .storeUint(32 + prefixLength, 6) - .storeUint(6, 4) - .storeRef(self.code) - .storeRef(self.data) - .endCell(); +extends inline fun storeShardedStateInit(self: Builder, init: StateInit): Builder { + return self + .storeUint(32 + prefixLength, 6) // fixed_prefix_length: true, prefixLength: uint5 + .storeUint(6, 4) // special: false, code: true, data: true, library: false + .storeRef(init.code) + .storeRef(init.data) +} - return newStateInit; +extends inline fun storeStateInit(self: Builder, init: StateInit): Builder { + return self + .storeUint(6, 5) // fixed_prefix_length: false, special: false, code: true, data: true, library: false + .storeRef(init.code) + .storeRef(init.data) } -inline fun contractBasechainAddressShard(s: StateInit): BasechainAddress { - let hash = s.toShardCell().hash(); +inline fun contractShardBasechainAddress(s: StateInit): BasechainAddress { + let hash = beginCell().storeShardedStateInit(s).endCell().hash(); return newBasechainAddress(hash); } -inline extends fun hasSameBasechainAddressShard(self: StateInit, sender: Address): Bool { - let senderAddress = parseStdAddress(sender.asSlice()).address; - let baseAddress = contractBasechainAddressShard(self); - return (baseAddress.hash!! & ((1 << (256 - prefixLength)) - 1)) == (senderAddress & ((1 << (256 - prefixLength)) - 1)); +extends inline fun hasSameBasechainAddressWithoutShard(self: StateInit, address: Address): Bool { + let addressHash = parseStdAddress(address.asSlice()).address; + let baseAddress = contractShardBasechainAddress(self); + return extractLowBits(baseAddress.hash!!, 256 - prefixLength) == extractLowBits(addressHash, 256 - prefixLength); } inline extends fun hasSameShard(self: Address, b: Address): Bool { - return getShardFromAddress(self.asSlice()) == getShardFromAddress(b.asSlice()); + return self.getShard() == b.getShard(); } diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index 5ba959d..2bbc89c 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -43,7 +43,7 @@ contract JettonMinter( self.totalSupply += msg.mintMessage.amount; - let receiverShard = getShardFromAddress(msg.receiver.asSlice()); + let receiverShard = msg.receiver.getShard(); // basechain destination is calculated inside deploy function DeployParameters { @@ -58,19 +58,19 @@ contract JettonMinter( receive(msg: ProvideWalletAddress) { let ownerWorkchain: Int = parseStdAddress(msg.ownerAddress.asSlice()).workchain; - let ownerShard = getShardFromAddress(msg.ownerAddress.asSlice()); + let ownerShard = msg.ownerAddress.getShard(); // If owner is basechain address, we can calculate jettonWallet let targetJettonWallet: BasechainAddress = (ownerWorkchain == Basechain) - ? BasechainAddress { hash: changeAddressHashShard(getJettonWalletInit(msg.ownerAddress).hash(), ownerShard) } + ? BasechainAddress { hash: changeShard(getJettonWalletInit(msg.ownerAddress).hash(), ownerShard) } : emptyBasechainAddress(); - message(MessageParameters { + MessageParameters { body: makeTakeWalletAddressMsg(targetJettonWallet, msg), to: sender(), value: 0, mode: SendRemainingValue, - }); + }.send(); } receive(msg: JettonBurnNotification) { @@ -83,13 +83,13 @@ contract JettonMinter( self.totalSupply -= msg.amount; if (msg.responseDestination != null) { - message(MessageParameters { + MessageParameters { to: msg.responseDestination!!, body: JettonExcesses { queryId: msg.queryId }.toCell(), value: 0, bounce: false, mode: SendRemainingValue | SendIgnoreErrors, // ignore errors, because supply has already been updated - }); + }.send(); } } @@ -114,12 +114,12 @@ contract JettonMinter( nativeReserve(minTonsForStorage, ReserveExact | ReserveBounceIfActionFail); // we allow bounce here and don't handle it, if claim fails we just accept the TONs back - message(MessageParameters { + MessageParameters { bounce: true, to: msg.receiver, value: 0, mode: SendRemainingBalance, - }); + }.send(); } bounced(msg: bounced) { @@ -144,18 +144,18 @@ contract JettonMinter( inline fun getJettonWalletInit(address: Address): Cell { let init = initOf JettonWallet(address, myAddress(), 0); - return init.toShardCell(); + return beginCell().storeShardedStateInit(init).endCell(); } inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { let init = getJettonWalletInit(jettonWalletOwner); - let ownerShard = getShardFromAddress(jettonWalletOwner.asSlice()); + let ownerShard = jettonWalletOwner.getShard(); let expectedAddr = beginCell() .storeUint(4, 3) .storeUint(0, 8) - .storeUint(changeAddressHashShard(init.hash(), ownerShard), 256) + .storeUint(changeShard(init.hash(), ownerShard), 256) .asSlice(); return expectedAddr.loadAddress(); @@ -164,7 +164,7 @@ inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress { let init = getJettonWalletInit(jettonWalletOwner); - let ownerShard = getShardFromAddress(jettonWalletOwner.asSlice()); + let ownerShard = jettonWalletOwner.getShard(); - return BasechainAddress { hash: changeAddressHashShard(init.hash(), ownerShard) }; + return BasechainAddress { hash: changeShard(init.hash(), ownerShard) }; } diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index 62cb5cf..8fec6b9 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -26,7 +26,7 @@ contract JettonWallet( "Insufficient amount of TON attached", ); - let destinationShard = getShardFromAddress(msg.destination.asSlice()); + let destinationShard = msg.destination.getShard(); DeployParameters { value: 0, @@ -49,7 +49,7 @@ contract JettonWallet( // This message should come only from master, or from other JettonWallet let wallet: StateInit = initOf JettonWallet(msg.sender, self.minter, 0); - if (!(wallet.hasSameBasechainAddressShard(sender()))) { + if (!(wallet.hasSameBasechainAddressWithoutShard(sender()))) { require(self.minter == sender(), "Incorrect sender"); } @@ -60,7 +60,7 @@ contract JettonWallet( if (msg.forwardTonAmount > 0) { let fwdFee: Int = ctx.readForwardFee(); msgValue -= msg.forwardTonAmount + fwdFee; - message(MessageParameters { + MessageParameters { to: self.owner, value: msg.forwardTonAmount, mode: SendPayGasSeparately, @@ -71,18 +71,18 @@ contract JettonWallet( sender: msg.sender, forwardPayload: msg.forwardPayload, }.toCell(), - }); + }.send(); } nativeReserve(max(tonBalanceBeforeMsg, minTonsForStorage), ReserveAtMost); // 0xd53276db -- Cashback to the original Sender if (msg.responseDestination != null && msgValue > 0) { - message(MessageParameters { + MessageParameters { to: msg.responseDestination!!, value: msgValue, mode: SendRemainingBalance + SendIgnoreErrors, bounce: false, body: JettonExcesses { queryId: msg.queryId }.toCell(), - }); + }.send(); } } @@ -96,7 +96,7 @@ contract JettonWallet( }; } - message(MessageParameters { + MessageParameters { body: TakeWalletBalance { balance: self.balance, verifyInfo: info, @@ -104,7 +104,7 @@ contract JettonWallet( to: msg.receiver, value: 0, mode: SendRemainingValue, - }); + }.send(); } receive(msg: JettonBurn) { @@ -119,7 +119,7 @@ contract JettonWallet( let fwdFee: Int = ctx.readForwardFee(); require(ctx.value > (fwdFee + 2 * getComputeFee(gasForBurn, false)), "Insufficient amount of TON attached"); - message(MessageParameters { + MessageParameters { to: self.minter, value: 0, mode: SendRemainingValue, @@ -130,7 +130,7 @@ contract JettonWallet( sender: self.owner, responseDestination: msg.responseDestination, }.toCell(), - }); + }.send(); } receive(msg: ClaimTON) { @@ -138,11 +138,11 @@ contract JettonWallet( nativeReserve(minTonsForStorage, ReserveExact | ReserveBounceIfActionFail); // we allow bounce here and don't handle it, if claim fails we just accept the TONs back - message(MessageParameters { + MessageParameters { to: msg.receiver, value: 0, mode: SendRemainingBalance, - }); + }.send(); } bounced(msg: bounced) { From daacc669055e5db07dc7edaaf2dde8e6282cecf8 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Sat, 17 May 2025 16:40:01 +0300 Subject: [PATCH 19/27] fix spell --- spell/custom-dictionary.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spell/custom-dictionary.txt b/spell/custom-dictionary.txt index 9d71f19..d9ad169 100644 --- a/spell/custom-dictionary.txt +++ b/spell/custom-dictionary.txt @@ -18,6 +18,7 @@ tonapi toncenter TONCENTER Toncoin +Toncoins tonhub tonscan tonviewer @@ -25,4 +26,3 @@ tonweb utime workchain yada -Toncoins From dbf5bea4804bd0919c6daa0fcd8893a4faacfabe Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Sat, 17 May 2025 16:40:42 +0300 Subject: [PATCH 20/27] fmt --- src/contracts/send.tact | 5 ++--- src/contracts/shard-utils.tact | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/contracts/send.tact b/src/contracts/send.tact index 7e02308..f0c4e30 100644 --- a/src/contracts/send.tact +++ b/src/contracts/send.tact @@ -1,7 +1,7 @@ import "./shard-utils"; extends inline fun send(self: DeployParameters) { - deploy(self); + deploy(self); } extends inline fun send(self: MessageParameters) { @@ -29,7 +29,6 @@ extends inline fun send(self: ShardDeployParameters) { } extends inline fun send(self: ShardMessageParameters) { - self.messageParameters.to =self.messageParameters.to.changeShard(self.shard); + self.messageParameters.to = self.messageParameters.to.changeShard(self.shard); self.messageParameters.send(); } - diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index 7f60c9e..dcf2f60 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -53,14 +53,14 @@ extends inline fun storeShardedStateInit(self: Builder, init: StateInit): Builde .storeUint(32 + prefixLength, 6) // fixed_prefix_length: true, prefixLength: uint5 .storeUint(6, 4) // special: false, code: true, data: true, library: false .storeRef(init.code) - .storeRef(init.data) + .storeRef(init.data); } extends inline fun storeStateInit(self: Builder, init: StateInit): Builder { return self .storeUint(6, 5) // fixed_prefix_length: false, special: false, code: true, data: true, library: false .storeRef(init.code) - .storeRef(init.data) + .storeRef(init.data); } inline fun contractShardBasechainAddress(s: StateInit): BasechainAddress { From fa9758eb9fc36c9d2185484dcb88b6a8906b89c1 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Sat, 17 May 2025 17:06:24 +0300 Subject: [PATCH 21/27] fix merge --- src/contracts/shard/constants.tact | 4 ++++ src/contracts/shard/jetton-minter.tact | 1 + src/contracts/shard/jetton-wallet.tact | 2 ++ src/wrappers/ExtendedShardedJettonWallet.ts | 16 +++++++++++++++- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/contracts/shard/constants.tact b/src/contracts/shard/constants.tact index 62b042f..baa8925 100644 --- a/src/contracts/shard/constants.tact +++ b/src/contracts/shard/constants.tact @@ -2,3 +2,7 @@ const gasForBurn: Int = 8000; const gasForTransfer: Int = 11050; const minTonsForStorage: Int = ton("0.01"); // This should use https://github.com/tact-lang/tact/issues/2336 in the future const Basechain: Int = 0; + +// This is an approximate value. Real one must be less than this, and it is checked in tests. +const walletStateInitCells: Int = 30; +const walletStateInitBits: Int = 20000; diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index 2bbc89c..979352b 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -37,6 +37,7 @@ contract JettonMinter( minTonsForStorage + msg.mintMessage.forwardTonAmount + ctx.readForwardFee() + + getForwardFee(walletStateInitCells, walletStateInitBits, false) + 2 * getComputeFee(gasForTransfer, false), "Insufficient gas for mint", ); diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index 8fec6b9..ccab720 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -2,6 +2,7 @@ import "./messages"; import "./constants"; import "../shard-utils"; import "../send"; +import "../utils"; contract JettonWallet( owner: Address, @@ -22,6 +23,7 @@ contract JettonWallet( ctx.value > msg.forwardTonAmount + fwdCount * ctx.readForwardFee() + + getForwardFee(walletStateInitCells, walletStateInitBits, false) + (2 * getComputeFee(gasForTransfer, false) + minTonsForStorage), "Insufficient amount of TON attached", ); diff --git a/src/wrappers/ExtendedShardedJettonWallet.ts b/src/wrappers/ExtendedShardedJettonWallet.ts index 97c2acc..24afc26 100644 --- a/src/wrappers/ExtendedShardedJettonWallet.ts +++ b/src/wrappers/ExtendedShardedJettonWallet.ts @@ -1,4 +1,10 @@ -import {ClaimTON, JettonTransfer, JettonWallet} from "../output/Shard_JettonWallet" +import { + ClaimTON, + JettonTransfer, + JettonWallet, + walletStateInitBits, + walletStateInitCells, +} from "../output/Shard_JettonWallet" import {Address, Builder, Cell, ContractProvider, Sender, toNano} from "@ton/core" import {JettonBurn, ProvideWalletBalance} from "../output/Shard_JettonMinter" @@ -145,4 +151,12 @@ export class ExtendedShardedJettonWallet extends JettonWallet { ): Promise => { throw new Error("Not implemented") } + + loadWalletStateInitCells(): bigint { + return walletStateInitCells + } + + loadWalletStateInitBits(): bigint { + return walletStateInitBits + } } From d985ed11b8218d7b58ba18a4ac6a3311b00cabae Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Sat, 17 May 2025 17:07:48 +0300 Subject: [PATCH 22/27] reorder functions by self type --- src/contracts/shard-utils.tact | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index dcf2f60..854c0db 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -48,6 +48,10 @@ extends inline fun getShard(self: Address): Int { return sl.loadUint(prefixLength); } +inline extends fun hasSameShard(self: Address, b: Address): Bool { + return self.getShard() == b.getShard(); +} + extends inline fun storeShardedStateInit(self: Builder, init: StateInit): Builder { return self .storeUint(32 + prefixLength, 6) // fixed_prefix_length: true, prefixLength: uint5 @@ -73,7 +77,3 @@ extends inline fun hasSameBasechainAddressWithoutShard(self: StateInit, address: let baseAddress = contractShardBasechainAddress(self); return extractLowBits(baseAddress.hash!!, 256 - prefixLength) == extractLowBits(addressHash, 256 - prefixLength); } - -inline extends fun hasSameShard(self: Address, b: Address): Bool { - return self.getShard() == b.getShard(); -} From f47328301e2fb133f0167c37a04f200307260c5b Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Mon, 19 May 2025 16:24:12 +0300 Subject: [PATCH 23/27] v2 --- src/contracts/shard-utils.tact | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index 854c0db..040723f 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -62,9 +62,9 @@ extends inline fun storeShardedStateInit(self: Builder, init: StateInit): Builde extends inline fun storeStateInit(self: Builder, init: StateInit): Builder { return self - .storeUint(6, 5) // fixed_prefix_length: false, special: false, code: true, data: true, library: false + .storeUint(3, 5) // fixed_prefix_length: false, special: false, code: true, data: true, library: false .storeRef(init.code) - .storeRef(init.data); + .storeRef(init.data) } inline fun contractShardBasechainAddress(s: StateInit): BasechainAddress { From 785478fac70b87d0230b9272d07306d458693b47 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Mon, 19 May 2025 16:24:40 +0300 Subject: [PATCH 24/27] fmt --- src/contracts/shard-utils.tact | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard-utils.tact index 040723f..826f7e7 100644 --- a/src/contracts/shard-utils.tact +++ b/src/contracts/shard-utils.tact @@ -64,7 +64,7 @@ extends inline fun storeStateInit(self: Builder, init: StateInit): Builder { return self .storeUint(3, 5) // fixed_prefix_length: false, special: false, code: true, data: true, library: false .storeRef(init.code) - .storeRef(init.data) + .storeRef(init.data); } inline fun contractShardBasechainAddress(s: StateInit): BasechainAddress { From 97265db0e07bfc2bb9e63059ecf30dafa365797a Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Thu, 22 May 2025 15:57:20 +0300 Subject: [PATCH 25/27] small refactor --- src/contracts/shard/jetton-minter.tact | 4 ++-- src/contracts/shard/jetton-wallet.tact | 4 ++-- src/contracts/{ => shard}/send.tact | 0 src/contracts/{ => shard}/shard-utils.tact | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename src/contracts/{ => shard}/send.tact (100%) rename src/contracts/{ => shard}/shard-utils.tact (100%) diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index 979352b..285bf9d 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -3,8 +3,8 @@ import "./messages"; import "./constants"; import "../utils.tact"; import "../utils"; -import "../shard-utils"; -import "../send"; +import "./shard-utils"; +import "./send"; struct JettonMinterState { totalSupply: Int as coins; diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index ccab720..7f5f596 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -1,7 +1,7 @@ import "./messages"; import "./constants"; -import "../shard-utils"; -import "../send"; +import "./shard-utils"; +import "./send"; import "../utils"; contract JettonWallet( diff --git a/src/contracts/send.tact b/src/contracts/shard/send.tact similarity index 100% rename from src/contracts/send.tact rename to src/contracts/shard/send.tact diff --git a/src/contracts/shard-utils.tact b/src/contracts/shard/shard-utils.tact similarity index 100% rename from src/contracts/shard-utils.tact rename to src/contracts/shard/shard-utils.tact From e03d7836a79c3af0cb41b80cb82e980f98e70393 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Mon, 26 May 2025 13:28:47 +0300 Subject: [PATCH 26/27] review --- src/contracts/shard/jetton-minter.tact | 17 ++++++++++------- src/contracts/shard/jetton-wallet.tact | 8 ++++---- src/tests/shard/shard.spec.ts | 2 +- src/wrappers/ExtendedShardedJettonMinter.ts | 12 ++++++------ src/wrappers/ExtendedShardedJettonWallet.ts | 15 ++++++++------- 5 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index 285bf9d..068e494 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -14,7 +14,7 @@ struct JettonMinterState { jettonWalletCode: Cell; } -contract JettonMinter( +contract JettonMinterSharded( totalSupply: Int as coins, owner: Address, jettonContent: Cell, @@ -52,7 +52,7 @@ contract JettonMinter( bounce: true, mode: SendRemainingValue | SendBounceIfActionFail, body: msg.mintMessage.toCell(), - init: initOf JettonWallet(msg.receiver, myAddress(), 0), + init: initOf JettonWalletSharded(msg.receiver, myAddress(), 0), }.toShard(receiverShard).send(); } @@ -61,9 +61,11 @@ contract JettonMinter( let ownerShard = msg.ownerAddress.getShard(); + let hash = getJettonWalletInit(msg.ownerAddress).hash(); + // If owner is basechain address, we can calculate jettonWallet let targetJettonWallet: BasechainAddress = (ownerWorkchain == Basechain) - ? BasechainAddress { hash: changeShard(getJettonWalletInit(msg.ownerAddress).hash(), ownerShard) } + ? BasechainAddress { hash: changeShard(hash, ownerShard) } : emptyBasechainAddress(); MessageParameters { @@ -133,7 +135,7 @@ contract JettonMinter( mintable: self.mintable, adminAddress: self.owner, jettonContent: self.jettonContent, - jettonWalletCode: codeOf JettonWallet, + jettonWalletCode: codeOf JettonWalletSharded, }; } @@ -143,7 +145,7 @@ contract JettonMinter( } inline fun getJettonWalletInit(address: Address): Cell { - let init = initOf JettonWallet(address, myAddress(), 0); + let init = initOf JettonWalletSharded(address, myAddress(), 0); return beginCell().storeShardedStateInit(init).endCell(); } @@ -154,12 +156,13 @@ inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { let ownerShard = jettonWalletOwner.getShard(); let expectedAddr = beginCell() - .storeUint(4, 3) - .storeUint(0, 8) + .storeUint(4, 3) // addr_std$10, anycast: false + .storeUint(0, 8) // workchain_id: 0 .storeUint(changeShard(init.hash(), ownerShard), 256) .asSlice(); return expectedAddr.loadAddress(); + } inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress { diff --git a/src/contracts/shard/jetton-wallet.tact b/src/contracts/shard/jetton-wallet.tact index 7f5f596..0d3d184 100644 --- a/src/contracts/shard/jetton-wallet.tact +++ b/src/contracts/shard/jetton-wallet.tact @@ -4,7 +4,7 @@ import "./shard-utils"; import "./send"; import "../utils"; -contract JettonWallet( +contract JettonWalletSharded( owner: Address, minter: Address, balance: Int as coins, @@ -42,7 +42,7 @@ contract JettonWallet( forwardTonAmount: msg.forwardTonAmount, forwardPayload: msg.forwardPayload, }.toCell(), - init: initOf JettonWallet(msg.destination, self.minter, 0), + init: initOf JettonWalletSharded(msg.destination, self.minter, 0), }.toShard(destinationShard).send(); } @@ -50,7 +50,7 @@ contract JettonWallet( self.balance += msg.amount; // This message should come only from master, or from other JettonWallet - let wallet: StateInit = initOf JettonWallet(msg.sender, self.minter, 0); + let wallet: StateInit = initOf JettonWalletSharded(msg.sender, self.minter, 0); if (!(wallet.hasSameBasechainAddressWithoutShard(sender()))) { require(self.minter == sender(), "Incorrect sender"); } @@ -81,7 +81,7 @@ contract JettonWallet( MessageParameters { to: msg.responseDestination!!, value: msgValue, - mode: SendRemainingBalance + SendIgnoreErrors, + mode: SendRemainingBalance | SendIgnoreErrors, bounce: false, body: JettonExcesses { queryId: msg.queryId }.toCell(), }.send(); diff --git a/src/tests/shard/shard.spec.ts b/src/tests/shard/shard.spec.ts index 8e9a1b3..64bea7a 100644 --- a/src/tests/shard/shard.spec.ts +++ b/src/tests/shard/shard.spec.ts @@ -2,7 +2,7 @@ import {Address, beginCell, Cell, toNano} from "@ton/core" import {Blockchain, BlockchainSnapshot, SandboxContract, TreasuryContract} from "@ton/sandbox" import "@ton/test-utils" -import {JettonUpdateContent, prefixLength} from "../../output/Shard_JettonMinter" +import {JettonUpdateContent, prefixLength} from "../../output/Shard_JettonMinterSharded" import {ExtendedShardedJettonMinter} from "../../wrappers/ExtendedShardedJettonMinter" import {ExtendedShardedJettonWallet} from "../../wrappers/ExtendedShardedJettonWallet" diff --git a/src/wrappers/ExtendedShardedJettonMinter.ts b/src/wrappers/ExtendedShardedJettonMinter.ts index b05672a..59138c5 100644 --- a/src/wrappers/ExtendedShardedJettonMinter.ts +++ b/src/wrappers/ExtendedShardedJettonMinter.ts @@ -3,24 +3,24 @@ import { ClaimTON, gasForBurn, gasForTransfer, - JettonMinter, + JettonMinterSharded, JettonUpdateContent, Mint, minTonsForStorage, ProvideWalletAddress, storeMint, -} from "../output/Shard_JettonMinter" +} from "../output/Shard_JettonMinterSharded" import {Address, beginCell, Cell, ContractProvider, Sender, toNano} from "@ton/core" -export class ExtendedShardedJettonMinter extends JettonMinter { +export class ExtendedShardedJettonMinter extends JettonMinterSharded { constructor(address: Address, init?: {code: Cell; data: Cell}) { super(address, init) } static async fromInit(totalSupply: bigint, owner: Address, jettonContent: Cell) { - const base = await JettonMinter.fromInit(totalSupply, owner, jettonContent, true) + const base = await JettonMinterSharded.fromInit(totalSupply, owner, jettonContent, true) if (base.init === undefined) { - throw new Error("JettonMinter init is not defined") + throw new Error("JettonMinterSharded init is not defined") } return new ExtendedShardedJettonMinter(base.address, { code: base.init.code, @@ -62,7 +62,7 @@ export class ExtendedShardedJettonMinter extends JettonMinter { * @returns A promise that resolves when the mint message has been sent. * * @example - * await jettonMinter.sendMint( + * await jettonMinterSharded.sendMint( * provider, * sender, * recipientAddress, diff --git a/src/wrappers/ExtendedShardedJettonWallet.ts b/src/wrappers/ExtendedShardedJettonWallet.ts index 24afc26..4595464 100644 --- a/src/wrappers/ExtendedShardedJettonWallet.ts +++ b/src/wrappers/ExtendedShardedJettonWallet.ts @@ -1,22 +1,23 @@ import { ClaimTON, JettonTransfer, - JettonWallet, + JettonWalletSharded, walletStateInitBits, walletStateInitCells, -} from "../output/Shard_JettonWallet" +} from "../output/Shard_JettonWalletSharded" + import {Address, Builder, Cell, ContractProvider, Sender, toNano} from "@ton/core" -import {JettonBurn, ProvideWalletBalance} from "../output/Shard_JettonMinter" +import {JettonBurn, ProvideWalletBalance} from "../output/Shard_JettonMinterSharded" -export class ExtendedShardedJettonWallet extends JettonWallet { +export class ExtendedShardedJettonWallet extends JettonWalletSharded { constructor(address: Address, init?: {code: Cell; data: Cell}) { super(address, init) } static async fromInit(owner: Address, minter: Address, balance: bigint) { - const base = await JettonWallet.fromInit(owner, minter, balance) + const base = await JettonWalletSharded.fromInit(owner, minter, balance) if (base.init === undefined) { - throw new Error("JettonWallet init is not defined") + throw new Error("JettonWalletSharded init is not defined") } return new ExtendedShardedJettonWallet(base.address, { code: base.init.code, @@ -48,7 +49,7 @@ export class ExtendedShardedJettonWallet extends JettonWallet { * @returns A promise that resolves when the transfer message has been sent, returns SendResult. * * @example - * await jettonWallet.sendTransfer( + * await jettonWalletSharded.sendTransfer( * provider, * sender, * toNano("0.05"), From 8a191c10288b0cddcbd3cf6c462edecb7044f28f Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Mon, 26 May 2025 13:30:13 +0300 Subject: [PATCH 27/27] fmt --- src/contracts/shard/jetton-minter.tact | 1 - 1 file changed, 1 deletion(-) diff --git a/src/contracts/shard/jetton-minter.tact b/src/contracts/shard/jetton-minter.tact index 068e494..7748794 100644 --- a/src/contracts/shard/jetton-minter.tact +++ b/src/contracts/shard/jetton-minter.tact @@ -162,7 +162,6 @@ inline fun getJettonWalletByOwner(jettonWalletOwner: Address): Address { .asSlice(); return expectedAddr.loadAddress(); - } inline fun getJettonBasechainWalletByOwner(jettonWalletOwner: Address): BasechainAddress {