From 2c658f9150ab7e5e1cbee85ae842b39a3a9c66c9 Mon Sep 17 00:00:00 2001 From: notV4l Date: Sat, 23 Mar 2024 01:36:10 +0100 Subject: [PATCH] 420 & 421 --- Scarb.toml | 26 +- src/config/game.cairo | 2 +- web/.env.development | 7 - web/.env.production | 13 - web/package.json | 4 +- web/pnpm-lock.yaml | 829 ++++++++++-------- web/src/components/layout/Header.tsx | 4 +- web/src/components/wallet/Burners.tsx | 20 + web/src/components/wallet/ChainSelector.tsx | 46 +- .../components/wallet/StarknetProvider.tsx | 18 +- web/src/components/wallet/chain/katana.ts | 53 -- web/src/components/wallet/index.ts | 2 + web/src/components/wallet/inpage/icons.ts | 2 - web/src/components/wallet/inpage/index.ts | 111 --- .../wallet/inpage/starknetWindowObject.ts | 364 ++++---- .../components/wallet/ui/BurnerManagerUi.tsx | 101 +++ web/src/dojo/context/DojoContext.tsx | 53 +- web/src/dojo/hooks/useDojoChains.ts | 4 +- web/src/dojo/setup/chains.ts | 36 +- web/src/dojo/setup/config.ts | 26 +- web/src/dojo/setup/setup.ts | 37 - web/src/dojo/stores/config.tsx | 2 +- web/src/dojo/stores/game.tsx | 2 +- web/src/hooks/media.tsx | 34 +- web/src/pages/_app.tsx | 10 +- 25 files changed, 934 insertions(+), 872 deletions(-) create mode 100644 web/src/components/wallet/Burners.tsx delete mode 100644 web/src/components/wallet/chain/katana.ts delete mode 100644 web/src/components/wallet/inpage/icons.ts delete mode 100644 web/src/components/wallet/inpage/index.ts create mode 100644 web/src/components/wallet/ui/BurnerManagerUi.tsx delete mode 100644 web/src/dojo/setup/setup.ts diff --git a/Scarb.toml b/Scarb.toml index 523c595a9..ce6f44be8 100644 --- a/Scarb.toml +++ b/Scarb.toml @@ -15,23 +15,43 @@ token = { git = "https://github.com/dojoengine/origami", tag = "v0.6.0-alpha.3" katana = "katana --disable-fee --invoke-max-steps 999999999" build = "sozo build && scarb run gendojo" gendojo = "./scripts/gen.sh" + +# auth auth = "./scripts/default_auth.sh dev" -auth_staging = "./scripts/default_auth.sh staging" +auth_ryo420 = "./scripts/default_auth.sh ryo420" +auth_ryo421 = "./scripts/default_auth.sh ryo421" auth_prod = "./scripts/default_auth.sh prod" + +# migrate migrate = "sozo -P dev migrate && scarb run gendojo && scarb run auth" -migrate_staging = "sozo -P staging build && sozo -P staging migrate && scarb run auth_staging" +migrate_ryo420 = "sozo -P ryo420 build && sozo -P ryo420 migrate && scarb run auth_ryo420" +migrate_ryo421 = "sozo -P ryo421 build && sozo -P ryo421 migrate && scarb run auth_ryo421" migrate_prod = "sozo -P prod migrate" +# slot ryo420 +slot_ryo420_katana="slot d create ryo420 katana --seed 420 --version v0.6.0-alpha.3 --chain-id KATANA_SLOT_420" +slot_ryo420_torii="slot d create ryo420 torii --rpc https://api.cartridge.gg/x/ryo420/katana -s 0 --version v0.6.0-alpha.3 --world 0x8d9e00f20d1d9039e26f3cec29892c11c611314d508188d5be88019be48a7d" + +# slot ryo421 +slot_ryo421_katana="slot d create ryo421 katana --seed 421 --version v0.6.0-alpha.3 --chain-id KATANA_SLOT_421" +slot_ryo421_torii="slot d create ryo421 torii --rpc https://api.cartridge.gg/x/ryo421/katana -s 0 --version v0.6.0-alpha.3 --world 0x8d9e00f20d1d9039e26f3cec29892c11c611314d508188d5be88019be48a7d" + + [profile.dev.tool.dojo.env] rpc_url = "http://localhost:5050" account_address = "0x6162896d1d7ab204c7ccac6dd5f8e9e7c25ecd5ae4fcb4ad32e57786bb46e03" private_key = "0x1800000000300000180000000000030000000000003006001800006600" -[profile.staging.tool.dojo.env] +[profile.ryo420.tool.dojo.env] rpc_url = "https://api.cartridge.gg/x/ryo420/katana" account_address = "0x754d8bc62099e306ab40deb98accc3e717eb1a7b8838060c6312c6e8f8ee1d7" private_key = "0x2f9a2435c3195dfa3c2f8290de5347e0da48193fd6d6d80320f0201a0964b8c" +[profile.ryo421.tool.dojo.env] +rpc_url = "https://api.cartridge.gg/x/ryo421/katana" +account_address = "0x7d806fc9478c73c60fac37c27888771bdb3092c21eb93452277e7673954d034" +private_key = "0x784b1dd14d761c414c6394fccca3ca1d1b0cac187e88122e4b06378f9e8c515" + [profile.prod.tool.dojo.env] rpc_url = "https://api.cartridge.gg/x/ryo420/katana" account_address = "0x795abc2a2d5866f75c58025741329973db20966d1add5dd2a9fbdf0bb8a0266" diff --git a/src/config/game.cairo b/src/config/game.cairo index 22019743f..df41e95c7 100644 --- a/src/config/game.cairo +++ b/src/config/game.cairo @@ -26,7 +26,7 @@ fn initialize_game_config(world: IWorldDispatcher) { world, GameConfig { key: GAME_CONFIG_KEY, - cash: 690, + cash: 1421, // 690 health: 100, // 100, max_turns: 42, max_wanted_shopping: 5, diff --git a/web/.env.development b/web/.env.development index b01d33ed7..78fb9ffed 100644 --- a/web/.env.development +++ b/web/.env.development @@ -1,8 +1 @@ NEXT_PUBLIC_DISABLE_MEDIAPLAYER_AUTOPLAY="true" -NEXT_PUBLIC_RPC_ENDPOINT="http://localhost:5050" -NEXT_PUBLIC_GRAPHQL_ENDPOINT="http://localhost:8080/graphql" -NEXT_PUBLIC_GRAPHQL_ENDPOINT_WS="ws://localhost:8080/graphql/ws" -NEXT_PUBLIC_ADMIN_ADDRESS="0x6162896d1d7ab204c7ccac6dd5f8e9e7c25ecd5ae4fcb4ad32e57786bb46e03" -NEXT_PUBLIC_ADMIN_PRIVATE_KEY="0x1800000000300000180000000000030000000000003006001800006600" -NEXT_PUBLIC_ACCOUNT_CLASS_HASH="0x05400e90f7e0ae78bd02c77cd75527280470e2fe19c54970dd79dc37a9d3645c" - diff --git a/web/.env.production b/web/.env.production index 803cf05ad..e55a065b7 100644 --- a/web/.env.production +++ b/web/.env.production @@ -1,14 +1 @@ -# NEXT_PUBLIC_DISABLE_MEDIAPLAYER_AUTOPLAY="false" -# NEXT_PUBLIC_RPC_ENDPOINT="https://api.cartridge.gg/x/rollyourown/katana" -# NEXT_PUBLIC_GRAPHQL_ENDPOINT="https://api.cartridge.gg/x/rollyourown/torii" -# NEXT_PUBLIC_ADMIN_ADDRESS="0x6162896d1d7ab204c7ccac6dd5f8e9e7c25ecd5ae4fcb4ad32e57786bb46e03" -# NEXT_PUBLIC_ADMIN_PRIVATE_KEY="0x1800000000300000180000000000030000000000003006001800006600" -# NEXT_PUBLIC_ACCOUNT_CLASS_HASH="0x05400e90f7e0ae78bd02c77cd75527280470e2fe19c54970dd79dc37a9d3645c" - NEXT_PUBLIC_DISABLE_MEDIAPLAYER_AUTOPLAY="false" -NEXT_PUBLIC_RPC_ENDPOINT="https://api.cartridge.gg/x/ryo420/katana" -NEXT_PUBLIC_GRAPHQL_ENDPOINT="https://api.cartridge.gg/x/ryo420/torii/graphql" -NEXT_PUBLIC_GRAPHQL_ENDPOINT_WS="wss://api.cartridge.gg/x/ryo420/torii/graphql/ws" -NEXT_PUBLIC_ADMIN_ADDRESS="0x795abc2a2d5866f75c58025741329973db20966d1add5dd2a9fbdf0bb8a0266" -NEXT_PUBLIC_ADMIN_PRIVATE_KEY="0x2e8ac99614186737cefc47effe03134f5a19c6dc2443c16510d3384769f9c78" -NEXT_PUBLIC_ACCOUNT_CLASS_HASH="0x05400e90f7e0ae78bd02c77cd75527280470e2fe19c54970dd79dc37a9d3645c" diff --git a/web/package.json b/web/package.json index 7594d4bff..9d71c3678 100644 --- a/web/package.json +++ b/web/package.json @@ -30,7 +30,7 @@ "@starknet-react/core": "^2.4.0", "@vercel/analytics": "^1.0.2", "eslint": "8.36.0", - "eslint-config-next": "14.1.0", + "eslint-config-next": "14.1.4", "framer-motion": "^10.5.0", "get-starknet-core": "^3.2.0", "graphql": "^16.3.0", @@ -39,7 +39,7 @@ "howler": "^2.2.3", "mobx": "^6.10.2", "mobx-react-lite": "^4.0.5", - "next": "14.2.0-canary.33", + "next": "14.1.4", "next-pwa": "^5.6.0", "react": "^18.2.0", "react-countdown": "^2.3.5", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index f219ab6ba..150d7d403 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -42,8 +42,8 @@ dependencies: specifier: 8.36.0 version: 8.36.0 eslint-config-next: - specifier: 14.1.0 - version: 14.1.0(eslint@8.36.0)(typescript@5.2.2) + specifier: 14.1.4 + version: 14.1.4(eslint@8.36.0)(typescript@5.2.2) framer-motion: specifier: ^10.5.0 version: 10.18.0(react-dom@18.2.0)(react@18.2.0) @@ -69,11 +69,11 @@ dependencies: specifier: ^4.0.5 version: 4.0.5(mobx@6.12.0)(react-dom@18.2.0)(react@18.2.0) next: - specifier: 14.2.0-canary.33 - version: 14.2.0-canary.33(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + specifier: 14.1.4 + version: 14.1.4(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0) next-pwa: specifier: ^5.6.0 - version: 5.6.0(@babel/core@7.23.9)(next@14.2.0-canary.33)(webpack@5.90.3) + version: 5.6.0(@babel/core@7.24.3)(next@14.1.4)(webpack@5.91.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -164,6 +164,14 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.21 + /@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: false + /@apideck/better-ajv-errors@0.3.6(ajv@8.12.0): resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} @@ -185,7 +193,7 @@ packages: '@babel/core': 7.23.7 '@babel/generator': 7.23.6 '@babel/parser': 7.23.6 - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 '@babel/traverse': 7.23.7 '@babel/types': 7.23.6 babel-preset-fbjs: 3.4.0(@babel/core@7.23.7) @@ -221,6 +229,14 @@ packages: '@babel/highlight': 7.23.4 chalk: 2.4.2 + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + dev: false + /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} @@ -247,20 +263,20 @@ packages: transitivePeerDependencies: - supports-color - /@babel/core@7.23.9: - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + /@babel/core@7.24.3: + resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helpers': 7.24.1 + '@babel/parser': 7.24.1 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -279,6 +295,16 @@ packages: '@jridgewell/trace-mapping': 0.3.21 jsesc: 2.5.2 + /@babel/generator@7.24.1: + resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: false + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -403,13 +429,13 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -472,6 +498,11 @@ packages: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} @@ -499,13 +530,13 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helpers@7.23.9: - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + /@babel/helpers@7.24.1: + resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color dev: false @@ -518,6 +549,16 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + dev: false + /@babel/parser@7.23.6: resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} engines: {node: '>=6.0.0'} @@ -525,12 +566,12 @@ packages: dependencies: '@babel/types': 7.23.6 - /@babel/parser@7.23.9: - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + /@babel/parser@7.24.1: + resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: false /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7): @@ -1451,18 +1492,11 @@ packages: regenerator-runtime: 0.14.1 dev: false - /@babel/runtime@7.23.9: - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - - /@babel/runtime@7.24.0: - resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} + /@babel/runtime@7.24.1: + resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - dev: false /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} @@ -1472,13 +1506,13 @@ packages: '@babel/parser': 7.23.6 '@babel/types': 7.23.6 - /@babel/template@7.23.9: - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 dev: false /@babel/traverse@7.23.7: @@ -1498,18 +1532,18 @@ packages: transitivePeerDependencies: - supports-color - /@babel/traverse@7.23.9: - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + /@babel/traverse@7.24.1: + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -1524,11 +1558,11 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@babel/types@7.23.9: - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 + '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: false @@ -2665,7 +2699,7 @@ packages: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: '@babel/helper-module-imports': 7.22.15 - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.23.8 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 '@emotion/serialize': 1.1.3 @@ -3693,7 +3727,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /@graphql-tools/prisma-loader@8.0.2(@types/node@18.15.3)(graphql@16.8.1): @@ -3737,7 +3771,7 @@ packages: '@ardatan/relay-compiler': 12.0.0(graphql@16.8.1) '@graphql-tools/utils': 9.2.1(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color @@ -3802,7 +3836,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /@graphql-tools/utils@9.2.1(graphql@16.8.1): @@ -3875,14 +3909,33 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.21 + /@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 + dev: false + /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: false + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: false + /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: @@ -3899,6 +3952,13 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + /@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 + dev: false + /@kamilkisiela/fast-url-parser@1.1.4: resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} dev: true @@ -3944,18 +4004,18 @@ packages: - utf-8-validate dev: false - /@next/env@14.2.0-canary.33: - resolution: {integrity: sha512-t2xg78bgpRC8S1+nx4Sb3DAkurnpEd3OnST2raWMEPVU4LhkYJNiObljay1BSydbY5ABSYdeZGouAfPtzgXNjA==} + /@next/env@14.1.4: + resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} dev: false - /@next/eslint-plugin-next@14.1.0: - resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} + /@next/eslint-plugin-next@14.1.4: + resolution: {integrity: sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA==} dependencies: glob: 10.3.10 dev: false - /@next/swc-darwin-arm64@14.2.0-canary.33: - resolution: {integrity: sha512-tlhnUxgDVxwqegSGgTnvEfXYx9Za5uW0aYiKEfGc8Z+ijwis7r8tBZhmJkTgjLy5+/OvXhzQOW2qTQcFgh4Htw==} + /@next/swc-darwin-arm64@14.1.4: + resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3963,8 +4023,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.2.0-canary.33: - resolution: {integrity: sha512-msoCytOIBP7u8osWy9Hv7TqnHoAXd53c4HuA4/bEE6DMNDp/5HcWPb1pn2m/JIntk1O/PfRhxSs4LHy3GXueCA==} + /@next/swc-darwin-x64@14.1.4: + resolution: {integrity: sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3972,8 +4032,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.2.0-canary.33: - resolution: {integrity: sha512-Ie65WTTJRc9BvHIkNMwHnBo+RGDV1hxozPF44b6AaDB4kqWm/jp56ZegiC9vUYBD1M9vQaBr4JlrMJ5Qy+oPmQ==} + /@next/swc-linux-arm64-gnu@14.1.4: + resolution: {integrity: sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3981,8 +4041,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.2.0-canary.33: - resolution: {integrity: sha512-CsPeFHxMkOHR/6FSy4CUkuEj7Uee5bZmFJcer4QPRqbZmCBN/m6B2ZNBol4wXphR8oG+N713DNR4UmU9TCBCHg==} + /@next/swc-linux-arm64-musl@14.1.4: + resolution: {integrity: sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3990,8 +4050,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.2.0-canary.33: - resolution: {integrity: sha512-GFVxvopC3s0C3LUQWS5Wdneg57pU1x4oDxKQw6e/s8slYHAYFTm3+g6tS7KIOM1gRUEkHz+p6DxylTD9h4OEzw==} + /@next/swc-linux-x64-gnu@14.1.4: + resolution: {integrity: sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3999,8 +4059,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.2.0-canary.33: - resolution: {integrity: sha512-zV2+oIR5yIIbW1NcHRUuVKiHb4AUJY4VlqH7a+wXuLLQlvhPp/TSwe+e9Euv+JyOXf6K2d3QHdVZ3QWpDxkvIg==} + /@next/swc-linux-x64-musl@14.1.4: + resolution: {integrity: sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -4008,8 +4068,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.2.0-canary.33: - resolution: {integrity: sha512-xVLNFglXi0GHBT0AIZD5EvtEL2RRvwb0iLf8nbWWqs+ggguG0BLm5d3NRN2V+YD8n06d64QigBnv7Y3y7HJ36Q==} + /@next/swc-win32-arm64-msvc@14.1.4: + resolution: {integrity: sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -4017,8 +4077,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.2.0-canary.33: - resolution: {integrity: sha512-WyUlj8UCjYyIrgbjM5+GAUPR3ObRpf+DKqe1K0uS/ajRFzRomhctHLzTvx3juSrlpzG0scthtNywCWxUTC4JmA==} + /@next/swc-win32-ia32-msvc@14.1.4: + resolution: {integrity: sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -4026,8 +4086,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.2.0-canary.33: - resolution: {integrity: sha512-cbqini669cGvU/JQGzbehNHXZJm7LRHBZMpfEPqrUo8M5qqIlnnVeU5rVVqQQBvUIC1TN/cWAHzgXDj8kfQC3Q==} + /@next/swc-win32-x64-msvc@14.1.4: + resolution: {integrity: sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4381,8 +4441,8 @@ packages: rollup: 2.79.1 dev: false - /@rushstack/eslint-patch@1.7.2: - resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} + /@rushstack/eslint-patch@1.8.0: + resolution: {integrity: sha512-0HejFckBN2W+ucM6cUOlwsByTKt9/+0tWhqUffNIcHqCXkthY/mZ7AuYPK/2IIaGWhdl0h+tICDO0ssLMd6XMQ==} dev: false /@scure/base@1.1.5: @@ -4465,17 +4525,12 @@ packages: ejs: 3.1.9 json5: 2.2.3 magic-string: 0.25.9 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 dev: false - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: false - - /@swc/helpers@0.5.5: - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: - '@swc/counter': 0.1.3 tslib: 2.6.2 dev: false @@ -4495,12 +4550,12 @@ packages: /@types/eslint-scope@3.7.7: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: - '@types/eslint': 8.56.2 + '@types/eslint': 8.56.6 '@types/estree': 1.0.5 dev: false - /@types/eslint@8.56.2: - resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + /@types/eslint@8.56.6: + resolution: {integrity: sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -4654,7 +4709,7 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.2.2) + ts-api-utils: 1.3.0(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -4674,8 +4729,8 @@ packages: server-only: 0.0.1 dev: false - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 @@ -4689,8 +4744,8 @@ packages: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} dev: false - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} dev: false /@webassemblyjs/helper-numbers@1.11.6: @@ -4705,13 +4760,13 @@ packages: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} dev: false - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 dev: false /@webassemblyjs/ieee754@1.11.6: @@ -4730,42 +4785,42 @@ packages: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} dev: false - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 dev: false - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 dev: false - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 dev: false - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-api-error': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 @@ -4773,10 +4828,10 @@ packages: '@webassemblyjs/utf8': 1.11.6 dev: false - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 dev: false @@ -5024,13 +5079,14 @@ packages: is-array-buffer: 3.0.4 dev: false - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 dev: false @@ -5058,25 +5114,27 @@ packages: engines: {node: '>=0.10.0'} dev: false - /array.prototype.filter@1.0.3: - resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 dev: false - /array.prototype.findlastindex@1.2.4: - resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 dev: false @@ -5086,7 +5144,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 es-shim-unscopables: 1.0.2 dev: false @@ -5096,7 +5154,16 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 es-shim-unscopables: 1.0.2 dev: false @@ -5105,7 +5172,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 dev: false @@ -5117,7 +5184,7 @@ packages: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 @@ -5150,12 +5217,6 @@ packages: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} dev: false - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - dependencies: - has-symbols: 1.0.3 - dev: false - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -5187,26 +5248,26 @@ packages: dequal: 2.0.3 dev: false - /babel-loader@8.3.0(@babel/core@7.23.9)(webpack@5.90.3): + /babel-loader@8.3.0(@babel/core@7.24.3)(webpack@5.91.0): resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.3 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.90.3 + webpack: 5.91.0 dev: false /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.23.8 cosmiconfig: 7.1.0 resolve: 1.22.8 dev: false @@ -5354,7 +5415,7 @@ packages: /broadcast-channel@3.7.0: resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.23.8 detect-node: 2.1.0 js-sha3: 0.8.0 microseconds: 0.2.0 @@ -5373,7 +5434,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001589 + caniuse-lite: 1.0.30001600 electron-to-chromium: 1.4.639 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) @@ -5383,8 +5444,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001589 - electron-to-chromium: 1.4.679 + caniuse-lite: 1.0.30001600 + electron-to-chromium: 1.4.715 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: false @@ -5447,7 +5508,7 @@ packages: es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - set-function-length: 1.2.1 + set-function-length: 1.2.2 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -5457,7 +5518,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /camelcase@5.3.1: @@ -5465,14 +5526,14 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001589: - resolution: {integrity: sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==} + /caniuse-lite@1.0.30001600: + resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.4.1 upper-case-first: 2.0.2 dev: true @@ -5543,7 +5604,7 @@ packages: path-case: 3.0.4 sentence-case: 3.0.4 snake-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /chardet@0.7.0: @@ -5560,14 +5621,14 @@ packages: engines: {node: '>=6'} dev: true - /clean-webpack-plugin@4.0.0(webpack@5.90.3): + /clean-webpack-plugin@4.0.0(webpack@5.91.0): resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} engines: {node: '>=10.0.0'} peerDependencies: webpack: '>=4.0.0 <6.0.0' dependencies: del: 4.1.1 - webpack: 5.90.3 + webpack: 5.91.0 dev: false /cli-cursor@3.1.0: @@ -5716,7 +5777,7 @@ packages: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.4.1 upper-case: 2.0.2 dev: true @@ -5815,6 +5876,33 @@ packages: engines: {node: '>= 6'} dev: true + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false + /dataloader@2.2.2: resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} dev: true @@ -5954,7 +6042,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /dotenv@16.3.2: @@ -5993,8 +6081,8 @@ packages: /electron-to-chromium@1.4.639: resolution: {integrity: sha512-CkKf3ZUVZchr+zDpAlNLEEy2NJJ9T64ULWaDgy3THXXlPVPkLu3VOs9Bac44nebVtdwl2geSj6AxTtGDOxoXhg==} - /electron-to-chromium@1.4.679: - resolution: {integrity: sha512-NhQMsz5k0d6m9z3qAxnsOR/ebal4NAGsrNVRwcDo4Kc/zQ7KdsTKZUxZoygHcVRb0QDW3waEDIcE3isZ79RP6g==} + /electron-to-chromium@1.4.715: + resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==} dev: false /elliptic@6.5.4: @@ -6037,8 +6125,8 @@ packages: iconv-lite: 0.6.3 dev: false - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -6054,16 +6142,20 @@ packages: dependencies: is-arrayish: 0.2.1 - /es-abstract@1.22.4: - resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==} + /es-abstract@1.23.2: + resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 available-typed-arrays: 1.0.7 call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 es-define-property: 1.0.0 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 @@ -6074,10 +6166,11 @@ packages: has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 internal-slot: 1.0.7 is-array-buffer: 3.0.4 is-callable: 1.2.7 + is-data-view: 1.0.1 is-negative-zero: 2.0.3 is-regex: 1.1.4 is-shared-array-buffer: 1.0.3 @@ -6088,21 +6181,17 @@ packages: object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.0 + safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 - dev: false - - /es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + which-typed-array: 1.1.15 dev: false /es-define-property@1.0.0: @@ -6115,14 +6204,13 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - /es-iterator-helpers@1.0.17: - resolution: {integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==} + /es-iterator-helpers@1.0.18: + resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} engines: {node: '>= 0.4'} dependencies: - asynciterator.prototype: 1.0.0 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 es-errors: 1.3.0 es-set-tostringtag: 2.0.3 function-bind: 1.1.2 @@ -6133,11 +6221,18 @@ packages: has-symbols: 1.0.3 internal-slot: 1.0.7 iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 + safe-array-concat: 1.1.2 + dev: false + + /es-module-lexer@1.4.2: + resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==} dev: false - /es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 dev: false /es-set-tostringtag@2.0.3: @@ -6146,13 +6241,13 @@ packages: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 - hasown: 2.0.1 + hasown: 2.0.2 dev: false /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.1 + hasown: 2.0.2 dev: false /es-to-primitive@1.2.1: @@ -6181,8 +6276,8 @@ packages: engines: {node: '>=10'} dev: false - /eslint-config-next@14.1.0(eslint@8.36.0)(typescript@5.2.2): - resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} + /eslint-config-next@14.1.4(eslint@8.36.0)(typescript@5.2.2): + resolution: {integrity: sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -6190,15 +6285,15 @@ packages: typescript: optional: true dependencies: - '@next/eslint-plugin-next': 14.1.0 - '@rushstack/eslint-patch': 1.7.2 + '@next/eslint-plugin-next': 14.1.4 + '@rushstack/eslint-patch': 1.8.0 '@typescript-eslint/parser': 6.21.0(eslint@8.36.0)(typescript@5.2.2) eslint: 8.36.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.36.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.36.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.36.0) - eslint-plugin-react: 7.33.2(eslint@8.36.0) + eslint-plugin-react: 7.34.1(eslint@8.36.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.36.0) typescript: 5.2.2 transitivePeerDependencies: @@ -6224,12 +6319,12 @@ packages: eslint-plugin-import: '*' dependencies: debug: 4.3.4 - enhanced-resolve: 5.15.0 + enhanced-resolve: 5.16.0 eslint: 8.36.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.36.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.36.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.36.0) fast-glob: 3.3.2 - get-tsconfig: 4.7.2 + get-tsconfig: 4.7.3 is-core-module: 2.13.1 is-glob: 4.0.3 transitivePeerDependencies: @@ -6239,8 +6334,8 @@ packages: - supports-color dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.36.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.36.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -6280,22 +6375,22 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 6.21.0(eslint@8.36.0)(typescript@5.2.2) - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.4 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.36.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.36.0) - hasown: 2.0.1 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.36.0) + hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.2 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 transitivePeerDependencies: @@ -6310,23 +6405,23 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 aria-query: 5.3.0 - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 axe-core: 4.7.0 axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.17 + es-iterator-helpers: 1.0.18 eslint: 8.36.0 - hasown: 2.0.1 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 dev: false /eslint-plugin-react-hooks@4.6.0(eslint@8.36.0): @@ -6338,29 +6433,31 @@ packages: eslint: 8.36.0 dev: false - /eslint-plugin-react@7.33.2(eslint@8.36.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + /eslint-plugin-react@7.34.1(eslint@8.36.0): + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - es-iterator-helpers: 1.0.17 + es-iterator-helpers: 1.0.18 eslint: 8.36.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 object.hasown: 1.1.3 - object.values: 1.1.7 + object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 dev: false /eslint-scope@5.1.1: @@ -6812,7 +6909,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 functions-have-names: 1.2.3 dev: false @@ -6836,7 +6933,7 @@ packages: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} @@ -6864,8 +6961,8 @@ packages: get-intrinsic: 1.2.4 dev: false - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} dependencies: resolve-pkg-maps: 1.0.0 dev: false @@ -7022,7 +7119,7 @@ packages: 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.8.1 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /graphql-ws@5.14.3(graphql@16.8.1): @@ -7087,8 +7184,8 @@ packages: minimalistic-assert: 1.0.1 dev: false - /hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -7097,7 +7194,7 @@ packages: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /hmac-drbg@1.0.1: @@ -7261,8 +7358,8 @@ packages: engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - hasown: 2.0.1 - side-channel: 1.0.5 + hasown: 2.0.2 + side-channel: 1.0.6 dev: false /invariant@2.2.4: @@ -7322,7 +7419,14 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.1 + hasown: 2.0.2 + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: false /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -7371,11 +7475,12 @@ packages: /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} dev: false /is-module@1.0.0: @@ -7457,8 +7562,9 @@ packages: is-unc-path: 1.0.0 dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} dev: false /is-shared-array-buffer@1.0.3: @@ -7491,7 +7597,7 @@ packages: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 dev: false /is-unc-path@1.0.0: @@ -7509,11 +7615,12 @@ packages: /is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} dev: false /is-weakref@1.0.2: @@ -7522,8 +7629,9 @@ packages: call-bind: 1.0.7 dev: false - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 @@ -7581,7 +7689,7 @@ packages: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.5 + reflect.getprototypeof: 1.0.6 set-function-name: 2.0.2 dev: false @@ -7760,10 +7868,10 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 dev: false /jxLoader@0.1.1: @@ -7972,13 +8080,13 @@ packages: /lower-case-first@2.0.2: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true /lru-cache@10.2.0: @@ -8041,7 +8149,7 @@ packages: /match-sorter@6.3.3: resolution: {integrity: sha512-sgiXxrRijEe0SzHKGX4HouCpfHRPnqteH42UdMEW7BlWy990ZkzcvonJGv4Uu9WE7Y1f8Yocm91+4qFPCbmNww==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.23.8 remove-accents: 0.5.0 dev: false @@ -8050,7 +8158,7 @@ packages: engines: {node: '>= 18'} hasBin: true dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 complex.js: 2.1.1 decimal.js: 10.4.3 escape-latex: 1.2.0 @@ -8251,17 +8359,17 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next-pwa@5.6.0(@babel/core@7.23.9)(next@14.2.0-canary.33)(webpack@5.90.3): + /next-pwa@5.6.0(@babel/core@7.24.3)(next@14.1.4)(webpack@5.91.0): resolution: {integrity: sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==} peerDependencies: next: '>=9.0.0' dependencies: - babel-loader: 8.3.0(@babel/core@7.23.9)(webpack@5.90.3) - clean-webpack-plugin: 4.0.0(webpack@5.90.3) + babel-loader: 8.3.0(@babel/core@7.24.3)(webpack@5.91.0) + clean-webpack-plugin: 4.0.0(webpack@5.91.0) globby: 11.1.0 - next: 14.2.0-canary.33(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) - terser-webpack-plugin: 5.3.10(webpack@5.90.3) - workbox-webpack-plugin: 6.6.0(webpack@5.90.3) + next: 14.1.4(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0) + terser-webpack-plugin: 5.3.10(webpack@5.91.0) + workbox-webpack-plugin: 6.6.0(webpack@5.91.0) workbox-window: 6.6.0 transitivePeerDependencies: - '@babel/core' @@ -8273,8 +8381,8 @@ packages: - webpack dev: false - /next@14.2.0-canary.33(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-5i1E5E61WjqG9MHCTjpwt2wdXUw3pTvxMXxtQhLa7aV5H7gcYt75zJenHHK8Rb0DPuyJfbC6/5qsjpR21P+CxQ==} + /next@14.1.4(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -8288,25 +8396,25 @@ packages: sass: optional: true dependencies: - '@next/env': 14.2.0-canary.33 - '@swc/helpers': 0.5.5 + '@next/env': 14.1.4 + '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001589 + caniuse-lite: 1.0.30001600 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.9)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.3)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.0-canary.33 - '@next/swc-darwin-x64': 14.2.0-canary.33 - '@next/swc-linux-arm64-gnu': 14.2.0-canary.33 - '@next/swc-linux-arm64-musl': 14.2.0-canary.33 - '@next/swc-linux-x64-gnu': 14.2.0-canary.33 - '@next/swc-linux-x64-musl': 14.2.0-canary.33 - '@next/swc-win32-arm64-msvc': 14.2.0-canary.33 - '@next/swc-win32-ia32-msvc': 14.2.0-canary.33 - '@next/swc-win32-x64-msvc': 14.2.0-canary.33 + '@next/swc-darwin-arm64': 14.1.4 + '@next/swc-darwin-x64': 14.1.4 + '@next/swc-linux-arm64-gnu': 14.1.4 + '@next/swc-linux-arm64-musl': 14.1.4 + '@next/swc-linux-x64-gnu': 14.1.4 + '@next/swc-linux-x64-musl': 14.1.4 + '@next/swc-win32-arm64-msvc': 14.1.4 + '@next/swc-win32-ia32-msvc': 14.1.4 + '@next/swc-win32-x64-msvc': 14.1.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -8316,7 +8424,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /node-fetch@2.7.0: @@ -8436,48 +8544,48 @@ packages: object-keys: 1.1.1 dev: false - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-object-atoms: 1.0.0 dev: false - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 dev: false - /object.groupby@1.0.2: - resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: - array.prototype.filter: 1.0.3 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 - es-errors: 1.3.0 + es-abstract: 1.23.2 dev: false /object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 dev: false - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-object-atoms: 1.0.0 dev: false /oblivious-set@1.0.0: @@ -8601,7 +8709,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /parent-module@1.0.1: @@ -8644,14 +8752,14 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /path-exists@4.0.0: @@ -8756,7 +8864,7 @@ packages: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.0.2 + source-map-js: 1.2.0 dev: false /prelude-ls@1.2.1: @@ -8868,7 +8976,7 @@ packages: peerDependencies: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 react: 18.2.0 dev: false @@ -8906,7 +9014,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 '@types/react': 18.0.28 focus-lock: 1.0.0 prop-types: 15.8.1 @@ -9029,13 +9137,13 @@ packages: esprima: 4.0.1 dev: false - /reflect.getprototypeof@1.0.5: - resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 es-errors: 1.3.0 get-intrinsic: 1.2.4 globalthis: 1.0.3 @@ -9059,7 +9167,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 dev: false /regexp.prototype.flags@1.5.2: @@ -9094,7 +9202,7 @@ packages: /relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 fbjs: 3.0.5 invariant: 2.2.4 transitivePeerDependencies: @@ -9254,8 +9362,8 @@ packages: tslib: 2.6.2 dev: true - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} dependencies: call-bind: 1.0.7 @@ -9335,7 +9443,7 @@ packages: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.4.1 upper-case-first: 2.0.2 dev: true @@ -9363,8 +9471,8 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: false - /set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 @@ -9406,8 +9514,8 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /side-channel@1.0.5: - resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -9474,15 +9582,15 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.4.1 dev: true /source-list-map@2.0.1: resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} dev: false - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} dev: false @@ -9546,7 +9654,7 @@ packages: /sponge-case@1.0.1: resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true /ssri@10.0.5: @@ -9605,43 +9713,49 @@ packages: resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} dev: true - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.7 regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 - side-channel: 1.0.5 + side-channel: 1.0.6 dev: false - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 dev: false - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-object-atoms: 1.0.0 dev: false - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-object-atoms: 1.0.0 dev: false /string_decoder@1.3.0: @@ -9695,7 +9809,7 @@ packages: engines: {node: '>=14.16'} dev: true - /styled-jsx@5.1.1(@babel/core@7.23.9)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.24.3)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -9708,7 +9822,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.3 client-only: 0.0.1 react: 18.2.0 dev: false @@ -9748,7 +9862,7 @@ packages: /swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true /tapable@2.2.1: @@ -9771,7 +9885,7 @@ packages: unique-string: 2.0.0 dev: false - /terser-webpack-plugin@5.3.10(webpack@5.90.3): + /terser-webpack-plugin@5.3.10(webpack@5.91.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -9792,7 +9906,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.90.3 + webpack: 5.91.0 dev: false /terser@5.27.0: @@ -9840,7 +9954,7 @@ packages: /title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true /tmp@0.0.33: @@ -9913,8 +10027,8 @@ packages: engines: {node: '>= 14.0.0'} dev: false - /ts-api-utils@1.2.1(typescript@5.2.2): - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + /ts-api-utils@1.3.0(typescript@5.2.2): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -10013,8 +10127,8 @@ packages: is-typed-array: 1.1.13 dev: false - /typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -10112,7 +10226,7 @@ packages: /unload@2.2.0: resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.23.8 detect-node: 2.1.0 dev: false @@ -10145,13 +10259,13 @@ packages: /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true /uri-js@4.4.1: @@ -10292,8 +10406,8 @@ packages: makeerror: 1.0.12 dev: false - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + /watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 @@ -10363,8 +10477,8 @@ packages: engines: {node: '>=10.13.0'} dev: false - /webpack@5.90.3: - resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==} + /webpack@5.91.0: + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -10375,15 +10489,15 @@ packages: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.11.3 acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.23.0 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 + enhanced-resolve: 5.16.0 + es-module-lexer: 1.4.2 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -10394,8 +10508,8 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.90.3) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(webpack@5.91.0) + watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -10445,25 +10559,26 @@ packages: is-weakref: 1.0.2 isarray: 2.0.5 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.14 + which-collection: 1.0.2 + which-typed-array: 1.1.15 dev: false - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 dev: false /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true - /which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 @@ -10534,7 +10649,7 @@ packages: '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) '@babel/core': 7.23.7 '@babel/preset-env': 7.23.8(@babel/core@7.23.7) - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.7)(rollup@2.79.1) '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) @@ -10654,7 +10769,7 @@ packages: resolution: {integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==} dev: false - /workbox-webpack-plugin@6.6.0(webpack@5.90.3): + /workbox-webpack-plugin@6.6.0(webpack@5.91.0): resolution: {integrity: sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==} engines: {node: '>=10.0.0'} peerDependencies: @@ -10663,7 +10778,7 @@ packages: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.90.3 + webpack: 5.91.0 webpack-sources: 1.4.3 workbox-build: 6.6.0 transitivePeerDependencies: diff --git a/web/src/components/layout/Header.tsx b/web/src/components/layout/Header.tsx index 95d243b6d..198f2d104 100644 --- a/web/src/components/layout/Header.tsx +++ b/web/src/components/layout/Header.tsx @@ -11,6 +11,7 @@ import { useEffect } from "react"; import { ClaimReward } from "../pages/home"; import { ProfileLink } from "../pages/profile/Profile"; import { CashIndicator, DayIndicator, HealthIndicator } from "../player"; +import { Burners } from "../wallet/Burners"; import { ChainSelector } from "../wallet/ChainSelector"; interface HeaderProps { @@ -46,8 +47,8 @@ export const Header = observer(({ back }: HeaderProps) => { > + - {/* {!game && ( <> {config?.ryo.paper_address && } @@ -88,7 +89,6 @@ export const Header = observer(({ back }: HeaderProps) => { )} - {!isMobile && account && game && } {isMobile && } diff --git a/web/src/components/wallet/Burners.tsx b/web/src/components/wallet/Burners.tsx new file mode 100644 index 000000000..ed972f35b --- /dev/null +++ b/web/src/components/wallet/Burners.tsx @@ -0,0 +1,20 @@ +import { useDojoContext } from "@/dojo/hooks"; +import { Button, Menu, MenuButton, MenuList } from "@chakra-ui/react"; +import { Wallet } from "../icons/archive"; +import { BurnerManagerUi } from "./ui/BurnerManagerUi"; + +export const Burners = () => { + const { burnerManager } = useDojoContext(); + + if (!burnerManager) return null; + return ( + + }*/> + + + + + + + ); +}; diff --git a/web/src/components/wallet/ChainSelector.tsx b/web/src/components/wallet/ChainSelector.tsx index a358693f6..642a17664 100644 --- a/web/src/components/wallet/ChainSelector.tsx +++ b/web/src/components/wallet/ChainSelector.tsx @@ -4,7 +4,6 @@ import { Button, Menu, MenuButton, MenuItem, MenuList, Text } from "@chakra-ui/r import { useDisconnect } from "@starknet-react/core"; export const ChainSelector = ({ canChange = false }: { canChange: boolean }) => { - // const { chain } = useNetwork(); const { chains: { dojoContextConfig, selectedChain, setSelectedChain }, } = useDojoContext(); @@ -16,6 +15,10 @@ export const ChainSelector = ({ canChange = false }: { canChange: boolean }) => setSelectedChain(chain); }; + const getInfos = (chain: DojoChainConfig) => { + return `RPC: ${chain.rpcUrl}\nTORII: ${chain.toriiUrl}\nTORII WS: ${chain.toriiWsUrl}` + }; + return ( <> {!canChange && ( @@ -25,26 +28,27 @@ export const ChainSelector = ({ canChange = false }: { canChange: boolean }) => )} {canChange && ( - - }*/> - {selectedChain.name} - - - {Object.keys(dojoContextConfig).map((key: string) => { - const dojoChainConfig: DojoChainConfig = dojoContextConfig[key as SupportedChainIds]; - - if (dojoChainConfig === selectedChain) return; - const isMainnet = dojoChainConfig.chainConfig.network === "mainnet"; - return ( - onSelectChain(dojoChainConfig)}> - - {dojoChainConfig.name} ({isMainnet ? "RANKED" : "FREE"}) - - - ); - })} - - + + }*/> + {selectedChain.name} + + + + {Object.keys(dojoContextConfig).map((key: string) => { + const dojoChainConfig: DojoChainConfig = dojoContextConfig[key as SupportedChainIds]; + + if (dojoChainConfig === selectedChain) return; + const isMainnet = dojoChainConfig.chainConfig.network === "mainnet"; + return ( + onSelectChain(dojoChainConfig)}> + + {dojoChainConfig.name} ({isMainnet ? "RANKED" : "FREE"}) + + + ); + })} + + )} ); diff --git a/web/src/components/wallet/StarknetProvider.tsx b/web/src/components/wallet/StarknetProvider.tsx index 2a5bdbd28..f3d8670c9 100644 --- a/web/src/components/wallet/StarknetProvider.tsx +++ b/web/src/components/wallet/StarknetProvider.tsx @@ -5,9 +5,10 @@ import { StarknetConfig, argent, braavos, + injected, jsonRpcProvider, starkscan, - useInjectedConnectors + useInjectedConnectors, } from "@starknet-react/core"; import { ReactNode, useState } from "react"; @@ -24,32 +25,25 @@ function rpc(chain: Chain) { } export function StarknetProvider({ children }: { children: ReactNode }) { - const { connectors } = useInjectedConnectors({ // Show these connectors if the user has no connector installed. - recommended: [ /*injected({id:"dojoburner"}) */,argent(), braavos()], + recommended: [argent(), braavos(), injected({id:'dojoburner'})], // Hide recommended connectors if the user has any connector installed. includeRecommended: "always", // Randomize the order of the connectors. // order: "random" }); - const chains = getStarknetProviderChains() + const chains = getStarknetProviderChains(); // const connectors = isKatana ? [...listConnectors()] : [argent(), braavos()]; - + // TODO: remove const provider = jsonRpcProvider({ rpc }); const [explorer, setExplorer] = useState(() => starkscan); return ( - + {children} ); diff --git a/web/src/components/wallet/chain/katana.ts b/web/src/components/wallet/chain/katana.ts deleted file mode 100644 index 8a2d5ef91..000000000 --- a/web/src/components/wallet/chain/katana.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Chain } from "@starknet-react/chains"; - -export const katana_localhost = { - id: BigInt("0x4b4154414e41"), // KATANA - network: "katana_localhost", - name: "Katana Local", - nativeCurrency: { - address: - "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - testnet: true, - - rpcUrls: { - default: { - http: ["https://localhost:5050",], - }, - public: { - http: ["https://localhost:5050",], - }, - }, - explorers: { - worlds: ["https://worlds.dev"], - }, -} as const satisfies Chain; - - -export const katana_slot = { - id: BigInt("0x4b4154414e415f534c4f54"), // KATANA_SLOT - network: "katana_slot", - name: "Katana Slot", - nativeCurrency: { - address: - "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - - rpcUrls: { - default: { - http: ["https://api.cartridge.gg/x/ryo420/katana",], - }, - public: { - http: ["https://api.cartridge.gg/x/ryo420/katana",], - }, - }, - explorers: { - worlds: ["https://worlds.dev"], - }, -} as const satisfies Chain; diff --git a/web/src/components/wallet/index.ts b/web/src/components/wallet/index.ts index 228a9fce6..fdd11e1d8 100644 --- a/web/src/components/wallet/index.ts +++ b/web/src/components/wallet/index.ts @@ -1,3 +1,5 @@ +export * from "./BuyPaper" +export * from "./ChainSelector" export * from "./Connect" export * from "./PaperFaucet" export * from "./StarknetProvider" diff --git a/web/src/components/wallet/inpage/icons.ts b/web/src/components/wallet/inpage/icons.ts deleted file mode 100644 index 28af09a7a..000000000 --- a/web/src/components/wallet/inpage/icons.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const katanaIcon = - "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzYgMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xOC4yNzk4IDEzLjU4NzNDMTkuNjE5OCAxMy41ODczIDIwLjcwNjEgMTIuNTAwOCAyMC43MDYxIDExLjE2MDVDMjAuNzA2MSA5LjgyMDE3IDE5LjYxOTggOC43MzM2NCAxOC4yNzk4IDguNzMzNjRDMTYuOTM5OCA4LjczMzY0IDE1Ljg1MzUgOS44MjAxNyAxNS44NTM1IDExLjE2MDVDMTUuODUzNSAxMi41MDA4IDE2LjkzOTggMTMuNTg3MyAxOC4yNzk4IDEzLjU4NzNaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNS40MTAxNiAyLjc5NDhIMzEuMTUzOVYzLjg4NTEyQzMxLjE1MzkgNC4wODA0NiAzMS4wNzE4IDQuMjY0MjMgMzAuOTMxMiA0LjM5MzEyTDI4LjYyNiA2LjQ2NDRDMjguMzI1MSA2LjgwMDQxIDI3LjkxMSA2Ljk5MTk0IDI3LjQ4MTIgNi45OTE5NEgyNS42NTI3QzI1LjY1MjcgNi45OTE5NCAyNS42NDg4IDguNTA3NTUgMjUuNjQ4OCA5LjM5MjY1QzI1LjY0ODggMTAuMjc3NiAyNS4yODY1IDExLjIzMzIgMjUuMjg2NSAxMS4yMzMyTDI1LjUzMzQgMTEuNDgwMkMyNS43OTc5IDExLjExNyAyNi45NjY4IDkuNjc2NjQgMjcuNzQzIDkuNjc2NjRMMzAuNjc3MiA5LjY2MTA0VjEzLjQwNDhMMjUuNjQ4OCAxMy40NjM1VjIwLjc5NDhMMjQuNzY5NyAxOS45MTk0QzIzLjc2NzggMTguOTIzMyAyMi43NjQyIDE3LjkyODkgMjEuNzY1MiAxNi45Mjk5VjkuOTE1MDlDMjEuNzY1MiA4Ljg3MDU2IDIxLjk5NjkgOC4wMjA4MiAyMi4yMTAxIDcuMDg3NTlMMjIuMjEwNSA3LjA4NTY4TDIyLjIxMTkgNy4wNzk3NEwyMi4yMTM0IDcuMDczOUMyMi4yMTU0IDcuMDY2NjggMjIuMjE3MSA3LjA2MDMxIDIyLjIxNjcgNy4wNTM0MUMyMi4yMTY0IDcuMDQ3NzggMjIuMjE0NyA3LjA0MTgzIDIyLjIxMDUgNy4wMzQ5M0MyMi4xODQgNi45OTUwMiAyMi4wNzQ3IDYuOTU1MiAyMS45NzA2IDYuOTM1MjRDMjEuODkxIDYuOTIwMDYgMjEuODE0NyA2LjkxNjQ1IDIxLjc4MDggNi45MzMzM0MyMS4yMjMxIDcuMjA1MiAyMC42MzA4IDcuMzA2NjcgMjAuMDE2NiA3LjMxNzEyQzE4Ljg2MDcgNy4zMzY2MyAxNy43MDIgNy4zMzY0NSAxNi41NDYgNy4zMTcxMkMxNS45MzIzIDcuMzA2NjQgMTUuMzQwNCA3LjIwNDk2IDE0Ljc4MzIgNi45MzMzM0MxNC43MDUxIDYuODk0MjYgMTQuNDAwMyA2Ljk2NDU1IDE0LjM1MzUgNy4wMzQ5M0MxNC4zNDE3IDcuMDU0NDcgMTQuMzQ5NSA3LjA2NjE1IDE0LjM1MzUgNy4wODU2OEwxNC4zNTM5IDcuMDg3NTlDMTQuNTY3IDguMDIwNDIgMTQuNzk4OCA4Ljg3OTY5IDE0Ljc5ODggOS45MTUwOVYxNi45Mjk5QzEzLjUwNzQgMTguMjIxMyAxMi4yMDkzIDE5LjUwNiAxMC45MTUyIDIwLjc5NDhWMTMuNDYzNUw1Ljg4Njg0IDEzLjQwNDhWOS42NjEwNEw4LjgyMTAzIDkuNjc2NjRDOS41OTcyMSA5LjY3NjY0IDEwLjc2NjEgMTEuMTE3IDExLjAzMDYgMTEuNDgwMkwxMS4yNzc1IDExLjIzMzJDMTEuMjc3NSAxMS4yMzMyIDEwLjkxNTIgMTAuMjc3NiAxMC45MTUyIDkuMzkyNjVDMTAuOTE1MiA4LjUwNzU1IDEwLjkxMTMgNi45OTE5NCAxMC45MTEzIDYuOTkxOTRIOS4wODI3OEM4LjY1MzAzIDYuOTkxOTQgOC4yMzg4OCA2LjgwMDQxIDcuOTM4MDYgNi40NjQ0TDUuNjMyODQgNC4zOTMxMkM1LjQ5MjIyIDQuMjY0MjMgNS40MTAxNiA0LjA4MDQ2IDUuNDEwMTYgMy44ODUxMlYyLjc5NDhaIiBmaWxsPSIjRkYyRjQyIi8+Cjwvc3ZnPgo="; diff --git a/web/src/components/wallet/inpage/index.ts b/web/src/components/wallet/inpage/index.ts deleted file mode 100644 index 9dbcc3c97..000000000 --- a/web/src/components/wallet/inpage/index.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { createStarknetWindowObject } from "./starknetWindowObject" - -const attach = () => { - const starknetWindowObject = createStarknetWindowObject() - const name = 'starknet_dojoburner' - //['starknet_dojoburner'].forEach((name) => { - // we need 2 different try catch blocks because we want to execute both even if one of them fails - try { delete (window as any)[name] } catch (e) { /* ignore */ } - try { - // set read only property to window - Object.defineProperty(window, name, { - value: starknetWindowObject, - writable: true, - //writable: false, - }) - } catch { /* ignore*/ } - try { (window as any)[name] = starknetWindowObject } catch { /* ignore*/ } - // }) -} - -const attachHandler = () => { - attach() - setTimeout(() => { attach() }, 100)//? -} - - -export const initializeInPage = () => { - // inject script - attachHandler(); - - window.addEventListener("load", () => attachHandler()) - document.addEventListener("DOMContentLoaded", () => attachHandler()) - document.addEventListener("readystatechange", () => attachHandler()) - - window.addEventListener( - "message", - async ({ data }: MessageEvent) => { - console.log("message", data) - const { starknet } = window - if (!starknet) { - return - } - - if ( - (starknet.account && data.type === "CONNECT_ACCOUNT_RES") || - data.type === "APPROVE_REQUEST_SWITCH_CUSTOM_NETWORK" - ) { - // const account = - // data.type === "CONNECT_ACCOUNT_RES" - // ? data.data - // : data.data.selectedAccount - - // const isPreauthorized = await getIsPreauthorized() - // if (!isPreauthorized) { - // // disconnect so the user can see they are no longer connected - // // TODO: better UX would be to also re-connect when user selects pre-authorized account - // await disconnectAccount() - // } else { - // const walletAccountP = waitForMessage( - // "CONNECT_DAPP_RES", - // 10 * 60 * 1000, - // ) - // sendMessage({ - // type: "CONNECT_DAPP", - // }) - // const walletAccount = await walletAccountP - - // if (!walletAccount) { - // return disconnectAccount() - // } - - // if ( - // account && - // (account.address !== starknet.selectedAddress || - // account.network.chainId !== starknet.chainId) - // ) { - // const { address, network } = account - - // starknet.selectedAddress = address - // starknet.chainId = network.chainId - // starknet.provider = getProvider(network) - // starknet.account = new ArgentXAccount(address, starknet.provider) - // for (const userEvent of userEventHandlers) { - // if (userEvent.type === "accountsChanged") { - // userEvent.handler([address]) - // } else if (userEvent.type === "networkChanged") { - // userEvent.handler(network.chainId) - // } else { - // assertNever(userEvent) - // } - // } - // } - // } - } else if (data.type === "DISCONNECT_ACCOUNT") { - // starknet.selectedAddress = undefined - // starknet.account = undefined - // starknet.isConnected = false - // for (const userEvent of userEventHandlers) { - // if (userEvent.type === "accountsChanged") { - // userEvent.handler([]) - // } else if (userEvent.type === "networkChanged") { - // userEvent.handler(undefined) - // } else { - // assertNever(userEvent) - // } - // } - } - }, - ) - -} \ No newline at end of file diff --git a/web/src/components/wallet/inpage/starknetWindowObject.ts b/web/src/components/wallet/inpage/starknetWindowObject.ts index b05a6cf18..b0671ba9f 100644 --- a/web/src/components/wallet/inpage/starknetWindowObject.ts +++ b/web/src/components/wallet/inpage/starknetWindowObject.ts @@ -1,235 +1,249 @@ -import { BurnerManager } from "@dojoengine/create-burner" -import { IStarknetWindowObject, WalletEvents } from "get-starknet-core" -import { AccountInterface, RpcProvider } from "starknet" -import { katanaIcon } from "./icons" +// import { BurnerManager, katanaIcon } from "@dojoengine/create-burner"; +// import { IStarknetWindowObject } from "get-starknet-core"; +// import { AccountInterface, RpcProvider } from "starknet"; + +// const VERSION = "0.0.1"; + +// export class xxxxxxxxxxxxDojoBurnerStarknetWindowObject implements IStarknetWindowObject { +// id = "dojoburner"; +// name = "Dojo Burner"; +// icon = katanaIcon; +// account?: AccountInterface = undefined; +// provider?: RpcProvider = undefined; +// selectedAddress?: string = undefined; +// chainId?: string = undefined; +// isConnected = false; +// version = VERSION; +// // +// burnerManager: BurnerManager | null = null; + +// constructor() {} + +// setBurnerManager(burnerManager: BurnerManager) { +// this.burnerManager = burnerManager; + +// this.chainId = this.burnerManager.chainId; +// this.provider = this.burnerManager.provider; + +// const activeAccount = this.burnerManager.getActiveAccount(); + +// this.account = activeAccount ? activeAccount : undefined; +// this.selectedAddress = this.account?.address; +// } + +// ///@ts-ignore +// async request(call: any) { +// //console.log("request", call); +// } + +// ///@ts-ignore +// async enable({ starknetVersion = "v5" } = {}) { +// //console.log("enable"); + +// // retrieve active account +// const activeAccount = this.burnerManager?.getActiveAccount(); +// this.account = activeAccount ? activeAccount : undefined; + +// if (!this.account) { +// this.account = await this.burnerManager?.create(); +// } +// if (!this.account) { +// this.isConnected = false; +// return []; +// } + +// this.isConnected = true; + +// return [this.account.address]; +// } + +// async isPreauthorized() { +// return true; +// } + +// ///@ts-ignore +// on = (event: any, handleEvent: any) => { +// //console.log("on", event); +// }; -const VERSION = "0.0.1" -export const userEventHandlers: WalletEvents[] = [] +// ///@ts-ignore +// off = (event: any, handleEvent: any) => { +// //console.log("off", event); +// }; +// } -// window.ethereum like +// // https://github.com/argentlabs/argent-x/blob/9e4907dc2630ea5c452d7e40a55739b5797544b6/packages/extension/src/inpage/index.ts#L30 -export class DojoBurnerStarknetWindowObject implements IStarknetWindowObject{ - id = "dojoburner" - name = "Dojo Burner" - icon = katanaIcon - account: AccountInterface | undefined = undefined - provider: RpcProvider | undefined = undefined - selectedAddress: string | undefined = undefined - chainId : string | undefined = undefined - isConnected = false - version = VERSION - // - burnerManager: BurnerManager | undefined = undefined +// const starknetWindowObjectKey = "starknet_dojoburner"; - constructor() {} +// const attach = () => { +// const starknetWindowObject = new DojoBurnerStarknetWindowObject(); +// // we need 2 different try catch blocks because we want to execute both even if one of them fails +// try { +// delete (window as any)[starknetWindowObjectKey]; +// } catch (e) { +// /* ignore */ +// } +// try { +// // set read only property to window +// Object.defineProperty(window, starknetWindowObjectKey, { +// value: starknetWindowObject, +// writable: true, +// //writable: false, +// }); +// } catch { +// /* ignore*/ +// } +// try { +// (window as any)[starknetWindowObjectKey] = starknetWindowObject; +// } catch { +// /* ignore*/ +// } +// }; - setBurnerManager(burnerManager: BurnerManager){ - this.burnerManager = burnerManager - - this.chainId = this.burnerManager.chainId - this.provider = this.burnerManager.provider - - this.account = this.burnerManager.getActiveAccount() - this.selectedAddress = this.account?.address - //this.isConnected = true - } +// const attachHandler = () => { +// attach(); +// setTimeout(() => { +// attach(); +// }, 100); +// }; - ///@ts-ignore - async request(call: any) { - console.log("request", call) - } +// export const initializeInPage = () => { +// attachHandler(); - ///@ts-ignore - async enable({ starknetVersion = "v5" } = {}) { - console.log("enable") +// window.addEventListener("load", () => attachHandler()); +// document.addEventListener("DOMContentLoaded", () => attachHandler()); +// document.addEventListener("readystatechange", () => attachHandler()); +// }; - if(!this.account) { - this.account = await this.burnerManager?.create(); - } +// export const cleanInPage = () => { +// window.removeEventListener("load", () => attachHandler()); +// document.removeEventListener("DOMContentLoaded", () => attachHandler()); +// document.removeEventListener("readystatechange", () => attachHandler()); +// }; - this.isConnected = true - return [this.account.address] - } - async isPreauthorized() { - return true - } - ///@ts-ignore - on = (event: any, handleEvent: any) => { - console.log("on", event) - } - ///@ts-ignore - off = (event: any, handleEvent: any) => { - console.log("off", event) - } -} -export const createStarknetWindowObject = () => { - return new DojoBurnerStarknetWindowObject() -} +//////////////////////////////////////////////////////////////////////////////////////////////////////// +// import { BurnerManager } from "@dojoengine/create-burner" +// import { IStarknetWindowObject } from "get-starknet-core" +// import { AccountInterface, RpcProvider } from "starknet" +// import { katanaIcon } from "./icons" +// const VERSION = "0.0.1" -//v0 -// export class DojoBurnerStarknetWindowObject { +// export class DojoBurnerStarknetWindowObject implements IStarknetWindowObject { // id = "dojoburner" // name = "Dojo Burner" // icon = katanaIcon -// account = undefined -// provider = undefined -// selectedAddress = undefined -// chainId = undefined +// account?: AccountInterface = undefined +// provider?: RpcProvider = undefined +// selectedAddress?: string = undefined +// chainId?: string = undefined // isConnected = false // version = VERSION // // -// burnerManager:BurnerManager = undefined +// burnerManager: BurnerManager | null = null + +// constructor() { } -// constructor(burnerManager: BurnerManager) { +// setBurnerManager(burnerManager: BurnerManager) { // this.burnerManager = burnerManager +// this.chainId = this.burnerManager.chainId // this.provider = this.burnerManager.provider -// this.account = this.burnerManager.masterAccount -// this.selectedAddress = this.account.address -// this.chainId = "KATANA"//network.chainId -// this.isConnected = true +// const activeAccount = this.burnerManager.getActiveAccount() + +// this.account = activeAccount ? activeAccount : undefined +// this.selectedAddress = this.account?.address // } -// async request(call) { +// ///@ts-ignore +// async request(call: any) { // console.log("request", call) - -// // if ( -// // call.type === "wallet_watchAsset" && -// // "type" in call.params && -// // call.params.type === "ERC20" -// // ) { -// // return await handleAddTokenRequest(call.params) -// // } else if (call.type === "wallet_addStarknetChain" && "id" in call.params) { -// // return await handleAddNetworkRequest(call.params) -// // } else if ( -// // call.type === "wallet_switchStarknetChain" && -// // "chainId" in call.params -// // ) { -// // return await handleSwitchNetworkRequest(call.params) -// // } else if ( -// // // Currently not part of the spec -// // // eslint-disable-next-line @typescript-eslint/ban-ts-comment -// // // @ts-expect-error -// // call.type === "wallet_deploymentData" -// // ) { -// // console.warn("Using non-standard wallet_deploymentData") -// // return (await handleDeploymentData()) as any -// // } -// // throw Error("Not implemented") // } +// ///@ts-ignore // async enable({ starknetVersion = "v5" } = {}) { - // console.log("enable") -// // const walletAccountP = Promise.race([ -// // waitForMessage("CONNECT_DAPP_RES", 10 * 60 * 1000), -// // waitForMessage("REJECT_PREAUTHORIZATION", 10 * 60 * 1000).then( -// // () => "USER_ABORTED" as const, -// // ), -// // ]) -// // sendMessage({ -// // type: "CONNECT_DAPP", -// // }) -// // const walletAccount = await walletAccountP - -// // if (!walletAccount) { -// // throw Error("No wallet account (should not be possible)") -// // } -// // if (walletAccount === "USER_ABORTED") { -// // throw Error("User aborted") -// // } - -// // const { starknet } = window -// // if (!starknet) { -// // throw Error("No starknet object detected") -// // } - -// // const { address, network } = walletAccount - -// // if (starknetVersion === "v5") { -// // ; (starknet as any).starknetJsVersion = "v5" -// // const provider = new ArgentXProvider(network) -// // starknet.provider = provider -// // starknet.account = new ArgentXAccount(address, provider) -// // } else if (starknetVersion === "v4") { -// // ; (starknet as any).starknetJsVersion = "v4" -// // const provider = new ArgentXProviderV4(network) -// // starknet.provider = provider -// // starknet.account = new ArgentXAccount4(address, provider) -// // } else { -// // // Ideally this should never happen, but if dApp uses get-starknet with starknetVersion = v3, -// // // we want to throw an error instead of silently falling back to v4. -// // throw new Error(`Unsupported starknet.js version: ${starknetVersion}`) -// // } - -// const { starknet } = window -// if (!starknet) { -// throw Error("No starknet object detected") -// } +// // retrieve active account +// const activeAccount = this.burnerManager.getActiveAccount() +// this.account = activeAccount ? activeAccount : undefined - +// if (!this.account) { +// this.account = await this.burnerManager?.create(); +// } +// if (!this.account) { +// this.isConnected = false +// return [] +// } -// // window.starknet = this; -// //window.starknet_dojoburner = this; +// this.isConnected = true // return [this.account.address] // } // async isPreauthorized() { // return true -// //return getIsPreauthorized() // } -// on = (event, handleEvent) => { +// ///@ts-ignore +// on = (event: any, handleEvent: any) => { // console.log("on", event) -// // if (event === "accountsChanged") { -// // userEventHandlers.push({ -// // type: event, -// // handler: handleEvent as AccountChangeEventHandler, -// // }) -// // } else if (event === "networkChanged") { -// // userEventHandlers.push({ -// // type: event, -// // handler: handleEvent as NetworkChangeEventHandler, -// // }) -// // } else { -// // assertNever(event) -// // throw new Error(`Unknwown event: ${event}`) -// // } // } -// off = (event, handleEvent) => { +// ///@ts-ignore +// off = (event: any, handleEvent: any) => { // console.log("off", event) +// } + -// // if (event !== "accountsChanged" && event !== "networkChanged") { -// // assertNever(event) -// // throw new Error(`Unknwown event: ${event}`) -// // } +// static +// } -// // const eventIndex = userEventHandlers.findIndex( -// // (userEvent) => -// // userEvent.type === event && userEvent.handler === handleEvent, -// // ) -// // if (eventIndex >= 0) { -// // userEventHandlers.splice(eventIndex, 1) -// // } -// } +// export const createStarknetWindowObject = () => { +// return new DojoBurnerStarknetWindowObject() // } -// export const createStarknetWindowObject = (burnerManager: BurnerManager) => { -// return new DojoBurnerStarknetWindowObject(burnerManager) +// const starknetWindowObjectKey = 'starknet_dojoburner' + +// const attach = () => { +// const starknetWindowObject = createStarknetWindowObject() +// // we need 2 different try catch blocks because we want to execute both even if one of them fails +// try { delete (window as any)[starknetWindowObjectKey] } catch (e) { /* ignore */ } +// try { +// // set read only property to window +// Object.defineProperty(window, starknetWindowObjectKey, { +// value: starknetWindowObject, +// writable: true, +// //writable: false, +// }) +// } catch { /* ignore*/ } +// try { (window as any)[starknetWindowObjectKey] = starknetWindowObject } catch { /* ignore*/ } +// } + +// const attachHandler = () => { +// attach() +// setTimeout(() => { attach() }, 100) +// } + +// export const initializeInPage = () => { +// // inject script +// attachHandler(); + +// window.addEventListener("load", () => attachHandler()) +// document.addEventListener("DOMContentLoaded", () => attachHandler()) +// document.addEventListener("readystatechange", () => attachHandler()) + // } \ No newline at end of file diff --git a/web/src/components/wallet/ui/BurnerManagerUi.tsx b/web/src/components/wallet/ui/BurnerManagerUi.tsx new file mode 100644 index 000000000..45d569f8b --- /dev/null +++ b/web/src/components/wallet/ui/BurnerManagerUi.tsx @@ -0,0 +1,101 @@ +import { Cigarette } from "@/components/icons"; +import { Sounds, playSound } from "@/hooks/sound"; +import { Button, HStack, List, ListItem, Text, VStack } from "@chakra-ui/react"; +import { Burner, BurnerManager } from "@dojoengine/create-burner"; +import { useConnect, useDisconnect } from "@starknet-react/core"; +import { observer } from "mobx-react-lite"; +import { useEffect, useState } from "react"; +import { frenlyAddress } from "../Connect"; + +export const BurnerManagerUi = observer(({ burnerManager }: { burnerManager?: BurnerManager }) => { + const { connect, connector } = useConnect(); + const { disconnect } = useDisconnect(); + + const [isDeploying, setIsDeploying] = useState(false); + const [refresher, setRefresher] = useState(false); + const [burners, setBurners] = useState([]); + + useEffect(() => { + if (!burnerManager) return; + const burners = burnerManager.list(); + setBurners(burners); + }, [burnerManager, burnerManager?.chainId, burnerManager?.isDeploying, refresher]); + + const onCreate = async () => { + if (!burnerManager) return; + + setIsDeploying(true); + try { + await burnerManager?.create(); + } catch (e: any) { + console.log(e); + } + setIsDeploying(false); + setRefresher(!refresher); + + // force connect active wallet + disconnect(); + connect({ connector }); + }; + + const onSelect = (burner: Burner) => { + if (!burnerManager) return; + burnerManager.select(burner.address); + setRefresher(!refresher); + + // force connect active wallet + disconnect(); + connect({ connector }); + }; + + const onDelete = (burner: Burner) => { + if (!burnerManager) return; + burnerManager.delete(burner.address); + setRefresher(!refresher); + + playSound(Sounds.Magnum357) + + // force connect active wallet + disconnect(); + connect({ connector }); + }; + + if (!burnerManager) return null; + + return ( + + <> + {burners.length === 0 && No burner!} + {burners.length > 0 && ( + <> + + {burners.map((burner: Burner, idx: number) => { + return ( + + + onSelect(burner)}> + {frenlyAddress(burner.address)} + + onDelete(burner)} /> + + + ); + })} + + + )} + + + + ); +}); diff --git a/web/src/dojo/context/DojoContext.tsx b/web/src/dojo/context/DojoContext.tsx index 14ad006fa..ca23a49ac 100644 --- a/web/src/dojo/context/DojoContext.tsx +++ b/web/src/dojo/context/DojoContext.tsx @@ -1,6 +1,5 @@ -import { DojoBurnerStarknetWindowObject } from "@/components/wallet/inpage/starknetWindowObject"; -import { BurnerManager } from "@dojoengine/create-burner"; -import { ReactNode, createContext, useContext, useEffect, useMemo } from "react"; +import { BurnerManager, DojoBurnerStarknetWindowObject } from "@dojoengine/create-burner"; +import { ReactNode, createContext, useContext, useEffect, useMemo, useState } from "react"; import { QueryClientProvider } from "react-query"; import { Account, AccountInterface } from "starknet"; import { DojoChainsResult, useDojoChains } from "../hooks/useDojoChains"; @@ -12,8 +11,8 @@ import { GameStoreClass } from "../stores/game"; interface DojoContextType { chains: DojoChainsResult; clients: DojoClientsResult; - masterAccount: AccountInterface | undefined; - burnerManager: BurnerManager; + masterAccount?: AccountInterface; + burnerManager?: BurnerManager; configStore: ConfigStoreClass; gameStore: GameStoreClass; } @@ -30,7 +29,12 @@ export const DojoContextProvider = ({ const currentValue = useContext(DojoContext); if (currentValue) throw new Error("DojoProvider can only be used once"); - const { selectedChain, setSelectedChain, isKatana, chains } = useDojoChains(dojoContextConfig); + const [snWindowObjectInitialized, setSnWindowObjectInitialized] = useState(false); + + const defaultChain = + process.env.NODE_ENV === "production" ? dojoContextConfig.KATANA_SLOT_420 : dojoContextConfig.KATANA; + + const { selectedChain, setSelectedChain, isKatana, chains } = useDojoChains(dojoContextConfig, defaultChain); const { dojoProvider, queryClient, graphqlClient, graphqlWsClient, rpcProvider } = useDojoClients(selectedChain); @@ -43,8 +47,7 @@ export const DojoContextProvider = ({ const burnerManager = useMemo(() => { if (!masterAccount) return undefined; - - console.log("new BurnerManager"); + // console.log("new BurnerManager"); return new BurnerManager({ masterAccount: masterAccount!, @@ -55,46 +58,17 @@ export const DojoContextProvider = ({ useEffect(() => { const init_async = async () => { - - // if (window.starknet_dojoburner && !burnerManager) { - // window.starknet_dojoburner = undefined; - // } - if (window.starknet_dojoburner && burnerManager) { // initialize burnerManager await burnerManager.init(); - // setBurnerManager (window.starknet_dojoburner as DojoBurnerStarknetWindowObject).setBurnerManager(burnerManager); - - if (!(window.starknet_dojoburner as DojoBurnerStarknetWindowObject).burnerManager.getActiveAccount()) { - // create burner - await (window.starknet_dojoburner as DojoBurnerStarknetWindowObject).burnerManager.create(); - } } + setSnWindowObjectInitialized(true); }; init_async(); }, [burnerManager]); - // const { - // create, - // list, - // get, - // account, - // select, - // isDeploying, - // clear, - // copyToClipboard, - // applyFromClipboard, - // listConnectors, - // } = useBurnerManager({ - // burnerManager: new BurnerManager({ - // masterAccount: masterAccount!, - // accountClassHash: selectedChain.accountClassHash!, - // rpcProvider: rpcProvider, - // }), - // }); - const configStore = useMemo(() => { return new ConfigStoreClass({ client: graphqlClient, @@ -112,10 +86,11 @@ export const DojoContextProvider = ({ }, [graphqlClient, graphqlWsClient, configStore]); useEffect(() => { - console.log("configStore.init"); configStore.init(); }, [configStore]); + if (!snWindowObjectInitialized) return null; + return ( ; -export const useDojoChains = (dojoContextConfig: DojoContextConfig) => { - - const defaultChain = process.env.NODE_ENV === "production" ? dojoContextConfig.KATANA_SLOT : dojoContextConfig.KATANA +export const useDojoChains = (dojoContextConfig: DojoContextConfig, defaultChain: DojoChainConfig) => { const [selected, setSelected] = useState(defaultChain); diff --git a/web/src/dojo/setup/chains.ts b/web/src/dojo/setup/chains.ts index c93b8a0da..2b1075807 100644 --- a/web/src/dojo/setup/chains.ts +++ b/web/src/dojo/setup/chains.ts @@ -1,8 +1,8 @@ import { Chain } from "@starknet-react/chains"; +import { shortString } from "starknet"; export const katanaLocalChain = { - // id: BigInt("0x4b4154414e415f4c4f43414c"), // KATANA_LOCAL - id: BigInt("0x4b4154414e41"), // KATANA + id: BigInt(shortString.encodeShortString("KATANA")), network: "katana", name: "Katana Local", nativeCurrency: { @@ -28,10 +28,10 @@ export const katanaLocalChain = { } as const satisfies Chain; -export const katanaSlotChain = { - id: BigInt("0x4b4154414e415f534c4f54"), // KATANA_SLOT +export const katanaSlot420Chain = { + id: BigInt(shortString.encodeShortString("KATANA_SLOT_420")), network: "katana", - name: "Katana Slot", + name: "Katana Slot 420", nativeCurrency: { address: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", @@ -52,3 +52,29 @@ export const katanaSlotChain = { worlds: ["https://worlds.dev"], }, } as const satisfies Chain; + + +export const katanaSlot421Chain = { + id: BigInt(shortString.encodeShortString("KATANA_SLOT_421")), + network: "katana", + name: "Katana Slot 421", + nativeCurrency: { + address: + "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + name: "Ether", + symbol: "ETH", + decimals: 18, + }, + + rpcUrls: { + default: { + http: ["https://api.cartridge.gg/x/ryo421/katana",], + }, + public: { + http: ["https://api.cartridge.gg/x/ryo421/katana",], + }, + }, + explorers: { + worlds: ["https://worlds.dev"], + }, +} as const satisfies Chain; diff --git a/web/src/dojo/setup/config.ts b/web/src/dojo/setup/config.ts index cef1dfceb..3abb5b878 100644 --- a/web/src/dojo/setup/config.ts +++ b/web/src/dojo/setup/config.ts @@ -2,7 +2,7 @@ // TODO import manifest by chain import { Chain, mainnet, sepolia } from "@starknet-react/chains"; import manifest from "../../../manifest.json"; -import { katanaLocalChain, katanaSlotChain } from "./chains"; +import { katanaLocalChain, katanaSlot420Chain, katanaSlot421Chain } from "./chains"; export type SupportedChainIds = keyof typeof dojoContextConfig; @@ -38,9 +38,9 @@ const katanaLocal: DojoChainConfig = { manifest, } -const katanaSlot: DojoChainConfig = { - name: "KATANA SLOT", - chainConfig: katanaSlotChain, +const katanaSlot420: DojoChainConfig = { + name: "SLOT 420", + chainConfig: katanaSlot420Chain, rpcUrl: "https://api.cartridge.gg/x/ryo420/katana", toriiUrl: "https://api.cartridge.gg/x/ryo420/torii/graphql", toriiWsUrl: "wss://api.cartridge.gg/x/ryo420/torii/graphql/ws", @@ -50,6 +50,18 @@ const katanaSlot: DojoChainConfig = { manifest, } +const katanaSlot421: DojoChainConfig = { + name: "SLOT 421", + chainConfig: katanaSlot421Chain, + rpcUrl: "https://api.cartridge.gg/x/ryo421/katana", + toriiUrl: "https://api.cartridge.gg/x/ryo421/torii/graphql", + toriiWsUrl: "wss://api.cartridge.gg/x/ryo421/torii/graphql/ws", + masterAddress: "0x7d806fc9478c73c60fac37c27888771bdb3092c21eb93452277e7673954d034", + masterPrivateKey: "0x784b1dd14d761c414c6394fccca3ca1d1b0cac187e88122e4b06378f9e8c515", + accountClassHash: "0x05400e90f7e0ae78bd02c77cd75527280470e2fe19c54970dd79dc37a9d3645c", + manifest, +} + const snSepolia: DojoChainConfig = { name: "SEPOLIA", chainConfig: sepolia, @@ -78,14 +90,16 @@ const snMainnet: DojoChainConfig = { // keys must match chain.id export const dojoContextConfig = { "KATANA": katanaLocal, - "KATANA_SLOT": katanaSlot, + "KATANA_SLOT_420": katanaSlot420, + "KATANA_SLOT_421": katanaSlot421, "SN_SEPOLIA": snSepolia, "SN_MAIN": snMainnet, } export const dojoChains = [ katanaLocal, - katanaSlot, + katanaSlot420, + katanaSlot421, snSepolia, snMainnet, ] diff --git a/web/src/dojo/setup/setup.ts b/web/src/dojo/setup/setup.ts deleted file mode 100644 index 4d7e77ae9..000000000 --- a/web/src/dojo/setup/setup.ts +++ /dev/null @@ -1,37 +0,0 @@ -// import { DojoProvider } from "@dojoengine/core"; -// import { GraphQLClient } from "graphql-request"; -// import { createClient } from "graphql-ws"; -// import { QueryClient } from "react-query"; -// import { Config } from "./config"; - -// export type SetupResult = Awaited>; - -// export async function setup(config: Config) { - -// const dojoProvider = new DojoProvider(config.manifest, config.rpcUrl) - -// const queryClient = new QueryClient({ -// defaultOptions: { -// queries: { -// staleTime: 1000 * 20, -// }, -// }, -// }); - -// const graphqlClient = new GraphQLClient(config.toriiUrl) - -// const graphqlWsClient = createClient({ -// url: config.toriiWsUrl, -// }) - -// return { -// config, -// dojoProvider, -// queryClient, -// graphqlClient, -// graphqlWsClient -// }; -// } - - - diff --git a/web/src/dojo/stores/config.tsx b/web/src/dojo/stores/config.tsx index 4ab749a63..6310adfe6 100644 --- a/web/src/dojo/stores/config.tsx +++ b/web/src/dojo/stores/config.tsx @@ -90,7 +90,7 @@ export class ConfigStoreClass { isLoading = false; constructor({ client, dojoProvider, manifest }: ConfigStoreProps) { - console.log("new ConfigStoreClass"); + // console.log("new ConfigStoreClass"); this.client = client; this.dojoProvider = dojoProvider; diff --git a/web/src/dojo/stores/game.tsx b/web/src/dojo/stores/game.tsx index 682ad77fe..ef7811ae1 100644 --- a/web/src/dojo/stores/game.tsx +++ b/web/src/dojo/stores/game.tsx @@ -176,7 +176,7 @@ export class GameStoreClass { handles: Array<() => void> = []; constructor({ client, wsClient, configStore }: GameStoreProps) { - console.log("new GameStoreClass"); + // console.log("new GameStoreClass"); this.client = client; this.wsClient = wsClient; diff --git a/web/src/hooks/media.tsx b/web/src/hooks/media.tsx index d995eac7c..1c0a2b95f 100644 --- a/web/src/hooks/media.tsx +++ b/web/src/hooks/media.tsx @@ -5,23 +5,23 @@ type MediaItem = { name: string; filename: string; sound?: Howl }; const mediaLibrary: MediaItem[] = [ { name: "NightDrive", filename: "1_NightDrive.mp3" }, - // { name: "TheChronic", filename: "2_TheChronic.mp3" }, - // { name: "KeyGenh", filename: "3_KeyGenh.mp3" }, - // { name: "Upbeat", filename: "4_Upbeat.mp3" }, - // { name: "MRYO G Funk", filename: "5_MRYO_G_Funk.mp3" }, - // { name: "Hacked Trap", filename: "6_Hacked_Trap.mp3" }, - // { name: "Dark Moody", filename: "7_Dark_Moody.mp3" }, - - // { name: "2 of Amerika's Most Wanted", filename: "C1_2 of Amerika_s Most Wanted.mp3" }, - // { name: "Ain't Nuthin But a G Thang", filename: "C2_Ain_t Nuthin But a G Thang.mp3" }, - // { name: "Big Poppa", filename: "C3_Big Poppa.mp3" }, - // { name: "Big Pimpin", filename: "C4_Big Pimpin_.mp3" }, - // { name: "C.R.E.A.M.", filename: "C5_C.R.E.A.M..mp3" }, - // { name: "Can't Knock The Hustle", filename: "C6_Can_t Knock The Hustle.mp3" }, - // { name: "Shook Ones Pt 2", filename: "C7_Shook Ones Pt 2.mp3" }, - // { name: "Gangsta's Paradise", filename: "C8_Gangsta_s Paradise.mp3" }, - // { name: "I Got 5 On It", filename: "C9_I Got 5 On It.mp3" }, - // { name: "Regulate", filename: "C10_Regulate.mp3" }, + { name: "TheChronic", filename: "2_TheChronic.mp3" }, + { name: "KeyGenh", filename: "3_KeyGenh.mp3" }, + { name: "Upbeat", filename: "4_Upbeat.mp3" }, + { name: "MRYO G Funk", filename: "5_MRYO_G_Funk.mp3" }, + { name: "Hacked Trap", filename: "6_Hacked_Trap.mp3" }, + { name: "Dark Moody", filename: "7_Dark_Moody.mp3" }, + + { name: "2 of Amerika's Most Wanted", filename: "C1_2 of Amerika_s Most Wanted.mp3" }, + { name: "Ain't Nuthin But a G Thang", filename: "C2_Ain_t Nuthin But a G Thang.mp3" }, + { name: "Big Poppa", filename: "C3_Big Poppa.mp3" }, + { name: "Big Pimpin", filename: "C4_Big Pimpin_.mp3" }, + { name: "C.R.E.A.M.", filename: "C5_C.R.E.A.M..mp3" }, + { name: "Can't Knock The Hustle", filename: "C6_Can_t Knock The Hustle.mp3" }, + { name: "Shook Ones Pt 2", filename: "C7_Shook Ones Pt 2.mp3" }, + { name: "Gangsta's Paradise", filename: "C8_Gangsta_s Paradise.mp3" }, + { name: "I Got 5 On It", filename: "C9_I Got 5 On It.mp3" }, + { name: "Regulate", filename: "C10_Regulate.mp3" }, ]; export interface MediaState { diff --git a/web/src/pages/_app.tsx b/web/src/pages/_app.tsx index cc7ad4eb3..d05ec1ad0 100644 --- a/web/src/pages/_app.tsx +++ b/web/src/pages/_app.tsx @@ -1,13 +1,13 @@ import RegisterEntities from "@/components/RegisterEntities"; import { MakeItRain } from "@/components/layout"; import { StarknetProvider } from "@/components/wallet"; -import { initializeInPage } from "@/components/wallet/inpage"; import { DojoContextProvider } from "@/dojo/context/DojoContext"; import { dojoContextConfig } from "@/dojo/setup/config"; import useKonamiCode, { starkpimpSequence } from "@/hooks/useKonamiCode"; import Fonts from "@/theme/fonts"; import GlobalStyles from "@/theme/global"; import { ChakraProvider } from "@chakra-ui/react"; +import { useBurnerWindowObject } from "@dojoengine/create-burner"; import { Analytics } from "@vercel/analytics/react"; import type { AppProps } from "next/app"; import NextHead from "next/head"; @@ -27,9 +27,11 @@ export default function App({ Component, pageProps }: AppProps) { } }, [isRightSequence, setIsRightSequence, setSequence]); - useEffect(() => { - initializeInPage(); - }, []); + // useEffect(() => { + // initializeInPage(); + // }, []); + + useBurnerWindowObject(); return ( <>