From 903cc4cc49f2f590ea74aa03ab3f0aab904a2228 Mon Sep 17 00:00:00 2001 From: mariz Date: Fri, 21 Jun 2024 23:00:27 +0800 Subject: [PATCH 01/71] chore: add in governance --- package.json | 6 +- public/assets/manifest.json | 8170 ++++++++++++++++++ src/App.tsx | 6 + src/components/FilterMenu/FilterMenu.tsx | 51 + src/components/MenuBar/MenuBar.tsx | 9 +- src/components/ProposalList/ProposalList.tsx | 240 + src/dojo/contractComponents.ts | 151 +- src/dojo/createClientComponents.ts | 5 +- src/dojo/createSystemCalls.ts | 43 +- src/dojo/generated.ts | 64 +- src/dojo/setupPixelaw.ts | 5 +- src/global/constants.ts | 65 + src/global/types.ts | 22 + src/pages/Governance.tsx | 32 + src/pages/NewProposal.tsx | 202 + src/pages/NewProposal_full.tsx | 258 + src/pages/ProposalDetails.tsx | 161 + tsconfig.json | 2 +- yarn.lock | 443 +- 19 files changed, 9887 insertions(+), 48 deletions(-) create mode 100644 public/assets/manifest.json create mode 100644 src/components/FilterMenu/FilterMenu.tsx create mode 100644 src/components/ProposalList/ProposalList.tsx create mode 100644 src/pages/Governance.tsx create mode 100644 src/pages/NewProposal.tsx create mode 100644 src/pages/NewProposal_full.tsx create mode 100644 src/pages/ProposalDetails.tsx diff --git a/package.json b/package.json index f61916b..f5ae60f 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", "test": "vitest", - "coverage": "vitest run --coverage" + "coverage": "vitest run --coverage", + "create-components": "npx @dojoengine/core ./public/assets/manifest.json src/dojo/contractComponents.ts http://localhost:5050 0x60916a73fe631fcba3b2a930e21c6f7bb2533ea398c7bfa75c72f71a8709fc2" }, "dependencies": { "@dojoengine/core": "^0.7.1", @@ -33,8 +34,11 @@ "pngjs3": "^6.1.1", "postcss": "^8.4.38", "react": "^18.2.0", + "react-color": "^2.19.3", "react-dom": "^18.2.0", + "react-icons": "^5.2.1", "react-router-dom": "^6.23.1", + "react-select": "^5.8.0", "starknet": "^6.9.0", "tailwindcss": "^3.4.4", "tailwindcss-animate": "^1.0.7", diff --git a/public/assets/manifest.json b/public/assets/manifest.json new file mode 100644 index 0000000..543b4dd --- /dev/null +++ b/public/assets/manifest.json @@ -0,0 +1,8170 @@ +{ + "world": { + "kind": "WorldContract", + "class_hash": "0x301ba8a1a13cec9291b049dea531f73a600e0812908cefa26d17214da411e9c", + "original_class_hash": "0x301ba8a1a13cec9291b049dea531f73a600e0812908cefa26d17214da411e9c", + "abi": [ + { + "type": "impl", + "name": "World", + "interface_name": "dojo::world::IWorld" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "dojo::resource_metadata::ResourceMetadata", + "members": [ + { + "name": "resource_id", + "type": "core::felt252" + }, + { + "name": "metadata_uri", + "type": "core::array::Span::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorld", + "items": [ + { + "type": "function", + "name": "metadata", + "inputs": [ + { + "name": "resource_id", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "dojo::resource_metadata::ResourceMetadata" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_metadata", + "inputs": [ + { + "name": "metadata", + "type": "dojo::resource_metadata::ResourceMetadata" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "model", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "(core::starknet::class_hash::ClassHash, core::starknet::contract_address::ContractAddress)" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "register_model", + "inputs": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "deploy_contract", + "inputs": [ + { + "name": "salt", + "type": "core::felt252" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_contract", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::starknet::class_hash::ClassHash" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "uuid", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "emit", + "inputs": [ + { + "name": "keys", + "type": "core::array::Array::" + }, + { + "name": "values", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "entity", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "core::array::Span::" + } + ], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_entity", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::" + }, + { + "name": "values", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "base", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::class_hash::ClassHash" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "delete_entity", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_owner", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "resource", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_owner", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "resource", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_owner", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "resource", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_writer", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_writer", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_writer", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableWorld", + "interface_name": "dojo::world::IUpgradeableWorld" + }, + { + "type": "interface", + "name": "dojo::world::IUpgradeableWorld", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableState", + "interface_name": "dojo::interfaces::IUpgradeableState" + }, + { + "type": "struct", + "name": "dojo::interfaces::StorageUpdate", + "members": [ + { + "name": "key", + "type": "core::felt252" + }, + { + "name": "value", + "type": "core::felt252" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "dojo::interfaces::ProgramOutput", + "members": [ + { + "name": "prev_state_root", + "type": "core::felt252" + }, + { + "name": "new_state_root", + "type": "core::felt252" + }, + { + "name": "block_number", + "type": "core::felt252" + }, + { + "name": "block_hash", + "type": "core::felt252" + }, + { + "name": "config_hash", + "type": "core::felt252" + }, + { + "name": "world_da_hash", + "type": "core::felt252" + }, + { + "name": "message_to_starknet_segment", + "type": "core::array::Span::" + }, + { + "name": "message_to_appchain_segment", + "type": "core::array::Span::" + } + ] + }, + { + "type": "interface", + "name": "dojo::interfaces::IUpgradeableState", + "items": [ + { + "type": "function", + "name": "upgrade_state", + "inputs": [ + { + "name": "new_state", + "type": "core::array::Span::" + }, + { + "name": "program_output", + "type": "dojo::interfaces::ProgramOutput" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ConfigImpl", + "interface_name": "dojo::config::interface::IConfig" + }, + { + "type": "interface", + "name": "dojo::config::interface::IConfig", + "items": [ + { + "type": "function", + "name": "set_program_hash", + "inputs": [ + { + "name": "program_hash", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "get_program_hash", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_facts_registry", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "get_facts_registry", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [ + { + "name": "contract_base", + "type": "core::starknet::class_hash::ClassHash" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::WorldSpawned", + "kind": "struct", + "members": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "creator", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::ContractDeployed", + "kind": "struct", + "members": [ + { + "name": "salt", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::ContractUpgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::WorldUpgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::MetadataUpdate", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "uri", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::ModelRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "prev_class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "prev_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::StoreSetRecord", + "kind": "struct", + "members": [ + { + "name": "table", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "keys", + "type": "core::array::Span::", + "kind": "data" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::StoreDelRecord", + "kind": "struct", + "members": [ + { + "name": "table", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "keys", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::WriterUpdated", + "kind": "struct", + "members": [ + { + "name": "model", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "value", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::OwnerUpdated", + "kind": "struct", + "members": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "resource", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "value", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::ProgramHashUpdate", + "kind": "struct", + "members": [ + { + "name": "program_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::FactsRegistryUpdate", + "kind": "struct", + "members": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::Event", + "kind": "enum", + "variants": [ + { + "name": "ProgramHashUpdate", + "type": "dojo::config::component::Config::ProgramHashUpdate", + "kind": "nested" + }, + { + "name": "FactsRegistryUpdate", + "type": "dojo::config::component::Config::FactsRegistryUpdate", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::StateUpdated", + "kind": "struct", + "members": [ + { + "name": "da_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::Event", + "kind": "enum", + "variants": [ + { + "name": "WorldSpawned", + "type": "dojo::world::world::WorldSpawned", + "kind": "nested" + }, + { + "name": "ContractDeployed", + "type": "dojo::world::world::ContractDeployed", + "kind": "nested" + }, + { + "name": "ContractUpgraded", + "type": "dojo::world::world::ContractUpgraded", + "kind": "nested" + }, + { + "name": "WorldUpgraded", + "type": "dojo::world::world::WorldUpgraded", + "kind": "nested" + }, + { + "name": "MetadataUpdate", + "type": "dojo::world::world::MetadataUpdate", + "kind": "nested" + }, + { + "name": "ModelRegistered", + "type": "dojo::world::world::ModelRegistered", + "kind": "nested" + }, + { + "name": "StoreSetRecord", + "type": "dojo::world::world::StoreSetRecord", + "kind": "nested" + }, + { + "name": "StoreDelRecord", + "type": "dojo::world::world::StoreDelRecord", + "kind": "nested" + }, + { + "name": "WriterUpdated", + "type": "dojo::world::world::WriterUpdated", + "kind": "nested" + }, + { + "name": "OwnerUpdated", + "type": "dojo::world::world::OwnerUpdated", + "kind": "nested" + }, + { + "name": "ConfigEvent", + "type": "dojo::config::component::Config::Event", + "kind": "nested" + }, + { + "name": "StateUpdated", + "type": "dojo::world::world::StateUpdated", + "kind": "nested" + } + ] + } + ], + "address": "0x60916a73fe631fcba3b2a930e21c6f7bb2533ea398c7bfa75c72f71a8709fc2", + "transaction_hash": null, + "block_number": null, + "seed": "p_war", + "metadata": { + "profile_name": "dev", + "rpc_url": "http://127.0.0.1:5050/" + }, + "name": "dojo::world::world" + }, + "base": { + "kind": "Class", + "class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", + "original_class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", + "abi": null, + "name": "dojo::base::base" + }, + "contracts": [ + { + "kind": "DojoContract", + "address": "0x2dc8bfc2e33f2e6966cbd9c2e0856d63250549c2a8258884cacb7ba35c427de", + "class_hash": "0x9f6ec4da8588539e62052d64cc6330d644f2c8f53c99ebe000626ac00994da", + "original_class_hash": "0x9f6ec4da8588539e62052d64cc6330d644f2c8f53c99ebe000626ac00994da", + "base_class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", + "abi": [ + { + "type": "impl", + "name": "DojoResourceProviderImpl", + "interface_name": "dojo::world::IDojoResourceProvider" + }, + { + "type": "interface", + "name": "dojo::world::IDojoResourceProvider", + "items": [ + { + "type": "function", + "name": "dojo_resource", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::world::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ActionsInteroperability", + "interface_name": "pixelaw::core::traits::IInteroperability" + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::integer::u32" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::felt252" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::integer::u64" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::models::pixel::PixelUpdate", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + }, + { + "name": "color", + "type": "core::option::Option::" + }, + { + "name": "owner", + "type": "core::option::Option::" + }, + { + "name": "app", + "type": "core::option::Option::" + }, + { + "name": "text", + "type": "core::option::Option::" + }, + { + "name": "timestamp", + "type": "core::option::Option::" + }, + { + "name": "action", + "type": "core::option::Option::" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::models::registry::App", + "members": [ + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "manifest", + "type": "core::felt252" + }, + { + "name": "icon", + "type": "core::felt252" + }, + { + "name": "action", + "type": "core::felt252" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::traits::IInteroperability", + "items": [ + { + "type": "function", + "name": "on_pre_update", + "inputs": [ + { + "name": "pixel_update", + "type": "pixelaw::core::models::pixel::PixelUpdate" + }, + { + "name": "app_caller", + "type": "pixelaw::core::models::registry::App" + }, + { + "name": "player_caller", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "on_post_update", + "inputs": [ + { + "name": "pixel_update", + "type": "pixelaw::core::models::pixel::PixelUpdate" + }, + { + "name": "app_caller", + "type": "pixelaw::core::models::registry::App" + }, + { + "name": "player_caller", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "AllowedAppImpl", + "interface_name": "p_war::systems::apps::IAllowedApp" + }, + { + "type": "struct", + "name": "pixelaw::core::utils::Position", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::utils::DefaultParameters", + "members": [ + { + "name": "for_player", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "for_system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "position", + "type": "pixelaw::core::utils::Position" + }, + { + "name": "color", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "p_war::systems::apps::IAllowedApp", + "items": [ + { + "type": "function", + "name": "set_pixel", + "inputs": [ + { + "name": "default_params", + "type": "pixelaw::core::utils::DefaultParameters" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ActionsImpl", + "interface_name": "p_war::systems::actions::IActions" + }, + { + "type": "struct", + "name": "p_war::models::board::Position", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "p_war::systems::actions::IActions", + "items": [ + { + "type": "function", + "name": "init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "interact", + "inputs": [ + { + "name": "default_params", + "type": "pixelaw::core::utils::DefaultParameters" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "create_game", + "inputs": [ + { + "name": "origin", + "type": "p_war::models::board::Position" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_game_id", + "inputs": [ + { + "name": "position", + "type": "p_war::models::board::Position" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "place_pixel", + "inputs": [ + { + "name": "app", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "default_params", + "type": "pixelaw::core::utils::DefaultParameters" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "update_pixel", + "inputs": [ + { + "name": "pixel_update", + "type": "pixelaw::core::models::pixel::PixelUpdate" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "end_game", + "inputs": [ + { + "name": "game_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradableImpl", + "interface_name": "dojo::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "p_war::systems::actions::p_war_actions::StartedGame", + "kind": "struct", + "members": [ + { + "name": "id", + "type": "core::integer::u32", + "kind": "data" + }, + { + "name": "timestamp", + "type": "core::integer::u128", + "kind": "data" + }, + { + "name": "creator", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "p_war::systems::actions::p_war_actions::EndedGame", + "kind": "struct", + "members": [ + { + "name": "id", + "type": "core::integer::u32", + "kind": "data" + }, + { + "name": "timestamp", + "type": "core::integer::u128", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "p_war::systems::actions::p_war_actions::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::components::upgradeable::upgradeable::Event", + "kind": "nested" + }, + { + "name": "StartedGame", + "type": "p_war::systems::actions::p_war_actions::StartedGame", + "kind": "nested" + }, + { + "name": "EndedGame", + "type": "p_war::systems::actions::p_war_actions::EndedGame", + "kind": "nested" + } + ] + } + ], + "reads": [], + "writes": [], + "computed": [], + "name": "p_war::systems::actions::p_war_actions" + }, + { + "kind": "DojoContract", + "address": "0x481aadb9eab76d625be9d0ab0af0155c9f162fd3af1113abd0d0308ddb9346e", + "class_hash": "0x1cd1d059a4c31c6654b606c24f59feeedd55caf40cb4289aa015d9885543735", + "original_class_hash": "0x1cd1d059a4c31c6654b606c24f59feeedd55caf40cb4289aa015d9885543735", + "base_class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", + "abi": [ + { + "type": "impl", + "name": "DojoResourceProviderImpl", + "interface_name": "dojo::world::IDojoResourceProvider" + }, + { + "type": "interface", + "name": "dojo::world::IDojoResourceProvider", + "items": [ + { + "type": "function", + "name": "dojo_resource", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::world::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ProposeImpl", + "interface_name": "p_war::systems::propose::IPropose" + }, + { + "type": "enum", + "name": "p_war::models::proposal::ProposalType", + "variants": [ + { + "name": "Unknown", + "type": "()" + }, + { + "name": "ToggleAllowedApp", + "type": "()" + }, + { + "name": "AddNewColor", + "type": "()" + }, + { + "name": "ChangeGameDuration", + "type": "()" + }, + { + "name": "ChangePixelRecovery", + "type": "()" + }, + { + "name": "ExpandArea", + "type": "()" + }, + { + "name": "BanPlayerAddress", + "type": "()" + }, + { + "name": "ChangeMaxPXConfig", + "type": "()" + }, + { + "name": "ChangeWinnerConfig", + "type": "()" + }, + { + "name": "ChangePaintCost", + "type": "()" + }, + { + "name": "MakeADisasterByCoordinates", + "type": "()" + }, + { + "name": "MakeADisasterByColor", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "p_war::models::proposal::Args", + "members": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "arg1", + "type": "core::integer::u64" + }, + { + "name": "arg2", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "p_war::systems::propose::IPropose", + "items": [ + { + "type": "function", + "name": "create_proposal", + "inputs": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "proposal_type", + "type": "p_war::models::proposal::ProposalType" + }, + { + "name": "args", + "type": "p_war::models::proposal::Args" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "activate_proposal", + "inputs": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "index", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradableImpl", + "interface_name": "dojo::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "p_war::systems::propose::propose::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::components::upgradeable::upgradeable::Event", + "kind": "nested" + } + ] + } + ], + "reads": [], + "writes": [], + "computed": [], + "name": "p_war::systems::propose::propose" + }, + { + "kind": "DojoContract", + "address": "0x405fdfa192f0a756c50dc081d0a4a10afbc5ed29a774665ab6a34cef4d4a549", + "class_hash": "0x56e288285ce2691525865da6a175e35c1a57d83c1d29bd4b173d0e710b44b3b", + "original_class_hash": "0x56e288285ce2691525865da6a175e35c1a57d83c1d29bd4b173d0e710b44b3b", + "base_class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", + "abi": [ + { + "type": "impl", + "name": "DojoResourceProviderImpl", + "interface_name": "dojo::world::IDojoResourceProvider" + }, + { + "type": "interface", + "name": "dojo::world::IDojoResourceProvider", + "items": [ + { + "type": "function", + "name": "dojo_resource", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::world::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "VotingImpl", + "interface_name": "p_war::systems::voting::IVoting" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "p_war::systems::voting::IVoting", + "items": [ + { + "type": "function", + "name": "vote", + "inputs": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "index", + "type": "core::integer::u32" + }, + { + "name": "use_px", + "type": "core::integer::u32" + }, + { + "name": "is_in_favor", + "type": "core::bool" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradableImpl", + "interface_name": "dojo::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "p_war::systems::voting::voting::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::components::upgradeable::upgradeable::Event", + "kind": "nested" + } + ] + } + ], + "reads": [], + "writes": [], + "computed": [], + "name": "p_war::systems::voting::voting" + }, + { + "kind": "DojoContract", + "address": "0x665c9893b7694bf5329353f4c0beeed767819218f9f26e5576015248399bcf3", + "class_hash": "0x192b0f77607ad6e522be8893e67f71eb8a27b56c5ab820043c283be5134291", + "original_class_hash": "0x192b0f77607ad6e522be8893e67f71eb8a27b56c5ab820043c283be5134291", + "base_class_hash": "0x0", + "abi": [ + { + "type": "impl", + "name": "DojoResourceProviderImpl", + "interface_name": "dojo::world::IDojoResourceProvider" + }, + { + "type": "interface", + "name": "dojo::world::IDojoResourceProvider", + "items": [ + { + "type": "function", + "name": "dojo_resource", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::world::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ActionsImpl", + "interface_name": "pixelaw::core::actions::IActions" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::models::permissions::Permission", + "members": [ + { + "name": "app", + "type": "core::bool" + }, + { + "name": "color", + "type": "core::bool" + }, + { + "name": "owner", + "type": "core::bool" + }, + { + "name": "text", + "type": "core::bool" + }, + { + "name": "timestamp", + "type": "core::bool" + }, + { + "name": "action", + "type": "core::bool" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::models::pixel::Pixel", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + }, + { + "name": "created_at", + "type": "core::integer::u64" + }, + { + "name": "updated_at", + "type": "core::integer::u64" + }, + { + "name": "app", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "color", + "type": "core::integer::u32" + }, + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "text", + "type": "core::felt252" + }, + { + "name": "timestamp", + "type": "core::integer::u64" + }, + { + "name": "action", + "type": "core::felt252" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::integer::u32" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::felt252" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::integer::u64" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::models::pixel::PixelUpdate", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + }, + { + "name": "color", + "type": "core::option::Option::" + }, + { + "name": "owner", + "type": "core::option::Option::" + }, + { + "name": "app", + "type": "core::option::Option::" + }, + { + "name": "text", + "type": "core::option::Option::" + }, + { + "name": "timestamp", + "type": "core::option::Option::" + }, + { + "name": "action", + "type": "core::option::Option::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::models::registry::App", + "members": [ + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "manifest", + "type": "core::felt252" + }, + { + "name": "icon", + "type": "core::felt252" + }, + { + "name": "action", + "type": "core::felt252" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::utils::Position", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::actions::IActions", + "items": [ + { + "type": "function", + "name": "init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "update_permission", + "inputs": [ + { + "name": "for_system", + "type": "core::felt252" + }, + { + "name": "permission", + "type": "pixelaw::core::models::permissions::Permission" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "update_app", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "icon", + "type": "core::felt252" + }, + { + "name": "manifest", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "has_write_access", + "inputs": [ + { + "name": "for_player", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "for_system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "pixel", + "type": "pixelaw::core::models::pixel::Pixel" + }, + { + "name": "pixel_update", + "type": "pixelaw::core::models::pixel::PixelUpdate" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "process_queue", + "inputs": [ + { + "name": "id", + "type": "core::felt252" + }, + { + "name": "timestamp", + "type": "core::integer::u64" + }, + { + "name": "called_system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "calldata", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schedule_queue", + "inputs": [ + { + "name": "timestamp", + "type": "core::integer::u64" + }, + { + "name": "called_system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "calldata", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "update_pixel", + "inputs": [ + { + "name": "for_player", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "for_system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "pixel_update", + "type": "pixelaw::core::models::pixel::PixelUpdate" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "new_app", + "inputs": [ + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "icon", + "type": "core::felt252" + }, + { + "name": "manifest", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "pixelaw::core::models::registry::App" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_system_address", + "inputs": [ + { + "name": "for_system", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_player_address", + "inputs": [ + { + "name": "for_player", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "alert_player", + "inputs": [ + { + "name": "position", + "type": "pixelaw::core::utils::Position" + }, + { + "name": "player", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "message", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_instruction", + "inputs": [ + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "instruction", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradableImpl", + "interface_name": "dojo::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::actions::actions::QueueScheduled", + "kind": "struct", + "members": [ + { + "name": "id", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "timestamp", + "type": "core::integer::u64", + "kind": "data" + }, + { + "name": "called_system", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "selector", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "calldata", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::actions::actions::QueueProcessed", + "kind": "struct", + "members": [ + { + "name": "id", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::actions::actions::AppNameUpdated", + "kind": "struct", + "members": [ + { + "name": "app", + "type": "pixelaw::core::models::registry::App", + "kind": "data" + }, + { + "name": "caller", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::actions::actions::Alert", + "kind": "struct", + "members": [ + { + "name": "position", + "type": "pixelaw::core::utils::Position", + "kind": "data" + }, + { + "name": "caller", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "player", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "message", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "timestamp", + "type": "core::integer::u64", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::actions::actions::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::components::upgradeable::upgradeable::Event", + "kind": "nested" + }, + { + "name": "QueueScheduled", + "type": "pixelaw::core::actions::actions::QueueScheduled", + "kind": "nested" + }, + { + "name": "QueueProcessed", + "type": "pixelaw::core::actions::actions::QueueProcessed", + "kind": "nested" + }, + { + "name": "AppNameUpdated", + "type": "pixelaw::core::actions::actions::AppNameUpdated", + "kind": "nested" + }, + { + "name": "Alert", + "type": "pixelaw::core::actions::actions::Alert", + "kind": "nested" + } + ] + } + ], + "reads": [], + "writes": [], + "computed": [], + "name": "pixelaw::core::actions::actions" + } + ], + "models": [ + { + "kind": "DojoModel", + "members": [ + { + "name": "game_id", + "type": "usize", + "key": true + }, + { + "name": "contract", + "type": "ContractAddress", + "key": true + }, + { + "name": "is_allowed", + "type": "bool", + "key": false + } + ], + "class_hash": "0x1c0f1c7398ad721741911143732944a6ebf22d283820ff6d157c9306d2aa47a", + "original_class_hash": "0x1c0f1c7398ad721741911143732944a6ebf22d283820ff6d157c9306d2aa47a", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "allowed_appImpl", + "interface_name": "p_war::models::allowed_app::Iallowed_app" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "p_war::models::allowed_app::AllowedApp", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "is_allowed", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::allowed_app::Iallowed_app", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::allowed_app::AllowedApp" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::allowed_app::allowed_app::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::allowed_app::allowed_app" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "game_id", + "type": "usize", + "key": true + }, + { + "name": "color", + "type": "u32", + "key": true + }, + { + "name": "is_allowed", + "type": "bool", + "key": false + } + ], + "class_hash": "0x7205d86654030ef9bafb6f3e9f59fd92bb93f7e2d89a0b9a2aaecad65480fd1", + "original_class_hash": "0x7205d86654030ef9bafb6f3e9f59fd92bb93f7e2d89a0b9a2aaecad65480fd1", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "allowed_colorImpl", + "interface_name": "p_war::models::allowed_color::Iallowed_color" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "p_war::models::allowed_color::AllowedColor", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "color", + "type": "core::integer::u32" + }, + { + "name": "is_allowed", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::allowed_color::Iallowed_color", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::allowed_color::AllowedColor" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::allowed_color::allowed_color::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::allowed_color::allowed_color" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "game_id", + "type": "usize", + "key": true + }, + { + "name": "idx", + "type": "u32", + "key": true + }, + { + "name": "color", + "type": "u32", + "key": false + } + ], + "class_hash": "0x5dd036d17a36ae5166b87113c89bb1e37c59ca6edbfdc35f22102ab45cfadbe", + "original_class_hash": "0x5dd036d17a36ae5166b87113c89bb1e37c59ca6edbfdc35f22102ab45cfadbe", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "palette_colorsImpl", + "interface_name": "p_war::models::allowed_color::Ipalette_colors" + }, + { + "type": "struct", + "name": "p_war::models::allowed_color::PaletteColors", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "idx", + "type": "core::integer::u32" + }, + { + "name": "color", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::allowed_color::Ipalette_colors", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::allowed_color::PaletteColors" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::allowed_color::palette_colors::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::allowed_color::palette_colors" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "id", + "type": "usize", + "key": true + }, + { + "name": "origin", + "type": "Position", + "key": false + }, + { + "name": "width", + "type": "u32", + "key": false + }, + { + "name": "height", + "type": "u32", + "key": false + } + ], + "class_hash": "0x2429cdd90cc9d51a903b0c8bbd3e19271f823937aab60f5b444200635b04044", + "original_class_hash": "0x2429cdd90cc9d51a903b0c8bbd3e19271f823937aab60f5b444200635b04044", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "boardImpl", + "interface_name": "p_war::models::board::Iboard" + }, + { + "type": "struct", + "name": "p_war::models::board::Position", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "p_war::models::board::Board", + "members": [ + { + "name": "id", + "type": "core::integer::u32" + }, + { + "name": "origin", + "type": "p_war::models::board::Position" + }, + { + "name": "width", + "type": "core::integer::u32" + }, + { + "name": "height", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::board::Iboard", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::board::Board" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::board::board::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::board::board" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "x", + "type": "u32", + "key": true + }, + { + "name": "y", + "type": "u32", + "key": true + }, + { + "name": "value", + "type": "usize", + "key": false + } + ], + "class_hash": "0x58af23d54aad773a73bd22bbcb7e6d29f0b49643e8931f48df837c931b8a218", + "original_class_hash": "0x58af23d54aad773a73bd22bbcb7e6d29f0b49643e8931f48df837c931b8a218", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "game_idImpl", + "interface_name": "p_war::models::board::Igame_id" + }, + { + "type": "struct", + "name": "p_war::models::board::GameId", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + }, + { + "name": "value", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::board::Igame_id", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::board::GameId" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::board::game_id::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::board::game_id" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "position", + "type": "Position", + "key": true + }, + { + "name": "owner", + "type": "ContractAddress", + "key": false + } + ], + "class_hash": "0x3a759caf62afb2fd084ecc63d77ec528c50774246b658c9ac485915707676af", + "original_class_hash": "0x3a759caf62afb2fd084ecc63d77ec528c50774246b658c9ac485915707676af", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "p_war_pixelImpl", + "interface_name": "p_war::models::board::Ip_war_pixel" + }, + { + "type": "struct", + "name": "p_war::models::board::Position", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "p_war::models::board::PWarPixel", + "members": [ + { + "name": "position", + "type": "p_war::models::board::Position" + }, + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::board::Ip_war_pixel", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::board::PWarPixel" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::board::p_war_pixel::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::board::p_war_pixel" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "id", + "type": "usize", + "key": true + }, + { + "name": "start", + "type": "u64", + "key": false + }, + { + "name": "end", + "type": "u64", + "key": false + }, + { + "name": "proposal_idx", + "type": "usize", + "key": false + }, + { + "name": "next_color_idx_to_change", + "type": "usize", + "key": false + }, + { + "name": "base_cost", + "type": "u32", + "key": false + }, + { + "name": "const_val", + "type": "u32", + "key": false + }, + { + "name": "coeff_own_pixels", + "type": "u32", + "key": false + }, + { + "name": "coeff_commits", + "type": "u32", + "key": false + }, + { + "name": "winner_config", + "type": "u32", + "key": false + }, + { + "name": "winner", + "type": "ContractAddress", + "key": false + } + ], + "class_hash": "0xed13224574e2416c6c1b7064d344cd64cb422f2e3d8cddfb8582307b170d72", + "original_class_hash": "0xed13224574e2416c6c1b7064d344cd64cb422f2e3d8cddfb8582307b170d72", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "gameImpl", + "interface_name": "p_war::models::game::Igame" + }, + { + "type": "struct", + "name": "p_war::models::game::Game", + "members": [ + { + "name": "id", + "type": "core::integer::u32" + }, + { + "name": "start", + "type": "core::integer::u64" + }, + { + "name": "end", + "type": "core::integer::u64" + }, + { + "name": "proposal_idx", + "type": "core::integer::u32" + }, + { + "name": "next_color_idx_to_change", + "type": "core::integer::u32" + }, + { + "name": "base_cost", + "type": "core::integer::u32" + }, + { + "name": "const_val", + "type": "core::integer::u32" + }, + { + "name": "coeff_own_pixels", + "type": "core::integer::u32" + }, + { + "name": "coeff_commits", + "type": "core::integer::u32" + }, + { + "name": "winner_config", + "type": "core::integer::u32" + }, + { + "name": "winner", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::game::Igame", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::game::Game" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::game::game::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::game::game" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "address", + "type": "ContractAddress", + "key": true + }, + { + "name": "max_px", + "type": "u32", + "key": false + }, + { + "name": "num_owns", + "type": "u32", + "key": false + }, + { + "name": "num_commit", + "type": "u32", + "key": false + }, + { + "name": "current_px", + "type": "u32", + "key": false + }, + { + "name": "last_date", + "type": "u64", + "key": false + }, + { + "name": "is_banned", + "type": "bool", + "key": false + } + ], + "class_hash": "0x3d7e89f1f0ad7eee6af444dc7d9e4443d17a73d3f0f6a569bf0d776eca36d47", + "original_class_hash": "0x3d7e89f1f0ad7eee6af444dc7d9e4443d17a73d3f0f6a569bf0d776eca36d47", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "playerImpl", + "interface_name": "p_war::models::player::Iplayer" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "p_war::models::player::Player", + "members": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "max_px", + "type": "core::integer::u32" + }, + { + "name": "num_owns", + "type": "core::integer::u32" + }, + { + "name": "num_commit", + "type": "core::integer::u32" + }, + { + "name": "current_px", + "type": "core::integer::u32" + }, + { + "name": "last_date", + "type": "core::integer::u64" + }, + { + "name": "is_banned", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::player::Iplayer", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::player::Player" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::player::player::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::player::player" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "game_id", + "type": "usize", + "key": true + }, + { + "name": "rate", + "type": "u64", + "key": false + } + ], + "class_hash": "0x6bedf3685252745ac4f376f43c63c0594b2e146c7005d8eea206f2edc9f497f", + "original_class_hash": "0x6bedf3685252745ac4f376f43c63c0594b2e146c7005d8eea206f2edc9f497f", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "pixel_recovery_rateImpl", + "interface_name": "p_war::models::proposal::Ipixel_recovery_rate" + }, + { + "type": "struct", + "name": "p_war::models::proposal::PixelRecoveryRate", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "rate", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::proposal::Ipixel_recovery_rate", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::proposal::PixelRecoveryRate" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::proposal::pixel_recovery_rate::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::proposal::pixel_recovery_rate" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "player", + "type": "ContractAddress", + "key": true + }, + { + "name": "game_id", + "type": "usize", + "key": true + }, + { + "name": "index", + "type": "usize", + "key": true + }, + { + "name": "is_in_favor", + "type": "bool", + "key": false + }, + { + "name": "px", + "type": "u32", + "key": false + } + ], + "class_hash": "0x7cf83b952d7db2c69ad3ead0357513c6b519daffae9a4f9928fb0ad1752dba5", + "original_class_hash": "0x7cf83b952d7db2c69ad3ead0357513c6b519daffae9a4f9928fb0ad1752dba5", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "player_voteImpl", + "interface_name": "p_war::models::proposal::Iplayer_vote" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "p_war::models::proposal::PlayerVote", + "members": [ + { + "name": "player", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "index", + "type": "core::integer::u32" + }, + { + "name": "is_in_favor", + "type": "core::bool" + }, + { + "name": "px", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::proposal::Iplayer_vote", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::proposal::PlayerVote" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::proposal::player_vote::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::proposal::player_vote" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "game_id", + "type": "usize", + "key": true + }, + { + "name": "index", + "type": "usize", + "key": true + }, + { + "name": "author", + "type": "ContractAddress", + "key": false + }, + { + "name": "proposal_type", + "type": "ProposalType", + "key": false + }, + { + "name": "args", + "type": "Args", + "key": false + }, + { + "name": "start", + "type": "u64", + "key": false + }, + { + "name": "end", + "type": "u64", + "key": false + }, + { + "name": "yes_px", + "type": "u32", + "key": false + }, + { + "name": "no_px", + "type": "u32", + "key": false + } + ], + "class_hash": "0x2990f2162e60836c0a1a9eb010e7824dbec48fe9533186a2f12ba2f4f2bc9b9", + "original_class_hash": "0x2990f2162e60836c0a1a9eb010e7824dbec48fe9533186a2f12ba2f4f2bc9b9", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "proposalImpl", + "interface_name": "p_war::models::proposal::Iproposal" + }, + { + "type": "enum", + "name": "p_war::models::proposal::ProposalType", + "variants": [ + { + "name": "Unknown", + "type": "()" + }, + { + "name": "ToggleAllowedApp", + "type": "()" + }, + { + "name": "AddNewColor", + "type": "()" + }, + { + "name": "ChangeGameDuration", + "type": "()" + }, + { + "name": "ChangePixelRecovery", + "type": "()" + }, + { + "name": "ExpandArea", + "type": "()" + }, + { + "name": "BanPlayerAddress", + "type": "()" + }, + { + "name": "ChangeMaxPXConfig", + "type": "()" + }, + { + "name": "ChangeWinnerConfig", + "type": "()" + }, + { + "name": "ChangePaintCost", + "type": "()" + }, + { + "name": "MakeADisasterByCoordinates", + "type": "()" + }, + { + "name": "MakeADisasterByColor", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "p_war::models::proposal::Args", + "members": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "arg1", + "type": "core::integer::u64" + }, + { + "name": "arg2", + "type": "core::integer::u64" + } + ] + }, + { + "type": "struct", + "name": "p_war::models::proposal::Proposal", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "index", + "type": "core::integer::u32" + }, + { + "name": "author", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "proposal_type", + "type": "p_war::models::proposal::ProposalType" + }, + { + "name": "args", + "type": "p_war::models::proposal::Args" + }, + { + "name": "start", + "type": "core::integer::u64" + }, + { + "name": "end", + "type": "core::integer::u64" + }, + { + "name": "yes_px", + "type": "core::integer::u32" + }, + { + "name": "no_px", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "p_war::models::proposal::Iproposal", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "p_war::models::proposal::Proposal" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "p_war::models::proposal::proposal::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "p_war::models::proposal::proposal" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "owner", + "type": "ContractAddress", + "key": true + }, + { + "name": "length", + "type": "u8", + "key": false + }, + { + "name": "first_segment_id", + "type": "u32", + "key": false + }, + { + "name": "last_segment_id", + "type": "u32", + "key": false + }, + { + "name": "direction", + "type": "Direction", + "key": false + }, + { + "name": "color", + "type": "u32", + "key": false + }, + { + "name": "text", + "type": "felt252", + "key": false + }, + { + "name": "is_dying", + "type": "bool", + "key": false + } + ], + "class_hash": "0x6ad2fad00fbb98d63faa81e4a4d3289919296e643edd09244e359b19a9f0304", + "original_class_hash": "0x6ad2fad00fbb98d63faa81e4a4d3289919296e643edd09244e359b19a9f0304", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "snakeImpl", + "interface_name": "pixelaw::apps::snake::app::Isnake" + }, + { + "type": "enum", + "name": "pixelaw::core::utils::Direction", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Left", + "type": "()" + }, + { + "name": "Right", + "type": "()" + }, + { + "name": "Up", + "type": "()" + }, + { + "name": "Down", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::apps::snake::app::Snake", + "members": [ + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "length", + "type": "core::integer::u8" + }, + { + "name": "first_segment_id", + "type": "core::integer::u32" + }, + { + "name": "last_segment_id", + "type": "core::integer::u32" + }, + { + "name": "direction", + "type": "pixelaw::core::utils::Direction" + }, + { + "name": "color", + "type": "core::integer::u32" + }, + { + "name": "text", + "type": "core::felt252" + }, + { + "name": "is_dying", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::apps::snake::app::Isnake", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::apps::snake::app::Snake" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::apps::snake::app::snake::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::apps::snake::app::snake" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "id", + "type": "u32", + "key": true + }, + { + "name": "previous_id", + "type": "u32", + "key": false + }, + { + "name": "next_id", + "type": "u32", + "key": false + }, + { + "name": "x", + "type": "u32", + "key": false + }, + { + "name": "y", + "type": "u32", + "key": false + }, + { + "name": "pixel_original_color", + "type": "u32", + "key": false + }, + { + "name": "pixel_original_text", + "type": "felt252", + "key": false + }, + { + "name": "pixel_original_app", + "type": "ContractAddress", + "key": false + } + ], + "class_hash": "0xa5fff6fee52fd6a9d07e39f7039926783a2d8fc397a87617593c689124e113", + "original_class_hash": "0xa5fff6fee52fd6a9d07e39f7039926783a2d8fc397a87617593c689124e113", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "snake_segmentImpl", + "interface_name": "pixelaw::apps::snake::app::Isnake_segment" + }, + { + "type": "struct", + "name": "pixelaw::apps::snake::app::SnakeSegment", + "members": [ + { + "name": "id", + "type": "core::integer::u32" + }, + { + "name": "previous_id", + "type": "core::integer::u32" + }, + { + "name": "next_id", + "type": "core::integer::u32" + }, + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + }, + { + "name": "pixel_original_color", + "type": "core::integer::u32" + }, + { + "name": "pixel_original_text", + "type": "core::felt252" + }, + { + "name": "pixel_original_app", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::apps::snake::app::Isnake_segment", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::apps::snake::app::SnakeSegment" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::apps::snake::app::snake_segment::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::apps::snake::app::snake_segment" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "allowing_app", + "type": "ContractAddress", + "key": true + }, + { + "name": "allowed_app", + "type": "ContractAddress", + "key": true + }, + { + "name": "permission", + "type": "Permission", + "key": false + } + ], + "class_hash": "0x55935fbd47fb70609ca521bbafaa69a03919f77c45bb8ad0e221af4658a9a6b", + "original_class_hash": "0x55935fbd47fb70609ca521bbafaa69a03919f77c45bb8ad0e221af4658a9a6b", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "permissionsImpl", + "interface_name": "pixelaw::core::models::permissions::Ipermissions" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::models::permissions::Permission", + "members": [ + { + "name": "app", + "type": "core::bool" + }, + { + "name": "color", + "type": "core::bool" + }, + { + "name": "owner", + "type": "core::bool" + }, + { + "name": "text", + "type": "core::bool" + }, + { + "name": "timestamp", + "type": "core::bool" + }, + { + "name": "action", + "type": "core::bool" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::models::permissions::Permissions", + "members": [ + { + "name": "allowing_app", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "allowed_app", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "permission", + "type": "pixelaw::core::models::permissions::Permission" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::models::permissions::Ipermissions", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::core::models::permissions::Permissions" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::models::permissions::permissions::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::core::models::permissions::permissions" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "x", + "type": "u32", + "key": true + }, + { + "name": "y", + "type": "u32", + "key": true + }, + { + "name": "created_at", + "type": "u64", + "key": false + }, + { + "name": "updated_at", + "type": "u64", + "key": false + }, + { + "name": "app", + "type": "ContractAddress", + "key": false + }, + { + "name": "color", + "type": "u32", + "key": false + }, + { + "name": "owner", + "type": "ContractAddress", + "key": false + }, + { + "name": "text", + "type": "felt252", + "key": false + }, + { + "name": "timestamp", + "type": "u64", + "key": false + }, + { + "name": "action", + "type": "felt252", + "key": false + } + ], + "class_hash": "0x19bf5119a6b23d3f098888ea27e5639d5b89ccf046d22e00c767cd4d3f78d9d", + "original_class_hash": "0x19bf5119a6b23d3f098888ea27e5639d5b89ccf046d22e00c767cd4d3f78d9d", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "pixelImpl", + "interface_name": "pixelaw::core::models::pixel::Ipixel" + }, + { + "type": "struct", + "name": "pixelaw::core::models::pixel::Pixel", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + }, + { + "name": "created_at", + "type": "core::integer::u64" + }, + { + "name": "updated_at", + "type": "core::integer::u64" + }, + { + "name": "app", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "color", + "type": "core::integer::u32" + }, + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "text", + "type": "core::felt252" + }, + { + "name": "timestamp", + "type": "core::integer::u64" + }, + { + "name": "action", + "type": "core::felt252" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::models::pixel::Ipixel", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::core::models::pixel::Pixel" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::models::pixel::pixel::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::core::models::pixel::pixel" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "id", + "type": "felt252", + "key": true + }, + { + "name": "valid", + "type": "bool", + "key": false + } + ], + "class_hash": "0x4a448f9e37c98cc9af18ed6b5f0e144af59dc7ebb28fd553ee27e06d1e11d1c", + "original_class_hash": "0x4a448f9e37c98cc9af18ed6b5f0e144af59dc7ebb28fd553ee27e06d1e11d1c", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "queue_itemImpl", + "interface_name": "pixelaw::core::models::queue::Iqueue_item" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "pixelaw::core::models::queue::QueueItem", + "members": [ + { + "name": "id", + "type": "core::felt252" + }, + { + "name": "valid", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::models::queue::Iqueue_item", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::core::models::queue::QueueItem" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::models::queue::queue_item::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::core::models::queue::queue_item" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "system", + "type": "ContractAddress", + "key": true + }, + { + "name": "name", + "type": "felt252", + "key": false + }, + { + "name": "manifest", + "type": "felt252", + "key": false + }, + { + "name": "icon", + "type": "felt252", + "key": false + }, + { + "name": "action", + "type": "felt252", + "key": false + } + ], + "class_hash": "0x74c630be9062098affb2ac8b27955ebaa8c863319800213a34ccc02ca97fc9", + "original_class_hash": "0x74c630be9062098affb2ac8b27955ebaa8c863319800213a34ccc02ca97fc9", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "appImpl", + "interface_name": "pixelaw::core::models::registry::Iapp" + }, + { + "type": "struct", + "name": "pixelaw::core::models::registry::App", + "members": [ + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "manifest", + "type": "core::felt252" + }, + { + "name": "icon", + "type": "core::felt252" + }, + { + "name": "action", + "type": "core::felt252" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::models::registry::Iapp", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::core::models::registry::App" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::models::registry::app::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::core::models::registry::app" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "name", + "type": "felt252", + "key": true + }, + { + "name": "system", + "type": "ContractAddress", + "key": false + } + ], + "class_hash": "0x2fbf92676699542bb22322de6b8c9930c28a017b89f444ebdc7fb293496295d", + "original_class_hash": "0x2fbf92676699542bb22322de6b8c9930c28a017b89f444ebdc7fb293496295d", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "app_nameImpl", + "interface_name": "pixelaw::core::models::registry::Iapp_name" + }, + { + "type": "struct", + "name": "pixelaw::core::models::registry::AppName", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::models::registry::Iapp_name", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::core::models::registry::AppName" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::models::registry::app_name::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::core::models::registry::app_name" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "system", + "type": "ContractAddress", + "key": true + }, + { + "name": "player", + "type": "ContractAddress", + "key": true + }, + { + "name": "action", + "type": "felt252", + "key": false + } + ], + "class_hash": "0x21694db3f07ef20ac056336fd80757d8883bae2a2329ca9ade1d681fe9ae883", + "original_class_hash": "0x21694db3f07ef20ac056336fd80757d8883bae2a2329ca9ade1d681fe9ae883", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "app_userImpl", + "interface_name": "pixelaw::core::models::registry::Iapp_user" + }, + { + "type": "struct", + "name": "pixelaw::core::models::registry::AppUser", + "members": [ + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "player", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "action", + "type": "core::felt252" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::models::registry::Iapp_user", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::core::models::registry::AppUser" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::models::registry::app_user::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::core::models::registry::app_user" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "key", + "type": "felt252", + "key": true + }, + { + "name": "value", + "type": "ContractAddress", + "key": false + } + ], + "class_hash": "0x29faa42389b762ddb248311c81d68095c0fec2cfd7810b31e62af19675b0afb", + "original_class_hash": "0x29faa42389b762ddb248311c81d68095c0fec2cfd7810b31e62af19675b0afb", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "core_actions_addressImpl", + "interface_name": "pixelaw::core::models::registry::Icore_actions_address" + }, + { + "type": "struct", + "name": "pixelaw::core::models::registry::CoreActionsAddress", + "members": [ + { + "name": "key", + "type": "core::felt252" + }, + { + "name": "value", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::models::registry::Icore_actions_address", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::core::models::registry::CoreActionsAddress" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::models::registry::core_actions_address::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::core::models::registry::core_actions_address" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "system", + "type": "ContractAddress", + "key": true + }, + { + "name": "selector", + "type": "felt252", + "key": true + }, + { + "name": "instruction", + "type": "felt252", + "key": false + } + ], + "class_hash": "0x40bff7008f593e3fa201c4b22e5cf172217620a5605bdab71e09d9a9a9d781a", + "original_class_hash": "0x40bff7008f593e3fa201c4b22e5cf172217620a5605bdab71e09d9a9a9d781a", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "instructionImpl", + "interface_name": "pixelaw::core::models::registry::Iinstruction" + }, + { + "type": "struct", + "name": "pixelaw::core::models::registry::Instruction", + "members": [ + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "instruction", + "type": "core::felt252" + } + ] + }, + { + "type": "interface", + "name": "pixelaw::core::models::registry::Iinstruction", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "pixelaw::core::models::registry::Instruction" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pixelaw::core::models::registry::instruction::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "pixelaw::core::models::registry::instruction" + } + ] +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index a846d88..e08229c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -16,6 +16,9 @@ import {usePixelawProvider} from "@/providers/PixelawProvider.tsx"; import {useViewStateStore, useSyncedViewStateStore} from "@/stores/ViewStateStore.ts"; import {useDojoInteractHandler} from "@/hooks/useDojoInteractHandler.ts"; import {useSettingsStore} from "@/stores/SettingsStore.ts"; +import Governance from "@/pages/Governance.js"; +import NewProposal from "@/pages/NewProposal.js"; +import ProposalDetails from "@/pages/ProposalDetails.js"; function App() { // @@ -150,6 +153,9 @@ function App() { }/> + } /> + } /> + } /> diff --git a/src/components/FilterMenu/FilterMenu.tsx b/src/components/FilterMenu/FilterMenu.tsx new file mode 100644 index 0000000..5a896e2 --- /dev/null +++ b/src/components/FilterMenu/FilterMenu.tsx @@ -0,0 +1,51 @@ +import React from 'react'; + +interface FilterMenuProps { + statusFilter: 'All' | 'Active' | 'Closed'; + setStatusFilter: (status: 'All' | 'Active' | 'Closed') => void; +} + +const FilterMenu: React.FC = ({ statusFilter, setStatusFilter }) => { + return ( +
+
Proposal Status
+
+ + + +
+
+ ); +}; + +export default FilterMenu; diff --git a/src/components/MenuBar/MenuBar.tsx b/src/components/MenuBar/MenuBar.tsx index 83cd11e..32aed10 100644 --- a/src/components/MenuBar/MenuBar.tsx +++ b/src/components/MenuBar/MenuBar.tsx @@ -8,6 +8,7 @@ const MenuBar: React.FC = () => { // Determine if the settings page is shown based on the current path const showSettings = location.pathname === '/settings'; + const showGovernance = location.pathname !== '/governance'; const toggleSettings = () => { if (showSettings) { @@ -16,13 +17,17 @@ const MenuBar: React.FC = () => { navigate('/settings'); // Navigate to settings if not currently showing } }; + return (
-
+
navigate('/')}> logo
- +
+ {showGovernance && } + +
); }; diff --git a/src/components/ProposalList/ProposalList.tsx b/src/components/ProposalList/ProposalList.tsx new file mode 100644 index 0000000..6b8b391 --- /dev/null +++ b/src/components/ProposalList/ProposalList.tsx @@ -0,0 +1,240 @@ +import React, { useState, useRef, useEffect } from 'react'; +import { FaSearch, FaFilter } from 'react-icons/fa'; +import FilterMenu from '../FilterMenu/FilterMenu'; +import { Link } from 'react-router-dom'; +import {usePixelawProvider} from "@/providers/PixelawProvider"; +import {useEntityQuery} from "@dojoengine/react"; +import {getComponentValue, Has} from "@dojoengine/recs"; +import {proposals} from "@/global/constants"; + +interface ProposalListProps { + headerHeight: number; +} + +const ProposalList: React.FC = ({ headerHeight }) => { + const [filterOpen, setFilterOpen] = useState(false); + const [statusFilter, setStatusFilter] = useState<'All' | 'Active' | 'Closed'>('All'); + const [searchTerm, setSearchTerm] = useState(''); + const filterRef = useRef(null); + const modalRef = useRef(null); + + const [selectedProposal, setSelectedProposal] = useState(null); + const [voteType, setVoteType] = useState<'for' | 'against'>('for'); + const [votePoints, setVotePoints] = useState(0); + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (filterRef.current && !filterRef.current.contains(event.target as Node)) { + setFilterOpen(false); + } + }; + const handleClickOutsideModal = (event: MouseEvent) => { // Add this function + if (modalRef.current && !modalRef.current.contains(event.target as Node)) { + setSelectedProposal(null); + } + }; + + document.addEventListener('mousedown', handleClickOutside); + document.addEventListener('mousedown', handleClickOutsideModal); // Add this line + return () => { + document.removeEventListener('mousedown', handleClickOutside); + document.removeEventListener('mousedown', handleClickOutsideModal); // Add this line + }; + }, []); + + const { gameData } = usePixelawProvider(); + const proposalArray = useEntityQuery([Has(gameData!.setup.contractComponents.Proposal)]) + .map(entity => getComponentValue(gameData!.setup.contractComponents.Proposal, entity)); + console.log({ proposalArray }) + + const filteredProposals = proposals.filter(proposal => { + if (statusFilter !== 'All') { + if (statusFilter === 'Active' && !proposal.status.startsWith('end in')) { + return false; + } + if (statusFilter === 'Closed' && proposal.status !== 'closed') { + return false; + } + } + if (searchTerm) { + return proposal.title.toLowerCase().includes(searchTerm.toLowerCase()) || + proposal.proposer.toLowerCase().includes(searchTerm.toLowerCase()); + } + return true; + }); + + const getStatusColor = (status: string) => { + if (status.startsWith('end in')) { + return 'bg-green-500'; + } else if (status === 'closed') { + return 'bg-purple-500'; + } else { + return 'bg-gray-500'; + } + }; + + const handleVote = (proposal: any) => { + setSelectedProposal(proposal); + setVotePoints(0); + }; + + const extractHexColor = (title: string) => { + const match = title.match(/#[0-9A-Fa-f]{6}/); + return match ? match[0].toUpperCase() : null; + }; + + const closeModal = () => { + setSelectedProposal(null); + }; + + const toggleVoteType = () => { + setVoteType(voteType === 'for' ? 'against' : 'for'); + }; + + const handleVotePointsChange = (e: React.ChangeEvent) => { + const value = e.target.value; + setVotePoints(value === '' ? '' : Number(value)); + }; + + return ( +
+
+
+ setSearchTerm(e.target.value)} + className='w-full p-2 pl-10 bg-gray-800 rounded-md text-white' + /> + + + +
+
+ + {filterOpen && ( +
+ +
+ )} +
+
+ + Create A New Proposal + +
+
+
+
+ {filteredProposals.map((proposal, index) => { + const hexColor = extractHexColor(proposal.title); + return ( +
+
+
+
+ {proposal.title} + {hexColor && ( +
+ )} +
+
+ {proposal.status.startsWith('end in') ? proposal.status : 'closed'} +
+
+
+ proposed by {proposal.proposer} +
+
+
+
+
+
+
+ For {proposal.forPoints} points +
+
+ Against {proposal.againstPoints} points +
+
+
+ +
+ ); + })} +
+
+ {selectedProposal && ( +
+
+

+ {selectedProposal.title} + {extractHexColor(selectedProposal.title) && ( +
+ )} +

+
+ + +
+
+ + +
+
+ + +
+
+
+ )} +
+ ); +}; + +export default ProposalList; diff --git a/src/dojo/contractComponents.ts b/src/dojo/contractComponents.ts index 7a6c2df..c1ef2a7 100644 --- a/src/dojo/contractComponents.ts +++ b/src/dojo/contractComponents.ts @@ -1,67 +1,162 @@ /* Autogenerated file. Do not edit manually. */ -// @ts-ignore -import {defineComponent, Type as RecsType, World} from "@dojoengine/recs"; +import { defineComponent, Type as RecsType, World } from "@dojoengine/recs"; -export type ContractComponents = Awaited< - ReturnType ->; +export type ContractComponents = Awaited>; export function defineContractComponents(world: World) { return { - App: (() => { + AllowedApp: (() => { return defineComponent( world, + { game_id: RecsType.Number, contract: RecsType.BigInt, is_allowed: RecsType.Boolean }, { - system: RecsType.BigInt, - name: RecsType.BigInt, - manifest: RecsType.BigInt, - icon: RecsType.BigInt, - action: RecsType.BigInt - }, + metadata: { + name: "AllowedApp", + types: ["usize","contractaddress","bool"], + customTypes: [], + }, + } + ); + })(), + AllowedColor: (() => { + return defineComponent( + world, + { game_id: RecsType.Number, color: RecsType.Number, is_allowed: RecsType.Boolean }, { metadata: { - name: "App", - types: ["contractaddress", "felt252", "felt252", "felt252", "felt252"], + name: "AllowedColor", + types: ["usize","u32","bool"], + customTypes: [], + }, + } + ); + })(), + PaletteColors: (() => { + return defineComponent( + world, + { game_id: RecsType.Number, idx: RecsType.Number, color: RecsType.Number }, + { + metadata: { + name: "PaletteColors", + types: ["usize","u32","u32"], + customTypes: [], + }, + } + ); + })(), + Board: (() => { + return defineComponent( + world, + { id: RecsType.Number, origin: { x: RecsType.Number, y: RecsType.Number }, width: RecsType.Number, height: RecsType.Number }, + { + metadata: { + name: "Board", + types: ["usize","u32","u32","u32","u32"], + customTypes: ["Position"], + }, + } + ); + })(), + GameId: (() => { + return defineComponent( + world, + { x: RecsType.Number, y: RecsType.Number, value: RecsType.Number }, + { + metadata: { + name: "GameId", + types: ["u32","u32","usize"], customTypes: [], }, } ); })(), - AppName: (() => { + PWarPixel: (() => { return defineComponent( world, - {name: RecsType.BigInt, system: RecsType.BigInt}, + { position: { x: RecsType.Number, y: RecsType.Number }, owner: RecsType.BigInt }, { metadata: { - name: "AppName", - types: ["felt252", "contractaddress"], + name: "PWarPixel", + types: ["u32","u32","contractaddress"], + customTypes: ["Position"], + }, + } + ); + })(), + Game: (() => { + return defineComponent( + world, + { id: RecsType.Number, start: RecsType.BigInt, end: RecsType.BigInt, proposal_idx: RecsType.Number, next_color_idx_to_change: RecsType.Number, base_cost: RecsType.Number, const_val: RecsType.Number, coeff_own_pixels: RecsType.Number, coeff_commits: RecsType.Number, winner_config: RecsType.Number, winner: RecsType.BigInt }, + { + metadata: { + name: "Game", + types: ["usize","u64","u64","usize","usize","u32","u32","u32","u32","u32","contractaddress"], + customTypes: [], + }, + } + ); + })(), + Player: (() => { + return defineComponent( + world, + { address: RecsType.BigInt, max_px: RecsType.Number, num_owns: RecsType.Number, num_commit: RecsType.Number, current_px: RecsType.Number, last_date: RecsType.BigInt, is_banned: RecsType.Boolean }, + { + metadata: { + name: "Player", + types: ["contractaddress","u32","u32","u32","u32","u64","bool"], + customTypes: [], + }, + } + ); + })(), + PixelRecoveryRate: (() => { + return defineComponent( + world, + { game_id: RecsType.Number, rate: RecsType.BigInt }, + { + metadata: { + name: "PixelRecoveryRate", + types: ["usize","u64"], customTypes: [], }, } ); })(), - AppUser: (() => { + PlayerVote: (() => { return defineComponent( world, - {system: RecsType.BigInt, player: RecsType.BigInt, action: RecsType.BigInt}, + { player: RecsType.BigInt, game_id: RecsType.Number, index: RecsType.Number, is_in_favor: RecsType.Boolean, px: RecsType.Number }, { metadata: { - name: "AppUser", - types: ["contractaddress", "contractaddress", "felt252"], + name: "PlayerVote", + types: ["contractaddress","usize","usize","bool","u32"], customTypes: [], }, } ); })(), - CoreActionsAddress: (() => { + Proposal: (() => { + return defineComponent( + world, + { game_id: RecsType.Number, index: RecsType.Number, author: RecsType.BigInt, proposal_type: RecsType.Number, args: { address: RecsType.BigInt, arg1: RecsType.BigInt, arg2: RecsType.BigInt }, start: RecsType.BigInt, end: RecsType.BigInt, yes_px: RecsType.Number, no_px: RecsType.Number }, + { + metadata: { + name: "Proposal", + types: ["usize","usize","contractaddress","enum","contractaddress","u64","u64","u64","u64","u32","u32"], + customTypes: ["ProposalType","Args"], + }, + } + ); + })(), + App: (() => { return defineComponent( world, - {key: RecsType.BigInt, value: RecsType.BigInt}, + { system: RecsType.BigInt, name: RecsType.BigInt, manifest: RecsType.BigInt, icon: RecsType.BigInt, action: RecsType.BigInt }, { metadata: { - name: "CoreActionsAddress", - types: ["felt252", "contractaddress"], + name: "App", + types: ["contractaddress","felt252","felt252","felt252","felt252"], customTypes: [], }, } @@ -70,11 +165,11 @@ export function defineContractComponents(world: World) { Instruction: (() => { return defineComponent( world, - {system: RecsType.BigInt, selector: RecsType.BigInt, instruction: RecsType.BigInt}, + { system: RecsType.BigInt, selector: RecsType.BigInt, instruction: RecsType.BigInt }, { metadata: { name: "Instruction", - types: ["contractaddress", "felt252", "felt252"], + types: ["contractaddress","felt252","felt252"], customTypes: [], }, } diff --git a/src/dojo/createClientComponents.ts b/src/dojo/createClientComponents.ts index 8cfa4f1..e5ae595 100644 --- a/src/dojo/createClientComponents.ts +++ b/src/dojo/createClientComponents.ts @@ -1,5 +1,3 @@ -// @ts-ignore -import { overridableComponent } from "@dojoengine/recs"; import { ContractComponents } from "./contractComponents"; export type ClientComponents = ReturnType; @@ -10,7 +8,6 @@ export function createClientComponents({ contractComponents: ContractComponents; }) { return { - ...contractComponents, - Pixel: overridableComponent(contractComponents.Pixel) + ...contractComponents }; } diff --git a/src/dojo/createSystemCalls.ts b/src/dojo/createSystemCalls.ts index f3b65c5..54bae78 100644 --- a/src/dojo/createSystemCalls.ts +++ b/src/dojo/createSystemCalls.ts @@ -1,6 +1,7 @@ import {AccountInterface, num} from 'starknet' import {ZERO_ADDRESS} from '@/global/constants' import {IWorld} from '@/dojo/generated' +import {ProposalArgs, ProposalType} from "@/global/types.js"; const FAILURE_REASON_REGEX = /Failure reason: ".+"/; @@ -65,7 +66,47 @@ export function createSystemCalls( } } + const vote = async (account: AccountInterface, gameId: number, index: number, usePx: number, isInFavor: boolean) => { + try { + const { transaction_hash } = await client.actions.vote({ + account, + gameId, + index, + usePx, + isInFavor + }); + + console.log( + await account.waitForTransaction(transaction_hash, { + retryInterval: 100, + }) + ); + + await new Promise((resolve) => setTimeout(resolve, 1000)); + } catch (e) { + console.error(e); + } + }; + + const createProposal = async (account: AccountInterface, gameId: number, proposalType: ProposalType, args: ProposalArgs) => { + if (proposalType === ProposalType.Unknown) throw new Error('Unknown proposal type supplied') + const { transaction_hash } = await client.actions.createProposal({ + account, + gameId, + proposalType, + args + }); + + await account.waitForTransaction(transaction_hash, { + retryInterval: 100, + }); + + await new Promise((resolve) => setTimeout(resolve, 1000)); + }; + return { - interact + interact, + vote, + createProposal } } diff --git a/src/dojo/generated.ts b/src/dojo/generated.ts index 924f525..e75cc81 100644 --- a/src/dojo/generated.ts +++ b/src/dojo/generated.ts @@ -2,6 +2,8 @@ import { AccountInterface, BigNumberish} from 'starknet' import {DojoProvider} from "@dojoengine/core"; +import {PROPOSAL_CONTRACT_ADDRESS, VOTING_CONTRACT_ADDRESS} from "@/global/constants.js"; +import {ProposalArgs, ProposalType} from "@/global/types.js"; export type IWorld = Awaited>; @@ -14,9 +16,11 @@ export async function setupWorld(provider: DojoProvider) { try { return await provider.execute( account, - contract_name, - call, - calldata + [{ + contractName: contract_name, + entrypoint: call, + calldata + }] ); } catch (error) { console.error("Error executing interact:", error); @@ -24,7 +28,59 @@ export async function setupWorld(provider: DojoProvider) { } }; - return { interact }; + + const vote = async ( + { account, gameId, index, usePx, isInFavor }: { account: AccountInterface, gameId: number, index: number, usePx: number, isInFavor: boolean } + ) => { + try { + return await provider.execute( + account, + { + contractName: VOTING_CONTRACT_ADDRESS, + entrypoint: 'vote', + calldata: [ + gameId, + index, + usePx, + isInFavor + ] + } + ) + } catch (e) { + console.error("Error executing voting:", e); + throw e + } + } + + const createProposal = async ( + { account, gameId, proposalType, args }: { account: AccountInterface, gameId: number, proposalType: ProposalType, args: ProposalArgs } + ) => { + try { + return await provider.execute( + account, + { + contractAddress: PROPOSAL_CONTRACT_ADDRESS, + entrypoint: 'create_proposal', + calldata: [ + gameId, + proposalType, + args.address, + args.arg1, + args.arg2 + ] + }, + { + skipValidate: true + } + ) + } catch (e) { + console.error("Error executing createProposal:", e); + throw e + } + } + + + return { interact, vote, createProposal }; } return { actions: actions(), diff --git a/src/dojo/setupPixelaw.ts b/src/dojo/setupPixelaw.ts index 355c680..005198c 100644 --- a/src/dojo/setupPixelaw.ts +++ b/src/dojo/setupPixelaw.ts @@ -1,7 +1,6 @@ import {getSyncEntities} from "@dojoengine/state"; import {DojoConfig, DojoProvider} from "@dojoengine/core"; import * as torii from "@dojoengine/torii-client"; -import {createClientComponents} from "./createClientComponents"; import {createSystemCalls} from "./createSystemCalls"; import {defineContractComponents} from "./contractComponents"; import {world} from "./world"; @@ -69,10 +68,12 @@ export async function setupPixelaw({ worldAddress: config.manifest.world.address || "", relayUrl: "", }); + const contractComponents = defineContractComponents(world); // const clientComponents = createClientComponents({contractComponents}); - await getSyncEntities(toriiClient, contractComponents as any); + // FIXME: this is throwing failed to get entities: Missing expected data + await getSyncEntities(toriiClient, contractComponents as any, []); // Get apps from the world const entities = getComponentEntities(contractComponents.App); diff --git a/src/global/constants.ts b/src/global/constants.ts index 0e503ad..894d26b 100644 --- a/src/global/constants.ts +++ b/src/global/constants.ts @@ -10,4 +10,69 @@ export const BLOCK_TIME = 1_000; export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000000"; +export const PROPOSAL_CONTRACT_ADDRESS ='0x481aadb9eab76d625be9d0ab0af0155c9f162fd3af1113abd0d0308ddb9346e' +export const VOTING_CONTRACT_ADDRESS ='0x405fdfa192f0a756c50dc081d0a4a10afbc5ed29a774665ab6a34cef4d4a549' +export const GAME_ID = 1 +export const proposals = [ + { + id: 1, + title: "Adding A New Color: #FF00FF", + proposer: "shora", + forPoints: 4329, + againstPoints: 30, + status: "end in 5h30m", + statusColor: "bg-green-500", + comments: "This color is very important to me. I need it to express myself.", + }, + { + id: 2, + title: "Extend the p/war event: 24 hours", + proposer: "shora", + forPoints: 250, + againstPoints: 6030, + status: "end in 18h45m", + statusColor: "bg-green-500", + comments: "I think", + }, + { + id: 3, + title: "Add hunter system(future version)", + proposer: "OwnerofJK", + forPoints: 7000, + againstPoints: 30, + status: "closed", + statusColor: "bg-purple-500", + comments: "", + }, + { + id: 4, + title: "Introduce New Voting Mechanism", + proposer: "crypto123", + forPoints: 1200, + againstPoints: 450, + status: "end in 2d14h", + statusColor: "bg-green-500", + comments: "", + }, + { + id: 5, + title: "Increase Reward Points", + proposer: "blockchain_guru", + forPoints: 8000, + againstPoints: 1500, + status: "end in 3d6h", + statusColor: "bg-green-500", + comments: "", + }, + { + id: 6, + title: "Update Governance Rules", + proposer: "dao_master", + forPoints: 500, + againstPoints: 2500, + status: "closed", + statusColor: "bg-purple-500", + comments: "", + } +] \ No newline at end of file diff --git a/src/global/types.ts b/src/global/types.ts index d7ddb00..af1cce2 100644 --- a/src/global/types.ts +++ b/src/global/types.ts @@ -141,3 +141,25 @@ export type Position = { x: number, y: number } + +export enum ProposalType { + Unknown, + ToggleAllowedApp, + AddNewColor, + ChangeGameDuration, + ChangePixelRecovery, + ExpandArea, + BanPlayerAddress, + ChangeMaxPXConfig, + ChangeWinnerConfig, + ChangePaintCost, + MakeADisasterByCoordinates, + MakeADisasterByColor, +} + +export type ProposalArgs = { + address: string, + arg1: number, + arg2: number +} + diff --git a/src/pages/Governance.tsx b/src/pages/Governance.tsx new file mode 100644 index 0000000..ed57415 --- /dev/null +++ b/src/pages/Governance.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import ProposalList from '../components/ProposalList/ProposalList'; + +const Governance: React.FC = () => { + const headerHeight = 64; // px + + return ( +
+ {/*
+ + p/war + +
+ Governance +
+
+ + +
+
*/} +
+ +
+
+ ); +}; + +export default Governance; diff --git a/src/pages/NewProposal.tsx b/src/pages/NewProposal.tsx new file mode 100644 index 0000000..05511f3 --- /dev/null +++ b/src/pages/NewProposal.tsx @@ -0,0 +1,202 @@ +import React, { useState, useEffect, useRef } from 'react'; +import {Link, useNavigate} from 'react-router-dom'; +import { SketchPicker } from 'react-color'; +import Select from 'react-select'; +import {usePixelawProvider} from "@/providers/PixelawProvider"; +import {ProposalType} from "@/global/types"; +import {GAME_ID, ZERO_ADDRESS} from "@/global/constants"; +import {hexRGBtoNumber} from "@/global/utils.ts"; + +const NewProposal: React.FC = () => { + const [proposalType, setProposalType] = useState('Add Color'); + const [color, setColor] = useState('#FFFFFF'); + const [disasterColor, setDisasterColor] = useState('#FFFFFF'); + const [comments, setComments] = useState(''); + const [showColorPicker, setShowColorPicker] = useState(false); + const colorPickerRef = useRef(null); + const navigate = useNavigate(); + + const handleColorChange = (color: any) => { + setColor(color.hex); + }; + + const handleDisasterColorChange = (selectedOption: any) => { + setDisasterColor(selectedOption.value); + }; + + const handleClickOutside = (event: MouseEvent) => { + if (colorPickerRef.current && !colorPickerRef.current.contains(event.target as Node)) { + setShowColorPicker(false); + } + }; + + useEffect(() => { + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, []); + + const {gameData} = usePixelawProvider(); + + const handleSubmit = () => { + const proposalData = { + proposalType, + color: hexRGBtoNumber(color.replace('#', '')), + disasterColor, + comments, + }; + console.log(proposalData); + const type = proposalType === + 'Add Color' ? ProposalType.AddNewColor : ProposalType.MakeADisasterByColor; + const colorArg = type === ProposalType.AddNewColor ? color : disasterColor + if (gameData && gameData.account.account) { + gameData.setup.systemCalls.createProposal( + gameData.account.account, + GAME_ID, + type, + { + address: ZERO_ADDRESS, + arg1: hexRGBtoNumber(colorArg.replace('#', '')), + arg2: 0 + } + ).then(() => navigate('/governance')) + } + }; + + const colors = [ + '#000000', + '#FF00FF', + '#00FFFF', + ]; + + const colorOptionsFormatted = colors.map(color => ({ + value: color, + label: ( +
+
+ {color} +
+ ), + })); + + const customStyles = { + control: (provided: any) => ({ + ...provided, + backgroundColor: 'bg-gray-800', + color: '#fff', // text-white + borderColor: '#4A5568', // border-color + boxShadow: 'none', // Remove default box shadow + '&:hover': { + borderColor: '#4A5568', // border-color on hover + }, + }), + singleValue: (provided: any) => ({ + ...provided, + color: '#fff', // text-white + }), + menu: (provided: any) => ({ + ...provided, + backgroundColor: '#4A5568', // bg-gray-700 + }), + option: (provided: any, state: any) => ({ + ...provided, + backgroundColor: state.isFocused ? '#2D3748' : '#bg0grat', // bg-gray-800 : bg-gray-700 + color: '#fff', // text-white + }), + }; + + return ( +
+ {/*
+ + p/war + + + Governance + +
+ + +
+
*/} +
+
+

New Proposal

+ +
+ + +
+ + {proposalType === 'Add Color' && ( +
+ +
+
setShowColorPicker(!showColorPicker)} + >
+ setColor(e.target.value.toUpperCase())} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> + {showColorPicker && ( +
+ +
+ )} +
+
+ )} + + {proposalType === 'Make A Disaster' && ( +
+ + setProposalType(e.target.value)} + className='w-full p-3 rounded-md bg-gray-700 text-white' + > + + + + + + + + +
+ + {proposalType === 'Add Color' && ( + <> +
+ + setColor(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+ + )} + + {proposalType === 'Expand Area' && ( + <> +
+ + setWidth(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+
+ + setHeight(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+ + )} + + {proposalType === 'Change PX Limit' && ( + <> +
+ + +
+ { maxPXProposalType === 'Change Constant' && ( +
+ + setConstant(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+ )} + { maxPXProposalType === 'Change Coefficient for the number of owns' && ( +
+ + setCoefficient1(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+ )} + { maxPXProposalType === 'Change Coefficient for commitments' && ( +
+ + setCoefficient2(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+ )} + + )} + + {proposalType === 'Change PX Recovery Speed' && ( +
+ + setPxRecoverySpeed(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+ )} + + {proposalType === 'Change Base Cost' && ( +
+ + setBaseCost(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+ )} + + {proposalType === 'Change Victory Conditions' && ( + <> +
+ + +
+ {victoryCondition === 'Type 2' && ( +
+ + setWinnerAddress(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+ )} + + )} + + {proposalType === 'Ban Player' && ( +
+ + setBanPlayerAddress(e.target.value)} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> +
+ )} + +
+ + +
+ +
+ + Back + + +
+
+
+
+ ); +}; + +export default NewProposal; diff --git a/src/pages/ProposalDetails.tsx b/src/pages/ProposalDetails.tsx new file mode 100644 index 0000000..08bfd6b --- /dev/null +++ b/src/pages/ProposalDetails.tsx @@ -0,0 +1,161 @@ +import React, { useState } from 'react'; +import { useParams } from 'react-router-dom'; +import {proposals} from "@/global/constants.ts"; + +const ProposalDetails: React.FC = () => { + const { id } = useParams<{ id: string }>(); + const proposal = proposals.find((p) => p.id === Number(id)); + const headerHeight = 64; + + const getStatusColor = (status: string) => { + if (status.startsWith('end in')) { + return 'bg-green-500'; + } else if (status === 'closed') { + return 'bg-purple-500'; + } else { + return 'bg-gray-500'; + } + }; + + // State hooks for vote inputs + const [forVotes, setForVotes] = useState(0); + const [againstVotes, setAgainstVotes] = useState(0); + + const handleForVotesChange = (e: React.ChangeEvent) => { + const value = e.target.value; + setForVotes(value === '' ? '' : Number(value)); + }; + + const handleAgainstVotesChange = (e: React.ChangeEvent) => { + const value = e.target.value; + setAgainstVotes(value === '' ? '' : Number(value)); + }; + + const extractHexColor = (title: string) => { + const match = title.match(/#[0-9A-Fa-f]{6}/); + return match ? match[0].toUpperCase() : null; + }; + + if (!proposal) { + return
Proposal not found
; + } + + const hexColor = extractHexColor(proposal.title); + + // Calculate the width percentages for the results bar + const totalPoints = proposal.forPoints + proposal.againstPoints; + const forPercentage = totalPoints === 0 ? 0 : (proposal.forPoints / totalPoints) * 100; + const againstPercentage = totalPoints === 0 ? 0 : (proposal.againstPoints / totalPoints) * 100; + + return ( +
+ {/*
+ + p/war + + + Governance + +
+ + +
+
*/} +
+
+
+
+

{proposal.title}

+ {hexColor && ( +
+ )} +
+
+ {proposal.status} +
+
+

proposed by {proposal.proposer}

+
+

Comments

+

{proposal.comments}

+
+
+

Cast your vote

+
+ + +
+
+ + +
+ +
+
+
+

Information

+

Start Date: May 21, 2024, 7:30 AM

+

End Date: May 22, 2024, 7:30 AM

+
+
+

Current Results

+
+
+
+
+
+
For {proposal.forPoints} points
+
Against {proposal.againstPoints} points
+
+
+
+
+

Votes

+
+
    + 10 votes by shora + {/* {proposal.votes.map((vote, index) => ( +
  • + {vote.voter} + {vote.choice} + {vote.points} PX +
  • + ))} */} +
+ +
+
+
+
+
+ ); +}; + +export default ProposalDetails; diff --git a/tsconfig.json b/tsconfig.json index d0f992b..92a13b0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,7 @@ ], "module": "ESNext", "skipLibCheck": true, - "moduleResolution": "nodenext", + "moduleResolution": "node", "allowImportingTsExtensions": true, "resolveJsonModule": true, "isolatedModules": true, diff --git a/yarn.lock b/yarn.lock index 7a91b95..82419f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,6 +20,14 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + "@babel/code-frame@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" @@ -64,6 +72,16 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" + integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== + dependencies: + "@babel/types" "^7.24.7" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-compilation-targets@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51" @@ -80,6 +98,13 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d" integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== +"@babel/helper-environment-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" + integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-function-name@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8" @@ -88,6 +113,14 @@ "@babel/template" "^7.24.6" "@babel/types" "^7.24.6" +"@babel/helper-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" + integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== + dependencies: + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-hoist-variables@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9" @@ -95,6 +128,21 @@ dependencies: "@babel/types" "^7.24.6" +"@babel/helper-hoist-variables@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" + integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-module-imports@^7.16.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-imports@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852" @@ -132,16 +180,33 @@ dependencies: "@babel/types" "^7.24.6" +"@babel/helper-split-export-declaration@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" + integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-string-parser@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df" integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== +"@babel/helper-string-parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" + integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== + "@babel/helper-validator-identifier@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e" integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a" @@ -165,11 +230,26 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.4", "@babel/parser@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328" integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== +"@babel/parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" + integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== + "@babel/plugin-transform-react-jsx-self@^7.24.5": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.6.tgz#4fa4870d594d6840d724d2006d0f98b19be6f502" @@ -184,7 +264,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.6" -"@babel/runtime@^7.24.4": +"@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.24.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== @@ -200,6 +280,15 @@ "@babel/parser" "^7.24.6" "@babel/types" "^7.24.6" +"@babel/template@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" + integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/traverse@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc" @@ -216,6 +305,22 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" + integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.0", "@babel/types@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912" @@ -225,6 +330,15 @@ "@babel/helper-validator-identifier" "^7.24.6" to-fast-properties "^2.0.0" +"@babel/types@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" + integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== + dependencies: + "@babel/helper-string-parser" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -297,7 +411,7 @@ "@latticexyz/utils" "^2.0.0-next.11" zustand "^4.5.2" -"@dojoengine/torii-client@0.7.1", "@dojoengine/torii-client@^0.7.1": +"@dojoengine/torii-client@0.7.1": version "0.7.1" resolved "https://registry.yarnpkg.com/@dojoengine/torii-client/-/torii-client-0.7.1.tgz#13ebb45695bb59fcaa72575958d26ba34839c728" integrity sha512-c8k/aWxYgUJTjXGGWOB4VfFexGyqoO4Y1CzWEFSTkVCrIAlw78FgC2Con7G0OSyqXECmpZiYj1ugospaJHMkzg== @@ -313,6 +427,14 @@ "@dojoengine/torii-wasm" "0.7.2" typescript "^5.0.3" +"@dojoengine/torii-client@^0.7.1": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@dojoengine/torii-client/-/torii-client-0.7.4.tgz#cafd6a358d3471272412706e1914aeba8a910293" + integrity sha512-Z9oc1rpuBm8qKs4U/bTZZSa4RoSdk1TBFHI8aVxyGLaDCUQ5e2YymQZW4gC0IMmJRLhJTB5TnpIn4/H8gmreCg== + dependencies: + "@dojoengine/torii-wasm" "0.7.4" + typescript "^5.0.3" + "@dojoengine/torii-wasm@0.7.1": version "0.7.1" resolved "https://registry.yarnpkg.com/@dojoengine/torii-wasm/-/torii-wasm-0.7.1.tgz#0e32d184f64856dfd51bc6470ee9c4094b730f79" @@ -323,6 +445,11 @@ resolved "https://registry.yarnpkg.com/@dojoengine/torii-wasm/-/torii-wasm-0.7.2.tgz#8e16f4163f929236939db7b6b98b4d3eb263caeb" integrity sha512-ccolySkoHfE25rIeh/67wdd52DdbU37xnEJ9DrUAneDcDmYiHzkKude5H0wSh73muLNS4I+0+ukjDw4oCSPM7w== +"@dojoengine/torii-wasm@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@dojoengine/torii-wasm/-/torii-wasm-0.7.4.tgz#682fd6f380340cb525ea49a93bdcf1b9355c87c5" + integrity sha512-/CyaAa7YEVgedzYMBVqBSh5FKZPh/I34SclsLzFWHoBid5fAMmARLBi22eOUz/Un1iMa4Ln+au+PviruNu8Vlg== + "@dojoengine/utils@0.7.2", "@dojoengine/utils@^0.7.2": version "0.7.2" resolved "https://registry.yarnpkg.com/@dojoengine/utils/-/utils-0.7.2.tgz#e8d87c49bfa0810f91c586d33dfef74e8203cb76" @@ -378,6 +505,94 @@ resolved "https://registry.yarnpkg.com/@dprint/win32-x64/-/win32-x64-0.45.1.tgz#6d08308cf08e4b751efb0692ded28b57d42a365d" integrity sha512-2l78XM7KsW46P2Yv6uPB3fE+y92EsBlrCxi+RVQ0pbznPFdMdkLyGgaCuh683zdld14jHlaADpIQ7YchGAEMAg== +"@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" + integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/serialize" "^1.1.2" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + +"@emotion/cache@^11.11.0", "@emotion/cache@^11.4.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + stylis "4.2.0" + +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.8.1": + version "11.11.4" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.4.tgz#3a829cac25c1f00e126408fab7f891f00ecc3c1d" + integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.4.tgz#fc8f6d80c492cfa08801d544a05331d1cc7cd451" + integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== + +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== + +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + "@esbuild/aix-ppc64@0.20.2": version "0.20.2" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" @@ -867,6 +1082,26 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@floating-ui/core@^1.0.0": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.2.tgz#d37f3e0ac1f1c756c7de45db13303a266226851a" + integrity sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg== + dependencies: + "@floating-ui/utils" "^0.2.0" + +"@floating-ui/dom@^1.0.1": + version "1.6.5" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.5.tgz#323f065c003f1d3ecf0ff16d2c2c4d38979f4cb9" + integrity sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw== + dependencies: + "@floating-ui/core" "^1.0.0" + "@floating-ui/utils" "^0.2.0" + +"@floating-ui/utils@^0.2.0": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5" + integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw== + "@graphql-typed-document-node/core@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" @@ -891,6 +1126,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@icons/material@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" + integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1396,6 +1636,11 @@ dependencies: undici-types "~5.26.4" +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + "@types/prop-types@*": version "15.7.12" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" @@ -1408,6 +1653,13 @@ dependencies: "@types/react" "*" +"@types/react-transition-group@^4.4.0": + version "4.4.10" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" + integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^18.2.66": version "18.3.3" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" @@ -1732,6 +1984,15 @@ autoprefixer@^10.4.19: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1984,11 +2245,27 @@ confbox@^0.1.7: resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2084,6 +2361,14 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + dom-serializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" @@ -2189,6 +2474,13 @@ entities@^4.2.0, entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + esbuild@^0.20.1: version "0.20.2" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" @@ -2468,6 +2760,11 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -2695,6 +2992,13 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -2768,6 +3072,11 @@ inherits@2, inherits@^2.0.3, inherits@^2.0.4: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -2929,6 +3238,11 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -2998,6 +3312,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash-es@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -3018,7 +3337,12 @@ lodash.snakecase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== -loose-envify@^1.1.0: +lodash@^4.0.1, lodash@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -3072,6 +3396,11 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" +material-colors@^1.2.1: + version "1.2.6" + resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" + integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== + mathjs@^12.0.0: version "12.4.3" resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-12.4.3.tgz#eef86baf8ee4c2467fc8c4619107bf4a650b9954" @@ -3087,6 +3416,11 @@ mathjs@^12.0.0: tiny-emitter "^2.1.0" typed-function "^4.1.1" +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -3229,7 +3563,7 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -object-assign@^4.0.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -3303,6 +3637,16 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + parse5-htmlparser2-tree-adapter@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" @@ -3470,6 +3814,15 @@ pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" +prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + proxy-deep@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/proxy-deep/-/proxy-deep-3.1.1.tgz#481f8e35f528ec734c41eae3b391e317599a5282" @@ -3495,6 +3848,19 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +react-color@^2.19.3: + version "2.19.3" + resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d" + integrity sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA== + dependencies: + "@icons/material" "^0.2.4" + lodash "^4.17.15" + lodash-es "^4.17.15" + material-colors "^1.2.1" + prop-types "^15.5.10" + reactcss "^1.2.0" + tinycolor2 "^1.4.1" + react-dom@^18.2.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" @@ -3503,6 +3869,16 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.2" +react-icons@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-5.2.1.tgz#28c2040917b2a2eda639b0f797bff1888e018e4a" + integrity sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw== + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react-is@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" @@ -3528,6 +3904,31 @@ react-router@6.23.1: dependencies: "@remix-run/router" "1.16.1" +react-select@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.8.0.tgz#bd5c467a4df223f079dd720be9498076a3f085b5" + integrity sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA== + dependencies: + "@babel/runtime" "^7.12.0" + "@emotion/cache" "^11.4.0" + "@emotion/react" "^11.8.1" + "@floating-ui/dom" "^1.0.1" + "@types/react-transition-group" "^4.4.0" + memoize-one "^6.0.0" + prop-types "^15.6.0" + react-transition-group "^4.3.0" + use-isomorphic-layout-effect "^1.1.2" + +react-transition-group@^4.3.0: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^18.2.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" @@ -3535,6 +3936,13 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" +reactcss@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" + integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== + dependencies: + lodash "^4.0.1" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -3586,7 +3994,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.1.7, resolve@^1.22.2: +resolve@^1.1.7, resolve@^1.19.0, resolve@^1.22.2: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -3715,6 +4123,11 @@ source-map-js@^1.2.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + stackback@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" @@ -3826,6 +4239,11 @@ strip-literal@^2.0.0: dependencies: js-tokens "^9.0.0" +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + sucrase@^3.32.0: version "3.35.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" @@ -3929,6 +4347,11 @@ tinybench@^2.5.1: resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.8.0.tgz#30e19ae3a27508ee18273ffed9ac7018949acd7b" integrity sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw== +tinycolor2@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + tinypool@^0.8.3: version "0.8.4" resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.4.tgz#e217fe1270d941b39e98c625dcecebb1408c9aa8" @@ -4083,6 +4506,11 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" +use-isomorphic-layout-effect@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + use-sync-external-store@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" @@ -4295,6 +4723,11 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yaml@^2.3.4: version "2.4.5" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e" From 0ad64303721d76b0e3d8537163c252809bbd8860 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Fri, 21 Jun 2024 16:23:51 +0100 Subject: [PATCH 02/71] fix: add some modules --- package.json | 2 + pnpm-lock.yaml | 5096 +++++++++++++++++++++++++++++++++++++++++++++ src/vite-env.d.ts | 8 - 3 files changed, 5098 insertions(+), 8 deletions(-) create mode 100644 pnpm-lock.yaml diff --git a/package.json b/package.json index f5ae60f..26c9c0f 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,10 @@ "dotenv": "^16.4.5", "graphql": "^16.8.1", "graphql-request": "^7.0.1", + "graphql-tag": "^2.12.6", "idb-keyval": "^6.2.1", "immer": "^10.1.1", + "micro-starknet": "^0.2.3", "pngjs3": "^6.1.1", "postcss": "^8.4.38", "react": "^18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..008ed82 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5096 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@dojoengine/core': + specifier: ^0.7.1 + version: 0.7.4(starknet@6.10.0)(typescript@5.5.2) + '@dojoengine/create-burner': + specifier: ^0.7.1 + version: 0.7.4(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2) + '@dojoengine/react': + specifier: ^0.7.2 + version: 0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(type-fest@2.19.0)(typescript@5.5.2) + '@dojoengine/recs': + specifier: ^0.1.35 + version: 0.1.35(typescript@5.5.2) + '@dojoengine/state': + specifier: ^0.7.1 + version: 0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2) + '@dojoengine/torii-client': + specifier: ^0.7.1 + version: 0.7.4 + '@dojoengine/utils': + specifier: ^0.7.2 + version: 0.7.4(starknet@6.10.0)(typescript@5.5.2) + '@react-hook/resize-observer': + specifier: ^2.0.1 + version: 2.0.1(react@18.3.1) + '@types/upng-js': + specifier: ^2.1.5 + version: 2.1.5 + autoprefixer: + specifier: ^10.4.19 + version: 10.4.19(postcss@8.4.38) + browserify-zlib: + specifier: ^0.2.0 + version: 0.2.0 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + graphql: + specifier: ^16.8.1 + version: 16.9.0 + graphql-request: + specifier: ^7.0.1 + version: 7.0.1(graphql@16.9.0) + graphql-tag: + specifier: ^2.12.6 + version: 2.12.6(graphql@16.9.0) + idb-keyval: + specifier: ^6.2.1 + version: 6.2.1 + immer: + specifier: ^10.1.1 + version: 10.1.1 + micro-starknet: + specifier: ^0.2.3 + version: 0.2.3 + pngjs3: + specifier: ^6.1.1 + version: 6.1.1 + postcss: + specifier: ^8.4.38 + version: 8.4.38 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-color: + specifier: ^2.19.3 + version: 2.19.3(react@18.3.1) + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + react-icons: + specifier: ^5.2.1 + version: 5.2.1(react@18.3.1) + react-router-dom: + specifier: ^6.23.1 + version: 6.23.1(react-dom@18.3.1)(react@18.3.1) + react-select: + specifier: ^5.8.0 + version: 5.8.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + starknet: + specifier: ^6.9.0 + version: 6.10.0 + tailwindcss: + specifier: ^3.4.4 + version: 3.4.4 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.4) + upng-js: + specifier: ^2.1.0 + version: 2.1.0 + zustand: + specifier: ^4.5.2 + version: 4.5.2(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + +devDependencies: + '@types/react': + specifier: ^18.2.66 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.2.22 + version: 18.3.0 + '@typescript-eslint/eslint-plugin': + specifier: ^7.2.0 + version: 7.13.1(@typescript-eslint/parser@7.13.1)(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/parser': + specifier: ^7.2.0 + version: 7.13.1(eslint@8.57.0)(typescript@5.5.2) + '@vitejs/plugin-react': + specifier: ^4.2.1 + version: 4.3.1(vite@5.3.1) + '@vitest/coverage-v8': + specifier: ^1.6.0 + version: 1.6.0(vitest@1.6.0) + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.2(eslint@8.57.0) + eslint-plugin-react-refresh: + specifier: ^0.4.6 + version: 0.4.7(eslint@8.57.0) + typescript: + specifier: ^5.2.2 + version: 5.5.2 + vite: + specifier: ^5.2.0 + version: 5.3.1 + vite-envs: + specifier: ^4.3.2 + version: 4.3.2 + vite-plugin-graphql-loader: + specifier: ^3.0.1 + version: 3.0.1 + vite-plugin-top-level-await: + specifier: ^1.4.1 + version: 1.4.1(vite@5.3.1) + vite-plugin-wasm: + specifier: ^3.3.0 + version: 3.3.0(vite@5.3.1) + vitest: + specifier: ^1.6.0 + version: 1.6.0 + +packages: + + /@adraffy/ens-normalize@1.10.0: + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + dev: false + + /@adraffy/ens-normalize@1.9.4: + resolution: {integrity: sha512-UK0bHA7hh9cR39V+4gl2/NnBBjoXIxkuWAPCaY4X7fbH4L/azIi7ilWOCjMUYfpJgraLUAqkRi2BqrjME8Rynw==} + dev: false + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: false + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + /@babel/compat-data@7.24.7: + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.24.7: + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.24.7: + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + /@babel/helper-compilation-targets@7.24.7: + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.24.7: + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + + /@babel/helper-string-parser@7.24.7: + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.24.7: + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.24.7: + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + dev: true + + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + /@babel/parser@7.24.7: + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.7 + + /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true + + /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true + + /@babel/runtime@7.24.7: + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + + /@babel/traverse@7.24.7: + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types@7.24.7: + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@dojoengine/core@0.7.4(starknet@6.10.0)(typescript@5.5.2): + resolution: {integrity: sha512-yWmUAoLcCln6+guV9PUfB+hpbNyGantuePBVjnMOEsgxnaClkSapxcITiNwGydSM+pb7tCyi8sxX1jnFuTCeTA==} + hasBin: true + peerDependencies: + starknet: ^6.1.5 + dependencies: + '@dojoengine/recs': 2.0.13(typescript@5.5.2)(zod@3.23.8) + starknet: 6.10.0 + zod: 3.23.8 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + dev: false + + /@dojoengine/create-burner@0.7.4(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2): + resolution: {integrity: sha512-ws2VVP/9PnyJqKJ4oa4PwboejMFVi5dkCmgSSovdCijM3VfM67b0aqB2v3iLxjSEWpyudQWCnR55l6uX7itfzA==} + peerDependencies: + react: ^18.2.0 + starknet: ^6.1.5 + dependencies: + '@dojoengine/core': 0.7.4(starknet@6.10.0)(typescript@5.5.2) + '@scure/bip32': 1.4.0 + '@starknet-react/core': 2.3.0(get-starknet-core@3.3.0)(react@18.3.1)(starknet@6.10.0) + encoding: 0.1.13 + get-starknet-core: 3.3.0(starknet@6.10.0) + js-cookie: 3.0.5 + react: 18.3.1 + starknet: 6.10.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + dev: false + + /@dojoengine/react@0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(type-fest@2.19.0)(typescript@5.5.2): + resolution: {integrity: sha512-7BFzh1AOcZ8nbSaVspLwcqMfhqBz99qaawxB/BVJE/BRTzMtbsxQLQU33sbIJbfJhbMTUGX9F4bxJs/21KVyBw==} + peerDependencies: + react: ^18.2.0 + starknet: ^6.1.5 + type-fest: ^2.14.0 + dependencies: + '@dojoengine/recs': 2.0.13(typescript@5.5.2)(zod@3.23.8) + '@dojoengine/state': 0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2) + '@dojoengine/torii-client': 0.7.4 + '@dojoengine/utils': 0.7.4(starknet@6.10.0)(typescript@5.5.2) + '@latticexyz/utils': 2.0.12 + encoding: 0.1.13 + fast-deep-equal: 3.1.3 + get-starknet-core: 3.3.0(starknet@6.10.0) + js-cookie: 3.0.5 + react: 18.3.1 + rxjs: 7.5.5 + starknet: 6.10.0 + type-fest: 2.19.0 + zustand: 4.5.2(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - typescript + - utf-8-validate + - zod + dev: false + + /@dojoengine/recs@0.1.35(typescript@5.5.2): + resolution: {integrity: sha512-wWXcH5hCRByGVLbkQ/pdo80xk3fmXoUmXF7cVVdbiKS/Kh/f1iQjjBSudAaogUDPqViXvWNdpmnH/0fas/xzSQ==} + dependencies: + '@latticexyz/schema-type': 2.0.0-next.12(typescript@5.5.2) + '@latticexyz/utils': 2.0.0-next.12 + mobx: 6.12.4 + rxjs: 7.5.5 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /@dojoengine/recs@2.0.13(typescript@5.5.2)(zod@3.23.8): + resolution: {integrity: sha512-Cgz4Unlnk2FSDoFTYKrJexX/KiSYPMFMxftxQkC+9LUKS5yNGkgFQM7xu4/L1HvpDAenL7NjUmH6ynRAS7Iifw==} + dependencies: + '@latticexyz/schema-type': 2.0.12(typescript@5.5.2)(zod@3.23.8) + '@latticexyz/utils': 2.0.12 + mobx: 6.12.4 + rxjs: 7.5.5 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /@dojoengine/state@0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2): + resolution: {integrity: sha512-UrPrSppwyhZe9xdCFJKzOTBeKvPN+YwIdH16OYIiA/wQl9IMdk/vk13l5rI0I8jSzszjLD0YrLanOaowXaIA0g==} + peerDependencies: + starknet: ^6.1.5 + dependencies: + '@dojoengine/recs': 2.0.13(typescript@5.5.2)(zod@3.23.8) + '@dojoengine/torii-client': 0.7.4 + '@latticexyz/utils': 2.0.12 + starknet: 6.10.0 + zustand: 4.5.2(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - typescript + - utf-8-validate + - zod + dev: false + + /@dojoengine/torii-client@0.7.4: + resolution: {integrity: sha512-Z9oc1rpuBm8qKs4U/bTZZSa4RoSdk1TBFHI8aVxyGLaDCUQ5e2YymQZW4gC0IMmJRLhJTB5TnpIn4/H8gmreCg==} + dependencies: + '@dojoengine/torii-wasm': 0.7.4 + typescript: 5.5.2 + dev: false + + /@dojoengine/torii-wasm@0.7.4: + resolution: {integrity: sha512-/CyaAa7YEVgedzYMBVqBSh5FKZPh/I34SclsLzFWHoBid5fAMmARLBi22eOUz/Un1iMa4Ln+au+PviruNu8Vlg==} + dev: false + + /@dojoengine/utils@0.7.4(starknet@6.10.0)(typescript@5.5.2): + resolution: {integrity: sha512-dcQ87Y5MI0xqp+hg8yN4/+2ldpGwikzP7UZIULjKwmIL/GRKt/xHGMiJaw761K0CF/98liB37xeS2qL3/Aq6MA==} + peerDependencies: + starknet: ^6.1.5 + dependencies: + '@dojoengine/recs': 2.0.13(typescript@5.5.2)(zod@3.23.8) + '@latticexyz/utils': 2.0.12 + mathjs: 12.4.3 + micro-starknet: 0.2.3 + starknet: 6.10.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /@dprint/darwin-arm64@0.45.1: + resolution: {integrity: sha512-pH0/uKLJ5SJPoHhOwLWFMhCmL0BY3FzWQbull8OGMK/FRkIPgOl2adZSovtUZpUMGWyDOzIWH1fW9X2DuMhnEg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@dprint/darwin-x64@0.45.1: + resolution: {integrity: sha512-YUj421LmBLDlxpIER3pORKfQmpmXD50n5mClHjpZrnl17WTiHtQ+jHvDJdJoxH2eS66W0mQyxLoGo5SfFfiM7A==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@dprint/formatter@0.3.0: + resolution: {integrity: sha512-N9fxCxbaBOrDkteSOzaCqwWjso5iAe+WJPsHC021JfHNj2ThInPNEF13ORDKta3llq5D1TlclODCvOvipH7bWQ==} + dev: false + + /@dprint/linux-arm64-glibc@0.45.1: + resolution: {integrity: sha512-lJ7s/pOQWRJ0mstjZQnVyX2/3QRXZ9cpFHJDZ7e81Y8QSn/iqxTrnK0DPgxUrDG8hYKQmWQdQLU4sP5DKBz0Jg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@dprint/linux-arm64-musl@0.45.1: + resolution: {integrity: sha512-un2awe1L1sAJLsCPSEUrE0/cgupdzbYFoyBOutyU1zHR9KQn47AtIDw+chvuinU4xleHDuEGyXGuJ6NE+Ky6vw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@dprint/linux-x64-glibc@0.45.1: + resolution: {integrity: sha512-5Civht90S/g8zlyYB7n4oH78p+sLbNqeFCFuImJRK7uRxZwCRya7lji6RwlB6DQ7qngVqovTHj9RLOYfZzfVlg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@dprint/linux-x64-musl@0.45.1: + resolution: {integrity: sha512-p2/gjnHDd8GRCvtey5HZO4o/He6pSmY/zpcCuIXprFW9P0vNlEj3DFhz4FPpOKXM+csrsVWWs2E0T/xr5QZtVg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@dprint/typescript@0.90.5: + resolution: {integrity: sha512-/1aP6saonFvJyQN3l2is6eTOec3GnLGyW+opid/eDm8pnlhwzYl8A9p36pI6WO5jLl/a9Ghod+LWpvSOuXFGUw==} + dev: false + + /@dprint/win32-x64@0.45.1: + resolution: {integrity: sha512-2l78XM7KsW46P2Yv6uPB3fE+y92EsBlrCxi+RVQ0pbznPFdMdkLyGgaCuh683zdld14jHlaADpIQ7YchGAEMAg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@emotion/babel-plugin@11.11.0: + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + dependencies: + '@babel/helper-module-imports': 7.24.7 + '@babel/runtime': 7.24.7 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.4 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@emotion/cache@11.11.0: + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + dev: false + + /@emotion/hash@0.9.1: + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + dev: false + + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + dev: false + + /@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.7 + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.4 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + '@types/react': 18.3.3 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@emotion/serialize@1.1.4: + resolution: {integrity: sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==} + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.3 + dev: false + + /@emotion/sheet@1.2.2: + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + dev: false + + /@emotion/unitless@0.8.1: + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + dev: false + + /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.3.1): + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.3.1 + dev: false + + /@emotion/utils@1.2.1: + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + dev: false + + /@emotion/weak-memoize@0.3.1: + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + dev: false + + /@esbuild/aix-ppc64@0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.1: + resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.5 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@ethersproject/abi@5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/abstract-provider@5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + dev: false + + /@ethersproject/abstract-signer@5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: false + + /@ethersproject/address@5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + dev: false + + /@ethersproject/base64@5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + dev: false + + /@ethersproject/basex@5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: false + + /@ethersproject/bignumber@5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + dev: false + + /@ethersproject/bytes@5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/constants@5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + dev: false + + /@ethersproject/contracts@5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + dev: false + + /@ethersproject/hash@5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/hdnode@5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: false + + /@ethersproject/json-wallets@5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + dev: false + + /@ethersproject/keccak256@5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + dev: false + + /@ethersproject/logger@5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + dev: false + + /@ethersproject/networks@5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/pbkdf2@5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + dev: false + + /@ethersproject/properties@5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/providers@5.7.2: + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@ethersproject/random@5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/rlp@5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/sha2@5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + dev: false + + /@ethersproject/signing-key@5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + dev: false + + /@ethersproject/solidity@5.7.0: + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/strings@5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/transactions@5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + dev: false + + /@ethersproject/units@5.7.0: + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/wallet@5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: false + + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@floating-ui/core@1.6.2: + resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==} + dependencies: + '@floating-ui/utils': 0.2.2 + dev: false + + /@floating-ui/dom@1.6.5: + resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} + dependencies: + '@floating-ui/core': 1.6.2 + '@floating-ui/utils': 0.2.2 + dev: false + + /@floating-ui/utils@0.2.2: + resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} + dev: false + + /@graphql-typed-document-node/core@3.2.0(graphql@16.9.0): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.9.0 + dev: false + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.5 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + dev: true + + /@icons/material@0.2.4(react@18.3.1): + resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==} + peerDependencies: + react: '*' + dependencies: + react: 18.3.1 + dev: false + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@juggle/resize-observer@3.4.0: + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + dev: false + + /@latticexyz/schema-type@2.0.0-next.12(typescript@5.5.2): + resolution: {integrity: sha512-GmWdDmXKPc48KP9LRUB3YJ7UTzjMe08MbWfniR9ChTwJrESZcB8ussCeHL4liuM+6Ts5xKc5fO9p02kd+VqNrQ==} + dependencies: + abitype: 0.9.8(typescript@5.5.2) + viem: 1.14.0(typescript@5.5.2) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /@latticexyz/schema-type@2.0.12(typescript@5.5.2)(zod@3.23.8): + resolution: {integrity: sha512-QDnHU3iCQmY8e24CGR3hKUEprHrrNUfFTiUaSuj3J0d/x9iaIafYT2+dWydxgcpCmK4Xl7PgurvJiAVCmcLokg==} + dependencies: + abitype: 1.0.0(typescript@5.5.2)(zod@3.23.8) + viem: 2.9.20(typescript@5.5.2)(zod@3.23.8) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /@latticexyz/utils@2.0.0-next.12: + resolution: {integrity: sha512-xJMFZs2thDsCB4pXB1b5xcSk5ur6e/GVpFYZuR4yeEFFvw7tRkXdduSEiI7vB60CN8ATyeKLnVXLZYo1Q2pT2A==} + dependencies: + ethers: 5.7.2 + mobx: 6.12.4 + proxy-deep: 3.1.1 + rxjs: 7.5.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@latticexyz/utils@2.0.12: + resolution: {integrity: sha512-AwniovUlWY7YL92Mjz/3R0V9g8c5wYg5t3agRmMZ9wgktUB6BYZC65n+sKp88wUuN3DrMLb51UFZOycGh0JD2w==} + dependencies: + mobx: 6.12.4 + proxy-deep: 3.1.1 + rxjs: 7.5.5 + dev: false + + /@module-federation/runtime@0.1.21: + resolution: {integrity: sha512-/p4BhZ0SnjJuiL0wwu+FebFgIUJ9vM+oCY7CyprUHImyi/Y23ulI61WNWMVrKQGgdMoXQDQCL8RH4EnrVP2ZFw==} + dependencies: + '@module-federation/sdk': 0.1.21 + dev: false + + /@module-federation/sdk@0.1.21: + resolution: {integrity: sha512-r7xPiAm+O4e+8Zvw+8b4ToeD0D0VJD004nHmt+Y8r/l98J2eA6di72Vn1FeyjtQbCrFtiMw3ts/dlqtcmIBipw==} + dev: false + + /@molt/command@0.9.0: + resolution: {integrity: sha512-1JI8dAlpqlZoXyKWVQggX7geFNPxBpocHIXQCsnxDjKy+3WX4SGyZVJXuLlqRRrX7FmQCuuMAfx642ovXmPA9g==} + dependencies: + '@molt/types': 0.2.0 + alge: 0.8.1 + chalk: 5.3.0 + lodash.camelcase: 4.3.0 + lodash.snakecase: 4.1.1 + readline-sync: 1.4.10 + string-length: 6.0.0 + strip-ansi: 7.1.0 + ts-toolbelt: 9.6.0 + type-fest: 4.20.1 + zod: 3.23.8 + dev: false + + /@molt/types@0.2.0: + resolution: {integrity: sha512-p6ChnEZDGjg9PYPec9BK6Yp5/DdSrYQvXTBAtgrnqX6N36cZy37ql1c8Tc5LclfIYBNG7EZp8NBcRTYJwyi84g==} + dependencies: + ts-toolbelt: 9.6.0 + dev: false + + /@noble/curves@1.0.0: + resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} + dependencies: + '@noble/hashes': 1.3.0 + dev: false + + /@noble/curves@1.2.0: + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + dependencies: + '@noble/hashes': 1.3.2 + dev: false + + /@noble/curves@1.3.0: + resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + dependencies: + '@noble/hashes': 1.3.3 + dev: false + + /@noble/curves@1.4.0: + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + dependencies: + '@noble/hashes': 1.4.0 + dev: false + + /@noble/hashes@1.3.0: + resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} + dev: false + + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: false + + /@noble/hashes@1.3.3: + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + dev: false + + /@noble/hashes@1.4.0: + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + + /@react-hook/latest@1.0.3(react@18.3.1): + resolution: {integrity: sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==} + peerDependencies: + react: '>=16.8' + dependencies: + react: 18.3.1 + dev: false + + /@react-hook/passive-layout-effect@1.2.1(react@18.3.1): + resolution: {integrity: sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==} + peerDependencies: + react: '>=16.8' + dependencies: + react: 18.3.1 + dev: false + + /@react-hook/resize-observer@2.0.1(react@18.3.1): + resolution: {integrity: sha512-9PCX9grWfxdPizY8ohr+X4IkV1JhGMWr2Nm4ngbg6IcAIv0WBs7YoJcNBqYl22OqPHr5eOMItGcStZrmj2mbmQ==} + peerDependencies: + react: '>=18' + dependencies: + '@juggle/resize-observer': 3.4.0 + '@react-hook/latest': 1.0.3(react@18.3.1) + '@react-hook/passive-layout-effect': 1.2.1(react@18.3.1) + react: 18.3.1 + dev: false + + /@remix-run/router@1.16.1: + resolution: {integrity: sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==} + engines: {node: '>=14.0.0'} + dev: false + + /@rollup/plugin-virtual@3.0.2: + resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dev: true + + /@rollup/rollup-android-arm-eabi@4.18.0: + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.18.0: + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.18.0: + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.18.0: + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.18.0: + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.18.0: + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.18.0: + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.18.0: + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.18.0: + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.18.0: + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.18.0: + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.18.0: + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.18.0: + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.18.0: + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.18.0: + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.18.0: + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@scure/base@1.1.7: + resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} + dev: false + + /@scure/bip32@1.3.2: + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + dependencies: + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.7 + dev: false + + /@scure/bip32@1.4.0: + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + dependencies: + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.7 + dev: false + + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.7 + dev: false + + /@scure/starknet@1.0.0: + resolution: {integrity: sha512-o5J57zY0f+2IL/mq8+AYJJ4Xpc1fOtDhr+mFQKbHnYFmm3WQrC+8zj2HEgxak1a+x86mhmBC1Kq305KUpVf0wg==} + dependencies: + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + dev: false + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@starknet-io/types-js@0.7.7: + resolution: {integrity: sha512-WLrpK7LIaIb8Ymxu6KF/6JkGW1sso988DweWu7p5QY/3y7waBIiPvzh27D9bX5KIJNRDyOoOVoHVEKYUYWZ/RQ==} + dev: false + + /@starknet-react/chains@0.1.7: + resolution: {integrity: sha512-UNh97I1SvuJKaAhKOmpEk8JcWuZWMlPG/ba2HcvFYL9x/47BKndJ+Da9V+iJFtkHUjreVnajT1snsaz1XMG+UQ==} + dev: false + + /@starknet-react/core@2.3.0(get-starknet-core@3.3.0)(react@18.3.1)(starknet@6.10.0): + resolution: {integrity: sha512-8g9d0Gs811gJnQJHVMxQoXYhv+y5/qug7NQ0lnJ51uytdBhr/Zz5wgeTHW4ZQ5Igljyvf+ks+yhp4P1iSvnSqA==} + peerDependencies: + get-starknet-core: ^3.2.0 + react: ^18.0 + starknet: ^5.25.0 + dependencies: + '@starknet-react/chains': 0.1.7 + '@tanstack/react-query': 5.45.1(react@18.3.1) + eventemitter3: 5.0.1 + get-starknet-core: 3.3.0(starknet@6.10.0) + immutable: 4.3.6 + react: 18.3.1 + starknet: 6.10.0 + zod: 3.23.8 + dev: false + + /@swc/core-darwin-arm64@1.6.3: + resolution: {integrity: sha512-3r7cJf1BcE30iyF1rnOSKrEzIR+cqnyYSZvivrm62TZdXVsIjfXe1xulsKGxZgNeLY5erIu7ukvMvBvPhnQvqA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-x64@1.6.3: + resolution: {integrity: sha512-8GLZ23IgVpF5xh2SbS5ZW/12/EEBuRU1hFOLB5rKERJU0y1RJ6YhDMf/FuOWhfHQcFM7TeedBwHIzaF+tdKKlw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm-gnueabihf@1.6.3: + resolution: {integrity: sha512-VQ/bduX7WhLOlGbJLMG7UH0LBehjjx43R4yuk55rjjJLqpvX5fQzMsWhQdIZ5vsc+4ORzdgtEAlpumTv6bsD1A==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-gnu@1.6.3: + resolution: {integrity: sha512-jHIQ/PCwtdDBIF/BiC5DochswuCAIW/T5skJ+eDMbta7+QtEnZCXTZWpT5ORoEY/gtsE2fjpOA4TS6fBBvXqUw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl@1.6.3: + resolution: {integrity: sha512-gA6velEUD27Dwu0BlR9hCcFzkWq2YL2pDAU5qbgeuGhaMiUCBssfqTQB+2ctEnV+AZx+hSMJOHvtA+uFZjfRrw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-gnu@1.6.3: + resolution: {integrity: sha512-fy4qoBDr5I8r+ZNCZxs/oZcmu4j/8mtSud6Ka102DaSxEjNg0vfIdo9ITsVIPsofhUTmDKjQsPB2O7YUlJAioQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-musl@1.6.3: + resolution: {integrity: sha512-c/twcMbq/Gpq47G+b3kWgoaCujpXO11aRgJx6am+CprvP4uNeBHEpQkxD+DQmdWFHisZd0i9GB8NG3e7L9Rz9Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-arm64-msvc@1.6.3: + resolution: {integrity: sha512-y6RxMtX45acReQmzkxcEfJscfBXce6QjuNgWQHHs9exA592BZzmolDUwgmAyjyvopz1lWX+KdymdZFKvuDSx4w==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-ia32-msvc@1.6.3: + resolution: {integrity: sha512-41h7z3xgukl1HDDwhquaeOPSP1OWeHl+mWKnJVmmwd3ui/oowUDCO856qa6JagBgPSnAGfyXwv6vthuXwyCcWA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-x64-msvc@1.6.3: + resolution: {integrity: sha512-//bnwo9b8Vp1ED06eXCHyGZ5xIpdkQgg2fuFDdtd1FITl7r5bdQh2ryRzPiKiGwgXZwZQitUshI4JeEX9IuW+Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core@1.6.3: + resolution: {integrity: sha512-mZpei+LqE+AL+nwgERMQey9EJA9/yhHTN6nwbobH5GnSij/lhfTdGfAb1iumOrroqEcXbHUaK//7wOw7DjBGdA==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.8 + optionalDependencies: + '@swc/core-darwin-arm64': 1.6.3 + '@swc/core-darwin-x64': 1.6.3 + '@swc/core-linux-arm-gnueabihf': 1.6.3 + '@swc/core-linux-arm64-gnu': 1.6.3 + '@swc/core-linux-arm64-musl': 1.6.3 + '@swc/core-linux-x64-gnu': 1.6.3 + '@swc/core-linux-x64-musl': 1.6.3 + '@swc/core-win32-arm64-msvc': 1.6.3 + '@swc/core-win32-ia32-msvc': 1.6.3 + '@swc/core-win32-x64-msvc': 1.6.3 + dev: true + + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: true + + /@swc/types@0.1.8: + resolution: {integrity: sha512-RNFA3+7OJFNYY78x0FYwi1Ow+iF1eF5WvmfY1nXPOEH4R2p/D4Cr1vzje7dNAI2aLFqpv8Wyz4oKSWqIZArpQA==} + dependencies: + '@swc/counter': 0.1.3 + dev: true + + /@tanstack/query-core@5.45.0: + resolution: {integrity: sha512-RVfIZQmFUTdjhSAAblvueimfngYyfN6HlwaJUPK71PKd7yi43Vs1S/rdimmZedPWX/WGppcq/U1HOj7O7FwYxw==} + dev: false + + /@tanstack/react-query@5.45.1(react@18.3.1): + resolution: {integrity: sha512-mYYfJujKg2kxmkRRjA6nn4YKG3ITsKuH22f1kteJ5IuVQqgKUgbaSQfYwVP0gBS05mhwxO03HVpD0t7BMN7WOA==} + peerDependencies: + react: ^18.0.0 + dependencies: + '@tanstack/query-core': 5.45.0 + react: 18.3.1 + dev: false + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.24.7 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + dev: true + + /@types/babel__traverse@7.20.6: + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + dependencies: + '@babel/types': 7.24.7 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/node@20.14.7: + resolution: {integrity: sha512-uTr2m2IbJJucF3KUxgnGOZvYbN0QgkGyWxG6973HCpMYFy2KfcgYuIwkJQMQkt1VbBMlvWRbpshFTLxnxCZjKQ==} + dependencies: + undici-types: 5.26.5 + dev: false + + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + dev: false + + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + /@types/react-dom@18.3.0: + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + dependencies: + '@types/react': 18.3.3 + dev: true + + /@types/react-transition-group@4.4.10: + resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} + dependencies: + '@types/react': 18.3.3 + dev: false + + /@types/react@18.3.3: + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + /@types/upng-js@2.1.5: + resolution: {integrity: sha512-CzXg1lcCcWzrmYmke9BLbBPzb2DpdC1bXuXf0BtK3Bygvsozslei8S1bheDI1QUfZzZpMeQI5fywfnMj4CxocQ==} + dev: false + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.14.7 + dev: false + + /@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1)(eslint@8.57.0)(typescript@5.5.2): + resolution: {integrity: sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.1 + '@typescript-eslint/parser': 7.13.1(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/type-utils': 7.13.1(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.13.1 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.2) + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.5.2): + resolution: {integrity: sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.13.1 + debug: 4.3.5 + eslint: 8.57.0 + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@7.13.1: + resolution: {integrity: sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 + dev: true + + /@typescript-eslint/type-utils@7.13.1(eslint@8.57.0)(typescript@5.5.2): + resolution: {integrity: sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.5.2) + debug: 4.3.5 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.5.2) + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@7.13.1: + resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + + /@typescript-eslint/typescript-estree@7.13.1(typescript@5.5.2): + resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 + debug: 4.3.5 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.5.2) + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@7.13.1(eslint@8.57.0)(typescript@5.5.2): + resolution: {integrity: sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@7.13.1: + resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.13.1 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vitejs/plugin-react@4.3.1(vite@5.3.1): + resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@vitest/coverage-v8@1.6.0(vitest@1.6.0): + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + peerDependencies: + vitest: 1.6.0 + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.5 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.4 + istanbul-reports: 3.1.7 + magic-string: 0.30.10 + magicast: 0.3.4 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + test-exclude: 6.0.0 + vitest: 1.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vitest/expect@1.6.0: + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.4.1 + dev: true + + /@vitest/runner@1.6.0: + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true + + /@vitest/snapshot@1.6.0: + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + dependencies: + magic-string: 0.30.10 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@1.6.0: + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + dependencies: + tinyspy: 2.2.1 + dev: true + + /@vitest/utils@1.6.0: + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + + /abi-wan-kanabi@2.2.2: + resolution: {integrity: sha512-sTCv2HyNIj1x2WFUoc9oL8ZT9liosrL+GoqEGZJK1kDND096CfA7lwx06vLxLWMocQ41FQXO3oliwoh/UZHYdQ==} + hasBin: true + dependencies: + ansicolors: 0.3.2 + cardinal: 2.1.1 + fs-extra: 10.1.0 + yargs: 17.7.2 + dev: false + + /abitype@0.9.8(typescript@5.5.2): + resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + dependencies: + typescript: 5.5.2 + dev: false + + /abitype@1.0.0(typescript@5.5.2)(zod@3.23.8): + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + dependencies: + typescript: 5.5.2 + zod: 3.23.8 + dev: false + + /acorn-jsx@5.3.2(acorn@8.12.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.12.0 + dev: true + + /acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + dependencies: + acorn: 8.12.0 + dev: true + + /acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /alge@0.8.1: + resolution: {integrity: sha512-kiV9nTt+XIauAXsowVygDxMZLplZxDWt0W8plE/nB32/V2ziM/P/TxDbSVK7FYIUt2Xo16h3/htDh199LNPCKQ==} + dependencies: + lodash.ismatch: 4.4.0 + remeda: 1.61.0 + ts-toolbelt: 9.6.0 + zod: 3.23.8 + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + + /ansicolors@0.3.2: + resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + dev: false + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true + + /autoprefixer@10.4.19(postcss@8.4.38): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.1 + caniuse-lite: 1.0.30001636 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + dev: false + + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.24.7 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + dev: false + + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: false + + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: false + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: false + + /browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: false + + /browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001636 + electron-to-chromium: 1.4.808 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.1) + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false + + /caniuse-lite@1.0.30001636: + resolution: {integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==} + + /cardinal@2.1.1: + resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} + hasBin: true + dependencies: + ansicolors: 0.3.2 + redeyed: 2.1.1 + dev: false + + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + dev: true + + /cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: false + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: false + + /complex.js@2.1.1: + resolution: {integrity: sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: false + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: false + + /deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.24.7 + csstype: 3.1.3 + dev: false + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + /dprint@0.45.1: + resolution: {integrity: sha512-OYefcDgxd6jSdig/Cfkw1vdvyiOIRruCPnqGBbXpc95buDt9kvwL+Lic1OHc+SaQSsQub0BUZMd5+TNgy8Sh3A==} + hasBin: true + requiresBuild: true + optionalDependencies: + '@dprint/darwin-arm64': 0.45.1 + '@dprint/darwin-x64': 0.45.1 + '@dprint/linux-arm64-glibc': 0.45.1 + '@dprint/linux-arm64-musl': 0.45.1 + '@dprint/linux-x64-glibc': 0.45.1 + '@dprint/linux-x64-musl': 0.45.1 + '@dprint/win32-x64': 0.45.1 + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.9.1 + dev: true + + /electron-to-chromium@1.4.808: + resolution: {integrity: sha512-0ItWyhPYnww2VOuCGF4s1LTfbrdAV2ajy/TN+ZTuhR23AHI6rWHCrBXJ/uxoXOvRRqw8qjYVrG81HFI7x/2wdQ==} + + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + dependencies: + iconv-lite: 0.6.3 + dev: false + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: false + + /esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + /escape-latex@1.2.0: + resolution: {integrity: sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==} + dev: false + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-plugin-react-refresh@0.4.7(eslint@8.57.0): + resolution: {integrity: sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==} + peerDependencies: + eslint: '>=7' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.5 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + + /fetch-cookie@3.0.1: + resolution: {integrity: sha512-ZGXe8Y5Z/1FWqQ9q/CrJhkUD73DyBU9VF0hBQmEO/wPHe4A9PKTjplFDLeFX8aOsYypZUcX5Ji/eByn3VCVO3Q==} + dependencies: + set-cookie-parser: 2.6.0 + tough-cookie: 4.1.4 + dev: false + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true + + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true + + /foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: false + + /fraction.js@4.3.4: + resolution: {integrity: sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==} + dev: false + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: false + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: false + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: false + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-starknet-core@3.3.0(starknet@6.10.0): + resolution: {integrity: sha512-TG17zIBdjHIyO0CTjkB7lkuvo24OHLrkB/rZSEdspEAcwcysMpZOVgwrNPIzD89kU8gZ3m1UANarFNPVLULS5Q==} + peerDependencies: + starknet: ^5.18.0 + dependencies: + '@module-federation/runtime': 0.1.21 + starknet: 6.10.0 + dev: false + + /get-starknet-core@4.0.0-next.5: + resolution: {integrity: sha512-zZ3i4E5UYF1f04fgkwfaVC0uj1pvdBlzsDqXEAfb4jc1WO4zM7rIm4XAUqdMwVSr4CBend5RM7U+zv166fBNYg==} + dependencies: + starknet-types: 0.7.2 + dev: false + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob@10.4.2: + resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true + dependencies: + foreground-child: 3.2.1 + jackspeak: 3.4.0 + minimatch: 9.0.4 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + dev: false + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /graphql-request@7.0.1(graphql@16.9.0): + resolution: {integrity: sha512-hfGBZF6o6lC3C0th+aTMOFP6p8Ev+ydXn4PUlT8rvqPDUFCbaynXszjBCyu0saZIP3VGbJ67GpxW8UGK+tphSw==} + hasBin: true + peerDependencies: + graphql: 14 - 16 + dependencies: + '@dprint/formatter': 0.3.0 + '@dprint/typescript': 0.90.5 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@molt/command': 0.9.0 + dprint: 0.45.1 + graphql: 16.9.0 + zod: 3.23.8 + dev: false + + /graphql-tag@2.12.6(graphql@16.9.0): + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.9.0 + tslib: 2.6.3 + + /graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: false + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: false + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + + /idb-keyval@6.2.1: + resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + dev: false + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /immer@10.1.1: + resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} + dev: false + + /immutable@4.3.6: + resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: false + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: false + + /is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: false + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isomorphic-fetch@3.0.0: + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + dependencies: + node-fetch: 2.7.0 + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - encoding + dev: false + + /isomorphic-ws@5.0.0(ws@8.13.0): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.13.0 + dev: false + + /isows@1.0.3(ws@8.13.0): + resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.13.0 + dev: false + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@5.0.4: + resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} + engines: {node: '>=10'} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.5 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /jackspeak@3.4.0: + resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + + /jake@10.9.1: + resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + + /javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + dev: false + + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + dev: false + + /js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + dev: false + + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: false + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: false + + /lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + dev: false + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: false + + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.7.1 + pkg-types: 1.1.1 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: false + + /lodash.ismatch@4.4.0: + resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} + dev: false + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /lossless-json@4.0.1: + resolution: {integrity: sha512-l0L+ppmgPDnb+JGxNLndPtJZGNf6+ZmVaQzoxQm3u6TXmhdnsA+YtdVR8DjzZd/em58686CQhOFDPewfJ4l7MA==} + dev: false + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} + dev: false + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + dependencies: + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + source-map-js: 1.2.0 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.2 + dev: true + + /material-colors@1.2.6: + resolution: {integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==} + dev: false + + /mathjs@12.4.3: + resolution: {integrity: sha512-oHdGPDbp7gO873xxG90RLq36IuicuKvbpr/bBG5g9c8Obm/VsKVrK9uoRZZHUodohzlnmCEqfDzbR3LH6m+aAQ==} + engines: {node: '>= 18'} + hasBin: true + dependencies: + '@babel/runtime': 7.24.7 + complex.js: 2.1.1 + decimal.js: 10.4.3 + escape-latex: 1.2.0 + fraction.js: 4.3.4 + javascript-natural-sort: 0.7.1 + seedrandom: 3.0.5 + tiny-emitter: 2.1.0 + typed-function: 4.2.1 + dev: false + + /memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /micro-starknet@0.2.3: + resolution: {integrity: sha512-6XBcC+GerlwJSR4iA0VaeXtS2wrayWFcA4PEzrJPMuFmWCaUtuGIq5K/DB5F/XgnL54/zl2Bxo690Lj7mYVA8A==} + dependencies: + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.3 + dev: false + + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + dependencies: + acorn: 8.12.0 + pathe: 1.1.2 + pkg-types: 1.1.1 + ufo: 1.5.3 + dev: true + + /mobx@6.12.4: + resolution: {integrity: sha512-uIymg89x+HmItX1p3MG+d09irn2k63J6biftZ5Ok+UpNojS1I3NJPLfcmJT9ANnUltNlHi+HQqrVyxiAN8ISYg==} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: false + + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + dev: false + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: false + + /pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + dev: false + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: false + + /parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: false + + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.2.2 + minipass: 7.1.2 + dev: false + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: false + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: false + + /pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + dev: true + + /pngjs3@6.1.1: + resolution: {integrity: sha512-Gb4GDUVTw34+Ui5fEC9qlVFfM1xUdslCuNhKvcT+XxSwUoehc8PRANGdUS090sUrflmP3kFWBmtqaSP2CNaPkw==} + engines: {node: '>=18.0.0'} + dependencies: + browserify-zlib: 0.2.0 + immer: 10.1.1 + dev: false + + /postcss-import@15.1.0(postcss@8.4.38): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: false + + /postcss-js@4.0.1(postcss@8.4.38): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.38 + dev: false + + /postcss-load-config@4.0.2(postcss@8.4.38): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.1.2 + postcss: 8.4.38 + yaml: 2.4.5 + dev: false + + /postcss-nested@6.0.1(postcss@8.4.38): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + dev: false + + /postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false + + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + dev: true + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + + /proxy-deep@3.1.1: + resolution: {integrity: sha512-kppbvLUNJ4IOMZds9/4gz/rtT5OFiesy3XosLsgMKlF3vb6GA5Y3ptyDlzKLcOcUBW+zaY+RiMINTsgE+O6e+Q==} + dev: false + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: false + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /react-color@2.19.3(react@18.3.1): + resolution: {integrity: sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==} + peerDependencies: + react: '*' + dependencies: + '@icons/material': 0.2.4(react@18.3.1) + lodash: 4.17.21 + lodash-es: 4.17.21 + material-colors: 1.2.6 + prop-types: 15.8.1 + react: 18.3.1 + reactcss: 1.2.3(react@18.3.1) + tinycolor2: 1.6.0 + dev: false + + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + dev: false + + /react-icons@5.2.1(react@18.3.1): + resolution: {integrity: sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==} + peerDependencies: + react: '*' + dependencies: + react: 18.3.1 + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + dev: true + + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + dev: true + + /react-router-dom@6.23.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.16.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.23.1(react@18.3.1) + dev: false + + /react-router@6.23.1(react@18.3.1): + resolution: {integrity: sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.16.1 + react: 18.3.1 + dev: false + + /react-select@5.8.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.24.7 + '@emotion/cache': 11.11.0 + '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) + '@floating-ui/dom': 1.6.5 + '@types/react-transition-group': 4.4.10 + memoize-one: 6.0.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - supports-color + dev: false + + /react-transition-group@4.4.5(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.24.7 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /reactcss@1.2.3(react@18.3.1): + resolution: {integrity: sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==} + peerDependencies: + react: '*' + dependencies: + lodash: 4.17.21 + react: 18.3.1 + dev: false + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: false + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: false + + /readline-sync@1.4.10: + resolution: {integrity: sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==} + engines: {node: '>= 0.8.0'} + dev: false + + /redeyed@2.1.1: + resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} + dependencies: + esprima: 4.0.1 + dev: false + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false + + /remeda@1.61.0: + resolution: {integrity: sha512-caKfSz9rDeSKBQQnlJnVW3mbVdFgxgGWQKq1XlFokqjf+hQD5gxutLGTTY2A/x24UxVyJe9gH5fAkFI63ULw4A==} + dev: false + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: false + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: false + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.14.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /rxjs@7.5.5: + resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + dependencies: + tslib: 2.6.3 + dev: false + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: false + + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + dev: false + + /seedrandom@3.0.5: + resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false + + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /starknet-types@0.7.2: + resolution: {integrity: sha512-r3JJ0rrK0g3FnVRGcFiLY+9YT5WZgxB4TKBfR44wYGevHtKEM6BM5B+Gn1eou1zV7xEAwz3GpmvLSQTUAzDhsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dev: false + + /starknet@6.10.0: + resolution: {integrity: sha512-Zlo39V37dytBcqHlWpyLkEH4lXGRMaH7ST4yDGSGxkgxlJ11xW7P7abpWnB87Qn9SdgEzUEDLyM3TeBVTsdtYA==} + dependencies: + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.7 + '@scure/starknet': 1.0.0 + abi-wan-kanabi: 2.2.2 + fetch-cookie: 3.0.1 + get-starknet-core: 4.0.0-next.5 + isomorphic-fetch: 3.0.0 + lossless-json: 4.0.1 + pako: 2.1.0 + starknet-types-07: /@starknet-io/types-js@0.7.7 + ts-mixer: 6.0.4 + url-join: 4.0.1 + transitivePeerDependencies: + - encoding + dev: false + + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true + + /string-length@6.0.0: + resolution: {integrity: sha512-1U361pxZHEQ+FeSjzqRpV+cu2vTzYeWeafXFLykiFlv4Vc0n3njgU8HrMbyik5uwm77naWMuVG8fhEF+Ovb1Kg==} + engines: {node: '>=16'} + dependencies: + strip-ansi: 7.1.0 + dev: false + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + dependencies: + js-tokens: 9.0.0 + dev: true + + /stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + dev: false + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.2 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: false + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: false + + /tailwindcss-animate@1.0.7(tailwindcss@3.4.4): + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + tailwindcss: 3.4.4 + dev: false + + /tailwindcss@3.4.4: + resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.1.0 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + dev: false + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: false + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: false + + /tiny-emitter@2.1.0: + resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} + dev: false + + /tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + dev: true + + /tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + dev: false + + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: false + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /ts-api-utils@1.3.0(typescript@5.5.2): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.5.2 + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: false + + /ts-mixer@6.0.4: + resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} + dev: false + + /ts-toolbelt@9.6.0: + resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} + dev: false + + /tsafe@1.7.2: + resolution: {integrity: sha512-dAPfQLhCfCRre5qs+Z5Q2a7s2CV7RxffZUmvj7puGaePYjECzWREJFd3w4XSFe/T5tbxgowfItA/JSSZ6Ma3dA==} + dev: true + + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: false + + /type-fest@4.20.1: + resolution: {integrity: sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==} + engines: {node: '>=16'} + dev: false + + /typed-function@4.2.1: + resolution: {integrity: sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==} + engines: {node: '>= 18'} + dev: false + + /typescript@5.5.2: + resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} + engines: {node: '>=14.17'} + hasBin: true + + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: false + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: false + + /update-browserslist-db@1.0.16(browserslist@4.23.1): + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.1 + escalade: 3.1.2 + picocolors: 1.0.1 + + /upng-js@2.1.0: + resolution: {integrity: sha512-d3xzZzpMP64YkjP5pr8gNyvBt7dLk/uGI67EctzDuVp4lCZyVMo0aJO6l/VDlgbInJYDY6cnClLoBp29eKWI6g==} + dependencies: + pako: 1.0.11 + dev: false + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + dev: false + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: false + + /use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /use-sync-external-store@1.2.0(react@18.3.1): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.3.1 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: true + + /viem@1.14.0(typescript@5.5.2): + resolution: {integrity: sha512-4d+4/H3lnbkSAbrpQ15i1nBA7hne06joLFy3L3m0ZpMc+g+Zr3D4nuSTyeiqbHAYs9m2P9Kjap0HlyGkehasgg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + 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 + '@types/ws': 8.5.10 + abitype: 0.9.8(typescript@5.5.2) + isomorphic-ws: 5.0.0(ws@8.13.0) + typescript: 5.5.2 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + dev: false + + /viem@2.9.20(typescript@5.5.2)(zod@3.23.8): + resolution: {integrity: sha512-PHb1MrBHMrSZ8Ayuk3Y/6wUTcMbzlACQaM6AJBSv9kRKX3xYSZ/kehi+gvS0swQJeAlTQ4eZM7jsHQJNAOarmg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.5.2)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0) + typescript: 5.5.2 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + dev: false + + /vite-envs@4.3.2: + resolution: {integrity: sha512-rDp4PI+mHS1uoyb5frpXCluWNAma7PiZmjxxCdTKeeAW4BX5Wa1WW4Oy+dd9LeCZRAxmb5mrfiVUWBJrhGah2Q==} + hasBin: true + dependencies: + cheerio: 1.0.0-rc.12 + dotenv: 16.4.5 + ejs: 3.1.10 + magic-string: 0.30.10 + tsafe: 1.7.2 + dev: true + + /vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.5 + pathe: 1.1.2 + picocolors: 1.0.1 + vite: 5.3.1 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-plugin-graphql-loader@3.0.1: + resolution: {integrity: sha512-srY4oik0ObdRsOcUXhfqukx3tqWRj5lDrQN6LU4NdHrujcRcwxp60qEW2Lcc+pprcRJm66YVEFVmJ4/UiXkYvw==} + dependencies: + graphql: 16.9.0 + graphql-tag: 2.12.6(graphql@16.9.0) + dev: true + + /vite-plugin-top-level-await@1.4.1(vite@5.3.1): + resolution: {integrity: sha512-hogbZ6yT7+AqBaV6lK9JRNvJDn4/IJvHLu6ET06arNfo0t2IsyCaon7el9Xa8OumH+ESuq//SDf8xscZFE0rWw==} + peerDependencies: + vite: '>=2.8' + dependencies: + '@rollup/plugin-virtual': 3.0.2 + '@swc/core': 1.6.3 + uuid: 9.0.1 + vite: 5.3.1 + transitivePeerDependencies: + - '@swc/helpers' + - rollup + dev: true + + /vite-plugin-wasm@3.3.0(vite@5.3.1): + resolution: {integrity: sha512-tVhz6w+W9MVsOCHzxo6SSMSswCeIw4HTrXEi6qL3IRzATl83jl09JVO1djBqPSwfjgnpVHNLYcaMbaDX5WB/pg==} + peerDependencies: + vite: ^2 || ^3 || ^4 || ^5 + dependencies: + vite: 5.3.1 + dev: true + + /vite@5.3.1: + resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.21.5 + postcss: 8.4.38 + rollup: 4.18.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.3 + chai: 4.4.1 + debug: 4.3.5 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.10 + pathe: 1.1.2 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.3.1 + vite-node: 1.6.0 + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: false + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + + /yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + engines: {node: '>= 14'} + hasBin: true + dev: false + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: false + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: false + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + dev: false + + /zustand@4.5.2(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1): + resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + dependencies: + '@types/react': 18.3.3 + immer: 10.1.1 + react: 18.3.1 + use-sync-external-store: 1.2.0(react@18.3.1) + dev: false diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 44e333e..c082caf 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -4,14 +4,6 @@ type ImportMetaEnv = { // Auto-generated by `npx vite-envs update-types` and hot-reloaded by the `vite-env` plugin // You probably want to add `/src/vite-env.d.ts` to your .prettierignore - VITE_RPC_URL: string - VITE_TORII_URL: string - VITE_RELAY_URL: string - VITE_MASTER_ADDRESS: string - VITE_MASTER_PRIVATE_KEY: string - VITE_WORLD_ADDRESS: string - VITE_ACCOUNT_CLASS_HASH: string - VITE_FEETOKEN_ADDRESS: string BASE_URL: string MODE: string DEV: boolean From f939f3b388f31c5e2b1c42d39bc64c44daf33977 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Fri, 21 Jun 2024 19:46:48 +0100 Subject: [PATCH 03/71] chore: update color picker --- src/App.module.css | 33 ++++++++- src/App.tsx | 8 +- .../ColorPicker/SimpleColorPicker.module.css | 73 ++++++++++++++----- .../ColorPicker/SimpleColorPicker.tsx | 25 ++++--- 4 files changed, 105 insertions(+), 34 deletions(-) diff --git a/src/App.module.css b/src/App.module.css index b803873..90d54d9 100644 --- a/src/App.module.css +++ b/src/App.module.css @@ -49,6 +49,27 @@ body { z-index: 10; /* Ensure it is on top */ } +.buttonContainer { + display: flex; + justify-content: center; /* Center the buttons horizontally */ + gap: 10rem; /* Space between the buttons */ + position: fixed; + bottom: 1rem; + left: 50%; + transform: translateX(-50%); + } + + .placePixelButton, .governPixelsButton { + padding: 0.5rem 1rem; + background-color: #ffffff; + border: 1px solid #000000; + color: #000000; + border-radius: 4px; + cursor: pointer; + z-index: 100; /* Ensure it's above other elements */ + } + + .apps { position: absolute; top: calc(50px + 1rem); @@ -61,11 +82,15 @@ body { height: calc(100vh - 50px - 2rem); } +.blur-background { + filter: blur(5px); + } + .container { - background-color: darkblue; /* Replace with the actual color value */ - min-height: 100vh; /* Equivalent to min-h-screen */ - display: flex; - flex-direction: column; /* Equivalent to flex-col */ + background-color: var(--bg-primary); /* Replace with the actual color value if different */ + min-height: 100vh; /* Equivalent to min-h-screen */ + display: flex; + flex-direction: column; /* Equivalent to flex-col */ } .errorContainer { diff --git a/src/App.tsx b/src/App.tsx index e08229c..f9129e1 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -122,7 +122,8 @@ function App() { document.title = "PixeLAW: World"; return ( -
+ //
+
@@ -143,14 +144,15 @@ function App() { onCellHover={onCellHover} />
+ {/*
*/}
-
+ {/*
-
+
*/} }/> } /> diff --git a/src/components/ColorPicker/SimpleColorPicker.module.css b/src/components/ColorPicker/SimpleColorPicker.module.css index 89d5d65..ca3612e 100644 --- a/src/components/ColorPicker/SimpleColorPicker.module.css +++ b/src/components/ColorPicker/SimpleColorPicker.module.css @@ -1,4 +1,3 @@ - .inner { background-color: white; padding: 0.5rem; /* Adjusted padding */ @@ -8,25 +7,65 @@ flex-wrap: wrap; /* Allow wrapping of buttons */ justify-content: center; /* Center buttons horizontally */ gap: 0.5rem; /* Gap between buttons */ -} - -.button { + } + + .button { width: calc(2rem + 1vw); height: calc(2rem + 1vw); border-radius: 0.5rem; /* More rounded corners */ transition: transform 0.2s, box-shadow 0.2s; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Light shadow for buttons */ border: 2px solid transparent; /* Default border */ -} - -.button-white { - border: 2px solid #000000; /* Black border for white button */ -} - -.button-selected { - outline: 2px solid cyan; -} - -.button-unselected { - outline: none; -} \ No newline at end of file + position: relative; /* Position for number */ + display: flex; + align-items: center; + justify-content: center; + } + + .button-white { + border: 2px solid #000000 !important; /* Black border for white button */ + } + + .button:hover { + transform: scale(1.1); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); + } + + .button.selected { + transform: scale(1.1); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); + border: 2px solid #00BFFF; /* Light blue border to indicate selection */ + } + + .number { + position: absolute; + top: -0.3rem; /* Adjust as necessary */ + left: -0.3rem; /* Adjust as necessary */ + background-color: white; + color: black; + font-weight: bold; + font-size: 0.75rem; /* Small font size */ + width: 1rem; /* Small square size */ + height: 1rem; /* Small square size */ + display: flex; + align-items: center; + justify-content: center; + border-radius: 0.25rem; /* Rounded corners */ + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); /* Light shadow */ + } + + .label { + position: absolute; + top: -0.3rem; /* Adjust as necessary */ + left: -0.3rem; /* Adjust as necessary */ + background-color: white; + color: black; + font-weight: bold; + font-size: 0.75rem; /* Small font size */ + padding: 0.1rem 0.2rem; /* Small label size */ + display: flex; + align-items: center; + justify-content: center; + border-radius: 0.25rem; /* Rounded corners */ + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); /* Light shadow */ + } \ No newline at end of file diff --git a/src/components/ColorPicker/SimpleColorPicker.tsx b/src/components/ColorPicker/SimpleColorPicker.tsx index 19d88c9..d700a68 100644 --- a/src/components/ColorPicker/SimpleColorPicker.tsx +++ b/src/components/ColorPicker/SimpleColorPicker.tsx @@ -19,19 +19,24 @@ export interface ColorPickerProps { const SimpleColorPicker: React.FC = ({onColorSelect, color: selectedColor}) => { selectedColor = `#${selectedColor}` + return (
- {colors.map((color, index) => ( - - ))} + {colors.map((color, index) => ( + + ))}
- ); + ); }; export default SimpleColorPicker; From fd134b2f5f5a749e55df2437e8f07afb91db0198 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Fri, 21 Jun 2024 20:05:07 +0100 Subject: [PATCH 04/71] chore: update color picker --- src/App.tsx | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index f9129e1..78c8993 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,5 @@ import styles from './App.module.css'; -import React, {useEffect, useMemo} from "react"; +import React, {useEffect, useMemo, useState, useRef} from "react"; import {Bounds, Coordinate} from "@/webtools/types.ts"; import {useSimpleTileStore} from "@/webtools/hooks/SimpleTileStore.ts"; import {useDojoPixelStore} from "@/stores/DojoPixelStore.ts"; @@ -44,6 +44,10 @@ function App() { setClickedCell } = useViewStateStore(); + // FIXME: should be in the ViewStateStore?? + const [isColorPickerVisible, setIsColorPickerVisible] = useState(false); + const colorPickerRef = useRef(null); + useDojoInteractHandler(pixelStore, gameData!); useSyncedViewStateStore(); // @@ -77,6 +81,26 @@ function App() { setColor(color) } + function toggleColorPicker() { + setIsColorPickerVisible(prevState => !prevState); + } + + useEffect(() => { + function handleClickOutside(event: MouseEvent) { + if (colorPickerRef.current && !colorPickerRef.current.contains(event.target as Node)) { + setIsColorPickerVisible(false); + } + } + if (isColorPickerVisible) { + document.addEventListener("mousedown", handleClickOutside); + } else { + document.removeEventListener("mousedown", handleClickOutside); + } + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [isColorPickerVisible]); + // // @@ -143,11 +167,17 @@ function App() { onCellClick={onCellClick} onCellHover={onCellHover} /> -
- {/*
*/} + {/*
*/} +
+
+ +
+ {/*
Date: Fri, 21 Jun 2024 20:27:22 +0100 Subject: [PATCH 05/71] bug: shows dirrent colors --- src/webtools/components/Viewport/drawPixels.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/webtools/components/Viewport/drawPixels.ts b/src/webtools/components/Viewport/drawPixels.ts index 40b995e..03835ed 100644 --- a/src/webtools/components/Viewport/drawPixels.ts +++ b/src/webtools/components/Viewport/drawPixels.ts @@ -32,6 +32,7 @@ export function drawPixels( const pixel = getPixel(worldCoords); if (!pixel) return; + // FIXME: Shows a different color from original web_client. context.fillStyle = numRGBAToHex(pixel.color); const [x, y, w, h] = getRect(offsets, cellX, cellY, cellSize, doBorder, sizeAdjustment) From 2c65affea5302d4ccc515110af12bc143be662ea Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Fri, 21 Jun 2024 20:47:55 +0100 Subject: [PATCH 06/71] feat: can paint with p_war.interact --- src/App.tsx | 6 ++++-- src/stores/ViewStateStore.ts | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 78c8993..f1288ea 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -41,7 +41,9 @@ function App() { zoom, setZoom, setHoveredCell, - setClickedCell + setClickedCell, + selectedApp, // added + setSelectedApp, // added } = useViewStateStore(); // FIXME: should be in the ViewStateStore?? @@ -173,7 +175,7 @@ function App() {
-
diff --git a/src/stores/ViewStateStore.ts b/src/stores/ViewStateStore.ts index 87c6a68..c7fb351 100644 --- a/src/stores/ViewStateStore.ts +++ b/src/stores/ViewStateStore.ts @@ -3,9 +3,11 @@ import {create} from 'zustand'; import {useLocation} from 'react-router-dom'; import {Coordinate} from "@/webtools/types.ts"; -const ZOOM_PRESETS = {tile: 100, pixel: 2800} +// const ZOOM_PRESETS = {tile: 100, pixel: 2800} +const ZOOM_PRESETS = {tile: 100, pixel: 3400} // for p/war we cannot see anything with 2800(FIXME) const DEFAULT_ZOOM = ZOOM_PRESETS.pixel -const DEFAULT_CENTER: Coordinate = [4294967194, 0] +// const DEFAULT_CENTER: Coordinate = [4294967194, 0] +const DEFAULT_CENTER: Coordinate = [30, 30] // for p/war interface AppState { selectedApp: string; From d7bedd549c74febd64a5d0399df1ec2cb965cd02 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Fri, 21 Jun 2024 22:18:59 +0100 Subject: [PATCH 07/71] feat: add a close button for a color palette --- src/App.module.css | 18 +++++++++++++++++- src/App.tsx | 43 +++++++++++++++++++++++++------------------ 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/src/App.module.css b/src/App.module.css index 90d54d9..f4b146e 100644 --- a/src/App.module.css +++ b/src/App.module.css @@ -47,6 +47,7 @@ body { justify-content: center; background-color: transparent; /* Background for entire container is transparent */ z-index: 10; /* Ensure it is on top */ + padding-bottom: 1rem; /* Added for spacing */ } .buttonContainer { @@ -57,7 +58,22 @@ body { bottom: 1rem; left: 50%; transform: translateX(-50%); - } +} + +.closeButton { + background-color: white; /* Example background color */ + color: black; + border: none; + padding: 0.5rem 1.2rem; + cursor: pointer; + margin-left: 1rem; /* Add some space between color picker and button */ + /* border-radius: 4px; */ +} + +.closeButton:hover { + transform: scale(1.05); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); +} .placePixelButton, .governPixelsButton { padding: 0.5rem 1rem; diff --git a/src/App.tsx b/src/App.tsx index f1288ea..62f5079 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -19,6 +19,8 @@ import {useSettingsStore} from "@/stores/SettingsStore.ts"; import Governance from "@/pages/Governance.js"; import NewProposal from "@/pages/NewProposal.js"; import ProposalDetails from "@/pages/ProposalDetails.js"; +import { RiArrowGoBackFill } from "react-icons/ri"; + function App() { // @@ -48,7 +50,7 @@ function App() { // FIXME: should be in the ViewStateStore?? const [isColorPickerVisible, setIsColorPickerVisible] = useState(false); - const colorPickerRef = useRef(null); + // const colorPickerRef = useRef(null); useDojoInteractHandler(pixelStore, gameData!); useSyncedViewStateStore(); @@ -87,21 +89,21 @@ function App() { setIsColorPickerVisible(prevState => !prevState); } - useEffect(() => { - function handleClickOutside(event: MouseEvent) { - if (colorPickerRef.current && !colorPickerRef.current.contains(event.target as Node)) { - setIsColorPickerVisible(false); - } - } - if (isColorPickerVisible) { - document.addEventListener("mousedown", handleClickOutside); - } else { - document.removeEventListener("mousedown", handleClickOutside); - } - return () => { - document.removeEventListener("mousedown", handleClickOutside); - }; - }, [isColorPickerVisible]); + // useEffect(() => { + // function handleClickOutside(event: MouseEvent) { + // if (colorPickerRef.current && !colorPickerRef.current.contains(event.target as Node)) { + // setIsColorPickerVisible(false); + // } + // } + // if (isColorPickerVisible) { + // document.addEventListener("mousedown", handleClickOutside); + // } else { + // document.removeEventListener("mousedown", handleClickOutside); + // } + // return () => { + // document.removeEventListener("mousedown", handleClickOutside); + // }; + // }, [isColorPickerVisible]); // @@ -170,16 +172,21 @@ function App() { onCellHover={onCellHover} /> {/*
*/} -
+
+
-
+ + {/*
Date: Mon, 24 Jun 2024 15:09:21 +0100 Subject: [PATCH 08/71] fix: adjust client sides for new contracts --- src/dojo/createSystemCalls.ts | 7 ++++--- src/dojo/generated.ts | 6 ++---- src/pages/NewProposal.tsx | 25 +++++++++++++------------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/dojo/createSystemCalls.ts b/src/dojo/createSystemCalls.ts index 54bae78..1ed12e3 100644 --- a/src/dojo/createSystemCalls.ts +++ b/src/dojo/createSystemCalls.ts @@ -88,13 +88,14 @@ export function createSystemCalls( } }; - const createProposal = async (account: AccountInterface, gameId: number, proposalType: ProposalType, args: ProposalArgs) => { - if (proposalType === ProposalType.Unknown) throw new Error('Unknown proposal type supplied') + const createProposal = async (account: AccountInterface, gameId: number, proposalType: number, target_color: number) => { + // if (proposalType === ProposalType.Unknown) throw new Error('Unknown proposal type supplied') + console.log("HEREEREREER"); const { transaction_hash } = await client.actions.createProposal({ account, gameId, proposalType, - args + target_color, }); await account.waitForTransaction(transaction_hash, { diff --git a/src/dojo/generated.ts b/src/dojo/generated.ts index e75cc81..461509d 100644 --- a/src/dojo/generated.ts +++ b/src/dojo/generated.ts @@ -53,7 +53,7 @@ export async function setupWorld(provider: DojoProvider) { } const createProposal = async ( - { account, gameId, proposalType, args }: { account: AccountInterface, gameId: number, proposalType: ProposalType, args: ProposalArgs } + { account, gameId, proposalType, target_color }: { account: AccountInterface, gameId: number, proposalType: number, target_color: number } ) => { try { return await provider.execute( @@ -64,9 +64,7 @@ export async function setupWorld(provider: DojoProvider) { calldata: [ gameId, proposalType, - args.address, - args.arg1, - args.arg2 + target_color ] }, { diff --git a/src/pages/NewProposal.tsx b/src/pages/NewProposal.tsx index 05511f3..994b69c 100644 --- a/src/pages/NewProposal.tsx +++ b/src/pages/NewProposal.tsx @@ -10,7 +10,7 @@ import {hexRGBtoNumber} from "@/global/utils.ts"; const NewProposal: React.FC = () => { const [proposalType, setProposalType] = useState('Add Color'); const [color, setColor] = useState('#FFFFFF'); - const [disasterColor, setDisasterColor] = useState('#FFFFFF'); + // const [disasterColor, setDisasterColor] = useState('#FFFFFF'); const [comments, setComments] = useState(''); const [showColorPicker, setShowColorPicker] = useState(false); const colorPickerRef = useRef(null); @@ -20,9 +20,9 @@ const NewProposal: React.FC = () => { setColor(color.hex); }; - const handleDisasterColorChange = (selectedOption: any) => { - setDisasterColor(selectedOption.value); - }; + // const handleDisasterColorChange = (selectedOption: any) => { + // setDisasterColor(selectedOption.value); + // }; const handleClickOutside = (event: MouseEvent) => { if (colorPickerRef.current && !colorPickerRef.current.contains(event.target as Node)) { @@ -43,23 +43,24 @@ const NewProposal: React.FC = () => { const proposalData = { proposalType, color: hexRGBtoNumber(color.replace('#', '')), - disasterColor, + // disasterColor, comments, }; console.log(proposalData); const type = proposalType === 'Add Color' ? ProposalType.AddNewColor : ProposalType.MakeADisasterByColor; - const colorArg = type === ProposalType.AddNewColor ? color : disasterColor + // const colorArg = type === ProposalType.AddNewColor ? color : disasterColor if (gameData && gameData.account.account) { gameData.setup.systemCalls.createProposal( gameData.account.account, GAME_ID, type, - { - address: ZERO_ADDRESS, - arg1: hexRGBtoNumber(colorArg.replace('#', '')), - arg2: 0 - } + hexRGBtoNumber(color.replace('#', '')), + // { + // address: ZERO_ADDRESS, + // arg1: hexRGBtoNumber(colorArg.replace('#', '')), + // arg2: 0 + // } ).then(() => navigate('/governance')) } }; @@ -172,7 +173,7 @@ const NewProposal: React.FC = () => { option.value === disasterColor)} - onChange={handleColorChange} + value={colorOptionsFormatted.find(option => option.value === color)} + onChange={(color: { value: string} | null) => handleColorChange({ hex: color?.value ?? '' })} options={colorOptionsFormatted} styles={customStyles} className='w-full rounded-md bg-gray-700 text-white' From 357592d43fc04a11442e486aefcb3465bc68b214 Mon Sep 17 00:00:00 2001 From: mariz Date: Tue, 25 Jun 2024 00:52:40 +0800 Subject: [PATCH 13/71] fix: incorrect color being pushed --- src/global/utils.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/global/utils.ts b/src/global/utils.ts index 8f42917..7efbf0c 100644 --- a/src/global/utils.ts +++ b/src/global/utils.ts @@ -76,15 +76,15 @@ export const coordinateToPosition = (coord: Coordinate): Position => { return {x: coord[0], y: coord[1]} } -// export const hexRGBtoNumber = (color: string) => { -// return parseInt(`0x${color}00`, 16) -// } - -// Fixed here to remove the alpha channel. (which caused the color error.) export const hexRGBtoNumber = (color: string) => { - return parseInt(`0x00${color}`, 16) + return parseInt(`0x${color}00`, 16) } +// Fixed here to remove the alpha channel. (which caused the color error.) +// export const hexRGBtoNumber = (color: string) => { +// return parseInt(`0x00${color}`, 16) +// } + // Converts the numeric RGBA to a normal hex color // @dev this removes the Alpha channel. // TODO: Eventually convert to rgb(255 0 153 / 80%) From 713227bd22679839f2a4d7207215277a21822ade Mon Sep 17 00:00:00 2001 From: mariz Date: Tue, 25 Jun 2024 01:34:10 +0800 Subject: [PATCH 14/71] chore: make proposal time reactive --- src/components/ProposalList/ProposalItem.tsx | 149 ++++++++++++++++++ src/components/ProposalList/ProposalList.tsx | 153 +------------------ 2 files changed, 156 insertions(+), 146 deletions(-) create mode 100644 src/components/ProposalList/ProposalItem.tsx diff --git a/src/components/ProposalList/ProposalItem.tsx b/src/components/ProposalList/ProposalItem.tsx new file mode 100644 index 0000000..0d8699e --- /dev/null +++ b/src/components/ProposalList/ProposalItem.tsx @@ -0,0 +1,149 @@ +import { Entity } from "@dojoengine/recs"; +import React from "react"; +import {useComponentValue} from "@dojoengine/react"; +import {usePixelawProvider} from "@/providers/PixelawProvider.tsx"; +import {ProposalType} from "@/global/types.ts"; +import {numRGBAToHex} from "@/webtools/utils.ts"; +import {GAME_ID, NEEDED_YES_PX} from "@/global/constants.ts"; + +type PropsType = { + entityId: Entity, + onStartVote?: (proposal: any) => void, + filter?: 'All' | 'Active' | 'Closed' +} + + +const createProposalTitle = (proposalType: ProposalType, hexColor: string) => { + switch (proposalType) { + case ProposalType.AddNewColor: return `Adding A New Color: ${hexColor}` + case ProposalType.MakeADisasterByColor: return `Make a Disaster by Color: ${hexColor}` + default: { + console.error('unhandled proposal type: ', proposalType) + return '' + } + } + +} + +const getStatusColor = (status: string) => { + if (status.startsWith('ends in')) { + return 'bg-green-500'; + } else if (status === 'closed') { + return 'bg-purple-500'; + } else { + return 'bg-gray-500'; + } +}; + +const ProposalItem: React.FC = ({ entityId, onStartVote, filter }) => { + const { gameData } = usePixelawProvider(); + const proposal = useComponentValue(gameData!.setup.contractComponents.Proposal, entityId) + const [proposalStatus, setProposalStatus] = React.useState('') + + React.useEffect(() => { + if (proposalStatus === 'closed') return + + // Function to update the seconds state every second + const interval = setInterval(() => { + const current = Math.floor(Date.now() / 1_000) + const start = Number(proposal?.start ?? 0) + const end = Number(proposal?.end ?? 0) + if (current < start) { + setProposalStatus(`starts in ${start - current}s`) + } else if (current > start && current < end) { + setProposalStatus(`ends in ${end - current}s`) + } else { + setProposalStatus('closed') + } + }, 1000); + + // Cleanup function to clear the interval when the component unmounts or when dependencies change + return () => clearInterval(interval); + }, []); // Empty dependency array ensures this effect runs only once + + if (!proposal || (filter === 'Closed' && proposalStatus !== 'closed') || (filter === 'Active' && !proposalStatus.includes('ends in'))) return <> + + const hexColor = numRGBAToHex(proposal.target_color) + const title = createProposalTitle(proposal.proposal_type, hexColor) + const canActivateProposal = proposal.yes_px >= NEEDED_YES_PX + + const onStartVoteParam = { + id: proposal.index, + title, + proposer: proposal.author, + forPoints: proposal.yes_px, + againstPoints: proposal.no_px, + status: proposalStatus, + statusColor: getStatusColor(proposalStatus), + comments: "", + } + + const handleActivateProposal = () => { + if (!gameData?.account.account) return + gameData.setup.systemCalls.activateProposal( + gameData.account.account, + GAME_ID, + proposal.index, + ) + .then(() => console.log('activateProposal')) + .catch((e) => { + // toast error message + console.error(e) + }) + } + + + + return ( +
+
+
+
+ {title} + {hexColor && ( +
+ )} +
+
+ {proposalStatus} +
+
+
+ proposed by {proposal.author.toString()} +
+
+
+
+
+
+
+ For {proposal.yes_px} points +
+
+ Against {proposal.no_px} points +
+
+
+ +
+ ) +} + +export default ProposalItem \ No newline at end of file diff --git a/src/components/ProposalList/ProposalList.tsx b/src/components/ProposalList/ProposalList.tsx index 1cead5b..c198050 100644 --- a/src/components/ProposalList/ProposalList.tsx +++ b/src/components/ProposalList/ProposalList.tsx @@ -4,27 +4,14 @@ import FilterMenu from '../FilterMenu/FilterMenu'; import {Link} from 'react-router-dom'; import {usePixelawProvider} from "@/providers/PixelawProvider"; import {useEntityQuery} from "@dojoengine/react"; -import {getComponentValue, Has} from "@dojoengine/recs"; -import {ProposalType} from "@/global/types.ts"; -import {numRGBAToHex} from "@/webtools/utils.ts"; +import {Has} from "@dojoengine/recs"; import {GAME_ID} from "@/global/constants.ts"; +import ProposalItem from "@/components/ProposalList/ProposalItem.tsx"; interface ProposalListProps { headerHeight: number; } -const createProposalTitle = (proposalType: ProposalType, targetColor: number) => { - const hexColor = numRGBAToHex(targetColor) - switch (proposalType) { - case ProposalType.AddNewColor: return `Adding A New Color: ${hexColor}` - case ProposalType.MakeADisasterByColor: return `Make a Disaster by Color: ${hexColor}` - default: { - console.error('unhandled proposal type: ', proposalType) - return '' - } - } -} - const ProposalList: React.FC = ({ headerHeight }) => { const [filterOpen, setFilterOpen] = useState(false); const [statusFilter, setStatusFilter] = useState<'All' | 'Active' | 'Closed'>('All'); @@ -34,7 +21,7 @@ const ProposalList: React.FC = ({ headerHeight }) => { const [selectedProposal, setSelectedProposal] = useState(null); const [voteType, setVoteType] = useState<'for' | 'against'>('for'); - const [votePoints, setVotePoints] = useState(0); + const [votePoints, setVotePoints] = useState(0); useEffect(() => { const handleClickOutside = (event: MouseEvent) => { @@ -56,97 +43,21 @@ const ProposalList: React.FC = ({ headerHeight }) => { }; }, []); - const createProposalStatus = (start: number, end: number) => { - const current = Math.floor(Date.now() / 1_000) - if (current < start) { - return `starts in ${start - current}s` - } else if (current > start && current < end) { - return `ends in ${end - current}s` - } else { - return 'closed' - } - } - const { gameData } = usePixelawProvider(); - const proposalArray = useEntityQuery([Has(gameData!.setup.contractComponents.Proposal)]) - .map(entity => getComponentValue(gameData!.setup.contractComponents.Proposal, entity)) - .filter(value => !!value) - .map(value => { - const status = createProposalStatus(Number(value!.start), Number(value!.end)) - return { - id: value!.index, - title: createProposalTitle(value!.proposal_type, value!.target_color), - proposer: value!.author.toString(), - forPoints: value!.yes_px, - againstPoints: value!.no_px, - status, - statusColor: `bg-${status.includes('ends in') ? 'green' : 'purple'}-500`, - comments: "" - } - }) - ; - - const filteredProposals = proposalArray.filter(proposal => { - if (statusFilter !== 'All') { - if (statusFilter === 'Active' && !proposal.status.startsWith('ends in')) { - return false; - } - if (statusFilter === 'Closed' && proposal.status !== 'closed') { - return false; - } - } - if (searchTerm) { - return proposal.title.toLowerCase().includes(searchTerm.toLowerCase()) || - proposal.proposer.toLowerCase().includes(searchTerm.toLowerCase()); - } - return true; - }); - - const getStatusColor = (status: string) => { - if (status.startsWith('ends in')) { - return 'bg-green-500'; - } else if (status === 'closed') { - return 'bg-purple-500'; - } else { - return 'bg-gray-500'; - } - }; + const proposalArray = useEntityQuery([Has(gameData!.setup.contractComponents.Proposal)], { updateOnValueChange: true }) const handleVote = (proposal: any) => { setSelectedProposal(proposal); setVotePoints(0); }; - const handleActivateProposal = (proposal: any) => { - if (!gameData?.account.account) return - gameData.setup.systemCalls.activateProposal( - gameData.account.account, - GAME_ID, - proposal.id, - ) - .then(() => console.log('activateProposal')) - .catch((e) => { - // toast error message - console.error(e) - }) - } - const handleVoteProposal = () => { if (!gameData?.account.account) return - console.log( - { - arg1: gameData.account.account, - arg2: GAME_ID, - arg3: selectedProposal.id, - arg4: votePoints, - arg5: voteType === 'for' - } - ) gameData.setup.systemCalls.vote( gameData.account.account, GAME_ID, selectedProposal.id, - votePoints, + votePoints === '' ? 0 : votePoints, voteType === 'for' ) .then(() => setSelectedProposal(null)) @@ -214,58 +125,8 @@ const ProposalList: React.FC = ({ headerHeight }) => {
- {filteredProposals.map((proposal, index) => { - const hexColor = extractHexColor(proposal.title); - return ( -
-
-
-
- {proposal.title} - {hexColor && ( -
- )} -
-
- {proposal.status.startsWith('ends in') ? proposal.status : 'closed'} -
-
-
- proposed by {proposal.proposer} -
-
-
-
-
-
-
- For {proposal.forPoints} points -
-
- Against {proposal.againstPoints} points -
-
-
- -
- ); + {proposalArray.map((proposal) => { + return })}
From b99ca86e499f8f482ecfdf6ad192d133b1bf602a Mon Sep 17 00:00:00 2001 From: mariz Date: Tue, 25 Jun 2024 01:38:58 +0800 Subject: [PATCH 15/71] chore: add dependencies to useEffect --- src/components/ProposalList/ProposalItem.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/ProposalList/ProposalItem.tsx b/src/components/ProposalList/ProposalItem.tsx index 0d8699e..fb4e003 100644 --- a/src/components/ProposalList/ProposalItem.tsx +++ b/src/components/ProposalList/ProposalItem.tsx @@ -40,14 +40,17 @@ const ProposalItem: React.FC = ({ entityId, onStartVote, filter }) => const proposal = useComponentValue(gameData!.setup.contractComponents.Proposal, entityId) const [proposalStatus, setProposalStatus] = React.useState('') + const start = Number(proposal?.start ?? 0) + const end = Number(proposal?.end ?? 0) + React.useEffect(() => { + if (proposalStatus === 'closed') return // Function to update the seconds state every second const interval = setInterval(() => { const current = Math.floor(Date.now() / 1_000) - const start = Number(proposal?.start ?? 0) - const end = Number(proposal?.end ?? 0) + if (current < start) { setProposalStatus(`starts in ${start - current}s`) } else if (current > start && current < end) { @@ -59,7 +62,7 @@ const ProposalItem: React.FC = ({ entityId, onStartVote, filter }) => // Cleanup function to clear the interval when the component unmounts or when dependencies change return () => clearInterval(interval); - }, []); // Empty dependency array ensures this effect runs only once + }, [start, end, proposalStatus]); // Empty dependency array ensures this effect runs only once if (!proposal || (filter === 'Closed' && proposalStatus !== 'closed') || (filter === 'Active' && !proposalStatus.includes('ends in'))) return <> From 92a3ac16656b89a5ff25750f549c69b117344a28 Mon Sep 17 00:00:00 2001 From: mariz Date: Tue, 25 Jun 2024 01:48:21 +0800 Subject: [PATCH 16/71] fix: cannot filter by search term --- src/components/ProposalList/ProposalItem.tsx | 13 ++++++++++--- src/components/ProposalList/ProposalList.tsx | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/ProposalList/ProposalItem.tsx b/src/components/ProposalList/ProposalItem.tsx index fb4e003..f6f7aea 100644 --- a/src/components/ProposalList/ProposalItem.tsx +++ b/src/components/ProposalList/ProposalItem.tsx @@ -9,7 +9,8 @@ import {GAME_ID, NEEDED_YES_PX} from "@/global/constants.ts"; type PropsType = { entityId: Entity, onStartVote?: (proposal: any) => void, - filter?: 'All' | 'Active' | 'Closed' + filter?: 'All' | 'Active' | 'Closed', + searchTerm?: string } @@ -35,7 +36,7 @@ const getStatusColor = (status: string) => { } }; -const ProposalItem: React.FC = ({ entityId, onStartVote, filter }) => { +const ProposalItem: React.FC = ({ entityId, onStartVote, filter, searchTerm }) => { const { gameData } = usePixelawProvider(); const proposal = useComponentValue(gameData!.setup.contractComponents.Proposal, entityId) const [proposalStatus, setProposalStatus] = React.useState('') @@ -64,12 +65,18 @@ const ProposalItem: React.FC = ({ entityId, onStartVote, filter }) => return () => clearInterval(interval); }, [start, end, proposalStatus]); // Empty dependency array ensures this effect runs only once - if (!proposal || (filter === 'Closed' && proposalStatus !== 'closed') || (filter === 'Active' && !proposalStatus.includes('ends in'))) return <> + if (!proposal) return <> const hexColor = numRGBAToHex(proposal.target_color) const title = createProposalTitle(proposal.proposal_type, hexColor) const canActivateProposal = proposal.yes_px >= NEEDED_YES_PX + if ( + (filter === 'Closed' && proposalStatus !== 'closed') || + (filter === 'Active' && !proposalStatus.includes('ends in')) || + (!!searchTerm?.trim() && !title.toLowerCase().includes(searchTerm?.toLowerCase())) + ) return <> + const onStartVoteParam = { id: proposal.index, title, diff --git a/src/components/ProposalList/ProposalList.tsx b/src/components/ProposalList/ProposalList.tsx index c198050..fb1ad17 100644 --- a/src/components/ProposalList/ProposalList.tsx +++ b/src/components/ProposalList/ProposalList.tsx @@ -126,7 +126,7 @@ const ProposalList: React.FC = ({ headerHeight }) => {
{proposalArray.map((proposal) => { - return + return })}
From a52246474852a06e2620cc3f7d2fa3f0b35e47fa Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Tue, 25 Jun 2024 00:12:06 +0100 Subject: [PATCH 17/71] fix: errors about hexRGBtoNumber --- src/global/utils.ts | 10 ++++++---- src/pages/NewProposal.tsx | 5 ++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/global/utils.ts b/src/global/utils.ts index 7efbf0c..2dc289f 100644 --- a/src/global/utils.ts +++ b/src/global/utils.ts @@ -76,14 +76,16 @@ export const coordinateToPosition = (coord: Coordinate): Position => { return {x: coord[0], y: coord[1]} } -export const hexRGBtoNumber = (color: string) => { +// use this for making a new proposal +export const hexRGBtoNumber_tailzeros = (color: string) => { return parseInt(`0x${color}00`, 16) } +// use this to treat pixel colors. // Fixed here to remove the alpha channel. (which caused the color error.) -// export const hexRGBtoNumber = (color: string) => { -// return parseInt(`0x00${color}`, 16) -// } +export const hexRGBtoNumber = (color: string) => { + return parseInt(`0x00${color}`, 16) +} // Converts the numeric RGBA to a normal hex color // @dev this removes the Alpha channel. diff --git a/src/pages/NewProposal.tsx b/src/pages/NewProposal.tsx index 769fb1e..920b661 100644 --- a/src/pages/NewProposal.tsx +++ b/src/pages/NewProposal.tsx @@ -5,7 +5,7 @@ import Select from 'react-select'; import {usePixelawProvider} from "@/providers/PixelawProvider"; import {ProposalType} from "@/global/types"; import {GAME_ID} from "@/global/constants"; -import {hexRGBtoNumber} from "@/global/utils.ts"; +import {hexRGBtoNumber, hexRGBtoNumber_tailzeros} from "@/global/utils.ts"; const NewProposal: React.FC = () => { const [proposalType, setProposalType] = useState('Add Color'); @@ -17,7 +17,6 @@ const NewProposal: React.FC = () => { const handleColorChange = (color: any) => { setColor(color.hex); }; - const handleClickOutside = (event: MouseEvent) => { if (colorPickerRef.current && !colorPickerRef.current.contains(event.target as Node)) { @@ -42,7 +41,7 @@ const NewProposal: React.FC = () => { gameData.account.account, GAME_ID, type, - hexRGBtoNumber(color.replace('#', '')) + hexRGBtoNumber_tailzeros(color.replace('#', '')) ).then(() => navigate('/governance')) } }; From c868748a1e9a892a255733572f9e2b425632e8c4 Mon Sep 17 00:00:00 2001 From: Caspar Oostendorp Date: Tue, 25 Jun 2024 10:05:44 +0800 Subject: [PATCH 18/71] Update dependencies, enable source map in vite config, and add new packages to yarn.lock --- package.json | 120 +++++++++++++++---------------- vite.config.ts | 3 + yarn.lock | 188 ++++++++++++++++++++++++------------------------- 3 files changed, 154 insertions(+), 157 deletions(-) diff --git a/package.json b/package.json index 1793bff..529cfbe 100644 --- a/package.json +++ b/package.json @@ -1,62 +1,62 @@ { - "name": "pixelaw-web", - "private": true, - "version": "0.3.7", - "type": "module", - "packageManager": "yarn@1.22.19", - "scripts": { - "dev": "vite", - "build-prod": "tsc && vite build", - "build": "vite build", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview", - "test": "vitest", - "coverage": "vitest run --coverage" - }, - "dependencies": { - "@dojoengine/core": "^0.7.1", - "@dojoengine/create-burner": "^0.7.1", - "@dojoengine/react": "^0.7.2", - "@dojoengine/recs": "^0.1.35", - "@dojoengine/state": "^0.7.1", - "@dojoengine/torii-client": "^0.7.1", - "@dojoengine/utils": "^0.7.2", - "@react-hook/resize-observer": "^2.0.1", - "@types/upng-js": "^2.1.5", - "autoprefixer": "^10.4.19", - "browserify-zlib": "^0.2.0", - "dotenv": "^16.4.5", - "graphql": "^16.8.1", - "graphql-request": "^7.0.1", - "idb-keyval": "^6.2.1", - "immer": "^10.1.1", - "pngjs3": "^6.1.1", - "postcss": "^8.4.38", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.23.1", - "starknet": "^6.9.0", - "tailwindcss": "^3.4.4", - "tailwindcss-animate": "^1.0.7", - "upng-js": "^2.1.0", - "zustand": "^4.5.2" - }, - "devDependencies": { - "@types/react": "^18.2.66", - "@types/react-dom": "^18.2.22", - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", - "@vitejs/plugin-react": "^4.2.1", - "@vitest/coverage-v8": "^1.6.0", - "eslint": "^8.57.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.6", - "typescript": "^5.2.2", - "vite": "^5.2.0", - "vite-envs": "^4.3.2", - "vite-plugin-graphql-loader": "^3.0.1", - "vite-plugin-top-level-await": "^1.4.1", - "vite-plugin-wasm": "^3.3.0", - "vitest": "^1.6.0" - } + "name": "pixelaw-web", + "private": true, + "version": "0.3.7", + "type": "module", + "packageManager": "yarn@1.22.19", + "scripts": { + "dev": "vite", + "build-prod": "tsc && vite build", + "build": "vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview", + "test": "vitest", + "coverage": "vitest run --coverage" + }, + "dependencies": { + "@dojoengine/core": "^0.7.4", + "@dojoengine/create-burner": "^0.7.4", + "@dojoengine/react": "^0.7.4", + "@dojoengine/recs": "^0.1.35", + "@dojoengine/state": "^0.7.4", + "@dojoengine/torii-client": "^0.7.4", + "@dojoengine/utils": "^0.7.4", + "@react-hook/resize-observer": "^2.0.1", + "@types/upng-js": "^2.1.5", + "autoprefixer": "^10.4.19", + "browserify-zlib": "^0.2.0", + "dotenv": "^16.4.5", + "graphql": "^16.8.1", + "graphql-request": "^7.0.1", + "idb-keyval": "^6.2.1", + "immer": "^10.1.1", + "pngjs3": "^6.1.1", + "postcss": "^8.4.38", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.23.1", + "starknet": "^6.9.0", + "tailwindcss": "^3.4.4", + "tailwindcss-animate": "^1.0.7", + "upng-js": "^2.1.0", + "zustand": "^4.5.2" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react": "^4.2.1", + "@vitest/coverage-v8": "^1.6.0", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "typescript": "^5.2.2", + "vite": "^5.2.0", + "vite-envs": "^4.3.2", + "vite-plugin-graphql-loader": "^3.0.1", + "vite-plugin-top-level-await": "^1.4.1", + "vite-plugin-wasm": "^3.3.0", + "vitest": "^1.6.0" + } } diff --git a/vite.config.ts b/vite.config.ts index 8fd36e8..3a3f36e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -23,4 +23,7 @@ export default defineConfig({ "@": fileURLToPath(new URL('./src', import.meta.url)), }, }, + build: { + sourcemap: true, // Enable source map generation + }, }); diff --git a/yarn.lock b/yarn.lock index 7a91b95..cdc5259 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@adraffy/ens-normalize@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== + "@adraffy/ens-normalize@1.9.4": version "1.9.4" resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.4.tgz#aae21cb858bbb0411949d5b7b3051f4209043f62" @@ -230,35 +235,35 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@dojoengine/core@0.7.1", "@dojoengine/core@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@dojoengine/core/-/core-0.7.1.tgz#0e681652f88d3f2d2dfbc91f428dd4d03dc86d86" - integrity sha512-EoxSFB13MUB4liM4U2w9S8zulhDVJDu0UjVRXcEOl1gn6XbRAa/PRzG4ywwSdn7h13l0M500kGbfOx9dSkTR5A== +"@dojoengine/core@0.7.5", "@dojoengine/core@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@dojoengine/core/-/core-0.7.5.tgz#d58610bd83ce350d71953751d929da814f1d9537" + integrity sha512-QUBMoj+AgMeGT6q2Mg3W1rFxN453aHKJ1zBiz59vqSrhxDhJvbPoUwpQqd9pADiNSdj5U3pjxvbEhN25HpLzlQ== dependencies: - "@dojoengine/recs" "0.1.35" + "@dojoengine/recs" "2.0.13" zod "^3.22.4" -"@dojoengine/create-burner@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@dojoengine/create-burner/-/create-burner-0.7.1.tgz#69bce8a74d865a7232742c883c21db16a6995695" - integrity sha512-iODB4pJThbbGhtDHQMs3tf7r65Q2fvF/TYX25sHa5k4Wen3ArFbl1n0aFhGhD96LA30qI4nFxc+DpkJezbcdFw== +"@dojoengine/create-burner@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@dojoengine/create-burner/-/create-burner-0.7.5.tgz#288c5355fe903d6ca5117ee0ee6239b5b7289d8e" + integrity sha512-g3/Qmx/7Z02PkGOKUncrCc4BMlBrrMAVxbyo3l0Gu/a+UgmHfnsU5ULxLloq/MJ9g6S8fWhrtXBxEQM2W4BA8g== dependencies: - "@dojoengine/core" "0.7.1" + "@dojoengine/core" "0.7.5" "@scure/bip32" "^1.4.0" "@starknet-react/core" "2.3.0" encoding "^0.1.13" get-starknet-core "^3.2.0" js-cookie "^3.0.5" -"@dojoengine/react@^0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@dojoengine/react/-/react-0.7.2.tgz#2566fff4337e3b6bc3bcc2ad5f83f5ea639bdc70" - integrity sha512-6p/bFSWIWgzLHT2zg2R39LvT7zrqPpzgdUOczVkJgnF6ljq2Yr57u6tDNb2pH5o23nOBROLb1khO8HbwlvyHqg== +"@dojoengine/react@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@dojoengine/react/-/react-0.7.5.tgz#199e8d491f114a203c038619ee2964f7e0c23704" + integrity sha512-QnUjtifqTlvJA1nQ2BDDXpXZIoT2DDLGj4RA2o2JN7FlQHFyVv+sLNjjnvKMdf1X54vwuogdp31zO0uyQWKg4w== dependencies: - "@dojoengine/recs" "0.1.35" - "@dojoengine/state" "0.7.2" - "@dojoengine/torii-client" "0.7.2" - "@dojoengine/utils" "0.7.2" + "@dojoengine/recs" "2.0.13" + "@dojoengine/state" "0.7.5" + "@dojoengine/torii-client" "0.7.5" + "@dojoengine/utils" "0.7.5" "@latticexyz/utils" "^2.0.0-next.11" encoding "^0.1.13" fast-deep-equal "^3.1.3" @@ -267,7 +272,17 @@ rxjs "7.5.5" zustand "^4.5.2" -"@dojoengine/recs@0.1.35", "@dojoengine/recs@^0.1.35": +"@dojoengine/recs@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@dojoengine/recs/-/recs-2.0.13.tgz#57c9638b2ec0e57da8332eb477827109e22e129a" + integrity sha512-Cgz4Unlnk2FSDoFTYKrJexX/KiSYPMFMxftxQkC+9LUKS5yNGkgFQM7xu4/L1HvpDAenL7NjUmH6ynRAS7Iifw== + dependencies: + "@latticexyz/schema-type" "2.0.12" + "@latticexyz/utils" "2.0.12" + mobx "^6.7.0" + rxjs "7.5.5" + +"@dojoengine/recs@^0.1.35": version "0.1.35" resolved "https://registry.yarnpkg.com/@dojoengine/recs/-/recs-0.1.35.tgz#18abe6596b79cd1671a83456f2ec5c180f283555" integrity sha512-wWXcH5hCRByGVLbkQ/pdo80xk3fmXoUmXF7cVVdbiKS/Kh/f1iQjjBSudAaogUDPqViXvWNdpmnH/0fas/xzSQ== @@ -277,58 +292,35 @@ mobx "^6.7.0" rxjs "7.5.5" -"@dojoengine/state@0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@dojoengine/state/-/state-0.7.2.tgz#4f54b5a9c1bd5317223ae6998ad79d2cb07c3beb" - integrity sha512-dDKEup8SLYMgD3sqo9JJnigeQzFofWxlgTUi/3DnqGmuDYZS56o1K/o3gRP315PTm7r8WJ93VysoMX5xJjKlfw== - dependencies: - "@dojoengine/recs" "0.1.35" - "@dojoengine/torii-client" "0.7.2" - "@latticexyz/utils" "^2.0.0-next.11" - zustand "^4.5.2" - -"@dojoengine/state@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@dojoengine/state/-/state-0.7.1.tgz#9712c2b271b03bb6e01c60ef6f6ede5de0d06981" - integrity sha512-GbLQW5FcDNfpf3wLjL3vn0iQshKIVqDrVK/VUNGzz3rzfwwtFd/L6A63vHAh7VgehkG4CtLvscX84q9QQMoH3g== +"@dojoengine/state@0.7.5", "@dojoengine/state@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@dojoengine/state/-/state-0.7.5.tgz#39da00c51c055f98de769e06ef6b42d641e90888" + integrity sha512-eRUMgsNqca1FUwMA95uxGByseLII2fgdLxC1cCXLwgIznLMgKf84z8D8LmyGiLYdX0BZtLM9xIYqgrLgJspdCQ== dependencies: - "@dojoengine/recs" "0.1.35" - "@dojoengine/torii-client" "0.7.1" + "@dojoengine/recs" "2.0.13" + "@dojoengine/torii-client" "0.7.5" "@latticexyz/utils" "^2.0.0-next.11" zustand "^4.5.2" -"@dojoengine/torii-client@0.7.1", "@dojoengine/torii-client@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@dojoengine/torii-client/-/torii-client-0.7.1.tgz#13ebb45695bb59fcaa72575958d26ba34839c728" - integrity sha512-c8k/aWxYgUJTjXGGWOB4VfFexGyqoO4Y1CzWEFSTkVCrIAlw78FgC2Con7G0OSyqXECmpZiYj1ugospaJHMkzg== - dependencies: - "@dojoengine/torii-wasm" "0.7.1" - typescript "^5.0.3" - -"@dojoengine/torii-client@0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@dojoengine/torii-client/-/torii-client-0.7.2.tgz#818c53b6f31c47c5b17bf3bd51f5ac96c7eb13cc" - integrity sha512-wBOreap7exaCgeFhT5bIorjlzlOyKOoy7KRI0gD6yBzPiiu18lo3JINrH8SKWvYd5jzKBNUVKM9k96RnfrSk/A== +"@dojoengine/torii-client@0.7.5", "@dojoengine/torii-client@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@dojoengine/torii-client/-/torii-client-0.7.5.tgz#f5354fe8383f30d2fec4180c932aca1e2b907e0f" + integrity sha512-CIE618c16xPNkFyj067LUG7Po7ldWtyBDqEwc3h1hbl7sUjlyZjJm+PCoZf/gSksWfT5y+gtz9jjtHgaOAL2zA== dependencies: - "@dojoengine/torii-wasm" "0.7.2" + "@dojoengine/torii-wasm" "0.7.5" typescript "^5.0.3" -"@dojoengine/torii-wasm@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@dojoengine/torii-wasm/-/torii-wasm-0.7.1.tgz#0e32d184f64856dfd51bc6470ee9c4094b730f79" - integrity sha512-/LxhP7XqE56phCW85giy7KMepJis7p2w3l7CG0dKJ+CzKr4wozCxrQB+R9isCUTjlQYKNamfy7kZDAHo6Dja9A== - -"@dojoengine/torii-wasm@0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@dojoengine/torii-wasm/-/torii-wasm-0.7.2.tgz#8e16f4163f929236939db7b6b98b4d3eb263caeb" - integrity sha512-ccolySkoHfE25rIeh/67wdd52DdbU37xnEJ9DrUAneDcDmYiHzkKude5H0wSh73muLNS4I+0+ukjDw4oCSPM7w== +"@dojoengine/torii-wasm@0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@dojoengine/torii-wasm/-/torii-wasm-0.7.5.tgz#d8bfe7477877b7dbf4ef12e33dd798e4e9c9d61b" + integrity sha512-qQfnh+jPTiTUB6dj9JPNIbwjSr9Ab3ZfEo9zdDwMkxT2aaqD0OtOb8EQAHKZCVMN3EAOARJm92S6k1OzxPR4Tw== -"@dojoengine/utils@0.7.2", "@dojoengine/utils@^0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@dojoengine/utils/-/utils-0.7.2.tgz#e8d87c49bfa0810f91c586d33dfef74e8203cb76" - integrity sha512-VWIgAeGOQZApGEzi+KQrclAt6vLMDQCCi1DVQJxtLN0Ffctx+zUyjdVK3ZUzwIv9X57+ERrwKcR6JOvClOgarg== +"@dojoengine/utils@0.7.5", "@dojoengine/utils@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@dojoengine/utils/-/utils-0.7.5.tgz#4acddfcdd3ec261e25922d48783d379da23e746c" + integrity sha512-pglYhEjCu52WtT1aT5J4s4uCtRq9fCywqvxgPRC/SUARjKlLhPHCoEio7MpCGNKIKXMNbzboFIsptDWBMryzeQ== dependencies: - "@dojoengine/recs" "0.1.35" + "@dojoengine/recs" "2.0.13" "@latticexyz/utils" "^2.0.0-next.11" mathjs "^12.0.0" micro-starknet "^0.2.3" @@ -960,6 +952,14 @@ abitype "0.9.8" viem "1.14.0" +"@latticexyz/schema-type@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@latticexyz/schema-type/-/schema-type-2.0.12.tgz#70138d61962af7d93feb2d375c6596806b13cc6d" + integrity sha512-QDnHU3iCQmY8e24CGR3hKUEprHrrNUfFTiUaSuj3J0d/x9iaIafYT2+dWydxgcpCmK4Xl7PgurvJiAVCmcLokg== + dependencies: + abitype "1.0.0" + viem "2.9.20" + "@latticexyz/utils@2.0.0-next.12": version "2.0.0-next.12" resolved "https://registry.yarnpkg.com/@latticexyz/utils/-/utils-2.0.0-next.12.tgz#81742c434455cc64801bd056ea3fb98854f9bcb6" @@ -970,7 +970,7 @@ proxy-deep "^3.1.1" rxjs "7.5.5" -"@latticexyz/utils@^2.0.0-next.11": +"@latticexyz/utils@2.0.12", "@latticexyz/utils@^2.0.0-next.11": version "2.0.12" resolved "https://registry.yarnpkg.com/@latticexyz/utils/-/utils-2.0.12.tgz#75b01c8d2f25a4a31d7998c4f137586c5407fa28" integrity sha512-AwniovUlWY7YL92Mjz/3R0V9g8c5wYg5t3agRmMZ9wgktUB6BYZC65n+sKp88wUuN3DrMLb51UFZOycGh0JD2w== @@ -1603,6 +1603,11 @@ abitype@0.9.8: resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.9.8.tgz#1f120b6b717459deafd213dfbf3a3dd1bf10ae8c" integrity sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ== +abitype@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" + integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -2832,6 +2837,11 @@ isomorphic-ws@5.0.0: resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== +isows@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" + integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" @@ -3720,12 +3730,7 @@ stackback@0.0.2: resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== -"starknet-types-07@npm:starknet-types@^0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/starknet-types/-/starknet-types-0.7.2.tgz#2a1be2392e6e568484afabdc1e83411b5105713b" - integrity sha512-r3JJ0rrK0g3FnVRGcFiLY+9YT5WZgxB4TKBfR44wYGevHtKEM6BM5B+Gn1eou1zV7xEAwz3GpmvLSQTUAzDhsw== - -starknet-types@^0.7.1: +"starknet-types-07@npm:starknet-types@^0.7.2", starknet-types@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/starknet-types/-/starknet-types-0.7.2.tgz#2a1be2392e6e568484afabdc1e83411b5105713b" integrity sha512-r3JJ0rrK0g3FnVRGcFiLY+9YT5WZgxB4TKBfR44wYGevHtKEM6BM5B+Gn1eou1zV7xEAwz3GpmvLSQTUAzDhsw== @@ -3761,16 +3766,7 @@ string-length@^6.0.0: dependencies: strip-ansi "^7.1.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - 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" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3788,14 +3784,7 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -4113,6 +4102,20 @@ viem@1.14.0: isomorphic-ws "5.0.0" ws "8.13.0" +viem@2.9.20: + version "2.9.20" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.20.tgz#71c6a45d22a8150072adee3dcb7a93fff5347d16" + integrity sha512-PHb1MrBHMrSZ8Ayuk3Y/6wUTcMbzlACQaM6AJBSv9kRKX3xYSZ/kehi+gvS0swQJeAlTQ4eZM7jsHQJNAOarmg== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "1.0.0" + isows "1.0.3" + ws "8.13.0" + vite-envs@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/vite-envs/-/vite-envs-4.3.2.tgz#214b21b851ee8d9c9b37eecb3a4ed02788191465" @@ -4243,16 +4246,7 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== From 5017375fb650051adb3cca892f288535f13dfdcf Mon Sep 17 00:00:00 2001 From: Caspar Oostendorp Date: Tue, 25 Jun 2024 10:08:28 +0800 Subject: [PATCH 19/71] Update dependencies, enable source map in vite config, and add new packages to yarn.lock --- vite.config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index 3a3f36e..781e19c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -24,6 +24,6 @@ export default defineConfig({ }, }, build: { - sourcemap: true, // Enable source map generation - }, -}); + sourcemap: true + } +}); \ No newline at end of file From 004e32b003cd489f4d176db84fe389f9c8fbdb16 Mon Sep 17 00:00:00 2001 From: Caspar Oostendorp Date: Tue, 25 Jun 2024 10:08:39 +0800 Subject: [PATCH 20/71] Prepare v0.3.8 --- VERSION | 2 +- package.json | 120 +++++++++++++++++++++++++-------------------------- 2 files changed, 61 insertions(+), 61 deletions(-) diff --git a/VERSION b/VERSION index 0f82685..6678432 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.3.7 +0.3.8 diff --git a/package.json b/package.json index 529cfbe..8ee4f9d 100644 --- a/package.json +++ b/package.json @@ -1,62 +1,62 @@ { - "name": "pixelaw-web", - "private": true, - "version": "0.3.7", - "type": "module", - "packageManager": "yarn@1.22.19", - "scripts": { - "dev": "vite", - "build-prod": "tsc && vite build", - "build": "vite build", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview", - "test": "vitest", - "coverage": "vitest run --coverage" - }, - "dependencies": { - "@dojoengine/core": "^0.7.4", - "@dojoengine/create-burner": "^0.7.4", - "@dojoengine/react": "^0.7.4", - "@dojoengine/recs": "^0.1.35", - "@dojoengine/state": "^0.7.4", - "@dojoengine/torii-client": "^0.7.4", - "@dojoengine/utils": "^0.7.4", - "@react-hook/resize-observer": "^2.0.1", - "@types/upng-js": "^2.1.5", - "autoprefixer": "^10.4.19", - "browserify-zlib": "^0.2.0", - "dotenv": "^16.4.5", - "graphql": "^16.8.1", - "graphql-request": "^7.0.1", - "idb-keyval": "^6.2.1", - "immer": "^10.1.1", - "pngjs3": "^6.1.1", - "postcss": "^8.4.38", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.23.1", - "starknet": "^6.9.0", - "tailwindcss": "^3.4.4", - "tailwindcss-animate": "^1.0.7", - "upng-js": "^2.1.0", - "zustand": "^4.5.2" - }, - "devDependencies": { - "@types/react": "^18.2.66", - "@types/react-dom": "^18.2.22", - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", - "@vitejs/plugin-react": "^4.2.1", - "@vitest/coverage-v8": "^1.6.0", - "eslint": "^8.57.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.6", - "typescript": "^5.2.2", - "vite": "^5.2.0", - "vite-envs": "^4.3.2", - "vite-plugin-graphql-loader": "^3.0.1", - "vite-plugin-top-level-await": "^1.4.1", - "vite-plugin-wasm": "^3.3.0", - "vitest": "^1.6.0" - } + "name": "pixelaw-web", + "private": true, + "version": "0.3.8", + "type": "module", + "packageManager": "yarn@1.22.19", + "scripts": { + "dev": "vite", + "build-prod": "tsc && vite build", + "build": "vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview", + "test": "vitest", + "coverage": "vitest run --coverage" + }, + "dependencies": { + "@dojoengine/core": "^0.7.4", + "@dojoengine/create-burner": "^0.7.4", + "@dojoengine/react": "^0.7.4", + "@dojoengine/recs": "^0.1.35", + "@dojoengine/state": "^0.7.4", + "@dojoengine/torii-client": "^0.7.4", + "@dojoengine/utils": "^0.7.4", + "@react-hook/resize-observer": "^2.0.1", + "@types/upng-js": "^2.1.5", + "autoprefixer": "^10.4.19", + "browserify-zlib": "^0.2.0", + "dotenv": "^16.4.5", + "graphql": "^16.8.1", + "graphql-request": "^7.0.1", + "idb-keyval": "^6.2.1", + "immer": "^10.1.1", + "pngjs3": "^6.1.1", + "postcss": "^8.4.38", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.23.1", + "starknet": "^6.9.0", + "tailwindcss": "^3.4.4", + "tailwindcss-animate": "^1.0.7", + "upng-js": "^2.1.0", + "zustand": "^4.5.2" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react": "^4.2.1", + "@vitest/coverage-v8": "^1.6.0", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "typescript": "^5.2.2", + "vite": "^5.2.0", + "vite-envs": "^4.3.2", + "vite-plugin-graphql-loader": "^3.0.1", + "vite-plugin-top-level-await": "^1.4.1", + "vite-plugin-wasm": "^3.3.0", + "vitest": "^1.6.0" + } } From a2983bb2184a897855b6c3f56709c61833ffae79 Mon Sep 17 00:00:00 2001 From: Caspar Oostendorp Date: Tue, 25 Jun 2024 10:15:03 +0800 Subject: [PATCH 21/71] Update @dojoengine dependencies to version 0.7.5 and adjust yarn.lock accordingly --- package.json | 12 ++++++------ yarn.lock | 50 ++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 8ee4f9d..863898f 100644 --- a/package.json +++ b/package.json @@ -14,13 +14,13 @@ "coverage": "vitest run --coverage" }, "dependencies": { - "@dojoengine/core": "^0.7.4", - "@dojoengine/create-burner": "^0.7.4", - "@dojoengine/react": "^0.7.4", + "@dojoengine/core": "^0.7.5", + "@dojoengine/create-burner": "^0.7.5", + "@dojoengine/react": "^0.7.5", "@dojoengine/recs": "^0.1.35", - "@dojoengine/state": "^0.7.4", - "@dojoengine/torii-client": "^0.7.4", - "@dojoengine/utils": "^0.7.4", + "@dojoengine/state": "^0.7.5", + "@dojoengine/torii-client": "^0.7.5", + "@dojoengine/utils": "^0.7.5", "@react-hook/resize-observer": "^2.0.1", "@types/upng-js": "^2.1.5", "autoprefixer": "^10.4.19", diff --git a/yarn.lock b/yarn.lock index cdc5259..bc3e285 100644 --- a/yarn.lock +++ b/yarn.lock @@ -235,7 +235,7 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@dojoengine/core@0.7.5", "@dojoengine/core@^0.7.4": +"@dojoengine/core@0.7.5", "@dojoengine/core@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@dojoengine/core/-/core-0.7.5.tgz#d58610bd83ce350d71953751d929da814f1d9537" integrity sha512-QUBMoj+AgMeGT6q2Mg3W1rFxN453aHKJ1zBiz59vqSrhxDhJvbPoUwpQqd9pADiNSdj5U3pjxvbEhN25HpLzlQ== @@ -243,7 +243,7 @@ "@dojoengine/recs" "2.0.13" zod "^3.22.4" -"@dojoengine/create-burner@^0.7.4": +"@dojoengine/create-burner@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@dojoengine/create-burner/-/create-burner-0.7.5.tgz#288c5355fe903d6ca5117ee0ee6239b5b7289d8e" integrity sha512-g3/Qmx/7Z02PkGOKUncrCc4BMlBrrMAVxbyo3l0Gu/a+UgmHfnsU5ULxLloq/MJ9g6S8fWhrtXBxEQM2W4BA8g== @@ -255,7 +255,7 @@ get-starknet-core "^3.2.0" js-cookie "^3.0.5" -"@dojoengine/react@^0.7.4": +"@dojoengine/react@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@dojoengine/react/-/react-0.7.5.tgz#199e8d491f114a203c038619ee2964f7e0c23704" integrity sha512-QnUjtifqTlvJA1nQ2BDDXpXZIoT2DDLGj4RA2o2JN7FlQHFyVv+sLNjjnvKMdf1X54vwuogdp31zO0uyQWKg4w== @@ -292,7 +292,7 @@ mobx "^6.7.0" rxjs "7.5.5" -"@dojoengine/state@0.7.5", "@dojoengine/state@^0.7.4": +"@dojoengine/state@0.7.5", "@dojoengine/state@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@dojoengine/state/-/state-0.7.5.tgz#39da00c51c055f98de769e06ef6b42d641e90888" integrity sha512-eRUMgsNqca1FUwMA95uxGByseLII2fgdLxC1cCXLwgIznLMgKf84z8D8LmyGiLYdX0BZtLM9xIYqgrLgJspdCQ== @@ -302,7 +302,7 @@ "@latticexyz/utils" "^2.0.0-next.11" zustand "^4.5.2" -"@dojoengine/torii-client@0.7.5", "@dojoengine/torii-client@^0.7.4": +"@dojoengine/torii-client@0.7.5", "@dojoengine/torii-client@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@dojoengine/torii-client/-/torii-client-0.7.5.tgz#f5354fe8383f30d2fec4180c932aca1e2b907e0f" integrity sha512-CIE618c16xPNkFyj067LUG7Po7ldWtyBDqEwc3h1hbl7sUjlyZjJm+PCoZf/gSksWfT5y+gtz9jjtHgaOAL2zA== @@ -315,7 +315,7 @@ resolved "https://registry.yarnpkg.com/@dojoengine/torii-wasm/-/torii-wasm-0.7.5.tgz#d8bfe7477877b7dbf4ef12e33dd798e4e9c9d61b" integrity sha512-qQfnh+jPTiTUB6dj9JPNIbwjSr9Ab3ZfEo9zdDwMkxT2aaqD0OtOb8EQAHKZCVMN3EAOARJm92S6k1OzxPR4Tw== -"@dojoengine/utils@0.7.5", "@dojoengine/utils@^0.7.4": +"@dojoengine/utils@0.7.5", "@dojoengine/utils@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@dojoengine/utils/-/utils-0.7.5.tgz#4acddfcdd3ec261e25922d48783d379da23e746c" integrity sha512-pglYhEjCu52WtT1aT5J4s4uCtRq9fCywqvxgPRC/SUARjKlLhPHCoEio7MpCGNKIKXMNbzboFIsptDWBMryzeQ== @@ -3730,7 +3730,12 @@ stackback@0.0.2: resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== -"starknet-types-07@npm:starknet-types@^0.7.2", starknet-types@^0.7.1: +"starknet-types-07@npm:starknet-types@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/starknet-types/-/starknet-types-0.7.2.tgz#2a1be2392e6e568484afabdc1e83411b5105713b" + integrity sha512-r3JJ0rrK0g3FnVRGcFiLY+9YT5WZgxB4TKBfR44wYGevHtKEM6BM5B+Gn1eou1zV7xEAwz3GpmvLSQTUAzDhsw== + +starknet-types@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/starknet-types/-/starknet-types-0.7.2.tgz#2a1be2392e6e568484afabdc1e83411b5105713b" integrity sha512-r3JJ0rrK0g3FnVRGcFiLY+9YT5WZgxB4TKBfR44wYGevHtKEM6BM5B+Gn1eou1zV7xEAwz3GpmvLSQTUAzDhsw== @@ -3766,7 +3771,16 @@ string-length@^6.0.0: dependencies: strip-ansi "^7.1.0" -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + 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" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3784,7 +3798,14 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -4246,7 +4267,16 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== From 01be9f3a520b8038b7c3e987c848ee61fb131179 Mon Sep 17 00:00:00 2001 From: Caspar Oostendorp Date: Tue, 25 Jun 2024 10:30:55 +0800 Subject: [PATCH 22/71] upgrading dependencies --- yarn.lock | 428 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 424 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index bc3e285..e3c16b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25,6 +25,14 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + "@babel/code-frame@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" @@ -69,6 +77,16 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" + integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== + dependencies: + "@babel/types" "^7.24.7" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-compilation-targets@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51" @@ -85,6 +103,13 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d" integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== +"@babel/helper-environment-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" + integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-function-name@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8" @@ -93,6 +118,14 @@ "@babel/template" "^7.24.6" "@babel/types" "^7.24.6" +"@babel/helper-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" + integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== + dependencies: + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-hoist-variables@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9" @@ -100,6 +133,21 @@ dependencies: "@babel/types" "^7.24.6" +"@babel/helper-hoist-variables@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" + integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-module-imports@^7.16.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-imports@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852" @@ -137,16 +185,33 @@ dependencies: "@babel/types" "^7.24.6" +"@babel/helper-split-export-declaration@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" + integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-string-parser@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df" integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== +"@babel/helper-string-parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" + integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== + "@babel/helper-validator-identifier@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e" integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a" @@ -170,11 +235,26 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.4", "@babel/parser@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328" integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== +"@babel/parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" + integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== + "@babel/plugin-transform-react-jsx-self@^7.24.5": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.6.tgz#4fa4870d594d6840d724d2006d0f98b19be6f502" @@ -189,7 +269,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.6" -"@babel/runtime@^7.24.4": +"@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.24.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== @@ -205,6 +285,15 @@ "@babel/parser" "^7.24.6" "@babel/types" "^7.24.6" +"@babel/template@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" + integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/traverse@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc" @@ -221,6 +310,22 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" + integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.0", "@babel/types@^7.24.6": version "7.24.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912" @@ -230,6 +335,15 @@ "@babel/helper-validator-identifier" "^7.24.6" to-fast-properties "^2.0.0" +"@babel/types@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" + integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== + dependencies: + "@babel/helper-string-parser" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -370,6 +484,94 @@ resolved "https://registry.yarnpkg.com/@dprint/win32-x64/-/win32-x64-0.45.1.tgz#6d08308cf08e4b751efb0692ded28b57d42a365d" integrity sha512-2l78XM7KsW46P2Yv6uPB3fE+y92EsBlrCxi+RVQ0pbznPFdMdkLyGgaCuh683zdld14jHlaADpIQ7YchGAEMAg== +"@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" + integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/serialize" "^1.1.2" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + +"@emotion/cache@^11.11.0", "@emotion/cache@^11.4.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + stylis "4.2.0" + +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.8.1": + version "11.11.4" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.4.tgz#3a829cac25c1f00e126408fab7f891f00ecc3c1d" + integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.4.tgz#fc8f6d80c492cfa08801d544a05331d1cc7cd451" + integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== + +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== + +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + "@esbuild/aix-ppc64@0.20.2": version "0.20.2" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" @@ -859,6 +1061,26 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@floating-ui/core@^1.0.0": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.3.tgz#5e7bb92843f47fd1d8dcb9b3cc3c243aaed54f95" + integrity sha512-1ZpCvYf788/ZXOhRQGFxnYQOVgeU+pi0i+d0Ow34La7qjIXETi6RNswGVKkA6KcDO8/+Ysu2E/CeUmmeEBDvTg== + dependencies: + "@floating-ui/utils" "^0.2.3" + +"@floating-ui/dom@^1.0.1": + version "1.6.6" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.6.tgz#be54c1ab2d19112ad323e63dbeb08185fed0ffd3" + integrity sha512-qiTYajAnh3P+38kECeffMSQgbvXty2VB6rS+42iWR4FPIlZjLK84E9qtLnMTLIpPz2znD/TaFqaiavMUrS+Hcw== + dependencies: + "@floating-ui/core" "^1.0.0" + "@floating-ui/utils" "^0.2.3" + +"@floating-ui/utils@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.3.tgz#506fcc73f730affd093044cb2956c31ba6431545" + integrity sha512-XGndio0l5/Gvd6CLIABvsav9HHezgDFFhDfHk1bvLfr9ni8dojqLSvBbotJEjmIwNHL7vK4QzBJTdBRoB+c1ww== + "@graphql-typed-document-node/core@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" @@ -883,6 +1105,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@icons/material@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" + integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1396,6 +1623,11 @@ dependencies: undici-types "~5.26.4" +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + "@types/prop-types@*": version "15.7.12" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" @@ -1408,6 +1640,13 @@ dependencies: "@types/react" "*" +"@types/react-transition-group@^4.4.0": + version "4.4.10" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" + integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^18.2.66": version "18.3.3" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" @@ -1737,6 +1976,15 @@ autoprefixer@^10.4.19: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1989,11 +2237,27 @@ confbox@^0.1.7: resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2089,6 +2353,14 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + dom-serializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" @@ -2194,6 +2466,13 @@ entities@^4.2.0, entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + esbuild@^0.20.1: version "0.20.2" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" @@ -2473,6 +2752,11 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -2700,6 +2984,13 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -2773,6 +3064,11 @@ inherits@2, inherits@^2.0.3, inherits@^2.0.4: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -2939,6 +3235,11 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -3008,6 +3309,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash-es@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -3028,7 +3334,12 @@ lodash.snakecase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== -loose-envify@^1.1.0: +lodash@^4.0.1, lodash@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -3082,6 +3393,11 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" +material-colors@^1.2.1: + version "1.2.6" + resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" + integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== + mathjs@^12.0.0: version "12.4.3" resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-12.4.3.tgz#eef86baf8ee4c2467fc8c4619107bf4a650b9954" @@ -3097,6 +3413,11 @@ mathjs@^12.0.0: tiny-emitter "^2.1.0" typed-function "^4.1.1" +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -3239,7 +3560,7 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -object-assign@^4.0.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -3313,6 +3634,16 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + parse5-htmlparser2-tree-adapter@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" @@ -3480,6 +3811,15 @@ pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" +prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + proxy-deep@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/proxy-deep/-/proxy-deep-3.1.1.tgz#481f8e35f528ec734c41eae3b391e317599a5282" @@ -3505,6 +3845,19 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +react-color@^2.19.3: + version "2.19.3" + resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d" + integrity sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA== + dependencies: + "@icons/material" "^0.2.4" + lodash "^4.17.15" + lodash-es "^4.17.15" + material-colors "^1.2.1" + prop-types "^15.5.10" + reactcss "^1.2.0" + tinycolor2 "^1.4.1" + react-dom@^18.2.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" @@ -3513,6 +3866,16 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.2" +react-icons@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-5.2.1.tgz#28c2040917b2a2eda639b0f797bff1888e018e4a" + integrity sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw== + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react-is@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" @@ -3538,6 +3901,31 @@ react-router@6.23.1: dependencies: "@remix-run/router" "1.16.1" +react-select@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.8.0.tgz#bd5c467a4df223f079dd720be9498076a3f085b5" + integrity sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA== + dependencies: + "@babel/runtime" "^7.12.0" + "@emotion/cache" "^11.4.0" + "@emotion/react" "^11.8.1" + "@floating-ui/dom" "^1.0.1" + "@types/react-transition-group" "^4.4.0" + memoize-one "^6.0.0" + prop-types "^15.6.0" + react-transition-group "^4.3.0" + use-isomorphic-layout-effect "^1.1.2" + +react-transition-group@^4.3.0: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^18.2.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" @@ -3545,6 +3933,13 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" +reactcss@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" + integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== + dependencies: + lodash "^4.0.1" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -3596,7 +3991,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.1.7, resolve@^1.22.2: +resolve@^1.1.7, resolve@^1.19.0, resolve@^1.22.2: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -3725,6 +4120,11 @@ source-map-js@^1.2.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + stackback@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" @@ -3836,6 +4236,11 @@ strip-literal@^2.0.0: dependencies: js-tokens "^9.0.0" +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + sucrase@^3.32.0: version "3.35.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" @@ -3939,6 +4344,11 @@ tinybench@^2.5.1: resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.8.0.tgz#30e19ae3a27508ee18273ffed9ac7018949acd7b" integrity sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw== +tinycolor2@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + tinypool@^0.8.3: version "0.8.4" resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.4.tgz#e217fe1270d941b39e98c625dcecebb1408c9aa8" @@ -4093,6 +4503,11 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" +use-isomorphic-layout-effect@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + use-sync-external-store@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" @@ -4319,6 +4734,11 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yaml@^2.3.4: version "2.4.5" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e" From 4e1d7c2c5d24cc4f016df2a95d4d0e688e26500f Mon Sep 17 00:00:00 2001 From: Caspar Oostendorp Date: Tue, 25 Jun 2024 15:13:44 +0800 Subject: [PATCH 23/71] remove .env --- .env | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index a69a744..0000000 --- a/.env +++ /dev/null @@ -1,10 +0,0 @@ -PUBLIC_RPC_URL=http://localhost:5050 -PUBLIC_TORII_URL=http://localhost:8080 -PUBLIC_RELAY_URL=http://localhost:8080 -PUBLIC_SERVER_URL=http://localhost:3001 -MASTER_ADDRESS=0x003c4dd268780ef738920c801edc3a75b6337bc17558c74795b530c0ff502486 -MASTER_PRIVATE_KEY=0x2bbf4f9fd0bbb2e60b0316c1fe0b76cf7a4d0198bd493ced9b8df2a3a24d68a -WORLD_ADDRESS=0x60916a73fe631fcba3b2a930e21c6f7bb2533ea398c7bfa75c72f71a8709fc2 -ACCOUNT_CLASS_HASH=0x05400e90f7e0ae78bd02c77cd75527280470e2fe19c54970dd79dc37a9d3645c -FEETOKEN_ADDRESS=0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 -SERVER_PORT=3001 From 4b42ebad2be9db39c60925e84f589d46255c38b3 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Thu, 27 Jun 2024 08:58:24 +0100 Subject: [PATCH 24/71] update --- pnpm-lock.yaml | 66 +++--- src/App.module.css | 33 +++ src/App.tsx | 29 +++ .../NewProposalPopupForMain.tsx | 185 +++++++++++++++++ .../ProposalListForMain.tsx | 191 ++++++++++++++++++ 5 files changed, 472 insertions(+), 32 deletions(-) create mode 100644 src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx create mode 100644 src/components/NewProposalPopupForMain/ProposalListForMain.tsx diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 008ed82..639ef42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,26 +6,26 @@ settings: dependencies: '@dojoengine/core': - specifier: ^0.7.1 - version: 0.7.4(starknet@6.10.0)(typescript@5.5.2) + specifier: ^0.7.5 + version: 0.7.5(starknet@6.10.0)(typescript@5.5.2) '@dojoengine/create-burner': - specifier: ^0.7.1 - version: 0.7.4(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2) + specifier: ^0.7.5 + version: 0.7.5(react-dom@18.3.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2) '@dojoengine/react': - specifier: ^0.7.2 - version: 0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(type-fest@2.19.0)(typescript@5.5.2) + specifier: ^0.7.5 + version: 0.7.5(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(type-fest@2.19.0)(typescript@5.5.2) '@dojoengine/recs': specifier: ^0.1.35 version: 0.1.35(typescript@5.5.2) '@dojoengine/state': - specifier: ^0.7.1 - version: 0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2) + specifier: ^0.7.5 + version: 0.7.5(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2) '@dojoengine/torii-client': - specifier: ^0.7.1 - version: 0.7.4 + specifier: ^0.7.5 + version: 0.7.5 '@dojoengine/utils': - specifier: ^0.7.2 - version: 0.7.4(starknet@6.10.0)(typescript@5.5.2) + specifier: ^0.7.5 + version: 0.7.5(starknet@6.10.0)(typescript@5.5.2) '@react-hook/resize-observer': specifier: ^2.0.1 version: 2.0.1(react@18.3.1) @@ -393,8 +393,8 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@dojoengine/core@0.7.4(starknet@6.10.0)(typescript@5.5.2): - resolution: {integrity: sha512-yWmUAoLcCln6+guV9PUfB+hpbNyGantuePBVjnMOEsgxnaClkSapxcITiNwGydSM+pb7tCyi8sxX1jnFuTCeTA==} + /@dojoengine/core@0.7.5(starknet@6.10.0)(typescript@5.5.2): + resolution: {integrity: sha512-QUBMoj+AgMeGT6q2Mg3W1rFxN453aHKJ1zBiz59vqSrhxDhJvbPoUwpQqd9pADiNSdj5U3pjxvbEhN25HpLzlQ==} hasBin: true peerDependencies: starknet: ^6.1.5 @@ -408,19 +408,21 @@ packages: - utf-8-validate dev: false - /@dojoengine/create-burner@0.7.4(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2): - resolution: {integrity: sha512-ws2VVP/9PnyJqKJ4oa4PwboejMFVi5dkCmgSSovdCijM3VfM67b0aqB2v3iLxjSEWpyudQWCnR55l6uX7itfzA==} + /@dojoengine/create-burner@0.7.5(react-dom@18.3.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2): + resolution: {integrity: sha512-g3/Qmx/7Z02PkGOKUncrCc4BMlBrrMAVxbyo3l0Gu/a+UgmHfnsU5ULxLloq/MJ9g6S8fWhrtXBxEQM2W4BA8g==} peerDependencies: react: ^18.2.0 + react-dom: ^18.2.0 starknet: ^6.1.5 dependencies: - '@dojoengine/core': 0.7.4(starknet@6.10.0)(typescript@5.5.2) + '@dojoengine/core': 0.7.5(starknet@6.10.0)(typescript@5.5.2) '@scure/bip32': 1.4.0 '@starknet-react/core': 2.3.0(get-starknet-core@3.3.0)(react@18.3.1)(starknet@6.10.0) encoding: 0.1.13 get-starknet-core: 3.3.0(starknet@6.10.0) js-cookie: 3.0.5 react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) starknet: 6.10.0 transitivePeerDependencies: - bufferutil @@ -428,17 +430,17 @@ packages: - utf-8-validate dev: false - /@dojoengine/react@0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(type-fest@2.19.0)(typescript@5.5.2): - resolution: {integrity: sha512-7BFzh1AOcZ8nbSaVspLwcqMfhqBz99qaawxB/BVJE/BRTzMtbsxQLQU33sbIJbfJhbMTUGX9F4bxJs/21KVyBw==} + /@dojoengine/react@0.7.5(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(type-fest@2.19.0)(typescript@5.5.2): + resolution: {integrity: sha512-QnUjtifqTlvJA1nQ2BDDXpXZIoT2DDLGj4RA2o2JN7FlQHFyVv+sLNjjnvKMdf1X54vwuogdp31zO0uyQWKg4w==} peerDependencies: react: ^18.2.0 starknet: ^6.1.5 type-fest: ^2.14.0 dependencies: '@dojoengine/recs': 2.0.13(typescript@5.5.2)(zod@3.23.8) - '@dojoengine/state': 0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2) - '@dojoengine/torii-client': 0.7.4 - '@dojoengine/utils': 0.7.4(starknet@6.10.0)(typescript@5.5.2) + '@dojoengine/state': 0.7.5(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2) + '@dojoengine/torii-client': 0.7.5 + '@dojoengine/utils': 0.7.5(starknet@6.10.0)(typescript@5.5.2) '@latticexyz/utils': 2.0.12 encoding: 0.1.13 fast-deep-equal: 3.1.3 @@ -486,13 +488,13 @@ packages: - zod dev: false - /@dojoengine/state@0.7.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2): - resolution: {integrity: sha512-UrPrSppwyhZe9xdCFJKzOTBeKvPN+YwIdH16OYIiA/wQl9IMdk/vk13l5rI0I8jSzszjLD0YrLanOaowXaIA0g==} + /@dojoengine/state@0.7.5(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)(starknet@6.10.0)(typescript@5.5.2): + resolution: {integrity: sha512-eRUMgsNqca1FUwMA95uxGByseLII2fgdLxC1cCXLwgIznLMgKf84z8D8LmyGiLYdX0BZtLM9xIYqgrLgJspdCQ==} peerDependencies: starknet: ^6.1.5 dependencies: '@dojoengine/recs': 2.0.13(typescript@5.5.2)(zod@3.23.8) - '@dojoengine/torii-client': 0.7.4 + '@dojoengine/torii-client': 0.7.5 '@latticexyz/utils': 2.0.12 starknet: 6.10.0 zustand: 4.5.2(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) @@ -506,19 +508,19 @@ packages: - zod dev: false - /@dojoengine/torii-client@0.7.4: - resolution: {integrity: sha512-Z9oc1rpuBm8qKs4U/bTZZSa4RoSdk1TBFHI8aVxyGLaDCUQ5e2YymQZW4gC0IMmJRLhJTB5TnpIn4/H8gmreCg==} + /@dojoengine/torii-client@0.7.5: + resolution: {integrity: sha512-CIE618c16xPNkFyj067LUG7Po7ldWtyBDqEwc3h1hbl7sUjlyZjJm+PCoZf/gSksWfT5y+gtz9jjtHgaOAL2zA==} dependencies: - '@dojoengine/torii-wasm': 0.7.4 + '@dojoengine/torii-wasm': 0.7.5 typescript: 5.5.2 dev: false - /@dojoengine/torii-wasm@0.7.4: - resolution: {integrity: sha512-/CyaAa7YEVgedzYMBVqBSh5FKZPh/I34SclsLzFWHoBid5fAMmARLBi22eOUz/Un1iMa4Ln+au+PviruNu8Vlg==} + /@dojoengine/torii-wasm@0.7.5: + resolution: {integrity: sha512-qQfnh+jPTiTUB6dj9JPNIbwjSr9Ab3ZfEo9zdDwMkxT2aaqD0OtOb8EQAHKZCVMN3EAOARJm92S6k1OzxPR4Tw==} dev: false - /@dojoengine/utils@0.7.4(starknet@6.10.0)(typescript@5.5.2): - resolution: {integrity: sha512-dcQ87Y5MI0xqp+hg8yN4/+2ldpGwikzP7UZIULjKwmIL/GRKt/xHGMiJaw761K0CF/98liB37xeS2qL3/Aq6MA==} + /@dojoengine/utils@0.7.5(starknet@6.10.0)(typescript@5.5.2): + resolution: {integrity: sha512-pglYhEjCu52WtT1aT5J4s4uCtRq9fCywqvxgPRC/SUARjKlLhPHCoEio7MpCGNKIKXMNbzboFIsptDWBMryzeQ==} peerDependencies: starknet: ^6.1.5 dependencies: diff --git a/src/App.module.css b/src/App.module.css index f4b146e..b737826 100644 --- a/src/App.module.css +++ b/src/App.module.css @@ -102,6 +102,39 @@ body { filter: blur(5px); } +.proposalListContainer { + position: absolute; + top: 64px; + left: 10px; + width: 420px; + max-height: calc(100vh - 64px); + background: rgba(31, 41, 55, 0.75); + border-radius: 8px; + overflow-y: hidden; + z-index: 1000; + padding: 16px; + padding-bottom: 0%; +} + + .openButton { + position: fixed; + top: 50%; + left: 0; + transform: translateY(-50%); + background: blue; + color: white; + border: none; + border-radius: 4px 0 0 4px; + padding: 16px; + cursor: pointer; + z-index: 1000; + writing-mode: vertical-rl; + text-orientation: mixed; + } + + + + .container { background-color: var(--bg-primary); /* Replace with the actual color value if different */ min-height: 100vh; /* Equivalent to min-h-screen */ diff --git a/src/App.tsx b/src/App.tsx index 09a948d..5d25bf6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -20,6 +20,9 @@ import Governance from "@/pages/Governance.js"; import NewProposal from "@/pages/NewProposal.js"; import ProposalDetails from "@/pages/ProposalDetails.js"; import { RiArrowGoBackFill } from "react-icons/ri"; +import NewProposalPopupForMain from '@/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx'; +import { FaArrowDown, FaArrowUp } from 'react-icons/fa'; +import ProposalListForMain from './components/NewProposalPopupForMain/ProposalListForMain'; function App() { @@ -54,6 +57,7 @@ function App() { // FIXME: should be in the ViewStateStore?? const [isColorPickerVisible, setIsColorPickerVisible] = useState(false); + const [isProposalListVisible, setIsProposalListVisible] = useState(true); // const colorPickerRef = useRef(null); useDojoInteractHandler(pixelStore, gameData!); @@ -94,6 +98,10 @@ function App() { setIsColorPickerVisible(prevState => !prevState); } + function toggleProposalList() { + setIsProposalListVisible(prevState => !prevState); + } + // useEffect(() => { // function handleClickOutside(event: MouseEvent) { // if (colorPickerRef.current && !colorPickerRef.current.contains(event.target as Node)) { @@ -184,6 +192,27 @@ function App() {
+
+
+
+ Proposals +
+ +
+ {isProposalListVisible && ( +
+
+ +
+
+ +
+
+ )} +
+
+ )} + + {isCreatingNewProposal && ( +
+ {/*
*/} + {/*
*/} +
+
+

New Proposal

+
+ + +
+ + {proposalType === 'Add Color' && ( +
+ +
+
setShowColorPicker(!showColorPicker)} + >
+ setColor(e.target.value.toUpperCase())} + className='w-full p-2 rounded-md bg-gray-700 text-white' + /> + {showColorPicker && ( +
+ +
+ )} +
+
+ )} + + {proposalType === 'Make A Disaster' && ( +
+ + +
+
+ + +
+
+
+ )} +
+ ); +}; + +export default ProposalListForMain; From 2e8ea86bd8079819008ca1145c88f5a3d80e26e8 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Thu, 27 Jun 2024 09:03:29 +0100 Subject: [PATCH 25/71] docs: update README --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 238e72f..ef5dece 100644 --- a/README.md +++ b/README.md @@ -9,5 +9,18 @@ It turned out in rearchitecting everything from the ground up, mostly to be able - So to the left of x=0 is now x=4_294_967_295 but it all "just works" # How to run it -- It's a regular Vite+React project, but you'll need the PixeLAW Core (dev)container running somewhere too. +please run [p_war](https://github.com/pixelaw/p_war) first. +```zsh +$ git clone git@github.com:pixelaw/p_war.git +$ cd ./p_war +``` + +then, please open the directory by using vscode, and build container with devcontainer. + +```zsh +$ cd ../ +$ git clone git@github.com:pixelaw/p_war_client.git +$ pnpm i +$ pnpm run dev +``` \ No newline at end of file From 41d73980c2a1df70faf3881233ab21fe8db1cc87 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Thu, 27 Jun 2024 15:40:14 +0100 Subject: [PATCH 26/71] feat: add createProposal --- .../NewProposalPopupForMain.tsx | 26 ++++++++++++++----- src/global/utils.ts | 3 ++- src/pages/NewProposal.tsx | 4 +-- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx b/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx index b1e2df1..f2b1773 100644 --- a/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx +++ b/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx @@ -2,6 +2,11 @@ import React, { useState, useEffect, useRef } from 'react'; // import { Link } from 'react-router-dom'; import { SketchPicker } from 'react-color'; import Select from 'react-select'; +import {ProposalType} from "@/global/types"; +import {GAME_ID} from "@/global/constants"; +import {usePixelawProvider} from "@/providers/PixelawProvider"; +import {hexRGBtoNumberRGBA} from "@/global/utils.ts"; + const NewProposalPopupForMain: React.FC = () => { const [proposalType, setProposalType] = useState('Add Color'); @@ -13,6 +18,8 @@ const NewProposalPopupForMain: React.FC = () => { const colorPickerRef = useRef(null); const popupRef = useRef(null); + const {gameData} = usePixelawProvider(); + const handleColorChange = (color: any) => { setColor(color.hex); }; @@ -43,13 +50,18 @@ const NewProposalPopupForMain: React.FC = () => { }, []); const handleSubmit = () => { - const proposalData = { - proposalType, - color, - disasterColor, - comments, - }; - console.log(proposalData); + const type = proposalType === + 'Add Color' ? ProposalType.AddNewColor : ProposalType.MakeADisasterByColor; + if (gameData && gameData.account.account) { + gameData.setup.systemCalls.createProposal( + gameData.account.account, + GAME_ID, + type, + hexRGBtoNumberRGBA(color.replace('#', '')) + ).then(() => { + setIsCreatingNewProposal(false); + }) + } }; const colors = [ diff --git a/src/global/utils.ts b/src/global/utils.ts index 2dc289f..10e1474 100644 --- a/src/global/utils.ts +++ b/src/global/utils.ts @@ -77,10 +77,11 @@ export const coordinateToPosition = (coord: Coordinate): Position => { } // use this for making a new proposal -export const hexRGBtoNumber_tailzeros = (color: string) => { +export const hexRGBtoNumberRGBA = (color: string) => { return parseInt(`0x${color}00`, 16) } + // use this to treat pixel colors. // Fixed here to remove the alpha channel. (which caused the color error.) export const hexRGBtoNumber = (color: string) => { diff --git a/src/pages/NewProposal.tsx b/src/pages/NewProposal.tsx index 920b661..3dfd9f8 100644 --- a/src/pages/NewProposal.tsx +++ b/src/pages/NewProposal.tsx @@ -5,7 +5,7 @@ import Select from 'react-select'; import {usePixelawProvider} from "@/providers/PixelawProvider"; import {ProposalType} from "@/global/types"; import {GAME_ID} from "@/global/constants"; -import {hexRGBtoNumber, hexRGBtoNumber_tailzeros} from "@/global/utils.ts"; +import {hexRGBtoNumber, hexRGBtoNumberRGBA} from "@/global/utils.ts"; const NewProposal: React.FC = () => { const [proposalType, setProposalType] = useState('Add Color'); @@ -41,7 +41,7 @@ const NewProposal: React.FC = () => { gameData.account.account, GAME_ID, type, - hexRGBtoNumber_tailzeros(color.replace('#', '')) + hexRGBtoNumberRGBA(color.replace('#', '')) ).then(() => navigate('/governance')) } }; From da0d691504976ba6aa0ffa7400d8ee9a5c031ba7 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Thu, 27 Jun 2024 16:53:21 +0100 Subject: [PATCH 27/71] fix: modified UI --- src/components/ProposalList/ProposalItem.tsx | 26 +++++++++++++------- tailwind.config.js | 4 +-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/components/ProposalList/ProposalItem.tsx b/src/components/ProposalList/ProposalItem.tsx index f6f7aea..5c2e2d2 100644 --- a/src/components/ProposalList/ProposalItem.tsx +++ b/src/components/ProposalList/ProposalItem.tsx @@ -16,8 +16,8 @@ type PropsType = { const createProposalTitle = (proposalType: ProposalType, hexColor: string) => { switch (proposalType) { - case ProposalType.AddNewColor: return `Adding A New Color: ${hexColor}` - case ProposalType.MakeADisasterByColor: return `Make a Disaster by Color: ${hexColor}` + case ProposalType.AddNewColor: return `Adding A New Color: ${hexColor.toUpperCase()}` + case ProposalType.MakeADisasterByColor: return `Make a Disaster by Color: ${hexColor.toUpperCase()}` default: { console.error('unhandled proposal type: ', proposalType) return '' @@ -102,6 +102,12 @@ const ProposalItem: React.FC = ({ entityId, onStartVote, filter, sear }) } + const formatWalletAddress = (author: string) => { + if (author.length > 10) { + return `${author.slice(0, 4)}...${author.slice(-4)}`; + } + return author; + }; return ( @@ -109,7 +115,7 @@ const ProposalItem: React.FC = ({ entityId, onStartVote, filter, sear className='relative bg-gray-800 p-4 rounded-md border border-gray-700 hover:border-gray-600 transition-colors duration-300'>
-
+
{title} {hexColor && (
= ({ entityId, onStartVote, filter, sear )}
+ className={`px-2 py-1 rounded-md text-white text-xs ${getStatusColor(proposalStatus)}`}> {proposalStatus}
-
- proposed by {proposal.author.toString()} +
+ proposed by {formatWalletAddress(proposal.author.toString())}
= ({ entityId, onStartVote, filter, sear style={{width: `${(proposal.no_px / (proposal.yes_px + proposal.no_px)) * 100}%`}} >
-
+
For {proposal.yes_px} points
@@ -146,11 +152,13 @@ const ProposalItem: React.FC = ({ entityId, onStartVote, filter, sear
) diff --git a/tailwind.config.js b/tailwind.config.js index de8f42a..6c6c8a9 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -68,8 +68,8 @@ module.exports = { }, borderRadius: { lg: "var(--radius)", - md: "calc(var(--radius) - 2px)", - sm: "calc(var(--radius) - 4px)", + // md: "calc(var(--radius) - 2px)", + // sm: "calc(var(--radius) - 4px)", }, padding: { 'xs': '15px', From 72ecf4a1c489a3447cc302ff04221b95a1177c5c Mon Sep 17 00:00:00 2001 From: Caspar Oostendorp Date: Fri, 28 Jun 2024 06:25:59 +0800 Subject: [PATCH 28/71] Add Settings page with CSS module and update App.tsx to import it correctly --- src/App.tsx | 2 +- src/{components => pages}/Settings/Settings.module.css | 0 src/{components => pages}/Settings/Settings.tsx | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename src/{components => pages}/Settings/Settings.module.css (100%) rename src/{components => pages}/Settings/Settings.tsx (100%) diff --git a/src/App.tsx b/src/App.tsx index 09a948d..3d6b547 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -11,7 +11,7 @@ import Apps from "@/components/Apps/Apps.tsx"; import {useDojoAppStore} from "@/stores/DojoAppStore.ts"; import {Route, Routes} from "react-router-dom"; import Loading from "@/components/Loading/Loading.tsx"; -import Settings from "@/components/Settings/Settings.tsx"; +import Settings from "@/pages/Settings/Settings.tsx"; import {usePixelawProvider} from "@/providers/PixelawProvider.tsx"; import {useViewStateStore, useSyncedViewStateStore} from "@/stores/ViewStateStore.ts"; import {useDojoInteractHandler} from "@/hooks/useDojoInteractHandler.ts"; diff --git a/src/components/Settings/Settings.module.css b/src/pages/Settings/Settings.module.css similarity index 100% rename from src/components/Settings/Settings.module.css rename to src/pages/Settings/Settings.module.css diff --git a/src/components/Settings/Settings.tsx b/src/pages/Settings/Settings.tsx similarity index 100% rename from src/components/Settings/Settings.tsx rename to src/pages/Settings/Settings.tsx From cf519e29d8f6dd27e9faf9450b15ba4bdd4fb16e Mon Sep 17 00:00:00 2001 From: Caspar Oostendorp Date: Fri, 28 Jun 2024 06:55:06 +0800 Subject: [PATCH 29/71] Refactor color conversion functions and use numRGBAToHex in drawPixels method --- src/global/utils.ts | 9 +-------- src/pages/NewProposal.tsx | 4 ++-- src/webtools/components/Viewport/drawPixels.ts | 5 ++--- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/global/utils.ts b/src/global/utils.ts index 2dc289f..669f2a3 100644 --- a/src/global/utils.ts +++ b/src/global/utils.ts @@ -76,15 +76,8 @@ export const coordinateToPosition = (coord: Coordinate): Position => { return {x: coord[0], y: coord[1]} } -// use this for making a new proposal -export const hexRGBtoNumber_tailzeros = (color: string) => { - return parseInt(`0x${color}00`, 16) -} - -// use this to treat pixel colors. -// Fixed here to remove the alpha channel. (which caused the color error.) export const hexRGBtoNumber = (color: string) => { - return parseInt(`0x00${color}`, 16) + return parseInt(`0x${color}00`, 16) } // Converts the numeric RGBA to a normal hex color diff --git a/src/pages/NewProposal.tsx b/src/pages/NewProposal.tsx index 920b661..0079c43 100644 --- a/src/pages/NewProposal.tsx +++ b/src/pages/NewProposal.tsx @@ -5,7 +5,7 @@ import Select from 'react-select'; import {usePixelawProvider} from "@/providers/PixelawProvider"; import {ProposalType} from "@/global/types"; import {GAME_ID} from "@/global/constants"; -import {hexRGBtoNumber, hexRGBtoNumber_tailzeros} from "@/global/utils.ts"; +import {hexRGBtoNumber} from "@/global/utils.ts"; const NewProposal: React.FC = () => { const [proposalType, setProposalType] = useState('Add Color'); @@ -41,7 +41,7 @@ const NewProposal: React.FC = () => { gameData.account.account, GAME_ID, type, - hexRGBtoNumber_tailzeros(color.replace('#', '')) + hexRGBtoNumber(color.replace('#', '')) ).then(() => navigate('/governance')) } }; diff --git a/src/webtools/components/Viewport/drawPixels.ts b/src/webtools/components/Viewport/drawPixels.ts index a088a1d..0240d43 100644 --- a/src/webtools/components/Viewport/drawPixels.ts +++ b/src/webtools/components/Viewport/drawPixels.ts @@ -1,6 +1,7 @@ import {Coordinate, Dimension, Pixel} from "../../types.ts"; import {getCellSize, numRGBToHex, applyWorldOffset} from "../../utils.ts"; import {ZOOM_TILEMODE} from "./constants.ts"; +import {numRGBAToHex} from "@/global/utils.ts"; export function drawPixels( context: CanvasRenderingContext2D, @@ -32,9 +33,7 @@ export function drawPixels( const pixel = getPixel(worldCoords); if (!pixel) return; - // context.fillStyle = numRGBAToHex(pixel.color as number); - context.fillStyle = numRGBToHex(pixel.color as number); - // context.fillStyle = numRGBAToHex(pixel.color); + context.fillStyle = numRGBAToHex(pixel.color as number); const [x, y, w, h] = getRect(offsets, cellX, cellY, cellSize, doBorder, sizeAdjustment) From 83afa4b351c30c441a938def7e4e7fbf69d72a47 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Fri, 28 Jun 2024 17:40:24 +0100 Subject: [PATCH 30/71] fix: error about hexRGBtoNumberRGBA --- .../NewProposalPopupForMain/NewProposalPopupForMain.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx b/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx index f2b1773..da6fef5 100644 --- a/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx +++ b/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx @@ -5,7 +5,7 @@ import Select from 'react-select'; import {ProposalType} from "@/global/types"; import {GAME_ID} from "@/global/constants"; import {usePixelawProvider} from "@/providers/PixelawProvider"; -import {hexRGBtoNumberRGBA} from "@/global/utils.ts"; +import {hexRGBtoNumber} from "@/global/utils.ts"; const NewProposalPopupForMain: React.FC = () => { @@ -57,7 +57,7 @@ const NewProposalPopupForMain: React.FC = () => { gameData.account.account, GAME_ID, type, - hexRGBtoNumberRGBA(color.replace('#', '')) + hexRGBtoNumber(color.replace('#', '')) ).then(() => { setIsCreatingNewProposal(false); }) From 9451e8bfd8b42f29b31d29e6eaa20e44b8ef8dd8 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Fri, 28 Jun 2024 19:55:30 +0100 Subject: [PATCH 31/71] feat: add popup-proposals --- src/App.module.css | 2 +- src/components/MenuBar/MenuBar.tsx | 2 +- .../NewProposalPopupForMain.tsx | 52 ++++++++++++++----- src/components/ProposalList/ProposalItem.tsx | 34 +++++++++--- src/global/utils.ts | 4 ++ 5 files changed, 72 insertions(+), 22 deletions(-) diff --git a/src/App.module.css b/src/App.module.css index b737826..cec4ebf 100644 --- a/src/App.module.css +++ b/src/App.module.css @@ -106,7 +106,7 @@ body { position: absolute; top: 64px; left: 10px; - width: 420px; + width: 450px; max-height: calc(100vh - 64px); background: rgba(31, 41, 55, 0.75); border-radius: 8px; diff --git a/src/components/MenuBar/MenuBar.tsx b/src/components/MenuBar/MenuBar.tsx index 9b8adff..02ef830 100644 --- a/src/components/MenuBar/MenuBar.tsx +++ b/src/components/MenuBar/MenuBar.tsx @@ -25,7 +25,7 @@ const MenuBar: React.FC = () => {
- {showGovernance && } + {/* {showGovernance && } */} {!showGovernance && }
diff --git a/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx b/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx index da6fef5..fbc0bfa 100644 --- a/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx +++ b/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx @@ -10,10 +10,10 @@ import {hexRGBtoNumber} from "@/global/utils.ts"; const NewProposalPopupForMain: React.FC = () => { const [proposalType, setProposalType] = useState('Add Color'); - const [color, setColor] = useState('#FFFFFF'); + const [color, setColor] = useState('#FFFFFF00'); const [isCreatingNewProposal, setIsCreatingNewProposal] = useState(false); - const [disasterColor, setDisasterColor] = useState('#FFFFFF'); - const [comments, setComments] = useState(''); + // const [disasterColor, setDisasterColor] = useState('#FFFFFF00'); // only handle color. + // const [comments, setComments] = useState(''); const [showColorPicker, setShowColorPicker] = useState(false); const colorPickerRef = useRef(null); const popupRef = useRef(null); @@ -25,7 +25,9 @@ const NewProposalPopupForMain: React.FC = () => { }; const handleDisasterColorChange = (selectedOption: any) => { - setDisasterColor(selectedOption.value); + console.log(selectedOption.value); + setColor(formatColorToRGBA(selectedOption.value)); // to submit the color. + // setDisasterColor(selectedOption.value); }; const handleClickOutside = (event: MouseEvent) => { @@ -57,17 +59,37 @@ const NewProposalPopupForMain: React.FC = () => { gameData.account.account, GAME_ID, type, - hexRGBtoNumber(color.replace('#', '')) + hexRGBtoNumber(formatColorToRGB(color).replace('#', '')) ).then(() => { setIsCreatingNewProposal(false); }) } }; + function formatColorToRGBA(color: string) { + if (color.length === 7 && color.startsWith('#')) { + return color + '00'; + } else if (color.length === 9 && color.startsWith('#')) { + return color; + } else { + return color; + } + } + + function formatColorToRGB(color: string) { + if (color.length === 7 && color.startsWith('#')) { + return color; + } else if (color.length === 9 && color.startsWith('#')) { + return color.slice(0, -2); + } else { + return color; + } + } + const colors = [ - '#000000', - '#FF00FF', - '#00FFFF', + '#00000000', + '#FF00FF00', + '#00FFFF00', ]; const colorOptionsFormatted = colors.map(color => ({ @@ -76,9 +98,9 @@ const NewProposalPopupForMain: React.FC = () => {
- {color} + {formatColorToRGB(color)}
), })); @@ -142,13 +164,15 @@ const NewProposalPopupForMain: React.FC = () => {
setShowColorPicker(!showColorPicker)} >
setColor(e.target.value.toUpperCase())} + value={formatColorToRGB(color)} + onChange={(e) => { + setColor(formatColorToRGBA(e.target.value.toUpperCase())); + }} // add 00 className='w-full p-2 rounded-md bg-gray-700 text-white' /> {showColorPicker && ( @@ -164,7 +188,7 @@ const NewProposalPopupForMain: React.FC = () => {
= ({ headerHeight }) => { +const ProposalListForMain: React.FC = ({ headerHeight, statusFilter }) => { const [filterOpen, setFilterOpen] = useState(false); - const [statusFilter, setStatusFilter] = useState<'All' | 'Active' | 'Closed'>('All'); + // const [statusFilter, setStatusFilter] = useState<'All' | 'Active' | 'Closed'>('All'); const [searchTerm, setSearchTerm] = useState(''); const filterRef = useRef(null); const modalRef = useRef(null); @@ -47,23 +48,6 @@ const ProposalListForMain: React.FC = ({ headerHeight const { gameData } = usePixelawProvider(); const proposalArray = useEntityQuery([Has(gameData!.setup.contractComponents.Proposal)], { updateOnValueChange: true }) - - // const filteredProposals = proposals.filter(proposal => { - // if (statusFilter !== 'All') { - // if (statusFilter === 'Active' && !proposal.status.startsWith('end in')) { - // return false; - // } - // if (statusFilter === 'Closed' && proposal.status !== 'closed') { - // return false; - // } - // } - // if (searchTerm) { - // return proposal.title.toLowerCase().includes(searchTerm.toLowerCase()) || - // proposal.proposer.toLowerCase().includes(searchTerm.toLowerCase()); - // } - // return true; - // }); - const getStatusColor = (status: string) => { if (status.startsWith('end in')) { return 'bg-green-500'; diff --git a/src/components/ProposalList/ProposalItem.tsx b/src/components/ProposalList/ProposalItem.tsx index 347eaab..a172fd5 100644 --- a/src/components/ProposalList/ProposalItem.tsx +++ b/src/components/ProposalList/ProposalItem.tsx @@ -36,6 +36,17 @@ const getStatusColor = (status: string) => { } }; +// doesn't work correctly... +const getTextColor = (proposal: any) => { + if (proposal.status === 'Closed' && proposal.yes_px > proposal.no_px) { + return 'text-green'; + } else if (proposal.status === 'Closed' && proposal.yes_px < proposal.no_px) { + return 'text-red'; + } else { + return 'text-white'; + } + }; + const ProposalItem: React.FC = ({ entityId, onStartVote, filter, searchTerm }) => { const { gameData } = usePixelawProvider(); const proposal = useComponentValue(gameData!.setup.contractComponents.Proposal, entityId) @@ -137,7 +148,7 @@ const ProposalItem: React.FC = ({ entityId, onStartVote, filter, sear className={containerClassName}>
-
+
{title} {hexColor && (
Date: Sat, 29 Jun 2024 16:53:54 +0100 Subject: [PATCH 33/71] feat: show address --- src/App.tsx | 2 +- src/components/MenuBar/MenuBar.module.css | 19 ++++++ src/components/MenuBar/MenuBar.tsx | 28 +++++--- .../NewProposalPopupForMain/proposals.tsx | 64 +++++++++++++++++++ src/components/ProposalList/ProposalItem.tsx | 8 +-- src/global/utils.ts | 19 ++++-- 6 files changed, 116 insertions(+), 24 deletions(-) create mode 100644 src/components/NewProposalPopupForMain/proposals.tsx diff --git a/src/App.tsx b/src/App.tsx index 2ac9d78..cde0609 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -180,7 +180,7 @@ function App() { return ( //
- +
diff --git a/src/components/MenuBar/MenuBar.module.css b/src/components/MenuBar/MenuBar.module.css index d952801..7485a24 100644 --- a/src/components/MenuBar/MenuBar.module.css +++ b/src/components/MenuBar/MenuBar.module.css @@ -9,3 +9,22 @@ .menuButton { /* Add this class */ @apply text-white bg-blue-500 hover:bg-blue-700 font-bold py-2 px-4 rounded; } + +.rightSection { + @apply flex items-center gap-4; +} + +.addressContainer { + @apply flex items-center gap-2; +} + +.addressContainer { + background-color: rgba(255, 255, 255, 0.1); + border-radius: 12px; + padding: 8px 16px; + /* margin-right: 20px; */ + font-family: 'Roboto Mono', monospace; + font-size: 14px; + color: #fff; + letter-spacing: 0.5px; +} \ No newline at end of file diff --git a/src/components/MenuBar/MenuBar.tsx b/src/components/MenuBar/MenuBar.tsx index 02ef830..7f20382 100644 --- a/src/components/MenuBar/MenuBar.tsx +++ b/src/components/MenuBar/MenuBar.tsx @@ -1,20 +1,24 @@ import React from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import styles from './MenuBar.module.css'; +import { formatWalletAddress } from "@/global/utils.ts"; -const MenuBar: React.FC = () => { +interface MenuBarProps { + address: string; +}; + +const MenuBar: React.FC = ({ address }) => { const navigate = useNavigate(); const location = useLocation(); - // Determine if the settings page is shown based on the current path const showSettings = location.pathname === '/settings'; const showGovernance = location.pathname !== '/governance'; const toggleSettings = () => { if (showSettings) { - navigate(-1); // Go back if we're currently showing settings + navigate(-1); } else { - navigate('/settings'); // Navigate to settings if not currently showing + navigate('/settings'); } }; @@ -22,15 +26,19 @@ const MenuBar: React.FC = () => {
navigate('/')}> logo -
-
- {/* {showGovernance && } */} - {!showGovernance && } - + +
+
+ {formatWalletAddress(address.address || '')} +
+
+ {!showGovernance && } + +
); }; -export default MenuBar; +export default MenuBar; \ No newline at end of file diff --git a/src/components/NewProposalPopupForMain/proposals.tsx b/src/components/NewProposalPopupForMain/proposals.tsx new file mode 100644 index 0000000..d30c268 --- /dev/null +++ b/src/components/NewProposalPopupForMain/proposals.tsx @@ -0,0 +1,64 @@ +import { comment } from "postcss"; + +export const proposals = [ + { + id: 1, + title: "Adding A New Color: #FF00FF", + proposer: "shora", + forPoints: 4329, + againstPoints: 30, + status: "end in 5h30m", + statusColor: "bg-green-500", + comments: "This color is very important to me. I need it to express myself.", + }, + { + id: 2, + title: "Extend the p/war event: 24 hours", + proposer: "shora", + forPoints: 250, + againstPoints: 6030, + status: "end in 18h45m", + statusColor: "bg-green-500", + comments: "I think", + }, + { + id: 3, + title: "Add hunter system(future version)", + proposer: "OwnerofJK", + forPoints: 7000, + againstPoints: 30, + status: "closed", + statusColor: "bg-purple-500", + comments: "", + }, + { + id: 4, + title: "Introduce New Voting Mechanism", + proposer: "crypto123", + forPoints: 1200, + againstPoints: 450, + status: "end in 2d14h", + statusColor: "bg-green-500", + comments: "", + }, + { + id: 5, + title: "Increase Reward Points", + proposer: "blockchain_guru", + forPoints: 8000, + againstPoints: 1500, + status: "end in 3d6h", + statusColor: "bg-green-500", + comments: "", + }, + { + id: 6, + title: "Update Governance Rules", + proposer: "dao_master", + forPoints: 500, + againstPoints: 2500, + status: "closed", + statusColor: "bg-purple-500", + comments: "", + } +]; \ No newline at end of file diff --git a/src/components/ProposalList/ProposalItem.tsx b/src/components/ProposalList/ProposalItem.tsx index a172fd5..1957a7a 100644 --- a/src/components/ProposalList/ProposalItem.tsx +++ b/src/components/ProposalList/ProposalItem.tsx @@ -5,6 +5,7 @@ import {usePixelawProvider} from "@/providers/PixelawProvider.tsx"; import {ProposalType} from "@/global/types.ts"; import {numRGBAToHex} from "@/webtools/utils.ts"; import {GAME_ID, NEEDED_YES_PX} from "@/global/constants.ts"; +import { formatWalletAddress } from "@/global/utils.ts"; type PropsType = { entityId: Entity, @@ -133,13 +134,6 @@ const ProposalItem: React.FC = ({ entityId, onStartVote, filter, sear }) } - const formatWalletAddress = (author: string) => { - if (author.length > 10) { - return `${author.slice(0, 4)}...${author.slice(-4)}`; - } - return author; - }; - const containerClassName = `relative p-4 rounded-md border transition-colors duration-300 ${proposalStatus === 'closed' ? 'bg-gray-600 border-gray-700' : 'bg-gray-800 border-gray-700 hover:border-gray-600'}`; return ( diff --git a/src/global/utils.ts b/src/global/utils.ts index 3a318b4..d307bda 100644 --- a/src/global/utils.ts +++ b/src/global/utils.ts @@ -63,13 +63,20 @@ export const felt252ToUnicode = (felt252: string | number) => { return string } -export const formatAddress = (address: string) => { - if (address.length > 30) { - return address.substr(0, 6) + '...' + address.substr(address.length - 4, address.length) - } +// export const formatAddress = (address: string) => { +// if (address.length > 30) { +// return address.substr(0, 6) + '...' + address.substr(address.length - 4, address.length) +// } - return address -} +// return address +// } + +export const formatWalletAddress = (address: string) => { + if (address.length > 10) { + return `${address.slice(0, 4)}...${address.slice(-4)}`; + } + return address; +}; // Takes a RGB hex nr and converts it to numeric rgba (0 alpha) export const coordinateToPosition = (coord: Coordinate): Position => { From 3f179055a01cfa9d39f4651e2198722d922f6e86 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Sat, 29 Jun 2024 17:47:09 +0100 Subject: [PATCH 34/71] feat: show time limit --- src/App.tsx | 32 ++++++++++------------- src/components/MenuBar/MenuBar.module.css | 8 ++++++ src/components/MenuBar/MenuBar.tsx | 31 ++++++++++++++++++++-- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index cde0609..b6c5bb2 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -24,6 +24,9 @@ import NewProposalPopupForMain from '@/components/NewProposalPopupForMain/NewPro import { FaArrowDown, FaArrowUp, FaFilter } from 'react-icons/fa'; import ProposalListForMain from './components/NewProposalPopupForMain/ProposalListForMain'; import FilterMenu from './components/FilterMenu/FilterMenu'; +import {Has} from "@dojoengine/recs"; +import {useEntityQuery, useComponentValue} from "@dojoengine/react"; + function App() { // console.log("App") @@ -66,6 +69,10 @@ function App() { useDojoInteractHandler(pixelStore, gameData!); useSyncedViewStateStore(); // + // console.log(gameData?.setup.contractComponents.Game); + + // const proposal = useComponentValue(gameData!.setup.contractComponents.Proposal, entityId) + // useEffect(() => { @@ -117,22 +124,7 @@ function App() { document.removeEventListener('mousedown', handleClickOutside); }; }, []); - // useEffect(() => { - // function handleClickOutside(event: MouseEvent) { - // if (colorPickerRef.current && !colorPickerRef.current.contains(event.target as Node)) { - // setIsColorPickerVisible(false); - // } - // } - // if (isColorPickerVisible) { - // document.addEventListener("mousedown", handleClickOutside); - // } else { - // document.removeEventListener("mousedown", handleClickOutside); - // } - // return () => { - // document.removeEventListener("mousedown", handleClickOutside); - // }; - // }, [isColorPickerVisible]); - + // // @@ -177,11 +169,15 @@ function App() { document.title = "PixeLAW: World"; + + // get end date (FIXME: It's not smooth...) + const endTimestamp = gameData?.setup.contractComponents.Game.values.end.entries().next().value[1]; + const endDate = new Date(endTimestamp * 1000); + return ( //
- - + {/* have to get from game status*/}
diff --git a/src/components/MenuBar/MenuBar.module.css b/src/components/MenuBar/MenuBar.module.css index 7485a24..01ce600 100644 --- a/src/components/MenuBar/MenuBar.module.css +++ b/src/components/MenuBar/MenuBar.module.css @@ -27,4 +27,12 @@ font-size: 14px; color: #fff; letter-spacing: 0.5px; +} + +.countdownContainer { + font-family: 'Roboto Mono', monospace; + font-size: 24px; + font-weight: bold; + color: #FFD700; + text-shadow: 0 0 10px rgba(255, 215, 0, 0.5); } \ No newline at end of file diff --git a/src/components/MenuBar/MenuBar.tsx b/src/components/MenuBar/MenuBar.tsx index 7f20382..52f6db2 100644 --- a/src/components/MenuBar/MenuBar.tsx +++ b/src/components/MenuBar/MenuBar.tsx @@ -1,15 +1,17 @@ -import React from 'react'; +import React, { useState, useEffect } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import styles from './MenuBar.module.css'; import { formatWalletAddress } from "@/global/utils.ts"; interface MenuBarProps { address: string; + endTime: Date; }; -const MenuBar: React.FC = ({ address }) => { +const MenuBar: React.FC = ({ address, endTime }) => { const navigate = useNavigate(); const location = useLocation(); + const [timeLeft, setTimeLeft] = useState(''); const showSettings = location.pathname === '/settings'; const showGovernance = location.pathname !== '/governance'; @@ -22,12 +24,37 @@ const MenuBar: React.FC = ({ address }) => { } }; + useEffect(() => { + const timer = setInterval(() => { + const now = new Date(); + const difference = endTime.getTime() - now.getTime(); + + if (difference > 0) { + const days = Math.floor(difference / (1000 * 60 * 60 * 24)); + const hours = Math.floor((difference / (1000 * 60 * 60)) % 24); + const minutes = Math.floor((difference / 1000 / 60) % 60); + const seconds = Math.floor((difference / 1000) % 60); + + setTimeLeft(`${days.toString().padStart(2, '0')}:${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`); + } else { + setTimeLeft('00:00:00:00'); + clearInterval(timer); + } + }, 1000); + + return () => clearInterval(timer); + }, [endTime]); + return (
navigate('/')}> logo
+
+ {timeLeft} +
+
{formatWalletAddress(address.address || '')} From 3119f8c8baceb18982356a077ebcab3958ffcb1c Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Sat, 29 Jun 2024 17:52:52 +0100 Subject: [PATCH 35/71] fix: bugs about initial states --- src/App.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index b6c5bb2..f91f8a7 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -64,6 +64,7 @@ function App() { const [filterOpen, setFilterOpen] = useState(false); const [statusFilter, setStatusFilter] = useState<'All' | 'Active' | 'Closed'>('All'); const filterRef = useRef(null); + const [endDate, setEndDate] = useState(new Date()); // const colorPickerRef = useRef(null); useDojoInteractHandler(pixelStore, gameData!); @@ -171,8 +172,13 @@ function App() { // get end date (FIXME: It's not smooth...) - const endTimestamp = gameData?.setup.contractComponents.Game.values.end.entries().next().value[1]; - const endDate = new Date(endTimestamp * 1000); + const game_entries = gameData?.setup.contractComponents.Game.values.end?.entries(); + const first_game = game_entries?.next().value; + + if (first_game) { + const endTimestamp = first_game[1]; + setEndDate(new Date(endTimestamp * 1000)); + } return ( //
From 0e9d17b6a11b5ae226bcf58333a44fae636a1c95 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Sat, 29 Jun 2024 18:03:54 +0100 Subject: [PATCH 36/71] fix: bugs about initial states --- src/App.tsx | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index f91f8a7..2642b2c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -60,7 +60,7 @@ function App() { // FIXME: should be in the ViewStateStore?? const [isColorPickerVisible, setIsColorPickerVisible] = useState(false); - const [isProposalListVisible, setIsProposalListVisible] = useState(true); + const [isProposalListVisible, setIsProposalListVisible] = useState(false); const [filterOpen, setFilterOpen] = useState(false); const [statusFilter, setStatusFilter] = useState<'All' | 'Active' | 'Closed'>('All'); const filterRef = useRef(null); @@ -74,6 +74,18 @@ function App() { // const proposal = useComponentValue(gameData!.setup.contractComponents.Proposal, entityId) + // get end date (FIXME: It's not smooth...) + useEffect(() => { + if (gameData?.setup?.contractComponents?.Game?.values?.end) { + const gameEntries = gameData.setup.contractComponents.Game.values.end.entries(); + const firstGame = gameEntries.next().value; + + if (firstGame) { + const endTimestamp = firstGame[1]; + setEndDate(new Date(endTimestamp * 1000)); + } + } + }, [gameData]); // useEffect(() => { @@ -169,16 +181,6 @@ function App() { } document.title = "PixeLAW: World"; - - - // get end date (FIXME: It's not smooth...) - const game_entries = gameData?.setup.contractComponents.Game.values.end?.entries(); - const first_game = game_entries?.next().value; - - if (first_game) { - const endTimestamp = first_game[1]; - setEndDate(new Date(endTimestamp * 1000)); - } return ( //
From fdde0338c38189ca89f2e29dfb9243150815a7f5 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Sat, 29 Jun 2024 18:11:29 +0100 Subject: [PATCH 37/71] chore: add comments to show TODO(current_px) --- src/App.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/App.tsx b/src/App.tsx index 2642b2c..c9ec490 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -181,11 +181,15 @@ function App() { } document.title = "PixeLAW: World"; + + // TODO: show current_px / max_px to MenuBar + // const tmp = gameData?.setup.contractComponents.Player.values; + // console.log(tmp); return ( //
- {/* have to get from game status*/} +
From 854b0286a17be5c4dde6943746a58c11de1e50d0 Mon Sep 17 00:00:00 2001 From: 0xshora <112358132134.fibon@gmail.com> Date: Sun, 30 Jun 2024 17:43:05 +0100 Subject: [PATCH 38/71] chore: changed the name from MakeADisaster to ResetToWhite --- .../NewProposalPopupForMain/NewProposalPopupForMain.tsx | 6 +++--- src/components/ProposalList/ProposalItem.tsx | 2 +- src/global/types.ts | 4 +++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx b/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx index fbc0bfa..3b4974d 100644 --- a/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx +++ b/src/components/NewProposalPopupForMain/NewProposalPopupForMain.tsx @@ -53,7 +53,7 @@ const NewProposalPopupForMain: React.FC = () => { const handleSubmit = () => { const type = proposalType === - 'Add Color' ? ProposalType.AddNewColor : ProposalType.MakeADisasterByColor; + 'Add Color' ? ProposalType.AddNewColor : ProposalType.ResetToWhiteByColor; if (gameData && gameData.account.account) { gameData.setup.systemCalls.createProposal( gameData.account.account, @@ -154,7 +154,7 @@ const NewProposalPopupForMain: React.FC = () => { className='w-full p-3 rounded-md bg-gray-700 text-white' > - +
@@ -184,7 +184,7 @@ const NewProposalPopupForMain: React.FC = () => {
)} - {proposalType === 'Make A Disaster' && ( + {proposalType === 'Reset To White' && (