From 34fab72b9cc93a16ffd1784b5018d2a3db906941 Mon Sep 17 00:00:00 2001 From: Dwight Lyle Date: Mon, 25 Mar 2024 15:37:03 -0600 Subject: [PATCH] Chainlink Contracts v1 update (#1762) * Update docs for contracts NPM 1-0-0 * Update URLs update imports and update function names * Functions: correct links * pin versions to solidity files at the end of the build (#1763) * Update package-lock.json * Re-update paths * Update Automation example import * Remove outdated Functions example * Use OwnerIsCreator to align with project's OZ version * Update other packages * Fix imports for new Data Streams contracts * Update contracts to beta.1 * Update other packages * Restore LinkToken.json import * Resolve compile issue? * StreamsUpkeep update * StreamsUpkeep update * General package updates * Update Streams for beta.1 contracts (#1829) * Update @chainlink/contracts to 1.0.0 latest version * Update all --------- Co-authored-by: aelmanaa Co-authored-by: Amine E Co-authored-by: Karim <98668332+khadni@users.noreply.github.com> --- package-lock.json | 2618 +++++++++++++---- package.json | 24 +- .../getting-started/solidity-compiler.webp | Bin 37106 -> 63176 bytes public/samples/APIRequests/APIConsumer.sol | 16 +- .../APIRequests/APIConsumerForwarder.sol | 26 +- .../samples/APIRequests/ATestnetConsumer.sol | 18 +- public/samples/APIRequests/FetchFromArray.sol | 14 +- public/samples/APIRequests/GenericBigWord.sol | 14 +- public/samples/APIRequests/GetGasPrice.sol | 10 +- .../samples/APIRequests/MultiWordConsumer.sol | 22 +- .../samples/Automation/CounterwForwarder.sol | 4 +- .../samples/Automation/StreamsWithError.sol | 4 +- public/samples/Automation/example.sol | 8 +- .../VRFSubscriptionBalanceMonitor.sol | 2 +- .../AutomatedFunctionsConsumerExample.sol | 2 +- ...ustomAutomatedFunctionsConsumerExample.sol | 4 +- .../FunctionsConsumerDecoder.sol | 4 +- .../FunctionsConsumerExample.sol | 4 +- .../GettingStartedFunctionsConsumer.sol | 4 +- public/samples/ChainlinkNodes/Operator.sol | 4 +- public/samples/ChainlinkNodes/Oracle.sol | 3 - public/samples/DataFeeds/DataConsumerV3.sol | 2 +- .../DataConsumerWithSequencerCheck.sol | 2 +- .../DataFeeds/HistoricalDataConsumer.sol | 2 +- .../DataFeeds/NFTFloorPriceConsumerV3.sol | 2 +- public/samples/DataFeeds/PriceConverter.sol | 2 +- .../samples/DataFeeds/ReserveConsumerV3.sol | 2 +- public/samples/DataStreams/StreamsUpkeep.sol | 22 +- .../DataStreams/StreamsUpkeepRegistrar.sol | 22 +- .../FunctionsExample.sol.ignore | 92 - public/samples/VRF/VRFD20.sol | 2 +- public/samples/VRF/VRFv2Consumer.sol | 2 +- public/samples/VRF/VRFv2MultiplePaths.sol | 2 +- .../samples/VRF/VRFv2SubscriptionManager.sol | 2 +- public/samples/VRF/mock/LinkToken.sol | 4 +- .../samples/VRF/mock/VRFCoordinatorV2Mock.sol | 2 +- public/samples/VRF/mock/VRFV2Wrapper.sol | 2 +- public/samples/VRF/mock/VRFv2Consumer.sol | 2 +- .../avasummit/VRFv2SubscriptionManager.sol | 2 +- src/content/any-api/api-reference.mdx | 64 +- .../get-request/examples/array-response.mdx | 2 +- .../get-request/examples/large-responses.mdx | 4 +- .../examples/multi-variable-responses.mdx | 4 +- .../examples/single-word-response.mdx | 6 +- src/content/any-api/getting-started.mdx | 4 +- src/content/any-api/testnet-oracles.mdx | 44 +- .../ccip/tutorials/ccipreceive-gaslimit.mdx | 4 +- .../api-reference/functions-client.mdx | 2 +- .../api-reference/functions-request.mdx | 2 +- .../chainlink-functions/getting-started.mdx | 4 +- .../resources/architecture.mdx | 14 +- .../external-adapters/contract-creators.mdx | 14 +- .../oracle-jobs/v1/adapters.mdx | 24 +- .../v1/fulfilling-requests.mdx | 2 +- .../chainlink-nodes/v1/using-forwarder.mdx | 2 +- src/content/vrf/v2/getting-started.mdx | 10 +- .../common/StreamsLookupInterface.mdx | 12 +- .../common/AutomatedFunctionsConsumer.mdx | 2 +- .../CustomAutomatedFunctionsConsumer.mdx | 2 +- .../common/FunctionsConsumer.mdx | 4 +- .../data-streams/common/gettingStarted.mdx | 46 +- .../common/gettingStartedHardhat.mdx | 12 +- src/scripts/link-to-wallet.ts | 2 +- 63 files changed, 2335 insertions(+), 924 deletions(-) delete mode 100644 public/samples/ChainlinkNodes/Oracle.sol delete mode 100644 public/samples/Functions/adding-functions-to-projects/FunctionsExample.sol.ignore diff --git a/package-lock.json b/package-lock.json index 9ed55cfbbf1..d3132969c56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,17 +9,17 @@ "version": "1.0.1", "license": "ISC", "dependencies": { - "@11ty/eleventy-fetch": "^4.0.0", + "@11ty/eleventy-fetch": "^4.0.1", "@astro-community/astro-embed-youtube": "^0.4.4", - "@astrojs/mdx": "^2.1.1", + "@astrojs/mdx": "^2.2.1", "@astrojs/partytown": "^2.0.4", "@astrojs/preact": "^3.1.1", "@astrojs/prism": "^3.0.0", - "@astrojs/react": "^3.0.10", + "@astrojs/react": "^3.1.0", "@astrojs/sitemap": "^3.1.1", - "@chainlink/components": "^0.4.14", - "@chainlink/contracts": "0.8.0", - "@chainlink/contracts-ccip": "1.4.0", + "@chainlink/components": "^0.4.15", + "@chainlink/contracts": "^1.0.0", + "@chainlink/contracts-ccip": "^1.4.0", "@chainlink/design-system": "^0.1.50", "@chainlink/solana-sdk": "^0.2.2", "@metamask/detect-provider": "^2.0.0", @@ -27,7 +27,7 @@ "@nanostores/preact": "^0.5.1", "@nanostores/react": "^0.7.2", "@openzeppelin/contracts": "^4.9.6", - "astro": "^4.4.8", + "astro": "^4.5.9", "bignumber.js": "^9.1.2", "clipboard": "^2.0.11", "dotenv": "^16.4.5", @@ -36,7 +36,7 @@ "github-slugger": "^2.0.0", "lodash": "^4.17.21", "nanostores": "^0.9.5", - "preact": "^10.19.6", + "preact": "^10.20.1", "react-instantsearch": "^7.7.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", @@ -47,8 +47,8 @@ "@nomicfoundation/hardhat-toolbox": "^2.0.2", "@nomiclabs/hardhat-ethers": "^2.2.3", "@project-serum/anchor": "^0.26.0", - "@types/node": "^20.11.24", - "@types/react": "^18.2.61", + "@types/node": "^20.11.30", + "@types/react": "^18.2.70", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", "eslint": "^8.57.0", @@ -58,7 +58,7 @@ "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.1.1", - "hardhat": "^2.20.1", + "hardhat": "^2.22.2", "husky": "^8.0.3", "lint-staged": "^13.3.0", "prettier": "^2.8.8", @@ -69,13 +69,13 @@ "solhint-plugin-prettier": "^0.0.5", "ts-jest": "^29.1.2", "tsconfig-paths": "^4.2.0", - "typescript": "^5.3.3" + "typescript": "^5.4.3" } }, "node_modules/@11ty/eleventy-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-4.0.0.tgz", - "integrity": "sha512-wGAd0r+8DUWr22fK5r07dOKuNY6ltA7hX+sJzngGZL1yJmuUVdM/xPQZ+iq0BFgf/ZeRdpVEzf2D0cpVZUuiTg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-4.0.1.tgz", + "integrity": "sha512-yIiLM5ziBmg86i4TlXpBdcIygJHvh/GgPJyAiFOckO9H4y9cQDM8eIcJCUQ4Mum0NEVui/OjhEut2R08xw0vlQ==", "dependencies": { "debug": "^4.3.4", "flat-cache": "^3.0.4", @@ -303,22 +303,24 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.6.0.tgz", - "integrity": "sha512-c74k8iGHL3DzkosSJ0tGcHIEBEiIfBhr7eadSaPyvWlVKaieDVzVs8OW1tnRSQyBsfMc8DZQ4RcN2KAcESD8UQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.7.0.tgz", + "integrity": "sha512-XpC8MAaWjD1ff6/IfkRq/5k1EFj6zhCNqXRd5J43SVJEBj/Bsmizkm8N0xOYscGcDFQkRgEw6/eKnI5x/1l6aA==" }, "node_modules/@astrojs/internal-helpers": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.2.1.tgz", - "integrity": "sha512-06DD2ZnItMwUnH81LBLco3tWjcZ1lGU9rLCCBaeUCGYe9cI0wKyY2W3kDyoW1I6GmcWgt1fu+D1CTvz+FIKf8A==" + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.3.0.tgz", + "integrity": "sha512-tGmHvrhpzuz0JBHaJX8GywN9g4rldVNHtkoVDC3m/DdzBO70jGoVuc0uuNVglRYnsdwkbG0K02Iw3nOOR3/Y4g==" }, "node_modules/@astrojs/markdown-remark": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-4.2.1.tgz", - "integrity": "sha512-2RQBIwrq+2qPYtp99bH+eL5hfbK0BoxXla85lHsRpIX/IsGqFrPX6pXI2cbWPihBwGbKCdxS6uZNX2QerZWwpQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-4.3.1.tgz", + "integrity": "sha512-eJFi600tkRjTFiwzY9oD8AgCgB7gFqyWCKWuZ33dATVBgLiROD+zlMZ8STZzU7+ZALvmiUAun/K7umTmP5YfVQ==", "dependencies": { "@astrojs/prism": "^3.0.0", "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.0", + "hast-util-to-text": "^4.0.0", "import-meta-resolve": "^4.0.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", @@ -327,9 +329,11 @@ "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "remark-smartypants": "^2.0.0", - "shikiji": "^0.9.18", + "shiki": "^1.1.2", "unified": "^11.0.4", + "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", "vfile": "^6.0.1" } }, @@ -422,11 +426,11 @@ } }, "node_modules/@astrojs/mdx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-2.1.1.tgz", - "integrity": "sha512-AgGFdE7HOGmoFooGvMSatkA9FiSKwyVW7ImHot/bXJ6uAbFfu6iG2ht18Cf1pT22Hda/6iSCGWusFvBv0/EnKQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-2.2.1.tgz", + "integrity": "sha512-bSr/AkvGieD9Pc5ZzMnAk7IHnw0vyt/aOujuYUmYT+NHiWahAUy/+ywNNMhTMmea0irdMYnBVC1AEKMQ/oXxow==", "dependencies": { - "@astrojs/markdown-remark": "4.2.1", + "@astrojs/markdown-remark": "4.3.1", "@mdx-js/mdx": "^3.0.0", "acorn": "^8.11.2", "es-module-lexer": "^1.4.1", @@ -565,9 +569,9 @@ } }, "node_modules/@astrojs/react": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-3.0.10.tgz", - "integrity": "sha512-uGRIwKMAn7tva2vxXMyoVIGxWFr0rjZ8ZWIlkTG/vIpnAjD2nM8Cz6B8j7yzj176jvl6gZ6xTbTVPm09aeK0Yw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-3.1.0.tgz", + "integrity": "sha512-KZhZyV+sUDZEjlrmPWNiPGeYowG9uq6/aMbCgVaeKEBlWT4Kg32TNwBOhZk6AcE4LY1l3mIwt3orUGE2JV96/g==", "dependencies": { "@vitejs/plugin-react": "^4.2.0", "ultrahtml": "^1.3.0" @@ -609,12 +613,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -629,20 +633,20 @@ } }, "node_modules/@babel/core": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", - "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", + "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.1", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", + "@babel/helpers": "^7.24.1", + "@babel/parser": "^7.24.1", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -658,13 +662,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -812,35 +816,36 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz", - "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", + "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1109,31 +1114,31 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1142,9 +1147,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -1173,9 +1178,9 @@ } }, "node_modules/@chainlink/components": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@chainlink/components/-/components-0.4.14.tgz", - "integrity": "sha512-ezmXCp7YAaceIZC/dUWvUcIM8DyF2D58SZwqTj8lq46ZqGkT8/yGj39hXFL3N56MaMA/wMM0/Y8SkIx/y3tiiA==", + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/@chainlink/components/-/components-0.4.15.tgz", + "integrity": "sha512-1EmD5FQngo1fS1ko6zAM1MF89tWAok1HpAO6m7t5Ech2x43baI69eycO1PgtDIgXH73WI/y8wNGmMxMd37iqDQ==", "dependencies": { "@chainlink/design-system": "*", "@floating-ui/react": "0.22.2", @@ -1193,14 +1198,17 @@ } }, "node_modules/@chainlink/contracts": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.8.0.tgz", - "integrity": "sha512-nUv1Uxw5Mn92wgLs2bgPYmo8hpdQ3s9jB/lcbdU0LmNOVu0hbfmouVnqwRLa28Ll50q6GczUA+eO0ikNIKLZsA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-1.0.0.tgz", + "integrity": "sha512-d7VEOewoZRR0U7SQq7837g77b0tLwNjIJo5FZ5ZFi9yJp03x73tqXpvdFZvb8sTod7OqV5wC72CDts+uHKKrYg==", "dependencies": { - "@eth-optimism/contracts": "^0.5.21", - "@openzeppelin/contracts": "~4.3.3", - "@openzeppelin/contracts-upgradeable-4.7.3": "npm:@openzeppelin/contracts-upgradeable@v4.7.3", - "@openzeppelin/contracts-v0.7": "npm:@openzeppelin/contracts@v3.4.2" + "@changesets/changelog-github": "^0.4.8", + "@changesets/cli": "~2.26.2", + "@eth-optimism/contracts": "0.6.0", + "@openzeppelin/contracts": "4.9.3", + "@openzeppelin/contracts-upgradeable": "4.9.3", + "@scroll-tech/contracts": "0.1.0", + "semver": "^7.5.4" } }, "node_modules/@chainlink/contracts-ccip": { @@ -1234,10 +1242,53 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.3.tgz", "integrity": "sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==" }, + "node_modules/@chainlink/contracts/node_modules/@eth-optimism/contracts": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.6.0.tgz", + "integrity": "sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==", + "dependencies": { + "@eth-optimism/core-utils": "0.12.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0" + }, + "peerDependencies": { + "ethers": "^5" + } + }, "node_modules/@chainlink/contracts/node_modules/@openzeppelin/contracts": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz", - "integrity": "sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==" + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.3.tgz", + "integrity": "sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==" + }, + "node_modules/@chainlink/contracts/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@chainlink/contracts/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@chainlink/contracts/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/@chainlink/design-system": { "version": "0.1.50", @@ -1426,6 +1477,438 @@ "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" }, + "node_modules/@changesets/apply-release-plan": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.1.4.tgz", + "integrity": "sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/config": "^2.3.1", + "@changesets/get-version-range-type": "^0.3.2", + "@changesets/git": "^2.0.0", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "detect-indent": "^6.0.0", + "fs-extra": "^7.0.1", + "lodash.startcase": "^4.4.0", + "outdent": "^0.5.0", + "prettier": "^2.7.1", + "resolve-from": "^5.0.0", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/apply-release-plan/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@changesets/apply-release-plan/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@changesets/apply-release-plan/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@changesets/apply-release-plan/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@changesets/assemble-release-plan": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.2.4.tgz", + "integrity": "sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.1.4", + "@changesets/get-dependents-graph": "^1.3.6", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/assemble-release-plan/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@changesets/assemble-release-plan/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@changesets/assemble-release-plan/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@changesets/changelog-git": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.14.tgz", + "integrity": "sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==", + "dependencies": { + "@changesets/types": "^5.2.1" + } + }, + "node_modules/@changesets/changelog-github": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@changesets/changelog-github/-/changelog-github-0.4.8.tgz", + "integrity": "sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw==", + "dependencies": { + "@changesets/get-github-info": "^0.5.2", + "@changesets/types": "^5.2.1", + "dotenv": "^8.1.0" + } + }, + "node_modules/@changesets/changelog-github/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@changesets/cli": { + "version": "2.26.2", + "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.26.2.tgz", + "integrity": "sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/apply-release-plan": "^6.1.4", + "@changesets/assemble-release-plan": "^5.2.4", + "@changesets/changelog-git": "^0.1.14", + "@changesets/config": "^2.3.1", + "@changesets/errors": "^0.1.4", + "@changesets/get-dependents-graph": "^1.3.6", + "@changesets/get-release-plan": "^3.0.17", + "@changesets/git": "^2.0.0", + "@changesets/logger": "^0.0.5", + "@changesets/pre": "^1.0.14", + "@changesets/read": "^0.5.9", + "@changesets/types": "^5.2.1", + "@changesets/write": "^0.2.3", + "@manypkg/get-packages": "^1.1.3", + "@types/is-ci": "^3.0.0", + "@types/semver": "^7.5.0", + "ansi-colors": "^4.1.3", + "chalk": "^2.1.0", + "enquirer": "^2.3.0", + "external-editor": "^3.1.0", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "is-ci": "^3.0.1", + "meow": "^6.0.0", + "outdent": "^0.5.0", + "p-limit": "^2.2.0", + "preferred-pm": "^3.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "spawndamnit": "^2.0.0", + "term-size": "^2.1.0", + "tty-table": "^4.1.5" + }, + "bin": { + "changeset": "bin.js" + } + }, + "node_modules/@changesets/cli/node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/@changesets/cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@changesets/cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@changesets/cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@changesets/cli/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@changesets/cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@changesets/config": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@changesets/config/-/config-2.3.1.tgz", + "integrity": "sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==", + "dependencies": { + "@changesets/errors": "^0.1.4", + "@changesets/get-dependents-graph": "^1.3.6", + "@changesets/logger": "^0.0.5", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1", + "micromatch": "^4.0.2" + } + }, + "node_modules/@changesets/errors": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.1.4.tgz", + "integrity": "sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==", + "dependencies": { + "extendable-error": "^0.1.5" + } + }, + "node_modules/@changesets/get-dependents-graph": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.6.tgz", + "integrity": "sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==", + "dependencies": { + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/get-dependents-graph/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@changesets/get-dependents-graph/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@changesets/get-dependents-graph/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@changesets/get-github-info": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@changesets/get-github-info/-/get-github-info-0.5.2.tgz", + "integrity": "sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==", + "dependencies": { + "dataloader": "^1.4.0", + "node-fetch": "^2.5.0" + } + }, + "node_modules/@changesets/get-release-plan": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.17.tgz", + "integrity": "sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/assemble-release-plan": "^5.2.4", + "@changesets/config": "^2.3.1", + "@changesets/pre": "^1.0.14", + "@changesets/read": "^0.5.9", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3" + } + }, + "node_modules/@changesets/get-version-range-type": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz", + "integrity": "sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==" + }, + "node_modules/@changesets/git": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@changesets/git/-/git-2.0.0.tgz", + "integrity": "sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.1.4", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "is-subdir": "^1.1.1", + "micromatch": "^4.0.2", + "spawndamnit": "^2.0.0" + } + }, + "node_modules/@changesets/logger": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.0.5.tgz", + "integrity": "sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==", + "dependencies": { + "chalk": "^2.1.0" + } + }, + "node_modules/@changesets/parse": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.16.tgz", + "integrity": "sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==", + "dependencies": { + "@changesets/types": "^5.2.1", + "js-yaml": "^3.13.1" + } + }, + "node_modules/@changesets/parse/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@changesets/parse/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/parse/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@changesets/pre": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.14.tgz", + "integrity": "sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.1.4", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1" + } + }, + "node_modules/@changesets/read": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.5.9.tgz", + "integrity": "sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/git": "^2.0.0", + "@changesets/logger": "^0.0.5", + "@changesets/parse": "^0.3.16", + "@changesets/types": "^5.2.1", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "p-filter": "^2.1.0" + } + }, + "node_modules/@changesets/types": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-5.2.1.tgz", + "integrity": "sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==" + }, + "node_modules/@changesets/write": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.2.3.tgz", + "integrity": "sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/types": "^5.2.1", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "prettier": "^2.7.1" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -1878,19 +2361,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@eth-optimism/contracts": { - "version": "0.5.40", - "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.40.tgz", - "integrity": "sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==", - "dependencies": { - "@eth-optimism/core-utils": "0.12.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0" - }, - "peerDependencies": { - "ethers": "^5" - } - }, "node_modules/@eth-optimism/core-utils": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz", @@ -3568,13 +4038,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -3589,9 +4059,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -3602,14 +4072,122 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@manypkg/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@types/node": "^12.7.1", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0" + } + }, + "node_modules/@manypkg/find-root/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/@manypkg/find-root/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@manypkg/find-root/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/get-packages": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", + "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@changesets/types": "^4.0.1", + "@manypkg/find-root": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "^11.0.0", + "read-yaml-file": "^1.1.0" + } + }, + "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", + "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==" + }, + "node_modules/@manypkg/get-packages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, "node_modules/@mdx-js/mdx": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.0.tgz", @@ -3732,11 +4310,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@medv/finder": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@medv/finder/-/finder-3.2.0.tgz", - "integrity": "sha512-JmU7JIBwyL8RAzefvzALT4sP2M0biGk8i2invAgpQmma/QgfsaqoHIvJ7S0YC8n9hUVG8X3Leul2nGa06PvhbQ==" - }, "node_modules/@metamask/detect-provider": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@metamask/detect-provider/-/detect-provider-2.0.0.tgz", @@ -4068,180 +4641,189 @@ "node": ">= 8" } }, - "node_modules/@nomicfoundation/ethereumjs-block": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.4.tgz", - "integrity": "sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw==", + "node_modules/@nomicfoundation/edr": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.3.2.tgz", + "integrity": "sha512-HGWtjibAK1mo4I2A7nJ/fXqe/J9G54OrSPJnnkY2K8TiXotYLShGd9GvHkae3PuFjTJKm6ZgBy7tveJj5yrCfw==", "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "ethereum-cryptography": "0.1.3" - }, "engines": { - "node": ">=18" - } - }, - "node_modules/@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.4.tgz", - "integrity": "sha512-jYsd/kwzbmpnxx86tXsYV8wZ5xGvFL+7/P0c6OlzpClHsbFzeF41KrYA9scON8Rg6bZu3ZTv6JOAgj3t7USUfg==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-ethash": "3.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "lru-cache": "^10.0.0" + "node": ">= 18" }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "optionalDependencies": { + "@nomicfoundation/edr-darwin-arm64": "0.3.2", + "@nomicfoundation/edr-darwin-x64": "0.3.2", + "@nomicfoundation/edr-linux-arm64-gnu": "0.3.2", + "@nomicfoundation/edr-linux-arm64-musl": "0.3.2", + "@nomicfoundation/edr-linux-x64-gnu": "0.3.2", + "@nomicfoundation/edr-linux-x64-musl": "0.3.2", + "@nomicfoundation/edr-win32-arm64-msvc": "0.3.2", + "@nomicfoundation/edr-win32-ia32-msvc": "0.3.2", + "@nomicfoundation/edr-win32-x64-msvc": "0.3.2" + } + }, + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.2.tgz", + "integrity": "sha512-l6wfSBUUbGJiCENT6272CDI8yoMuf0sZH56H5qz3HnAyVzenkOvmzyF6/lar54m986kdAQqWls4cLvDxiOuLxg==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "14 || >=16.14" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-common": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", - "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.2.tgz", + "integrity": "sha512-OboExL7vEw+TRJQl3KkaEKU4K7PTdZPTInZ0fxMAtOpcWp7EKR+dQo68vc/iAOusB3xszHKxt7t+WpisItfdcg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-util": "9.0.4" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.4.tgz", - "integrity": "sha512-xvIrwIMl9sSaiYKRem68+O7vYdj7Q2XWv5P7JXiIkn83918QzWHvqbswTRsH7+r6X1UEvdsURRnZbvZszEjAaQ==", + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.2.tgz", + "integrity": "sha512-xtEK+1eg++3pHi6405NDXd80S3CGOFEGQIyVGCwjMGQFOLSzBGGCsrb/0GB4J19zd1o/8ftCd/HjZcbVAWWTLQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "bigint-crypto-utils": "^3.2.2", - "ethereum-cryptography": "0.1.3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-evm": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.4.tgz", - "integrity": "sha512-lTyZZi1KpeMHzaO6cSVisR2tjiTTedjo7PcmhI/+GNFo9BmyY6QYzGeSti0sFttmjbEMioHgXxl5yrLNRg6+1w==", + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.2.tgz", + "integrity": "sha512-3cIsskJOXQ1yEVsImmCacY7O03tUTiWrmd54F05PnPFrDLkjbzodQ3b2gUWzfbzUZWl67ZTJd1CvVSzpe7XGzw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-statemanager": "2.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "@types/debug": "^4.1.9", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "rustbn-wasm": "^0.2.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", - "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.2.tgz", + "integrity": "sha512-ouPdphHNsyO7wqwa4hwahC5WqBglK/fIvMmhR/SXNZ9qruIpsA8ZZKIURaHMOv/2h2BbNGcyTX9uEk6+5rK/MQ==", + "cpu": [ + "x64" + ], "dev": true, - "bin": { - "rlp": "bin/rlp.cjs" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.4.tgz", - "integrity": "sha512-HPDjeFrxw6llEi+BzqXkZ+KkvFnTOPczuHBtk21hRlDiuKuZz32dPzlhpRsDBGV1b5JTmRDUVqCS1lp3Gghw4Q==", + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.2.tgz", + "integrity": "sha512-sRhwhiPbkpJMOUwXW1FZw9ks6xWyQhIhM0E8o3TXEXKSPKTE6whQLEk1R37iFITaI36vb6rSwLKTU1cb32gCoA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "js-sdsl": "^4.1.4", - "lru-cache": "^10.0.0" - }, - "peerDependencies": { - "@nomicfoundation/ethereumjs-verkle": "0.0.2" - }, - "peerDependenciesMeta": { - "@nomicfoundation/ethereumjs-verkle": { - "optional": true - } + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "node_modules/@nomicfoundation/edr-win32-arm64-msvc": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-arm64-msvc/-/edr-win32-arm64-msvc-0.3.2.tgz", + "integrity": "sha512-IEwVealKfumu1HSSnama26yPuQC/uthRPK5IWtFsQUOGwOXaS1r9Bu7cGYH2jBHl3IT/JbxD4xzPq/2pM9uK0A==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "14 || >=16.14" + "node": ">= 10" } }, - "node_modules/@nomicfoundation/ethereumjs-trie": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.4.tgz", - "integrity": "sha512-3nSwQiFMvr2VFe/aZUyinuohYvtytUqZCUCvIWcPJ/BwJH6oQdZRB42aNFBJ/8nAh2s3OcroWpBLskzW01mFKA==", + "node_modules/@nomicfoundation/edr-win32-ia32-msvc": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-ia32-msvc/-/edr-win32-ia32-msvc-0.3.2.tgz", + "integrity": "sha512-jYMnf6SFgguqROswwdsjJ1wvneD/5c16pVu9OD4DxNqhKNP5bHEw6L2N4DcJ89tpXMpJ6AlOpc0QuwzddiZ3tA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "0.1.3", - "lru-cache": "^10.0.0", - "readable-stream": "^3.6.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=18" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.2.tgz", + "integrity": "sha512-Byn4QuWczRy/DUUQM3WjglgX/jGVUURVFaUsmIhnGg//MPlCLawubBGRqsrMuvaYedlIIJ4I2rgKvZlxdgHrqg==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "14 || >=16.14" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@nomicfoundation/ethereumjs-util": "9.0.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "dev": true, + "bin": { + "rlp": "bin/rlp.cjs" }, "engines": { - "node": ">= 6" + "node": ">=18" } }, "node_modules/@nomicfoundation/ethereumjs-tx": { @@ -4288,52 +4870,6 @@ } } }, - "node_modules/@nomicfoundation/ethereumjs-verkle": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-verkle/-/ethereumjs-verkle-0.0.2.tgz", - "integrity": "sha512-bjnfZElpYGK/XuuVRmLS3yDvr+cDs85D9oonZ0YUa5A3lgFgokWMp76zXrxX2jVQ0BfHaw12y860n1+iOi6yFQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "lru-cache": "^10.0.0", - "rust-verkle-wasm": "^0.0.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@nomicfoundation/ethereumjs-verkle/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-vm": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.4.tgz", - "integrity": "sha512-gsA4IhmtWHI4BofKy3kio9W+dqZQs5Ji5mLjLYxHCkat+JQBUt5szjRKra2F9nGDJ2XcI/wWb0YWUFNgln4zRQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-blockchain": "7.0.4", - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-evm": "2.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-statemanager": "2.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@nomicfoundation/hardhat-chai-matchers": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", @@ -4637,18 +5173,6 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz", "integrity": "sha512-jjaHAVRMrE4UuZNfDwjlLGDxTHWIOwTJS2ldnc278a0gevfXfPr8hxKEVBGFBE96kl2G3VHDZhUimw/+G3TG2A==" }, - "node_modules/@openzeppelin/contracts-upgradeable-4.7.3": { - "name": "@openzeppelin/contracts-upgradeable", - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz", - "integrity": "sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==" - }, - "node_modules/@openzeppelin/contracts-v0.7": { - "name": "@openzeppelin/contracts", - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2.tgz", - "integrity": "sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==" - }, "node_modules/@openzeppelin/upgrades-core": { "version": "1.32.5", "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.32.5.tgz", @@ -6031,6 +6555,11 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/@shikijs/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.2.0.tgz", + "integrity": "sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==" + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -6431,6 +6960,14 @@ "resolved": "https://registry.npmjs.org/@types/hogan.js/-/hogan.js-3.0.5.tgz", "integrity": "sha512-/uRaY3HGPWyLqOyhgvW9Aa43BNnLZrNeQxl2p8wqId4UHMfPKolSB+U7BlZyO1ng7MkLnyEAItsBzCG0SDhqrA==" }, + "node_modules/@types/is-ci": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.4.tgz", + "integrity": "sha512-AkCYCmwlXeuH89DagDCzvCAyltI2v9lh3U3DqSg/GrBYoReAaWwxfXCqMx9UV5MajLZ4ZFwZzV4cABGIxk2XRw==", + "dependencies": { + "ci-info": "^3.1.0" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -6493,6 +7030,11 @@ "dev": true, "peer": true }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" + }, "node_modules/@types/mocha": { "version": "10.0.6", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", @@ -6514,13 +7056,18 @@ } }, "node_modules/@types/node": { - "version": "20.11.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", - "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" + }, "node_modules/@types/pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -6548,9 +7095,9 @@ "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==" }, "node_modules/@types/react": { - "version": "18.2.61", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.61.tgz", - "integrity": "sha512-NURTN0qNnJa7O/k4XUkEW2yfygA+NxS0V5h1+kp9jPwhzZy95q3ADoGMP0+JypMhrZBTTgjKAUlTctde1zzeQA==", + "version": "18.2.70", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.70.tgz", + "integrity": "sha512-hjlM2hho2vqklPhopNkXkdkeq6Lv8WSZTpr7956zY+3WS5cfYUewtCzsJLsbW5dEv3lfSeQ4W14ZFeKC437JRQ==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -6566,22 +7113,6 @@ "@types/react": "*" } }, - "node_modules/@types/readable-stream": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", - "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } - }, - "node_modules/@types/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, "node_modules/@types/sax": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", @@ -6607,8 +7138,7 @@ "node_modules/@types/semver": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", - "dev": true + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==" }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -7166,7 +7696,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, "engines": { "node": ">=6" } @@ -7290,7 +7819,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -7334,7 +7862,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, "engines": { "node": ">=8" } @@ -7392,7 +7919,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -7428,7 +7954,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "devOptional": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -7446,6 +7971,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -7485,21 +8018,20 @@ } }, "node_modules/astro": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.4.8.tgz", - "integrity": "sha512-jAAfzvgHOfuZmqJjnSDownVNuWKYmsGkrFqecEppHarMA/cZ5QIboW6GQHZ8eGZQdtYRCjON3h4i64XFZfuwSg==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.5.9.tgz", + "integrity": "sha512-GheU72Goz7dYQNKaqTxB2H49cNvHfahGSbNkTvMXk+gyHf/g633qadqlO2ZQbTUacoUWmDzvS5fhMZt2/w4naQ==", "dependencies": { - "@astrojs/compiler": "^2.5.3", - "@astrojs/internal-helpers": "0.2.1", - "@astrojs/markdown-remark": "4.2.1", + "@astrojs/compiler": "^2.7.0", + "@astrojs/internal-helpers": "0.3.0", + "@astrojs/markdown-remark": "4.3.1", "@astrojs/telemetry": "3.0.4", - "@babel/core": "^7.23.3", + "@babel/core": "^7.24.3", "@babel/generator": "^7.23.3", "@babel/parser": "^7.23.3", "@babel/plugin-transform-react-jsx": "^7.22.5", "@babel/traverse": "^7.23.3", "@babel/types": "^7.23.3", - "@medv/finder": "^3.1.0", "@types/babel__core": "^7.20.4", "acorn": "^8.11.2", "aria-query": "^5.3.0", @@ -7530,7 +8062,6 @@ "js-yaml": "^4.1.0", "kleur": "^4.1.4", "magic-string": "^0.30.3", - "mdast-util-to-hast": "13.0.2", "mime": "^3.0.0", "ora": "^7.0.1", "p-limit": "^5.0.0", @@ -7541,8 +8072,7 @@ "rehype": "^13.0.1", "resolve": "^1.22.4", "semver": "^7.5.4", - "shikiji": "^0.9.19", - "shikiji-core": "^0.9.19", + "shiki": "^1.1.2", "string-width": "^7.0.0", "strip-ansi": "^7.1.0", "tsconfck": "^3.0.0", @@ -7552,7 +8082,8 @@ "vitefu": "^0.2.5", "which-pm": "^2.1.1", "yargs-parser": "^21.1.1", - "zod": "^3.22.4" + "zod": "^3.22.4", + "zod-to-json-schema": "^3.22.4" }, "bin": { "astro": "astro.js" @@ -7752,7 +8283,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "devOptional": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -8046,6 +8576,17 @@ "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, + "node_modules/better-path-resolve": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", + "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", + "dependencies": { + "is-windows": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/bigint-buffer": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", @@ -8058,15 +8599,6 @@ "node": ">= 10.0.0" } }, - "node_modules/bigint-crypto-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", - "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/bignumber.js": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", @@ -8248,6 +8780,14 @@ "node": ">=8" } }, + "node_modules/breakword": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/breakword/-/breakword-1.0.6.tgz", + "integrity": "sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==", + "dependencies": { + "wcwidth": "^1.0.1" + } + }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -8475,7 +9015,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "devOptional": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -8511,6 +9050,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001591", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz", @@ -8648,6 +9211,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, "node_modules/charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", @@ -8899,8 +9467,6 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -8914,8 +9480,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -8924,8 +9488,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8940,8 +9502,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8952,23 +9512,17 @@ "node_modules/cliui/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "peer": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -8977,8 +9531,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8992,8 +9544,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9005,8 +9555,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9019,6 +9567,14 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clsx": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", @@ -9506,11 +10062,39 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "node_modules/csv": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz", + "integrity": "sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==", + "dependencies": { + "csv-generate": "^3.4.3", + "csv-parse": "^4.16.3", + "csv-stringify": "^5.6.5", + "stream-transform": "^2.1.3" + }, + "engines": { + "node": ">= 0.1.90" + } + }, + "node_modules/csv-generate": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz", + "integrity": "sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==" + }, + "node_modules/csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==" + }, + "node_modules/csv-stringify": { + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz", + "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==" + }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -9527,7 +10111,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -9544,7 +10127,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -9557,6 +10139,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dataloader": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", + "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==" + }, "node_modules/death": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", @@ -9592,6 +10179,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -9670,11 +10288,21 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "devOptional": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -9691,7 +10319,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "devOptional": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -9752,6 +10379,14 @@ "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "engines": { + "node": ">=8" + } + }, "node_modules/detect-libc": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", @@ -9854,7 +10489,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "dependencies": { "path-type": "^4.0.0" }, @@ -10038,7 +10672,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -10051,7 +10684,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -10060,7 +10692,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10092,7 +10723,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -10101,7 +10731,6 @@ "version": "1.23.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", - "devOptional": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -10161,7 +10790,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "devOptional": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -10173,7 +10801,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "devOptional": true, "engines": { "node": ">= 0.4" } @@ -10187,7 +10814,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "devOptional": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -10199,7 +10825,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "devOptional": true, "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -10213,7 +10838,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "devOptional": true, "dependencies": { "hasown": "^2.0.0" } @@ -10222,7 +10846,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "devOptional": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -11532,6 +12155,11 @@ "node": ">=0.10.0" } }, + "node_modules/extendable-error": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", + "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==" + }, "node_modules/extension-port-stream": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/extension-port-stream/-/extension-port-stream-2.1.1.tgz", @@ -11543,6 +12171,19 @@ "node": ">=12.0.0" } }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/eyes": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", @@ -11777,7 +12418,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "devOptional": true, "dependencies": { "is-callable": "^1.1.3" } @@ -11813,7 +12453,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -11860,7 +12499,6 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -11878,7 +12516,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11895,7 +12532,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -11923,7 +12559,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "devOptional": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -11981,7 +12616,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -12102,7 +12736,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "devOptional": true, "dependencies": { "define-properties": "^1.1.3" }, @@ -12117,7 +12750,6 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -12145,7 +12777,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "devOptional": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -12158,6 +12789,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -12242,25 +12878,26 @@ "node": ">=0.10.0" } }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "engines": { + "node": ">=6" + } + }, "node_modules/hardhat": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.20.1.tgz", - "integrity": "sha512-q75xDQiQtCZcTMBwjTovrXEU5ECr49baxr4/OBkIu/ULTPzlB20yk1dRWNmD2IFbAeAeXggaWvQAdpiScaHtPw==", + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.2.tgz", + "integrity": "sha512-0xZ7MdCZ5sJem4MrvpQWLR3R3zGDoHw5lsR+pBFimqwagimIOn3bWuZv69KA+veXClwI1s/zpqgwPwiFrd4Dxw==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-blockchain": "7.0.4", + "@nomicfoundation/edr": "^0.3.1", "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-evm": "2.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-statemanager": "2.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", "@nomicfoundation/ethereumjs-tx": "5.0.4", "@nomicfoundation/ethereumjs-util": "9.0.4", - "@nomicfoundation/ethereumjs-verkle": "0.0.2", - "@nomicfoundation/ethereumjs-vm": "7.0.4", "@nomicfoundation/solidity-analyzer": "^0.1.0", "@sentry/node": "^5.18.1", "@types/bn.js": "^5.1.0", @@ -12680,7 +13317,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12697,7 +13333,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "devOptional": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -12709,7 +13344,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "devOptional": true, "engines": { "node": ">= 0.4" }, @@ -12721,7 +13355,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "devOptional": true, "engines": { "node": ">= 0.4" }, @@ -12733,7 +13366,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "devOptional": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -13336,6 +13968,26 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-text": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.0.tgz", + "integrity": "sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/hast-util-whitespace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", @@ -13401,6 +14053,11 @@ "hulk": "bin/hulk" } }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, "node_modules/htm": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz", @@ -13487,6 +14144,11 @@ "node": ">= 6" } }, + "node_modules/human-id": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz", + "integrity": "sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==" + }, "node_modules/human-signals": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", @@ -13522,7 +14184,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -13553,7 +14214,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", - "dev": true, "engines": { "node": ">= 4" } @@ -13622,7 +14282,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -13664,7 +14323,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "devOptional": true, "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -13727,7 +14385,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -13742,14 +14399,12 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "devOptional": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -13772,7 +14427,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -13810,7 +14464,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "devOptional": true, "engines": { "node": ">= 0.4" }, @@ -13849,7 +14502,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "devOptional": true, "dependencies": { "is-typed-array": "^1.1.13" }, @@ -13864,7 +14516,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "devOptional": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -13998,7 +14649,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "devOptional": true, "engines": { "node": ">= 0.4" }, @@ -14018,7 +14668,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "devOptional": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -14061,7 +14710,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -14077,7 +14725,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.7" }, @@ -14103,7 +14750,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "devOptional": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -14114,11 +14760,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-subdir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", + "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", + "dependencies": { + "better-path-resolve": "1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/is-symbol": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "devOptional": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -14133,7 +14789,6 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "devOptional": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -14160,7 +14815,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -14168,6 +14822,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-wsl": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", @@ -16262,16 +16924,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/js-sdsl": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", - "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-sha256": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", @@ -16317,8 +16969,7 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-rpc-engine": { "version": "6.1.0", @@ -16385,7 +17036,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -16533,8 +17183,7 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/lint-staged": { "version": "13.3.0", @@ -16774,6 +17423,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==" + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -17041,6 +17695,17 @@ "tmpl": "1.0.5" } }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -17581,6 +18246,69 @@ "node": ">= 0.10.0" } }, + "node_modules/meow": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", + "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -18490,6 +19218,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -18519,6 +19255,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixme": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/mixme/-/mixme-0.5.10.tgz", + "integrity": "sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==", + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/mkdirp": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", @@ -19070,6 +19835,25 @@ "node": "*" } }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -19153,7 +19937,6 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -19162,7 +19945,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "devOptional": true, "engines": { "node": ">= 0.4" } @@ -19171,7 +19953,6 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -19390,6 +20171,30 @@ "node": ">=0.10.0" } }, + "node_modules/outdent": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", + "integrity": "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==" + }, + "node_modules/p-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-filter/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "engines": { + "node": ">=6" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -19547,7 +20352,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -19837,7 +20641,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -19994,7 +20797,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "devOptional": true, "engines": { "node": ">= 0.4" } @@ -20044,9 +20846,9 @@ } }, "node_modules/preact": { - "version": "10.19.6", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.6.tgz", - "integrity": "sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==", + "version": "10.20.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.1.tgz", + "integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -20218,7 +21020,6 @@ "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, "bin": { "prettier": "bin-prettier.js" }, @@ -20438,6 +21239,11 @@ "dev": true, "peer": true }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -20509,6 +21315,14 @@ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", "optional": true }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "engines": { + "node": ">=8" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -20760,41 +21574,189 @@ } } }, - "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "dependencies": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-yaml-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", + "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.6.1", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-yaml-file/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/read-yaml-file/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=4" } }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "node_modules/read-yaml-file/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/read-yaml-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" } }, "node_modules/readable-stream": { @@ -20853,6 +21815,18 @@ "node": ">=6.0.0" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reduce-flatten": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", @@ -20872,7 +21846,6 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -21879,7 +22852,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -21893,6 +22865,11 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -22204,21 +23181,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rust-verkle-wasm": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/rust-verkle-wasm/-/rust-verkle-wasm-0.0.1.tgz", - "integrity": "sha512-BN6fiTsxcd2dCECz/cHtGTt9cdLJR925nh7iAuRcj8ymKw7OOaPmCneQZ7JePOJ/ia27TjEL91VdOi88Yf+mcA==", - "dev": true - }, - "node_modules/rustbn-wasm": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn-wasm/-/rustbn-wasm-0.2.0.tgz", - "integrity": "sha512-FThvYFNTqrEKGqXuseeg0zR7yROh/6U1617mCHF68OVqrN1tNKRN7Tdwy4WayPVsCmmK+eMxtIZX1qL6JxTkMg==", - "dev": true, - "dependencies": { - "@scure/base": "^1.1.1" - } - }, "node_modules/s.color": { "version": "0.0.15", "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", @@ -22229,7 +23191,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -22246,8 +23207,7 @@ "node_modules/safe-array-concat/node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "devOptional": true + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/safe-buffer": { "version": "5.2.1", @@ -22272,7 +23232,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -22288,8 +23247,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass-formatter": { "version": "0.7.8", @@ -22528,11 +23486,15 @@ "randombytes": "^2.1.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "devOptional": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -22549,7 +23511,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "devOptional": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -22698,24 +23659,18 @@ "node": ">=4" } }, - "node_modules/shikiji": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.9.19.tgz", - "integrity": "sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==", + "node_modules/shiki": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.2.0.tgz", + "integrity": "sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==", "dependencies": { - "shikiji-core": "0.9.19" + "@shikijs/core": "1.2.0" } }, - "node_modules/shikiji-core": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/shikiji-core/-/shikiji-core-0.9.19.tgz", - "integrity": "sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==" - }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -22832,7 +23787,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, "engines": { "node": ">=8" } @@ -22843,26 +23797,245 @@ "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/smartwrap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/smartwrap/-/smartwrap-2.0.2.tgz", + "integrity": "sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==", + "dependencies": { + "array.prototype.flat": "^1.2.3", + "breakword": "^1.0.5", + "grapheme-splitter": "^1.0.4", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1", + "yargs": "^15.1.0" + }, + "bin": { + "smartwrap": "src/terminal-adapter.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/smartwrap/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/smartwrap/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/smartwrap/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/smartwrap/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/smartwrap/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/smartwrap/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/smartwrap/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/smartwrap/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smartwrap/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/smartwrap/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=8" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" + "node_modules/smartwrap/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=6" } }, "node_modules/snake-case": { @@ -23353,6 +24526,102 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/spawndamnit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-2.0.0.tgz", + "integrity": "sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==", + "dependencies": { + "cross-spawn": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/spawndamnit/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/spawndamnit/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/spawndamnit/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawndamnit/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawndamnit/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/spawndamnit/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/spawndamnit/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -23425,6 +24694,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stream-transform": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz", + "integrity": "sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==", + "dependencies": { + "mixme": "^0.5.1" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -23529,7 +24806,6 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -23547,7 +24823,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -23561,7 +24836,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -23640,6 +24914,17 @@ "npm": ">=3" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -23967,6 +25252,17 @@ "streamx": "^2.15.0" } }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -24113,6 +25409,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "engines": { + "node": ">=8" + } + }, "node_modules/trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -24435,6 +25739,109 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tty-table": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/tty-table/-/tty-table-4.2.3.tgz", + "integrity": "sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==", + "dependencies": { + "chalk": "^4.1.2", + "csv": "^5.5.3", + "kleur": "^4.1.5", + "smartwrap": "^2.0.2", + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.1", + "yargs": "^17.7.1" + }, + "bin": { + "tty-table": "adapters/terminal-adapter.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/tty-table/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tty-table/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tty-table/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tty-table/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tty-table/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/tty-table/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tty-table/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tty-table/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -24552,7 +25959,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -24566,7 +25972,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -24585,7 +25990,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "devOptional": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -24605,7 +26009,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -24629,9 +26032,9 @@ "peer": true }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", + "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", "devOptional": true, "bin": { "tsc": "bin/tsc", @@ -24674,7 +26077,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -24729,6 +26131,36 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-find-after/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-is": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", @@ -24917,7 +26349,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, "engines": { "node": ">= 4.0.0" } @@ -25073,6 +26504,15 @@ "node": ">=10.12.0" } }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "node_modules/vfile": { "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", @@ -25287,6 +26727,14 @@ "loose-envify": "^1.0.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", @@ -25380,7 +26828,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "devOptional": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -25392,6 +26839,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, "node_modules/which-pm": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.1.1.tgz", @@ -25416,7 +26868,6 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "devOptional": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -25619,7 +27070,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -25642,8 +27092,6 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "peer": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -25693,8 +27141,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -25702,16 +27148,12 @@ "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "peer": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -25720,8 +27162,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -25735,8 +27175,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -25773,6 +27211,14 @@ "url": "https://github.com/sponsors/colinhacks" } }, + "node_modules/zod-to-json-schema": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.22.4.tgz", + "integrity": "sha512-2Ed5dJ+n/O3cU383xSY28cuVi0BCQhF8nYqWU5paEpl7fVdqdAmiLdqLyfblbNdfOFwFfi/mqU4O1pwc60iBhQ==", + "peerDependencies": { + "zod": "^3.22.4" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 96bc38fd681..4bb21952b25 100644 --- a/package.json +++ b/package.json @@ -29,17 +29,17 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@11ty/eleventy-fetch": "^4.0.0", + "@11ty/eleventy-fetch": "^4.0.1", "@astro-community/astro-embed-youtube": "^0.4.4", - "@astrojs/mdx": "^2.1.1", + "@astrojs/mdx": "^2.2.1", "@astrojs/partytown": "^2.0.4", "@astrojs/preact": "^3.1.1", "@astrojs/prism": "^3.0.0", - "@astrojs/react": "^3.0.10", + "@astrojs/react": "^3.1.0", "@astrojs/sitemap": "^3.1.1", - "@chainlink/components": "^0.4.14", - "@chainlink/contracts": "0.8.0", - "@chainlink/contracts-ccip": "1.4.0", + "@chainlink/components": "^0.4.15", + "@chainlink/contracts": "^1.0.0", + "@chainlink/contracts-ccip": "^1.4.0", "@chainlink/design-system": "^0.1.50", "@chainlink/solana-sdk": "^0.2.2", "@metamask/detect-provider": "^2.0.0", @@ -47,7 +47,7 @@ "@nanostores/preact": "^0.5.1", "@nanostores/react": "^0.7.2", "@openzeppelin/contracts": "^4.9.6", - "astro": "^4.4.8", + "astro": "^4.5.9", "bignumber.js": "^9.1.2", "clipboard": "^2.0.11", "dotenv": "^16.4.5", @@ -56,7 +56,7 @@ "github-slugger": "^2.0.0", "lodash": "^4.17.21", "nanostores": "^0.9.5", - "preact": "^10.19.6", + "preact": "^10.20.1", "react-instantsearch": "^7.7.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", @@ -67,8 +67,8 @@ "@nomicfoundation/hardhat-toolbox": "^2.0.2", "@nomiclabs/hardhat-ethers": "^2.2.3", "@project-serum/anchor": "^0.26.0", - "@types/node": "^20.11.24", - "@types/react": "^18.2.61", + "@types/node": "^20.11.30", + "@types/react": "^18.2.70", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", "eslint": "^8.57.0", @@ -78,7 +78,7 @@ "eslint-plugin-n": "^15.7.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.1.1", - "hardhat": "^2.20.1", + "hardhat": "^2.22.2", "husky": "^8.0.3", "lint-staged": "^13.3.0", "prettier": "^2.8.8", @@ -89,7 +89,7 @@ "solhint-plugin-prettier": "^0.0.5", "ts-jest": "^29.1.2", "tsconfig-paths": "^4.2.0", - "typescript": "^5.3.3" + "typescript": "^5.4.3" }, "lint-staged": { "*.{css,md,mdx,yml,yaml,astro}": "prettier --write", diff --git a/public/images/data-streams/getting-started/solidity-compiler.webp b/public/images/data-streams/getting-started/solidity-compiler.webp index 25c0fd9ed8505165b83402c92cc59a857146e94b..1c29cc4a57fb6f4a7067852b3516d778677bfcfa 100644 GIT binary patch literal 63176 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 diff --git a/public/samples/APIRequests/APIConsumer.sol b/public/samples/APIRequests/APIConsumer.sol index 70d975a5eaf..8975baf0c1f 100644 --- a/public/samples/APIRequests/APIConsumer.sol +++ b/public/samples/APIRequests/APIConsumer.sol @@ -35,8 +35,8 @@ contract APIConsumer is ChainlinkClient, ConfirmedOwner { * */ constructor() ConfirmedOwner(msg.sender) { - setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); - setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); + _setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); + _setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); jobId = "ca98366cc7314957b8c012c72f05aeeb"; fee = (1 * LINK_DIVISIBILITY) / 10; // 0,1 * 10**18 (Varies by network and job) } @@ -46,14 +46,14 @@ contract APIConsumer is ChainlinkClient, ConfirmedOwner { * data, then multiply by 1000000000000000000 (to remove decimal places from data). */ function requestVolumeData() public returns (bytes32 requestId) { - Chainlink.Request memory req = buildChainlinkRequest( + Chainlink.Request memory req = _buildChainlinkRequest( jobId, address(this), this.fulfill.selector ); // Set the URL to perform the GET request on - req.add( + req._add( "get", "https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD" ); @@ -69,14 +69,14 @@ contract APIConsumer is ChainlinkClient, ConfirmedOwner { // } // } // request.add("path", "RAW.ETH.USD.VOLUME24HOUR"); // Chainlink nodes prior to 1.0.0 support this format - req.add("path", "RAW,ETH,USD,VOLUME24HOUR"); // Chainlink nodes 1.0.0 and later support this format + req._add("path", "RAW,ETH,USD,VOLUME24HOUR"); // Chainlink nodes 1.0.0 and later support this format // Multiply the result by 1000000000000000000 to remove decimals int256 timesAmount = 10 ** 18; - req.addInt("times", timesAmount); + req._addInt("times", timesAmount); // Sends the request - return sendChainlinkRequest(req, fee); + return _sendChainlinkRequest(req, fee); } /** @@ -94,7 +94,7 @@ contract APIConsumer is ChainlinkClient, ConfirmedOwner { * Allow withdraw of Link tokens from the contract */ function withdrawLink() public onlyOwner { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); + LinkTokenInterface link = LinkTokenInterface(_chainlinkTokenAddress()); require( link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer" diff --git a/public/samples/APIRequests/APIConsumerForwarder.sol b/public/samples/APIRequests/APIConsumerForwarder.sol index 8b5da34927f..d4af84032eb 100644 --- a/public/samples/APIRequests/APIConsumerForwarder.sol +++ b/public/samples/APIRequests/APIConsumerForwarder.sol @@ -29,25 +29,25 @@ contract APIConsumerForwarder is ChainlinkClient, ConfirmedOwner { * @dev Check https://docs.chain.link/docs/link-token-contracts/ for LINK address for the right network */ constructor() ConfirmedOwner(msg.sender) { - setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); + _setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); } function requestEthereumPrice( address _oracle, string memory _jobId ) public onlyOwner { - Chainlink.Request memory req = buildChainlinkRequest( + Chainlink.Request memory req = _buildChainlinkRequest( stringToBytes32(_jobId), address(this), this.fulfillEthereumPrice.selector ); - req.add( + req._add( "get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD" ); - req.add("path", "USD"); - req.addInt("times", 100); - sendChainlinkRequestTo(_oracle, req, ORACLE_PAYMENT); + req._add("path", "USD"); + req._addInt("times", 100); + _sendChainlinkRequestTo(_oracle, req, ORACLE_PAYMENT); } /** @@ -58,7 +58,7 @@ contract APIConsumerForwarder is ChainlinkClient, ConfirmedOwner { address _oracle, string memory _jobId ) public onlyOwner { - Chainlink.Request memory req = buildChainlinkRequest( + Chainlink.Request memory req = _buildChainlinkRequest( stringToBytes32(_jobId), address(this), this.fulfillFirstId.selector @@ -66,7 +66,7 @@ contract APIConsumerForwarder is ChainlinkClient, ConfirmedOwner { // Set the URL to perform the GET request on // API docs: https://www.coingecko.com/en/api/documentation? - req.add( + req._add( "get", "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&per_page=10" ); @@ -81,9 +81,9 @@ contract APIConsumerForwarder is ChainlinkClient, ConfirmedOwner { // ... // .. }] // request.add("path", "0.id"); // Chainlink nodes prior to 1.0.0 support this format - req.add("path", "0,id"); // Chainlink nodes 1.0.0 and later support this format + req._add("path", "0,id"); // Chainlink nodes 1.0.0 and later support this format // Sends the request - sendChainlinkRequestTo(_oracle, req, ORACLE_PAYMENT); + _sendChainlinkRequestTo(_oracle, req, ORACLE_PAYMENT); } function fulfillEthereumPrice( @@ -106,11 +106,11 @@ contract APIConsumerForwarder is ChainlinkClient, ConfirmedOwner { } function getChainlinkToken() public view returns (address) { - return chainlinkTokenAddress(); + return _chainlinkTokenAddress(); } function withdrawLink() public onlyOwner { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); + LinkTokenInterface link = LinkTokenInterface(_chainlinkTokenAddress()); require( link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer" @@ -123,7 +123,7 @@ contract APIConsumerForwarder is ChainlinkClient, ConfirmedOwner { bytes4 _callbackFunctionId, uint256 _expiration ) public onlyOwner { - cancelChainlinkRequest( + _cancelChainlinkRequest( _requestId, _payment, _callbackFunctionId, diff --git a/public/samples/APIRequests/ATestnetConsumer.sol b/public/samples/APIRequests/ATestnetConsumer.sol index 72af2d1c596..4dd8e218e92 100644 --- a/public/samples/APIRequests/ATestnetConsumer.sol +++ b/public/samples/APIRequests/ATestnetConsumer.sol @@ -27,25 +27,25 @@ contract ATestnetConsumer is ChainlinkClient, ConfirmedOwner { * @dev Check https://docs.chain.link/docs/link-token-contracts/ for LINK address for the right network */ constructor() ConfirmedOwner(msg.sender) { - setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); + _setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); } function requestEthereumPrice( address _oracle, string memory _jobId ) public onlyOwner { - Chainlink.Request memory req = buildChainlinkRequest( + Chainlink.Request memory req = _buildChainlinkRequest( stringToBytes32(_jobId), address(this), this.fulfillEthereumPrice.selector ); - req.add( + req._add( "get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD" ); - req.add("path", "USD"); - req.addInt("times", 100); - sendChainlinkRequestTo(_oracle, req, ORACLE_PAYMENT); + req._add("path", "USD"); + req._addInt("times", 100); + _sendChainlinkRequestTo(_oracle, req, ORACLE_PAYMENT); } function fulfillEthereumPrice( @@ -57,11 +57,11 @@ contract ATestnetConsumer is ChainlinkClient, ConfirmedOwner { } function getChainlinkToken() public view returns (address) { - return chainlinkTokenAddress(); + return _chainlinkTokenAddress(); } function withdrawLink() public onlyOwner { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); + LinkTokenInterface link = LinkTokenInterface(_chainlinkTokenAddress()); require( link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer" @@ -74,7 +74,7 @@ contract ATestnetConsumer is ChainlinkClient, ConfirmedOwner { bytes4 _callbackFunctionId, uint256 _expiration ) public onlyOwner { - cancelChainlinkRequest( + _cancelChainlinkRequest( _requestId, _payment, _callbackFunctionId, diff --git a/public/samples/APIRequests/FetchFromArray.sol b/public/samples/APIRequests/FetchFromArray.sol index 3b2e1a65719..3bf264b1a5c 100644 --- a/public/samples/APIRequests/FetchFromArray.sol +++ b/public/samples/APIRequests/FetchFromArray.sol @@ -36,8 +36,8 @@ contract FetchFromArray is ChainlinkClient, ConfirmedOwner { * */ constructor() ConfirmedOwner(msg.sender) { - setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); - setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); + _setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); + _setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); jobId = "7d80a6386ef543a3abb52817f6707e3b"; fee = (1 * LINK_DIVISIBILITY) / 10; // 0,1 * 10**18 (Varies by network and job) } @@ -47,7 +47,7 @@ contract FetchFromArray is ChainlinkClient, ConfirmedOwner { * data which is located in a list */ function requestFirstId() public returns (bytes32 requestId) { - Chainlink.Request memory req = buildChainlinkRequest( + Chainlink.Request memory req = _buildChainlinkRequest( jobId, address(this), this.fulfill.selector @@ -55,7 +55,7 @@ contract FetchFromArray is ChainlinkClient, ConfirmedOwner { // Set the URL to perform the GET request on // API docs: https://www.coingecko.com/en/api/documentation? - req.add( + req._add( "get", "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&per_page=10" ); @@ -70,9 +70,9 @@ contract FetchFromArray is ChainlinkClient, ConfirmedOwner { // ... // .. }] // request.add("path", "0.id"); // Chainlink nodes prior to 1.0.0 support this format - req.add("path", "0,id"); // Chainlink nodes 1.0.0 and later support this format + req._add("path", "0,id"); // Chainlink nodes 1.0.0 and later support this format // Sends the request - return sendChainlinkRequest(req, fee); + return _sendChainlinkRequest(req, fee); } /** @@ -90,7 +90,7 @@ contract FetchFromArray is ChainlinkClient, ConfirmedOwner { * Allow withdraw of Link tokens from the contract */ function withdrawLink() public onlyOwner { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); + LinkTokenInterface link = LinkTokenInterface(_chainlinkTokenAddress()); require( link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer" diff --git a/public/samples/APIRequests/GenericBigWord.sol b/public/samples/APIRequests/GenericBigWord.sol index 20ad9bcab70..16f28e5a6cc 100644 --- a/public/samples/APIRequests/GenericBigWord.sol +++ b/public/samples/APIRequests/GenericBigWord.sol @@ -38,8 +38,8 @@ contract GenericLargeResponse is ChainlinkClient, ConfirmedOwner { * */ constructor() ConfirmedOwner(msg.sender) { - setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); - setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); + _setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); + _setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); jobId = "7da2702f37fd48e5b1b9a5715e3509b6"; fee = (1 * LINK_DIVISIBILITY) / 10; // 0,1 * 10**18 (Varies by network and job) } @@ -48,17 +48,17 @@ contract GenericLargeResponse is ChainlinkClient, ConfirmedOwner { * @notice Request variable bytes from the oracle */ function requestBytes() public { - Chainlink.Request memory req = buildChainlinkRequest( + Chainlink.Request memory req = _buildChainlinkRequest( jobId, address(this), this.fulfillBytes.selector ); - req.add( + req._add( "get", "https://ipfs.io/ipfs/QmZgsvrA1o1C8BGCrx6mHTqR1Ui1XqbCrtbMVrRLHtuPVD?filename=big-api-response.json" ); - req.add("path", "image"); - sendChainlinkRequest(req, fee); + req._add("path", "image"); + _sendChainlinkRequest(req, fee); } event RequestFulfilled(bytes32 indexed requestId, bytes indexed data); @@ -80,7 +80,7 @@ contract GenericLargeResponse is ChainlinkClient, ConfirmedOwner { * Allow withdraw of Link tokens from the contract */ function withdrawLink() public onlyOwner { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); + LinkTokenInterface link = LinkTokenInterface(_chainlinkTokenAddress()); require( link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer" diff --git a/public/samples/APIRequests/GetGasPrice.sol b/public/samples/APIRequests/GetGasPrice.sol index 5f36d676291..ec797325917 100644 --- a/public/samples/APIRequests/GetGasPrice.sol +++ b/public/samples/APIRequests/GetGasPrice.sol @@ -43,8 +43,8 @@ contract GetGasPrice is ChainlinkClient, ConfirmedOwner { * */ constructor() ConfirmedOwner(msg.sender) { - setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); - setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); + _setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); + _setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); jobId = "7223acbd01654282865b678924126013"; fee = (1 * LINK_DIVISIBILITY) / 10; // 0,1 * 10**18 (Varies by network and job) } @@ -53,13 +53,13 @@ contract GetGasPrice is ChainlinkClient, ConfirmedOwner { * Create a Chainlink request the gas price from Etherscan */ function requestGasPrice() public returns (bytes32 requestId) { - Chainlink.Request memory req = buildChainlinkRequest( + Chainlink.Request memory req = _buildChainlinkRequest( jobId, address(this), this.fulfill.selector ); // No need extra parameters for this job. Send the request - return sendChainlinkRequest(req, fee); + return _sendChainlinkRequest(req, fee); } /** @@ -86,7 +86,7 @@ contract GetGasPrice is ChainlinkClient, ConfirmedOwner { * Allow withdraw of Link tokens from the contract */ function withdrawLink() public onlyOwner { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); + LinkTokenInterface link = LinkTokenInterface(_chainlinkTokenAddress()); require( link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer" diff --git a/public/samples/APIRequests/MultiWordConsumer.sol b/public/samples/APIRequests/MultiWordConsumer.sol index 25cca65f540..cdc3e166be3 100644 --- a/public/samples/APIRequests/MultiWordConsumer.sol +++ b/public/samples/APIRequests/MultiWordConsumer.sol @@ -46,8 +46,8 @@ contract MultiWordConsumer is ChainlinkClient, ConfirmedOwner { * */ constructor() ConfirmedOwner(msg.sender) { - setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); - setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); + _setChainlinkToken(0x779877A7B0D9E8603169DdbD7836e478b4624789); + _setChainlinkOracle(0x6090149792dAAeE9D1D568c9f9a6F6B46AA29eFD); jobId = "53f9755920cd451a8fe46f5087468395"; fee = (1 * LINK_DIVISIBILITY) / 10; // 0,1 * 10**18 (Varies by network and job) } @@ -56,27 +56,27 @@ contract MultiWordConsumer is ChainlinkClient, ConfirmedOwner { * @notice Request mutiple parameters from the oracle in a single transaction */ function requestMultipleParameters() public { - Chainlink.Request memory req = buildChainlinkRequest( + Chainlink.Request memory req = _buildChainlinkRequest( jobId, address(this), this.fulfillMultipleParameters.selector ); - req.add( + req._add( "urlBTC", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=BTC" ); - req.add("pathBTC", "BTC"); - req.add( + req._add("pathBTC", "BTC"); + req._add( "urlUSD", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD" ); - req.add("pathUSD", "USD"); - req.add( + req._add("pathUSD", "USD"); + req._add( "urlEUR", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=EUR" ); - req.add("pathEUR", "EUR"); - sendChainlinkRequest(req, fee); // MWR API. + req._add("pathEUR", "EUR"); + _sendChainlinkRequest(req, fee); // MWR API. } /** @@ -104,7 +104,7 @@ contract MultiWordConsumer is ChainlinkClient, ConfirmedOwner { * Allow withdraw of Link tokens from the contract */ function withdrawLink() public onlyOwner { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); + LinkTokenInterface link = LinkTokenInterface(_chainlinkTokenAddress()); require( link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer" diff --git a/public/samples/Automation/CounterwForwarder.sol b/public/samples/Automation/CounterwForwarder.sol index d057832cd95..cdda8d9043f 100644 --- a/public/samples/Automation/CounterwForwarder.sol +++ b/public/samples/Automation/CounterwForwarder.sol @@ -14,9 +14,9 @@ pragma solidity ^0.8.7; */ import {AutomationCompatibleInterface} from "@chainlink/contracts/src/v0.8/automation/interfaces/AutomationCompatibleInterface.sol"; -import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol"; -contract CounterwForwarder is AutomationCompatibleInterface, Ownable { +contract CounterwForwarder is AutomationCompatibleInterface, OwnerIsCreator { uint256 public counter; // counter counts the number of upkeeps performed uint256 public interval; // interval specifies the time between upkeeps uint256 public lastTimeStamp; // lastTimeStamp tracks the last upkeep performed diff --git a/public/samples/Automation/StreamsWithError.sol b/public/samples/Automation/StreamsWithError.sol index 8c31b4ca4bd..d061e653b41 100644 --- a/public/samples/Automation/StreamsWithError.sol +++ b/public/samples/Automation/StreamsWithError.sol @@ -5,8 +5,8 @@ import {StreamsLookupCompatibleInterface} from "@chainlink/contracts/src/v0.8/au import {ILogAutomation, Log} from "@chainlink/contracts/src/v0.8/automation/interfaces/ILogAutomation.sol"; import {IRewardManager} from "@chainlink/contracts/src/v0.8/llo-feeds/interfaces/IRewardManager.sol"; import {IVerifierFeeManager} from "@chainlink/contracts/src/v0.8/llo-feeds/interfaces/IVerifierFeeManager.sol"; -import {IERC20} from "@chainlink/contracts/src/v0.8/vendor/openzeppelin-solidity/v4.8.0/contracts/interfaces/IERC20.sol"; -import {Common} from "@chainlink/contracts/src/v0.8/libraries/Common.sol"; +import {IERC20} from "@chainlink/contracts/src/v0.8/vendor/openzeppelin-solidity/v4.8.3/contracts/interfaces/IERC20.sol"; +import {Common} from "@chainlink/contracts/src/v0.8/llo-feeds/libraries/Common.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE. diff --git a/public/samples/Automation/example.sol b/public/samples/Automation/example.sol index 049f2bce03d..414fa64321f 100644 --- a/public/samples/Automation/example.sol +++ b/public/samples/Automation/example.sol @@ -1,9 +1,7 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.7.0; +pragma solidity ^0.8.0; -// KeeperCompatible.sol imports the functions from both ./KeeperBase.sol and -// ./interfaces/KeeperCompatibleInterface.sol -import "@chainlink/contracts/src/v0.7/KeeperCompatible.sol"; +import "@chainlink/contracts/src/v0.8/automation/interfaces/AutomationCompatibleInterface.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED VALUES FOR CLARITY. @@ -11,7 +9,7 @@ import "@chainlink/contracts/src/v0.7/KeeperCompatible.sol"; * DO NOT USE THIS CODE IN PRODUCTION. */ -contract Counter is KeeperCompatibleInterface { +contract Counter is AutomationCompatibleInterface { uint public counter; // counter counts the number of upkeeps performed uint public interval; // interval specifies the time between upkeeps uint public lastTimeStamp; // lastTimeStamp tracks the last upkeep performed diff --git a/public/samples/Automation/tutorials/VRFSubscriptionBalanceMonitor.sol b/public/samples/Automation/tutorials/VRFSubscriptionBalanceMonitor.sol index ce2903a1591..cccffbaac69 100644 --- a/public/samples/Automation/tutorials/VRFSubscriptionBalanceMonitor.sol +++ b/public/samples/Automation/tutorials/VRFSubscriptionBalanceMonitor.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.6; import "@chainlink/contracts/src/v0.8/automation/interfaces/KeeperCompatibleInterface.sol"; import {ConfirmedOwner} from "@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwner.sol"; -import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol"; +import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/vrf/interfaces/VRFCoordinatorV2Interface.sol"; import {LinkTokenInterface} from "@chainlink/contracts/src/v0.8/shared/interfaces/LinkTokenInterface.sol"; import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol"; diff --git a/public/samples/ChainlinkFunctions/AutomatedFunctionsConsumerExample.sol b/public/samples/ChainlinkFunctions/AutomatedFunctionsConsumerExample.sol index 84cf0827a23..119a9aa85e6 100644 --- a/public/samples/ChainlinkFunctions/AutomatedFunctionsConsumerExample.sol +++ b/public/samples/ChainlinkFunctions/AutomatedFunctionsConsumerExample.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/FunctionsClient.sol"; +import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol"; import {ConfirmedOwner} from "@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwner.sol"; /** diff --git a/public/samples/ChainlinkFunctions/CustomAutomatedFunctionsConsumerExample.sol b/public/samples/ChainlinkFunctions/CustomAutomatedFunctionsConsumerExample.sol index 519523200c7..9b9143fa748 100644 --- a/public/samples/ChainlinkFunctions/CustomAutomatedFunctionsConsumerExample.sol +++ b/public/samples/ChainlinkFunctions/CustomAutomatedFunctionsConsumerExample.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/FunctionsClient.sol"; +import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol"; import {AutomationCompatibleInterface} from "@chainlink/contracts/src/v0.8/automation/AutomationCompatible.sol"; import {ConfirmedOwner} from "@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwner.sol"; -import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/libraries/FunctionsRequest.sol"; +import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol"; /** * @title Functions contract used for Automation. diff --git a/public/samples/ChainlinkFunctions/FunctionsConsumerDecoder.sol b/public/samples/ChainlinkFunctions/FunctionsConsumerDecoder.sol index 9e99ce2984a..72c3666d7b8 100644 --- a/public/samples/ChainlinkFunctions/FunctionsConsumerDecoder.sol +++ b/public/samples/ChainlinkFunctions/FunctionsConsumerDecoder.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/FunctionsClient.sol"; +import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol"; import {ConfirmedOwner} from "@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwner.sol"; -import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/libraries/FunctionsRequest.sol"; +import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED VALUES FOR CLARITY. diff --git a/public/samples/ChainlinkFunctions/FunctionsConsumerExample.sol b/public/samples/ChainlinkFunctions/FunctionsConsumerExample.sol index 58ef2660516..8b284217d3f 100644 --- a/public/samples/ChainlinkFunctions/FunctionsConsumerExample.sol +++ b/public/samples/ChainlinkFunctions/FunctionsConsumerExample.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/FunctionsClient.sol"; +import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol"; import {ConfirmedOwner} from "@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwner.sol"; -import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/libraries/FunctionsRequest.sol"; +import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED VALUES FOR CLARITY. diff --git a/public/samples/ChainlinkFunctions/GettingStartedFunctionsConsumer.sol b/public/samples/ChainlinkFunctions/GettingStartedFunctionsConsumer.sol index c3a43b26779..dfc6c6d41bb 100644 --- a/public/samples/ChainlinkFunctions/GettingStartedFunctionsConsumer.sol +++ b/public/samples/ChainlinkFunctions/GettingStartedFunctionsConsumer.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/FunctionsClient.sol"; +import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol"; import {ConfirmedOwner} from "@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwner.sol"; -import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/libraries/FunctionsRequest.sol"; +import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol"; /** * Request testnet LINK and ETH here: https://faucets.chain.link/ diff --git a/public/samples/ChainlinkNodes/Operator.sol b/public/samples/ChainlinkNodes/Operator.sol index d88a048fd72..5fcc794ec14 100644 --- a/public/samples/ChainlinkNodes/Operator.sol +++ b/public/samples/ChainlinkNodes/Operator.sol @@ -1,3 +1,3 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.7.6; -import "@chainlink/contracts/src/v0.7/Operator.sol"; +pragma solidity ^0.8.19; +import "@chainlink/contracts/src/v0.8/operatorforwarder/dev/Operator.sol"; diff --git a/public/samples/ChainlinkNodes/Oracle.sol b/public/samples/ChainlinkNodes/Oracle.sol deleted file mode 100644 index 3c08b34f431..00000000000 --- a/public/samples/ChainlinkNodes/Oracle.sol +++ /dev/null @@ -1,3 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.6.6; -import "@chainlink/contracts/src/v0.6/Oracle.sol"; diff --git a/public/samples/DataFeeds/DataConsumerV3.sol b/public/samples/DataFeeds/DataConsumerV3.sol index d8aaf4d2cf5..48f8fc6dab6 100644 --- a/public/samples/DataFeeds/DataConsumerV3.sol +++ b/public/samples/DataFeeds/DataConsumerV3.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; -import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED diff --git a/public/samples/DataFeeds/DataConsumerWithSequencerCheck.sol b/public/samples/DataFeeds/DataConsumerWithSequencerCheck.sol index 47ef266cdc1..284252c2722 100644 --- a/public/samples/DataFeeds/DataConsumerWithSequencerCheck.sol +++ b/public/samples/DataFeeds/DataConsumerWithSequencerCheck.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; -import {AggregatorV2V3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol"; +import {AggregatorV2V3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV2V3Interface.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED VALUES FOR CLARITY. diff --git a/public/samples/DataFeeds/HistoricalDataConsumer.sol b/public/samples/DataFeeds/HistoricalDataConsumer.sol index 4d52a867a58..dd584b35625 100644 --- a/public/samples/DataFeeds/HistoricalDataConsumer.sol +++ b/public/samples/DataFeeds/HistoricalDataConsumer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; -import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED VALUES FOR CLARITY. diff --git a/public/samples/DataFeeds/NFTFloorPriceConsumerV3.sol b/public/samples/DataFeeds/NFTFloorPriceConsumerV3.sol index 7e3d37a5f63..d59cdcb4505 100644 --- a/public/samples/DataFeeds/NFTFloorPriceConsumerV3.sol +++ b/public/samples/DataFeeds/NFTFloorPriceConsumerV3.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; -import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol"; contract NFTFloorPriceConsumerV3 { AggregatorV3Interface internal nftFloorPriceFeed; diff --git a/public/samples/DataFeeds/PriceConverter.sol b/public/samples/DataFeeds/PriceConverter.sol index cc86b9f4dc2..7ef200b3bfb 100644 --- a/public/samples/DataFeeds/PriceConverter.sol +++ b/public/samples/DataFeeds/PriceConverter.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; -import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol"; /** * Network: Sepolia diff --git a/public/samples/DataFeeds/ReserveConsumerV3.sol b/public/samples/DataFeeds/ReserveConsumerV3.sol index 01e03f63cdd..f7e87d71ffc 100644 --- a/public/samples/DataFeeds/ReserveConsumerV3.sol +++ b/public/samples/DataFeeds/ReserveConsumerV3.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; -import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol"; contract ReserveConsumerV3 { AggregatorV3Interface internal reserveFeed; diff --git a/public/samples/DataStreams/StreamsUpkeep.sol b/public/samples/DataStreams/StreamsUpkeep.sol index 9642ef925d3..0b9b698136f 100644 --- a/public/samples/DataStreams/StreamsUpkeep.sol +++ b/public/samples/DataStreams/StreamsUpkeep.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.16; +pragma solidity 0.8.19; -import {Common} from "@chainlink/contracts/src/v0.8/libraries/Common.sol"; +import {Common} from "@chainlink/contracts/src/v0.8/llo-feeds/libraries/Common.sol"; import {StreamsLookupCompatibleInterface} from "@chainlink/contracts/src/v0.8/automation/interfaces/StreamsLookupCompatibleInterface.sol"; import {ILogAutomation, Log} from "@chainlink/contracts/src/v0.8/automation/interfaces/ILogAutomation.sol"; import {IRewardManager} from "@chainlink/contracts/src/v0.8/llo-feeds/interfaces/IRewardManager.sol"; import {IVerifierFeeManager} from "@chainlink/contracts/src/v0.8/llo-feeds/interfaces/IVerifierFeeManager.sol"; -import {IERC20} from "@chainlink/contracts/src/v0.8/vendor/openzeppelin-solidity/v4.8.0/contracts/interfaces/IERC20.sol"; +import {IERC20} from "@chainlink/contracts/src/v0.8/vendor/openzeppelin-solidity/v4.8.3/contracts/interfaces/IERC20.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE FOR DEMONSTRATION PURPOSES. @@ -98,6 +98,22 @@ contract StreamsUpkeep is ILogAutomation, StreamsLookupCompatibleInterface { ); } + /** + * @notice this is a new, optional function in streams lookup. It is meant to surface streams lookup errors. + * @return upkeepNeeded boolean to indicate whether the keeper should call performUpkeep or not. + * @return performData bytes that the keeper should call performUpkeep with, if + * upkeep is needed. If you would like to encode data to decode later, try `abi.encode`. + */ + function checkErrorHandler( + uint256 /*errCode*/, + bytes memory /*extraData*/ + ) external pure returns (bool upkeepNeeded, bytes memory performData) { + return (true, "0"); + // Hardcoded to always perform upkeep. + // Read the StreamsLookup error handler guide for more information. + // https://docs.chain.link/chainlink-automation/guides/streams-lookup-error-handler + } + // The Data Streams report bytes is passed here. // extraData is context data from feed lookup process. // Your contract may include logic to further process this data. diff --git a/public/samples/DataStreams/StreamsUpkeepRegistrar.sol b/public/samples/DataStreams/StreamsUpkeepRegistrar.sol index 33ea55feb88..8e36542a7f8 100644 --- a/public/samples/DataStreams/StreamsUpkeepRegistrar.sol +++ b/public/samples/DataStreams/StreamsUpkeepRegistrar.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.16; +pragma solidity 0.8.19; -import {Common} from "@chainlink/contracts/src/v0.8/libraries/Common.sol"; +import {Common} from "@chainlink/contracts/src/v0.8/llo-feeds/libraries/Common.sol"; import {StreamsLookupCompatibleInterface} from "@chainlink/contracts/src/v0.8/automation/interfaces/StreamsLookupCompatibleInterface.sol"; import {ILogAutomation, Log} from "@chainlink/contracts/src/v0.8/automation/interfaces/ILogAutomation.sol"; import {IRewardManager} from "@chainlink/contracts/src/v0.8/llo-feeds/interfaces/IRewardManager.sol"; import {IVerifierFeeManager} from "@chainlink/contracts/src/v0.8/llo-feeds/interfaces/IVerifierFeeManager.sol"; -import {IERC20} from "@chainlink/contracts/src/v0.8/vendor/openzeppelin-solidity/v4.8.0/contracts/interfaces/IERC20.sol"; +import {IERC20} from "@chainlink/contracts/src/v0.8/vendor/openzeppelin-solidity/v4.8.3/contracts/interfaces/IERC20.sol"; import {LinkTokenInterface} from "@chainlink/contracts/src/v0.8/shared/interfaces/LinkTokenInterface.sol"; /** @@ -154,6 +154,22 @@ contract StreamsUpkeepRegistrar is } } + /** + * @notice this is a new, optional function in streams lookup. It is meant to surface streams lookup errors. + * @return upkeepNeeded boolean to indicate whether the keeper should call performUpkeep or not. + * @return performData bytes that the keeper should call performUpkeep with, if + * upkeep is needed. If you would like to encode data to decode later, try `abi.encode`. + */ + function checkErrorHandler( + uint256 /*errCode*/, + bytes memory /*extraData*/ + ) external pure returns (bool upkeepNeeded, bytes memory performData) { + return (true, "0"); + // Hardcoded to always perform upkeep. + // Read the StreamsLookup error handler guide for more information. + // https://docs.chain.link/chainlink-automation/guides/streams-lookup-error-handler + } + // This function uses revert to convey call information. // See https://eips.ethereum.org/EIPS/eip-3668#rationale for details. function checkLog( diff --git a/public/samples/Functions/adding-functions-to-projects/FunctionsExample.sol.ignore b/public/samples/Functions/adding-functions-to-projects/FunctionsExample.sol.ignore deleted file mode 100644 index e1a5b7bc1b7..00000000000 --- a/public/samples/Functions/adding-functions-to-projects/FunctionsExample.sol.ignore +++ /dev/null @@ -1,92 +0,0 @@ -pragma solidity =0.8.7; - -import "@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwner.sol"; -import "./dev/functions/FunctionsClient.sol"; - -// import "@chainlink/contracts/src/v0.8/dev/functions/FunctionsClient.sol"; // Once published - -contract FunctionsExample is FunctionsClient, ConfirmedOwner { - using Functions for Functions.Request; - - bytes32 public latestRequestId; - bytes public latestResponse; - bytes public latestError; - - event OCRResponse(bytes32 indexed requestId, bytes result, bytes err); - - uint256 number; - - constructor( - address oracle - ) FunctionsClient(oracle) ConfirmedOwner(msg.sender) {} - - function setNumber(uint256 _num) public { - number = _num; - } - - function setNumber( - string calldata source, - bytes calldata secrets, - Functions.Location secretsLocation, - string[] calldata args, - uint64 subscriptionId, - uint32 gasLimit - ) public onlyOwner returns (bytes32) { - Functions.Request memory req; - req.initializeRequest( - Functions.Location.Inline, - Functions.CodeLanguage.JavaScript, - source - ); - if (secrets.length > 0) { - if (secretsLocation == Functions.Location.Inline) { - req.addInlineSecrets(secrets); - } else { - req.addRemoteSecrets(secrets); - } - } - if (args.length > 0) req.addArgs(args); - - bytes32 assignedReqID = sendRequest(req, subscriptionId, gasLimit); - latestRequestId = assignedReqID; - return assignedReqID; - } - - function fulfillRequest( - bytes32 requestId, - bytes memory response, - bytes memory err - ) internal override { - latestResponse = response; - //convert response to number - number = bytesToUint(response); - latestError = err; - emit OCRResponse(requestId, response, err); - } - - function bytesToUint(bytes memory b) internal pure returns (uint256) { - uint256 number; - for (uint256 i = 0; i < b.length; i++) { - number = - number + - uint256(uint8(b[i])) * - (2 ** (8 * (b.length - (i + 1)))); - } - return number; - } - - function getNumber() public view returns (uint256) { - return number; - } - - function updateOracleAddress(address oracle) public onlyOwner { - setOracle(oracle); - } - - function addSimulatedRequestId( - address oracleAddress, - bytes32 requestId - ) public onlyOwner { - addExternalRequest(oracleAddress, requestId); - } -} diff --git a/public/samples/VRF/VRFD20.sol b/public/samples/VRF/VRFD20.sol index 0f00841bf6e..cf02d0c3d36 100644 --- a/public/samples/VRF/VRFD20.sol +++ b/public/samples/VRF/VRFD20.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; -import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol"; +import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/vrf/interfaces/VRFCoordinatorV2Interface.sol"; import {VRFConsumerBaseV2} from "@chainlink/contracts/src/v0.8/vrf/VRFConsumerBaseV2.sol"; /** diff --git a/public/samples/VRF/VRFv2Consumer.sol b/public/samples/VRF/VRFv2Consumer.sol index e039d902ce5..39bbe4c6172 100644 --- a/public/samples/VRF/VRFv2Consumer.sol +++ b/public/samples/VRF/VRFv2Consumer.sol @@ -2,7 +2,7 @@ // An example of a consumer contract that relies on a subscription for funding. pragma solidity ^0.8.7; -import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol"; +import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/vrf/interfaces/VRFCoordinatorV2Interface.sol"; import {VRFConsumerBaseV2} from "@chainlink/contracts/src/v0.8/vrf/VRFConsumerBaseV2.sol"; import {ConfirmedOwner} from "@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwner.sol"; diff --git a/public/samples/VRF/VRFv2MultiplePaths.sol b/public/samples/VRF/VRFv2MultiplePaths.sol index 54bf0b4d3db..84a2a2fe4a0 100644 --- a/public/samples/VRF/VRFv2MultiplePaths.sol +++ b/public/samples/VRF/VRFv2MultiplePaths.sol @@ -3,7 +3,7 @@ // It shows how to setup multiple execution paths for handling a response. pragma solidity ^0.8.7; -import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol"; +import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/vrf/interfaces/VRFCoordinatorV2Interface.sol"; import {VRFConsumerBaseV2} from "@chainlink/contracts/src/v0.8/vrf/VRFConsumerBaseV2.sol"; /** diff --git a/public/samples/VRF/VRFv2SubscriptionManager.sol b/public/samples/VRF/VRFv2SubscriptionManager.sol index 1763abdd6c4..39b98fb022b 100644 --- a/public/samples/VRF/VRFv2SubscriptionManager.sol +++ b/public/samples/VRF/VRFv2SubscriptionManager.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.7; import {LinkTokenInterface} from "@chainlink/contracts/src/v0.8/shared/interfaces/LinkTokenInterface.sol"; -import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol"; +import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/vrf/interfaces/VRFCoordinatorV2Interface.sol"; import {VRFConsumerBaseV2} from "@chainlink/contracts/src/v0.8/vrf/VRFConsumerBaseV2.sol"; /** diff --git a/public/samples/VRF/mock/LinkToken.sol b/public/samples/VRF/mock/LinkToken.sol index 0162bf76b31..4f908967c5f 100644 --- a/public/samples/VRF/mock/LinkToken.sol +++ b/public/samples/VRF/mock/LinkToken.sol @@ -1,4 +1,4 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.4.24; +pragma solidity ^0.8.0; -import "@chainlink/contracts/src/v0.4/LinkToken.sol"; +import "@chainlink/contracts/src/v0.8/shared/token/ERC677/LinkToken.sol"; diff --git a/public/samples/VRF/mock/VRFCoordinatorV2Mock.sol b/public/samples/VRF/mock/VRFCoordinatorV2Mock.sol index 1de23d5690c..0cfbcf2bf57 100644 --- a/public/samples/VRF/mock/VRFCoordinatorV2Mock.sol +++ b/public/samples/VRF/mock/VRFCoordinatorV2Mock.sol @@ -1,3 +1,3 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; -import "@chainlink/contracts/src/v0.8/mocks/VRFCoordinatorV2Mock.sol"; +import "@chainlink/contracts/src/v0.8/vrf/mocks/VRFCoordinatorV2Mock.sol"; diff --git a/public/samples/VRF/mock/VRFV2Wrapper.sol b/public/samples/VRF/mock/VRFV2Wrapper.sol index c230e45c131..b18598902bd 100644 --- a/public/samples/VRF/mock/VRFV2Wrapper.sol +++ b/public/samples/VRF/mock/VRFV2Wrapper.sol @@ -1,3 +1,3 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.7; +pragma solidity ^0.8.6; import "@chainlink/contracts/src/v0.8/vrf/VRFV2Wrapper.sol"; diff --git a/public/samples/VRF/mock/VRFv2Consumer.sol b/public/samples/VRF/mock/VRFv2Consumer.sol index a27e13ef229..395fe1742e4 100644 --- a/public/samples/VRF/mock/VRFv2Consumer.sol +++ b/public/samples/VRF/mock/VRFv2Consumer.sol @@ -2,7 +2,7 @@ // An example of a consumer contract that relies on a subscription for funding. pragma solidity ^0.8.7; -import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol"; +import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/vrf/interfaces/VRFCoordinatorV2Interface.sol"; import {VRFConsumerBaseV2} from "@chainlink/contracts/src/v0.8/vrf/VRFConsumerBaseV2.sol"; /** diff --git a/public/samples/events/avasummit/VRFv2SubscriptionManager.sol b/public/samples/events/avasummit/VRFv2SubscriptionManager.sol index 74d198d25c4..8627e25e4e3 100644 --- a/public/samples/events/avasummit/VRFv2SubscriptionManager.sol +++ b/public/samples/events/avasummit/VRFv2SubscriptionManager.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.7; import {LinkTokenInterface} from "@chainlink/contracts/src/v0.8/shared/interfaces/LinkTokenInterface.sol"; -import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol"; +import {VRFCoordinatorV2Interface} from "@chainlink/contracts/src/v0.8/vrf/interfaces/VRFCoordinatorV2Interface.sol"; import {VRFConsumerBaseV2} from "@chainlink/contracts/src/v0.8/vrf/VRFConsumerBaseV2.sol"; /** diff --git a/src/content/any-api/api-reference.mdx b/src/content/any-api/api-reference.mdx index 733d554e2c6..4ca1cbd1876 100644 --- a/src/content/any-api/api-reference.mdx +++ b/src/content/any-api/api-reference.mdx @@ -74,7 +74,7 @@ After the function signature and a short description, two code examples are prov {/* prettier-ignore */} ```solidity -function setChainlinkOracle( +function _setChainlinkOracle( address _oracle ) ``` @@ -87,7 +87,7 @@ Retrieve the oracle address using [chainlinkOracleAddress](#chainlinkoracleaddre ```solidity constructor(address _oracle) { - setChainlinkOracle(_oracle); + _setChainlinkOracle(_oracle); } ``` @@ -95,7 +95,7 @@ constructor(address _oracle) {/* prettier-ignore */} ```solidity -setChainlinkToken( +_setChainlinkToken( address _link ) ``` @@ -107,7 +107,7 @@ Sets the stored address for the LINK token which is used to send requests to Ora constructor(address _link) public { - setChainlinkToken(_link); + _setChainlinkToken(_link); } ``` @@ -118,7 +118,7 @@ Use `buildOperatorRequest` [function](#buildoperatorrequest) if the oracle is an {/* prettier-ignore */} ```solidity -function buildChainlinkRequest( +function _buildChainlinkRequest( bytes32 _jobId, address _callbackAddress, bytes4 _callbackFunctionSignature @@ -137,7 +137,7 @@ function requestPrice() // build a request that calls the myCallback function defined // below by specifying the address of this contract and the function // selector of the myCallback - Chainlink.Request memory request = buildChainlinkRequest( + Chainlink.Request memory request = _buildChainlinkRequest( jobId, address(this), selector); @@ -185,7 +185,7 @@ Use `sendOperatorRequest` [function](#sendoperatorrequest) if the oracle is an ` {/* prettier-ignore */} ```solidity -function sendChainlinkRequest( +function _sendChainlinkRequest( Chainlink.Request memory _req, uint256 _payment ) returns (bytes32 requestId) @@ -202,11 +202,11 @@ Sends the request payload to the stored oracle address. It takes a [Chainlink.Re function requestPrice() public { - Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.callback.selector); + Chainlink.Request memory request = _buildChainlinkRequest(jobId, address(this), this.callback.selector); uint256 paymentAmount = 1 * LINK_DIVISIBILITY / 10; // Equivalent to 0.1 LINK // send the request that you just built - sendChainlinkRequest(request, paymentAmount); + _sendChainlinkRequest(request, paymentAmount); } ``` @@ -217,7 +217,7 @@ Use `sendOperatorRequestTo` [function](#sendoperatorrequestto) if the oracle is {/* prettier-ignore */} ```solidity -function sendChainlinkRequestTo( +function _sendChainlinkRequestTo( address _oracle, Chainlink.Request memory _req, uint256 _payment @@ -233,11 +233,11 @@ Similar to [sendChainlinkRequest](#sendchainlinkrequest), `sendChainlinkRequestT function requestPriceFrom(address _oracle) public { - Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.callback.callbackSelector); + Chainlink.Request memory request = _buildChainlinkRequest(jobId, address(this), this.callback.callbackSelector); uint256 paymentAmount = 1 * LINK_DIVISIBILITY; // = 1 LINK // send the request that you just built to a specified oracle - sendChainlinkRequestTo(_oracle, request, paymentAmount); + _sendChainlinkRequestTo(_oracle, request, paymentAmount); } ``` @@ -282,7 +282,7 @@ It is recommended to use `sendOperatorRequestTo`, but make sure the oracle you a {/* prettier-ignore */} ```solidity -function sendChainlinkRequestTo( +function _sendChainlinkRequestTo( address _oracle, Chainlink.Request memory _req, uint256 _payment @@ -368,7 +368,7 @@ Being able to change a request means that you can change the data fed into a con {/* prettier-ignore */} ```solidity -function cancelChainlinkRequest(bytes32 _requestId, +function _cancelChainlinkRequest(bytes32 _requestId, uint256 _payment, bytes4 _callbackFunc, uint256 _expiration @@ -391,7 +391,7 @@ function cancelRequest( bytes4 _callbackFunc, uint256 _expiration ) public { - cancelChainlinkRequest(_requestId, _payment, _callbackFunc, _expiration); + _cancelChainlinkRequest(_requestId, _payment, _callbackFunc, _expiration); } ``` @@ -453,7 +453,7 @@ If an oracle provider supports listing their oracle on ENS, that provides the ad {/* prettier-ignore */} ```solidity -function chainlinkTokenAddress() returns (address) +function _chainlinkTokenAddress() returns (address) ``` The `chainlinkTokenAddress` function is a helper used to return the stored address of the Chainlink token. This variable is protected and so only made available through getters and setters. @@ -461,7 +461,7 @@ The `chainlinkTokenAddress` function is a helper used to return the stored addre {/* prettier-ignore */} ```solidity function withdrawLink() public { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); + LinkTokenInterface link = LinkTokenInterface(_chainlinkTokenAddress()); require(link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer"); } @@ -609,11 +609,11 @@ Add a string value to the run request parameters. Commonly used for `get` with j function requestEthereumPrice() public { - Chainlink.Request memory req = buildChainlinkRequest(jobId, this, this.fulfill.selector); + Chainlink.Request memory req = _buildChainlinkRequest(jobId, this, this.fulfill.selector); - req.add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD,EUR,JPY"); + req._add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD,EUR,JPY"); - sendChainlinkRequest(req, 1 * LINK_DIVISIBILITY); // =1 LINK + _sendChainlinkRequest(req, 1 * LINK_DIVISIBILITY); // =1 LINK } ``` @@ -635,11 +635,11 @@ Add a CBOR bytes type value to the run request parameters. function requestEmojiPopularity(bytes _unicode) public { - Chainlink.Request memory req = buildChainlinkRequest(jobId, this, this.fulfill.selector); + Chainlink.Request memory req = _buildChainlinkRequest(jobId, this, this.fulfill.selector); req.addBytes("emojiUnicode", _unicode); - sendChainlinkRequest(req, LINK_DIVISIBILITY * 1); + _sendChainlinkRequest(req, LINK_DIVISIBILITY * 1); } ``` @@ -647,7 +647,7 @@ Note that this can also be used as a workaround to pass other data types like ar {/* prettier-ignore */} ```solidity -Chainlink.Request memory req = buildChainlinkRequest(jobId, this, this.fulfill.selector); +Chainlink.Request memory req = _buildChainlinkRequest(jobId, this, this.fulfill.selector); req.addBytes("address", abi.encode(msg.sender)); // msg.sender used in this example. Replace it with your address @@ -671,11 +671,11 @@ Add a CBOR signed integer type value to the run request parameters. Commonly use function requestPrice() public { - Chainlink.Request memory req = buildChainlinkRequest(jobId, this, this.fulfill.selector); + Chainlink.Request memory req = _buildChainlinkRequest(jobId, this, this.fulfill.selector); - req.addInt("times", 100); + req._addInt("times", 100); - sendChainlinkRequest(req, LINK_DIVISIBILITY * 1); + _sendChainlinkRequest(req, LINK_DIVISIBILITY * 1); } ``` @@ -697,11 +697,11 @@ Add a CBOR unsigned integer type value to the run request parameters. Commonly u function requestPrice() public { - Chainlink.Request memory req = buildChainlinkRequest(jobId, this, this.fulfill.selector); + Chainlink.Request memory req = _buildChainlinkRequest(jobId, this, this.fulfill.selector); req.addUint("times", 100); - sendChainlinkRequest(req, LINK_DIVISIBILITY * 1); + _sendChainlinkRequest(req, LINK_DIVISIBILITY * 1); } ``` @@ -723,7 +723,7 @@ Add a CBOR array of strings to the run request parameters. Commonly used with th function requestPrice(string _currency) public { - Chainlink.Request memory req = buildChainlinkRequest(JOB_ID, this, this.myCallback.selector); + Chainlink.Request memory req = _buildChainlinkRequest(JOB_ID, this, this.myCallback.selector); string[] memory path = new string[](2); path[0] = _currency; path[1] = "recent"; @@ -731,7 +731,7 @@ function requestPrice(string _currency) // specify templated fields in a job specification req.addStringArray("path", path); - sendChainlinkRequest(req, PAYMENT); + _sendChainlinkRequest(req, PAYMENT); } ``` @@ -752,11 +752,11 @@ Set the CBOR payload directly on the request object, avoiding the cost of encodi function requestPrice(bytes _cbor) public { - Chainlink.Request memory req = buildChainlinkRequest(JOB_ID, this, this.myCallback.selector); + Chainlink.Request memory req = _buildChainlinkRequest(JOB_ID, this, this.myCallback.selector); req.setBuffer(_cbor); - sendChainlinkRequest(req, PAYMENT); + _sendChainlinkRequest(req, PAYMENT); } ``` diff --git a/src/content/any-api/get-request/examples/array-response.mdx b/src/content/any-api/get-request/examples/array-response.mdx index 41d574f84dd..dd8573ede29 100644 --- a/src/content/any-api/get-request/examples/array-response.mdx +++ b/src/content/any-api/get-request/examples/array-response.mdx @@ -91,7 +91,7 @@ To use this contract: 1. Call the `id` function to confirm that the `id` state variable is not set. -1. Run the `requestFirstId` function. This builds the `Chainlink.Request` using the correct parameters. The `req.add("path", "0,id")` request parameter tells the oracle node to fetch the id at index 0 of the array returned by the GET request. It uses [JSONPath expression](https://jsonpath.com/) with comma `,` delimited string for nested objects, for example: `'0,id'`. +1. Run the `requestFirstId` function. This builds the `Chainlink.Request` using the correct parameters. The `req._add("path", "0,id")` request parameter tells the oracle node to fetch the id at index 0 of the array returned by the GET request. It uses [JSONPath expression](https://jsonpath.com/) with comma `,` delimited string for nested objects, for example: `'0,id'`. 1. After few seconds, call the `id` function. You should get a non-empty response: _bitcoin_ diff --git a/src/content/any-api/get-request/examples/large-responses.mdx b/src/content/any-api/get-request/examples/large-responses.mdx index e395a44e96d..38bba1db0ef 100644 --- a/src/content/any-api/get-request/examples/large-responses.mdx +++ b/src/content/any-api/get-request/examples/large-responses.mdx @@ -79,8 +79,8 @@ To use this contract: 1. Run the `requestBytes` function. This builds the `Chainlink.Request` using the correct parameters: - - The `req.add("get", "URL")` request parameter provides the oracle node with the [url](https://ipfs.io/ipfs/QmZgsvrA1o1C8BGCrx6mHTqR1Ui1XqbCrtbMVrRLHtuPVD?filename=big-api-response.json) where to fetch the response. - - The `req.add('path', 'image')` request parameter tells the oracle node how to parse the response. + - The `req._add("get", "URL")` request parameter provides the oracle node with the [url](https://ipfs.io/ipfs/QmZgsvrA1o1C8BGCrx6mHTqR1Ui1XqbCrtbMVrRLHtuPVD?filename=big-api-response.json) where to fetch the response. + - The `req._add('path', 'image')` request parameter tells the oracle node how to parse the response. 1. After few seconds, call the `data` and `image_url` functions. You should get non-empty responses. diff --git a/src/content/any-api/get-request/examples/multi-variable-responses.mdx b/src/content/any-api/get-request/examples/multi-variable-responses.mdx index 7646b6a49e7..1ca7a55e52c 100644 --- a/src/content/any-api/get-request/examples/multi-variable-responses.mdx +++ b/src/content/any-api/get-request/examples/multi-variable-responses.mdx @@ -85,8 +85,8 @@ To use this contract: 1. Run the `requestMultipleParameters` function. This builds the `Chainlink.Request` using the correct parameters: - - The `req.add("urlBTC", "CRYPTOCOMPARE_ETH_BTC_URL")` request parameter provides the oracle node with the [url](https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=BTC) where to fetch the _ETH-BTC_ price. Same logic for `req.add("urlEUR", "CRYPTOCOMPARE_ETH_BTC_URL")` and `req.add("urlUSD", "CRYPTOCOMPARE_ETH_BTC_URL")`. - - THe `req.add('pathBTC', 'BTC')` request parameter tells the oracle node where to fetch the _ETH-BTC_ price in the _json_ response. Same logic for `req.add('pathUSD', 'EUR')` and `req.add('pathEUR', 'USD')`. + - The `req._add("urlBTC", "CRYPTOCOMPARE_ETH_BTC_URL")` request parameter provides the oracle node with the [url](https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=BTC) where to fetch the _ETH-BTC_ price. Same logic for `req._add("urlEUR", "CRYPTOCOMPARE_ETH_BTC_URL")` and `req._add("urlUSD", "CRYPTOCOMPARE_ETH_BTC_URL")`. + - THe `req._add('pathBTC', 'BTC')` request parameter tells the oracle node where to fetch the _ETH-BTC_ price in the _json_ response. Same logic for `req._add('pathUSD', 'EUR')` and `req._add('pathEUR', 'USD')`. Because you provide the URLs and paths, the `MultiWordConsumer` in the example can call any public API as long as the URLs and paths are correct. 1. After few seconds, call the `btc`, `usd` , and `eur` functions. You should get a non-zero responses. diff --git a/src/content/any-api/get-request/examples/single-word-response.mdx b/src/content/any-api/get-request/examples/single-word-response.mdx index d34692e358e..64affe26e4a 100644 --- a/src/content/any-api/get-request/examples/single-word-response.mdx +++ b/src/content/any-api/get-request/examples/single-word-response.mdx @@ -106,9 +106,9 @@ To use this contract: 1. Run the `requestVolumeData` function. This builds the `Chainlink.Request` using the correct parameters: - - The `req.add("get", "CRYPTOCOMPARE_URL")` request parameter provides the oracle node with the [URL](https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD) from which to fetch _ETH-USD_ trading info. - - The `req.add('path', 'RAW,ETH,USD,VOLUME24HOUR')` request parameter tells the oracle node where to fetch the 24h ETH volume in the _json_ response. It uses a [JSONPath expression](https://jsonpath.com/) with comma(,) delimited string for nested objects. For example: `'RAW,ETH,USD,VOLUME24HOUR'`. - - The `req.addInt('times', timesAmount)` request parameter provides the oracle node with the multiplier `timesAmount` by which the fetched volume is multiplied. Use this to remove any decimals from the volume. **_Note_**: The `times` parameter is mandatory. If the API that you call returns a number without any decimals then provide `1`as `timesAmount`. + - The `req._add("get", "CRYPTOCOMPARE_URL")` request parameter provides the oracle node with the [URL](https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD) from which to fetch _ETH-USD_ trading info. + - The `req._add('path', 'RAW,ETH,USD,VOLUME24HOUR')` request parameter tells the oracle node where to fetch the 24h ETH volume in the _json_ response. It uses a [JSONPath expression](https://jsonpath.com/) with comma(,) delimited string for nested objects. For example: `'RAW,ETH,USD,VOLUME24HOUR'`. + - The `req._addInt('times', timesAmount)` request parameter provides the oracle node with the multiplier `timesAmount` by which the fetched volume is multiplied. Use this to remove any decimals from the volume. **_Note_**: The `times` parameter is mandatory. If the API that you call returns a number without any decimals then provide `1`as `timesAmount`. The `APIConsumer` in the example above is flexible enough to call any public API as long as the URL in _get_, _path_, and _timesAmounnt_ are correct. 1. After few seconds, call the `volume` function. You should get a non-zero response. diff --git a/src/content/any-api/getting-started.mdx b/src/content/any-api/getting-started.mdx index 8684a3cc8a3..b005e93d306 100644 --- a/src/content/any-api/getting-started.mdx +++ b/src/content/any-api/getting-started.mdx @@ -118,11 +118,11 @@ This will make your smart contract much more succinct. The `requestVolumeData` f {/* prettier-ignore */} ```solidity function requestVolumeData() public returns (bytes32 requestId) { - Chainlink.Request memory req = buildChainlinkRequest(jobId, address(this), this.fulfill.selector); + Chainlink.Request memory req = _buildChainlinkRequest(jobId, address(this), this.fulfill.selector); // Extra parameters don't need to be defined here because they are already defined in the job - return sendChainlinkRequest(req, fee); + return _sendChainlinkRequest(req, fee); } ``` diff --git a/src/content/any-api/testnet-oracles.mdx b/src/content/any-api/testnet-oracles.mdx index b7a5cde24d1..a04a9d95843 100644 --- a/src/content/any-api/testnet-oracles.mdx +++ b/src/content/any-api/testnet-oracles.mdx @@ -66,13 +66,13 @@ A full example can be found [here](/any-api/get-request/examples/large-responses {/* prettier-ignore */} ```solidity function request() public { - Chainlink.Request memory req = buildChainlinkRequest('7da2702f37fd48e5b1b9a5715e3509b6', address(this), this.fulfill.selector); - req.add( + Chainlink.Request memory req = _buildChainlinkRequest('7da2702f37fd48e5b1b9a5715e3509b6', address(this), this.fulfill.selector); + req._add( 'get', 'https://ipfs.io/ipfs/QmZgsvrA1o1C8BGCrx6mHTqR1Ui1XqbCrtbMVrRLHtuPVD?filename=big-api-response.json' ); - req.add('path', 'image'); - sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK + req._add('path', 'image'); + _sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK } ``` @@ -97,14 +97,14 @@ A full example can be found [here](/any-api/get-request/examples/single-word-res {/* prettier-ignore */} ```solidity function request() public { - Chainlink.Request memory req = buildChainlinkRequest('ca98366cc7314957b8c012c72f05aeeb', address(this), this.fulfill.selector); - req.add( + Chainlink.Request memory req = _buildChainlinkRequest('ca98366cc7314957b8c012c72f05aeeb', address(this), this.fulfill.selector); + req._add( 'get', 'https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD' ); - req.add('path', 'RAW,ETH,USD,VOLUME24HOUR'); - req.addInt('times', 10**18); // Multiply by times value to remove decimals. Parameter required so pass '1' if the number returned doesn't have decimals - sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK + req._add('path', 'RAW,ETH,USD,VOLUME24HOUR'); + req._addInt('times', 10**18); // Multiply by times value to remove decimals. Parameter required so pass '1' if the number returned doesn't have decimals + _sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK } ``` @@ -125,14 +125,14 @@ function fulfill(bytes32 _requestId, uint256 _volume) public recordChainlinkFulf {/* prettier-ignore */} ```solidity function request() public { - Chainlink.Request memory req = buildChainlinkRequest('fcf4140d696d44b687012232948bdd5d', address(this), this.fulfill.selector); - req.add( + Chainlink.Request memory req = _buildChainlinkRequest('fcf4140d696d44b687012232948bdd5d', address(this), this.fulfill.selector); + req._add( 'get', 'https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD' ); - req.add('path', 'RAW,ETH,USD,VOLUME24HOUR'); - req.addInt('times', 10**18); // Multiply by times value to remove decimals. Parameter required so pass '1' if the number returned doesn't have decimals - sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK + req._add('path', 'RAW,ETH,USD,VOLUME24HOUR'); + req._addInt('times', 10**18); // Multiply by times value to remove decimals. Parameter required so pass '1' if the number returned doesn't have decimals + _sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK } ``` @@ -153,13 +153,13 @@ function fulfill(bytes32 _requestId, int256 _volume) public recordChainlinkFulfi {/* prettier-ignore */} ```solidity function request() public { - Chainlink.Request memory req = buildChainlinkRequest('c1c5e92880894eb6b27d3cae19670aa3', address(this), this.fulfill.selector); - req.add( + Chainlink.Request memory req = _buildChainlinkRequest('c1c5e92880894eb6b27d3cae19670aa3', address(this), this.fulfill.selector); + req._add( 'get', 'https://app.proofi.com/api/verify/eip155/0xCB5085214B6318aF3dd0FBbb5E74fbF6bf332151?contract=0x2f7f7E44ca1e2Ca1A54db4222cF97ab47EE026F1' ); - req.add('path', 'approved'); - sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK + req._add('path', 'approved'); + _sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK } ``` @@ -182,13 +182,13 @@ A full example can be found [here](/any-api/get-request/examples/array-response) {/* prettier-ignore */} ```solidity function request() public { - Chainlink.Request memory req = buildChainlinkRequest('7d80a6386ef543a3abb52817f6707e3b', address(this), this.fulfill.selector); - req.add( + Chainlink.Request memory req = _buildChainlinkRequest('7d80a6386ef543a3abb52817f6707e3b', address(this), this.fulfill.selector); + req._add( 'get', 'https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&per_page=10' ); - req.add('path', '0,id'); - sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK + req._add('path', '0,id'); + _sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK } ``` diff --git a/src/content/ccip/tutorials/ccipreceive-gaslimit.mdx b/src/content/ccip/tutorials/ccipreceive-gaslimit.mdx index 6257622d7fd..0a77a560544 100644 --- a/src/content/ccip/tutorials/ccipreceive-gaslimit.mdx +++ b/src/content/ccip/tutorials/ccipreceive-gaslimit.mdx @@ -267,7 +267,7 @@ To estimate the gas usage of the `ccipReceive` function within your own Foundry 1. Create a testing file in the `test` directory of your project and import the [`MockCCIPRouter`](https://github.com/smartcontractkit/ccip/blob/ccip-develop/contracts/src/v0.8/ccip/test/mocks/MockRouter.sol) contract: ```solidity - import {MockCCIPRouter} from "@chainlink/contracts-ccip/src/v0.8/ccip/test/mocks/MockRouter.sol"; + import { MockCCIPRouter } from "@chainlink/contracts-ccip/src/v0.8/ccip/test/mocks/MockRouter.sol"; ``` **_Note_:** The `MockCCIPRouter` receives the CCIP message from your CCIP Sender, calls the `ccipReceive` function on your CCIP Receiver, and emits the `MsgExecuted` event with the gas used. @@ -289,7 +289,7 @@ To estimate the gas usage of the `ccipReceive` function within your own Hardhat 1. Create a Solidity file in the `contracts` directory of your project and import the [`MockCCIPRouter`](https://github.com/smartcontractkit/ccip/blob/ccip-develop/contracts/src/v0.8/ccip/test/mocks/MockRouter.sol) contract: ```solidity - import {MockCCIPRouter} from "@chainlink/contracts-ccip/src/v0.8/ccip/test/mocks/MockRouter.sol"; + import { MockCCIPRouter } from "@chainlink/contracts-ccip/src/v0.8/ccip/test/mocks/MockRouter.sol"; ``` **_Note_:** The `MockCCIPRouter` receives the CCIP message from your CCIP Sender, calls the `ccipReceive` function on your CCIP Receiver, and emits the `MsgExecuted` event with the gas used. diff --git a/src/content/chainlink-functions/api-reference/functions-client.mdx b/src/content/chainlink-functions/api-reference/functions-client.mdx index af7461a0cf6..42f7d451016 100644 --- a/src/content/chainlink-functions/api-reference/functions-client.mdx +++ b/src/content/chainlink-functions/api-reference/functions-client.mdx @@ -17,7 +17,7 @@ Functions contracts are available starting from version _0.7.1_. -Consumer contract developers inherit [FunctionsClient](https://github.com/smartcontractkit/chainlink/blob/9f19654c086e8e92720d935d217536c8a5600c08/contracts/src/v0.8/functions/dev/v1_0_0/FunctionsClient.sol) to create Chainlink Functions requests. +Consumer contract developers inherit [FunctionsClient](https://github.com/smartcontractkit/chainlink/blob/master/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol) to create Chainlink Functions requests. ## Events diff --git a/src/content/chainlink-functions/api-reference/functions-request.mdx b/src/content/chainlink-functions/api-reference/functions-request.mdx index 7347185d948..5c960bc01fe 100644 --- a/src/content/chainlink-functions/api-reference/functions-request.mdx +++ b/src/content/chainlink-functions/api-reference/functions-request.mdx @@ -17,7 +17,7 @@ Functions contracts are available starting from version _0.7.1_. -Consumer contract developers use the [FunctionsRequest library](https://github.com/smartcontractkit/chainlink/blob/9f19654c086e8e92720d935d217536c8a5600c08/contracts/src/v0.8/functions/dev/v1_0_0/libraries/FunctionsRequest.sol) to build their [requests](#request). +Consumer contract developers use the [FunctionsRequest library](https://github.com/smartcontractkit/chainlink/blob/master/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol) to build their [requests](#request). ## Types and Constants diff --git a/src/content/chainlink-functions/getting-started.mdx b/src/content/chainlink-functions/getting-started.mdx index a146f4ab3c8..e65a8344660 100644 --- a/src/content/chainlink-functions/getting-started.mdx +++ b/src/content/chainlink-functions/getting-started.mdx @@ -235,8 +235,8 @@ Chainlink Functions is capable of much more than just retrieving data. Try one o These contracts are available in an NPM package so that you can import them from within your project. ``` - import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/FunctionsClient.sol"; - import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/dev/v1_0_0/libraries/FunctionsRequest.sol"; + import {FunctionsClient} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol"; + import {FunctionsRequest} from "@chainlink/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol"; ``` - Use the FunctionsRequest.sol library to get all the functions needed for building a Chainlink Functions request. diff --git a/src/content/chainlink-functions/resources/architecture.mdx b/src/content/chainlink-functions/resources/architecture.mdx index b62b4f4e215..3819a1bbd4c 100644 --- a/src/content/chainlink-functions/resources/architecture.mdx +++ b/src/content/chainlink-functions/resources/architecture.mdx @@ -14,7 +14,7 @@ import { Aside, ClickToZoom } from "@components" ## Request and Receive Data -This model is similar to the [Basic Request Model](/architecture-overview/architecture-request-model): The consumer contract initiates the cycle by sending a request to the [FunctionsRouter contract](https://github.com/smartcontractkit/chainlink/blob/9f19654c086e8e92720d935d217536c8a5600c08/contracts/src/v0.8/functions/dev/v1_0_0/FunctionsRouter.sol). Oracle nodes watch for events emitted by the [FunctionsCoordinator contract](https://github.com/smartcontractkit/chainlink/blob/9f19654c086e8e92720d935d217536c8a5600c08/contracts/src/v0.8/functions/dev/v1_0_0/FunctionsCoordinator.sol) and run the computation offchain. Finally, oracle nodes use the [Chainlink OCR](/architecture-overview/off-chain-reporting) protocol to aggregate all the returned before passing the single aggregated response back to the consumer contract via a callback function. +This model is similar to the [Basic Request Model](/architecture-overview/architecture-request-model): The consumer contract initiates the cycle by sending a request to the [FunctionsRouter contract](https://github.com/smartcontractkit/chainlink/blob/master/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol). Oracle nodes watch for events emitted by the [FunctionsCoordinator contract](https://github.com/smartcontractkit/chainlink/blob/master/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol) and run the computation offchain. Finally, oracle nodes use the [Chainlink OCR](/architecture-overview/off-chain-reporting) protocol to aggregate all the returned before passing the single aggregated response back to the consumer contract via a callback function. -The acceptance process is initiated via the Chainlink Functions Subscription Manager. After a user accepts the ToS by generating the required signature with their externally owned account (EOA), they transmit proof of acceptance to the [TermsOfServiceAllowList contract](https://github.com/smartcontractkit/chainlink/blob/9f19654c086e8e92720d935d217536c8a5600c08/contracts/src/v0.8/functions/dev/v1_0_0/accessControl/TermsOfServiceAllowList.sol). Upon successful validation of the proof, the EOA is added to the `allowedSenders` registry, permitting it to manage subscriptions. +The acceptance process is initiated via the Chainlink Functions Subscription Manager. After a user accepts the ToS by generating the required signature with their externally owned account (EOA), they transmit proof of acceptance to the [TermsOfServiceAllowList contract](https://github.com/smartcontractkit/chainlink/blob/master/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol). Upon successful validation of the proof, the EOA is added to the `allowedSenders` registry, permitting it to manage subscriptions. ### Create subscription -After the ToS is accepted, EOAs can create subscriptions. Upon creation, the [FunctionsRouter](https://github.com/smartcontractkit/chainlink/blob/d0d1adc5c0a654f65f23ceb0c5a9a356d30f159c/contracts/src/v0.8/functions/dev/1_0_0/FunctionsRouter.sol) assigns a unique identifier, _Subscription ID_. +After the ToS is accepted, EOAs can create subscriptions. Upon creation, the [FunctionsRouter](https://github.com/smartcontractkit/chainlink/blob/master/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol) assigns a unique identifier, _Subscription ID_. **Note**: EOAs can directly interact with the FunctionsRouter contract using their preferred web3 library, such as web3.js or ethers.js. @@ -136,7 +136,7 @@ To cancel a subscription: Transferring ownership is currently only supported using the [Functions Hardhat Starter kit](https://github.com/smartcontractkit/functions-hardhat-starter-kit) or the [Functions Toolkit NPM package](https://github.com/smartcontractkit/functions-toolkit): 1. Use the `functions-sub-transfer` command to initiate the transfer of ownership by specifying the new owner's address. -1. As a prerequisite, the prospective owner must be part of the `allowedSenders` registry within the [TermsOfServiceAllowList contract](https://github.com/smartcontractkit/chainlink/blob/9f19654c086e8e92720d935d217536c8a5600c08/contracts/src/v0.8/functions/dev/v1_0_0/accessControl/TermsOfServiceAllowList.sol). This verifies their acceptance of the Chainlink Functions' Terms of Service (ToS). +1. As a prerequisite, the prospective owner must be part of the `allowedSenders` registry within the [TermsOfServiceAllowList contract](https://github.com/smartcontractkit/chainlink/blob/master/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol). This verifies their acceptance of the Chainlink Functions' Terms of Service (ToS). 1. The prospective owner should use the [Functions Hardhat Starter kit](https://github.com/smartcontractkit/functions-hardhat-starter-kit) and run the `functions-sub-accept` command to confirm the ownership transfer. **Note**: This guide will be updated as soon as the Chainlink Functions Subscription Manager supports ownership transfers. diff --git a/src/content/chainlink-nodes/external-adapters/contract-creators.mdx b/src/content/chainlink-nodes/external-adapters/contract-creators.mdx index a92e6683a88..79648e74c09 100644 --- a/src/content/chainlink-nodes/external-adapters/contract-creators.mdx +++ b/src/content/chainlink-nodes/external-adapters/contract-creators.mdx @@ -20,13 +20,13 @@ function requestMWAPrice(string _coin, string _market) onlyOwner returns (bytes32 requestId) { - Chainlink.Request memory req = buildChainlinkRequest(SPEC_ID, this, this.fulfill.selector); - req.add("endpoint", "mwa-historic"); - req.add("coin", _coin); - req.add("market", _market); - req.add("copyPath", "data.-1.1"); - req.addInt("times", 100); - requestId = sendChainlinkRequest(req, oraclePayment); + Chainlink.Request memory req = _buildChainlinkRequest(SPEC_ID, this, this.fulfill.selector); + req._add("endpoint", "mwa-historic"); + req._add("coin", _coin); + req._add("market", _market); + req._add("copyPath", "data.-1.1"); + req._addInt("times", 100); + requestId = _sendChainlinkRequest(req, oraclePayment); } ``` diff --git a/src/content/chainlink-nodes/oracle-jobs/v1/adapters.mdx b/src/content/chainlink-nodes/oracle-jobs/v1/adapters.mdx index d1c76d09566..32ee376172f 100644 --- a/src/content/chainlink-nodes/oracle-jobs/v1/adapters.mdx +++ b/src/content/chainlink-nodes/oracle-jobs/v1/adapters.mdx @@ -54,8 +54,8 @@ This core adapter compares a user-specified value with the value from the previo {/* prettier-ignore */} ```solidity -req.addInt("value", 10000); -req.add("operator", "gte"); +req._addInt("value", 10000); +req._add("operator", "gte"); ``` ## Copy @@ -91,7 +91,7 @@ Or the following for a single comma-delimited string: {/* prettier-ignore */} ```solidity -req.add("copyPath", "RAW,ETH,USD,LASTMARKET"); +req._add("copyPath", "RAW,ETH,USD,LASTMARKET"); ```