diff --git a/packages/client/api/subscribe.js b/packages/client/api/subscribe.cjs similarity index 100% rename from packages/client/api/subscribe.js rename to packages/client/api/subscribe.cjs diff --git a/packages/client/api/users.js b/packages/client/api/users.cjs similarity index 100% rename from packages/client/api/users.js rename to packages/client/api/users.cjs diff --git a/packages/client/package.json b/packages/client/package.json index 44ff21e..33f4d24 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -34,8 +34,6 @@ "zod": "^3.23.8" }, "devDependencies": { - "@0no-co/graphqlsp": "^1.12.12", - "daisyui": "4.12.10", "@eslint/js": "^9.9.0", "@tanstack/eslint-plugin-query": "5.52.0", "@tailwindcss/forms": "^0.5.7", @@ -45,6 +43,7 @@ "@vercel/node": "3.2.10", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", + "daisyui": "4.12.10", "dotenv-expand": "11.0.6", "eslint": "^9.9.0", "eslint-plugin-react-hooks": "^5.1.0-rc.0", diff --git a/packages/client/tsconfig.node.json b/packages/client/tsconfig.node.json index dde7f94..9fdabc1 100644 --- a/packages/client/tsconfig.node.json +++ b/packages/client/tsconfig.node.json @@ -19,18 +19,7 @@ "noFallthroughCasesInSwitch": true, /* Plugins */ - "plugins": [ - { - "name": "@0no-co/graphqlsp", - "schema": "https://easscan.org/graphql", - "tadaOutputLocation": "src/types/eas.d.ts" - } - // { - // "name": "@0no-co/graphqlsp", - // "schema": "../../indexer/schema.graphql", - // "tadaOutputLocation": "src/types/gg-indexer.d.ts" - // } - ] + "plugins": [] }, "include": ["vite.config.ts", "api", "../../indexer/schema.graphql"] } diff --git a/packages/contracts/script/DeployActionRegistry.s.sol b/packages/contracts/script/DeployActionRegistry.s.sol index 4a1af55..b3c6cad 100644 --- a/packages/contracts/script/DeployActionRegistry.s.sol +++ b/packages/contracts/script/DeployActionRegistry.s.sol @@ -22,8 +22,10 @@ contract DeployActionRegistry is Script { vm.startBroadcast(); ActionRegistry newRegistry = new ActionRegistry{ salt: SALT }(); - Capital[] memory capitals = new Capital[](1); + Capital[] memory capitals = new Capital[](3); capitals[0] = Capital.LIVING; + capitals[1] = Capital.CULTURAL; + capitals[2] = Capital.SOCIAL; string[] memory observeMedia = new string[](3); observeMedia[0] = "QmVvKqpnfJm8UwRq9SF15V2jgJ86yCBsmMBmpEaoQU92bD"; @@ -38,16 +40,16 @@ contract DeployActionRegistry is Script { newRegistry.initialize(address(this)); newRegistry.registerAction( block.timestamp, - block.timestamp + 30 days, - "Observe", + block.timestamp + 27 days, + "Identify Plants", "QmX8rLExs7TDGPNAg9w22R8iYeRUYsrkkLg6LUUK8oNDUJ", capitals, observeMedia ); newRegistry.registerAction( block.timestamp, - block.timestamp + 30 days, - "Plant", + block.timestamp + 27 days, + "Plant Seedlings", "QmZGJBdZeCVx7S42KqovzUhwrGhqwxVCaoofzUE2YRhb2s", capitals, plantMedia diff --git a/packages/contracts/script/DeployGardenToken.s.sol b/packages/contracts/script/DeployGardenToken.s.sol index e89614e..f3beca9 100644 --- a/packages/contracts/script/DeployGardenToken.s.sol +++ b/packages/contracts/script/DeployGardenToken.s.sol @@ -91,22 +91,26 @@ contract DeployGardenToken is Script { console.log("GardenToken deployed at:", token); // Mint a garden for Rio Claro, São Paulo - address[] memory gardeners = new address[](4); - address[] memory gardenOperators = new address[](4); + address[] memory gardeners = new address[](5); + address[] memory gardenOperators = new address[](5); gardeners[0] = 0x2aa64E6d80390F5C017F0313cB908051BE2FD35e; // afo-wefa.eth gardeners[1] = 0xAcD59e854adf632d2322404198624F757C868C97; // groweco.eth gardeners[2] = 0x29e6cbF2450F86006292D10A3cF791955600a457; // marcin gardeners[3] = 0x742fa58340df9Ad7c691De4Ed999CF7f71079A8F; // afo@greenpill.builders + gardeners[4] = 0x9aBb9dFfEedd44EEeDD44Eeedd44eEeDd44eEeDd; // deployer gardenOperators[0] = 0x2aa64E6d80390F5C017F0313cB908051BE2FD35e; // afo-wefa.eth gardenOperators[1] = 0xAcD59e854adf632d2322404198624F757C868C97; // groweco.eth gardenOperators[2] = 0x29e6cbF2450F86006292D10A3cF791955600a457; // marcin gardenOperators[3] = 0x742fa58340df9Ad7c691De4Ed999CF7f71079A8F; // afo@greenpill.builders + gardenOperators[4] = 0x9aBb9dFfEedd44EEeDD44Eeedd44eEeDd44eEeDd; // deployer gardenAccount = gardenToken.mintGarden( communityToken, "Root Planet", "Observing invasive species and planting natives to improve biodiversity.", + "Rio Claro, S\u00e3o Paulo", + "bafybeie6wzt62apqp57vtpdtkuth6cakc5ir64nfzd3jpjpmw36r3hbriq", gardeners, gardenOperators ); diff --git a/packages/contracts/src/Constants.sol b/packages/contracts/src/Constants.sol index 97018d4..278e376 100644 --- a/packages/contracts/src/Constants.sol +++ b/packages/contracts/src/Constants.sol @@ -3,15 +3,15 @@ pragma solidity ^0.8.25; // GREEN GOODS address constant GREEN_GOODS_SAFE = 0x1B9Ac97Ea62f69521A14cbe6F45eb24aD6612C19; -address constant ACTION_REGISTRY = 0x9AF3D5Bb1a6d057B99A4948420c5d24ff1e482Ce; -address constant WORK_RESOLVER = 0x4d394ec4dcDC93e451a27C9c9D915Baee9D43A78; -address constant WORK_APPROVAL_RESOLVER = 0xAD93d365C83784F245780d914460D60cBa11d1FA; +address constant ACTION_REGISTRY = 0x933b88Ef33a25d14a68354C88b2eb31e475cd482; +address constant WORK_RESOLVER = 0x1cdDfe922FC92F692bA7db69A2D451d874449c9c; +address constant WORK_APPROVAL_RESOLVER = 0x63279204b744C4fDb7dbE8331F6b13D7F8344a1d; address constant COMMUNITY_TOKEN_ARBITRUM = 0x633d825006E4c659b061db7FB9378eDEe8bd95f3; address constant COMMUNITY_TOKEN_SEPOLIA = 0x4cB67033da4FD849a552A4C5553E7F532B93E516; -address constant GARDEN_TOKEN = 0x9EF896a314B7aE98609eC0c0cA43724C768046B4; -address constant GARDEN_ACCOUNT_IMPLEMENTATION = 0x0E69cFBF71cc21490f25c0b61dc833d16BBd4634; -address constant ROOT_PLANET_GARDEN = 0xa9Cb249a3B651Ce82bf9E9cc48BCF41957647F48; +address constant GARDEN_TOKEN = 0x508198C3f071987D5eEb0030825628F9B10c6037; +address constant GARDEN_ACCOUNT_IMPLEMENTATION = 0x83287652b4e1514e101a4053c9bcAFf6a24d051C; +address constant ROOT_PLANET_GARDEN = 0x55fdFb60fb07fCe2Dc8A7CC3ED8a6f1C793FeE68; // TOKENBOUND (FUTURE PRIMTIVE) bytes32 constant SALT = 0x6551655165516551655165516551655165516551655165516551655165516551; diff --git a/packages/contracts/src/Schemas.sol b/packages/contracts/src/Schemas.sol index 29d013f..3983449 100644 --- a/packages/contracts/src/Schemas.sol +++ b/packages/contracts/src/Schemas.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.25; -struct AsessmentSchema { +struct AssessmentSchema { string title; string[] media; } diff --git a/packages/contracts/src/accounts/Garden.sol b/packages/contracts/src/accounts/Garden.sol index fb17557..90e1a07 100644 --- a/packages/contracts/src/accounts/Garden.sol +++ b/packages/contracts/src/accounts/Garden.sol @@ -52,7 +52,11 @@ contract GardenAccount is AccountV3Upgradable, Initializable { /// @notice The description of the garden. string public description; - // TODO: Add banner image property + /// @notice The location of the garden. + string public location; + + /// @notice The URL of the banner image of the garden. + string public bannerImage; /// @notice Mapping of gardener addresses to their status. mapping(address gardener => bool isGardener) public gardeners; @@ -100,12 +104,16 @@ contract GardenAccount is AccountV3Upgradable, Initializable { address _communityToken, string calldata _name, string calldata _description, + string calldata _location, + string calldata _bannerImage, address[] calldata _gardeners, address[] calldata _gardenOperators ) external initializer { communityToken = _communityToken; name = _name; description = _description; + location = _location; + bannerImage = _bannerImage; gardeners[_msgSender()] = true; gardenOperators[_msgSender()] = true; diff --git a/packages/contracts/src/registries/Action.sol b/packages/contracts/src/registries/Action.sol index e6478ab..b686e24 100644 --- a/packages/contracts/src/registries/Action.sol +++ b/packages/contracts/src/registries/Action.sol @@ -25,9 +25,22 @@ contract ActionRegistry is UUPSUpgradeable, OwnableUpgradeable { /// @notice Emitted when a new action is registered. /// @param owner The address of the action owner. /// @param actionUID The unique identifier of the action. - /// @param action The details of the registered action. - /// @param timestamp The timestamp of the registration. - event ActionRegistered(address indexed owner, uint256 indexed actionUID, Action indexed action, uint256 timestamp); + /// @param startTime The start time of the action. + /// @param endTime The end time of the action. + /// @param title The title of the action. + /// @param instructions The instructions of the action. + /// @param capitals The capitals of the action. + /// @param media The media of the action. + event ActionRegistered( + address owner, + uint256 indexed actionUID, + uint256 indexed startTime, + uint256 indexed endTime, + string title, + string instructions, + Capital[] capitals, + string[] media + ); /// @notice Emitted when an existing action is start time is updated. /// @param owner The address of the action owner. @@ -106,7 +119,7 @@ contract ActionRegistry is UUPSUpgradeable, OwnableUpgradeable { actionToOwner[actionUID] = _msgSender(); idToAction[actionUID] = Action(_startTime, _endTime, _title, _instructions, _capitals, _media); - emit ActionRegistered(_msgSender(), actionUID, idToAction[actionUID], block.timestamp); + emit ActionRegistered(_msgSender(), actionUID, _startTime, _endTime, _title, _instructions, _capitals, _media); } /// @notice Updates the start time of an existing action. diff --git a/packages/contracts/src/tokens/Garden.sol b/packages/contracts/src/tokens/Garden.sol index 8e9f9f9..330b386 100644 --- a/packages/contracts/src/tokens/Garden.sol +++ b/packages/contracts/src/tokens/Garden.sol @@ -16,10 +16,24 @@ contract GardenToken is ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable { address private _gardenAccountImplementation; /// @notice Emitted when a new Garden is minted. - /// @param owner The owner of the minted Garden token. /// @param tokenId The unique identifier of the minted Garden token. /// @param account The address of the associated Garden account. - event GardenMinted(address indexed owner, uint256 indexed tokenId, address indexed account); + /// @param name The name of the Garden. + /// @param description The description of the Garden. + /// @param location The location of the Garden. + /// @param bannerImage The URL of the banner image of the Garden. + /// @param gardeners An array of addresses representing the gardeners of the Garden. + /// @param gardenOperators An array of addresses representing the operators of the Garden. + event GardenMinted( + uint256 indexed tokenId, + address indexed account, + string name, + string description, + string location, + string bannerImage, + address[] gardeners, + address[] gardenOperators + ); /// @custom:oz-upgrades-unsafe-allow constructor /// @param gardenAccountImplementation The address of the Garden account implementation. @@ -48,6 +62,8 @@ contract GardenToken is ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable { address communityToken, string calldata name, string calldata description, + string calldata location, + string calldata bannerImage, address[] calldata gardeners, address[] calldata gardenOperators ) external onlyOwner returns (address) { @@ -56,9 +72,17 @@ contract GardenToken is ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable { address gardenAccount = TBALib.createAccount(_gardenAccountImplementation, address(this), tokenId); - GardenAccount(payable(gardenAccount)).initialize(communityToken, name, description, gardeners, gardenOperators); + GardenAccount(payable(gardenAccount)).initialize( + communityToken, + name, + description, + location, + bannerImage, + gardeners, + gardenOperators + ); - emit GardenMinted(_msgSender(), tokenId, gardenAccount); + emit GardenMinted(tokenId, gardenAccount, name, description, location, bannerImage, gardeners, gardenOperators); return gardenAccount; } diff --git a/packages/contracts/test/GardenAccount.t.sol b/packages/contracts/test/GardenAccount.t.sol index f2bbe86..868eea0 100644 --- a/packages/contracts/test/GardenAccount.t.sol +++ b/packages/contracts/test/GardenAccount.t.sol @@ -26,7 +26,15 @@ contract GardenAccountTest is Test { gardeners[0] = address(0x100); gardenOperators[0] = address(0x200); - gardenAccount.initialize(address(0x555), "Test Garden", "Test Description", gardeners, gardenOperators); + gardenAccount.initialize( + address(0x555), + "Test Garden", + "Test Description", + "Test Location", + "", + gardeners, + gardenOperators + ); } function testInitialize() public { diff --git a/packages/contracts/test/WorkApprovalResolver.t.sol b/packages/contracts/test/WorkApprovalResolver.t.sol index 768e540..7fd1edb 100644 --- a/packages/contracts/test/WorkApprovalResolver.t.sol +++ b/packages/contracts/test/WorkApprovalResolver.t.sol @@ -33,6 +33,8 @@ contract WorkApprovalResolverTest is Test { address(0x555), "Test Garden", "Test Description", + "Test Location", + "", new address[](0), new address[](0) ); diff --git a/packages/contracts/test/WorkResolver.t.sol b/packages/contracts/test/WorkResolver.t.sol index a2e079a..bdaabf7 100644 --- a/packages/contracts/test/WorkResolver.t.sol +++ b/packages/contracts/test/WorkResolver.t.sol @@ -33,6 +33,8 @@ contract WorkResolverTest is Test { address(0x545), "Test Garden", "Test Description", + "Test Location", + "", new address[](0), new address[](0) ); diff --git a/packages/indexer/config.yaml b/packages/indexer/config.yaml index 5905548..b6c139c 100644 --- a/packages/indexer/config.yaml +++ b/packages/indexer/config.yaml @@ -32,6 +32,6 @@ networks: start_block: 242630858 contracts: - name: ActionRegistry - address: 0x9AF3D5Bb1a6d057B99A4948420c5d24ff1e482Ce + address: 0x933b88Ef33a25d14a68354C88b2eb31e475cd482 - name: GardenToken - address: 0xf226185e4e76d05EC2cbb9BF1B04e67E25532ecA + address: 0x508198C3f071987D5eEb0030825628F9B10c6037 diff --git a/packages/indexer/package.json b/packages/indexer/package.json index 18a4204..7ae4bfa 100644 --- a/packages/indexer/package.json +++ b/packages/indexer/package.json @@ -22,8 +22,8 @@ }, "dependencies": { "chai": "4.3.10", - "envio": "2.1.0", - "ethers": "6.8.0" + "envio": "2.11.6", + "ethers": "6.13.5" }, "optionalDependencies": { "generated": "./generated" diff --git a/packages/indexer/pnpm-lock.yaml b/packages/indexer/pnpm-lock.yaml index 8b3d84e..911ceda 100644 --- a/packages/indexer/pnpm-lock.yaml +++ b/packages/indexer/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: specifier: 4.3.10 version: 4.3.10 envio: - specifier: 2.1.0 - version: 2.1.0 + specifier: 2.11.6 + version: 2.11.6(typescript@5.2.2) ethers: - specifier: 6.8.0 - version: 6.8.0 + specifier: 6.13.5 + version: 6.13.5 optionalDependencies: generated: specifier: ./generated @@ -50,17 +50,14 @@ importers: specifier: 1.4.0 version: 1.4.0 '@envio-dev/hypersync-client': - specifier: 0.5.0 - version: 0.5.0 + specifier: 0.6.2 + version: 0.6.2 '@glennsl/rescript-fetch': specifier: 0.2.0 version: 0.2.0 '@rescript/react': specifier: 0.12.1 - version: 0.12.1(react-dom@18.3.1(react@18.2.0))(react@18.2.0) - '@ryyppy/rescript-promise': - specifier: 2.1.0 - version: 2.1.0 + version: 0.12.1(react-dom@19.0.0(react@18.2.0))(react@18.2.0) bignumber.js: specifier: 9.1.2 version: 9.1.2 @@ -107,23 +104,20 @@ importers: specifier: 18.2.0 version: 18.2.0 rescript: - specifier: 11.1.0 - version: 11.1.0 + specifier: 11.1.3 + version: 11.1.3 rescript-envsafe: specifier: 4.2.0 - version: 4.2.0(rescript-schema@8.0.0(rescript@11.1.0))(rescript@11.1.0) - rescript-express: - specifier: 0.4.1 - version: 0.4.1(express@4.19.2) + version: 4.2.0(rescript-schema@8.1.0(rescript@11.1.3))(rescript@11.1.3) rescript-schema: - specifier: 8.0.0 - version: 8.0.0(rescript@11.1.0) + specifier: 8.1.0 + version: 8.1.0(rescript@11.1.3) root: specifier: ../. version: link:.. viem: - specifier: 1.16.6 - version: 1.16.6(typescript@5.2.2) + specifier: 2.21.0 + version: 2.21.0(typescript@5.2.2) yargs: specifier: 17.7.2 version: 17.7.2 @@ -133,8 +127,8 @@ packages: '@adraffy/ens-normalize@1.10.0': resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} - '@adraffy/ens-normalize@1.9.4': - resolution: {integrity: sha512-UK0bHA7hh9cR39V+4gl2/NnBBjoXIxkuWAPCaY4X7fbH4L/azIi7ilWOCjMUYfpJgraLUAqkRi2BqrjME8Rynw==} + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -148,44 +142,44 @@ packages: resolution: {integrity: sha512-eCSBUTgl8KbPyxky8cecDRLCYu2C1oFV4AZ72bEsI+TxXEvaljaL2kgttfzfu7gW+M89eCz55s49uF2t+YMTWA==} engines: {node: '>=10'} - '@envio-dev/hypersync-client-darwin-arm64@0.5.0': - resolution: {integrity: sha512-gPL3MFjev2MfMU3Qg77+g3HNipaeEVY1AakW55jjsU8shnVRcFEfykT3AuBK5KO8aFT+itUR5yTZMqaKAY+VRg==} + '@envio-dev/hypersync-client-darwin-arm64@0.6.2': + resolution: {integrity: sha512-dDIuQqEgARR1JYodbGkmck1i9qbYEidc4Kw4DOrRKQ0uZFwflI4o8wm3P+G/ofc1iXwp4pm7jqNUGzZDpK9pqA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@envio-dev/hypersync-client-darwin-x64@0.5.0': - resolution: {integrity: sha512-GuM+UODTThVbmRU/XywMCG549wJogDPah94DCiIHKe4Bw6LqWfdEKVXY4kdnerZ8l+7HoewJh+EAlCHAR8+fIQ==} + '@envio-dev/hypersync-client-darwin-x64@0.6.2': + resolution: {integrity: sha512-NGlgkmosAzlZ1EuQ5/djkg6sQI/dgVX+XGOLI6Zden0ca2zr/ByBRA7yCKxpwZHYynFN2FoMsMGSRY8jj6XQWw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@envio-dev/hypersync-client-linux-arm64-gnu@0.5.0': - resolution: {integrity: sha512-/5HwFJQlYiie62QpP7BUDEGEFHptTOBXq3F0NpLAlbR+TeeK3BXfZEHAR4qpzmJYWJQ21+f0YfuPFzig5ybyfA==} + '@envio-dev/hypersync-client-linux-arm64-gnu@0.6.2': + resolution: {integrity: sha512-p2LQSaOSgjVvvFHOGHnPHTnsDHCWNEG78J29guZyqWojmaxTaR4eGyFEknla7eO0w58EIUGEBTF0+EJ7duMimg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@envio-dev/hypersync-client-linux-x64-gnu@0.5.0': - resolution: {integrity: sha512-heQPhCzQy3sDgDEguglGKMt6qmg3YbVjEC2SCsAxOV7YTCMmIF6QocIq+N5t3fikDIp1nfH0oGEdlmswnNQ4CQ==} + '@envio-dev/hypersync-client-linux-x64-gnu@0.6.2': + resolution: {integrity: sha512-/kIL9Q0e5hM0g6cvdCHL93LMu+OCnwQAGKQHCj2TKKUjVpWFNb0Ki5PMgJhQ8mimEBFsJAnErVK+HrugLTlaVQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@envio-dev/hypersync-client-linux-x64-musl@0.5.0': - resolution: {integrity: sha512-eTbj91QaqRQXP0hKx0drs9RZFfAdhYurF79sLXp9TLQWBWnnqPF9R+0Fl6WDjVHvUhsvqYqYratNXx5rxuthPg==} + '@envio-dev/hypersync-client-linux-x64-musl@0.6.2': + resolution: {integrity: sha512-4r5hA/zyxUjWBDYYeXLCl5pBfSI9njEIPuLMFXajjVcAvSXRtBhmgVwa3JrjjCxZ8aLfqk9vvPkb/KgYfrbXXw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@envio-dev/hypersync-client-win32-x64-msvc@0.5.0': - resolution: {integrity: sha512-rNpt57uYAabned7k+yhvwg5F+xNti65og1u+60H2Q/MqfARppA7A2ntHTCgI865H1fN+/HXEywwtjwLOkX4J2g==} + '@envio-dev/hypersync-client-win32-x64-msvc@0.6.2': + resolution: {integrity: sha512-VgsSwmDAgvpgo9QsIiwIp9IN+h3g0U/7zrCrvNAMj+lsMHJPZ7L0cfN58dQUr84wL8domJGJrnMKUtu/Yf49ow==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@envio-dev/hypersync-client@0.5.0': - resolution: {integrity: sha512-BfYqU2LVTF2A8NdYmu7dedrmk8rC9rEnYCK53zVgmntbFrhEqWv5npl3P6U0IWPeYAt/0woC0jHO8pKpUsjvyQ==} + '@envio-dev/hypersync-client@0.6.2': + resolution: {integrity: sha512-wgp0UmblW8yn/q5NMkVYPFDvOmgHWPTibl/QJYyYK2KXqAMHssUjP07ayduiZCexQOZ94Agpv4SvmYxQNjGBIA==} engines: {node: '>= 10'} '@glennsl/rescript-fetch@0.2.0': @@ -204,10 +198,17 @@ packages: '@noble/curves@1.2.0': resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + '@noble/curves@1.4.0': + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + '@noble/hashes@1.3.2': resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} @@ -218,17 +219,14 @@ packages: react: '>=18.0.0' react-dom: '>=18.0.0' - '@ryyppy/rescript-promise@2.1.0': - resolution: {integrity: sha512-+dW6msBrj2Lr2hbEMX+HoWCvN89qVjl94RwbYWJgHQuj8jm/izdPC0YzxgpGoEFdeAEW2sOozoLcYHxT6o5WXQ==} - - '@scure/base@1.1.7': - resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} - '@scure/bip32@1.3.2': - resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} - '@scure/bip39@1.2.1': - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -257,14 +255,17 @@ packages: '@types/node@20.8.8': resolution: {integrity: sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ==} + '@types/node@22.7.5': + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@types/yoga-layout@1.9.2': resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==} - abitype@0.9.8: - resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} + abitype@1.0.5: + resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} peerDependencies: typescript: '>=5.0.4' - zod: ^3 >=3.19.1 + zod: ^3 >=3.22.0 peerDependenciesMeta: typescript: optional: true @@ -385,8 +386,12 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} camelcase@6.3.0: @@ -513,10 +518,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - define-property@1.0.0: resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} engines: {node: '>=0.10.0'} @@ -545,6 +546,10 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -558,38 +563,42 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - envio-darwin-arm64@2.1.0: - resolution: {integrity: sha512-j3cCOIxhqOk8Gt4Q03BsI4mXEyrWsoMelFHqy6omO6ZFgX8f6SVK5z9b5lZKeUOBKuyX3M7x0jo2P/HKQSSCyw==} + envio-darwin-arm64@2.11.6: + resolution: {integrity: sha512-YED+BDv+H/rZ1uxRMfueftTUhP5+8etBOtq/8YPqJYuRgLcVEnfoxWUxH/3Zq7XQ1YhZ3aj1eHaas/Jsi11MjA==} cpu: [arm64] os: [darwin] - envio-darwin-x64@2.1.0: - resolution: {integrity: sha512-PPPp0hUbnf07QPozElhESuCvK2ni4DNHCU3njghECAg6A5mEHR9pa/ow8Lr0sSvBqHmBhpCxx5RyF3X5i3lbYA==} + envio-darwin-x64@2.11.6: + resolution: {integrity: sha512-rqkO0n7DbJPbJtze236yZOqFkgksmrCtpbg8jEbHplGz0Tzw2LgbITNihQvUuqcg2jz0xbZ3rnh9fNxrNjDfhw==} cpu: [x64] os: [darwin] - envio-linux-arm64@2.1.0: - resolution: {integrity: sha512-okHUoQMEXtjUo4/x8uQXwrK5AnwfSAT1hQpAx67wZrRkrdqek7r4qfvNMgNQYnzo9/wjrmK5ZGA9uUcW7QuFlA==} + envio-linux-arm64@2.11.6: + resolution: {integrity: sha512-v1zGdLdwdxkTfmtFHCIJf55S52nze+dootgCefMxPHpRjsZwVnwQu9epOOwJGPXIfDzaGNUJRBZQUvR2nrA4iQ==} cpu: [arm64] os: [linux] - envio-linux-x64@2.1.0: - resolution: {integrity: sha512-Y/FyhIGuyqgwHof1MXKTnhFRoBEJW6KgH3s4EKWBOPUidqvavKYzTiMzhuDAw2XHkgEvTPn9fhRf5gOz6QGH8w==} + envio-linux-x64@2.11.6: + resolution: {integrity: sha512-D2RPtbH3aptkibOY2tcwsup1eRC5z12mZg24uHK/Q7jn1IAetkRPEjNkiXrV3eFK7xP6xoRsopWzVMgZefQjsw==} cpu: [x64] os: [linux] - envio@2.1.0: - resolution: {integrity: sha512-20ev9vY5Ko37oo2sh1rYMBDOoM8AVhjK8Roj+KCrNFMlrM2v2saVdExuzV/a+4Yjhb5Lle6VUkuBF6ODaHbJgw==} + envio@2.11.6: + resolution: {integrity: sha512-l3KFcnIHy4+co2B0S55/54nZQq9NKsMKZ82QI+CZ75kdMa4CPUdMf2Yj/dJAwTYvA8jaFypQ5yzxxKS9T2CDKg==} hasBin: true - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -609,6 +618,10 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + ethers@6.13.5: + resolution: {integrity: sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==} + engines: {node: '>=14.0.0'} + ethers@6.8.0: resolution: {integrity: sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==} engines: {node: '>=14.0.0'} @@ -687,8 +700,12 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} glob-parent@5.1.2: @@ -704,22 +721,16 @@ packages: engines: {node: '>=12'} deprecated: Glob versions prior to v9 are no longer supported - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} hasown@2.0.2: @@ -834,8 +845,8 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - isows@1.0.3: - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + isows@1.0.4: + resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} peerDependencies: ws: '*' @@ -885,6 +896,10 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -963,12 +978,86 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + npm@10.9.2: + resolution: {integrity: sha512-iriPEPIkoMYUy3F6f3wwSZAU93E0Eg6cHwIR6jzzOXWSy+SD/rOODEs74cVONHKSx2obXtuUoyidVEhISrisgQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + bundledDependencies: + - '@isaacs/string-locale-compare' + - '@npmcli/arborist' + - '@npmcli/config' + - '@npmcli/fs' + - '@npmcli/map-workspaces' + - '@npmcli/package-json' + - '@npmcli/promise-spawn' + - '@npmcli/redact' + - '@npmcli/run-script' + - '@sigstore/tuf' + - abbrev + - archy + - cacache + - chalk + - ci-info + - cli-columns + - fastest-levenshtein + - fs-minipass + - glob + - graceful-fs + - hosted-git-info + - ini + - init-package-json + - is-cidr + - json-parse-even-better-errors + - libnpmaccess + - libnpmdiff + - libnpmexec + - libnpmfund + - libnpmhook + - libnpmorg + - libnpmpack + - libnpmpublish + - libnpmsearch + - libnpmteam + - libnpmversion + - make-fetch-happen + - minimatch + - minipass + - minipass-pipeline + - ms + - node-gyp + - nopt + - normalize-package-data + - npm-audit-report + - npm-install-checks + - npm-package-arg + - npm-pick-manifest + - npm-profile + - npm-registry-fetch + - npm-user-validate + - p-map + - pacote + - parse-conflict-json + - proc-log + - qrcode-terminal + - read + - semver + - spdx-expression-parse + - ssri + - supports-color + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + - write-file-atomic + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} engines: {node: '>= 0.4'} on-exit-leak-free@2.1.2: @@ -1059,8 +1148,8 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -1087,10 +1176,10 @@ packages: react-devtools-core@4.28.5: resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} peerDependencies: - react: ^18.3.1 + react: ^19.0.0 react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -1109,8 +1198,8 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + readable-stream@4.6.0: + resolution: {integrity: sha512-cbAdYt0VcnpN2Bekq7PU+k363ZRsPwJoEEJOEtSJQlJXzwaxt3FIo/uL+KeDSGIjJqtkwyge4KQgD2S2kd+CQw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} readdirp@3.6.0: @@ -1131,18 +1220,13 @@ packages: rescript: 11.x rescript-schema: 6.x || 7.x || 8.x - rescript-express@0.4.1: - resolution: {integrity: sha512-R+xAQKANfIFAIcxhQrkLn58IZQwhMZuQpVCH6UtTRNLWqlVtaogG9z4Rt0MQZgqYOjvrOtt51P0hOmYGg/90Fw==} - peerDependencies: - express: ^4.17.1 - - rescript-schema@8.0.0: - resolution: {integrity: sha512-+i/us90Q73HeRZ9Y6BXfogb0BXpfwDmmFhHI+dZkvnzGOLMQEx3kowXv78LfP2ujpedwpN85/aqEPXRb+eBtog==} + rescript-schema@8.1.0: + resolution: {integrity: sha512-syU4Wvy2tJzBKkqa8ad1yYSDIh8EoKGUsZv6Wa0YpERqb7H6Kemtc6zU+BxIghahzShb6L7RMfVNuKC48KluIg==} peerDependencies: rescript: 11.x - rescript@11.1.0: - resolution: {integrity: sha512-9la2Dv+ACylQ77I8s4spPu1JnLZXbH5WgxcLHLLUBWgFFSiv0wXqgzWztrBIZqwFgVX5BYcwldUqUVcEzdCyHg==} + rescript@11.1.3: + resolution: {integrity: sha512-bI+yxDcwsv7qE34zLuXeO8Qkc2+1ng5ErlSjnUIZdrAWKoGzHXpJ6ZxiiRBUoYnoMsgRwhqvrugIFyNgWasmsw==} engines: {node: '>=10'} hasBin: true @@ -1166,8 +1250,8 @@ packages: scheduler@0.20.2: resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} @@ -1183,18 +1267,27 @@ packages: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} signal-exit@3.0.7: @@ -1306,6 +1399,9 @@ packages: tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + type-detect@4.1.0: resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} engines: {node: '>=4'} @@ -1330,6 +1426,9 @@ packages: undici-types@5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -1351,14 +1450,17 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - viem@1.16.6: - resolution: {integrity: sha512-jcWcFQ+xzIfDwexwPJRvCuCRJKEkK9iHTStG7mpU5MmuSBpACs4nATBDyXNFtUiyYTFzLlVEwWkt68K0nCSImg==} + viem@2.21.0: + resolution: {integrity: sha512-9g3Gw2nOU6t4bNuoDI5vwVExzIxseU0J7Jjx10gA2RNQVrytIrLxggW++tWEe3w4mnnm/pS1WgZFjQ/QKf/nHw==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: typescript: optional: true + webauthn-p256@0.0.5: + resolution: {integrity: sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -1400,8 +1502,8 @@ packages: utf-8-validate: optional: true - ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -1448,6 +1550,11 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yarn@1.22.22: + resolution: {integrity: sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==} + engines: {node: '>=4.0.0'} + hasBin: true + yn@2.0.0: resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} engines: {node: '>=4'} @@ -1468,7 +1575,7 @@ snapshots: '@adraffy/ens-normalize@1.10.0': {} - '@adraffy/ens-normalize@1.9.4': {} + '@adraffy/ens-normalize@1.10.1': {} '@cspotcode/source-map-support@0.8.1': dependencies: @@ -1482,32 +1589,35 @@ snapshots: dependencies: '@elastic/ecs-helpers': 1.1.0 - '@envio-dev/hypersync-client-darwin-arm64@0.5.0': + '@envio-dev/hypersync-client-darwin-arm64@0.6.2': optional: true - '@envio-dev/hypersync-client-darwin-x64@0.5.0': + '@envio-dev/hypersync-client-darwin-x64@0.6.2': optional: true - '@envio-dev/hypersync-client-linux-arm64-gnu@0.5.0': + '@envio-dev/hypersync-client-linux-arm64-gnu@0.6.2': optional: true - '@envio-dev/hypersync-client-linux-x64-gnu@0.5.0': + '@envio-dev/hypersync-client-linux-x64-gnu@0.6.2': optional: true - '@envio-dev/hypersync-client-linux-x64-musl@0.5.0': + '@envio-dev/hypersync-client-linux-x64-musl@0.6.2': optional: true - '@envio-dev/hypersync-client-win32-x64-msvc@0.5.0': + '@envio-dev/hypersync-client-win32-x64-msvc@0.6.2': optional: true - '@envio-dev/hypersync-client@0.5.0': + '@envio-dev/hypersync-client@0.6.2': + dependencies: + npm: 10.9.2 + yarn: 1.22.22 optionalDependencies: - '@envio-dev/hypersync-client-darwin-arm64': 0.5.0 - '@envio-dev/hypersync-client-darwin-x64': 0.5.0 - '@envio-dev/hypersync-client-linux-arm64-gnu': 0.5.0 - '@envio-dev/hypersync-client-linux-x64-gnu': 0.5.0 - '@envio-dev/hypersync-client-linux-x64-musl': 0.5.0 - '@envio-dev/hypersync-client-win32-x64-msvc': 0.5.0 + '@envio-dev/hypersync-client-darwin-arm64': 0.6.2 + '@envio-dev/hypersync-client-darwin-x64': 0.6.2 + '@envio-dev/hypersync-client-linux-arm64-gnu': 0.6.2 + '@envio-dev/hypersync-client-linux-x64-gnu': 0.6.2 + '@envio-dev/hypersync-client-linux-x64-musl': 0.6.2 + '@envio-dev/hypersync-client-win32-x64-msvc': 0.6.2 '@glennsl/rescript-fetch@0.2.0': {} @@ -1524,29 +1634,33 @@ snapshots: dependencies: '@noble/hashes': 1.3.2 + '@noble/curves@1.4.0': + dependencies: + '@noble/hashes': 1.4.0 + '@noble/hashes@1.3.2': {} + '@noble/hashes@1.4.0': {} + '@opentelemetry/api@1.9.0': {} - '@rescript/react@0.12.1(react-dom@18.3.1(react@18.2.0))(react@18.2.0)': + '@rescript/react@0.12.1(react-dom@19.0.0(react@18.2.0))(react@18.2.0)': dependencies: react: 18.2.0 - react-dom: 18.3.1(react@18.2.0) - - '@ryyppy/rescript-promise@2.1.0': {} + react-dom: 19.0.0(react@18.2.0) - '@scure/base@1.1.7': {} + '@scure/base@1.1.9': {} - '@scure/bip32@1.3.2': + '@scure/bip32@1.4.0': dependencies: - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.7 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 - '@scure/bip39@1.2.1': + '@scure/bip39@1.3.0': dependencies: - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.7 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 '@tsconfig/node10@1.0.11': {} @@ -1569,9 +1683,13 @@ snapshots: dependencies: undici-types: 5.25.3 + '@types/node@22.7.5': + dependencies: + undici-types: 6.19.8 + '@types/yoga-layout@1.9.2': {} - abitype@0.9.8(typescript@5.2.2): + abitype@1.0.5(typescript@5.2.2): optionalDependencies: typescript: 5.2.2 @@ -1683,13 +1801,15 @@ snapshots: bytes@3.1.2: {} - call-bind@1.0.7: + call-bind-apply-helpers@1.0.1: dependencies: - es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 + + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.7 camelcase@6.3.0: {} @@ -1806,12 +1926,6 @@ snapshots: deepmerge@4.3.1: {} - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - define-property@1.0.0: dependencies: is-descriptor: 1.0.3 @@ -1828,6 +1942,12 @@ snapshots: dotenv@16.4.5: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + ee-first@1.1.1: {} emoji-regex@8.0.0: {} @@ -1838,31 +1958,43 @@ snapshots: dependencies: once: 1.4.0 - envio-darwin-arm64@2.1.0: + envio-darwin-arm64@2.11.6: optional: true - envio-darwin-x64@2.1.0: + envio-darwin-x64@2.11.6: optional: true - envio-linux-arm64@2.1.0: + envio-linux-arm64@2.11.6: optional: true - envio-linux-x64@2.1.0: + envio-linux-x64@2.11.6: optional: true - envio@2.1.0: + envio@2.11.6(typescript@5.2.2): + dependencies: + '@envio-dev/hypersync-client': 0.6.2 + rescript: 11.1.3 + rescript-schema: 8.1.0(rescript@11.1.3) + viem: 2.21.0(typescript@5.2.2) optionalDependencies: - envio-darwin-arm64: 2.1.0 - envio-darwin-x64: 2.1.0 - envio-linux-arm64: 2.1.0 - envio-linux-x64: 2.1.0 + envio-darwin-arm64: 2.11.6 + envio-darwin-x64: 2.11.6 + envio-linux-arm64: 2.11.6 + envio-linux-x64: 2.11.6 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} es-errors@1.3.0: {} + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + escalade@3.1.2: {} escape-html@1.0.3: {} @@ -1873,6 +2005,19 @@ snapshots: etag@1.8.1: {} + ethers@6.13.5: + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 22.7.5 + aes-js: 4.0.0-beta.5 + tslib: 2.7.0 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + ethers@6.8.0: dependencies: '@adraffy/ens-normalize': 1.10.0 @@ -1981,13 +2126,23 @@ snapshots: get-func-name@2.0.2: {} - get-intrinsic@1.2.4: + get-intrinsic@1.2.7: dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.0.0 function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.0.0 glob-parent@5.1.2: dependencies: @@ -2010,19 +2165,11 @@ snapshots: minimatch: 5.0.1 once: 1.4.0 - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 + gopd@1.2.0: {} has-flag@4.0.0: {} - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} + has-symbols@1.1.0: {} hasown@2.0.2: dependencies: @@ -2144,9 +2291,9 @@ snapshots: is-unicode-supported@0.1.0: {} - isows@1.0.3(ws@8.13.0): + isows@1.0.4(ws@8.17.1): dependencies: - ws: 8.13.0 + ws: 8.17.1 joycon@3.1.1: {} @@ -2190,6 +2337,8 @@ snapshots: make-error@1.3.6: {} + math-intrinsics@1.1.0: {} + media-typer@0.3.0: {} merge-descriptors@1.0.1: {} @@ -2260,9 +2409,11 @@ snapshots: normalize-path@3.0.0: {} + npm@10.9.2: {} + object-assign@4.1.1: {} - object-inspect@1.13.2: {} + object-inspect@1.13.3: {} on-exit-leak-free@2.1.2: {} @@ -2302,12 +2453,12 @@ snapshots: pino-abstract-transport@1.1.0: dependencies: - readable-stream: 4.5.2 + readable-stream: 4.6.0 split2: 4.2.0 pino-abstract-transport@1.2.0: dependencies: - readable-stream: 4.5.2 + readable-stream: 4.6.0 split2: 4.2.0 pino-pretty@10.2.3: @@ -2321,8 +2472,8 @@ snapshots: minimist: 1.2.8 on-exit-leak-free: 2.1.2 pino-abstract-transport: 1.2.0 - pump: 3.0.0 - readable-stream: 4.5.2 + pump: 3.0.2 + readable-stream: 4.6.0 secure-json-parse: 2.7.0 sonic-boom: 3.8.1 strip-json-comments: 3.1.1 @@ -2365,7 +2516,7 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - pump@3.0.0: + pump@3.0.2: dependencies: end-of-stream: 1.4.4 once: 1.4.0 @@ -2374,7 +2525,7 @@ snapshots: qs@6.11.0: dependencies: - side-channel: 1.0.6 + side-channel: 1.1.0 quick-format-unescaped@4.0.4: {} @@ -2393,17 +2544,16 @@ snapshots: react-devtools-core@4.28.5: dependencies: - shell-quote: 1.8.1 + shell-quote: 1.8.2 ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate - react-dom@18.3.1(react@18.2.0): + react-dom@19.0.0(react@18.2.0): dependencies: - loose-envify: 1.4.0 react: 18.2.0 - scheduler: 0.23.2 + scheduler: 0.25.0 react-is@16.13.1: {} @@ -2424,7 +2574,7 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.5.2: + readable-stream@4.6.0: dependencies: abort-controller: 3.0.0 buffer: 6.0.3 @@ -2440,20 +2590,16 @@ snapshots: require-directory@2.1.1: {} - rescript-envsafe@4.2.0(rescript-schema@8.0.0(rescript@11.1.0))(rescript@11.1.0): - dependencies: - rescript: 11.1.0 - rescript-schema: 8.0.0(rescript@11.1.0) - - rescript-express@0.4.1(express@4.19.2): + rescript-envsafe@4.2.0(rescript-schema@8.1.0(rescript@11.1.3))(rescript@11.1.3): dependencies: - express: 4.19.2 + rescript: 11.1.3 + rescript-schema: 8.1.0(rescript@11.1.3) - rescript-schema@8.0.0(rescript@11.1.0): + rescript-schema@8.1.0(rescript@11.1.3): dependencies: - rescript: 11.1.0 + rescript: 11.1.3 - rescript@11.1.0: {} + rescript@11.1.3: {} restore-cursor@3.1.0: dependencies: @@ -2473,9 +2619,7 @@ snapshots: loose-envify: 1.4.0 object-assign: 4.1.1 - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 + scheduler@0.25.0: {} secure-json-parse@2.7.0: {} @@ -2510,25 +2654,37 @@ snapshots: transitivePeerDependencies: - supports-color - set-function-length@1.2.2: + setprototypeof@1.2.0: {} + + shell-quote@1.8.2: {} + + side-channel-list@1.0.0: dependencies: - define-data-property: 1.1.4 es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 + object-inspect: 1.13.3 - setprototypeof@1.2.0: {} + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.3 - shell-quote@1.8.1: {} + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 - side-channel@1.0.6: + side-channel@1.1.0: dependencies: - call-bind: 1.0.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 signal-exit@3.0.7: {} @@ -2648,6 +2804,8 @@ snapshots: tslib@2.4.0: {} + tslib@2.7.0: {} + type-detect@4.1.0: {} type-fest@0.12.0: {} @@ -2663,6 +2821,8 @@ snapshots: undici-types@5.25.3: {} + undici-types@6.19.8: {} + unpipe@1.0.0: {} uri-js@4.4.1: @@ -2677,16 +2837,17 @@ snapshots: vary@1.1.2: {} - viem@1.16.6(typescript@5.2.2): + viem@2.21.0(typescript@5.2.2): dependencies: - '@adraffy/ens-normalize': 1.9.4 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.2.2) - isows: 1.0.3(ws@8.13.0) - ws: 8.13.0 + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + abitype: 1.0.5(typescript@5.2.2) + isows: 1.0.4(ws@8.17.1) + webauthn-p256: 0.0.5 + ws: 8.17.1 optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: @@ -2694,6 +2855,11 @@ snapshots: - utf-8-validate - zod + webauthn-p256@0.0.5: + dependencies: + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + webidl-conversions@3.0.1: {} whatwg-url@5.0.0: @@ -2728,7 +2894,7 @@ snapshots: ws@7.5.10: {} - ws@8.13.0: {} + ws@8.17.1: {} ws@8.5.0: {} @@ -2765,6 +2931,8 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yarn@1.22.22: {} + yn@2.0.0: {} yn@3.1.1: {} diff --git a/packages/indexer/schema.graphql b/packages/indexer/schema.graphql index 5a99ca1..3793b9f 100644 --- a/packages/indexer/schema.graphql +++ b/packages/indexer/schema.graphql @@ -11,7 +11,7 @@ enum Capital { } type Action { - id: Int! + id: ID! ownerAddress: String! # Address startTime: BigInt! endTime: BigInt! diff --git a/packages/indexer/src/EventHandlers.ts b/packages/indexer/src/EventHandlers.ts index 4eeb531..914539a 100644 --- a/packages/indexer/src/EventHandlers.ts +++ b/packages/indexer/src/EventHandlers.ts @@ -9,40 +9,42 @@ import { // Handler for the ActionRegistered event ActionRegistry.ActionRegistered.handler(async ({ event, context }) => { - // const actionId = event.params.actionUID.toString(); - // // const capitals: Capital[] = event.params.action[4].map((capital) => { - // // const number = Number(capital); - // // if (number === 1) { - // // return "SOCIAL"; - // // } else if (number === 2) { - // // return "MATERIAL"; - // // } else if (number === 3) { - // // return "FINANCIAL"; - // // } else if (number === 4) { - // // return "LIVING"; - // // } else if (number === 5) { - // // return "INTELLECTUAL"; - // // } else if (number === 6) { - // // return "SPIRITUAL"; - // // } else if (number === 7) { - // // return "CULTURAL"; - // // } else { - // // return "UNKNOWN"; - // // } - // // }); - // // // Update or create a new Action entity - // const actionEntity: Action = { - // id: actionId, - // ownerAddress: event.params.owner, - // startTime: event.params.action[0], - // endTime: event.params.action[1], - // title: event.params.action[2], - // instructions: event.params.action[3], - // capitals: [], - // media: event.params.action[5], - // createdAt: event.block.timestamp, - // }; - // context.Action.set(actionEntity); + const actionId = event.params.actionUID.toString(); + const capitals: Capital[] = event.params.capitals.map((capital) => { + const number = Number(capital); + if (number === 1) { + return "SOCIAL"; + } else if (number === 2) { + return "MATERIAL"; + } else if (number === 3) { + return "FINANCIAL"; + } else if (number === 4) { + return "LIVING"; + } else if (number === 5) { + return "INTELLECTUAL"; + } else if (number === 6) { + return "SPIRITUAL"; + } else if (number === 7) { + return "CULTURAL"; + } else { + return "UNKNOWN"; + } + }); + + // Update or create a new Action entity + const actionEntity: Action = { + id: actionId, + ownerAddress: event.params.owner, + startTime: event.params.startTime, + endTime: event.params.endTime, + title: event.params.title, + instructions: event.params.instructions, + capitals, + media: event.params.media, + createdAt: event.block.timestamp, + }; + + context.Action.set(actionEntity); }); // Handler for the ActionStartTimeUpdated event @@ -125,12 +127,12 @@ GardenToken.GardenMinted.handler(async ({ event, context }) => { // create a new Garden entity const gardenEntity: Garden = { id: event.params.account, - name: "", - description: "", - bannerImage: "", - location: "", - gardeners: [], - operators: [], + name: event.params.name, + description: event.params.description, + bannerImage: event.params.bannerImage, + location: event.params.location, + gardeners: event.params.gardeners, + operators: event.params.gardenOperators, tokenAddress: event.srcAddress, tokenID: event.params.tokenId, createdAt: event.block.timestamp, diff --git a/packages/indexer/test/test.ts b/packages/indexer/test/test.ts index 6dee830..c5ee6ad 100644 --- a/packages/indexer/test/test.ts +++ b/packages/indexer/test/test.ts @@ -1,120 +1,103 @@ import assert from "assert"; -import { TestHelpers, User } from "generated"; -const { MockDb, Greeter, Addresses } = TestHelpers; +import { TestHelpers, Action, Garden } from "generated"; +const { MockDb, Addresses, ActionRegistry, GardenToken, GardenAccount } = + TestHelpers; -describe("Greeter template tests", () => { - it("A NewGreeting event creates a User entity", async () => { +describe("Action Registry Test", () => { + it("A new action is registered", async () => { // Initializing the mock database const mockDbInitial = MockDb.createMockDb(); // Initializing values for mock event const userAddress = Addresses.defaultAddress; - const greeting = "Hi there"; + const action = { + title: "Hi there", + instructions: "Instructions", + media: ["https://example.com/image.jpg"], + startTime: BigInt(0), + endTime: BigInt(0), + capitals: [], + ownerAddress: userAddress, + }; // Creating a mock event - const mockNewGreetingEvent = Greeter.NewGreeting.createMockEvent({ - greeting: greeting, - user: userAddress, - }); + const mockNewGreetingEvent = + ActionRegistry.ActionRegistered.createMockEvent({ + actionUID: BigInt(0), + ...action, + }); // Processing the mock event on the mock database - const updatedMockDb = await Greeter.NewGreeting.processEvent({ + const updatedMockDb = await ActionRegistry.ActionRegistered.processEvent({ event: mockNewGreetingEvent, mockDb: mockDbInitial, }); + // Getting the entity from the mock database + const actualActionEntity = updatedMockDb.entities.Action.get("0"); + // Expected entity that should be created - const expectedUserEntity: User = { - id: userAddress, - latestGreeting: greeting, - numberOfGreetings: 1, - greetings: [greeting], + const expectedActionEntity: Action = { + id: "0", + createdAt: actualActionEntity?.createdAt ?? 0, + ...action, }; - // Getting the entity from the mock database - const actualUserEntity = updatedMockDb.entities.User.get(userAddress); - // Asserting that the entity in the mock database is the same as the expected entity - assert.deepEqual(expectedUserEntity, actualUserEntity); + assert.deepEqual(expectedActionEntity, actualActionEntity); }); +}); - it("2 Greetings from the same users results in that user having a greeter count of 2", async () => { +describe("Garden Token Test", () => { + it("A new garden is minted", async () => { // Initializing the mock database const mockDbInitial = MockDb.createMockDb(); - // Initializing values for mock event - const userAddress = Addresses.defaultAddress; - const greeting = "Hi there"; - const greetingAgain = "Oh hello again"; - - // Creating a mock event - const mockNewGreetingEvent = Greeter.NewGreeting.createMockEvent({ - greeting: greeting, - user: userAddress, - }); - - // Creating a mock event - const mockNewGreetingEvent2 = Greeter.NewGreeting.createMockEvent({ - greeting: greetingAgain, - user: userAddress, - }); - - // Processing the mock event on the mock database - const updatedMockDb = await Greeter.NewGreeting.processEvent({ - event: mockNewGreetingEvent, - mockDb: mockDbInitial, - }); - - // Processing the mock event on the updated mock database - const updatedMockDb2 = await Greeter.NewGreeting.processEvent({ - event: mockNewGreetingEvent2, - mockDb: updatedMockDb, - }); - - // Getting the entity from the mock database - const actualUserEntity = updatedMockDb2.entities.User.get(userAddress); - // Asserting that the field value of the entity in the mock database is the same as the expected field value - assert.equal(2, actualUserEntity?.numberOfGreetings); - }); - - it("2 Greetings from the same users results in the latest greeting being the greeting from the second event", async () => { - // Initializing the mock database - const mockDbInitial = MockDb.createMockDb(); // Initializing values for mock event const userAddress = Addresses.defaultAddress; - const greeting = "Hi there"; - const greetingAgain = "Oh hello again"; - - // Creating a mock event - const mockNewGreetingEvent = Greeter.NewGreeting.createMockEvent({ - greeting: greeting, - user: userAddress, - }); + const garden = { + account: "0x0000000000000000000000000000000000000000", + bannerImage: "https://example.com/image.jpg", + name: "My Garden", + description: "Description", + location: "Location", + gardeners: [userAddress], + operators: [userAddress], + tokenID: BigInt(0), + }; // Creating a mock event - const mockNewGreetingEvent2 = Greeter.NewGreeting.createMockEvent({ - greeting: greetingAgain, - user: userAddress, + const mockNewGardenEvent = GardenToken.GardenMinted.createMockEvent({ + ...garden, + gardenOperators: garden.operators, }); // Processing the mock event on the mock database - const updatedMockDb = await Greeter.NewGreeting.processEvent({ - event: mockNewGreetingEvent, + const updatedMockDb = await GardenToken.GardenMinted.processEvent({ + event: mockNewGardenEvent, mockDb: mockDbInitial, }); - // Processing the mock event on the updated mock database - const updatedMockDb2 = await Greeter.NewGreeting.processEvent({ - event: mockNewGreetingEvent2, - mockDb: updatedMockDb, - }); - // Getting the entity from the mock database - const actualUserEntity = updatedMockDb2.entities.User.get(userAddress); + const actualGardenEntity = updatedMockDb.entities.Garden.get( + garden.account + ); - const expectedGreeting: string = greetingAgain; + // Expected entity that should be created + const expectedGardenEntity: Garden = { + id: garden.account, + tokenAddress: actualGardenEntity?.tokenAddress ?? "", + createdAt: actualGardenEntity?.createdAt ?? 0, + bannerImage: garden.bannerImage, + name: garden.name, + description: garden.description, + location: garden.location, + gardeners: garden.gardeners, + operators: garden.operators, + tokenID: garden.tokenID, + }; - // Asserting that the field value of the entity in the mock database is the same as the expected field value - assert.equal(expectedGreeting, actualUserEntity?.latestGreeting); + // Asserting that the entity in the mock database is the same as the expected entity + assert.deepEqual(expectedGardenEntity, actualGardenEntity); }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 906fa8c..7807cfb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -103,9 +103,6 @@ importers: specifier: ^3.23.8 version: 3.23.8 devDependencies: - '@0no-co/graphqlsp': - specifier: ^1.12.12 - version: 1.12.13(graphql@16.9.0)(typescript@5.5.4) '@eslint/js': specifier: ^9.9.0 version: 9.9.0