diff --git a/dev-tools/compose/docker-compose.api.yml b/dev-tools/compose/docker-compose.api.yml index 4d3ff295c11..850debac5c6 100644 --- a/dev-tools/compose/docker-compose.api.yml +++ b/dev-tools/compose/docker-compose.api.yml @@ -13,7 +13,8 @@ services: condition: service_healthy ports: - 1323:1323 - command: ['/bin/sh', '-c', 'bridge es-indexer drop && bridge'] + command: + ["/bin/sh", "-c", "bridge es-indexer drop && runMigrations=true bridge"] elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.10.2 @@ -25,7 +26,7 @@ services: - node.name=cluster1-node1 - xpack.license.self_generated.type=basic - xpack.security.enabled=false - - 'ES_JAVA_OPTS=-Xms512m -Xmx512m' + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 @@ -33,7 +34,7 @@ services: ports: - 9200:9200 healthcheck: - test: ['CMD', 'curl', '-f', 'http://localhost:9200'] + test: ["CMD", "curl", "-f", "http://localhost:9200"] interval: 10s timeout: 10s retries: 20 diff --git a/dev-tools/compose/docker-compose.dev-tools.prod.yml b/dev-tools/compose/docker-compose.dev-tools.prod.yml index 889c82f9c1a..0e9a0e5dc40 100644 --- a/dev-tools/compose/docker-compose.dev-tools.prod.yml +++ b/dev-tools/compose/docker-compose.dev-tools.prod.yml @@ -1,4 +1,4 @@ -version: '3.9' +version: "3.9" services: ingress: @@ -7,8 +7,11 @@ services: volumes: - ./nginx_ingress.conf:/etc/nginx/conf.d/default.conf - ${PROJECT_ROOT}/comms/nginx/ingress.conf:/usr/local/openresty/nginx/conf/comms_ingress.conf + - ../tls/cert.pem:/tmp/cert.pem + - ../tls/key.pem:/tmp/key.pem ports: - 80:80 + - 443:443 autoheal: image: willfarrell/autoheal:latest @@ -23,33 +26,33 @@ services: audius-cmd: build: args: - TURBO_TEAM: '${TURBO_TEAM:-}' - TURBO_TOKEN: '${TURBO_TOKEN:-}' + TURBO_TEAM: "${TURBO_TEAM:-}" + TURBO_TOKEN: "${TURBO_TOKEN:-}" context: ${PROJECT_ROOT} dockerfile: ${PROJECT_ROOT}/packages/commands/Dockerfile.prod environment: - ETH_TOKEN_ADDRESS: '${ETH_TOKEN_ADDRESS}' - ETH_REGISTRY_ADDRESS: '${ETH_REGISTRY_ADDRESS}' - ETH_PROVIDER_URL: 'http://eth-ganache:8545' - ETH_OWNER_WALLET: '${ETH_OWNER_WALLET}' + ETH_TOKEN_ADDRESS: "${ETH_TOKEN_ADDRESS}" + ETH_REGISTRY_ADDRESS: "${ETH_REGISTRY_ADDRESS}" + ETH_PROVIDER_URL: "http://eth-ganache:8545" + ETH_OWNER_WALLET: "${ETH_OWNER_WALLET}" - POA_REGISTRY_ADDRESS: '${POA_REGISTRY_ADDRESS}' - ENTITY_MANAGER_ADDRESS: '${ENTITY_MANAGER_ADDRESS}' - POA_PROVIDER_URL: 'http://poa-ganache:8545' + POA_REGISTRY_ADDRESS: "${POA_REGISTRY_ADDRESS}" + ENTITY_MANAGER_ADDRESS: "${ENTITY_MANAGER_ADDRESS}" + POA_PROVIDER_URL: "http://poa-ganache:8545" - SOLANA_ENDPOINT: 'http://solana-test-validator:8899' - SOLANA_OWNER_SECRET_KEY: '${SOLANA_OWNER_SECRET_KEY}' - SOLANA_TOKEN_MINT_PUBLIC_KEY: '${SOLANA_TOKEN_MINT_PUBLIC_KEY}' - SOLANA_USDC_TOKEN_MINT_PUBLIC_KEY: '${SOLANA_USDC_TOKEN_MINT_PUBLIC_KEY}' - SOLANA_CLAIMABLE_TOKENS_PUBLIC_KEY: '${SOLANA_CLAIMABLE_TOKENS_PUBLIC_KEY}' - SOLANA_REWARD_MANAGER_PUBLIC_KEY: '${SOLANA_REWARD_MANAGER_PUBLIC_KEY}' - SOLANA_REWARD_MANAGER_PDA_PUBLIC_KEY: '${SOLANA_REWARD_MANAGER_PDA_PUBLIC_KEY}' - SOLANA_REWARD_MANAGER_TOKEN_PDA_PUBLIC_KEY: '${SOLANA_REWARD_MANAGER_TOKEN_PDA_PUBLIC_KEY}' - SOLANA_PAYMENT_ROUTER_PUBLIC_KEY: '${SOLANA_PAYMENT_ROUTER_PUBLIC_KEY}' - SOLANA_FEEPAYER_SECRET_KEY: '${SOLANA_FEEPAYER_SECRET_KEY}' + SOLANA_ENDPOINT: "http://solana-test-validator:8899" + SOLANA_OWNER_SECRET_KEY: "${SOLANA_OWNER_SECRET_KEY}" + SOLANA_TOKEN_MINT_PUBLIC_KEY: "${SOLANA_TOKEN_MINT_PUBLIC_KEY}" + SOLANA_USDC_TOKEN_MINT_PUBLIC_KEY: "${SOLANA_USDC_TOKEN_MINT_PUBLIC_KEY}" + SOLANA_CLAIMABLE_TOKENS_PUBLIC_KEY: "${SOLANA_CLAIMABLE_TOKENS_PUBLIC_KEY}" + SOLANA_REWARD_MANAGER_PUBLIC_KEY: "${SOLANA_REWARD_MANAGER_PUBLIC_KEY}" + SOLANA_REWARD_MANAGER_PDA_PUBLIC_KEY: "${SOLANA_REWARD_MANAGER_PDA_PUBLIC_KEY}" + SOLANA_REWARD_MANAGER_TOKEN_PDA_PUBLIC_KEY: "${SOLANA_REWARD_MANAGER_TOKEN_PDA_PUBLIC_KEY}" + SOLANA_PAYMENT_ROUTER_PUBLIC_KEY: "${SOLANA_PAYMENT_ROUTER_PUBLIC_KEY}" + SOLANA_FEEPAYER_SECRET_KEY: "${SOLANA_FEEPAYER_SECRET_KEY}" - IDENTITY_SERVICE_URL: 'http://identity-service:7000' - FALLBACK_CREATOR_NODE_URL: 'http://creator-node:4000' # this should choose a random cn everytime this is run + IDENTITY_SERVICE_URL: "http://identity-service:7000" + FALLBACK_CREATOR_NODE_URL: "http://creator-node:4000" # this should choose a random cn everytime this is run deploy: mode: global volumes: diff --git a/dev-tools/compose/docker-compose.oap.yml b/dev-tools/compose/docker-compose.oap.yml new file mode 100644 index 00000000000..e391f89ffbc --- /dev/null +++ b/dev-tools/compose/docker-compose.oap.yml @@ -0,0 +1,100 @@ +services: + openaudio-1: + image: ${OPENAUDIO_IMAGE:-openaudio/go-openaudio:dev} + restart: unless-stopped + env_file: + - ../environment/openaudio-1.env + extra_hosts: + - "node1.oap.devnet:host-gateway" + - "node2.oap.devnet:host-gateway" + - "node3.oap.devnet:host-gateway" + - "node4.oap.devnet:host-gateway" + healthcheck: + test: ["CMD", "curl", "-f", "http://node1.oap.devnet/"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 5s + volumes: + - ./cmd:/app/cmd + - ./pkg:/app/pkg + - ./go.mod:/app/go.mod + - ./go.sum:/app/go.sum + profiles: + - discovery + - storage + + openaudio-2: + image: ${OPENAUDIO_IMAGE:-openaudio/go-openaudio:dev} + restart: unless-stopped + env_file: + - ../environment/openaudio-2.env + extra_hosts: + - "node1.oap.devnet:host-gateway" + - "node2.oap.devnet:host-gateway" + - "node3.oap.devnet:host-gateway" + - "node4.oap.devnet:host-gateway" + healthcheck: + test: ["CMD", "curl", "-f", "http://node2.oap.devnet/"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 5s + volumes: + - ./cmd:/app/cmd + - ./pkg:/app/pkg + - ./go.mod:/app/go.mod + - ./go.sum:/app/go.sum + profiles: + - discovery + - storage + + openaudio-3: + image: ${OPENAUDIO_IMAGE:-openaudio/go-openaudio:dev} + restart: unless-stopped + env_file: + - ../environment/openaudio-3.env + extra_hosts: + - "node1.oap.devnet:host-gateway" + - "node2.oap.devnet:host-gateway" + - "node3.oap.devnet:host-gateway" + - "node4.oap.devnet:host-gateway" + healthcheck: + test: ["CMD", "curl", "-f", "http://node3.oap.devnet/"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 5s + volumes: + - ./cmd:/app/cmd + - ./pkg:/app/pkg + - ./go.mod:/app/go.mod + - ./go.sum:/app/go.sum + profiles: + - discovery + - storage + + openaudio-4: + image: ${OPENAUDIO_IMAGE:-openaudio/go-openaudio:dev} + restart: unless-stopped + env_file: + - ../environment/openaudio-4.env + extra_hosts: + - "node1.oap.devnet:host-gateway" + - "node2.oap.devnet:host-gateway" + - "node3.oap.devnet:host-gateway" + - "node4.oap.devnet:host-gateway" + healthcheck: + test: ["CMD", "curl", "-f", "http://node4.oap.devnet/"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 5s + volumes: + - ./cmd:/app/cmd + - ./pkg:/app/pkg + - ./go.mod:/app/go.mod + - ./go.sum:/app/go.sum + profiles: + - discovery + - storage diff --git a/dev-tools/compose/docker-compose.yml b/dev-tools/compose/docker-compose.yml index c55f649af59..c730238c6e8 100644 --- a/dev-tools/compose/docker-compose.yml +++ b/dev-tools/compose/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.9' +version: "3.9" # TODO: Run nethermind in a container called `chain` like https://github.com/AudiusProject/audius-docker-compose/blob/main/discovery-provider/docker-compose.yml#L247 # This has never existed locally but seems to break discovery indexing when signing up now (was previously working) @@ -6,26 +6,30 @@ version: '3.9' x-common: &common logging: options: - max-size: '50m' - max-file: '3' + max-size: "50m" + max-file: "3" driver: json-file extra_hosts: # Allows the containers can talk to each other via their hostnames routed through nginx - - 'audius-comms-1:host-gateway' - - 'audius-comms-2:host-gateway' - - 'audius-comms-3:host-gateway' - - 'audius-creator-node-1:host-gateway' - - 'audius-creator-node-2:host-gateway' - - 'audius-creator-node-3:host-gateway' - - 'audius-discovery-provider-1:host-gateway' - - 'audius-discovery-provider-2:host-gateway' - - 'audius-discovery-provider-3:host-gateway' - - 'audius-identity-service-1:host-gateway' - - 'audius-solana-test-validator-1:host-gateway' - - 'audius-eth-ganache-1:host-gateway' - - 'audius-pedalboard:host-gateway' - - 'audius-api:host-gateway' - - 'audius-api-elasticsearch:host-gateway' + - "audius-comms-1:host-gateway" + - "audius-comms-2:host-gateway" + - "audius-comms-3:host-gateway" + - "audius-creator-node-1:host-gateway" + - "audius-creator-node-2:host-gateway" + - "audius-creator-node-3:host-gateway" + - "audius-discovery-provider-1:host-gateway" + - "audius-discovery-provider-2:host-gateway" + - "audius-discovery-provider-3:host-gateway" + - "audius-identity-service-1:host-gateway" + - "audius-solana-test-validator-1:host-gateway" + - "audius-eth-ganache-1:host-gateway" + - "audius-pedalboard:host-gateway" + - "audius-api:host-gateway" + - "audius-api-elasticsearch:host-gateway" + - "node1.oap.devnet:host-gateway" + - "node2.oap.devnet:host-gateway" + - "node3.oap.devnet:host-gateway" + - "node4.oap.devnet:host-gateway" deploy: resources: limits: @@ -48,15 +52,15 @@ services: - 5432:5432 - 5454:5432 environment: - PGUSER: 'postgres' - POSTGRES_PASSWORD: 'postgres' + PGUSER: "postgres" + POSTGRES_PASSWORD: "postgres" volumes: - ../startup/initdb:/docker-entrypoint-initdb.d - postgresdata:/var/lib/postgresql/data <<: *common healthcheck: # identity_service is the last db to be created in init-db.sql - test: ['CMD', 'pg_isready', '--dbname', 'identity_service'] + test: ["CMD", "pg_isready", "--dbname", "identity_service"] interval: 10s timeout: 5s @@ -85,41 +89,30 @@ services: - ${PROJECT_ROOT}/dev-tools/environment/api.env <<: *common - # Validators - audiusd-1: + # Validator Nodes + openaudio-1: extends: - file: docker-compose.audiusd.yml - service: audiusd - container_name: audiusd-1 - env_file: - - ${PROJECT_ROOT}/dev-tools/environment/audiusd-1.env + file: docker-compose.oap.yml + service: openaudio-1 + container_name: openaudio-1 <<: *common - - audiusd-2: + openaudio-2: extends: - file: docker-compose.audiusd.yml - service: audiusd - container_name: audiusd-2 - env_file: - - ${PROJECT_ROOT}/dev-tools/environment/audiusd-2.env + file: docker-compose.oap.yml + service: openaudio-2 + container_name: openaudio-2 <<: *common - - audiusd-3: + openaudio-3: extends: - file: docker-compose.audiusd.yml - service: audiusd - container_name: audiusd-3 - env_file: - - ${PROJECT_ROOT}/dev-tools/environment/audiusd-3.env + file: docker-compose.oap.yml + service: openaudio-3 + container_name: openaudio-3 <<: *common - - audiusd-4: + openaudio-4: extends: - file: docker-compose.audiusd.yml - service: audiusd - container_name: audiusd-4 - env_file: - - ${PROJECT_ROOT}/dev-tools/environment/audiusd-4.env + file: docker-compose.oap.yml + service: openaudio-4 + container_name: openaudio-4 <<: *common # Identity diff --git a/dev-tools/compose/nginx_ingress.conf b/dev-tools/compose/nginx_ingress.conf index 79a2987be2e..48496c2a391 100644 --- a/dev-tools/compose/nginx_ingress.conf +++ b/dev-tools/compose/nginx_ingress.conf @@ -146,6 +146,99 @@ server { } } +# +# OPEN AUDIO +# + +resolver 127.0.0.11 valid=30s; + +map $http_host $backend { + ~^node(\d+).oap.devnet$ openaudio-$1:80; +} + +map $http_host $https_backend { + ~^node(\d+).oap.devnet$ openaudio-$1:443; +} + +server { + listen 80 default_server; + server_name _; + + client_max_body_size 100M; # Allow uploads up to 100MB + + location / { + return 200 '{"nginx": "http"}'; + add_header Content-Type application/json; + } +} + +server { + listen 80; + server_name ~^node(\d+).oap.devnet$; + + client_max_body_size 100M; # Allow uploads up to 100MB + + location / { + proxy_pass http://$backend; + proxy_set_header Host $http_host; + } +} + +server { + listen 443 ssl default_server; + server_name _; + + ssl_certificate /tmp/cert.pem; + ssl_certificate_key /tmp/key.pem; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; + ssl_prefer_server_ciphers off; + + client_max_body_size 100M; # Allow uploads up to 100MB + + location / { + return 200 '{"nginx": "https"}'; + add_header Content-Type application/json; + } +} + +server { + listen 443 ssl; + server_name ~^node(\d+).oap.devnet$; + + ssl_certificate /tmp/cert.pem; + ssl_certificate_key /tmp/key.pem; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; + ssl_prefer_server_ciphers off; + + client_max_body_size 100M; # Allow uploads up to 100MB + + location / { + proxy_pass https://$https_backend; + proxy_http_version 1.1; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Host $host; + + proxy_set_header Connection ""; + + proxy_buffering off; + proxy_cache off; + + proxy_read_timeout 1h; + proxy_send_timeout 1h; + + proxy_ssl_verify off; + proxy_ssl_server_name on; + proxy_ssl_protocols TLSv1.2 TLSv1.3; + proxy_ssl_name $http_host; + proxy_ssl_session_reuse off; + proxy_ssl_trusted_certificate /etc/nginx/ssl/cert.pem; + } +} + + # # CREATOR NODE (mediorum) # @@ -316,13 +409,6 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - location ~ ^/relay(/.*)?$ { - resolver 127.0.0.11 valid=30s; - proxy_pass http://audius-relay-1:6001/relay$1; - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - location ~ ^/archive(/.*)?$ { resolver 127.0.0.11 valid=30s; proxy_pass http://archiver:6004/archive$1$is_args$args; diff --git a/dev-tools/environment/openaudio-1.env b/dev-tools/environment/openaudio-1.env new file mode 100644 index 00000000000..41079b681d2 --- /dev/null +++ b/dev-tools/environment/openaudio-1.env @@ -0,0 +1,9 @@ +NETWORK=dev +OPENAUDIO_TLS_SELF_SIGNED=true + +nodeEndpoint=https://node1.oap.devnet +delegatePrivateKey=d09ba371c359f10f22ccda12fd26c598c7921bda3220c9942174562bc6a36fe8 +OPENAUDIO_ENV=dev +archive=true +stateSyncServeSnapshots=true +stateSyncEnable=false diff --git a/dev-tools/environment/openaudio-2.env b/dev-tools/environment/openaudio-2.env new file mode 100644 index 00000000000..b9419c09859 --- /dev/null +++ b/dev-tools/environment/openaudio-2.env @@ -0,0 +1,14 @@ +NETWORK=dev +OPENAUDIO_TLS_SELF_SIGNED=true +OPENAUDIO_PRUNING_ENABLED=true +OPENAUDIO_PRUNING_AMOUNT=1000 +OPENAUDIO_PRUNING_EARLIEST_HEIGHT=50000 + +nodeEndpoint=https://node2.oap.devnet +delegatePrivateKey=21118f9a6de181061a2abd549511105adb4877cf9026f271092e6813b7cf58ab +archive=false +retainHeight=10 +OPENAUDIO_ENV=dev +externalAddress="openaudio-2:26656" +stateSyncServeSnapshots=true +stateSyncEnable=false diff --git a/dev-tools/environment/openaudio-3.env b/dev-tools/environment/openaudio-3.env new file mode 100644 index 00000000000..570167045b6 --- /dev/null +++ b/dev-tools/environment/openaudio-3.env @@ -0,0 +1,8 @@ +NETWORK=dev +OPENAUDIO_TLS_SELF_SIGNED=true + +nodeEndpoint=https://node3.oap.devnet +delegatePrivateKey=1aa14c63d481dcc1185a654eb52c9c0749d07ac8f30ef17d45c3c391d9bf68eb +OPENAUDIO_ENV=dev +externalAddress="openaudio-3:26656" +stateSyncEnable=false diff --git a/dev-tools/environment/openaudio-4.env b/dev-tools/environment/openaudio-4.env new file mode 100644 index 00000000000..1ca462da3bc --- /dev/null +++ b/dev-tools/environment/openaudio-4.env @@ -0,0 +1,8 @@ +NETWORK=dev +OPENAUDIO_TLS_SELF_SIGNED=true + +nodeEndpoint=https://node4.oap.devnet +delegatePrivateKey=1166189cdf129cdcb011f2ad0e5be24f967f7b7026d162d7c36073b12020b61c +OPENAUDIO_ENV=dev +externalAddress="openaudio-4:26656" +stateSyncEnable=false diff --git a/dev-tools/tls/cert.pem b/dev-tools/tls/cert.pem new file mode 100644 index 00000000000..2c21bd3088c --- /dev/null +++ b/dev-tools/tls/cert.pem @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFSDCCAzCgAwIBAgIURgX01VEO9IG4iP3Xau9SPzrvxZIwDQYJKoZIhvcNAQEL +BQAwFTETMBEGA1UEAwwKb2FwLmRldm5ldDAeFw0yNTEwMDIwMTE5MjVaFw0zNTA5 +MzAwMTE5MjVaMBUxEzARBgNVBAMMCm9hcC5kZXZuZXQwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQDzd6Z/rqB+vnB6jVmXt0Z1hzp9NyVPSeHVn+L8zS5D ++6vyYSZNQKeRwYADdqn4rAelOD67mM9vKhphWeKp1Ypp9rP7WYW7od0eOoQNbM9J +smZmpJr8eLm5bYNTnFD+PlQMC2GZuy8KfVq4lPeF6Mhp80qZSnQRePe3jywtUHa/ +WxHI86IbSIDZkRfzG4YDHRYN8ZwyEP1DxJDlF8O+mIiPcyJ5faDmyTKOrzpF07ZL +YbarfnNSZlaUewBeLSWRkwkMD2Sg8TF/dFOekq0TKljOZuiVmvUVvZhxUw+474G1 +S+OM3pje1P7Mrd1WKX9b/xfGlPzYTe89EWvScuf2PBm3NQDVd86hfCOYJei+vK+I +R0kexQ5G3cFdm64fq9KZPClCDhgTfb27ZBQ5GHvCeZGn7vr8Fpz18IeF57DJFkPz +Ii5zKYL/IYpUmLbOuK1uTJzhnXy9g+XHX5+v62+A1+AYaRuhL30JywTFVqqJN7zi +SiYDyQatHGNAKbjAeCw0LMphXJGRy2dQqvhb6ZWrLbyLHbf/8t+cNt9D/l5gEVoT +jxcRUE6oV7PpyJ2+BeXi65YfLX+uug5/AVYpMn4AXWfU1FDqt7Rbi3HAWFeWBV9p +4c/6VL8BhKXG8/WU1L9sBv/8R+30Zojtr9Dgstdn3wAnRNayK1Z9InhCCN+ZrFTX +AQIDAQABo4GPMIGMMGsGA1UdEQRkMGKCDCoub2FwLmRldm5ldIIKb2FwLmRldm5l +dIIQbm9kZTEub2FwLmRldm5ldIIQbm9kZTIub2FwLmRldm5ldIIQbm9kZTMub2Fw +LmRldm5ldIIQbm9kZTQub2FwLmRldm5ldDAdBgNVHQ4EFgQUwAchHHCTU/VBFqfo +ofU76ot7klEwDQYJKoZIhvcNAQELBQADggIBAMUqhrhMzaQbjrhsK3qJIdZIwbnR +tHMnDq/NDvSfhdtMy5j8+xvkwvBIZEvSFqAlMgjd9gQTnZt/P5nPbsL8+/Cq6wHi +SC0ua1FzdTBpeTxWzuAtBaa+ArqYNPsHlhAFU1QP5NJBZsyQjzQhFESpp5dM3hnm +otwEAUX8TKzT0qgsCOf1PftLuHrZoIqOio2z5SaeLTGOKaEcipL0vFzX8ub4miGi +nndzv1sBgHEs/JxaCoFr4UZIvYt1dAQW+pLBdjx1UCo5JBEMj68tlQhmN7UBQEzx +XFdIzLtk7NsGyaaBpeTpyK0wCFV9KZGkNw851bJ3qjACKMb+cRg4EeQ56lv8bm1Y +znJ3kGNB7R6Qa9hG3a3ixpVHYkXvmQkfnT5yE/4hk08VOpUnF2zKWIuG1ArZUzwa +y7S5/dctUG7n4AegvgIoci7RshKsrLJ3cEQzPTrEKAaomOPCfB/C3pO954c+ljEe +Ecco+JJxGPgmimL8X504kl3rhZb+LAkTHe1g7k1+96TSDbzJTyhwv65CE0DY0KtU +Qy0eqkTbSlsDpHNgmsmC/jPwzlpb2m/UN+/Aa6VvBs6YgcwkM+7qhLx+LjHmhHDr +XDt9TwSp/njca+kSwCy4WRIqFVS1Xmmt/OeHmmK2tyDyfc8c5nbVZVYrTqY1d2Ky +AZInkVu1PwkRnQRf +-----END CERTIFICATE----- diff --git a/dev-tools/tls/dev.cnf b/dev-tools/tls/dev.cnf new file mode 100644 index 00000000000..486230e98a2 --- /dev/null +++ b/dev-tools/tls/dev.cnf @@ -0,0 +1,22 @@ +# openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout key.pem -out cert.pem -config dev.cnf + +[req] +default_bits = 4096 +prompt = no +default_md = sha256 +x509_extensions = req_ext +distinguished_name = dn + +[dn] +CN = oap.devnet + +[req_ext] +subjectAltName = @alt_names + +[alt_names] +DNS.1 = *.oap.devnet +DNS.2 = oap.devnet +DNS.3 = node1.oap.devnet +DNS.4 = node2.oap.devnet +DNS.5 = node3.oap.devnet +DNS.6 = node4.oap.devnet diff --git a/dev-tools/tls/key.pem b/dev-tools/tls/key.pem new file mode 100644 index 00000000000..8e5ef6e9feb --- /dev/null +++ b/dev-tools/tls/key.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDzd6Z/rqB+vnB6 +jVmXt0Z1hzp9NyVPSeHVn+L8zS5D+6vyYSZNQKeRwYADdqn4rAelOD67mM9vKhph +WeKp1Ypp9rP7WYW7od0eOoQNbM9JsmZmpJr8eLm5bYNTnFD+PlQMC2GZuy8KfVq4 +lPeF6Mhp80qZSnQRePe3jywtUHa/WxHI86IbSIDZkRfzG4YDHRYN8ZwyEP1DxJDl +F8O+mIiPcyJ5faDmyTKOrzpF07ZLYbarfnNSZlaUewBeLSWRkwkMD2Sg8TF/dFOe +kq0TKljOZuiVmvUVvZhxUw+474G1S+OM3pje1P7Mrd1WKX9b/xfGlPzYTe89EWvS +cuf2PBm3NQDVd86hfCOYJei+vK+IR0kexQ5G3cFdm64fq9KZPClCDhgTfb27ZBQ5 +GHvCeZGn7vr8Fpz18IeF57DJFkPzIi5zKYL/IYpUmLbOuK1uTJzhnXy9g+XHX5+v +62+A1+AYaRuhL30JywTFVqqJN7ziSiYDyQatHGNAKbjAeCw0LMphXJGRy2dQqvhb +6ZWrLbyLHbf/8t+cNt9D/l5gEVoTjxcRUE6oV7PpyJ2+BeXi65YfLX+uug5/AVYp +Mn4AXWfU1FDqt7Rbi3HAWFeWBV9p4c/6VL8BhKXG8/WU1L9sBv/8R+30Zojtr9Dg +stdn3wAnRNayK1Z9InhCCN+ZrFTXAQIDAQABAoICAAjqjRhYd2wPgomDwy/ynZE2 +Ia7Oa0lJ0fbeQIm/DuPHo/lVVE8tyrqPB6aOJ4qMlvQWnk+Fo1/Kvtq+rWBzClBi +oUlCHaBskgSRIom7qM9mCejWPDnPnFzy1TAlmvQQqXMjzeV7d4J5au40axMw86P+ +WFv1oCYNVCRus8YOEBHmc9KJlO/Nr4WoPLm3EejryAVnNNqYM4Tnk4yG8AYlymcs +fCr5rj/oHDf2/q8/d18v2yjRJvKHKRe4yx+SejF9sm4KDfFJ8U+IXaaX8GAxuRJd +WO+0/tGWwa4xcJ42dpLX47kNOYkm65TohMuqwI1d3HZLOa5HPmIcu6I3pJCTN2LO +CXd4DI3p2EaLpLEb4kH6oQq5SIX6P0CPFDQVM+c4Kwc8O/7e2Xq5i0C5VL8IzoMH +XanHV8cDQXSX/MGIoHgEoNkpaNMXxvc8gezK3oC+l5rTbPl/am6KzQWoaPfvDBuP +17X8jzsIn1PJZRD7+zBEMh7aaaTDF2t7DJfajGIrfOH2TcDIkT7ZtpwC5RigX/Wr +H4uEV+lO9DB8C2AslCdzweRy3T4BhDYkR+C/Fl88KIVsWPRrO6aaOp8sL6O//ut6 +RXrWe2PAbDM1hnW354k36I1MXZDRz2js6k6H34kmVp/eDTv4RbtOCOplMv2/gN/r +cnPgUgNgZr0zNX1DWy1FAoIBAQD6r0wtyjpZzLwKCA80AvJGoK+u36bCp5hK2LIu +IVMULLUD9XIycQqseD9jDkCmLMabllCoUSpL4AzdwHeQuzNj7VnLz+SkGjgGNRFY +wpwE7fXvgFi8LoJ1uoNFkPSJgUD4LhPl/YDBI9Xyvz5HERaJzjwsRuX33KpGWj8J +IBE6xANl31IrHUUrwbNbZ2lAP7N/u+s+SE2c710U6QL2YvC5pOW87MKGJVBrrSBT +vgrR0Z5tEfMz2u9P3In35SlsZVf2YbHQJS3a4ZXG1O85XfLtmsDk/8ZL6sAdllKs +2j+Uy/YujHvPHTjSXg8WkHaDhJghmBzRXUyrc1a9EO1hwTEFAoIBAQD4oS1ltibc +2JLbnVYvyy+povKVzf8a1g97eI0rxt0jj21giw9HuX8Sb2f6+aZjQnssZ70S83ef +8lbwf3U4xaotkkPseC5KshcQcNZUQChNbHFaC7CxARNYCR/NYiRzRX0Tg/J2sPRr +X+H0KTAb/AZEsCmdP0romOfzagAAPmVbWVRaXh4ipWSJyUvI6fJOjz7yaY4yk5fb +i0EY4pJ35WHc/b5OxNUkhslzerA0pSgRZxxegd0IK/PTubynHrVdHL9Z0/ncpYIi +KhNmBK7q8kdcjHz4y/d6KV7+xcj59fh4YNFu7ChDwfiIM4fZg4YrqGtKkDngaoP2 +55gBvIH6+h7NAoIBADsAgVyRqXQzVNrDlNh4DRAEh/UP3M8Z5SVQpXdoDobEEwLQ +hUVMB+gaEUk+NIcoKMK7+VX0bJEZNc4Hm9yrwue1GJp43uak6STE3sVWYKRkYasy +OTBpffk5oeYAvR2UF3eSWMqcBO7wgU22J3FQm05qBQ2izkOtY0JVwVpjesqrEeWr +T0qog/xNhepwh3xAwf3BfBfXqrTSPcVLJpBZLzFyl0QFMa+jHq+JOv+azi8eODyR +qf09fW/9h1eaT0qc+7wYuGI2LfnDeJ4oxflpnGDCOL5tWP3LTdZo6CKY57gc3V+N +XyKbTSFuU/zKmapQzgGyLK42WHJOHk83qbeFYgUCggEBAN0OiQt+2azPzjr+9+tE +j5sW6vKwldmpa1iPRY0foeyFEG2fFjXiQo4EiYHGx95G9Lb1gVFBMSH/2La5zGJu +tLER89xiul3lW8ZdXOLJrEuyWFIERNQLrcQ/UIxObzQiG2PnlANdr+Nr+70XhdPL +z1LxAf7ykEqf8NMmctvEnl+K3AoA1nBddzdex0faYXrht8jWevyS55jmhjl28V0y +kEFpRfRI4203fhNziQk1sptOfxW0Bu7GDWM5J/e6wOwJrERUyToZ2ctAd8Dj9xWj +1jj+G/sldmKiN/jzp44+2O1Gv88Mn3wnES8gCfAmFXvpoYNJGnxil/RF04vvq+2W +xx0CggEBAObdBaVlEHYczUGRQlMP8LRA2HbxdZFHelINh0q4q39uX2SbjI01rja9 +HolwuGioLCSQ1Fk+O4vKvdrDr66mWRuq7zJboal2onytg1y9g9sgIkvtsheDjCuL +3aNqXVz/+LwjPg6z+O1vQSHSmr8lXrCx0izGZVWN+P08e1lh1e9yqHCDxAXnBlh9 +O0tEPt0NGnNbtIgya9SouuvC+iDLL6pGoUCiVpe62gp8aNwelSMqv7qk05622+Yn +dETztRPMu9e/dyJav+FAj8QexPynpyKGhIEycj34xY0fJgX0DRH9bYiI3ZHf54/E +QfxEUjAOXpoGDXYrr0Ab5nrKdVt4KjQ= +-----END PRIVATE KEY----- diff --git a/package-lock.json b/package-lock.json index 8c4ef26cc74..a20880b62dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -127,10 +127,6 @@ "tslib": "^2.4.1" } }, - "node_modules/@amplitude/analytics-browser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@amplitude/analytics-client-common": { "version": "2.3.5", "license": "MIT", @@ -141,10 +137,6 @@ "tslib": "^2.4.1" } }, - "node_modules/@amplitude/analytics-client-common/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@amplitude/analytics-connector": { "version": "1.6.1", "license": "MIT", @@ -160,10 +152,6 @@ "tslib": "^2.4.1" } }, - "node_modules/@amplitude/analytics-core/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@amplitude/analytics-react-native": { "version": "1.4.11", "license": "MIT", @@ -219,10 +207,6 @@ "node": "*" } }, - "node_modules/@amplitude/analytics-react-native/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@amplitude/analytics-remote-config": { "version": "0.4.1", "license": "MIT", @@ -233,10 +217,6 @@ "tslib": "^2.4.1" } }, - "node_modules/@amplitude/analytics-remote-config/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@amplitude/analytics-types": { "version": "2.8.4", "license": "MIT" @@ -260,10 +240,6 @@ "node": ">=10" } }, - "node_modules/@amplitude/identify/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@amplitude/node": { "version": "1.9.2", "license": "MIT", @@ -277,6 +253,12 @@ "node": ">=10" } }, + "node_modules/@amplitude/node/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@amplitude/plugin-autocapture-browser": { "version": "1.0.3", "license": "MIT", @@ -287,10 +269,6 @@ "tslib": "^2.4.1" } }, - "node_modules/@amplitude/plugin-autocapture-browser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@amplitude/plugin-page-view-tracking-browser": { "version": "2.3.5", "license": "MIT", @@ -300,10 +278,6 @@ "tslib": "^2.4.1" } }, - "node_modules/@amplitude/plugin-page-view-tracking-browser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@amplitude/plugin-session-replay-browser": { "version": "1.8.2", "license": "MIT", @@ -320,10 +294,6 @@ "version": "6.2.1", "license": "Apache-2.0" }, - "node_modules/@amplitude/plugin-session-replay-browser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@amplitude/rrdom": { "version": "2.0.0-alpha.26", "license": "MIT", @@ -386,10 +356,6 @@ "tslib": "^2.4.1" } }, - "node_modules/@amplitude/session-replay-browser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@amplitude/types": { "version": "1.10.2", "license": "MIT", @@ -425,10 +391,6 @@ "node": ">=10" } }, - "node_modules/@amplitude/utils/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "license": "Apache-2.0", @@ -480,6 +442,12 @@ } } }, + "node_modules/@apollo/client/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@apollo/protobufjs": { "version": "1.2.7", "dev": true, @@ -1397,6 +1365,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/crc32/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@aws-crypto/crc32c": { "version": "3.0.0", "license": "Apache-2.0", @@ -1406,6 +1380,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/crc32c/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@aws-crypto/ie11-detection": { "version": "3.0.0", "license": "Apache-2.0", @@ -1413,6 +1393,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@aws-crypto/sha1-browser": { "version": "3.0.0", "license": "Apache-2.0", @@ -1426,6 +1412,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@aws-crypto/sha256-browser": { "version": "3.0.0", "license": "Apache-2.0", @@ -1440,6 +1432,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@aws-crypto/sha256-js": { "version": "3.0.0", "license": "Apache-2.0", @@ -1449,6 +1447,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "3.0.0", "license": "Apache-2.0", @@ -1456,6 +1460,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@aws-crypto/util": { "version": "3.0.0", "license": "Apache-2.0", @@ -1465,6 +1475,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@aws-sdk/types": { "version": "3.502.0", "license": "Apache-2.0", @@ -1476,10 +1492,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/types/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.495.0", "license": "Apache-2.0", @@ -1490,10 +1502,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", "license": "Apache-2.0", @@ -1501,10 +1509,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@babel/cli": { "version": "7.7.0", "dev": true, @@ -1637,16 +1641,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/jsesc": { - "version": "3.0.2", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.27.3", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", @@ -1802,18 +1796,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", "license": "ISC", @@ -1868,18 +1850,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -1989,18 +1959,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", @@ -2082,17 +2040,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", @@ -2106,17 +2053,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -3067,18 +3003,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@babel/plugin-transform-classes/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -4217,18 +4141,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse--for-generate-function-map/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@babel/types": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", @@ -5678,6 +5590,56 @@ "version": "4.0.0", "license": "ISC" }, + "node_modules/@coinflowlabs/react": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@coinflowlabs/react/-/react-5.5.1.tgz", + "integrity": "sha512-3KKjEUqlzTJGO9KNKfkelWnoY3ksGmRPc8rb9zoaa5ofN4BKKciNiVGRK0I3vo76+Lgh6fyZ5/W+WEtZEECutQ==", + "license": "Apache-2.0", + "dependencies": { + "@nsure-ai/web-client-sdk": "^1.1.90", + "bn.js": "^5.2.2", + "bs58": "~5.0.0", + "lz-string": "^1.5.0" + }, + "peerDependencies": { + "@coinflowlabs/lib-common": "*", + "@solana/web3.js": ">=1.54.0", + "bs58": "~5.0.0", + "react": ">=16" + }, + "peerDependenciesMeta": { + "@coinflowlabs/lib-common": { + "optional": true + }, + "@solana/web3.js": { + "optional": true + }, + "bs58": { + "optional": true + } + } + }, + "node_modules/@coinflowlabs/react/node_modules/base-x": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.1.tgz", + "integrity": "sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==", + "license": "MIT" + }, + "node_modules/@coinflowlabs/react/node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT" + }, + "node_modules/@coinflowlabs/react/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" + } + }, "node_modules/@commander-js/extra-typings": { "version": "12.1.0", "license": "MIT", @@ -6060,6 +6022,8 @@ }, "node_modules/@develar/schema-utils": { "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", "dev": true, "license": "MIT", "dependencies": { @@ -6681,11 +6645,6 @@ "react": ">=16.8.0" } }, - "node_modules/@dnd-kit/accessibility/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/@dnd-kit/core": { "version": "6.1.0", "dev": true, @@ -6700,11 +6659,6 @@ "react-dom": ">=16.8.0" } }, - "node_modules/@dnd-kit/core/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/@dnd-kit/modifiers": { "version": "7.0.0", "dev": true, @@ -6718,11 +6672,6 @@ "react": ">=16.8.0" } }, - "node_modules/@dnd-kit/modifiers/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/@dnd-kit/sortable": { "version": "8.0.0", "dev": true, @@ -6736,11 +6685,6 @@ "react": ">=16.8.0" } }, - "node_modules/@dnd-kit/sortable/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/@dnd-kit/utilities": { "version": "3.2.2", "dev": true, @@ -6752,11 +6696,6 @@ "react": ">=16.8.0" } }, - "node_modules/@dnd-kit/utilities/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/@dual-bundle/import-meta-resolve": { "version": "4.1.0", "dev": true, @@ -6801,10 +6740,6 @@ "node": ">=12" } }, - "node_modules/@elastic/elasticsearch/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@elastic/transport": { "version": "8.3.4", "license": "Apache-2.0", @@ -6824,12 +6759,10 @@ "version": "2.1.3", "license": "MIT" }, - "node_modules/@elastic/transport/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@electron/asar": { - "version": "3.2.8", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz", + "integrity": "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==", "dev": true, "license": "MIT", "dependencies": { @@ -6846,6 +6779,8 @@ }, "node_modules/@electron/asar/node_modules/commander": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, "license": "MIT", "engines": { @@ -7037,8 +6972,64 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@electron/notarize": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz", + "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/notarize/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/notarize/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/@electron/osx-sign": { - "version": "1.0.5", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz", + "integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -7059,6 +7050,8 @@ }, "node_modules/@electron/osx-sign/node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7070,8 +7063,23 @@ "node": ">=12" } }, + "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, "node_modules/@electron/osx-sign/node_modules/jsonfile": { - "version": "6.1.0", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -7083,6 +7091,410 @@ }, "node_modules/@electron/osx-sign/node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/rebuild": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.1.tgz", + "integrity": "sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.2.0", + "node-gyp": "^9.0.0", + "ora": "^5.1.0", + "read-binary-file-arch": "^1.0.6", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/rebuild/node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@electron/rebuild/node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/rebuild/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@electron/rebuild/node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/@electron/rebuild/node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron/rebuild/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@electron/rebuild/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron/rebuild/node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/rebuild/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/rebuild/node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/@electron/rebuild/node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/@electron/rebuild/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/rebuild/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron/rebuild/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron/rebuild/node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron/rebuild/node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron/rebuild/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron/rebuild/node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron/rebuild/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/rebuild/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron/rebuild/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/universal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.1.tgz", + "integrity": "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "^3.2.7", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "dir-compare": "^4.2.0", + "fs-extra": "^11.1.1", + "minimatch": "^9.0.3", + "plist": "^3.1.0" + }, + "engines": { + "node": ">=16.4" + } + }, + "node_modules/@electron/universal/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/universal/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -7099,13 +7511,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@emnapi/runtime/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "optional": true - }, "node_modules/@emotion/babel-plugin": { "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", @@ -8894,15 +9299,6 @@ "xmlbuilder": "^15.1.1" } }, - "node_modules/@expo/plist/node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "license": "MIT", - "engines": { - "node": ">=8.0" - } - }, "node_modules/@expo/sdk-runtime-versions": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", @@ -8961,14 +9357,6 @@ "node": ">=18.17.0" } }, - "node_modules/@fingerprintjs/fingerprintjs-pro/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/@fingerprintjs/fingerprintjs/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@floating-ui/core": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", @@ -9128,11 +9516,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/merge/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/@graphql-tools/schema": { "version": "9.0.19", "dev": true, @@ -9147,11 +9530,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/schema/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/@graphql-tools/utils": { "version": "9.2.1", "dev": true, @@ -9164,11 +9542,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/@graphql-typed-document-node/core": { "version": "3.2.0", "license": "MIT", @@ -10320,10 +10693,6 @@ "node": ">=8" } }, - "node_modules/@injectivelabs/sdk-ts/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@injectivelabs/sdk-ts/node_modules/undici-types": { "version": "6.19.8", "license": "MIT" @@ -13184,6 +13553,29 @@ "node": ">= 6" } }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "license": "ISC", @@ -14875,7 +15267,9 @@ } }, "node_modules/@malept/cross-spawn-promise": { - "version": "1.1.1", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", "dev": true, "funding": [ { @@ -14892,11 +15286,13 @@ "cross-spawn": "^7.0.1" }, "engines": { - "node": ">= 10" + "node": ">= 12.13.0" } }, "node_modules/@malept/cross-spawn-promise/node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -14910,6 +15306,8 @@ }, "node_modules/@malept/cross-spawn-promise/node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -14918,6 +15316,8 @@ }, "node_modules/@malept/cross-spawn-promise/node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -14929,6 +15329,8 @@ }, "node_modules/@malept/cross-spawn-promise/node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -14937,6 +15339,8 @@ }, "node_modules/@malept/flatpak-bundler": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", "dev": true, "license": "MIT", "dependencies": { @@ -14951,6 +15355,8 @@ }, "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14964,7 +15370,9 @@ } }, "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { - "version": "6.1.0", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -14976,6 +15384,8 @@ }, "node_modules/@malept/flatpak-bundler/node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -15910,12 +16320,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@motionone/animation/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "node_modules/@motionone/dom": { "version": "10.18.0", "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.18.0.tgz", @@ -15930,12 +16334,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@motionone/dom/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "node_modules/@motionone/easing": { "version": "10.18.0", "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", @@ -15946,12 +16344,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@motionone/easing/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "node_modules/@motionone/generators": { "version": "10.18.0", "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", @@ -15963,12 +16355,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@motionone/generators/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "node_modules/@motionone/svelte": { "version": "10.16.4", "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.4.tgz", @@ -15979,12 +16365,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@motionone/svelte/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "node_modules/@motionone/types": { "version": "10.17.1", "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", @@ -16002,12 +16382,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@motionone/utils/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "node_modules/@motionone/vue": { "version": "10.16.4", "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.4.tgz", @@ -16019,12 +16393,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@motionone/vue/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", @@ -16870,6 +17238,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@nsure-ai/web-client-sdk": { + "version": "1.1.92", + "resolved": "https://registry.npmjs.org/@nsure-ai/web-client-sdk/-/web-client-sdk-1.1.92.tgz", + "integrity": "sha512-ofhBJX0z1JdD24dyzZ4Y7kktM0IYIAxJvVICA0JoQ/Hjc2s0MNfy8jfHQN4JG7tEtODi7wkUA9rDnnvu4gDe4w==", + "license": "ISC" + }, "node_modules/@nuxtjs/opencollective": { "version": "0.3.2", "dev": true, @@ -18006,10 +18380,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@peculiar/asn1-schema/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@peculiar/json-schema": { "version": "1.1.12", "license": "MIT", @@ -18020,10 +18390,6 @@ "node": ">=8.0.0" } }, - "node_modules/@peculiar/json-schema/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@peculiar/webcrypto": { "version": "1.4.3", "license": "MIT", @@ -18038,10 +18404,6 @@ "node": ">=10.12.0" } }, - "node_modules/@peculiar/webcrypto/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@pedalboard/anti-abuse-oracle": { "resolved": "packages/discovery-provider/plugins/pedalboard/apps/anti-abuse-oracle", "link": true @@ -18235,10 +18597,6 @@ "node": ">=8" } }, - "node_modules/@pkgr/utils/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@playwright/test": { "version": "1.42.1", "dev": true, @@ -18657,6 +19015,29 @@ "react-native": "^0.0.0-0 || >=0.60 <1.0" } }, + "node_modules/@react-native-clipboard/clipboard": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@react-native-clipboard/clipboard/-/clipboard-1.16.3.tgz", + "integrity": "sha512-cMIcvoZKIrShzJHEaHbTAp458R9WOv0fB6UyC7Ek4Qk561Ow/DrzmmJmH/rAZg21Z6ixJ4YSdFDC14crqIBmCQ==", + "license": "MIT", + "workspaces": [ + "example" + ], + "peerDependencies": { + "react": ">= 16.9.0", + "react-native": ">= 0.61.5", + "react-native-macos": ">= 0.61.0", + "react-native-windows": ">= 0.61.0" + }, + "peerDependenciesMeta": { + "react-native-macos": { + "optional": true + }, + "react-native-windows": { + "optional": true + } + } + }, "node_modules/@react-native-community/blur": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@react-native-community/blur/-/blur-4.4.1.tgz", @@ -19071,6 +19452,25 @@ "node": ">=8" } }, + "node_modules/@react-native-community/hooks": { + "version": "100.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/hooks/-/hooks-100.1.0.tgz", + "integrity": "sha512-aXESGr6WcnwyeIl+SiCLNFpbApzTmupyYzm2OkGjMuwHr42+a3G65xxTxN/xHuNdTVWO0dXbOwyLgEkQ0i/qZg==", + "license": "ISC", + "peerDependencies": { + "react": ">=18.0.0", + "react-native": ">=0.70" + } + }, + "node_modules/@react-native-community/netinfo": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.4.1.tgz", + "integrity": "sha512-B0BYAkghz3Q2V09BF88RA601XursIEA111tnc2JOaN7axJWmNefmfjZqw/KdSxKZp7CZUuPpjBmz/WCR9uaHYg==", + "license": "MIT", + "peerDependencies": { + "react-native": ">=0.59" + } + }, "node_modules/@react-native-documents/picker": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-10.1.2.tgz", @@ -19439,18 +19839,6 @@ } } }, - "node_modules/@react-native/babel-preset/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@react-native/babel-preset/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -19701,21 +20089,6 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, - "node_modules/@react-native/codegen/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "license": "MIT" - }, - "node_modules/@react-native/codegen/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.25.1" - } - }, "node_modules/@react-native/codegen/node_modules/jscodeshift": { "version": "17.3.0", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-17.3.0.tgz", @@ -19756,18 +20129,6 @@ } } }, - "node_modules/@react-native/codegen/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@react-native/codegen/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -19831,252 +20192,6 @@ } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/compat-data": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", - "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/core/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/core/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.5" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/traverse": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.5", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/traverse/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/@react-native/community-cli-plugin/node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -20108,39 +20223,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "license": "MIT" - }, - "node_modules/@react-native/community-cli-plugin/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/@react-native/community-cli-plugin/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "node_modules/@react-native/community-cli-plugin/node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "license": "MIT", - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@react-native/community-cli-plugin/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -20150,354 +20232,12 @@ "ms": "2.0.0" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "license": "MIT" - }, - "node_modules/@react-native/community-cli-plugin/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.25.1" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "license": "MIT", - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.81.5.tgz", - "integrity": "sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "accepts": "^1.3.7", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "error-stack-parser": "^2.0.6", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.25.1", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.81.5", - "metro-cache": "0.81.5", - "metro-cache-key": "0.81.5", - "metro-config": "0.81.5", - "metro-core": "0.81.5", - "metro-file-map": "0.81.5", - "metro-resolver": "0.81.5", - "metro-runtime": "0.81.5", - "metro-source-map": "0.81.5", - "metro-symbolicate": "0.81.5", - "metro-transform-plugins": "0.81.5", - "metro-transform-worker": "0.81.5", - "mime-types": "^2.1.27", - "nullthrows": "^1.1.1", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "throat": "^5.0.0", - "ws": "^7.5.10", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-babel-transformer": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.5.tgz", - "integrity": "sha512-oKCQuajU5srm+ZdDcFg86pG/U8hkSjBlkyFjz380SZ4TTIiI5F+OQB830i53D8hmqmcosa4wR/pnKv8y4Q3dLw==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.25.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-cache": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.5.tgz", - "integrity": "sha512-wOsXuEgmZMZ5DMPoz1pEDerjJ11AuMy9JifH4yNW7NmWS0ghCRqvDxk13LsElzLshey8C+my/tmXauXZ3OqZgg==", - "license": "MIT", - "dependencies": { - "exponential-backoff": "^3.1.1", - "flow-enums-runtime": "^0.0.6", - "metro-core": "0.81.5" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-cache-key": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.5.tgz", - "integrity": "sha512-lGWnGVm1UwO8faRZ+LXQUesZSmP1LOg14OVR+KNPBip8kbMECbQJ8c10nGesw28uQT7AE0lwQThZPXlxDyCLKQ==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-config": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.5.tgz", - "integrity": "sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg==", - "license": "MIT", - "dependencies": { - "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", - "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.7.0", - "metro": "0.81.5", - "metro-cache": "0.81.5", - "metro-core": "0.81.5", - "metro-runtime": "0.81.5" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-core": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.5.tgz", - "integrity": "sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.81.5" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-file-map": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.5.tgz", - "integrity": "sha512-mW1PKyiO3qZvjeeVjj1brhkmIotObA3/9jdbY1fQQYvEWM6Ml7bN/oJCRDGn2+bJRlG+J8pwyJ+DgdrM4BsKyg==", - "license": "MIT", - "dependencies": { - "debug": "^2.2.0", - "fb-watchman": "^2.0.0", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-minify-terser": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.5.tgz", - "integrity": "sha512-/mn4AxjANnsSS3/Bb+zA1G5yIS5xygbbz/OuPaJYs0CPcZCaWt66D+65j4Ft/nJkffUxcwE9mk4ubpkl3rjgtw==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "terser": "^5.15.0" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-resolver": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.5.tgz", - "integrity": "sha512-6BX8Nq3g3go3FxcyXkVbWe7IgctjDTk6D9flq+P201DfHHQ28J+DWFpVelFcrNTn4tIfbP/Bw7u/0g2BGmeXfQ==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-runtime": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.5.tgz", - "integrity": "sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.0", - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-source-map": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.5.tgz", - "integrity": "sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.3", - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-symbolicate": "0.81.5", - "nullthrows": "^1.1.1", - "ob1": "0.81.5", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-symbolicate": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.5.tgz", - "integrity": "sha512-X3HV3n3D6FuTE11UWFICqHbFMdTavfO48nXsSpnNGFkUZBexffu0Xd+fYKp+DJLNaQr3S+lAs8q9CgtDTlRRuA==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-source-map": "0.81.5", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-transform-plugins": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.5.tgz", - "integrity": "sha512-MmHhVx/1dJC94FN7m3oHgv5uOjKH8EX8pBeu1pnPMxbJrx6ZuIejO0k84zTSaQTZ8RxX1wqwzWBpXAWPjEX8mA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "flow-enums-runtime": "^0.0.6", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-transform-worker": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.5.tgz", - "integrity": "sha512-lUFyWVHa7lZFRSLJEv+m4jH8WrR5gU7VIjUlg4XmxQfV8ngY4V10ARKynLhMYPeQGl7Qvf+Ayg0eCZ272YZ4Mg==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "metro": "0.81.5", - "metro-babel-transformer": "0.81.5", - "metro-cache": "0.81.5", - "metro-cache-key": "0.81.5", - "metro-minify-terser": "0.81.5", - "metro-source-map": "0.81.5", - "metro-transform-plugins": "0.81.5", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18.18" - } - }, "node_modules/@react-native/community-cli-plugin/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/@react-native/community-cli-plugin/node_modules/ob1": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.5.tgz", - "integrity": "sha512-iNpbeXPLmaiT9I5g16gFFFjsF3sGxLpYG2EGP3dfFB4z+l9X60mp/yRzStHhMtuNt8qmf7Ww80nOPQHngHhnIQ==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/@react-native/community-cli-plugin/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -20522,24 +20262,6 @@ "node": ">=8" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/terser": { - "version": "5.44.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", - "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@react-native/debugger-frontend": { "version": "0.78.3", "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.78.3.tgz", @@ -20733,6 +20455,539 @@ "async-limiter": "~1.0.0" } }, + "node_modules/@react-native/eslint-config": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.76.9.tgz", + "integrity": "sha512-qPAF8o01NQBOfpr+oaVXRABC/GEqNs378cUBNsqQjXpVHJtF13cbMF+2YEpp4zKfv3JSWtdrHd3oAK0UF86O4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/eslint-parser": "^7.25.1", + "@react-native/eslint-plugin": "0.76.9", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-ft-flow": "^2.0.1", + "eslint-plugin-jest": "^27.9.0", + "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-native": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": ">=8", + "prettier": ">=2" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@react-native/eslint-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@react-native/eslint-config/node_modules/eslint-config-prettier": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/@react-native/eslint-config/node_modules/eslint-plugin-jest": { + "version": "27.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", + "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/@react-native/eslint-config/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@react-native/eslint-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@react-native/eslint-config/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@react-native/eslint-plugin": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.76.9.tgz", + "integrity": "sha512-8tIIbICmbsYBUy/Zxl7FF9O0OfQa2ycBUHOWiAN16l7fR9CEyfqM3wY5gcJFPTB9gafGfOR/44876S/vhzNdCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@react-native/gradle-plugin": { "version": "0.78.3", "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.78.3.tgz", @@ -20742,6 +20997,15 @@ "node": ">=18" } }, + "node_modules/@react-native/js-polyfills": { + "version": "0.78.3", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.78.3.tgz", + "integrity": "sha512-RvWAV2qU+XgMRVF+WIJQIqKdfrth1ghhdzAoKkXpXRKgWPps/6ZSCFgxkSjYaxAwXREOEx8/HunSmXDCsW+0ag==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@react-native/metro-babel-transformer": { "version": "0.78.3", "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.78.3.tgz", @@ -20927,33 +21191,6 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, - "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "license": "MIT" - }, - "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.25.1" - } - }, - "node_modules/@react-native/metro-babel-transformer/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@react-native/metro-babel-transformer/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -20963,10 +21200,33 @@ "semver": "bin/semver.js" } }, + "node_modules/@react-native/metro-config": { + "version": "0.78.3", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.78.3.tgz", + "integrity": "sha512-ImYGVJmqyo7oVjNpaCZoZXxkvbF54lDPSvUjTSUD+RcR+Hj2xTuPhehql8+nAkeF14c7iWh7SKLRdj+9STht3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native/js-polyfills": "0.78.3", + "@react-native/metro-babel-transformer": "0.78.3", + "metro-config": "^0.81.3", + "metro-runtime": "^0.81.3" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@react-native/normalize-color": { "version": "2.1.0", "license": "MIT" }, + "node_modules/@react-native/typescript-config": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.76.9.tgz", + "integrity": "sha512-68xGswpZOrCvDd1Wu6H7ZdluIDmNbN0Uq8RVnm+IQMnYx90fVHL+iNW4hClgoY/TIcsWnQQL6shES4n/1kz/fg==", + "dev": true, + "license": "MIT" + }, "node_modules/@react-navigation/bottom-tabs": { "version": "7.8.12", "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.8.12.tgz", @@ -23199,6 +23459,12 @@ "node": ">=6" } }, + "node_modules/@reown/appkit-adapter-solana/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@reown/appkit-adapter-solana/node_modules/uint8arrays": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", @@ -23970,13 +24236,6 @@ "license": "MIT", "optional": true }, - "node_modules/@reown/appkit-adapter-wagmi/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "optional": true - }, "node_modules/@reown/appkit-adapter-wagmi/node_modules/uint8arrays": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", @@ -24847,6 +25106,12 @@ "node": ">=6" } }, + "node_modules/@reown/appkit-controllers/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@reown/appkit-controllers/node_modules/uint8arrays": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", @@ -25617,6 +25882,12 @@ "node": ">=6" } }, + "node_modules/@reown/appkit-utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@reown/appkit-utils/node_modules/uint8arrays": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", @@ -26327,6 +26598,12 @@ "node": ">=6" } }, + "node_modules/@reown/appkit/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@reown/appkit/node_modules/uint8arrays": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", @@ -28899,6 +29176,12 @@ "node": ">=6" } }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@sentry/integrations": { "version": "7.117.0", "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.117.0.tgz", @@ -28933,6 +29216,12 @@ "node": ">=6" } }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@sentry/node": { "version": "6.2.5", "license": "BSD-3-Clause", @@ -28983,6 +29272,12 @@ "node": ">=6" } }, + "node_modules/@sentry/node/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@sentry/replay": { "version": "7.117.0", "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.117.0.tgz", @@ -29030,6 +29325,12 @@ "node": ">=6" } }, + "node_modules/@sentry/tracing/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@sentry/types": { "version": "7.117.0", "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.117.0.tgz", @@ -29065,11 +29366,6 @@ "react-native": "*" } }, - "node_modules/@shopify/flash-list/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, "node_modules/@sideway/address": { "version": "4.1.4", "dev": true, @@ -29511,10 +29807,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/abort-controller/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/chunked-blob-reader": { "version": "2.2.0", "license": "Apache-2.0", @@ -29530,14 +29822,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/chunked-blob-reader-native/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, - "node_modules/@smithy/chunked-blob-reader/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/config-resolver": { "version": "2.2.0", "license": "Apache-2.0", @@ -29552,10 +29836,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/config-resolver/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/core": { "version": "1.4.2", "license": "Apache-2.0", @@ -29573,10 +29853,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/core/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/credential-provider-imds": { "version": "2.3.0", "license": "Apache-2.0", @@ -29591,10 +29867,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-codec": { "version": "2.2.0", "license": "Apache-2.0", @@ -29605,10 +29877,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/eventstream-codec/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-serde-browser": { "version": "2.2.0", "license": "Apache-2.0", @@ -29621,10 +29889,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-serde-config-resolver": { "version": "2.2.0", "license": "Apache-2.0", @@ -29636,10 +29900,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-serde-node": { "version": "2.2.0", "license": "Apache-2.0", @@ -29652,10 +29912,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/eventstream-serde-node/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-serde-universal": { "version": "2.2.0", "license": "Apache-2.0", @@ -29668,10 +29924,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/fetch-http-handler": { "version": "2.5.0", "license": "Apache-2.0", @@ -29683,10 +29935,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/hash-blob-browser": { "version": "2.2.0", "license": "Apache-2.0", @@ -29697,10 +29945,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/hash-blob-browser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/hash-node": { "version": "2.2.0", "license": "Apache-2.0", @@ -29714,10 +29958,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/hash-node/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/hash-stream-node": { "version": "2.2.0", "license": "Apache-2.0", @@ -29730,10 +29970,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/hash-stream-node/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/invalid-dependency": { "version": "2.2.0", "license": "Apache-2.0", @@ -29742,10 +29978,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/invalid-dependency/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "license": "Apache-2.0", @@ -29756,10 +29988,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/is-array-buffer/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/md5-js": { "version": "2.2.0", "license": "Apache-2.0", @@ -29769,10 +29997,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/md5-js/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/middleware-content-length": { "version": "2.2.0", "license": "Apache-2.0", @@ -29785,10 +30009,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-content-length/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/middleware-endpoint": { "version": "2.5.1", "license": "Apache-2.0", @@ -29805,10 +30025,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/middleware-retry": { "version": "2.3.1", "license": "Apache-2.0", @@ -29827,10 +30043,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-retry/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/middleware-retry/node_modules/uuid": { "version": "9.0.1", "funding": [ @@ -29853,10 +30065,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-serde/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/middleware-stack": { "version": "2.2.0", "license": "Apache-2.0", @@ -29868,10 +30076,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-stack/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/node-config-provider": { "version": "2.3.0", "license": "Apache-2.0", @@ -29885,10 +30089,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/node-config-provider/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/node-http-handler": { "version": "2.5.0", "license": "Apache-2.0", @@ -29903,10 +30103,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/node-http-handler/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/property-provider": { "version": "2.2.0", "license": "Apache-2.0", @@ -29918,10 +30114,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/property-provider/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/protocol-http": { "version": "3.3.0", "license": "Apache-2.0", @@ -29933,10 +30125,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/protocol-http/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/querystring-builder": { "version": "2.2.0", "license": "Apache-2.0", @@ -29949,10 +30137,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/querystring-builder/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/querystring-parser": { "version": "2.2.0", "license": "Apache-2.0", @@ -29964,10 +30148,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/querystring-parser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/service-error-classification": { "version": "2.1.5", "license": "Apache-2.0", @@ -29989,10 +30169,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/signature-v4": { "version": "2.3.0", "license": "Apache-2.0", @@ -30009,10 +30185,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/signature-v4/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/smithy-client": { "version": "2.5.1", "license": "Apache-2.0", @@ -30028,10 +30200,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/smithy-client/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/types": { "version": "2.12.0", "license": "Apache-2.0", @@ -30042,10 +30210,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/types/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/url-parser": { "version": "2.2.0", "license": "Apache-2.0", @@ -30055,10 +30219,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/url-parser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-base64": { "version": "2.3.0", "license": "Apache-2.0", @@ -30071,10 +30231,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-base64/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-body-length-browser": { "version": "2.2.0", "license": "Apache-2.0", @@ -30082,10 +30238,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-body-length-node": { "version": "2.3.0", "license": "Apache-2.0", @@ -30096,10 +30248,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-body-length-node/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-buffer-from": { "version": "2.2.0", "license": "Apache-2.0", @@ -30111,10 +30259,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-buffer-from/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-config-provider": { "version": "2.3.0", "license": "Apache-2.0", @@ -30125,10 +30269,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-config-provider/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-defaults-mode-browser": { "version": "2.2.1", "license": "Apache-2.0", @@ -30143,10 +30283,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-defaults-mode-node": { "version": "2.3.1", "license": "Apache-2.0", @@ -30163,10 +30299,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-endpoints": { "version": "1.2.0", "license": "Apache-2.0", @@ -30179,10 +30311,6 @@ "node": ">= 14.0.0" } }, - "node_modules/@smithy/util-endpoints/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-hex-encoding": { "version": "2.2.0", "license": "Apache-2.0", @@ -30193,10 +30321,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-middleware": { "version": "2.2.0", "license": "Apache-2.0", @@ -30208,10 +30332,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-middleware/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-retry": { "version": "2.2.0", "license": "Apache-2.0", @@ -30224,10 +30344,6 @@ "node": ">= 14.0.0" } }, - "node_modules/@smithy/util-retry/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-stream": { "version": "2.2.0", "license": "Apache-2.0", @@ -30245,10 +30361,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-stream/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-uri-escape": { "version": "2.2.0", "license": "Apache-2.0", @@ -30259,10 +30371,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-uri-escape/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-utf8": { "version": "2.3.0", "license": "Apache-2.0", @@ -30274,10 +30382,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-utf8/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@smithy/util-waiter": { "version": "2.2.0", "license": "Apache-2.0", @@ -30290,10 +30394,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-waiter/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@snapchat/snap-kit-react-native": { "version": "0.4.0", "license": "SEE LICENSE IN 'LICENSE' FILE", @@ -31752,10 +31852,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@swc/helpers/node_modules/tslib": { - "version": "2.6.3", - "license": "0BSD" - }, "node_modules/@swc/types": { "version": "0.1.5", "dev": true, @@ -32065,64 +32161,6 @@ } } }, - "node_modules/@testing-library/dom": { - "version": "9.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-native": { "version": "5.4.3", "dev": true, @@ -32198,6 +32236,34 @@ "node": ">=8" } }, + "node_modules/@testing-library/react": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@thehale/react-native-keep-awake": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@thehale/react-native-keep-awake/-/react-native-keep-awake-0.2.0.tgz", @@ -33984,11 +34050,6 @@ "@types/readdir-glob": "*" } }, - "node_modules/@types/aria-query": { - "version": "5.0.3", - "dev": true, - "license": "MIT" - }, "node_modules/@types/array.prototype.flat": { "version": "1.2.1", "dev": true, @@ -34511,6 +34572,8 @@ }, "node_modules/@types/fs-extra": { "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, "license": "MIT", "dependencies": { @@ -34874,7 +34937,9 @@ "license": "MIT" }, "node_modules/@types/plist": { - "version": "3.0.4", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==", "dev": true, "license": "MIT", "optional": true, @@ -35176,6 +35241,13 @@ "node": ">=6" } }, + "node_modules/@types/redux-sentry-middleware/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/@types/request-ip": { "version": "0.0.41", "dev": true, @@ -35360,7 +35432,9 @@ "license": "MIT" }, "node_modules/@types/verror": { - "version": "1.10.8", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.11.tgz", + "integrity": "sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==", "dev": true, "license": "MIT", "optional": true @@ -36503,6 +36577,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/encoding": { "version": "1.0.2", "license": "MIT", @@ -36512,6 +36592,12 @@ "typedarray-to-buffer": "3.1.5" } }, + "node_modules/@walletconnect/encoding/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/environment": { "version": "1.0.1", "license": "MIT", @@ -36519,6 +36605,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/environment/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/ethereum-provider": { "version": "2.11.1", "license": "Apache-2.0", @@ -36637,6 +36729,12 @@ "node": ">=6" } }, + "node_modules/@walletconnect/ethereum-provider/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/events": { "version": "1.0.1", "license": "MIT", @@ -36645,6 +36743,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/events/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/heartbeat": { "version": "1.2.1", "license": "MIT", @@ -36654,6 +36758,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/heartbeat/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/iso-crypto": { "version": "1.8.0", "license": "Apache-2.0", @@ -36691,6 +36801,12 @@ "node": ">=0.8.x" } }, + "node_modules/@walletconnect/jsonrpc-http-connection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/jsonrpc-provider": { "version": "1.0.13", "license": "MIT", @@ -36707,6 +36823,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/jsonrpc-provider/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/jsonrpc-types": { "version": "1.0.3", "license": "MIT", @@ -36715,6 +36837,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/jsonrpc-types/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/jsonrpc-utils": { "version": "1.0.8", "license": "MIT", @@ -36724,6 +36852,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/jsonrpc-utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/jsonrpc-ws-connection": { "version": "1.0.14", "license": "MIT", @@ -36748,6 +36882,12 @@ "node": ">=0.8.x" } }, + "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/keyvaluestorage": { "version": "1.1.1", "license": "MIT", @@ -36776,6 +36916,12 @@ "version": "6.2.1", "license": "Apache-2.0" }, + "node_modules/@walletconnect/keyvaluestorage/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/logger": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.1.2.tgz", @@ -36866,6 +37012,12 @@ "real-require": "^0.1.0" } }, + "node_modules/@walletconnect/logger/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/modal": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.7.0.tgz", @@ -36938,6 +37090,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/randombytes/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/relay-api": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.11.tgz", @@ -36966,6 +37124,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/relay-auth/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/safe-json": { "version": "1.0.0", "license": "MIT" @@ -37110,6 +37274,12 @@ "node": ">=6" } }, + "node_modules/@walletconnect/sign-client/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/socket-transport": { "version": "1.8.0", "license": "Apache-2.0", @@ -37145,6 +37315,12 @@ "tslib": "1.14.1" } }, + "node_modules/@walletconnect/time/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/types": { "version": "1.8.0", "license": "Apache-2.0" @@ -37266,6 +37442,12 @@ "node": ">=6" } }, + "node_modules/@walletconnect/universal-provider/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@walletconnect/utils": { "version": "1.8.0", "license": "Apache-2.0", @@ -38003,6 +38185,12 @@ "node": ">=6" } }, + "node_modules/@web3modal/siwe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@web3modal/siwe/node_modules/uint8arrays": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", @@ -39192,10 +39380,6 @@ "node": ">=8" } }, - "node_modules/@wry/caches/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/@wry/context": { "version": "0.5.4", "license": "MIT", @@ -39206,6 +39390,12 @@ "node": ">=8" } }, + "node_modules/@wry/context/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@wry/equality": { "version": "0.3.4", "license": "MIT", @@ -39216,6 +39406,12 @@ "node": ">=8" } }, + "node_modules/@wry/equality/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@wry/trie": { "version": "0.2.2", "license": "MIT", @@ -39226,6 +39422,12 @@ "node": ">=8" } }, + "node_modules/@wry/trie/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@xmldom/xmldom": { "version": "0.8.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", @@ -39282,6 +39484,8 @@ }, "node_modules/7zip-bin": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", + "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", "dev": true, "license": "MIT" }, @@ -40081,10 +40285,212 @@ } }, "node_modules/app-builder-bin": { - "version": "4.0.0", + "version": "5.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-5.0.0-alpha.10.tgz", + "integrity": "sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==", "dev": true, "license": "MIT" }, + "node_modules/app-builder-lib": { + "version": "25.1.8", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-25.1.8.tgz", + "integrity": "sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/notarize": "2.5.0", + "@electron/osx-sign": "1.3.1", + "@electron/rebuild": "3.6.1", + "@electron/universal": "2.0.1", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "25.1.7", + "builder-util-runtime": "9.2.10", + "chromium-pickle-js": "^0.2.0", + "config-file-ts": "0.2.8-rc1", + "debug": "^4.3.4", + "dotenv": "^16.4.5", + "dotenv-expand": "^11.0.6", + "ejs": "^3.1.8", + "electron-publish": "25.1.7", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^5.0.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.3", + "lazy-val": "^1.0.5", + "minimatch": "^10.0.0", + "resedit": "^1.7.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.8", + "tar": "^6.1.12", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "dmg-builder": "25.1.8", + "electron-builder-squirrel-windows": "25.1.8" + } + }, + "node_modules/app-builder-lib/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/app-builder-lib/node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/app-builder-lib/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/app-builder-lib/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/app-builder-lib/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/app-builder-lib/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/app-builder-lib/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/app-builder-lib/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/app-builder-lib/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, "node_modules/appdirsjs": { "version": "1.2.7", "license": "MIT" @@ -40739,10 +41145,6 @@ "node": ">=12.0.0" } }, - "node_modules/asn1js/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/assert": { "version": "2.0.0", "license": "MIT", @@ -40819,6 +41221,8 @@ }, "node_modules/async-exit-hook": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", "engines": { @@ -40854,10 +41258,6 @@ "tslib": "^2.0.0" } }, - "node_modules/async-mutex/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/async-retry": { "version": "1.3.3", "license": "MIT", @@ -40934,10 +41334,6 @@ "tslib": "^2.3.0" } }, - "node_modules/autolinker/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/available-typed-arrays": { "version": "1.0.5", "license": "MIT", @@ -41960,19 +42356,6 @@ "hermes-parser": "0.25.1" } }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==" - }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "dependencies": { - "hermes-estree": "0.25.1" - } - }, "node_modules/babel-plugin-syntax-jsx": { "version": "6.18.0", "license": "MIT" @@ -42758,6 +43141,8 @@ }, "node_modules/bluebird-lst": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", "dev": true, "license": "MIT", "dependencies": { @@ -43233,14 +43618,6 @@ "node": "*" } }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "license": "BSD-3-Clause" @@ -43348,6 +43725,240 @@ "node": ">=6.14.2" } }, + "node_modules/builder-util": { + "version": "25.1.7", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-25.1.7.tgz", + "integrity": "sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/debug": "^4.1.6", + "7zip-bin": "~5.2.0", + "app-builder-bin": "5.0.0-alpha.10", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.2.10", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "9.2.10", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.10.tgz", + "integrity": "sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util-runtime/node_modules/sax": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "license": "BlueOak-1.0.0" + }, + "node_modules/builder-util/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/builder-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/builder-util/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/builder-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/builder-util/node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/builder-util/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/builder-util/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/builder-util/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/builder-util/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/builder-util/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/builder-util/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/builder-util/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/builder-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/builder-util/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/builtin-modules": { "version": "3.3.0", "dev": true, @@ -43529,11 +44140,6 @@ "node": ">=10" } }, - "node_modules/bullmq/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, "node_modules/bullmq/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -43990,11 +44596,6 @@ "tslib": "^2.0.3" } }, - "node_modules/camel-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/camelcase": { "version": "5.3.1", "license": "MIT", @@ -44107,11 +44708,6 @@ "upper-case-first": "^2.0.2" } }, - "node_modules/capital-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/capnp-ts": { "version": "0.7.0", "dev": true, @@ -44121,11 +44717,6 @@ "tslib": "^2.2.0" } }, - "node_modules/capnp-ts/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/capture-exit": { "version": "2.0.0", "dev": true, @@ -44390,11 +44981,6 @@ "tslib": "^2.0.3" } }, - "node_modules/change-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/char-regex": { "version": "1.0.2", "dev": true, @@ -44596,6 +45182,8 @@ }, "node_modules/chromium-pickle-js": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", "dev": true, "license": "MIT" }, @@ -44819,6 +45407,8 @@ }, "node_modules/cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "license": "MIT", "optional": true, @@ -45162,6 +45752,15 @@ "node": ">=0.1.90" } }, + "node_modules/combine-errors": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz", + "integrity": "sha512-C8ikRNRMygCwaTx+Ek3Yr+OuZzgZjduCOfSQBjbM8V3MfgcjSTeto/GXP6PAwKvJz/v15b7GHZvx5rOlczFw/Q==", + "dependencies": { + "custom-error-instance": "2.1.1", + "lodash.uniqby": "4.5.0" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "license": "MIT", @@ -45199,6 +45798,8 @@ }, "node_modules/compare-version": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, "license": "MIT", "engines": { @@ -45453,16 +46054,20 @@ } }, "node_modules/config-file-ts": { - "version": "0.2.6", + "version": "0.2.8-rc1", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz", + "integrity": "sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==", "dev": true, "license": "MIT", "dependencies": { - "glob": "^10.3.10", - "typescript": "^5.3.3" + "glob": "^10.3.12", + "typescript": "^5.4.3" } }, "node_modules/config-file-ts/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -45470,7 +46075,9 @@ } }, "node_modules/config-file-ts/node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -45483,11 +46090,13 @@ } }, "node_modules/config-file-ts/node_modules/foreground-child": { - "version": "3.1.1", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -45498,28 +46107,46 @@ } }, "node_modules/config-file-ts/node_modules/glob": { - "version": "10.3.10", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/config-file-ts/node_modules/minimatch": { - "version": "9.0.3", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { @@ -45533,7 +46160,9 @@ } }, "node_modules/config-file-ts/node_modules/minipass": { - "version": "7.0.4", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "license": "ISC", "engines": { @@ -45542,6 +46171,8 @@ }, "node_modules/config-file-ts/node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -45550,6 +46181,8 @@ }, "node_modules/config-file-ts/node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -45561,6 +46194,8 @@ }, "node_modules/config-file-ts/node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -45569,6 +46204,8 @@ }, "node_modules/config-file-ts/node_modules/signal-exit": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { @@ -45579,7 +46216,9 @@ } }, "node_modules/config-file-ts/node_modules/typescript": { - "version": "5.3.3", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -45671,11 +46310,6 @@ "upper-case": "^2.0.2" } }, - "node_modules/constant-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/constants-browserify": { "version": "1.0.0", "license": "MIT" @@ -46012,6 +46646,8 @@ }, "node_modules/crc": { "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", "dev": true, "license": "MIT", "optional": true, @@ -46031,6 +46667,8 @@ }, "node_modules/crc/node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -46691,6 +47329,12 @@ "version": "0.1.2", "license": "MIT" }, + "node_modules/custom-error-instance": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz", + "integrity": "sha512-p6JFxJc3M4OTD2li2qaHkDCw9SfMw82Ldr6OC9Je1aXiGfhx2W8p3GaoeaGrPJTUN9NirTM/KTxHWMUdR1rsUg==", + "license": "ISC" + }, "node_modules/cwise-compiler": { "version": "1.1.3", "license": "MIT", @@ -47986,10 +48630,6 @@ "node": ">=4" } }, - "node_modules/degenerator/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/delaunator": { "version": "5.0.1", "dev": true, @@ -48020,11 +48660,6 @@ "dev": true, "license": "MIT" }, - "node_modules/denodeify": { - "version": "1.2.1", - "dev": true, - "license": "MIT" - }, "node_modules/denque": { "version": "1.5.1", "license": "Apache-2.0", @@ -48301,6 +48936,17 @@ "version": "1.0.3", "license": "MIT" }, + "node_modules/dir-compare": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", + "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5", + "p-limit": "^3.1.0 " + } + }, "node_modules/dir-glob": { "version": "3.0.1", "license": "MIT", @@ -48311,8 +48957,99 @@ "node": ">=8" } }, + "node_modules/dmg-builder": { + "version": "25.1.8", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-25.1.8.tgz", + "integrity": "sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "25.1.8", + "builder-util": "25.1.7", + "builder-util-runtime": "9.2.10", + "fs-extra": "^10.1.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/dmg-builder/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/dmg-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dmg-builder/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dmg-builder/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/dmg-builder/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/dmg-builder/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/dmg-license": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", "dev": true, "license": "MIT", "optional": true, @@ -48347,11 +49084,6 @@ "node": ">=6.0.0" } }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "dev": true, - "license": "MIT" - }, "node_modules/dom-css": { "version": "2.1.0", "license": "MIT", @@ -48399,10 +49131,6 @@ "tslib": "^2.0.3" } }, - "node_modules/dot-case/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/dotenv": { "version": "16.4.5", "license": "BSD-2-Clause", @@ -48414,9 +49142,20 @@ } }, "node_modules/dotenv-expand": { - "version": "5.1.0", + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", "dev": true, - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } }, "node_modules/dottie": { "version": "2.0.6", @@ -48779,12 +49518,312 @@ "node": ">= 12.20.55" } }, + "node_modules/electron-builder": { + "version": "25.1.8", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-25.1.8.tgz", + "integrity": "sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "25.1.8", + "builder-util": "25.1.7", + "builder-util-runtime": "9.2.10", + "chalk": "^4.1.2", + "dmg-builder": "25.1.8", + "fs-extra": "^10.1.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/electron-builder/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-builder/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-log": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.2.0.tgz", + "integrity": "sha512-VjLkvaLmbP3AOGOh5Fob9M8bFU0mmeSAb5G2EoTBx+kQLf2XA/0byzjsVGBTHhikbT+m1AB27NEQUv9wX9nM8w==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/electron-publish": { + "version": "25.1.7", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-25.1.7.tgz", + "integrity": "sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "25.1.7", + "builder-util-runtime": "9.2.10", + "chalk": "^4.1.2", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-publish/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/electron-publish/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-publish/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-publish/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-publish/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.262", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz", "integrity": "sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==", "license": "ISC" }, + "node_modules/electron-updater": { + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.3.9.tgz", + "integrity": "sha512-2PJNONi+iBidkoC5D1nzT9XqsE8Q1X28Fn6xRQhO3YX8qRRyJ3mkV4F1aQsuRnYPqq6Hw+E51y27W75WgDoofw==", + "license": "MIT", + "dependencies": { + "builder-util-runtime": "9.2.10", + "fs-extra": "^10.1.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.6.3", + "tiny-typed-emitter": "^2.1.0" + } + }, + "node_modules/electron-updater/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/electron-updater/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-updater/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/electron-updater/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-updater/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-updater/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/element-size": { "version": "1.1.1", "license": "MIT" @@ -50226,11 +51265,6 @@ "node": ">=0.4.0" } }, - "node_modules/eslint-mdx/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/eslint-module-utils": { "version": "2.8.0", "license": "MIT", @@ -50493,11 +51527,6 @@ "eslint": ">=8.0.0" } }, - "node_modules/eslint-plugin-mdx/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/eslint-plugin-mocha": { "version": "10.0.3", "dev": true, @@ -50670,11 +51699,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/eslint-plugin-prettier/node_modules/tslib": { - "version": "2.8.1", - "dev": true, - "license": "0BSD" - }, "node_modules/eslint-plugin-promise": { "version": "6.1.0", "dev": true, @@ -53510,10 +54534,6 @@ "node": ">=0.10.0" } }, - "node_modules/formik/node_modules/tslib": { - "version": "2.8.1", - "license": "0BSD" - }, "node_modules/forwarded": { "version": "0.2.0", "license": "MIT", @@ -54645,10 +55665,6 @@ "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" } }, - "node_modules/graphql-tag/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/growl": { "version": "1.10.5", "dev": true, @@ -55879,29 +56895,24 @@ "tslib": "^2.0.3" } }, - "node_modules/header-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/headers-polyfill": { "version": "3.2.5", "dev": true, "license": "MIT" }, "node_modules/hermes-estree": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz", - "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==", - "dev": true + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "license": "MIT" }, "node_modules/hermes-parser": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz", - "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==", - "dev": true, + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "license": "MIT", "dependencies": { - "hermes-estree": "0.23.1" + "hermes-estree": "0.25.1" } }, "node_modules/hex-rgb": { @@ -55996,6 +57007,8 @@ }, "node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "license": "ISC", "dependencies": { @@ -56007,6 +57020,8 @@ }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "license": "ISC", "dependencies": { @@ -56018,6 +57033,8 @@ }, "node_modules/hosted-git-info/node_modules/yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "license": "ISC" }, @@ -56275,6 +57292,8 @@ }, "node_modules/iconv-corefoundation": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", "dev": true, "license": "MIT", "optional": true, @@ -57577,11 +58596,13 @@ "license": "MIT" }, "node_modules/isbinaryfile": { - "version": "4.0.10", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.7.tgz", + "integrity": "sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 8.0.0" + "node": ">= 18.0.0" }, "funding": { "url": "https://github.com/sponsors/gjtorikian/" @@ -61055,164 +62076,6 @@ "version": "0.2.4", "license": "0BSD" }, - "node_modules/jscodeshift": { - "version": "0.14.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", - "babel-core": "^7.0.0-bridge.0", - "chalk": "^4.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.21.0", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" - }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/jscodeshift/node_modules/@babel/register": { - "version": "7.22.15", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.5", - "source-map-support": "^0.5.16" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/jscodeshift/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jscodeshift/node_modules/ast-types": { - "version": "0.15.2", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jscodeshift/node_modules/babel-core": { - "version": "7.0.0-bridge.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/jscodeshift/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jscodeshift/node_modules/recast": { - "version": "0.21.5", - "dev": true, - "license": "MIT", - "dependencies": { - "ast-types": "0.15.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/jscodeshift/node_modules/rimraf": { - "version": "2.6.3", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/jscodeshift/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jscodeshift/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jscodeshift/node_modules/temp": { - "version": "0.8.4", - "dev": true, - "license": "MIT", - "dependencies": { - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/jscodeshift/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/jscrypto": { "version": "1.0.3", "license": "MIT", @@ -61340,14 +62203,15 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/jsmediatags": { @@ -61977,11 +62841,6 @@ "node": ">=0.10.0" } }, - "node_modules/less/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/level-codec": { "version": "7.0.1", "license": "MIT" @@ -62601,6 +63460,52 @@ "version": "4.17.21", "license": "MIT" }, + "node_modules/lodash._baseiteratee": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash._baseiteratee/-/lodash._baseiteratee-4.7.0.tgz", + "integrity": "sha512-nqB9M+wITz0BX/Q2xg6fQ8mLkyfF7MU7eE+MNBNjTHFKeKaZAPEzEg+E8LWxKWf1DQVflNEn9N49yAuqKh2mWQ==", + "license": "MIT", + "dependencies": { + "lodash._stringtopath": "~4.8.0" + } + }, + "node_modules/lodash._basetostring": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz", + "integrity": "sha512-SwcRIbyxnN6CFEEK4K1y+zuApvWdpQdBHM/swxP962s8HIxPO3alBH5t3m/dl+f4CMUug6sJb7Pww8d13/9WSw==", + "license": "MIT" + }, + "node_modules/lodash._baseuniq": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz", + "integrity": "sha512-Ja1YevpHZctlI5beLA7oc5KNDhGcPixFhcqSiORHNsp/1QTv7amAXzw+gu4YOvErqVlMVyIJGgtzeepCnnur0A==", + "license": "MIT", + "dependencies": { + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" + } + }, + "node_modules/lodash._createset": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz", + "integrity": "sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA==", + "license": "MIT" + }, + "node_modules/lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==", + "license": "MIT" + }, + "node_modules/lodash._stringtopath": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/lodash._stringtopath/-/lodash._stringtopath-4.8.0.tgz", + "integrity": "sha512-SXL66C731p0xPDC5LZg4wI5H+dJo/EO4KTqOMwLYCH3+FmmfAKJEZCm6ohGpI+T1xwsDsJCfL4OnhorllvlTPQ==", + "license": "MIT", + "dependencies": { + "lodash._basetostring": "~4.12.0" + } + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "license": "MIT" @@ -62721,6 +63626,16 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.uniqby": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz", + "integrity": "sha512-IRt7cfTtHy6f1aRVA5n7kT8rgN3N1nH6MOWLcHfpWG2SH19E3JksLK38MktLxZDhlAjCP9jpIXkOnRXlu6oByQ==", + "license": "MIT", + "dependencies": { + "lodash._baseiteratee": "~4.7.0", + "lodash._baseuniq": "~4.6.0" + } + }, "node_modules/log-driver": { "version": "1.2.7", "license": "ISC", @@ -62937,10 +63852,6 @@ "tslib": "^2.0.3" } }, - "node_modules/lower-case/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/lowercase-keys": { "version": "1.0.1", "license": "MIT", @@ -64834,49 +65745,48 @@ } }, "node_modules/metro": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.81.5.tgz", + "integrity": "sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", + "@babel/code-frame": "^7.24.7", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "@babel/types": "^7.25.2", "accepts": "^1.3.7", "chalk": "^4.0.0", "ci-info": "^2.0.0", "connect": "^3.6.5", "debug": "^2.2.0", - "denodeify": "^1.2.1", "error-stack-parser": "^2.0.6", "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", - "hermes-parser": "0.23.1", + "hermes-parser": "0.25.1", "image-size": "^1.0.2", "invariant": "^2.2.4", - "jest-worker": "^29.6.3", + "jest-worker": "^29.7.0", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.80.12", - "metro-cache": "0.80.12", - "metro-cache-key": "0.80.12", - "metro-config": "0.80.12", - "metro-core": "0.80.12", - "metro-file-map": "0.80.12", - "metro-resolver": "0.80.12", - "metro-runtime": "0.80.12", - "metro-source-map": "0.80.12", - "metro-symbolicate": "0.80.12", - "metro-transform-plugins": "0.80.12", - "metro-transform-worker": "0.80.12", + "metro-babel-transformer": "0.81.5", + "metro-cache": "0.81.5", + "metro-cache-key": "0.81.5", + "metro-config": "0.81.5", + "metro-core": "0.81.5", + "metro-file-map": "0.81.5", + "metro-resolver": "0.81.5", + "metro-runtime": "0.81.5", + "metro-source-map": "0.81.5", + "metro-symbolicate": "0.81.5", + "metro-transform-plugins": "0.81.5", + "metro-transform-worker": "0.81.5", "mime-types": "^2.1.27", "nullthrows": "^1.1.1", "serialize-error": "^2.1.0", "source-map": "^0.5.6", - "strip-ansi": "^6.0.0", "throat": "^5.0.0", "ws": "^7.5.10", "yargs": "^17.6.2" @@ -64885,68 +65795,249 @@ "metro": "src/cli.js" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/metro-babel-transformer": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.5.tgz", + "integrity": "sha512-oKCQuajU5srm+ZdDcFg86pG/U8hkSjBlkyFjz380SZ4TTIiI5F+OQB830i53D8hmqmcosa4wR/pnKv8y4Q3dLw==", "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", + "@babel/core": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.23.1", + "hermes-parser": "0.25.1", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18" + "node": ">=18.18" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/metro-babel-transformer/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/metro-cache": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.5.tgz", + "integrity": "sha512-wOsXuEgmZMZ5DMPoz1pEDerjJ11AuMy9JifH4yNW7NmWS0ghCRqvDxk13LsElzLshey8C+my/tmXauXZ3OqZgg==", "license": "MIT", "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", - "metro-core": "0.80.12" + "metro-core": "0.81.5" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/metro-cache-key": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.5.tgz", + "integrity": "sha512-lGWnGVm1UwO8faRZ+LXQUesZSmP1LOg14OVR+KNPBip8kbMECbQJ8c10nGesw28uQT7AE0lwQThZPXlxDyCLKQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/metro-config": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.5.tgz", + "integrity": "sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg==", "license": "MIT", "dependencies": { "connect": "^3.6.5", "cosmiconfig": "^5.0.5", "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.6.3", - "metro": "0.80.12", - "metro-cache": "0.80.12", - "metro-core": "0.80.12", - "metro-runtime": "0.80.12" + "jest-validate": "^29.7.0", + "metro": "0.81.5", + "metro-cache": "0.81.5", + "metro-core": "0.81.5", + "metro-runtime": "0.81.5" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/metro-config/node_modules/cosmiconfig": { "version": "5.2.1", - "dev": true, + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "license": "MIT", "dependencies": { "import-fresh": "^2.0.0", @@ -64960,7 +66051,8 @@ }, "node_modules/metro-config/node_modules/import-fresh": { "version": "2.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "license": "MIT", "dependencies": { "caller-path": "^2.0.0", @@ -64972,7 +66064,8 @@ }, "node_modules/metro-config/node_modules/parse-json": { "version": "4.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "license": "MIT", "dependencies": { "error-ex": "^1.3.1", @@ -64984,101 +66077,79 @@ }, "node_modules/metro-config/node_modules/resolve-from": { "version": "3.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/metro-core": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.5.tgz", + "integrity": "sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.80.12" + "metro-resolver": "0.81.5" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/metro-file-map": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.5.tgz", + "integrity": "sha512-mW1PKyiO3qZvjeeVjj1brhkmIotObA3/9jdbY1fQQYvEWM6Ml7bN/oJCRDGn2+bJRlG+J8pwyJ+DgdrM4BsKyg==", "license": "MIT", "dependencies": { - "anymatch": "^3.0.3", "debug": "^2.2.0", "fb-watchman": "^2.0.0", "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", "invariant": "^2.2.4", - "jest-worker": "^29.6.3", + "jest-worker": "^29.7.0", "micromatch": "^4.0.4", - "node-abort-controller": "^3.1.1", "nullthrows": "^1.1.1", "walker": "^1.0.7" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/metro-file-map/node_modules/anymatch": { - "version": "3.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "node": ">=18.18" } }, "node_modules/metro-file-map/node_modules/debug": { "version": "2.6.9", - "dev": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" } }, - "node_modules/metro-file-map/node_modules/fsevents": { - "version": "2.3.3", - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/metro-file-map/node_modules/ms": { "version": "2.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/metro-minify-terser": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.5.tgz", + "integrity": "sha512-/mn4AxjANnsSS3/Bb+zA1G5yIS5xygbbz/OuPaJYs0CPcZCaWt66D+65j4Ft/nJkffUxcwE9mk4ubpkl3rjgtw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "terser": "^5.15.0" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/metro-minify-terser/node_modules/acorn": { - "version": "8.14.0", - "dev": true, + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -65089,16 +66160,18 @@ }, "node_modules/metro-minify-terser/node_modules/commander": { "version": "2.20.3", - "dev": true, + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, "node_modules/metro-minify-terser/node_modules/terser": { - "version": "5.36.0", - "dev": true, + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -65110,156 +66183,684 @@ } }, "node_modules/metro-resolver": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.5.tgz", + "integrity": "sha512-6BX8Nq3g3go3FxcyXkVbWe7IgctjDTk6D9flq+P201DfHHQ28J+DWFpVelFcrNTn4tIfbP/Bw7u/0g2BGmeXfQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/metro-runtime": { - "version": "0.80.12", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.5.tgz", + "integrity": "sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/metro-runtime/node_modules/@babel/runtime": { - "version": "7.26.0", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/metro-runtime/node_modules/regenerator-runtime": { - "version": "0.14.1", - "license": "MIT" - }, "node_modules/metro-source-map": { - "version": "0.80.12", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.5.tgz", + "integrity": "sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", + "@babel/traverse": "^7.25.3", + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", + "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.80.12", + "metro-symbolicate": "0.81.5", "nullthrows": "^1.1.1", - "ob1": "0.80.12", + "ob1": "0.81.5", "source-map": "^0.5.6", "vlq": "^1.0.0" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/metro-symbolicate": { - "version": "0.80.12", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.5.tgz", + "integrity": "sha512-X3HV3n3D6FuTE11UWFICqHbFMdTavfO48nXsSpnNGFkUZBexffu0Xd+fYKp+DJLNaQr3S+lAs8q9CgtDTlRRuA==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.80.12", + "metro-source-map": "0.81.5", "nullthrows": "^1.1.1", "source-map": "^0.5.6", - "through2": "^2.0.1", "vlq": "^1.0.0" }, "bin": { "metro-symbolicate": "src/index.js" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, - "node_modules/metro-symbolicate/node_modules/isarray": { - "version": "1.0.0", - "license": "MIT" + "node_modules/metro-transform-plugins": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.5.tgz", + "integrity": "sha512-MmHhVx/1dJC94FN7m3oHgv5uOjKH8EX8pBeu1pnPMxbJrx6ZuIejO0k84zTSaQTZ8RxX1wqwzWBpXAWPjEX8mA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18.18" + } }, - "node_modules/metro-symbolicate/node_modules/readable-stream": { - "version": "2.3.8", + "node_modules/metro-transform-plugins/node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-plugins/node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/metro-symbolicate/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" + "node_modules/metro-transform-plugins/node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/metro-symbolicate/node_modules/string_decoder": { - "version": "1.1.1", + "node_modules/metro-transform-plugins/node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/metro-symbolicate/node_modules/through2": { - "version": "2.0.5", + "node_modules/metro-transform-plugins/node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/metro-transform-plugins": { - "version": "0.80.12", - "dev": true, + "node_modules/metro-transform-plugins/node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "flow-enums-runtime": "^0.0.6", - "nullthrows": "^1.1.1" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-plugins/node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/metro-transform-plugins/node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-plugins/node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-plugins/node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-plugins/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/metro-transform-plugins/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/metro-transform-worker": { - "version": "0.80.12", - "dev": true, + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.5.tgz", + "integrity": "sha512-lUFyWVHa7lZFRSLJEv+m4jH8WrR5gU7VIjUlg4XmxQfV8ngY4V10ARKynLhMYPeQGl7Qvf+Ayg0eCZ272YZ4Mg==", "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "metro": "0.80.12", - "metro-babel-transformer": "0.80.12", - "metro-cache": "0.80.12", - "metro-cache-key": "0.80.12", - "metro-minify-terser": "0.80.12", - "metro-source-map": "0.80.12", - "metro-transform-plugins": "0.80.12", + "metro": "0.81.5", + "metro-babel-transformer": "0.81.5", + "metro-cache": "0.81.5", + "metro-cache-key": "0.81.5", + "metro-minify-terser": "0.81.5", + "metro-source-map": "0.81.5", + "metro-transform-plugins": "0.81.5", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18" + "node": ">=18.18" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-worker/node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro-transform-worker/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/metro-transform-worker/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/metro/node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro/node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/metro/node_modules/@babel/core/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/metro/node_modules/@babel/core/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/metro/node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro/node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro/node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/metro/node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro/node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/metro/node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro/node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro/node_modules/@babel/traverse/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/metro/node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/metro/node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/metro/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -65273,7 +66874,8 @@ }, "node_modules/metro/node_modules/chalk": { "version": "4.1.2", - "dev": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -65288,12 +66890,20 @@ }, "node_modules/metro/node_modules/ci-info": { "version": "2.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/metro/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, "node_modules/metro/node_modules/debug": { "version": "2.6.9", - "dev": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -65301,12 +66911,23 @@ }, "node_modules/metro/node_modules/ms": { "version": "2.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, + "node_modules/metro/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/metro/node_modules/supports-color": { "version": "7.2.0", - "dev": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -68009,10 +69630,6 @@ "tslib": "^2.0.3" } }, - "node_modules/no-case/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/nocache": { "version": "3.0.4", "dev": true, @@ -68078,10 +69695,35 @@ }, "node_modules/node-addon-api": { "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", "dev": true, "license": "MIT", "optional": true }, + "node_modules/node-api-version": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz", + "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + } + }, + "node_modules/node-api-version/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-cron": { "version": "3.0.3", "license": "ISC", @@ -68099,17 +69741,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/node-dir": { - "version": "0.1.17", - "dev": true, - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.10.5" - } - }, "node_modules/node-fetch": { "version": "2.6.1", "license": "MIT", @@ -70621,13 +72252,15 @@ } }, "node_modules/ob1": { - "version": "0.80.12", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.5.tgz", + "integrity": "sha512-iNpbeXPLmaiT9I5g16gFFFjsF3sGxLpYG2EGP3dfFB4z+l9X60mp/yRzStHhMtuNt8qmf7Ww80nOPQHngHhnIQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18" + "node": ">=18.18" } }, "node_modules/obj-multiplex": { @@ -71638,11 +73271,6 @@ "tslib": "^2.0.3" } }, - "node_modules/param-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/parent-module": { "version": "1.0.1", "license": "MIT", @@ -71778,11 +73406,6 @@ "tslib": "^2.0.3" } }, - "node_modules/pascal-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/pascalcase": { "version": "0.1.1", "dev": true, @@ -71939,11 +73562,6 @@ "tslib": "^2.0.3" } }, - "node_modules/path-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/path-dirname": { "version": "1.0.2", "license": "MIT" @@ -72041,6 +73659,21 @@ "node": ">=0.12" } }, + "node_modules/pe-library": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", + "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, "node_modules/peek-readable": { "version": "4.1.0", "license": "MIT", @@ -72614,13 +74247,6 @@ "node": ">=10.4.0" } }, - "node_modules/plist/node_modules/xmlbuilder": { - "version": "15.1.1", - "license": "MIT", - "engines": { - "node": ">=8.0" - } - }, "node_modules/plur": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/plur/-/plur-3.1.1.tgz", @@ -73731,24 +75357,6 @@ "node": ">=6.0.0" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "dev": true, - "license": "MIT" - }, "node_modules/prettycli": { "version": "1.4.3", "dev": true, @@ -74020,6 +75628,26 @@ "node": ">= 8" } }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/proper-url-join": { "version": "2.1.1", "license": "MIT", @@ -74276,10 +75904,6 @@ "tslib": "^2.6.1" } }, - "node_modules/pvtsutils/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/pvutils": { "version": "1.1.3", "license": "MIT", @@ -74847,12 +76471,6 @@ "react": "^19.0.0" } }, - "node_modules/react-dom/node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", - "license": "MIT" - }, "node_modules/react-dropzone": { "version": "6.2.4", "license": "MIT", @@ -75564,6 +77182,19 @@ "react-native-reanimated": ">=3.0.0" } }, + "node_modules/react-native-modal-datetime-picker": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/react-native-modal-datetime-picker/-/react-native-modal-datetime-picker-18.0.0.tgz", + "integrity": "sha512-0jdvhhraZQlRACwr7pM6vmZ2kxgzJ4CpnmV6J3TVA6MrXMXK6Zo/upRBKkRp0+fTOiKuNblzesA2U59rYo6SGA==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "@react-native-community/datetimepicker": ">=6.7.0", + "react-native": ">=0.65.0" + } + }, "node_modules/react-native-pager-view": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.7.1.tgz", @@ -76242,18 +77873,6 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/react-shallow-renderer": { - "version": "16.15.0", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/react-side-effect": { "version": "2.1.2", "license": "MIT", @@ -76297,6 +77916,27 @@ "react": "^16.8.3 || ^17.0.0-0 || ^18.0.0" } }, + "node_modules/react-test-renderer": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.0.0.tgz", + "integrity": "sha512-oX5u9rOQlHzqrE/64CNr0HB0uWxkCQmZNSfozlYvwE71TLVgeZxVf0IjouGEr1v7r1kcDifdAJBeOhdhxsG/DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-is": "^19.0.0", + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/react-test-renderer/node_modules/react-is": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.3.tgz", + "integrity": "sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==", + "dev": true, + "license": "MIT" + }, "node_modules/react-transform-hmr": { "version": "1.0.4", "license": "MIT", @@ -76372,12 +78012,6 @@ } } }, - "node_modules/react-uid/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "node_modules/react-universal-interface": { "version": "0.6.2", "peerDependencies": { @@ -76434,10 +78068,6 @@ "toggle-selection": "^1.0.6" } }, - "node_modules/react-use/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/reactotron-core-client": { "version": "2.9.7", "resolved": "https://registry.npmjs.org/reactotron-core-client/-/reactotron-core-client-2.9.7.tgz", @@ -76476,6 +78106,19 @@ "node": ">=0.8" } }, + "node_modules/read-binary-file-arch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", + "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "bin": { + "read-binary-file-arch": "cli.js" + } + }, "node_modules/read-package-json": { "version": "6.0.4", "dev": true, @@ -76962,10 +78605,6 @@ "node": ">=0.10.0" } }, - "node_modules/recast/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/rechoir": { "version": "0.8.0", "license": "MIT", @@ -77323,18 +78962,6 @@ "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/rehackt": { "version": "0.1.0", "license": "MIT", @@ -77935,6 +79562,24 @@ "version": "1.0.0", "license": "MIT" }, + "node_modules/resedit": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz", + "integrity": "sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pe-library": "^0.4.1" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, "node_modules/reselect": { "version": "4.0.0", "license": "MIT" @@ -79428,10 +81073,6 @@ "tslib": "^2.1.0" } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/sade": { "version": "1.8.1", "dev": true, @@ -79692,6 +81333,8 @@ }, "node_modules/sanitize-filename": { "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", "dev": true, "license": "WTFPL OR ISC", "dependencies": { @@ -79870,11 +81513,10 @@ "license": "MIT" }, "node_modules/scheduler": { - "version": "0.23.2", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "license": "MIT" }, "node_modules/schema-utils": { "version": "3.3.0", @@ -80071,11 +81713,6 @@ "upper-case-first": "^2.0.2" } }, - "node_modules/sentence-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/sequelize": { "version": "4.41.2", "license": "MIT", @@ -81241,6 +82878,8 @@ }, "node_modules/slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "license": "MIT", "optional": true, @@ -81255,6 +82894,8 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "optional": true, @@ -81367,10 +83008,6 @@ "tslib": "^2.0.3" } }, - "node_modules/snake-case/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/snakecase-keys": { "version": "5.4.5", "license": "MIT", @@ -82706,6 +84343,8 @@ }, "node_modules/stat-mode": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", "dev": true, "license": "MIT", "engines": { @@ -84340,10 +85979,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/synckit/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/system-architecture": { "version": "0.1.0", "license": "MIT", @@ -84568,6 +86203,8 @@ }, "node_modules/temp-file": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", "dev": true, "license": "MIT", "dependencies": { @@ -84577,6 +86214,8 @@ }, "node_modules/temp-file/node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -84589,7 +86228,9 @@ } }, "node_modules/temp-file/node_modules/jsonfile": { - "version": "6.1.0", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -84601,6 +86242,8 @@ }, "node_modules/temp-file/node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -85469,6 +87112,8 @@ }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", "dev": true, "license": "WTFPL", "dependencies": { @@ -85518,6 +87163,12 @@ "node": ">=8" } }, + "node_modules/ts-invariant/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/ts-jest": { "version": "29.0.5", "dev": true, @@ -86238,7 +87889,9 @@ } }, "node_modules/tslib": { - "version": "1.14.1", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/tsscmp": { @@ -87006,6 +88659,13 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/tsx": { "version": "4.19.2", "dev": true, @@ -87629,6 +89289,24 @@ "win32" ] }, + "node_modules/tus-js-client": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/tus-js-client/-/tus-js-client-4.3.1.tgz", + "integrity": "sha512-ZLeYmjrkaU1fUsKbIi8JML52uAocjEZtBx4DKjRrqzrZa0O4MYwT6db+oqePlspV+FxXJAyFBc/L5gwUi2OFsg==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.1.2", + "combine-errors": "^3.0.3", + "is-stream": "^2.0.0", + "js-base64": "^3.7.2", + "lodash.throttle": "^4.1.1", + "proper-lockfile": "^4.1.2", + "url-parse": "^1.5.7" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/tv4": { "version": "1.3.0", "license": [ @@ -87920,6 +89598,19 @@ } } }, + "node_modules/typescript-transform-paths": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/typescript-transform-paths/-/typescript-transform-paths-3.4.6.tgz", + "integrity": "sha512-qdgpCk9oRHkIBhznxaHAapCFapJt5e4FbFik7Y4qdqtp6VyC3smAIPoDEIkjZ2eiF7x5+QxUPYNwJAtw0thsTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.4" + }, + "peerDependencies": { + "typescript": ">=3.6.5" + } + }, "node_modules/typescript-tuple": { "version": "2.2.1", "license": "MIT", @@ -88817,16 +90508,6 @@ "tslib": "^2.0.3" } }, - "node_modules/upper-case-first/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, - "node_modules/upper-case/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/uqr": { "version": "0.1.2", "license": "MIT" @@ -88965,9 +90646,11 @@ "license": "MIT" }, "node_modules/utf8-byte-length": { - "version": "1.0.4", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", "dev": true, - "license": "WTFPL" + "license": "(WTFPL OR MIT)" }, "node_modules/utif": { "version": "2.0.1", @@ -93818,10 +95501,6 @@ "tslib": "^2.4.0" } }, - "node_modules/webcrypto-core/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/webextension-polyfill": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.10.0.tgz", @@ -95383,10 +97062,10 @@ } }, "node_modules/xmlbuilder": { - "version": "14.0.0", - "dev": true, + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "license": "MIT", - "optional": true, "engines": { "node": ">=8.0" } @@ -96043,10 +97722,6 @@ "node": ">=18" } }, - "packages/commands/node_modules/bn.js": { - "version": "5.2.1", - "license": "MIT" - }, "packages/commands/node_modules/commander": { "version": "9.5.0", "license": "MIT", @@ -96102,7 +97777,8 @@ "@jup-ag/api": "6.0.44", "@metaplex-foundation/mpl-token-metadata": "2.5.2", "@optimizely/optimizely-sdk": "4.0.0", - "@tanstack/react-query": "5.62.7", + "@tanstack/react-query": "5.90.16", + "@tanstack/react-query-devtools": "5.91.2", "@yornaath/batshit": "0.10.1", "async-retry": "1.3.3", "dayjs": "^1.11.19", @@ -96169,6 +97845,59 @@ "version": "5.2.1", "license": "MIT" }, + "packages/common/node_modules/@tanstack/query-core": { + "version": "5.90.16", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.16.tgz", + "integrity": "sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "packages/common/node_modules/@tanstack/query-devtools": { + "version": "5.92.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.92.0.tgz", + "integrity": "sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "packages/common/node_modules/@tanstack/react-query": { + "version": "5.90.16", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.16.tgz", + "integrity": "sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.90.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "packages/common/node_modules/@tanstack/react-query-devtools": { + "version": "5.91.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.91.2.tgz", + "integrity": "sha512-ZJ1503ay5fFeEYFUdo7LMNFzZryi6B0Cacrgr2h1JRkvikK1khgIq6Nq2EcblqEdIlgB/r7XDW8f8DQ89RuUgg==", + "license": "MIT", + "dependencies": { + "@tanstack/query-devtools": "5.92.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.90.14", + "react": "^18 || ^19" + } + }, "packages/common/node_modules/@types/numeral": { "version": "2.0.2", "dev": true, @@ -96198,21 +97927,6 @@ "proxy-compare": "^3.0.0" } }, - "packages/common/node_modules/redux": { - "version": "4.0.5", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" - } - }, - "packages/common/node_modules/symbol-observable": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "packages/common/node_modules/type-fest": { "version": "4.26.1", "license": "(MIT OR CC0-1.0)", @@ -105435,13 +107149,6 @@ "node": ">= 0.8" } }, - "packages/discovery-provider/plugins/pedalboard/apps/relay/node_modules/fast-redact": { - "version": "3.3.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "packages/discovery-provider/plugins/pedalboard/apps/relay/node_modules/fill-range": { "version": "7.0.1", "dev": true, @@ -107333,13 +109040,6 @@ "version": "2.0.0", "license": "MIT" }, - "packages/discovery-provider/plugins/pedalboard/apps/solana-relay/node_modules/fast-redact": { - "version": "3.3.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "packages/discovery-provider/plugins/pedalboard/apps/solana-relay/node_modules/finalhandler": { "version": "1.1.2", "license": "MIT", @@ -115221,19 +116921,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "packages/distro/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "packages/distro/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", @@ -116234,19 +117921,6 @@ } } }, - "packages/embed/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "packages/embed/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", @@ -116512,13 +118186,6 @@ "stream-shift": "^1.0.0" } }, - "packages/es-indexer/node_modules/fast-redact": { - "version": "3.3.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "packages/es-indexer/node_modules/json5": { "version": "1.0.2", "dev": true, @@ -118178,10 +119845,6 @@ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, - "packages/harmony/node_modules/@types/js-cookie": { - "version": "2.2.6", - "license": "MIT" - }, "packages/harmony/node_modules/@types/react-dom": { "version": "19.0.0", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.0.tgz", @@ -118820,20 +120483,6 @@ "node": ">=8" } }, - "packages/harmony/node_modules/prettier": { - "version": "2.8.8", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "packages/harmony/node_modules/react-use": { "version": "17.5.0", "license": "Unlicense", @@ -119132,21 +120781,6 @@ "node": ">=8.0" } }, - "packages/harmony/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "packages/harmony/node_modules/typescript-transform-paths": { - "version": "3.4.4", - "dev": true, - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.4" - }, - "peerDependencies": { - "typescript": ">=3.6.5" - } - }, "packages/harmony/node_modules/unique-filename": { "version": "1.1.1", "dev": true, @@ -119824,10 +121458,6 @@ "is-buffer": "^2.0.2" } }, - "packages/identity-service/node_modules/bn.js": { - "version": "5.2.1", - "license": "MIT" - }, "packages/identity-service/node_modules/cookie": { "version": "0.3.1", "license": "MIT", @@ -120136,20 +121766,6 @@ "semver": "bin/semver" } }, - "packages/identity-service/node_modules/prettier": { - "version": "2.8.8", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "packages/identity-service/node_modules/qs": { "version": "6.5.1", "license": "BSD-3-Clause", @@ -120170,43 +121786,10 @@ "node": ">= 0.8" } }, - "packages/identity-service/node_modules/react": { - "version": "16.11.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "packages/identity-service/node_modules/react-dom": { - "version": "16.11.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.17.0" - }, - "peerDependencies": { - "react": "^16.0.0" - } - }, "packages/identity-service/node_modules/safe-buffer": { "version": "5.1.1", "license": "MIT" }, - "packages/identity-service/node_modules/scheduler": { - "version": "0.17.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, "packages/identity-service/node_modules/scrypt-js": { "version": "2.0.3", "license": "MIT" @@ -120663,36 +122246,6 @@ "node": ">=14.0.0" } }, - "packages/libs/node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "packages/libs/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "packages/libs/node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.11", "dev": true, @@ -120710,67 +122263,6 @@ "@babel/core": "^7.0.0-0" } }, - "packages/libs/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "packages/libs/node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "packages/libs/node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "packages/libs/node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "packages/libs/node_modules/@babel/preset-env": { "version": "7.16.11", "dev": true, @@ -122199,20 +123691,6 @@ "node": ">=8" } }, - "packages/libs/node_modules/prettier": { - "version": "2.8.8", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "packages/libs/node_modules/pretty-format": { "version": "29.7.0", "dev": true, @@ -122467,11 +123945,6 @@ "node": ">=0.3.1" } }, - "packages/libs/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "packages/libs/node_modules/type-fest": { "version": "4.26.1", "dev": true, @@ -123173,63 +124646,6 @@ "@babel/core": "^7.0.0-0" } }, - "packages/mobile/node_modules/@babel/plugin-transform-runtime": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", - "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.26.5", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "packages/mobile/node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", - "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3", - "core-js-compat": "^3.40.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "packages/mobile/node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "packages/mobile/node_modules/@babel/plugin-transform-template-literals": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", - "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "packages/mobile/node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz", @@ -123705,15 +125121,6 @@ "react-native": "^0.0.0-0 || >=0.65 <1.0" } }, - "packages/mobile/node_modules/@react-native-clipboard/clipboard": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@react-native-clipboard/clipboard/-/clipboard-1.13.2.tgz", - "integrity": "sha512-uVM55oEGc6a6ZmSATDeTcMm55A/C1km5X47g0xaoF0Zagv7N/8RGvLceA5L/izPwflIy78t7XQeJUcnGSib0nA==", - "peerDependencies": { - "react": ">=16.0", - "react-native": ">=0.57.0" - } - }, "packages/mobile/node_modules/@react-native-community/cli": { "version": "15.0.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-15.0.1.tgz", @@ -124009,23 +125416,6 @@ } } }, - "packages/mobile/node_modules/@react-native-community/hooks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/hooks/-/hooks-3.0.0.tgz", - "integrity": "sha512-g2OyxXHfwIytXUJitBR6Z/ISoOfp0WKx5FOv+NqJ/CrWjRDcTw6zXE5I1C9axfuh30kJqzWchVfCDrkzZYTxqg==", - "peerDependencies": { - "react": ">=17.0.2", - "react-native": ">=0.65" - } - }, - "packages/mobile/node_modules/@react-native-community/netinfo": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.2.1.tgz", - "integrity": "sha512-n9kgmH7vLaU7Cdo8vGfJGGwhrlgppaOSq5zKj9I7H4k5iRM3aNtwURw83mgrc22Ip7nSye2afZV2xDiIyvHttQ==", - "peerDependencies": { - "react-native": ">=0.59" - } - }, "packages/mobile/node_modules/@react-native-community/slider": { "version": "4.5.0", "license": "MIT" @@ -124038,201 +125428,12 @@ "react-native": ">=0.57" } }, - "packages/mobile/node_modules/@react-native/eslint-config": { - "version": "0.74.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/eslint-parser": "^7.20.0", - "@react-native/eslint-plugin": "^0.74.0", - "@typescript-eslint/eslint-plugin": "^6.7.4", - "@typescript-eslint/parser": "^6.7.4", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-ft-flow": "^2.0.1", - "eslint-plugin-jest": "^26.5.3", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.30.1", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-native": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "eslint": ">=8", - "prettier": ">=2" - } - }, - "packages/mobile/node_modules/@react-native/eslint-plugin": { - "version": "0.74.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "packages/mobile/node_modules/@react-native/js-polyfills": { - "version": "0.75.4", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.75.4.tgz", - "integrity": "sha512-NF5ID5FjcVHBYk1LQ4JMRjPmxBWEo4yoqW1m6vGOQZPT8D5Qs9afgx3f7gQatxbn3ivMh0FVbLW0zBx6LyxEzA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "packages/mobile/node_modules/@react-native/metro-config": { - "version": "0.75.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native/js-polyfills": "0.75.4", - "@react-native/metro-babel-transformer": "0.75.4", - "metro-config": "^0.80.3", - "metro-runtime": "^0.80.3" - }, - "engines": { - "node": ">=18" - } - }, - "packages/mobile/node_modules/@react-native/metro-config/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.75.4", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.75.4.tgz", - "integrity": "sha512-gu5ZRIdr7+ufi09DJROhfDtbF4biTnCDJqtqcmtsku4cXOXPHE36QbC/vAmKEZ0PMPURBI8lwF2wfaeHLn7gig==", - "dev": true, - "dependencies": { - "@react-native/codegen": "0.75.4" - }, - "engines": { - "node": ">=18" - } - }, - "packages/mobile/node_modules/@react-native/metro-config/node_modules/@react-native/babel-preset": { - "version": "0.75.4", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.75.4.tgz", - "integrity": "sha512-UtyYCDJ3rZIeggyFEfh/q5t/FZ5a1h9F8EI37Nbrwyk/OKPH+1XS4PbHROHJzBARlJwOAfmT75+ovYUO0eakJA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.18.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-generator-functions": "^7.24.3", - "@babel/plugin-transform-async-to-generator": "^7.20.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.5", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.5", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-regenerator": "^7.20.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "@react-native/babel-plugin-codegen": "0.75.4", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "packages/mobile/node_modules/@react-native/metro-config/node_modules/@react-native/codegen": { - "version": "0.75.4", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.75.4.tgz", - "integrity": "sha512-0FplNAD/S5FUvm8YIn6uyarOcP4jdJPqWz17K4a/Gp2KSsG/JJKEskX3aj5wpePzVfNQl3WyvBJ0whODdCocIA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.0", - "glob": "^7.1.1", - "hermes-parser": "0.22.0", - "invariant": "^2.2.4", - "jscodeshift": "^0.14.0", - "mkdirp": "^0.5.1", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "packages/mobile/node_modules/@react-native/metro-config/node_modules/@react-native/metro-babel-transformer": { - "version": "0.75.4", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.75.4.tgz", - "integrity": "sha512-O0WMW/K8Ny/MAAeRebqGEQhrbzcioxcPHZtos+EH2hWeBTEKHQV8fMYYxfYDabpr392qdhSBwg3LlXUD4U3PXQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.20.0", - "@react-native/babel-preset": "0.75.4", - "hermes-parser": "0.22.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "packages/mobile/node_modules/@react-native/metro-config/node_modules/hermes-estree": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.22.0.tgz", - "integrity": "sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw==", - "dev": true - }, - "packages/mobile/node_modules/@react-native/metro-config/node_modules/hermes-parser": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.22.0.tgz", - "integrity": "sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA==", - "dev": true, - "dependencies": { - "hermes-estree": "0.22.0" - } - }, "packages/mobile/node_modules/@react-native/normalize-colors": { "version": "0.78.3", "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.78.3.tgz", "integrity": "sha512-/Nbuhc65xSVE3KFCejQEI9pgF+uwArj6EMHMVCkRtUqkM88Ng+f+8E7PyNN0hDUnj2Vr30FwBczdwm1kQLTWZA==", "license": "MIT" }, - "packages/mobile/node_modules/@react-native/typescript-config": { - "version": "0.74.0", - "dev": true, - "license": "MIT" - }, "packages/mobile/node_modules/@react-native/virtualized-lists": { "version": "0.78.3", "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.78.3.tgz", @@ -124725,40 +125926,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "packages/mobile/node_modules/eslint-config-prettier": { - "version": "8.10.0", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "packages/mobile/node_modules/eslint-plugin-jest": { - "version": "26.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^5.10.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, "packages/mobile/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -125283,17 +126450,6 @@ "react-native": ">=0.65.0" } }, - "packages/mobile/node_modules/react-native-modal-datetime-picker": { - "version": "17.1.0", - "license": "MIT", - "dependencies": { - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "@react-native-community/datetimepicker": ">=6.7.0", - "react-native": ">=0.65.0" - } - }, "packages/mobile/node_modules/react-native-notifications": { "version": "5.1.0", "license": "MIT", @@ -125380,24 +126536,6 @@ "node": ">=0.10.0" } }, - "packages/mobile/node_modules/react-test-renderer": { - "version": "18.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "react-is": "^18.3.1", - "react-shallow-renderer": "^16.15.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "packages/mobile/node_modules/react-test-renderer/node_modules/react-is": { - "version": "18.3.1", - "dev": true, - "license": "MIT" - }, "packages/mobile/node_modules/react-use": { "version": "17.3.2", "license": "Unlicense", @@ -125514,10 +126652,6 @@ "node": ">=8" } }, - "packages/mobile/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "packages/mobile/node_modules/type-fest": { "version": "4.26.1", "license": "(MIT OR CC0-1.0)", @@ -126434,15 +127568,6 @@ "@types/babel__traverse": "*" } }, - "packages/protocol-dashboard/node_modules/@types/bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "packages/protocol-dashboard/node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -126982,19 +128107,6 @@ } } }, - "packages/protocol-dashboard/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "packages/protocol-dashboard/node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -127728,24 +128840,6 @@ } ] }, - "packages/protocol-dashboard/node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "packages/protocol-dashboard/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", @@ -128383,6 +129477,7 @@ "node-localstorage": "1.3.1", "semver": "6.3.0", "snakecase-keys": "5.4.5", + "tus-js-client": "4.3.1", "type-fest": "4.26.1", "ulid": "2.3.0", "url": "0.11.1", @@ -128451,51 +129546,6 @@ "@solana/web3.js": "^1.95.8" } }, - "packages/sdk/node_modules/@babel/code-frame": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/compat-data": { - "version": "7.25.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/generator": { - "version": "7.25.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.6", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "packages/sdk/node_modules/@babel/helper-compilation-targets": { "version": "7.25.2", "dev": true, @@ -128519,186 +129569,6 @@ "semver": "bin/semver.js" } }, - "packages/sdk/node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/traverse": "^7.25.4", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "packages/sdk/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "packages/sdk/node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "packages/sdk/node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/helper-replace-supers": { - "version": "7.25.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/traverse": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "packages/sdk/node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/highlight": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/parser": { - "version": "7.25.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.6" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, "packages/sdk/node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.11", "dev": true, @@ -128716,68 +129586,6 @@ "@babel/core": "^7.0.0-0" } }, - "packages/sdk/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "packages/sdk/node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "packages/sdk/node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "packages/sdk/node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-typescript": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "packages/sdk/node_modules/@babel/preset-env": { "version": "7.16.11", "dev": true, @@ -128898,36 +129706,6 @@ "@babel/core": "^7.0.0-0" } }, - "packages/sdk/node_modules/@babel/template": { - "version": "7.25.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "packages/sdk/node_modules/@babel/traverse": { - "version": "7.25.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "packages/sdk/node_modules/@babel/types": { "version": "7.25.6", "dev": true, @@ -128941,389 +129719,6 @@ "node": ">=6.9.0" } }, - "packages/sdk/node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "packages/sdk/node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "packages/sdk/node_modules/@noble/hashes": { "version": "1.3.0", "funding": [ @@ -129674,25 +130069,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "packages/sdk/node_modules/caniuse-lite": { - "version": "1.0.30001653", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, "packages/sdk/node_modules/chai": { "version": "5.1.1", "dev": true, @@ -129708,65 +130084,6 @@ "node": ">=12" } }, - "packages/sdk/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "packages/sdk/node_modules/chalk/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "packages/sdk/node_modules/chalk/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "packages/sdk/node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "packages/sdk/node_modules/chalk/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "packages/sdk/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "packages/sdk/node_modules/check-error": { "version": "2.1.1", "dev": true, @@ -129780,11 +130097,6 @@ "dev": true, "license": "MIT" }, - "packages/sdk/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, "packages/sdk/node_modules/cross-fetch": { "version": "4.0.0", "license": "MIT", @@ -129810,22 +130122,6 @@ } } }, - "packages/sdk/node_modules/debug": { - "version": "4.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "packages/sdk/node_modules/deep-eql": { "version": "5.0.2", "dev": true, @@ -129842,49 +130138,6 @@ "node": ">=8" } }, - "packages/sdk/node_modules/electron-to-chromium": { - "version": "1.5.13", - "dev": true, - "license": "ISC" - }, - "packages/sdk/node_modules/esbuild": { - "version": "0.23.1", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" - } - }, "packages/sdk/node_modules/ethereum-cryptography": { "version": "0.1.3", "dev": true, @@ -129962,36 +130215,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "packages/sdk/node_modules/get-tsconfig": { - "version": "4.7.6", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "packages/sdk/node_modules/glob": { - "version": "7.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "packages/sdk/node_modules/hashids": { "version": "2.2.10", "license": "MIT" @@ -130119,11 +130342,6 @@ "node": ">= 14.16" } }, - "packages/sdk/node_modules/picocolors": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, "packages/sdk/node_modules/picomatch": { "version": "4.0.2", "dev": true, @@ -130135,47 +130353,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "packages/sdk/node_modules/postcss": { - "version": "8.4.47", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "packages/sdk/node_modules/prettier": { - "version": "2.8.8", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "packages/sdk/node_modules/retry": { "version": "0.12.0", "license": "MIT", @@ -130336,28 +130513,6 @@ "node": ">=0.3.1" } }, - "packages/sdk/node_modules/tslib": { - "version": "2.7.0", - "license": "0BSD" - }, - "packages/sdk/node_modules/tsx": { - "version": "4.18.0", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, "packages/sdk/node_modules/type-fest": { "version": "4.26.1", "license": "(MIT OR CC0-1.0)", @@ -132356,8 +132511,8 @@ "@solana/web3.js": "1.98.0", "@stripe/crypto": "0.0.4", "@stripe/stripe-js": "1.54.1", - "@tanstack/react-query": "5.62.7", - "@tanstack/react-query-devtools": "5.62.7", + "@tanstack/react-query": "5.90.16", + "@tanstack/react-query-devtools": "5.91.2", "@wagmi/connectors": "5.7.11", "array-pack-2d": "0.1.1", "array-range": "1.0.1", @@ -132593,43 +132748,6 @@ "url": "https://paulmillr.com/funding/" } }, - "packages/web/node_modules/@coinflowlabs/react": { - "version": "5.0.2", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.2.1", - "bs58": "^6.0.0", - "lz-string": "^1.5.0" - }, - "peerDependencies": { - "@coinflowlabs/lib-common": "*", - "@solana/web3.js": ">=1.54.0", - "bs58": "~5.0.0", - "react": ">=16" - }, - "peerDependenciesMeta": { - "@coinflowlabs/lib-common": { - "optional": true - }, - "@solana/web3.js": { - "optional": true - }, - "bs58": { - "optional": true - } - } - }, - "packages/web/node_modules/@coinflowlabs/react/node_modules/bn.js": { - "version": "5.2.1", - "license": "MIT" - }, - "packages/web/node_modules/@coinflowlabs/react/node_modules/bs58": { - "version": "6.0.0", - "license": "MIT", - "dependencies": { - "base-x": "^5.0.0" - } - }, "packages/web/node_modules/@electron/notarize": { "version": "2.2.0", "dev": true, @@ -132657,37 +132775,6 @@ "node": ">=10" } }, - "packages/web/node_modules/@electron/universal": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@electron/asar": "^3.2.1", - "@malept/cross-spawn-promise": "^1.1.0", - "debug": "^4.3.1", - "dir-compare": "^3.0.0", - "fs-extra": "^9.0.1", - "minimatch": "^3.0.4", - "plist": "^3.0.4" - }, - "engines": { - "node": ">=8.6" - } - }, - "packages/web/node_modules/@electron/universal/node_modules/fs-extra": { - "version": "9.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "packages/web/node_modules/@esbuild/aix-ppc64": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", @@ -133909,6 +133996,59 @@ "@swc/counter": "^0.1.3" } }, + "packages/web/node_modules/@tanstack/query-core": { + "version": "5.90.16", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.16.tgz", + "integrity": "sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "packages/web/node_modules/@tanstack/query-devtools": { + "version": "5.92.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.92.0.tgz", + "integrity": "sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "packages/web/node_modules/@tanstack/react-query": { + "version": "5.90.16", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.16.tgz", + "integrity": "sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.90.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "packages/web/node_modules/@tanstack/react-query-devtools": { + "version": "5.91.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.91.2.tgz", + "integrity": "sha512-ZJ1503ay5fFeEYFUdo7LMNFzZryi6B0Cacrgr2h1JRkvikK1khgIq6Nq2EcblqEdIlgB/r7XDW8f8DQ89RuUgg==", + "license": "MIT", + "dependencies": { + "@tanstack/query-devtools": "5.92.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.90.14", + "react": "^18 || ^19" + } + }, "packages/web/node_modules/@testing-library/jest-dom": { "version": "6.6.3", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", @@ -133941,33 +134081,6 @@ "node": ">=8" } }, - "packages/web/node_modules/@testing-library/react": { - "version": "14.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^9.0.0", - "@types/react-dom": "^18.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, - "packages/web/node_modules/@testing-library/react/node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^18.0.0" - } - }, "packages/web/node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -134536,151 +134649,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "packages/web/node_modules/app-builder-lib": { - "version": "24.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@develar/schema-utils": "~2.6.5", - "@electron/notarize": "2.1.0", - "@electron/osx-sign": "1.0.5", - "@electron/universal": "1.4.1", - "@malept/flatpak-bundler": "^0.4.0", - "@types/fs-extra": "9.0.13", - "7zip-bin": "~5.2.0", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.4", - "ejs": "^3.1.8", - "electron-publish": "24.8.1", - "form-data": "^4.0.0", - "fs-extra": "^10.1.0", - "hosted-git-info": "^4.1.0", - "is-ci": "^3.0.0", - "isbinaryfile": "^5.0.0", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^5.1.1", - "read-config-file": "6.3.2", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.8", - "tar": "^6.1.12", - "temp-file": "^3.4.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "packages/web/node_modules/app-builder-lib/node_modules/@electron/notarize": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.1", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "packages/web/node_modules/app-builder-lib/node_modules/@electron/notarize/node_modules/fs-extra": { - "version": "9.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "packages/web/node_modules/app-builder-lib/node_modules/fs-extra": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "packages/web/node_modules/app-builder-lib/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "packages/web/node_modules/app-builder-lib/node_modules/minimatch": { - "version": "5.1.6", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "packages/web/node_modules/app-builder-lib/node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "packages/web/node_modules/app-builder-lib/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "packages/web/node_modules/app-builder-lib/node_modules/tar": { - "version": "6.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "packages/web/node_modules/argparse": { - "version": "2.0.1", - "license": "Python-2.0" - }, "packages/web/node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -134699,14 +134667,6 @@ "version": "4.0.0-beta.0", "license": "MIT" }, - "packages/web/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "packages/web/node_modules/bs58": { "version": "5.0.0", "license": "MIT", @@ -134718,77 +134678,6 @@ "version": "4.0.0", "license": "MIT" }, - "packages/web/node_modules/builder-util": { - "version": "24.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/debug": "^4.1.6", - "7zip-bin": "~5.2.0", - "app-builder-bin": "4.0.0", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.2.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "fs-extra": "^10.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-ci": "^3.0.0", - "js-yaml": "^4.1.0", - "source-map-support": "^0.5.19", - "stat-mode": "^1.0.0", - "temp-file": "^3.4.0" - } - }, - "packages/web/node_modules/builder-util-runtime": { - "version": "9.2.3", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "packages/web/node_modules/builder-util/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "packages/web/node_modules/builder-util/node_modules/fs-extra": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "packages/web/node_modules/builder-util/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "packages/web/node_modules/bundlesize": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/bundlesize/-/bundlesize-1.0.0-beta.2.tgz", @@ -134840,21 +134729,6 @@ "node": ">=18" } }, - "packages/web/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "packages/web/node_modules/check-error": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", @@ -134978,68 +134852,11 @@ "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==", "license": "MIT" }, - "packages/web/node_modules/dir-compare": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-equal": "^1.0.0", - "minimatch": "^3.0.4" - } - }, - "packages/web/node_modules/dmg-builder": { - "version": "24.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "app-builder-lib": "24.9.1", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "fs-extra": "^10.1.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" - }, - "optionalDependencies": { - "dmg-license": "^1.0.11" - } - }, - "packages/web/node_modules/dmg-builder/node_modules/fs-extra": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "packages/web/node_modules/dmg-builder/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "packages/web/node_modules/dom-accessibility-api": { "version": "0.6.3", "dev": true, "license": "MIT" }, - "packages/web/node_modules/dotenv": { - "version": "9.0.2", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=10" - } - }, "packages/web/node_modules/electron": { "version": "33.0.0", "dev": true, @@ -135057,127 +134874,6 @@ "node": ">= 12.20.55" } }, - "packages/web/node_modules/electron-builder": { - "version": "24.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "app-builder-lib": "24.9.1", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "chalk": "^4.1.2", - "dmg-builder": "24.9.1", - "fs-extra": "^10.1.0", - "is-ci": "^3.0.0", - "lazy-val": "^1.0.5", - "read-config-file": "6.3.2", - "simple-update-notifier": "2.0.0", - "yargs": "^17.6.2" - }, - "bin": { - "electron-builder": "cli.js", - "install-app-deps": "install-app-deps.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "packages/web/node_modules/electron-builder/node_modules/fs-extra": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "packages/web/node_modules/electron-log": { - "version": "5.0.3", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "packages/web/node_modules/electron-publish": { - "version": "24.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/fs-extra": "^9.0.11", - "builder-util": "24.8.1", - "builder-util-runtime": "9.2.3", - "chalk": "^4.1.2", - "fs-extra": "^10.1.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" - } - }, - "packages/web/node_modules/electron-publish/node_modules/fs-extra": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "packages/web/node_modules/electron-updater": { - "version": "6.1.7", - "license": "MIT", - "dependencies": { - "builder-util-runtime": "9.2.3", - "fs-extra": "^10.1.0", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "lodash.escaperegexp": "^4.1.2", - "lodash.isequal": "^4.5.0", - "semver": "^7.3.8", - "tiny-typed-emitter": "^2.1.0" - } - }, - "packages/web/node_modules/electron-updater/node_modules/fs-extra": { - "version": "10.1.0", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "packages/web/node_modules/electron-updater/node_modules/js-yaml": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "packages/web/node_modules/electron-updater/node_modules/semver": { - "version": "7.5.4", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "packages/web/node_modules/electron/node_modules/@types/node": { "version": "20.16.11", "dev": true, @@ -135299,19 +134995,6 @@ "node": ">=0.10.0" } }, - "packages/web/node_modules/form-data": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "packages/web/node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -135333,17 +135016,6 @@ "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", "dev": true }, - "packages/web/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "packages/web/node_modules/import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -135357,17 +135029,6 @@ "node": ">=4" } }, - "packages/web/node_modules/isbinaryfile": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, "packages/web/node_modules/jimp": { "version": "0.6.8", "license": "MIT", @@ -135396,6 +135057,7 @@ }, "packages/web/node_modules/jsonfile": { "version": "6.1.0", + "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -135419,16 +135081,6 @@ "dev": true, "license": "MIT" }, - "packages/web/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "packages/web/node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -135453,14 +135105,6 @@ "version": "0.0.8", "license": "MIT" }, - "packages/web/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, "packages/web/node_modules/mkdirp": { "version": "0.5.1", "license": "MIT", @@ -135579,14 +135223,6 @@ "node": ">=4" } }, - "packages/web/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "packages/web/node_modules/path-to-regexp": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", @@ -135755,33 +135391,6 @@ "react-dom": "^16.3.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "packages/web/node_modules/read-config-file": { - "version": "6.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "config-file-ts": "^0.2.4", - "dotenv": "^9.0.2", - "dotenv-expand": "^5.1.0", - "js-yaml": "^4.1.0", - "json5": "^2.2.0", - "lazy-val": "^1.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "packages/web/node_modules/read-config-file/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "packages/web/node_modules/resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -135791,29 +135400,6 @@ "node": ">=4" } }, - "packages/web/node_modules/sax": { - "version": "1.3.0", - "license": "ISC" - }, - "packages/web/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/web/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "packages/web/node_modules/split-on-first": { "version": "1.1.0", "license": "MIT", @@ -135915,10 +135501,6 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, - "packages/web/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "packages/web/node_modules/type-fest": { "version": "4.26.1", "license": "(MIT OR CC0-1.0)", @@ -135945,6 +135527,7 @@ }, "packages/web/node_modules/universalify": { "version": "2.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" @@ -136206,10 +135789,6 @@ "node": ">=8" } }, - "packages/web/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, "packagse/mobile/node_modules/@react-navigation/stack": { "version": "7.6.12", "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-7.6.12.tgz", diff --git a/packages/common/package.json b/packages/common/package.json index 25347972946..6ca73bbf050 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -42,7 +42,8 @@ "@jup-ag/api": "6.0.44", "@metaplex-foundation/mpl-token-metadata": "2.5.2", "@optimizely/optimizely-sdk": "4.0.0", - "@tanstack/react-query": "5.62.7", + "@tanstack/react-query": "5.90.16", + "@tanstack/react-query-devtools": "5.91.2", "@yornaath/batshit": "0.10.1", "async-retry": "1.3.3", "dayjs": "^1.11.19", diff --git a/packages/common/src/adapters/collection.ts b/packages/common/src/adapters/collection.ts index 12b63926b54..2fe6df27b68 100644 --- a/packages/common/src/adapters/collection.ts +++ b/packages/common/src/adapters/collection.ts @@ -19,6 +19,7 @@ import { Variant } from '~/models/Collection' import { Copyright } from '~/models/Track' +import type { AlbumValues, PlaylistValues } from '~/schemas' import { accessConditionsFromSDK } from './accessConditionsFromSDK' import { resourceContributorFromSDK } from './attribution' @@ -157,12 +158,11 @@ export const accountCollectionFromSDK = ( } export const playlistMetadataForCreateWithSDK = ( - input: Collection + input: Collection | PlaylistValues ): CreatePlaylistMetadata => { return { playlistName: input.playlist_name ?? '', description: input.description ?? '', - coverArtCid: input.cover_art_sizes ?? '', isPrivate: input.is_private ?? false, releaseDate: input.release_date ? new Date(input.release_date) : undefined, ddexReleaseIds: input.ddex_release_ids ?? null, @@ -172,7 +172,12 @@ export const playlistMetadataForCreateWithSDK = ( copyrightLine: input.copyright_line ?? null, producerCopyrightLine: input.producer_copyright_line ?? null, parentalWarningType: input.parental_warning_type ?? null, - isImageAutogenerated: input.is_image_autogenerated ?? false + ...('cover_art_sizes' in input + ? { + coverArtCid: input.cover_art_sizes ?? '', + isImageAutogenerated: input.is_image_autogenerated ?? false + } + : {}) } } @@ -196,7 +201,7 @@ export const playlistMetadataForUpdateWithSDK = ( } export const albumMetadataForCreateWithSDK = ( - input: Collection + input: Collection | AlbumValues ): CreateAlbumMetadata => { return { streamConditions: diff --git a/packages/common/src/api/index.ts b/packages/common/src/api/index.ts index ce958bc81c0..5bd1ca26b65 100644 --- a/packages/common/src/api/index.ts +++ b/packages/common/src/api/index.ts @@ -182,3 +182,9 @@ export * from './tan-query/authorized-apps/useRemoveAuthorizedApp' // Coins export * from './tan-query/coins' + +// Uploads +export * from './tan-query/upload/useUploadFiles' +export * from './tan-query/upload/useUploadStatus' +export * from './tan-query/upload/usePublishTracks' +export * from './tan-query/upload/usePublishCollection' diff --git a/packages/common/src/api/tan-query/coins/useUserCoin.ts b/packages/common/src/api/tan-query/coins/useUserCoin.ts index 3e4b8944e51..bce4b15d44f 100644 --- a/packages/common/src/api/tan-query/coins/useUserCoin.ts +++ b/packages/common/src/api/tan-query/coins/useUserCoin.ts @@ -20,9 +20,14 @@ export const getUserCoinQueryKey = (mint: string, userId?: ID | null) => mint ] as unknown as QueryKey +export type UseUserCoinOptions = SelectableQueryOptions< + UserCoinWithAccounts | null, + TResult +> + export const useUserCoin = ( params: UseUserCoinParams, - options?: SelectableQueryOptions + options?: UseUserCoinOptions ) => { const { audiusSdk, env } = useQueryContext() // Default to current user if no userId is provided diff --git a/packages/common/src/api/tan-query/queryKeys.ts b/packages/common/src/api/tan-query/queryKeys.ts index 060d4a4500b..24769c15407 100644 --- a/packages/common/src/api/tan-query/queryKeys.ts +++ b/packages/common/src/api/tan-query/queryKeys.ts @@ -132,5 +132,6 @@ export const QUERY_KEYS = { exclusiveTracks: 'exclusiveTracks', exclusiveTracksCount: 'exclusiveTracksCount', coinRedeemAmount: 'coinRedeemAmount', - coinRedeemCodeAmount: 'coinRedeemCodeAmount' + coinRedeemCodeAmount: 'coinRedeemCodeAmount', + uploadStatus: 'uploadStatus' } as const diff --git a/packages/common/src/api/tan-query/upload/usePublishCollection.ts b/packages/common/src/api/tan-query/upload/usePublishCollection.ts new file mode 100644 index 00000000000..c56a6051170 --- /dev/null +++ b/packages/common/src/api/tan-query/upload/usePublishCollection.ts @@ -0,0 +1,266 @@ +import { HashId, Id, type UploadResponse } from '@audius/sdk' +import { + mutationOptions, + useMutation, + useQueryClient +} from '@tanstack/react-query' +import { mapValues } from 'lodash' +import { useDispatch } from 'react-redux' + +import { + albumMetadataForCreateWithSDK, + playlistMetadataForCreateWithSDK, + fileToSdk +} from '~/adapters' +import { isContentUSDCPurchaseGated, type FieldVisibility } from '~/models' +import type { CollectionValues } from '~/schemas' +import { + type TrackMetadataForUpload, + libraryPageActions, + LibraryCategory, + accountActions +} from '~/store' + +import { getCollectionsBatcher } from '../batchers/getCollectionsBatcher' +import { QUERY_KEYS } from '../queryKeys' +import { useCurrentAccountUser } from '../users/account/accountSelectors' +import { useCurrentAccount } from '../users/account/useCurrentAccount' +import { getUserQueryKey } from '../users/useUser' +import { useQueryContext, type QueryContextType } from '../utils' + +import { + publishTracks, + addPremiumMetadata, + getUSDCMetadata +} from './usePublishTracks' + +type PublishCollectionContext = Pick< + QueryContextType, + 'audiusSdk' | 'analytics' | 'dispatch' +> & { + userId?: number + wallet?: string +} + +type PublishCollectionParams = { + collectionMetadata: CollectionValues + tracks: { + clientId: string + metadata: TrackMetadataForUpload + audioUploadResponse: UploadResponse + artUploadResponse: UploadResponse + }[] +} + +const getPublishCollectionOptions = (context: PublishCollectionContext) => + mutationOptions({ + mutationFn: async (params: PublishCollectionParams) => { + const sdk = await context.audiusSdk() + if (!context.userId || !context.wallet) { + throw new Error('User ID and wallet are required to publish collection') + } + const userBank = await sdk.services.claimableTokensClient.deriveUserBank({ + ethWallet: context.wallet, + mint: 'USDC' + }) + + // If the collection is a premium album, this will populate the premium metadata (price/splits/etc) + let albumTrackPrice: number | undefined + if ( + params.collectionMetadata.is_album && + isContentUSDCPurchaseGated(params.collectionMetadata.stream_conditions) + ) { + // albumTrackPrice will be parsed out of the collection metadata, so we keep a copy here + albumTrackPrice = + params.collectionMetadata.stream_conditions?.usdc_purchase + .albumTrackPrice + params.collectionMetadata.stream_conditions = getUSDCMetadata( + userBank.toString(), + params.collectionMetadata.stream_conditions + ) + } + + // Combine collection metadata into each track's metadata + for (const track of params.tracks) { + track.metadata = combineMetadata( + userBank.toString(), + track.metadata, + params.collectionMetadata, + albumTrackPrice + ) + } + + // Publish all the tracks first + const publishedTracks = await publishTracks( + { + ...context, + kind: params.collectionMetadata.is_album ? 'album' : 'playlist' + }, + params.tracks + ) + + // For collection artwork, use the existing flow (not TUS) to keep things simple for now. + const { artwork } = params.collectionMetadata + const artworkBlob = + artwork && 'file' in artwork ? (artwork?.file ?? null) : null + const coverArtFile = artworkBlob + ? fileToSdk(artworkBlob, 'cover_art') + : undefined + if (params.collectionMetadata.is_album) { + return await sdk.albums.createAlbum({ + userId: Id.parse(context.userId), + coverArtFile, + metadata: albumMetadataForCreateWithSDK(params.collectionMetadata), + trackIds: publishedTracks + .filter((t) => !t.error) + .map((t) => t.trackId!) + }) + } else { + return await sdk.playlists.createPlaylist({ + userId: Id.parse(context.userId), + coverArtFile, + metadata: playlistMetadataForCreateWithSDK(params.collectionMetadata), + trackIds: publishedTracks + .filter((t) => !t.error) + .map((t) => t.trackId!) + }) + } + } + }) + +export const usePublishCollection = ( + options?: Partial> +) => { + const { audiusSdk, analytics } = useQueryContext() + const queryClient = useQueryClient() + const dispatch = useDispatch() + const { data: account = null } = useCurrentAccount() + const { data: accountUser } = useCurrentAccountUser() + const userId = account?.userId ?? undefined + const wallet = account?.walletAddresses.currentUser ?? undefined + + return useMutation({ + ...options, + ...getPublishCollectionOptions({ + audiusSdk, + userId, + wallet, + dispatch, + analytics + }), + + onSuccess: async (playlist) => { + if (!playlist.playlistId) return + const sdk = await audiusSdk() + + // Prefetch the newly created collection data and prime the cache + const batchGetCollections = getCollectionsBatcher({ + sdk, + currentUserId: userId, + queryClient, + dispatch + }) + const collection = await batchGetCollections.fetch( + HashId.parse(playlist.playlistId) + ) + + // Update the playlist sidebar + dispatch( + accountActions.addAccountPlaylist({ + id: collection.playlist_id, + name: collection.playlist_name, + is_album: collection.is_album, + permalink: collection.permalink!, + user: { + id: userId!, + handle: accountUser!.handle + } + }) + ) + + // Add to library as favorite locally + dispatch( + libraryPageActions.addLocalCollection({ + collectionId: collection.playlist_id, + isAlbum: collection.is_album, + category: LibraryCategory.Favorite + }) + ) + + // Invalidate user query to update collection count and track count + queryClient.invalidateQueries({ + queryKey: getUserQueryKey(userId) + }) + + // Invalidate the uploader's profile tracks cache + queryClient.invalidateQueries({ + queryKey: [QUERY_KEYS.profileTracks, accountUser?.handle] + }) + } + }) +} + +/** + * Combines the metadata for a track and a collection (playlist or album), + * taking the metadata from the playlist when the track is missing it. + */ +function combineMetadata( + userBank: string, + trackMetadata: TrackMetadataForUpload, + collectionMetadata: CollectionValues, + albumTrackPrice?: number +) { + const metadata = trackMetadata + + // @ts-expect-error - Typing is hard here because playlists and albums have different artwork types + metadata.artwork = collectionMetadata.artwork + + if (!metadata.genre) + metadata.genre = collectionMetadata.trackDetails?.genre ?? '' + if (!metadata.mood) + metadata.mood = collectionMetadata.trackDetails?.mood ?? null + if (!metadata.release_date) { + metadata.release_date = collectionMetadata.release_date ?? null + metadata.is_scheduled_release = + collectionMetadata.is_scheduled_release ?? false + } + + if (metadata.tags === null && collectionMetadata.trackDetails?.tags) { + // Take collection tags + metadata.tags = collectionMetadata.trackDetails?.tags + } + + // Set download & hidden status + metadata.is_downloadable = !!collectionMetadata.is_downloadable + + metadata.is_unlisted = !!collectionMetadata.is_private + if (collectionMetadata.is_private && collectionMetadata.field_visibility) { + // Convert any undefined values to booleans + const booleanFieldVisibility = mapValues( + collectionMetadata.field_visibility, + Boolean + ) as FieldVisibility + metadata.field_visibility = booleanFieldVisibility + } + + // If the tracks were added as part of a premium album, add all the necessary premium track metadata + if (albumTrackPrice !== undefined && albumTrackPrice > 0) { + // is_download_gated must always be set to true for all premium tracks + metadata.is_download_gated = true + metadata.download_conditions = { + usdc_purchase: { + price: albumTrackPrice, + splits: { 0: 0 } + } + } + // Set up initial stream gating values + metadata.is_stream_gated = true + metadata.preview_start_seconds = 0 + metadata.stream_conditions = { + usdc_purchase: { price: albumTrackPrice, splits: { 0: 0 } } + } + // Add splits to stream & download conditions + addPremiumMetadata(userBank, metadata) + } + return metadata +} diff --git a/packages/common/src/api/tan-query/upload/usePublishTracks.ts b/packages/common/src/api/tan-query/upload/usePublishTracks.ts new file mode 100644 index 00000000000..71d8661c049 --- /dev/null +++ b/packages/common/src/api/tan-query/upload/usePublishTracks.ts @@ -0,0 +1,285 @@ +import { USDC } from '@audius/fixed-decimal' +import { HashId, Id, type UploadResponse } from '@audius/sdk' +import { + mutationOptions, + useMutation, + useQueryClient +} from '@tanstack/react-query' +import { useDispatch } from 'react-redux' + +import { trackMetadataForUploadToSdk } from '~/adapters' +import { + isContentUSDCPurchaseGated, + StemCategory, + type USDCPurchaseConditions, + Name +} from '~/models' +import { ProgressStatus, uploadActions } from '~/store' +import type { TrackMetadataForUpload } from '~/store' + +import { getTracksBatcher } from '../batchers/getTracksBatcher' +import { QUERY_KEYS } from '../queryKeys' +import { useCurrentAccountUser } from '../users/account/accountSelectors' +import { useCurrentAccount } from '../users/account/useCurrentAccount' +import { getUserQueryKey } from '../users/useUser' +import { useQueryContext, type QueryContextType } from '../utils' + +const { updateProgress } = uploadActions + +type PublishTracksContext = Pick< + QueryContextType, + 'audiusSdk' | 'analytics' | 'dispatch' +> & { + userId?: number + wallet?: string + kind?: 'tracks' | 'album' | 'playlist' +} + +type PublishTracksParams = { + clientId: string + metadata: TrackMetadataForUpload + audioUploadResponse: UploadResponse + artUploadResponse: UploadResponse + stemsUploadResponses?: UploadResponse[] +}[] + +export const publishTracks = async ( + context: PublishTracksContext, + params: PublishTracksParams +) => { + if (!context.userId || !context.wallet) { + throw new Error('User ID and wallet are required to publish tracks') + } + const { userId, wallet, dispatch } = context + const sdk = await context.audiusSdk() + const userBank = await sdk.services.claimableTokensClient.deriveUserBank({ + ethWallet: wallet, + mint: 'USDC' + }) + return await Promise.all( + params.map(async (param) => { + try { + const snakeMetadata = addPremiumMetadata( + userBank.toString(), + param.metadata + ) + + const trackId = await sdk.tracks.generateTrackId() + const camelMetadata = trackMetadataForUploadToSdk({ + ...snakeMetadata, + track_id: trackId + }) + + const publishParentTrack = async () => { + const res = await sdk.tracks.publishTrack({ + userId: Id.parse(userId), + metadata: camelMetadata, + audioUploadResponse: param.audioUploadResponse, + artUploadResponse: param.artUploadResponse + }) + dispatch( + updateProgress({ + clientId: param.clientId, + stemIndex: null, + key: 'audio', + progress: { status: ProgressStatus.COMPLETE } + }) + ) + + // Track success analytics for this individual track + const analyticsKind = + (context.kind ?? 'tracks') === 'tracks' + ? params.length > 1 + ? 'multi_track' + : 'single_track' + : context.kind === 'album' + ? 'album' + : 'playlist' + context.analytics?.track( + context.analytics.make({ + eventName: Name.TRACK_UPLOAD_SUCCESS, + endpoint: '', + kind: analyticsKind + }) + ) + return res + } + + const results = await Promise.all([ + publishParentTrack(), + ...(param.metadata.stems ?? []).map(async (stem, index) => { + try { + const stemUploadResponse = param.stemsUploadResponses?.[index] + if (!stemUploadResponse) { + throw new Error(`No upload response found for stem ${index}`) + } + const metadata = { + ...snakeMetadata, + ...stem.metadata, + is_downloadable: true, + stem_of: { + category: stem.category ?? StemCategory.OTHER, + parent_track_id: trackId + } + } + const stemRes = await sdk.tracks.publishTrack({ + userId: Id.parse(userId), + metadata: trackMetadataForUploadToSdk(metadata), + audioUploadResponse: stemUploadResponse, + artUploadResponse: param.artUploadResponse + }) + dispatch( + updateProgress({ + clientId: param.clientId, + stemIndex: index, + key: 'audio', + progress: { status: ProgressStatus.COMPLETE } + }) + ) + context.analytics?.track( + context.analytics.make({ + eventName: Name.STEM_COMPLETE_UPLOAD, + id: HashId.parse(stemRes.trackId), + parent_track_id: trackId, + category: stem.category ?? StemCategory.OTHER + }) + ) + return stemRes + } catch (e) { + dispatch( + updateProgress({ + clientId: param.clientId, + stemIndex: index, + key: 'audio', + progress: { status: ProgressStatus.ERROR } + }) + ) + console.error('Error publishing stem:', e) + throw e + } + }) + ]) + + return { clientId: param.clientId, trackId: results[0].trackId } + } catch (e) { + dispatch( + updateProgress({ + clientId: param.clientId, + stemIndex: null, + key: 'audio', + progress: { status: ProgressStatus.ERROR } + }) + ) + console.error('Error publishing track:', e) + return { clientId: param.clientId, error: e } + } + }) + ) +} + +const getPublishTracksOptions = (context: PublishTracksContext) => + mutationOptions({ + mutationFn: async (params: PublishTracksParams) => + publishTracks(context, params) + }) + +export const usePublishTracks = ( + options?: Partial> & { + kind?: 'tracks' | 'album' | 'playlist' + } +) => { + const { audiusSdk, analytics } = useQueryContext() + const dispatch = useDispatch() + const queryClient = useQueryClient() + const { data: account } = useCurrentAccount() + const { data: accountUser } = useCurrentAccountUser() + const userId = account?.userId ?? undefined + const wallet = account?.walletAddresses.currentUser ?? undefined + const kind = options?.kind ?? 'tracks' + + return useMutation({ + ...options, + ...getPublishTracksOptions({ + audiusSdk, + userId, + wallet, + dispatch, + analytics, + kind + }), + onSuccess: async (data) => { + const sdk = await audiusSdk() + const batchGetTracks = getTracksBatcher({ + sdk, + currentUserId: userId, + queryClient, + dispatch + }) + // Prefetch the published tracks into the cache + await Promise.all( + data.map((res) => batchGetTracks.fetch(HashId.parse(res.trackId))) + ) + + // Invalidate the user's data to update track count + queryClient.invalidateQueries({ + queryKey: getUserQueryKey(userId) + }) + + // Invalidate the uploader's profile tracks cache + queryClient.invalidateQueries({ + queryKey: [QUERY_KEYS.profileTracks, accountUser?.handle] + }) + } + }) +} + +/* + * Given a user's bank and USDC purchase conditions, + * returns updated conditions with price in WEI and splits added. + * + * TODO: Update this to use the new user ID + percentages format. + */ +export function getUSDCMetadata( + userBank: string, + stream_conditions: USDCPurchaseConditions +) { + const priceCents = stream_conditions.usdc_purchase.price + const priceWei = Number(USDC(priceCents / 100).value.toString()) + const conditionsWithMetadata: USDCPurchaseConditions = { + usdc_purchase: { + price: priceCents, + splits: { + [userBank?.toString() ?? '']: priceWei + } + } + } + return conditionsWithMetadata +} + +/** + * Adds relevant premium metadata + * Converts prices to WEI and adds splits for USDC purchasable content. + */ +export function addPremiumMetadata( + userBank: string, + track: T +) { + // download_conditions could be set separately from stream_conditions, so we check for them first + if (isContentUSDCPurchaseGated(track.download_conditions)) { + track.download_conditions = getUSDCMetadata( + userBank, + track.download_conditions + ) + } + + if (isContentUSDCPurchaseGated(track.stream_conditions)) { + track.stream_conditions = getUSDCMetadata(userBank, track.stream_conditions) + // If stream_conditions are set, download_conditions should always match + track.download_conditions = getUSDCMetadata( + userBank, + track.stream_conditions + ) + } + + return track +} diff --git a/packages/common/src/api/tan-query/upload/useUploadFiles.ts b/packages/common/src/api/tan-query/upload/useUploadFiles.ts new file mode 100644 index 00000000000..dfce2d1b4a5 --- /dev/null +++ b/packages/common/src/api/tan-query/upload/useUploadFiles.ts @@ -0,0 +1,176 @@ +import type { CrossPlatformFile, FileMetadata, UploadHandle } from '@audius/sdk' +import { + mutationOptions, + useMutation, + type MutationFunctionContext +} from '@tanstack/react-query' + +import { ProgressStatus, uploadActions } from '~/store' + +import { useQueryContext, type QueryContextType } from '../utils' + +import { getUploadStatusOptions } from './useUploadStatus' + +const { updateProgress, resetProgress } = uploadActions + +type UploadFilesParams = { + files: { + clientId: string + stemIndex?: number | null + file: CrossPlatformFile + metadata: FileMetadata + }[] + onUploadCreated?: (clientId: string, upload: UploadHandle) => void +} + +type UploadFileContext = Pick + +const pollFileUploadStatus = async ( + context: UploadFileContext, + queryContext: MutationFunctionContext, + clientId: string, + stemIndex: number | null | undefined, + type: 'audio' | 'art', + uploadId: string, + abortSignal?: AbortSignal, + timeoutS: number = 3600, // 1 hour + delayMs: number = 3000 // 3 seconds +) => { + const t = setTimeout(() => { + context.dispatch( + updateProgress({ + clientId, + stemIndex: stemIndex ?? null, + key: type, + progress: { status: ProgressStatus.ERROR } + }) + ) + throw new Error('Upload timed out') + }, timeoutS * 1000) + + while (true) { + if (abortSignal?.aborted) { + clearTimeout(t) + throw new Error('Upload aborted') + } + + await new Promise((resolve) => setTimeout(resolve, delayMs)) + try { + await queryContext.client.invalidateQueries({ + queryKey: getUploadStatusOptions(context, { uploadId }).queryKey, + refetchType: 'all' + }) + const res = await queryContext.client.fetchQuery( + getUploadStatusOptions(context, { uploadId }) + ) + context.dispatch( + updateProgress({ + clientId, + stemIndex: stemIndex ?? null, + key: type, + progress: { + status: ProgressStatus.PROCESSING, + transcode: res.transcode_progress + } + }) + ) + if ( + res.status === 'done' || + res.status === 'error' || + res.status === 'timeout' + ) { + if (res.status === 'timeout') { + throw new Error('Upload timed out') + } + if (res.status === 'error') { + throw new Error('Upload failed') + } + context.dispatch( + updateProgress({ + clientId, + stemIndex: stemIndex ?? null, + key: type, + progress: { status: ProgressStatus.COMPLETE } + }) + ) + clearTimeout(t) + return res + } + } catch (err) { + // continue polling on error + console.error('Error polling upload status', err) + } + } +} + +const getUploadFilesOptions = (context: UploadFileContext) => { + return mutationOptions({ + mutationFn: async (params: UploadFilesParams, queryContext) => { + const sdk = await context.audiusSdk() + + return await Promise.all( + params.files.map(async (fileObj) => { + const abortController = new AbortController() + + // Always start progress from zero. Useful when the audio file gets replaced + context.dispatch( + resetProgress({ + clientId: fileObj.clientId, + stemIndex: fileObj.stemIndex ?? null, + key: fileObj.metadata.template === 'audio' ? 'audio' : 'art' + }) + ) + + const uploadId = await sdk.services.storage.uploadFileV2({ + file: fileObj.file, + onProgress: (loaded, total) => + context.dispatch( + updateProgress({ + clientId: fileObj.clientId, + stemIndex: fileObj.stemIndex ?? null, + key: fileObj.metadata.template === 'audio' ? 'audio' : 'art', + progress: { + status: ProgressStatus.UPLOADING, + loaded, + total + } + }) + ), + metadata: fileObj.metadata, + onUploadCreated: (upload) => { + params.onUploadCreated?.(fileObj.clientId, { + abort: () => { + upload.abort() + abortController.abort() + } + }) + } + }) + + const transcodeRes = await pollFileUploadStatus( + context, + queryContext, + fileObj.clientId, + fileObj.stemIndex, + fileObj.metadata.template === 'audio' ? 'audio' : 'art', + uploadId, + abortController.signal + ) + return { response: transcodeRes, clientId: fileObj.clientId } + }) + ) + } + }) +} + +type UseUploadFilesOptions = ReturnType + +export const useUploadFiles = (options?: UseUploadFilesOptions) => { + const context = useQueryContext() + const { dispatch } = context + + return useMutation({ + ...options, + ...getUploadFilesOptions({ ...context, dispatch }) + }) +} diff --git a/packages/common/src/api/tan-query/upload/useUploadStatus.ts b/packages/common/src/api/tan-query/upload/useUploadStatus.ts new file mode 100644 index 00000000000..02ba2a082e3 --- /dev/null +++ b/packages/common/src/api/tan-query/upload/useUploadStatus.ts @@ -0,0 +1,68 @@ +import { queryOptions, useQueries, useQuery } from '@tanstack/react-query' + +import { QUERY_KEYS } from '../queryKeys' +import { useQueryContext, type QueryContextType } from '../utils/QueryContext' + +const getUploadStatusKey = (uploadId: string) => + [QUERY_KEYS.uploadStatus, uploadId] as const + +type GetUploadStatusParams = { + uploadId: string +} + +type FetchUploadStatusContext = Pick + +export const getUploadStatusOptions = ( + context: FetchUploadStatusContext, + params: GetUploadStatusParams +) => + queryOptions({ + queryKey: getUploadStatusKey(params.uploadId), + queryFn: async () => { + const sdk = await context.audiusSdk() + return sdk.services.storage.getUploadStatus(params.uploadId) + } + }) + +export const useUploadStatus = ( + uploadId: string, + options?: Partial> +) => { + const context = useQueryContext() + return useQuery({ + ...options, + ...getUploadStatusOptions(context, { + uploadId + }) + }) +} + +export const useUploadStatuses = ( + uploadIds: string[], + options?: Partial> +) => { + const context = useQueryContext() + const queries = uploadIds.map((uploadId) => ({ + ...options, + ...getUploadStatusOptions(context, { + uploadId + }) + })) + return useQueries({ + queries, + combine: (results) => { + return { + data: results.map((r) => r.data), + isPending: results.some((r) => r.isPending), + isError: results.some((r) => r.isError), + isSuccess: results.every((r) => r.isSuccess), + refetch: (id: string) => { + const result = results.find((r) => r.data?.id === id) + return result + ? result.refetch() + : Promise.reject(new Error('Upload ID not found')) + } + } + } + }) +} diff --git a/packages/common/src/api/tan-query/wallets/useAudioBalance.ts b/packages/common/src/api/tan-query/wallets/useAudioBalance.ts index d6b866a18cc..8989d96b5b9 100644 --- a/packages/common/src/api/tan-query/wallets/useAudioBalance.ts +++ b/packages/common/src/api/tan-query/wallets/useAudioBalance.ts @@ -21,7 +21,6 @@ import { toErrorWithMessage } from '~/utils/error' import { QUERY_KEYS } from '../queryKeys' import { queryCurrentUserId, queryUser } from '../saga-utils' -import { QueryOptions } from '../types' import { useCurrentUserId } from '../users/account/useCurrentUserId' import { useUser } from '../users/useUser' @@ -171,12 +170,17 @@ type UseAudioBalanceParams = { userId?: ID } +export type UseAudioBalanceOptions = Omit< + Partial>, + 'queryKey' | 'queryFn' +> + /** * Hook for getting the AUDIO balance of the current user, optionally including connected wallets. */ export const useAudioBalance = ( params: UseAudioBalanceParams = {}, - options?: QueryOptions + options?: UseAudioBalanceOptions ) => { const { includeConnectedWallets: includeConnectedWalletsParam = true, diff --git a/packages/common/src/api/tan-query/wallets/useCoinBalance.ts b/packages/common/src/api/tan-query/wallets/useCoinBalance.ts index 4624b689720..674a2650a81 100644 --- a/packages/common/src/api/tan-query/wallets/useCoinBalance.ts +++ b/packages/common/src/api/tan-query/wallets/useCoinBalance.ts @@ -4,14 +4,14 @@ import { useAudioBalance, useCurrentAccountUser, useUser, - useUserCoin + useUserCoin, + type UseAudioBalanceOptions, + type UseUserCoinOptions } from '~/api' import { useQueryContext } from '~/api/tan-query/utils' import { ID } from '~/models' -import { QueryOptions } from '../types' - -import { useUSDCBalance } from './useUSDCBalance' +import { useUSDCBalance, type UseUSDCBalanceOptions } from './useUSDCBalance' const USDC_DECIMALS = 6 const WEI_DECIMALS = 18 @@ -41,7 +41,9 @@ export const useCoinBalance = ({ includeStaked?: boolean pollingInterval?: number walletAddress?: string -} & QueryOptions) => { +} & UseAudioBalanceOptions & + UseUserCoinOptions & + UseUSDCBalanceOptions) => { const { env } = useQueryContext() const { data: userById } = useUser(userId) const { data: currentUser } = useCurrentAccountUser({ enabled: !userId }) diff --git a/packages/common/src/api/tan-query/wallets/useExternalWalletBalance.ts b/packages/common/src/api/tan-query/wallets/useExternalWalletBalance.ts index f3c98b57881..1eec95ec376 100644 --- a/packages/common/src/api/tan-query/wallets/useExternalWalletBalance.ts +++ b/packages/common/src/api/tan-query/wallets/useExternalWalletBalance.ts @@ -14,7 +14,6 @@ import { TOKEN_LISTING_MAP } from '~/store' import { toErrorWithMessage } from '~/utils/error' import { QUERY_KEYS } from '../queryKeys' -import { QueryOptions } from '../types' type TokenAccount = { account: string @@ -122,7 +121,7 @@ export const useExternalWalletBalance = ( walletAddress, mint }: { walletAddress: string | undefined; mint: string | undefined }, - options?: QueryOptions + options?: Partial> ) => { const context = useQueryContext() diff --git a/packages/common/src/api/tan-query/wallets/useUSDCBalance.ts b/packages/common/src/api/tan-query/wallets/useUSDCBalance.ts index 8e3fb276926..492e428a1c0 100644 --- a/packages/common/src/api/tan-query/wallets/useUSDCBalance.ts +++ b/packages/common/src/api/tan-query/wallets/useUSDCBalance.ts @@ -27,6 +27,11 @@ export const getUSDCBalanceQueryKey = ( commitment ] as unknown as QueryKey +export type UseUSDCBalanceOptions = SelectableQueryOptions< + UsdcWei | null, + TResult +> + /** * Hook to get the USDC balance for the current user. * Uses TanStack Query for data fetching and caching. @@ -43,7 +48,7 @@ export const useUSDCBalance = ({ isPolling?: boolean pollingInterval?: number commitment?: Commitment -} & SelectableQueryOptions = {}) => { +} & UseUSDCBalanceOptions = {}) => { const { audiusSdk } = useQueryContext() const { data: user } = useCurrentAccountUser() const ethAddress = user?.wallet ?? null diff --git a/packages/common/src/hooks/useUploadCompletionRoute.ts b/packages/common/src/hooks/useUploadCompletionRoute.ts index 3662896f596..2d615206910 100644 --- a/packages/common/src/hooks/useUploadCompletionRoute.ts +++ b/packages/common/src/hooks/useUploadCompletionRoute.ts @@ -1,39 +1,39 @@ -import { useMemo } from 'react' - -import { UploadState, UploadType } from '~/store' +import { useCollection } from '~/api' +import { useTrack } from '~/api/tan-query/tracks/useTrack' +import { UploadType } from '~/store' import { collectionPage, profilePage } from '~/utils/route' export const useUploadCompletionRoute = ({ + id, uploadType, - upload, accountHandle }: { + id: number | null | undefined uploadType: UploadType - upload: UploadState - accountHandle: string | undefined | null + accountHandle: string }) => { - const route = useMemo(() => { - switch (uploadType) { - case UploadType.INDIVIDUAL_TRACK: - return upload.tracks?.[0].metadata.permalink - case UploadType.ALBUM: - case UploadType.PLAYLIST: - return upload.completedEntity - ? collectionPage( - null, - null, - null, - upload.completedEntity.permalink, - uploadType === UploadType.ALBUM - ) - : '' - default: - if (accountHandle && (!upload.tracks || upload.tracks.length > 1)) { - return profilePage(accountHandle) - } else { - return upload.tracks?.[0].metadata.permalink - } - } - }, [upload.completedEntity, upload.tracks, uploadType, accountHandle]) - return route + const { data: track } = useTrack(id!, { + enabled: + !!id && + (uploadType === UploadType.INDIVIDUAL_TRACK || + uploadType === UploadType.INDIVIDUAL_TRACKS) + }) + const { data: collection } = useCollection(id!, { + enabled: + !!id && + (uploadType === UploadType.ALBUM || uploadType === UploadType.PLAYLIST) + }) + if (track) { + return track.permalink + } + if (collection) { + return collectionPage( + null, + null, + null, + collection.permalink, + uploadType === UploadType.ALBUM + ) + } + return profilePage(accountHandle) } diff --git a/packages/common/src/schemas/upload/uploadFormSchema.ts b/packages/common/src/schemas/upload/uploadFormSchema.ts index 6bbe1402e17..2200441e0fe 100644 --- a/packages/common/src/schemas/upload/uploadFormSchema.ts +++ b/packages/common/src/schemas/upload/uploadFormSchema.ts @@ -325,6 +325,7 @@ export const createCollectionSchema = (collectionType: 'playlist' | 'album') => * - Playlist ID isn't on the schema. * - Artwork is more than just a URL. * - Tracks are full TrackForUploads, not just titles. + * - Then some extra optional Collection fields so that the adapters for SDK are happy. */ type UnvalidatedCollectionMetadata = { playlist_id?: number @@ -337,6 +338,12 @@ type UnvalidatedCollectionMetadata = { | null tracks: (TrackForUpload | TrackForEdit)[] playlist_contents?: Collection['playlist_contents'] + upc?: string + license?: string + ddex_app?: string + copyright_line?: Collection['copyright_line'] + producer_copyright_line?: Collection['producer_copyright_line'] + parental_warning_type?: Collection['parental_warning_type'] } export const PlaylistSchema = createCollectionSchema('playlist') diff --git a/packages/common/src/store/upload/actions.ts b/packages/common/src/store/upload/actions.ts index 3f5500f8573..fe416b0dfd3 100644 --- a/packages/common/src/store/upload/actions.ts +++ b/packages/common/src/store/upload/actions.ts @@ -2,7 +2,7 @@ import { NativeFile } from '@audius/sdk' import { CollectionValues } from '~/schemas' -import { Collection, ID, Track } from '../../models' +import { ID } from '../../models' import { Progress, @@ -23,6 +23,7 @@ export const UPDATE_TRACK_AUDIO = 'UPLOAD/UPDATE_TRACK_AUDIO' export const UPDATE_PERCENT = 'UPLOAD/UPDATE_PERCENT' export const INCREMENT_PERCENT = 'UPLOAD/INCREMENT_PERCENT' export const UPDATE_PROGRESS = 'UPLOAD/UPDATE_PROGRESS' +export const RESET_PROGRESS = 'UPLOAD/RESET_PROGRESS' export const RESET = 'UPLOAD/RESET' export const TOGGLE_MULTI_TRACK_NOTIFICATION = 'UPLOAD/TOGGLE_MULTI_TRACK_NOTIFICATION' @@ -54,23 +55,10 @@ export const uploadTracksRequested = (payload: UploadPayload) => { } } -export const uploadTracksSucceeded = ({ - id, - trackMetadatas, - completedEntity, - uploadType -}: { - id: number | null - trackMetadatas: Partial[] - completedEntity: Track | Collection - uploadType: UploadType -}) => { +export const uploadTracksSucceeded = (payload: { id: number | null }) => { return { type: UPLOAD_TRACKS_SUCCEEDED, - id: id ?? null, - trackMetadatas, - completedEntity, - uploadType + ...payload } } @@ -78,8 +66,16 @@ export const uploadTracksFailed = () => { return { type: UPLOAD_TRACKS_FAILED } } +export const resetProgress = (payload: { + clientId: string + stemIndex: number | null + key: 'audio' | 'art' +}) => { + return { type: RESET_PROGRESS, payload } +} + export const updateProgress = (payload: { - trackIndex: number + clientId: string stemIndex: number | null key: 'audio' | 'art' progress: Progress diff --git a/packages/common/src/store/upload/reducer.ts b/packages/common/src/store/upload/reducer.ts index 70c46dee144..7a57111c278 100644 --- a/packages/common/src/store/upload/reducer.ts +++ b/packages/common/src/store/upload/reducer.ts @@ -13,7 +13,9 @@ import { uploadTracksSucceeded, updateProgress, updateFormState, - UPDATE_FORM_STATE + UPDATE_FORM_STATE, + type resetProgress, + RESET_PROGRESS } from './actions' import { ProgressState, @@ -25,7 +27,6 @@ import { const initialState: UploadState = { openMultiTrackNotification: true, - tracks: null, metadata: null, uploadType: null, stems: [], @@ -45,6 +46,7 @@ const initialState: UploadState = { } const initialUploadState: ProgressState = { + clientId: '', art: { status: ProgressStatus.UPLOADING, loaded: 0, @@ -92,8 +94,10 @@ const actionsMap = { const newState = { ...state } const { tracks, uploadType } = action.payload newState.uploading = true - newState.tracks = tracks ?? null - newState.uploadProgress = tracks?.map(getInitialProgress) + const existingProgress = state.uploadProgress ?? [] + newState.uploadProgress = tracks?.map( + (t, i) => existingProgress[i] ?? getInitialProgress(t) + ) newState.metadata = action.payload.uploadType === UploadType.ALBUM || action.payload.uploadType === UploadType.PLAYLIST @@ -108,55 +112,95 @@ const actionsMap = { state: UploadState, action: ReturnType ) { - const { id, trackMetadatas } = action + const { id } = action const newState = { ...state } newState.uploading = false newState.success = true newState.completionId = id newState.uploadType = null newState.stems = [] - - // Update the upload tracks with resulting metadata. This is used for TikTok sharing - if (trackMetadatas) { - newState.tracks = - state.tracks?.map((t, i) => ({ - ...t, - metadata: { - ...t.metadata, - ...trackMetadatas[i] - } - })) ?? null - } - newState.completedEntity = action.completedEntity return newState }, [UPLOAD_TRACKS_FAILED](state: UploadState) { const newState = { ...state } newState.uploading = false newState.uploadType = null - newState.tracks = null newState.metadata = null newState.stems = [] newState.error = true return newState }, + [RESET_PROGRESS]( + state: UploadState, + action: ReturnType + ) { + const { clientId, stemIndex, key } = action.payload + + const newState = { ...state } + newState.uploadProgress = [...(state.uploadProgress ?? [])] + + const trackIndex = newState.uploadProgress.findIndex( + (p) => p && p.clientId === clientId + ) + + if (trackIndex === -1) { + return state + } + + if (stemIndex !== null) { + if (!newState.uploadProgress[trackIndex]?.stems[stemIndex]) { + return state + } + newState.uploadProgress[trackIndex].stems[stemIndex][key] = cloneDeep( + initialUploadState[key] + ) + } else { + newState.uploadProgress[trackIndex][key] = cloneDeep( + initialUploadState[key] + ) + } + return newState + }, [UPDATE_PROGRESS]( state: UploadState, action: ReturnType ) { - const { key, trackIndex, stemIndex, progress } = action.payload + const { key, clientId, stemIndex, progress } = action.payload const newState = { ...state } newState.uploadProgress = [...(state.uploadProgress ?? [])] - if (!newState.uploadProgress[trackIndex]) { - newState.uploadProgress[trackIndex] = cloneDeep(initialUploadState) + if (!newState.uploadProgress.find((p) => p && p.clientId === clientId)) { + newState.uploadProgress.push({ + ...cloneDeep(initialUploadState), + clientId + }) } + const trackIndex = newState.uploadProgress.findIndex( + (p) => p && p.clientId === clientId + ) + + if ( + stemIndex !== null && + newState.uploadProgress[trackIndex] && + !newState.uploadProgress[trackIndex]?.stems[stemIndex] + ) { + newState.uploadProgress[trackIndex].stems[stemIndex] = { + ...cloneDeep(initialUploadState), + art: { + status: ProgressStatus.COMPLETE, + loaded: 0, + total: 0, + transcode: 0 + } + } + } + const prevProgress = stemIndex === null ? newState.uploadProgress[trackIndex]?.[key] : newState.uploadProgress[trackIndex]?.stems[stemIndex][key] const nextProgress = { ...prevProgress } nextProgress.status = progress.status - if (progress.loaded && progress.total) { + if (progress.loaded !== undefined && progress.total !== undefined) { // Don't allow progress to jump backwards on retries nextProgress.loaded = Math.max(nextProgress.loaded ?? 0, progress.loaded) nextProgress.total = progress.total diff --git a/packages/common/src/store/upload/selectors.ts b/packages/common/src/store/upload/selectors.ts index 3ba8a750e8d..8ff3b89e404 100644 --- a/packages/common/src/store/upload/selectors.ts +++ b/packages/common/src/store/upload/selectors.ts @@ -5,11 +5,8 @@ import { CommonState } from '../commonStore' import { ProgressState, ProgressStatus } from './types' export const getStems = (state: CommonState) => state.upload.stems -export const getUploadProgress = (state: CommonState) => - state.upload.uploadProgress export const getUploadSuccess = (state: CommonState) => state.upload.success export const getUploadError = (state: CommonState) => state.upload.error -export const getTracks = (state: CommonState) => state.upload.tracks export const getIsUploading = (state: CommonState) => state.upload.uploading export const getFormState = (state: CommonState) => state.upload.formState @@ -62,7 +59,7 @@ const trackProgressSummary = ( * as a percentage between [0, 1] */ const getKeyUploadProgress = (state: CommonState, key: 'art' | 'audio') => { - const uploadProgress = getUploadProgress(state) + const uploadProgress = state.upload.uploadProgress if (uploadProgress == null) return 0 const filteredProgress = uploadProgress.filter((progress) => key in progress) diff --git a/packages/common/src/store/upload/types.ts b/packages/common/src/store/upload/types.ts index ca3d7c7f952..28ed112298c 100644 --- a/packages/common/src/store/upload/types.ts +++ b/packages/common/src/store/upload/types.ts @@ -2,14 +2,7 @@ import { NativeFile } from '@audius/sdk' import { CollectionValues } from '~/schemas' -import { - Collection, - CollectionMetadata, - StemUpload, - StemUploadWithFile, - Track, - TrackMetadata -} from '../../models' +import { StemUpload, StemUploadWithFile, TrackMetadata } from '../../models' import { Nullable } from '../../utils/typeUtils' export enum UploadType { @@ -23,6 +16,7 @@ export enum UploadType { * Represents a track file, its metadata prior to upload, and a preview. */ export interface TrackForUpload { + clientId: string file: File | NativeFile preview?: any // Basically the Howler.js API, but with underscores. metadata: TrackMetadataForUpload @@ -61,25 +55,6 @@ export interface TrackMetadataForUpload */ track_id?: number } -/** - * Unlike normal CollectionMetadata, CollectionMetadataForUpload has artwork - * and track details to be passed to its descendant tracks. - */ -export interface CollectionMetadataForUpload - extends Omit { - artwork?: - | Nullable<{ - file?: Blob | NativeFile - url: string - source?: string - }> - | CollectionMetadata['artwork'] - trackDetails: { - genre: string - mood: string - tags: string - } -} export enum ProgressStatus { /** The file is being uploaded to the storage node. */ @@ -104,6 +79,7 @@ export type Progress = { } export type ProgressState = { + clientId: string /** The progress of the artwork upload. */ art: Progress /** The progress of the audio track upload. */ @@ -136,7 +112,6 @@ export type UploadFormState = type UploadStateBase = { openMultiTrackNotification: boolean - tracks: Nullable metadata: Nullable uploading: boolean uploadProgress: Nullable @@ -150,12 +125,10 @@ type UploadStateBase = { type UploadStateForTracks = UploadStateBase & { uploadType: UploadType.INDIVIDUAL_TRACK | UploadType.INDIVIDUAL_TRACKS | null - completedEntity?: Track } type UploadStateForCollection = UploadStateBase & { uploadType: UploadType.ALBUM | UploadType.PLAYLIST | null - completedEntity?: Collection } /** The type for the upload reducer state of the store. */ diff --git a/packages/discovery-provider/ddl/pg_migrate.sh b/packages/discovery-provider/ddl/pg_migrate.sh index 3254050f8a6..b191854c584 100755 --- a/packages/discovery-provider/ddl/pg_migrate.sh +++ b/packages/discovery-provider/ddl/pg_migrate.sh @@ -154,7 +154,7 @@ migrate() { migrate_dir "utils" migrate_dir "migrations" - migrate_dir "functions" + #migrate_dir "functions" # "preflight" files run before server starts # to satisfy any necessary preconditions (e.g. inserting initial block) diff --git a/packages/discovery-provider/src/tasks/core/core_client.py b/packages/discovery-provider/src/tasks/core/core_client.py index b5e9907663f..db6748d07b6 100644 --- a/packages/discovery-provider/src/tasks/core/core_client.py +++ b/packages/discovery-provider/src/tasks/core/core_client.py @@ -76,7 +76,7 @@ def __init__(self): def get_audiusd_endpoint(self) -> str: if environment == "prod" or environment == "stage": return "core:50051" - return "audiusd-1:50051" + return "openaudio-1:50051" def get_core_endpoint(self) -> str: # For compatibility with CoreClient interface diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 6865947f06d..523437a2daa 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -101,6 +101,7 @@ "node-localstorage": "1.3.1", "semver": "6.3.0", "snakecase-keys": "5.4.5", + "tus-js-client": "4.3.1", "type-fest": "4.26.1", "ulid": "2.3.0", "url": "0.11.1", diff --git a/packages/sdk/src/sdk/api/playlists/PlaylistsApi.ts b/packages/sdk/src/sdk/api/playlists/PlaylistsApi.ts index 83282a3a9cd..0b7cd50f3ec 100644 --- a/packages/sdk/src/sdk/api/playlists/PlaylistsApi.ts +++ b/packages/sdk/src/sdk/api/playlists/PlaylistsApi.ts @@ -518,7 +518,7 @@ export class PlaylistsApi extends GeneratedPlaylistsApi { trackId, timestamp })), - playlistImageSizesMultihash: coverArtResponse.id + playlistImageSizesMultihash: coverArtResponse?.orig_file_cid } // Write playlist metadata to chain @@ -575,7 +575,7 @@ export class PlaylistsApi extends GeneratedPlaylistsApi { const updatedMetadata = { ...metadata, ...(coverArtResponse - ? { playlistImageSizesMultihash: coverArtResponse.id } + ? { playlistImageSizesMultihash: coverArtResponse.orig_file_cid } : {}) } @@ -632,7 +632,7 @@ export class PlaylistsApi extends GeneratedPlaylistsApi { trackId, timestamp })), - playlistImageSizesMultihash: coverArtResponse?.id ?? metadata.coverArtCid + playlistImageSizesMultihash: coverArtResponse?.orig_file_cid } // Write playlist metadata to chain diff --git a/packages/sdk/src/sdk/api/tracks/TrackUploadHelper.ts b/packages/sdk/src/sdk/api/tracks/TrackUploadHelper.ts index e0a8ba44808..15d61c8b58f 100644 --- a/packages/sdk/src/sdk/api/tracks/TrackUploadHelper.ts +++ b/packages/sdk/src/sdk/api/tracks/TrackUploadHelper.ts @@ -76,8 +76,8 @@ export class TrackUploadHelper extends BaseAPI { origFileCid: audioResponse.orig_file_cid, origFilename: audioResponse.orig_filename || trackMetadata.origFilename, audioUploadId: audioResponse.id, - coverArtSizes: coverArtResponse?.id, - duration: parseInt(audioResponse.probe.format.duration, 10), + coverArtSizes: coverArtResponse?.orig_file_cid, + duration: parseInt(audioResponse?.probe?.format?.duration ?? '0', 10), bpm: audioResponse.audio_analysis_results?.bpm ? audioResponse.audio_analysis_results.bpm : trackMetadata.bpm, diff --git a/packages/sdk/src/sdk/api/tracks/TracksApi.ts b/packages/sdk/src/sdk/api/tracks/TracksApi.ts index eadf4da696c..382e4779a96 100644 --- a/packages/sdk/src/sdk/api/tracks/TracksApi.ts +++ b/packages/sdk/src/sdk/api/tracks/TracksApi.ts @@ -56,7 +56,9 @@ import { UpdateTrackSchema, UploadTrackFilesSchema, ShareTrackSchema, - ShareTrackRequest + ShareTrackRequest, + type PublishTrackRequest, + PublishTrackSchema } from './types' // Extend that new class @@ -206,6 +208,32 @@ export class TracksApi extends GeneratedTracksApi { ) } + /** @hidden + * Publishes a track that was uploaded using storage node uploadFileV2 uploads. + */ + async publishTrack(params: PublishTrackRequest) { + const { + userId, + metadata: parsedMetadata, + audioUploadResponse, + artUploadResponse + } = await parseParams('publishTrack', PublishTrackSchema)(params) + + const metadata = this.trackUploadHelper.transformTrackUploadMetadata( + parsedMetadata, + userId + ) + + const populatedMetadata = + this.trackUploadHelper.populateTrackMetadataWithUploadResponse( + metadata, + audioUploadResponse, + artUploadResponse + ) + + return this.writeTrackToChain(params.userId, populatedMetadata) + } + /** @hidden * Write track upload to chain */ @@ -237,6 +265,7 @@ export class TracksApi extends GeneratedTracksApi { cid: '', data: { ...snakecaseKeys(metadata), + owner_id: decodedUserId, download_conditions: metadata.downloadConditions && snakecaseKeys(metadata.downloadConditions), diff --git a/packages/sdk/src/sdk/api/tracks/types.ts b/packages/sdk/src/sdk/api/tracks/types.ts index 66b13d25aa7..3570cba486f 100644 --- a/packages/sdk/src/sdk/api/tracks/types.ts +++ b/packages/sdk/src/sdk/api/tracks/types.ts @@ -382,3 +382,52 @@ export const PurchaseTrackSchema = z .strict() export type PurchaseTrackRequest = z.input + +const UploadResponseSchema = z.object({ + id: z.string(), + status: z.enum([ + 'new', + 'error', + 'busy', + 'timeout', + 'audio_analysis', + 'busy_audio_analysis', + 'done' + ]), + orig_file_cid: z.string(), + orig_filename: z.string(), + results: z.record(z.string(), z.string()), + probe: z + .object({ + format: z + .object({ + duration: z.string().optional() + }) + .optional() + }) + .optional(), + audio_analysis_results: z + .object({ + bpm: z.number().optional(), + key: z.string().optional() + }) + .optional() + .nullable(), + audio_analysis_error_count: z.number() +}) + +export type UploadResponse = z.input + +export const PublishTrackSchema = z + .object({ + userId: HashId, + metadata: UploadTrackMetadataSchema.extend({ + genre: z.optional(z.enum(Object.values(Genre) as [Genre, ...Genre[]])) + }).strict(), + audioUploadResponse: UploadResponseSchema, + artUploadResponse: UploadResponseSchema, + stemsUploadResponses: z.array(UploadResponseSchema).optional() + }) + .strict() + +export type PublishTrackRequest = z.input diff --git a/packages/sdk/src/sdk/services/Storage/Storage.ts b/packages/sdk/src/sdk/services/Storage/Storage.ts index 7aa6035708d..fcf49af6038 100644 --- a/packages/sdk/src/sdk/services/Storage/Storage.ts +++ b/packages/sdk/src/sdk/services/Storage/Storage.ts @@ -1,9 +1,10 @@ import axios, { AxiosRequestConfig, AxiosResponse } from 'axios' import FormData from 'form-data' +import * as tus from 'tus-js-client' import { productionConfig } from '../../config/production' import { isNodeFile } from '../../types/File' -import type { CrossPlatformFile as File } from '../../types/File' +import type { CrossPlatformFile } from '../../types/File' import fetch from '../../utils/fetch' import { mergeConfigWithDefaults } from '../../utils/mergeConfigs' import { wait } from '../../utils/wait' @@ -12,12 +13,14 @@ import type { StorageNodeSelectorService } from '../StorageNodeSelector' import { getDefaultStorageServiceConfig } from './getDefaultConfig' import type { + FileMetadata, FileTemplate, ProgressHandler, StorageService, StorageServiceConfig, StorageServiceConfigInternal, - UploadResponse + UploadResponse, + UploadHandle } from './types' const MAX_TRACK_TRANSCODE_TIMEOUT = 3600000 // 1 hour @@ -56,7 +59,7 @@ export class Storage implements StorageService { template, options = {} }: { - file: File + file: CrossPlatformFile onProgress?: ProgressHandler template: FileTemplate options?: { [key: string]: string } @@ -141,6 +144,72 @@ export class Storage implements StorageService { ) } + async uploadFileV2({ + file, + onProgress, + metadata, + onUploadCreated + }: { + file: CrossPlatformFile + onProgress: (loadedBytes: number, totalBytes: number) => void + metadata: FileMetadata + onUploadCreated?: (upload: UploadHandle) => void + }): Promise { + const selectedNode = await this.storageNodeSelector.getSelectedNode() + if (!selectedNode) { + throw new Error('No node available') + } + return new Promise((resolve, reject) => { + const upload = new tus.Upload(file as File, { + endpoint: `${selectedNode}/files/`, + retryDelays: [0, 3000, 5000, 10000, 20000], + chunkSize: 100_000_000, // 100MB + removeFingerprintOnSuccess: true, + metadata: { + filename: metadata.filename || file.name || 'file', + filetype: + metadata.filetype || file.type || 'application/octet-stream', + ...metadata + }, + onError: reject, + onProgress, + onSuccess: () => { + const uploadId = upload.url?.split('/').pop() + if (!uploadId) { + reject(new Error('No upload ID received')) + return + } + resolve(uploadId) + } + }) + + // Call callback immediately with upload handle (for cancellation) + onUploadCreated?.(upload) + + upload.findPreviousUploads().then((previousUploads) => { + if (previousUploads.length && previousUploads[0]) { + upload.resumeFromPreviousUpload(previousUploads[0]) + } + upload.start() + }) + }) + } + + async getUploadStatus(uploadId: string): Promise { + const selectedNode = await this.storageNodeSelector.getSelectedNode() + if (!selectedNode) { + throw new Error('No node available') + } + + const response = await fetch(`${selectedNode}/uploads/${uploadId}`) + if (!response.ok) { + throw new Error( + `Failed to get upload status for uploadId ${uploadId}, status: ${response.status}` + ) + } + return await response.json() + } + /** * Generates a preview for a track at the given second offset * @param {Object} params @@ -215,10 +284,7 @@ export class Storage implements StorageService { if (resp?.status === 'done') { return resp } - if ( - resp?.status === 'error' || - resp?.status === 'error_retranscode_preview' - ) { + if (resp?.status === 'error') { throw new Error( `Upload failed: id=${id}, resp=${JSON.stringify(resp)}` ) diff --git a/packages/sdk/src/sdk/services/Storage/index.ts b/packages/sdk/src/sdk/services/Storage/index.ts index e58c71e74fa..32525f7ba2e 100644 --- a/packages/sdk/src/sdk/services/Storage/index.ts +++ b/packages/sdk/src/sdk/services/Storage/index.ts @@ -1,3 +1,8 @@ export { Storage } from './Storage' -export type { StorageService, ProgressHandler } from './types' +export type { + StorageService, + ProgressHandler, + FileMetadata, + UploadHandle +} from './types' export { getDefaultStorageServiceConfig } from './getDefaultConfig' diff --git a/packages/sdk/src/sdk/services/Storage/types.ts b/packages/sdk/src/sdk/services/Storage/types.ts index fa65524d152..e69e7403255 100644 --- a/packages/sdk/src/sdk/services/Storage/types.ts +++ b/packages/sdk/src/sdk/services/Storage/types.ts @@ -1,7 +1,18 @@ -import type { CrossPlatformFile as File } from '../../types/File' +import type { CrossPlatformFile } from '../../types/File' import type { LoggerService } from '../Logger' import type { StorageNodeSelectorService } from '../StorageNodeSelector' +/** + * A handle to control an active upload. + * Provides methods to interact with the upload without exposing the underlying implementation. + */ +export interface UploadHandle { + /** + * Aborts the upload + */ + abort: () => void +} + export type StorageServiceConfigInternal = { /** * Logger service, defaults to console @@ -43,11 +54,23 @@ export type StorageService = { template, options }: { - file: File + file: CrossPlatformFile onProgress?: ProgressHandler template: FileTemplate options?: { [key: string]: string } }) => Promise + uploadFileV2: ({ + file, + onProgress, + metadata, + onUploadCreated + }: { + file: CrossPlatformFile + onProgress: (loadedBytes: number, totalBytes: number) => void + metadata: FileMetadata + onUploadCreated?: (upload: UploadHandle) => void + }) => Promise + getUploadStatus: (uploadId: string) => Promise generatePreview: ({ cid, secondOffset @@ -59,12 +82,12 @@ export type StorageService = { export type ProcessingStatus = | 'new' + | 'error' | 'busy' + | 'timeout' + | 'audio_analysis' + | 'busy_audio_analysis' | 'done' - | 'error' - | 'retranscode_preview' - | 'busy_retranscode_preview' - | 'error_retranscode_preview' export type UploadResponse = { id: string @@ -76,12 +99,22 @@ export type UploadResponse = { orig_filename: string audio_analysis_error_count: number audio_analysis_results?: { - [key: string]: string - } - probe: { - format: { - duration: string + bpm?: number + key?: string + } | null + probe?: { + format?: { + duration?: string } } transcode_progress?: number } + +export type FileMetadata = { + filename?: string + filetype?: string + template: 'audio' | 'img_square' | 'img_backdrop' + userWallet?: string + previewStartSeconds?: string + placementHosts?: string +} diff --git a/packages/sdk/src/sdk/types/File.ts b/packages/sdk/src/sdk/types/File.ts index 3e865b29aac..0c25408f9b1 100644 --- a/packages/sdk/src/sdk/types/File.ts +++ b/packages/sdk/src/sdk/types/File.ts @@ -67,6 +67,9 @@ const getFileType = async (file: CrossPlatformFile) => { let fileTypeBrowser: any if (typeof window !== 'undefined' && window) { fileTypeBrowser = await import('file-type/browser') + if ('default' in fileTypeBrowser) { + fileTypeBrowser = fileTypeBrowser.default + } } if (isNodeFile(file)) { diff --git a/packages/web/e2e/auth.setup.ts b/packages/web/e2e/auth.setup.ts index 39cb4f8a946..ca4c3a0a16d 100644 --- a/packages/web/e2e/auth.setup.ts +++ b/packages/web/e2e/auth.setup.ts @@ -1,6 +1,7 @@ -import { expect } from '@playwright/test' import fs from 'fs' +import { expect } from '@playwright/test' + import { getUser } from './data' import { test as setup } from './test' diff --git a/packages/web/package.json b/packages/web/package.json index 9edab521d1a..a3bec5e4fa4 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -98,8 +98,8 @@ "@solana/web3.js": "1.98.0", "@stripe/crypto": "0.0.4", "@stripe/stripe-js": "1.54.1", - "@tanstack/react-query": "5.62.7", - "@tanstack/react-query-devtools": "5.62.7", + "@tanstack/react-query": "5.90.16", + "@tanstack/react-query-devtools": "5.91.2", "@wagmi/connectors": "5.7.11", "array-pack-2d": "0.1.1", "array-range": "1.0.1", diff --git a/packages/web/src/app/routes.tsx b/packages/web/src/app/routes.tsx index 35693847fa9..b398127ad73 100644 --- a/packages/web/src/app/routes.tsx +++ b/packages/web/src/app/routes.tsx @@ -110,7 +110,7 @@ export const createRoutes = (): RouteObject[] => { })), // Sign in routes { - path: SIGN_IN_PAGE, + path: `${SIGN_IN_PAGE}/*`, children: [ { index: true, @@ -124,7 +124,7 @@ export const createRoutes = (): RouteObject[] => { }, // Sign up routes { - path: SIGN_UP_PAGE, + path: `${SIGN_UP_PAGE}/*`, children: [ { index: true, diff --git a/packages/web/src/common/store/upload/sagas.ts b/packages/web/src/common/store/upload/sagas.ts index b390b28b427..2ccd7bd2aba 100644 --- a/packages/web/src/common/store/upload/sagas.ts +++ b/packages/web/src/common/store/upload/sagas.ts @@ -950,10 +950,7 @@ export function* uploadCollection( function* (confirmedPlaylist: Collection) { yield* put( uploadActions.uploadTracksSucceeded({ - id: confirmedPlaylist.playlist_id, - trackMetadatas: [], - completedEntity: confirmedPlaylist, - uploadType + id: confirmedPlaylist.playlist_id }) ) const user = yield* queryUser(userId) @@ -1094,10 +1091,7 @@ export function* uploadMultipleTracks( // At this point, the upload was success! The rest is metrics. yield* put( uploadActions.uploadTracksSucceeded({ - id: newTracks[0].track_id, - trackMetadatas: newTracks, - completedEntity: newTracks[0], - uploadType + id: newTracks[0].track_id }) ) diff --git a/packages/web/src/components/edit-track/EditTrackForm.tsx b/packages/web/src/components/edit-track/EditTrackForm.tsx index b1454ea4a4c..fec13e2891f 100644 --- a/packages/web/src/components/edit-track/EditTrackForm.tsx +++ b/packages/web/src/components/edit-track/EditTrackForm.tsx @@ -282,6 +282,11 @@ const TrackEditForm = ( const newFile = files[0] + // Preserve clientId for upload tracking + if ('clientId' in formValues.tracks[trackIdx]) { + newFile.clientId = formValues.tracks[trackIdx]?.clientId + } + if (isUpload && !isTitleDirty) { setTitle(newFile.metadata.title.split('.').shift()) } @@ -304,6 +309,8 @@ const TrackEditForm = ( [ isPreviewPlaying, handleTogglePreview, + formValues.tracks, + trackIdx, isUpload, isTitleDirty, isArtworkSet, diff --git a/packages/web/src/components/edit/fields/MultiTrackSidebar.tsx b/packages/web/src/components/edit/fields/MultiTrackSidebar.tsx index c1ef6fafe1e..11e4efccf16 100644 --- a/packages/web/src/components/edit/fields/MultiTrackSidebar.tsx +++ b/packages/web/src/components/edit/fields/MultiTrackSidebar.tsx @@ -127,8 +127,18 @@ const TrackRow = (props: TrackRowProps) => { const newTracks = [...values.tracks] newTrackMetadatas.splice(index, 1) newTracks.splice(index, 1) - const newIndex = - selectedIndex === index ? Math.max(index - 1, 0) : selectedIndex + // Calculate new index correctly + let newIndex = selectedIndex + if (selectedIndex === index) { + // If removing the selected track, move to the previous one (or 0) + newIndex = Math.max(index - 1, 0) + } else if (selectedIndex > index) { + // If removing a track before the selected one, shift the index down + newIndex = selectedIndex - 1 + } + // Clamp to the new array bounds + newIndex = Math.min(newIndex, newTrackMetadatas.length - 1) + setValues({ ...values, tracks: newTracks, diff --git a/packages/web/src/pages/sign-in-page/ConfirmEmailPage.tsx b/packages/web/src/pages/sign-in-page/ConfirmEmailPage.tsx index 32f3e6f6572..9b4ed6fad2b 100644 --- a/packages/web/src/pages/sign-in-page/ConfirmEmailPage.tsx +++ b/packages/web/src/pages/sign-in-page/ConfirmEmailPage.tsx @@ -87,6 +87,7 @@ export const ConfirmEmailPage = () => { const VerificationCodeField = () => { const isInvalidOtp = useSelector( (state) => + typeof getPasswordField(state).error.includes === 'function' && getPasswordField(state).error.includes('400') && getOtpField(state).value === '' ) diff --git a/packages/web/src/pages/upload-page/UploadPage.tsx b/packages/web/src/pages/upload-page/UploadPage.tsx index 43ab791fd48..3717f416be8 100644 --- a/packages/web/src/pages/upload-page/UploadPage.tsx +++ b/packages/web/src/pages/upload-page/UploadPage.tsx @@ -1,31 +1,51 @@ -import { useCallback, useEffect, useState } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' -import { useTrack } from '@audius/common/api' +import { fileToSdk } from '@audius/common/adapters' +import { + useCurrentAccountUser, + usePublishCollection, + usePublishTracks, + useTrack, + useUploadFiles +} from '@audius/common/api' +import type { StemUploadWithFile } from '@audius/common/models' +import { Feature, isContentFollowGated, Name } from '@audius/common/models' import { uploadActions, UploadFormState, uploadSelectors, UploadType, useUploadConfirmationModal, - TrackMetadataForUpload + TrackMetadataForUpload, + type TrackForUpload, + type CollectionFormState, + type TrackFormState } from '@audius/common/store' import { IconCloudUpload } from '@audius/harmony' +import { HashId, type UploadHandle } from '@audius/sdk' import { useDispatch, useSelector } from 'react-redux' import { useLocation } from 'react-router' +import { make } from 'common/store/analytics/actions' import { Header } from 'components/header/desktop/Header' import Page from 'components/page/Page' import { useNavigateToPage } from 'hooks/useNavigateToPage' import { EditFormScrollContext } from 'pages/edit-page/EditTrackPage' +import { reportToSentry } from 'store/errors/reportToSentry' import styles from './UploadPage.module.css' import { EditPage } from './pages/EditPage' import { FinishPage } from './pages/FinishPage' import SelectPage from './pages/SelectPage' -const { uploadTracks, updateFormState, reset } = uploadActions -const { getFormState, getUploadSuccess, getUploadError, getIsUploading } = - uploadSelectors +const { + updateFormState, + reset, + uploadTracksSucceeded, + uploadTracksRequested, + uploadTracksFailed +} = uploadActions +const { getFormState, getUploadSuccess, getUploadError } = uploadSelectors const messages = { selectPageTitle: 'Upload Your Music', @@ -68,10 +88,375 @@ export const UploadPage = (props: UploadPageProps) => { const formStateFromStore = useSelector(getFormState) const uploadSuccess = useSelector(getUploadSuccess) const uploadError = useSelector(getUploadError) - const isUploading = useSelector(getIsUploading) const [formState, setFormState] = useState( formStateFromStore ?? initialFormState ) + const { data: user } = useCurrentAccountUser() + const { mutateAsync: uploadFiles } = useUploadFiles() + const { mutateAsync: publishTracksAsync } = usePublishTracks() + const { mutateAsync: publishCollectionAsync } = usePublishCollection() + + const trackUploadPromise = useRef>( + Promise.resolve([]) + ) + + const fileUploads = useRef< + Map[number]['file']> + >(new Map()) + + const uploadTracks = useCallback( + async (tracks: TrackForUpload[]) => { + // Track analytics for each track being uploaded + tracks.forEach((t) => { + fileUploads.current.set(t.clientId, t.file) + dispatch( + make(Name.TRACK_UPLOAD_TRACK_UPLOADING, { + artworkSource: + t.metadata.artwork && 'source' in t.metadata.artwork + ? t.metadata.artwork.source + : undefined, + trackId: t.metadata.track_id, + genre: t.metadata.genre, + mood: t.metadata.mood, + size: t.file.size, + fileType: t.file.type, + name: t.file.name, + downloadable: isContentFollowGated(t.metadata.download_conditions) + ? 'follow' + : t.metadata.is_downloadable + ? 'yes' + : 'no' + }) + ) + }) + + return await uploadFiles({ + files: tracks.map((t) => ({ + clientId: t.clientId, + file: fileToSdk(t.file, 'audio'), + metadata: { + filename: t.file.name ?? undefined, + filetype: t.file.type ?? undefined, + userWallet: user?.wallet, + template: 'audio' + } + })), + onUploadCreated: (clientId, handle) => { + uploadHandles.current.set(clientId, handle) + } + }) + }, + [dispatch, uploadFiles, user?.wallet] + ) + + const uploadHandles = useRef>(new Map()) + + /** + * Replace track files that have been changed in the edit form + * by aborting their previous upload and re-uploading the new file + */ + const replaceTrackFiles = useCallback( + (tracks: TrackForUpload[]) => { + // Check if any track files were replaced (same clientId, different File) + const tracksWithReplacedFiles = + tracks?.filter((track) => { + const existingFile = fileUploads.current.get(track.clientId) + return existingFile && existingFile !== track.file + }) ?? [] + + // Abort and remove upload handles for removed or replaced files + for (const key of uploadHandles.current.keys()) { + const isRemoved = !tracks.find((t) => t.clientId === key) + const isReplaced = !!tracksWithReplacedFiles.find( + (t) => t.clientId === key + ) + if (isRemoved || isReplaced) { + uploadHandles.current.get(key)?.abort() + uploadHandles.current.delete(key) + } + } + + // Keep the existing uploads and add the new uploads for replaced files + if (tracksWithReplacedFiles.length > 0) { + trackUploadPromise.current = Promise.all([ + uploadTracks(tracksWithReplacedFiles), + trackUploadPromise.current + ]).then(([newUploads, oldUploads]) => [ + ...newUploads, + ...oldUploads.filter((oldUpload) => { + return !newUploads.find((nu) => nu.clientId === oldUpload.clientId) + }) + ]) + } + }, + [uploadTracks] + ) + + const uploadTrackArtworks = useCallback( + async (tracks: TrackForUpload[]) => { + return await uploadFiles({ + files: tracks + .filter( + (t) => + t.metadata?.artwork && + 'file' in t.metadata.artwork && + t.metadata.artwork.file + ) + .map((t) => { + if ( + !t.metadata.artwork || + !('file' in t.metadata.artwork) || + !t.metadata.artwork.file + ) { + throw new Error('Artwork file missing') + } + const file = fileToSdk(t.metadata.artwork.file, 'artwork') + return { + clientId: t.clientId, + file, + metadata: { + filename: file.name ?? undefined, + filetype: file.type ?? undefined, + userWallet: user?.wallet, + template: 'img_square' + } + } + }) + }) + }, + [uploadFiles, user?.wallet] + ) + + const uploadCollectionArtwork = useCallback( + async (formState: CollectionFormState) => { + if ( + !formState.metadata || + !formState.metadata.artwork || + !('file' in formState.metadata.artwork) || + !formState.metadata.artwork.file + ) { + return + } + return await uploadFiles({ + files: [ + { + clientId: 'collection-artwork', + file: fileToSdk(formState.metadata.artwork.file, 'artwork'), + metadata: { + filename: 'artwork', + filetype: formState.metadata.artwork.file.type ?? undefined, + userWallet: user?.wallet, + template: 'img_square' + } + } + ] + }) + }, + [uploadFiles, user?.wallet] + ) + + const uploadStemFiles = useCallback( + (tracks: TrackForUpload[]) => { + return uploadFiles({ + files: tracks.flatMap( + (t) => + t.metadata.stems?.map((stemFile, index) => { + const file = (stemFile as StemUploadWithFile).file + return { + clientId: t.clientId, + stemIndex: index, + file: fileToSdk(file, 'audio'), + metadata: { + filename: file.name ?? undefined, + filetype: file.type ?? undefined, + userWallet: user?.wallet, + template: 'audio' + } + } + }) ?? [] + ) + }) + }, + [uploadFiles, user?.wallet] + ) + + const finishUpload = useCallback( + async (formState: CollectionFormState | TrackFormState) => { + const kind = (() => { + switch (formState.uploadType) { + case UploadType.ALBUM: + return 'album' + case UploadType.PLAYLIST: + return 'playlist' + default: + return 'tracks' + } + })() + + // Track start of upload + dispatch( + make(Name.TRACK_UPLOAD_START_UPLOADING, { + count: formState.tracks?.length ?? 0, + kind + }) + ) + + dispatch(uploadTracksRequested(formState)) + + let stems = [] + let tracks = [] + try { + // Wait for stems and tracks to upload before publishing + ;[stems, tracks] = await Promise.all([ + uploadStemFiles(formState.tracks ?? []), + trackUploadPromise.current + ]) + } catch (err) { + console.error('Error uploading files:', err) + dispatch(make(Name.TRACK_UPLOAD_FAILURE, { kind })) + await reportToSentry({ + error: err as Error, + name: 'Upload: File Upload Failed', + additionalInfo: { + tracks: formState.tracks?.map((t) => ({ + title: t.metadata.title, + stemCount: t.metadata.stems?.length ?? 0 + })) + }, + feature: Feature.Upload + }) + dispatch(uploadTracksFailed()) + return + } + + if ( + formState.uploadType === UploadType.INDIVIDUAL_TRACKS || + formState.uploadType === UploadType.INDIVIDUAL_TRACK + ) { + try { + const artworks = await uploadTrackArtworks(formState.tracks ?? []) + const publishRes = await publishTracksAsync( + formState.tracks!.map((t) => ({ + clientId: t.clientId, + metadata: t.metadata, + audioUploadResponse: tracks.find( + (ut) => ut.clientId === t.clientId + )!.response, + artUploadResponse: artworks.find( + (a) => a.clientId === t.clientId + )!.response, + stemsUploadResponses: stems + .filter((su) => su.clientId === t.clientId) + .map((su) => su.response) + })) + ) + + // Track complete upload analytics + dispatch( + make(Name.TRACK_UPLOAD_COMPLETE_UPLOAD, { + trackCount: formState.tracks?.length ?? 0, + kind + }) + ) + + if (formState.uploadType === UploadType.INDIVIDUAL_TRACK) { + dispatch( + uploadTracksSucceeded({ + id: HashId.parse(publishRes[0]!.trackId) + }) + ) + } else if (formState.uploadType === UploadType.INDIVIDUAL_TRACKS) { + dispatch(uploadTracksSucceeded({ id: null })) + } + } catch (err) { + console.error('Error publishing tracks:', err) + dispatch(make(Name.TRACK_UPLOAD_FAILURE, { kind })) + await reportToSentry({ + error: err as Error, + name: 'Upload: Track Publishing Failed', + additionalInfo: { + tracks: formState.tracks?.map((t) => ({ + title: t.metadata.title, + hasArtwork: !!t.metadata.artwork + })) + }, + feature: Feature.Upload + }) + dispatch(uploadTracksFailed()) + } + } else if ( + formState.uploadType === UploadType.ALBUM || + formState.uploadType === UploadType.PLAYLIST + ) { + try { + const artwork = await uploadCollectionArtwork( + formState as CollectionFormState + ) + const publishRes = await publishCollectionAsync({ + collectionMetadata: formState.metadata, + tracks: formState.tracks!.map((t) => { + const artUploadResponse = artwork?.find( + (a) => a.clientId === t.clientId + )?.response + if (!artUploadResponse) { + throw new Error(`No artwork found for track ${t.clientId}`) + } + return { + clientId: t.clientId, + metadata: t.metadata, + audioUploadResponse: tracks.find( + (ut) => ut.clientId === t.clientId + )!.response, + artUploadResponse + } + }) + }) + + // Track complete upload analytics + dispatch( + make(Name.TRACK_UPLOAD_COMPLETE_UPLOAD, { + trackCount: formState.tracks?.length ?? 0, + kind + }) + ) + + dispatch( + uploadTracksSucceeded({ id: HashId.parse(publishRes.playlistId) }) + ) + } catch (err) { + console.error('Error publishing collection:', err) + dispatch( + make(Name.TRACK_UPLOAD_FAILURE, { + kind: + formState.uploadType === UploadType.ALBUM ? 'album' : 'playlist' + }) + ) + await reportToSentry({ + error: err as Error, + name: 'Upload: Collection Publishing Failed', + additionalInfo: { + collectionType: formState.uploadType, + trackCount: formState.tracks?.length, + tracks: formState.tracks?.map((t) => ({ + title: t.metadata.title, + hasStems: !!t.metadata.stems?.length + })) + }, + feature: Feature.Upload + }) + dispatch(uploadTracksFailed()) + } + } + }, + [ + dispatch, + uploadStemFiles, + uploadCollectionArtwork, + uploadTrackArtworks, + publishTracksAsync, + publishCollectionAsync + ] + ) // For navigating back to a remix contest page const { data: originalTrack } = useTrack( @@ -118,15 +503,20 @@ export const UploadPage = (props: UploadPageProps) => { const { onOpen: openUploadConfirmationModal } = useUploadConfirmationModal() const openUploadConfirmation = useCallback( - (hasPublicTracks: boolean) => { + ( + hasPublicTracks: boolean, + formState: CollectionFormState | TrackFormState + ) => { openUploadConfirmationModal({ hasPublicTracks, confirmCallback: () => { setPhase(Phase.FINISH) + replaceTrackFiles(formState.tracks ?? []) + finishUpload(formState) } }) }, - [openUploadConfirmationModal] + [finishUpload, openUploadConfirmationModal, replaceTrackFiles] ) let page @@ -139,6 +529,7 @@ export const UploadPage = (props: UploadPageProps) => { onContinue={(formState: UploadFormState) => { setFormState(formState) setPhase(Phase.EDIT) + trackUploadPromise.current = uploadTracks(formState.tracks ?? []) }} /> ) @@ -158,7 +549,10 @@ export const UploadPage = (props: UploadPageProps) => { formState.tracks?.some( (track) => !track.metadata.is_unlisted ) ?? true - openUploadConfirmation(hasPublicTracks && !isPrivateCollection) + openUploadConfirmation( + hasPublicTracks && !isPrivateCollection, + formState as CollectionFormState | TrackFormState + ) }} /> ) @@ -183,20 +577,6 @@ export const UploadPage = (props: UploadPageProps) => { } } - const handleUpload = useCallback(() => { - if (!formState.tracks) return - dispatch(uploadTracks(formState)) - }, [dispatch, formState]) - - useEffect(() => { - // Actually trigger the upload when the user is on the finish page - // and there is not already existing upload progress - const isUploadPending = !isUploading && !uploadSuccess && !uploadError - if (phase === Phase.FINISH && isUploadPending) { - handleUpload() - } - }, [handleUpload, phase, isUploading, uploadSuccess, uploadError]) - const handleBack = useCallback(() => { if (phase === Phase.EDIT && originalTrack) { navigate(originalTrack.permalink) diff --git a/packages/web/src/pages/upload-page/forms/UploadTrackForm.tsx b/packages/web/src/pages/upload-page/forms/UploadTrackForm.tsx index 6917081a4cb..280422c2a74 100644 --- a/packages/web/src/pages/upload-page/forms/UploadTrackForm.tsx +++ b/packages/web/src/pages/upload-page/forms/UploadTrackForm.tsx @@ -56,10 +56,10 @@ export const UploadTrackForm = (props: UploadTrackFormProps) => { const onSubmit = useCallback( (values: TrackEditFormValues) => { - const tracksForUpload = tracks.map((track, i) => { + const tracksForUpload = values.tracks.map((track, i) => { const metadata = values.trackMetadatas[i] - const file = (values.tracks[i] as TrackForUpload).file ?? tracks[i].file - return { ...track, metadata, file } + const file = 'file' in track ? track.file : tracks[i].file + return { ...tracks[i], metadata, file } }) onContinue({ ...formState, tracks: tracksForUpload }) diff --git a/packages/web/src/pages/upload-page/pages/FinishPage.module.css b/packages/web/src/pages/upload-page/pages/FinishPage.module.css index dfb6682d424..633e34e7c11 100644 --- a/packages/web/src/pages/upload-page/pages/FinishPage.module.css +++ b/packages/web/src/pages/upload-page/pages/FinishPage.module.css @@ -49,13 +49,6 @@ padding: 16px; } -.uploadTrackItem { - display: flex; - gap: 12px; - align-items: center; - padding: 8px; -} - .trackItemArtwork { height: 40px; width: 40px; @@ -75,7 +68,3 @@ height: 16px; width: 16px; } - -.visitLink:hover { - text-decoration: none !important; -} diff --git a/packages/web/src/pages/upload-page/pages/FinishPage.tsx b/packages/web/src/pages/upload-page/pages/FinishPage.tsx index 2748ad2f0e4..3362b99e61c 100644 --- a/packages/web/src/pages/upload-page/pages/FinishPage.tsx +++ b/packages/web/src/pages/upload-page/pages/FinishPage.tsx @@ -21,7 +21,9 @@ import { IconValidationCheck, Text, PlainButton, - ProgressBar + ProgressBar, + Box, + Flex } from '@audius/harmony' import { useDispatch, useSelector } from 'react-redux' import { Link } from 'react-router' @@ -86,18 +88,42 @@ const UploadTrackItem = (props: UploadTrackItemProps) => { ? track.metadata.artwork?.url : null + const hasStems = trackProgress?.stems && trackProgress.stems.length > 0 + return ( -
- - {displayIndex ? {index + 1} : null} - {displayArtwork ? ( - + + + + {displayIndex ? {index + 1} : null} + {displayArtwork ? ( + + ) : null} + {track.metadata.title} + + {hasStems ? ( + + {trackProgress.stems.map((stemProgress, stemIdx) => { + const stemMetadata = track.metadata.stems?.[stemIdx] + const stemCategory = stemMetadata?.category || 'stem' + const stemFile = + stemMetadata && 'file' in stemMetadata ? stemMetadata.file : null + const stemFileName = stemFile?.name || stemMetadata?.metadata?.title + return ( + + + + {stemCategory.charAt(0).toUpperCase() + stemCategory.slice(1)} + {stemFileName ? ` - ${stemFileName}` : ''} + + + ) + })} + ) : null} - {track.metadata.title} -
+ ) } @@ -149,29 +175,28 @@ export const FinishPage = (props: FinishPageProps) => { case UploadType.PLAYLIST: return messages.visitPlaylist default: - if (!upload.tracks || upload.tracks.length > 1) { + if (!formState.tracks || formState.tracks.length > 1) { return messages.visitProfile } else { return messages.visitTrack } } - }, [upload.tracks, uploadType]) + }, [formState.tracks, uploadType]) const visitButtonPath = useUploadCompletionRoute({ + id: upload.completionId, uploadType, - upload, - accountHandle: accountHandle as string | null + accountHandle: accountHandle! }) const handleViewUpload = useCallback(() => { dispatch(make(Name.TRACK_UPLOAD_VIEW_TRACK_PAGE, { uploadType })) - onContinue() - }, [dispatch, uploadType, onContinue]) + }, [dispatch, uploadType]) const isUnlistedTrack = - (upload.tracks && - upload.tracks.length === 1 && - upload.tracks[0].metadata.is_unlisted) ?? + (formState.tracks && + formState.tracks.length === 1 && + formState.tracks[0].metadata.is_unlisted) ?? false return ( diff --git a/packages/web/src/pages/upload-page/pages/SelectPage.tsx b/packages/web/src/pages/upload-page/pages/SelectPage.tsx index 95bb40f6f83..1aa06ca92e7 100644 --- a/packages/web/src/pages/upload-page/pages/SelectPage.tsx +++ b/packages/web/src/pages/upload-page/pages/SelectPage.tsx @@ -33,7 +33,7 @@ const SelectPage = (props: SelectPageProps) => { const [tracks, setTracks] = useState(formState.tracks ?? []) const [uploadType, setUploadType] = useState( - formState.uploadType ?? UploadType.INDIVIDUAL_TRACKS + formState.uploadType ?? UploadType.INDIVIDUAL_TRACK ) const [uploadTrackError, setUploadTrackError] = useState>(null) diff --git a/packages/web/src/pages/upload-page/store/utils/processFiles.ts b/packages/web/src/pages/upload-page/store/utils/processFiles.ts index dc930fe535d..75c1b8eb196 100644 --- a/packages/web/src/pages/upload-page/store/utils/processFiles.ts +++ b/packages/web/src/pages/upload-page/store/utils/processFiles.ts @@ -88,6 +88,7 @@ export const processFiles = ( // @ts-ignore preview is present on `file` in the browser context audio.src = file.preview return { + clientId: crypto.randomUUID() as string, file, preview: audio, metadata: newTrackMetadata({