diff --git a/.github/workflows/main-access.yaml b/.github/workflows/main-access.yaml deleted file mode 100644 index f996fc2720..0000000000 --- a/.github/workflows/main-access.yaml +++ /dev/null @@ -1,55 +0,0 @@ -name: Access - -on: - push: - branches: - - main - -defaults: - run: - working-directory: platform/access - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build ../platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install Dependencies - run: yarn install - - - name: Test - run: yarn run test - - - name: Deploy - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: platform/access - command: publish --env dev - environment: dev - secrets: | - SECRET_JWK_CURRENT_KID - SECRET_JWKS - env: - NODE_ENV: 'development' - SECRET_JWK_CURRENT_KID: ${{ secrets.SECRET_JWK_CURRENT_KID_DEV }} - SECRET_JWKS: ${{ secrets.SECRET_JWKS_DEV }} diff --git a/.github/workflows/main-account.yaml b/.github/workflows/main-account.yaml deleted file mode 100644 index 6200400970..0000000000 --- a/.github/workflows/main-account.yaml +++ /dev/null @@ -1,50 +0,0 @@ -name: Account - -on: - push: - branches: - - main - -defaults: - run: - working-directory: platform/account - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build ../platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install Dependencies - run: yarn install - - - name: Test - run: yarn run test - - - name: Deploy - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: platform/account - command: publish --env dev - environment: dev - env: - NODE_ENV: 'development' diff --git a/.github/workflows/next-account.yaml b/.github/workflows/main-analytics.yaml similarity index 75% rename from .github/workflows/next-account.yaml rename to .github/workflows/main-analytics.yaml index 13b6814a1d..48b5389867 100644 --- a/.github/workflows/next-account.yaml +++ b/.github/workflows/main-analytics.yaml @@ -1,17 +1,18 @@ -name: Next Account +name: Analytics on: push: - tags: - - '*' + branches: + - main defaults: run: - working-directory: platform/account + working-directory: platform/analytics jobs: deploy: runs-on: ubuntu-latest + environment: dev steps: - uses: actions/checkout@v3 @@ -29,8 +30,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -41,8 +40,8 @@ jobs: - name: Deploy uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: platform/account - command: publish --env next - environment: next + workingDirectory: platform/analytics + command: publish diff --git a/.github/workflows/main-console.yaml b/.github/workflows/main-console.yaml index 463fa5c776..de8aca9bcc 100644 --- a/.github/workflows/main-console.yaml +++ b/.github/workflows/main-console.yaml @@ -14,6 +14,7 @@ defaults: jobs: build-publish-test-console-dev: runs-on: ubuntu-latest + environment: dev timeout-minutes: 60 steps: - uses: actions/checkout@v2 @@ -32,8 +33,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -44,18 +43,29 @@ jobs: - name: Deploy Console to Dev Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'apps/console' - command: publish --env dev + command: publish --config wrangler.dev.toml --env dev environment: 'dev' secrets: | SECRET_SESSION_KEY + SECRET_SESSION_SALT + SECRET_STRIPE_API_KEY + SECRET_STRIPE_WEBHOOK_SECRET + SECRET_STRIPE_PRO_PLAN_ID + SECRET_STRIPE_GROUP_SEAT_PLAN_ID env: NODE_ENV: 'development' # A secret used for session encryption. SECRET_SESSION_KEY: ${{ secrets.SECRET_SESSION_KEY_DEV }} + SECRET_SESSION_SALT: ${{ secrets.SECRET_SESSION_SALT_DEV }} # CF_ROUTE: https://console-dev.kubelt.com/* + SECRET_STRIPE_API_KEY: ${{ secrets.SECRET_STRIPE_API_KEY_DEV }} + SECRET_STRIPE_WEBHOOK_SECRET: ${{ secrets.SECRET_STRIPE_WEBHOOK_SECRET_DEV }} + SECRET_STRIPE_PRO_PLAN_ID: ${{ secrets.SECRET_STRIPE_PRO_PLAN_ID_DEV }} + SECRET_STRIPE_GROUP_SEAT_PLAN_ID: ${{ secrets.SECRET_STRIPE_GROUP_SEAT_PLAN_ID_DEV }} - name: Setup Playwright working-directory: 'apps/console' diff --git a/.github/workflows/main-address.yaml b/.github/workflows/main-core.yaml similarity index 53% rename from .github/workflows/main-address.yaml rename to .github/workflows/main-core.yaml index 1c0567beeb..d4f8d59563 100644 --- a/.github/workflows/main-address.yaml +++ b/.github/workflows/main-core.yaml @@ -1,4 +1,4 @@ -name: Address +name: Core on: push: @@ -7,11 +7,12 @@ on: defaults: run: - working-directory: platform/address + working-directory: platform/core jobs: deploy: runs-on: ubuntu-latest + environment: dev steps: - uses: actions/checkout@v3 @@ -29,8 +30,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -38,40 +37,84 @@ jobs: - name: Test run: yarn run test + - name: Deploy edges D1 Database + uses: cloudflare/wrangler-action@2.0.0 + with: + wranglerVersion: '3.2.0' + apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} + accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} + workingDirectory: 'platform/core' + command: d1 migrations apply edges-v2-dev --config wrangler.dev.toml --env dev + environment: 'dev' + - name: Deploy uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: platform/address - command: publish --env dev - environment: dev + workingDirectory: platform/core + command: publish --config wrangler.dev.toml --env dev + environment: 'dev' secrets: | + SECRET_JWK_CURRENT_KID + SECRET_JWKS + + INTERNAL_DKIM_SELECTOR + + SECRET_RELAY_DKIM_PRIVATE_KEY + INTERNAL_GOOGLE_OAUTH_CLIENT_ID SECRET_GOOGLE_OAUTH_CLIENT_SECRET + INTERNAL_GITHUB_OAUTH_CLIENT_ID SECRET_GITHUB_OAUTH_CLIENT_SECRET + INTERNAL_TWITTER_OAUTH_CLIENT_ID SECRET_TWITTER_OAUTH_CLIENT_SECRET + INTERNAL_MICROSOFT_OAUTH_CLIENT_ID SECRET_MICROSOFT_OAUTH_CLIENT_SECRET + INTERNAL_APPLE_OAUTH_CLIENT_ID SECRET_APPLE_OAUTH_CLIENT_SECRET + INTERNAL_DISCORD_OAUTH_CLIENT_ID SECRET_DISCORD_OAUTH_CLIENT_SECRET + + INTERNAL_CLOUDFLARE_ZONE_ID + TOKEN_CLOUDFLARE_API + SECRET_ZERODEV_PROJECTID env: NODE_ENV: 'development' - INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_DEV }} + + SECRET_JWK_CURRENT_KID: ${{ secrets.SECRET_JWK_CURRENT_KID_DEV }} + SECRET_JWKS: ${{ secrets.SECRET_JWKS_DEV }} + + INTERNAL_DKIM_SELECTOR: ${{ secrets.INTERNAL_DKIM_SELECTOR }} + + SECRET_RELAY_DKIM_PRIVATE_KEY: ${{ secrets.SECRET_RELAY_DKIM_PRIVATE_KEY }} + + INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_DEV }} SECRET_GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GOOGLE_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GITHUB_OAUTH_CLIENT_ID_DEV }} + + INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GITHUB_OAUTH_CLIENT_ID_DEV }} SECRET_GITHUB_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GITHUB_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_TWITTER_OAUTH_CLIENT_ID_DEV }} + + INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_TWITTER_OAUTH_CLIENT_ID_DEV }} SECRET_TWITTER_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_TWITTER_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_DEV }} + + INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_DEV }} SECRET_MICROSOFT_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_MICROSOFT_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_APPLE_OAUTH_CLIENT_ID_DEV }} + + INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_APPLE_OAUTH_CLIENT_ID_DEV }} SECRET_APPLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_APPLE_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_DISCORD_OAUTH_CLIENT_ID_DEV }} + + INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_DISCORD_OAUTH_CLIENT_ID_DEV }} SECRET_DISCORD_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_DISCORD_OAUTH_CLIENT_SECRET_DEV }} + + INTERNAL_CLOUDFLARE_ZONE_ID: ${{ secrets.INTERNAL_CLOUDFLARE_ZONE_ID }} + TOKEN_CLOUDFLARE_API: ${{ secrets.TOKEN_CLOUDFLARE_API }} + SECRET_ZERODEV_PROJECTID: ${{secrets.SECRET_ZERODEV_PROJECTID_DEV }} diff --git a/.github/workflows/main-edges.yaml b/.github/workflows/main-edges.yaml deleted file mode 100644 index 5ce5e74ba6..0000000000 --- a/.github/workflows/main-edges.yaml +++ /dev/null @@ -1,60 +0,0 @@ -# .github/workflows/main-edges.yaml ---- -name: Edges - -on: - push: - branches: - - main - -defaults: - run: - working-directory: ./platform - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install Dependencies - run: yarn install - - - name: Deploy edges D1 Database - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - wranglerVersion: '2.6.2' - workingDirectory: 'platform/edges' - command: d1 migrations apply edges-dev --env dev - environment: 'dev' - - - name: Deploy edges dev Worker - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - wranglerVersion: '2.6.2' - workingDirectory: 'platform/edges' - command: publish --env dev - environment: 'dev' - env: - NODE_ENV: 'development' diff --git a/.github/workflows/main-email.yaml b/.github/workflows/main-email.yaml index 69a55d3bae..52ddcbce66 100644 --- a/.github/workflows/main-email.yaml +++ b/.github/workflows/main-email.yaml @@ -12,6 +12,7 @@ defaults: jobs: deploy: runs-on: ubuntu-latest + environment: dev steps: - uses: actions/checkout@v3 @@ -29,8 +30,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -41,11 +40,12 @@ jobs: - name: Deploy uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: platform/email - command: publish --env dev - environment: dev + command: publish --config wrangler.dev.toml --env dev + environment: 'dev' secrets: | INTERNAL_DKIM_DOMAIN INTERNAL_DKIM_SELECTOR diff --git a/.github/workflows/main-galaxy.yaml b/.github/workflows/main-galaxy.yaml index 602c7804f1..ef394e72b1 100644 --- a/.github/workflows/main-galaxy.yaml +++ b/.github/workflows/main-galaxy.yaml @@ -14,6 +14,7 @@ jobs: build-publish-test-galaxy-dev: runs-on: ubuntu-latest timeout-minutes: 60 + environment: dev steps: - uses: actions/checkout@v2 @@ -31,8 +32,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -46,10 +45,11 @@ jobs: - name: Deploy Galaxy to Dev Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'platform/galaxy' - command: publish --env dev + command: publish --config wrangler.dev.toml --env dev environment: 'dev' env: NODE_ENV: 'development' diff --git a/.github/workflows/main-images.yaml b/.github/workflows/main-images.yaml index c39f28c0a7..eb0431c9b5 100644 --- a/.github/workflows/main-images.yaml +++ b/.github/workflows/main-images.yaml @@ -14,6 +14,7 @@ defaults: jobs: deploy: runs-on: ubuntu-latest + environment: dev steps: - uses: actions/checkout@v3 @@ -31,8 +32,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -43,10 +42,11 @@ jobs: - name: Deploy Images to Dev Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'platform/images' - command: publish --env dev + command: publish --config wrangler.dev.toml --env dev environment: 'dev' # This causes secrets to be set as if by: $ wrangler secret put. # Each supplied name must be defined in the env: config stanza. diff --git a/.github/workflows/main-logbridge.yaml b/.github/workflows/main-logbridge.yaml index c86a548ce4..1af4eedb2c 100644 --- a/.github/workflows/main-logbridge.yaml +++ b/.github/workflows/main-logbridge.yaml @@ -12,6 +12,7 @@ defaults: jobs: deploy: runs-on: ubuntu-latest + environment: dev steps: - uses: actions/checkout@v3 @@ -29,8 +30,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -41,6 +40,7 @@ jobs: - name: Deploy uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: platform/logbridge diff --git a/.github/workflows/main-passport.yaml b/.github/workflows/main-passport.yaml index 45f0b4645e..e10876c063 100644 --- a/.github/workflows/main-passport.yaml +++ b/.github/workflows/main-passport.yaml @@ -13,6 +13,7 @@ defaults: jobs: build-publish-test-passport-dev: runs-on: ubuntu-latest + environment: dev timeout-minutes: 60 steps: - uses: actions/checkout@v2 @@ -31,8 +32,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -43,14 +42,16 @@ jobs: - name: Deploy to Dev Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'apps/passport' - command: publish --env dev + command: publish --config wrangler.dev.toml --env dev environment: 'dev' secrets: | SECRET_SESSION_KEY SECRET_SESSION_SALT + SECRET_WEBAUTHN_SIGNING_KEY APIKEY_ALCHEMY_PUBLIC INTERNAL_GOOGLE_OAUTH_CLIENT_ID SECRET_GOOGLE_OAUTH_CLIENT_SECRET @@ -68,18 +69,19 @@ jobs: NODE_ENV: 'development' SECRET_SESSION_KEY: ${{ secrets.SECRET_SESSION_KEY_DEV }} SECRET_SESSION_SALT: ${{ secrets.SECRET_SESSION_SALT_DEV }} + SECRET_WEBAUTHN_SIGNING_KEY: ${{ secrets.SECRET_WEBAUTHN_SIGNING_KEY_DEV }} APIKEY_ALCHEMY_PUBLIC: ${{ secrets.APIKEY_ALCHEMY_PUBLIC_GOERLI }} - INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_DEV }} + INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_DEV }} SECRET_GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GOOGLE_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GITHUB_OAUTH_CLIENT_ID_DEV }} + INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GITHUB_OAUTH_CLIENT_ID_DEV }} SECRET_GITHUB_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GITHUB_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_TWITTER_OAUTH_CLIENT_ID_DEV }} + INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_TWITTER_OAUTH_CLIENT_ID_DEV }} SECRET_TWITTER_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_TWITTER_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_DEV }} + INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_DEV }} SECRET_MICROSOFT_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_MICROSOFT_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_APPLE_OAUTH_CLIENT_ID_DEV }} + INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_APPLE_OAUTH_CLIENT_ID_DEV }} SECRET_APPLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_APPLE_OAUTH_CLIENT_SECRET_DEV }} - INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_DISCORD_OAUTH_CLIENT_ID_DEV }} + INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_DISCORD_OAUTH_CLIENT_ID_DEV }} SECRET_DISCORD_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_DISCORD_OAUTH_CLIENT_SECRET_DEV }} - name: Setup Playwright diff --git a/.github/workflows/main-profile.yaml b/.github/workflows/main-profile.yaml index f940dfbe66..9c395efd90 100644 --- a/.github/workflows/main-profile.yaml +++ b/.github/workflows/main-profile.yaml @@ -13,6 +13,7 @@ defaults: jobs: build-publish-test-profile-dev: runs-on: ubuntu-latest + environment: dev timeout-minutes: 60 steps: - uses: actions/checkout@v2 @@ -31,8 +32,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -43,10 +42,11 @@ jobs: - name: Deploy to Dev Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'apps/profile' - command: publish --env dev + command: publish --config wrangler.dev.toml --env dev environment: 'dev' secrets: | SECRET_SESSION_KEY @@ -59,7 +59,7 @@ jobs: NODE_ENV: 'development' SECRET_SESSION_KEY: ${{ secrets.SECRET_SESSION_KEY_DEV }} SECRET_SESSION_SALT: ${{ secrets.SECRET_SESSION_SALT_DEV }} - PROFILE_CLIENT_ID: ${{ secrets.INTERNAL_PROFILE_OAUTH_CLIENT_ID_DEV }} + PROFILE_CLIENT_ID: ${{ vars.INTERNAL_PROFILE_OAUTH_CLIENT_ID_DEV }} PROFILE_CLIENT_SECRET: ${{ secrets.SECRET_PROFILE_OAUTH_CLIENT_SECRET_DEV }} APIKEY_ALCHEMY_ETH: ${{ secrets.APIKEY_ALCHEMY_GALAXY_MAINNET }} APIKEY_ALCHEMY_POLYGON: ${{ secrets.APIKEY_ALCHEMY_POLYGON_MAINNET }} diff --git a/.github/workflows/main-starbase.yaml b/.github/workflows/main-starbase.yaml deleted file mode 100644 index a6089e856f..0000000000 --- a/.github/workflows/main-starbase.yaml +++ /dev/null @@ -1,57 +0,0 @@ -# .github/workflows/main-starbase.yaml ---- -name: Starbase - -on: - push: - branches: - - main - -defaults: - run: - working-directory: ./platform - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install - run: yarn install - - - name: Test - run: yarn workspaces foreach -i -v -t --include starbase run test - - - name: Deploy - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: 'platform/starbase' - command: publish --env dev - environment: 'dev' - secrets: | - INTERNAL_CLOUDFLARE_ZONE_ID - TOKEN_CLOUDFLARE_API - env: - NODE_ENV: 'development' - INTERNAL_CLOUDFLARE_ZONE_ID: ${{ secrets.INTERNAL_CLOUDFLARE_ZONE_ID }} - TOKEN_CLOUDFLARE_API: ${{ secrets.TOKEN_CLOUDFLARE_API }} diff --git a/.github/workflows/main-test.yaml b/.github/workflows/main-test.yaml index 8b03179df8..5f477c9429 100644 --- a/.github/workflows/main-test.yaml +++ b/.github/workflows/main-test.yaml @@ -12,6 +12,7 @@ defaults: jobs: deploy: runs-on: ubuntu-latest + environment: dev steps: - uses: actions/checkout@v3 @@ -29,8 +30,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -41,6 +40,7 @@ jobs: - name: Deploy uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: platform/test diff --git a/.github/workflows/next-access.yaml b/.github/workflows/next-access.yaml deleted file mode 100644 index 235c477c4c..0000000000 --- a/.github/workflows/next-access.yaml +++ /dev/null @@ -1,54 +0,0 @@ -name: Next Access - -on: - push: - tags: - - '*' - -defaults: - run: - working-directory: platform/access - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build ../platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install Dependencies - run: yarn install - - - name: Test - run: yarn run test - - - name: Deploy - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: platform/access - command: publish --env next - environment: next - secrets: | - SECRET_JWK_CURRENT_KID - SECRET_JWKS - env: - SECRET_JWK_CURRENT_KID: ${{ secrets.SECRET_JWK_CURRENT_KID_TEST }} - SECRET_JWKS: ${{ secrets.SECRET_JWKS_TEST }} diff --git a/.github/workflows/next-console.yaml b/.github/workflows/next-console.yaml index 40fe213419..9d9b817964 100644 --- a/.github/workflows/next-console.yaml +++ b/.github/workflows/next-console.yaml @@ -14,6 +14,7 @@ defaults: jobs: build-publish-test-console-next: runs-on: ubuntu-latest + environment: next timeout-minutes: 60 steps: - uses: actions/checkout@v2 @@ -32,8 +33,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -44,13 +43,24 @@ jobs: - name: Deploy to Next Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'apps/console' - command: publish --env next + command: publish --config wrangler.next.toml --env next environment: 'next' secrets: | SECRET_SESSION_KEY + SECRET_SESSION_SALT + SECRET_STRIPE_API_KEY + SECRET_STRIPE_WEBHOOK_SECRET + SECRET_STRIPE_PRO_PLAN_ID + SECRET_STRIPE_GROUP_SEAT_PLAN_ID env: # A secret used for session encryption. SECRET_SESSION_KEY: ${{ secrets.SECRET_SESSION_KEY_TEST }} + SECRET_SESSION_SALT: ${{ secrets.SECRET_SESSION_SALT_TEST }} + SECRET_STRIPE_API_KEY: ${{ secrets.SECRET_STRIPE_API_KEY_TEST }} + SECRET_STRIPE_WEBHOOK_SECRET: ${{ secrets.SECRET_STRIPE_WEBHOOK_SECRET_TEST }} + SECRET_STRIPE_PRO_PLAN_ID: ${{ secrets.SECRET_STRIPE_PRO_PLAN_ID_TEST }} + SECRET_STRIPE_GROUP_SEAT_PLAN_ID: ${{ secrets.SECRET_STRIPE_GROUP_SEAT_PLAN_ID_TEST }} diff --git a/.github/workflows/next-address.yaml b/.github/workflows/next-core.yaml similarity index 52% rename from .github/workflows/next-address.yaml rename to .github/workflows/next-core.yaml index 4b51dc21bf..63d23449ef 100644 --- a/.github/workflows/next-address.yaml +++ b/.github/workflows/next-core.yaml @@ -1,4 +1,4 @@ -name: Next Address +name: Next Core on: push: @@ -7,11 +7,12 @@ on: defaults: run: - working-directory: platform/address + working-directory: platform/core jobs: deploy: runs-on: ubuntu-latest + environment: next steps: - uses: actions/checkout@v3 @@ -29,8 +30,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -38,39 +37,84 @@ jobs: - name: Test run: yarn run test + - name: Deploy edges D1 Database + uses: cloudflare/wrangler-action@2.0.0 + with: + wranglerVersion: '3.2.0' + apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} + accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} + workingDirectory: 'platform/core' + command: d1 migrations apply edges-v2-next --config wrangler.next.toml --env next + environment: 'next' + - name: Deploy uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: platform/address - command: publish --env next - environment: next + workingDirectory: platform/core + command: publish --config wrangler.next.toml --env next + environment: 'next' secrets: | + SECRET_JWK_CURRENT_KID + SECRET_JWKS + + INTERNAL_DKIM_SELECTOR + + SECRET_RELAY_DKIM_PRIVATE_KEY + INTERNAL_GOOGLE_OAUTH_CLIENT_ID SECRET_GOOGLE_OAUTH_CLIENT_SECRET + INTERNAL_GITHUB_OAUTH_CLIENT_ID SECRET_GITHUB_OAUTH_CLIENT_SECRET + INTERNAL_TWITTER_OAUTH_CLIENT_ID SECRET_TWITTER_OAUTH_CLIENT_SECRET + INTERNAL_MICROSOFT_OAUTH_CLIENT_ID SECRET_MICROSOFT_OAUTH_CLIENT_SECRET + INTERNAL_APPLE_OAUTH_CLIENT_ID SECRET_APPLE_OAUTH_CLIENT_SECRET + INTERNAL_DISCORD_OAUTH_CLIENT_ID SECRET_DISCORD_OAUTH_CLIENT_SECRET + + INTERNAL_CLOUDFLARE_ZONE_ID + TOKEN_CLOUDFLARE_API + SECRET_ZERODEV_PROJECTID env: - INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_TEST }} + NODE_ENV: 'production' + + SECRET_JWK_CURRENT_KID: ${{ secrets.SECRET_JWK_CURRENT_KID_TEST }} + SECRET_JWKS: ${{ secrets.SECRET_JWKS_TEST }} + + INTERNAL_DKIM_SELECTOR: ${{ secrets.INTERNAL_DKIM_SELECTOR }} + + SECRET_RELAY_DKIM_PRIVATE_KEY: ${{ secrets.SECRET_RELAY_DKIM_PRIVATE_KEY }} + + INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_TEST }} SECRET_GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GOOGLE_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GITHUB_OAUTH_CLIENT_ID_TEST }} + + INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GITHUB_OAUTH_CLIENT_ID_TEST }} SECRET_GITHUB_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GITHUB_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_TWITTER_OAUTH_CLIENT_ID_TEST }} + + INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_TWITTER_OAUTH_CLIENT_ID_TEST }} SECRET_TWITTER_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_TWITTER_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_TEST }} + + INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_TEST }} SECRET_MICROSOFT_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_MICROSOFT_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_APPLE_OAUTH_CLIENT_ID_TEST }} + + INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_APPLE_OAUTH_CLIENT_ID_TEST }} SECRET_APPLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_APPLE_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_DISCORD_OAUTH_CLIENT_ID_TEST }} + + INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_DISCORD_OAUTH_CLIENT_ID_TEST }} SECRET_DISCORD_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_DISCORD_OAUTH_CLIENT_SECRET_TEST }} + + INTERNAL_CLOUDFLARE_ZONE_ID: ${{ secrets.INTERNAL_CLOUDFLARE_ZONE_ID }} + TOKEN_CLOUDFLARE_API: ${{ secrets.TOKEN_CLOUDFLARE_API }} + SECRET_ZERODEV_PROJECTID: ${{secrets.SECRET_ZERODEV_PROJECTID_TEST }} diff --git a/.github/workflows/next-edges.yaml b/.github/workflows/next-edges.yaml deleted file mode 100644 index 5386dd4998..0000000000 --- a/.github/workflows/next-edges.yaml +++ /dev/null @@ -1,60 +0,0 @@ -# .github/workflows/next-edges.yaml ---- -name: Next Edges - -on: - push: - tags: - - '*' - -defaults: - run: - working-directory: ./platform - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install Dependencies - run: yarn install - - # NB: we do *not* drop and recreate the database. If applying - # the SQL fails we'll need to migrate the database manually using: - # $ wrangler d1 migrations - - - name: Deploy edges D1 Database - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: 'platform/edges' - command: d1 migrations apply edges-next --env next - environment: 'next' - - - name: Deploy edges next Worker - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: 'platform/edges' - command: publish --env next - environment: 'next' diff --git a/.github/workflows/next-email.yaml b/.github/workflows/next-email.yaml index b1b64e81a0..31ab67bc12 100644 --- a/.github/workflows/next-email.yaml +++ b/.github/workflows/next-email.yaml @@ -12,6 +12,7 @@ defaults: jobs: deploy: runs-on: ubuntu-latest + environment: next steps: - uses: actions/checkout@v3 @@ -29,8 +30,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -41,11 +40,12 @@ jobs: - name: Deploy uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: platform/email - command: publish --env next - environment: next + command: publish --config wrangler.next.toml --env next + environment: 'next' secrets: | INTERNAL_DKIM_DOMAIN INTERNAL_DKIM_SELECTOR diff --git a/.github/workflows/next-galaxy.yaml b/.github/workflows/next-galaxy.yaml index 167d7ca3b6..9d69cdc002 100644 --- a/.github/workflows/next-galaxy.yaml +++ b/.github/workflows/next-galaxy.yaml @@ -12,6 +12,7 @@ defaults: jobs: build-publish-test-galaxy-next: runs-on: ubuntu-latest + environment: next timeout-minutes: 60 steps: - uses: actions/checkout@v2 @@ -30,8 +31,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -45,8 +44,9 @@ jobs: - name: Deploy to Dev Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'platform/galaxy' - command: publish --env next + command: publish --config wrangler.next.toml --env next environment: 'next' diff --git a/.github/workflows/next-images.yaml b/.github/workflows/next-images.yaml index 8f832d80e4..75aa254d19 100644 --- a/.github/workflows/next-images.yaml +++ b/.github/workflows/next-images.yaml @@ -14,6 +14,7 @@ defaults: jobs: deploy: runs-on: ubuntu-latest + environment: next steps: - uses: actions/checkout@v3 @@ -31,8 +32,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -43,10 +42,11 @@ jobs: - name: Deploy Images to Test Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'platform/images' - command: publish --env next + command: publish --config wrangler.next.toml --env next environment: 'next' # This causes secrets to be set as if by: $ wrangler secret put. # Each supplied name must be defined in the env: config stanza. diff --git a/.github/workflows/next-passport.yaml b/.github/workflows/next-passport.yaml index a5cae6b804..bc1000d2c1 100644 --- a/.github/workflows/next-passport.yaml +++ b/.github/workflows/next-passport.yaml @@ -12,6 +12,7 @@ defaults: jobs: build-publish-test-passport-next: runs-on: ubuntu-latest + environment: next steps: - uses: actions/checkout@v2 @@ -29,8 +30,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -41,14 +40,16 @@ jobs: - name: Publish uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'apps/passport' - command: publish --env next + command: publish --config wrangler.next.toml --env next environment: 'next' secrets: | SECRET_SESSION_KEY SECRET_SESSION_SALT + SECRET_WEBAUTHN_SIGNING_KEY APIKEY_ALCHEMY_PUBLIC INTERNAL_GOOGLE_OAUTH_CLIENT_ID SECRET_GOOGLE_OAUTH_CLIENT_SECRET @@ -65,16 +66,17 @@ jobs: env: SECRET_SESSION_KEY: ${{ secrets.SECRET_SESSION_KEY_TEST }} SECRET_SESSION_SALT: ${{ secrets.SECRET_SESSION_SALT_TEST }} + SECRET_WEBAUTHN_SIGNING_KEY: ${{ secrets.SECRET_WEBAUTHN_SIGNING_KEY_TEST }} APIKEY_ALCHEMY_PUBLIC: ${{ secrets.APIKEY_ALCHEMY_PUBLIC_GOERLI }} - INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_TEST }} + INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_TEST }} SECRET_GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GOOGLE_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GITHUB_OAUTH_CLIENT_ID_TEST }} + INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GITHUB_OAUTH_CLIENT_ID_TEST }} SECRET_GITHUB_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GITHUB_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_TWITTER_OAUTH_CLIENT_ID_TEST }} + INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_TWITTER_OAUTH_CLIENT_ID_TEST }} SECRET_TWITTER_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_TWITTER_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_TEST }} + INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_TEST }} SECRET_MICROSOFT_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_MICROSOFT_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_APPLE_OAUTH_CLIENT_ID_TEST }} + INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_APPLE_OAUTH_CLIENT_ID_TEST }} SECRET_APPLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_APPLE_OAUTH_CLIENT_SECRET_TEST }} - INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_DISCORD_OAUTH_CLIENT_ID_TEST }} + INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_DISCORD_OAUTH_CLIENT_ID_TEST }} SECRET_DISCORD_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_DISCORD_OAUTH_CLIENT_SECRET_TEST }} diff --git a/.github/workflows/next-profile.yaml b/.github/workflows/next-profile.yaml index 16d38ebbfe..3e1280607c 100644 --- a/.github/workflows/next-profile.yaml +++ b/.github/workflows/next-profile.yaml @@ -12,6 +12,7 @@ defaults: jobs: build-publish-test-profile-next: runs-on: ubuntu-latest + environment: next steps: - uses: actions/checkout@v2 @@ -29,8 +30,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -41,10 +40,11 @@ jobs: - name: Publish uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'apps/profile' - command: publish --env next + command: publish --config wrangler.next.toml --env next environment: 'next' secrets: | SECRET_SESSION_KEY @@ -56,7 +56,7 @@ jobs: env: SECRET_SESSION_KEY: ${{ secrets.SECRET_SESSION_KEY_TEST }} SECRET_SESSION_SALT: ${{ secrets.SECRET_SESSION_SALT_TEST }} - PROFILE_CLIENT_ID: ${{ secrets.INTERNAL_PROFILE_OAUTH_CLIENT_ID_NEXT }} + PROFILE_CLIENT_ID: ${{ vars.INTERNAL_PROFILE_OAUTH_CLIENT_ID_NEXT }} PROFILE_CLIENT_SECRET: ${{ secrets.SECRET_PROFILE_OAUTH_CLIENT_SECRET_NEXT }} APIKEY_ALCHEMY_ETH: ${{ secrets.APIKEY_ALCHEMY_GALAXY_MAINNET }} APIKEY_ALCHEMY_POLYGON: ${{ secrets.APIKEY_ALCHEMY_POLYGON_MAINNET }} diff --git a/.github/workflows/next-starbase.yaml b/.github/workflows/next-starbase.yaml deleted file mode 100644 index 595337b720..0000000000 --- a/.github/workflows/next-starbase.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# .github/workflows/next-starbase.yaml ---- -name: Next Starbase - -on: - push: - tags: - - '*' - -defaults: - run: - working-directory: ./platform - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install - run: yarn install - - - name: Test - run: yarn workspaces foreach -i -v -t --include starbase run test - - - name: Deploy - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: 'platform/starbase' - command: publish --env next - environment: 'next' - secrets: | - INTERNAL_CLOUDFLARE_ZONE_ID - TOKEN_CLOUDFLARE_API - env: - INTERNAL_CLOUDFLARE_ZONE_ID: ${{ secrets.INTERNAL_CLOUDFLARE_ZONE_ID }} - TOKEN_CLOUDFLARE_API: ${{ secrets.TOKEN_CLOUDFLARE_API }} diff --git a/.github/workflows/pr-apps.yaml b/.github/workflows/pr-apps.yaml index 0786214c6c..06774dc23c 100644 --- a/.github/workflows/pr-apps.yaml +++ b/.github/workflows/pr-apps.yaml @@ -16,7 +16,7 @@ jobs: apps: ${{ steps.changes.outputs.apps }} steps: # find out what deploy stack to use - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: dorny/paths-filter@v2 id: changes with: @@ -31,28 +31,30 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build apps.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 + - name: Restore node modules + id: cache-node-modules-restore + uses: actions/cache/restore@v3 with: path: | node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install --immutable + - name: Save node modules + if: steps.cache-node-modules-restore.outputs.cache-hit != 'true' + id: cache-node_modules-save + uses: actions/cache/save@v3 + with: + path: | + node_modules + .yarn + key: ${{ steps.cache-node-modules-restore.outputs.cache-primary-key }} + - name: Build run: yarn build diff --git a/.github/workflows/pr-packages.yaml b/.github/workflows/pr-packages.yaml index dba4299b8b..d573e5aec4 100644 --- a/.github/workflows/pr-packages.yaml +++ b/.github/workflows/pr-packages.yaml @@ -33,25 +33,27 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build packages.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 + - name: Restore node modules + id: cache-node-modules-restore + uses: actions/cache/restore@v3 with: path: | node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies - run: yarn install + run: yarn install --immutable + + - name: Save node modules + if: steps.cache-node-modules-restore.outputs.cache-hit != 'true' + id: cache-node_modules-save + uses: actions/cache/save@v3 + with: + path: | + node_modules + .yarn + key: ${{ steps.cache-node-modules-restore.outputs.cache-primary-key }} - name: Build run: yarn build diff --git a/.github/workflows/pr-platform.yaml b/.github/workflows/pr-platform.yaml index 001ccc3843..2dee521b72 100644 --- a/.github/workflows/pr-platform.yaml +++ b/.github/workflows/pr-platform.yaml @@ -31,28 +31,30 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 + - name: Restore node modules + id: cache-node-modules-restore + uses: actions/cache/restore@v3 with: path: | node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install + - name: Save node modules + if: steps.cache-node-modules-restore.outputs.cache-hit != 'true' + id: cache-node_modules-save + uses: actions/cache/save@v3 + with: + path: | + node_modules + .yarn + key: ${{ steps.cache-node-modules-restore.outputs.cache-primary-key }} + - name: Code Generation run: yarn gql diff --git a/.github/workflows/release-access.yaml b/.github/workflows/release-access.yaml deleted file mode 100644 index 37dcd76f58..0000000000 --- a/.github/workflows/release-access.yaml +++ /dev/null @@ -1,53 +0,0 @@ -name: Release Access - -on: - release: - types: [published] - -defaults: - run: - working-directory: platform/access - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build ../platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install Dependencies - run: yarn install - - - name: Test - run: yarn run test - - - name: Deploy - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: platform/access - command: publish --env current - environment: current - secrets: | - SECRET_JWK_CURRENT_KID - SECRET_JWKS - env: - SECRET_JWK_CURRENT_KID: ${{ secrets.SECRET_JWK_CURRENT_KID_PROD }} - SECRET_JWKS: ${{ secrets.SECRET_JWKS_PROD }} diff --git a/.github/workflows/release-account.yaml b/.github/workflows/release-account.yaml deleted file mode 100644 index b99787780f..0000000000 --- a/.github/workflows/release-account.yaml +++ /dev/null @@ -1,47 +0,0 @@ -name: Release Account - -on: - release: - types: [published] - -defaults: - run: - working-directory: platform/account - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build ../platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install Dependencies - run: yarn install - - - name: Test - run: yarn run test - - - name: Deploy - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: platform/account - command: publish --env current - environment: current diff --git a/.github/workflows/release-console.yaml b/.github/workflows/release-console.yaml index acdec3f4d6..5768171172 100644 --- a/.github/workflows/release-console.yaml +++ b/.github/workflows/release-console.yaml @@ -13,6 +13,7 @@ defaults: jobs: build-publish-console-current: runs-on: ubuntu-latest + environment: prod steps: - uses: actions/checkout@v2 @@ -30,8 +31,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -39,13 +38,24 @@ jobs: - name: Deploy to Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'apps/console' - command: publish --env current + command: publish --config wrangler.current.toml --env current environment: 'current' secrets: | SECRET_SESSION_KEY + SECRET_SESSION_SALT + SECRET_STRIPE_API_KEY + SECRET_STRIPE_WEBHOOK_SECRET + SECRET_STRIPE_PRO_PLAN_ID + SECRET_STRIPE_GROUP_SEAT_PLAN_ID env: # A secret used for session encryption. SECRET_SESSION_KEY: ${{ secrets.SECRET_SESSION_KEY_PROD }} + SECRET_SESSION_SALT: ${{ secrets.SECRET_SESSION_SALT_PROD }} + SECRET_STRIPE_API_KEY: ${{ secrets.SECRET_STRIPE_API_KEY_PROD }} + SECRET_STRIPE_WEBHOOK_SECRET: ${{ secrets.SECRET_STRIPE_WEBHOOK_SECRET_PROD }} + SECRET_STRIPE_PRO_PLAN_ID: ${{ secrets.SECRET_STRIPE_PRO_PLAN_ID_PROD }} + SECRET_STRIPE_GROUP_SEAT_PLAN_ID: ${{ secrets.SECRET_STRIPE_GROUP_SEAT_PLAN_ID_PROD }} diff --git a/.github/workflows/release-address.yaml b/.github/workflows/release-core.yaml similarity index 52% rename from .github/workflows/release-address.yaml rename to .github/workflows/release-core.yaml index b1ad2070e3..35d6bda459 100644 --- a/.github/workflows/release-address.yaml +++ b/.github/workflows/release-core.yaml @@ -1,4 +1,4 @@ -name: Release Address +name: Release Core on: release: @@ -6,11 +6,12 @@ on: defaults: run: - working-directory: platform/address + working-directory: platform/core jobs: deploy: runs-on: ubuntu-latest + environment: prod steps: - uses: actions/checkout@v3 @@ -28,8 +29,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -37,39 +36,84 @@ jobs: - name: Test run: yarn run test + - name: Deploy edges D1 Database + uses: cloudflare/wrangler-action@2.0.0 + with: + wranglerVersion: '3.2.0' + apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} + accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} + workingDirectory: 'platform/core' + command: d1 migrations apply edges-v2-current --config wrangler.current.toml --env current + environment: 'current' + - name: Deploy uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: platform/address - command: publish --env current - environment: current + workingDirectory: platform/core + command: publish --config wrangler.current.toml --env current + environment: 'current' secrets: | + SECRET_JWK_CURRENT_KID + SECRET_JWKS + + INTERNAL_DKIM_SELECTOR + + SECRET_RELAY_DKIM_PRIVATE_KEY + INTERNAL_GOOGLE_OAUTH_CLIENT_ID SECRET_GOOGLE_OAUTH_CLIENT_SECRET + INTERNAL_GITHUB_OAUTH_CLIENT_ID SECRET_GITHUB_OAUTH_CLIENT_SECRET + INTERNAL_TWITTER_OAUTH_CLIENT_ID SECRET_TWITTER_OAUTH_CLIENT_SECRET + INTERNAL_MICROSOFT_OAUTH_CLIENT_ID SECRET_MICROSOFT_OAUTH_CLIENT_SECRET + INTERNAL_APPLE_OAUTH_CLIENT_ID SECRET_APPLE_OAUTH_CLIENT_SECRET + INTERNAL_DISCORD_OAUTH_CLIENT_ID SECRET_DISCORD_OAUTH_CLIENT_SECRET + + INTERNAL_CLOUDFLARE_ZONE_ID + TOKEN_CLOUDFLARE_API + SECRET_ZERODEV_PROJECTID env: - INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_PROD }} + NODE_ENV: 'production' + + SECRET_JWK_CURRENT_KID: ${{ secrets.SECRET_JWK_CURRENT_KID_PROD }} + SECRET_JWKS: ${{ secrets.SECRET_JWKS_PROD }} + + INTERNAL_DKIM_SELECTOR: ${{ secrets.INTERNAL_DKIM_SELECTOR }} + + SECRET_RELAY_DKIM_PRIVATE_KEY: ${{ secrets.SECRET_RELAY_DKIM_PRIVATE_KEY }} + + INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_PROD }} SECRET_GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GOOGLE_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GITHUB_OAUTH_CLIENT_ID_PROD }} + + INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GITHUB_OAUTH_CLIENT_ID_PROD }} SECRET_GITHUB_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GITHUB_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_TWITTER_OAUTH_CLIENT_ID_PROD }} + + INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_TWITTER_OAUTH_CLIENT_ID_PROD }} SECRET_TWITTER_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_TWITTER_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_PROD }} + + INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_PROD }} SECRET_MICROSOFT_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_MICROSOFT_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_APPLE_OAUTH_CLIENT_ID_PROD }} + + INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_APPLE_OAUTH_CLIENT_ID_PROD }} SECRET_APPLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_APPLE_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_DISCORD_OAUTH_CLIENT_ID_PROD }} + + INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_DISCORD_OAUTH_CLIENT_ID_PROD }} SECRET_DISCORD_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_DISCORD_OAUTH_CLIENT_SECRET_PROD }} + + INTERNAL_CLOUDFLARE_ZONE_ID: ${{ secrets.INTERNAL_CLOUDFLARE_ZONE_ID }} + TOKEN_CLOUDFLARE_API: ${{ secrets.TOKEN_CLOUDFLARE_API }} + SECRET_ZERODEV_PROJECTID: ${{secrets.SECRET_ZERODEV_PROJECTID_PROD }} diff --git a/.github/workflows/release-edges.yaml b/.github/workflows/release-edges.yaml deleted file mode 100644 index cf4339571c..0000000000 --- a/.github/workflows/release-edges.yaml +++ /dev/null @@ -1,59 +0,0 @@ -# .github/workflows/release-edges.yaml ---- -name: Release Edges - -on: - release: - types: [published] - -defaults: - run: - working-directory: ./platform - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install Dependencies - run: yarn install - - # NB: we do *not* drop and recreate the database. If applying - # the SQL fails we'll need to migrate the database manually using: - # $ wrangler d1 migrations - - - name: Deploy edges D1 Database - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: 'platform/edges' - command: d1 migrations apply edges-current --env current - environment: 'current' - - - name: Deploy edges current Worker - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: 'platform/edges' - command: publish --env current - environment: 'current' diff --git a/.github/workflows/release-email.yaml b/.github/workflows/release-email.yaml index bc2c1dcf69..97ce91d823 100644 --- a/.github/workflows/release-email.yaml +++ b/.github/workflows/release-email.yaml @@ -11,6 +11,7 @@ defaults: jobs: deploy: runs-on: ubuntu-latest + environment: prod steps: - uses: actions/checkout@v3 @@ -28,8 +29,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -40,11 +39,12 @@ jobs: - name: Deploy uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: platform/email - command: publish --env current - environment: current + command: publish --config wrangler.current.toml --env current + environment: 'current' secrets: | INTERNAL_DKIM_DOMAIN INTERNAL_DKIM_SELECTOR diff --git a/.github/workflows/release-galaxy.yaml b/.github/workflows/release-galaxy.yaml index 71fdd5a701..c813a2d4c1 100644 --- a/.github/workflows/release-galaxy.yaml +++ b/.github/workflows/release-galaxy.yaml @@ -11,6 +11,7 @@ defaults: jobs: build-publish-test-galaxy-current: runs-on: ubuntu-latest + environment: prod steps: - uses: actions/checkout@v2 @@ -28,8 +29,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -40,8 +39,9 @@ jobs: - name: Deploy to Dev Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'platform/galaxy' - command: publish --env current + command: publish --config wrangler.current.toml --env current environment: 'current' diff --git a/.github/workflows/release-images.yaml b/.github/workflows/release-images.yaml index 0f38e954ea..efd2c5f5ef 100644 --- a/.github/workflows/release-images.yaml +++ b/.github/workflows/release-images.yaml @@ -13,6 +13,7 @@ defaults: jobs: deploy: runs-on: ubuntu-latest + environment: prod steps: - uses: actions/checkout@v3 @@ -30,8 +31,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -39,10 +38,11 @@ jobs: - name: Deploy Oort to Test Worker uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'platform/images' - command: publish --env current + command: publish --config wrangler.current.toml --env current environment: 'current' # This causes secrets to be set as if by: $ wrangler secret put. # Each supplied name must be defined in the env: config stanza. diff --git a/.github/workflows/release-passport.yaml b/.github/workflows/release-passport.yaml index 8576bb74b6..708786f316 100644 --- a/.github/workflows/release-passport.yaml +++ b/.github/workflows/release-passport.yaml @@ -11,6 +11,7 @@ defaults: jobs: build-publish-passport-current: runs-on: ubuntu-latest + environment: prod steps: - uses: actions/checkout@v2 @@ -28,8 +29,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -37,14 +36,16 @@ jobs: - name: Publish uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'apps/passport' + command: publish --config wrangler.current.toml --env current environment: 'current' - command: publish --env current secrets: | SECRET_SESSION_KEY SECRET_SESSION_SALT + SECRET_WEBAUTHN_SIGNING_KEY APIKEY_ALCHEMY_PUBLIC INTERNAL_GOOGLE_OAUTH_CLIENT_ID SECRET_GOOGLE_OAUTH_CLIENT_SECRET @@ -61,16 +62,17 @@ jobs: env: SECRET_SESSION_KEY: ${{ secrets.SECRET_SESSION_KEY_PROD }} SECRET_SESSION_SALT: ${{ secrets.SECRET_SESSION_SALT_PROD }} + SECRET_WEBAUTHN_SIGNING_KEY: ${{ secrets.SECRET_WEBAUTHN_SIGNING_KEY_PROD }} APIKEY_ALCHEMY_PUBLIC: ${{ secrets.APIKEY_ALCHEMY_PUBLIC_MAINNET }} - INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_PROD }} + INTERNAL_GOOGLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GOOGLE_OAUTH_CLIENT_ID_PROD }} SECRET_GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GOOGLE_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_GITHUB_OAUTH_CLIENT_ID_PROD }} + INTERNAL_GITHUB_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_GITHUB_OAUTH_CLIENT_ID_PROD }} SECRET_GITHUB_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_GITHUB_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_TWITTER_OAUTH_CLIENT_ID_PROD }} + INTERNAL_TWITTER_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_TWITTER_OAUTH_CLIENT_ID_PROD }} SECRET_TWITTER_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_TWITTER_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_PROD }} + INTERNAL_MICROSOFT_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_MICROSOFT_OAUTH_CLIENT_ID_PROD }} SECRET_MICROSOFT_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_MICROSOFT_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_APPLE_OAUTH_CLIENT_ID_PROD }} + INTERNAL_APPLE_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_APPLE_OAUTH_CLIENT_ID_PROD }} SECRET_APPLE_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_APPLE_OAUTH_CLIENT_SECRET_PROD }} - INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ secrets.INTERNAL_DISCORD_OAUTH_CLIENT_ID_PROD }} + INTERNAL_DISCORD_OAUTH_CLIENT_ID: ${{ vars.INTERNAL_DISCORD_OAUTH_CLIENT_ID_PROD }} SECRET_DISCORD_OAUTH_CLIENT_SECRET: ${{ secrets.SECRET_DISCORD_OAUTH_CLIENT_SECRET_PROD }} diff --git a/.github/workflows/release-profile.yaml b/.github/workflows/release-profile.yaml index 8e77e6fcc4..020f995f62 100644 --- a/.github/workflows/release-profile.yaml +++ b/.github/workflows/release-profile.yaml @@ -11,6 +11,7 @@ defaults: jobs: build-publish-profile-current: runs-on: ubuntu-latest + environment: prod steps: - uses: actions/checkout@v2 @@ -28,8 +29,6 @@ jobs: node_modules .yarn key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - name: Install Dependencies run: yarn install @@ -37,10 +36,11 @@ jobs: - name: Publish uses: cloudflare/wrangler-action@2.0.0 with: + wranglerVersion: '3.2.0' apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'apps/profile' - command: publish --env current + command: publish --config wrangler.current.toml --env current environment: 'current' secrets: | SECRET_SESSION_KEY @@ -52,7 +52,7 @@ jobs: env: SECRET_SESSION_KEY: ${{ secrets.SECRET_SESSION_KEY_PROD }} SECRET_SESSION_SALT: ${{ secrets.SECRET_SESSION_SALT_PROD }} - PROFILE_CLIENT_ID: ${{ secrets.INTERNAL_PROFILE_OAUTH_CLIENT_ID_CURRENT }} + PROFILE_CLIENT_ID: ${{ vars.INTERNAL_PROFILE_OAUTH_CLIENT_ID_CURRENT }} PROFILE_CLIENT_SECRET: ${{ secrets.SECRET_PROFILE_OAUTH_CLIENT_SECRET_CURRENT }} APIKEY_ALCHEMY_ETH: ${{ secrets.APIKEY_ALCHEMY_GALAXY_MAINNET }} APIKEY_ALCHEMY_POLYGON: ${{ secrets.APIKEY_ALCHEMY_POLYGON_MAINNET }} diff --git a/.github/workflows/release-starbase.yaml b/.github/workflows/release-starbase.yaml deleted file mode 100644 index 1f829d5da3..0000000000 --- a/.github/workflows/release-starbase.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# .github/workflows/release-starbase.yaml ---- -name: Release Starbase - -on: - release: - types: [published] - -defaults: - run: - working-directory: ./platform - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - - - run: nix-build platform.nix - - - name: Cache Dependencies - id: cache-modules - uses: actions/cache@v3 - with: - path: | - node_modules - .yarn - key: ${{ runner.os }}-node_modules-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- - - - name: Install - run: yarn install - - - name: Test - run: yarn workspaces foreach -i -v -t --include starbase run test - - - name: Deploy - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.TOKEN_CLOUDFLARE_API }} - accountId: ${{ secrets.INTERNAL_CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: 'platform/starbase' - command: publish --env current - environment: 'current' - secrets: | - INTERNAL_CLOUDFLARE_ZONE_ID - TOKEN_CLOUDFLARE_API - env: - NODE_ENV: 'development' - INTERNAL_CLOUDFLARE_ZONE_ID: ${{ secrets.INTERNAL_CLOUDFLARE_ZONE_ID }} - TOKEN_CLOUDFLARE_API: ${{ secrets.TOKEN_CLOUDFLARE_API }} diff --git a/.yarn/cache/@alloc-quick-lru-npm-5.2.0-eb83517088-bdc35758b5.zip b/.yarn/cache/@alloc-quick-lru-npm-5.2.0-eb83517088-bdc35758b5.zip new file mode 100644 index 0000000000..683fd04312 Binary files /dev/null and b/.yarn/cache/@alloc-quick-lru-npm-5.2.0-eb83517088-bdc35758b5.zip differ diff --git a/.yarn/cache/@babel-code-frame-npm-7.22.13-2782581d20-22e342c807.zip b/.yarn/cache/@babel-code-frame-npm-7.22.13-2782581d20-22e342c807.zip new file mode 100644 index 0000000000..9ecb85a991 Binary files /dev/null and b/.yarn/cache/@babel-code-frame-npm-7.22.13-2782581d20-22e342c807.zip differ diff --git a/.yarn/cache/@babel-generator-npm-7.23.0-08841c5369-8efe24adad.zip b/.yarn/cache/@babel-generator-npm-7.23.0-08841c5369-8efe24adad.zip new file mode 100644 index 0000000000..159e521827 Binary files /dev/null and b/.yarn/cache/@babel-generator-npm-7.23.0-08841c5369-8efe24adad.zip differ diff --git a/.yarn/cache/@babel-helper-environment-visitor-npm-7.22.20-260909e014-d80ee98ff6.zip b/.yarn/cache/@babel-helper-environment-visitor-npm-7.22.20-260909e014-d80ee98ff6.zip new file mode 100644 index 0000000000..3d5f74720b Binary files /dev/null and b/.yarn/cache/@babel-helper-environment-visitor-npm-7.22.20-260909e014-d80ee98ff6.zip differ diff --git a/.yarn/cache/@babel-helper-function-name-npm-7.23.0-ce38271242-e44542257b.zip b/.yarn/cache/@babel-helper-function-name-npm-7.23.0-ce38271242-e44542257b.zip new file mode 100644 index 0000000000..2458055dc6 Binary files /dev/null and b/.yarn/cache/@babel-helper-function-name-npm-7.23.0-ce38271242-e44542257b.zip differ diff --git a/.yarn/cache/@babel-helper-hoist-variables-npm-7.22.5-6db3192347-394ca191b4.zip b/.yarn/cache/@babel-helper-hoist-variables-npm-7.22.5-6db3192347-394ca191b4.zip new file mode 100644 index 0000000000..cf47266396 Binary files /dev/null and b/.yarn/cache/@babel-helper-hoist-variables-npm-7.22.5-6db3192347-394ca191b4.zip differ diff --git a/.yarn/cache/@babel-helper-split-export-declaration-npm-7.22.6-e723505aef-e141cace58.zip b/.yarn/cache/@babel-helper-split-export-declaration-npm-7.22.6-e723505aef-e141cace58.zip new file mode 100644 index 0000000000..c2ebd88f02 Binary files /dev/null and b/.yarn/cache/@babel-helper-split-export-declaration-npm-7.22.6-e723505aef-e141cace58.zip differ diff --git a/.yarn/cache/@babel-helper-string-parser-npm-7.22.5-448ff0e489-836851ca5e.zip b/.yarn/cache/@babel-helper-string-parser-npm-7.22.5-448ff0e489-836851ca5e.zip new file mode 100644 index 0000000000..7040849c6d Binary files /dev/null and b/.yarn/cache/@babel-helper-string-parser-npm-7.22.5-448ff0e489-836851ca5e.zip differ diff --git a/.yarn/cache/@babel-helper-validator-identifier-npm-7.22.20-18305bb306-136412784d.zip b/.yarn/cache/@babel-helper-validator-identifier-npm-7.22.20-18305bb306-136412784d.zip new file mode 100644 index 0000000000..53d7fc0339 Binary files /dev/null and b/.yarn/cache/@babel-helper-validator-identifier-npm-7.22.20-18305bb306-136412784d.zip differ diff --git a/.yarn/cache/@babel-highlight-npm-7.22.20-5de7aba88d-84bd034dca.zip b/.yarn/cache/@babel-highlight-npm-7.22.20-5de7aba88d-84bd034dca.zip new file mode 100644 index 0000000000..7c810e8b66 Binary files /dev/null and b/.yarn/cache/@babel-highlight-npm-7.22.20-5de7aba88d-84bd034dca.zip differ diff --git a/.yarn/cache/@babel-parser-npm-7.23.0-8a7b151672-453fdf8b9e.zip b/.yarn/cache/@babel-parser-npm-7.23.0-8a7b151672-453fdf8b9e.zip new file mode 100644 index 0000000000..d7543e4a61 Binary files /dev/null and b/.yarn/cache/@babel-parser-npm-7.23.0-8a7b151672-453fdf8b9e.zip differ diff --git a/.yarn/cache/@babel-template-npm-7.22.15-0b464facb4-1f3e7dcd6c.zip b/.yarn/cache/@babel-template-npm-7.22.15-0b464facb4-1f3e7dcd6c.zip new file mode 100644 index 0000000000..499a48f473 Binary files /dev/null and b/.yarn/cache/@babel-template-npm-7.22.15-0b464facb4-1f3e7dcd6c.zip differ diff --git a/.yarn/cache/@babel-traverse-npm-7.20.13-1eb3a4b7ac-30ca6e0bd1.zip b/.yarn/cache/@babel-traverse-npm-7.20.13-1eb3a4b7ac-30ca6e0bd1.zip deleted file mode 100644 index c93ad192c8..0000000000 Binary files a/.yarn/cache/@babel-traverse-npm-7.20.13-1eb3a4b7ac-30ca6e0bd1.zip and /dev/null differ diff --git a/.yarn/cache/@babel-traverse-npm-7.20.5-dc0e9498d7-c7fed46861.zip b/.yarn/cache/@babel-traverse-npm-7.20.5-dc0e9498d7-c7fed46861.zip deleted file mode 100644 index ad776ee927..0000000000 Binary files a/.yarn/cache/@babel-traverse-npm-7.20.5-dc0e9498d7-c7fed46861.zip and /dev/null differ diff --git a/.yarn/cache/@babel-traverse-npm-7.23.2-4758feee42-26a1eea0dd.zip b/.yarn/cache/@babel-traverse-npm-7.23.2-4758feee42-26a1eea0dd.zip new file mode 100644 index 0000000000..07fe656495 Binary files /dev/null and b/.yarn/cache/@babel-traverse-npm-7.23.2-4758feee42-26a1eea0dd.zip differ diff --git a/.yarn/cache/@babel-types-npm-7.23.0-332fd21daf-215fe04bd7.zip b/.yarn/cache/@babel-types-npm-7.23.0-332fd21daf-215fe04bd7.zip new file mode 100644 index 0000000000..318a0bc25d Binary files /dev/null and b/.yarn/cache/@babel-types-npm-7.23.0-332fd21daf-215fe04bd7.zip differ diff --git a/.yarn/cache/@cbor-extract-cbor-extract-darwin-arm64-npm-2.1.1-7f6025512f-8.zip b/.yarn/cache/@cbor-extract-cbor-extract-darwin-arm64-npm-2.1.1-7f6025512f-8.zip new file mode 100644 index 0000000000..bc292a3ddd Binary files /dev/null and b/.yarn/cache/@cbor-extract-cbor-extract-darwin-arm64-npm-2.1.1-7f6025512f-8.zip differ diff --git a/.yarn/cache/@cbor-extract-cbor-extract-linux-x64-npm-2.1.1-4471164400-8.zip b/.yarn/cache/@cbor-extract-cbor-extract-linux-x64-npm-2.1.1-4471164400-8.zip new file mode 100644 index 0000000000..e5950bfd4e Binary files /dev/null and b/.yarn/cache/@cbor-extract-cbor-extract-linux-x64-npm-2.1.1-4471164400-8.zip differ diff --git a/.yarn/cache/@chainsafe-as-sha256-npm-0.4.1-405a4e06e4-6d86975e64.zip b/.yarn/cache/@chainsafe-as-sha256-npm-0.4.1-405a4e06e4-6d86975e64.zip new file mode 100644 index 0000000000..2e2a29e45c Binary files /dev/null and b/.yarn/cache/@chainsafe-as-sha256-npm-0.4.1-405a4e06e4-6d86975e64.zip differ diff --git a/.yarn/cache/@chainsafe-persistent-merkle-tree-npm-0.6.1-02b87ab227-74614b8d40.zip b/.yarn/cache/@chainsafe-persistent-merkle-tree-npm-0.6.1-02b87ab227-74614b8d40.zip new file mode 100644 index 0000000000..984e62684d Binary files /dev/null and b/.yarn/cache/@chainsafe-persistent-merkle-tree-npm-0.6.1-02b87ab227-74614b8d40.zip differ diff --git a/.yarn/cache/@chainsafe-ssz-npm-0.11.1-191ef7e38f-e3c2928f9a.zip b/.yarn/cache/@chainsafe-ssz-npm-0.11.1-191ef7e38f-e3c2928f9a.zip new file mode 100644 index 0000000000..457bcb575c Binary files /dev/null and b/.yarn/cache/@chainsafe-ssz-npm-0.11.1-191ef7e38f-e3c2928f9a.zip differ diff --git a/.yarn/cache/@cloudflare-workerd-darwin-arm64-npm-1.20230710.0-becbe58ec4-8.zip b/.yarn/cache/@cloudflare-workerd-darwin-arm64-npm-1.20230710.0-becbe58ec4-8.zip new file mode 100644 index 0000000000..b2c6d9494f Binary files /dev/null and b/.yarn/cache/@cloudflare-workerd-darwin-arm64-npm-1.20230710.0-becbe58ec4-8.zip differ diff --git a/.yarn/cache/@cloudflare-workerd-linux-64-npm-1.20230710.0-e2a7fa07a3-8.zip b/.yarn/cache/@cloudflare-workerd-linux-64-npm-1.20230710.0-e2a7fa07a3-8.zip new file mode 100644 index 0000000000..534ff3852b Binary files /dev/null and b/.yarn/cache/@cloudflare-workerd-linux-64-npm-1.20230710.0-e2a7fa07a3-8.zip differ diff --git a/.yarn/cache/@cloudflare-workers-types-npm-4.20230518.0-65e8164967-69c861437f.zip b/.yarn/cache/@cloudflare-workers-types-npm-4.20230518.0-65e8164967-69c861437f.zip new file mode 100644 index 0000000000..c7e3366d5a Binary files /dev/null and b/.yarn/cache/@cloudflare-workers-types-npm-4.20230518.0-65e8164967-69c861437f.zip differ diff --git a/.yarn/cache/@cloudflare-workers-types-npm-4.20230628.0-a0b534e030-cee386fe7d.zip b/.yarn/cache/@cloudflare-workers-types-npm-4.20230628.0-a0b534e030-cee386fe7d.zip new file mode 100644 index 0000000000..97697eaa42 Binary files /dev/null and b/.yarn/cache/@cloudflare-workers-types-npm-4.20230628.0-a0b534e030-cee386fe7d.zip differ diff --git a/.yarn/cache/@dnsquery-dns-packet-npm-6.1.1-f41a74653b-f9aaabd662.zip b/.yarn/cache/@dnsquery-dns-packet-npm-6.1.1-f41a74653b-f9aaabd662.zip new file mode 100644 index 0000000000..ab83723644 Binary files /dev/null and b/.yarn/cache/@dnsquery-dns-packet-npm-6.1.1-f41a74653b-f9aaabd662.zip differ diff --git a/.yarn/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip b/.yarn/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip new file mode 100644 index 0000000000..4e48357020 Binary files /dev/null and b/.yarn/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip differ diff --git a/.yarn/cache/@eslint-community-regexpp-npm-4.5.1-bf72922237-6d901166d6.zip b/.yarn/cache/@eslint-community-regexpp-npm-4.5.1-bf72922237-6d901166d6.zip new file mode 100644 index 0000000000..0f8176b616 Binary files /dev/null and b/.yarn/cache/@eslint-community-regexpp-npm-4.5.1-bf72922237-6d901166d6.zip differ diff --git a/.yarn/cache/@eslint-eslintrc-npm-2.1.0-352060d453-d5ed0adbe2.zip b/.yarn/cache/@eslint-eslintrc-npm-2.1.0-352060d453-d5ed0adbe2.zip new file mode 100644 index 0000000000..3b50d5207d Binary files /dev/null and b/.yarn/cache/@eslint-eslintrc-npm-2.1.0-352060d453-d5ed0adbe2.zip differ diff --git a/.yarn/cache/@eslint-js-npm-8.43.0-60a60994b7-580487a09c.zip b/.yarn/cache/@eslint-js-npm-8.43.0-60a60994b7-580487a09c.zip new file mode 100644 index 0000000000..506e1223d0 Binary files /dev/null and b/.yarn/cache/@eslint-js-npm-8.43.0-60a60994b7-580487a09c.zip differ diff --git a/.yarn/cache/@ethereumjs-rlp-npm-4.0.1-9a0db6680f-30db19c78f.zip b/.yarn/cache/@ethereumjs-rlp-npm-4.0.1-9a0db6680f-30db19c78f.zip new file mode 100644 index 0000000000..4920430ab1 Binary files /dev/null and b/.yarn/cache/@ethereumjs-rlp-npm-4.0.1-9a0db6680f-30db19c78f.zip differ diff --git a/.yarn/cache/@ethereumjs-util-npm-8.0.6-70105b3afb-034e06cdde.zip b/.yarn/cache/@ethereumjs-util-npm-8.0.6-70105b3afb-034e06cdde.zip new file mode 100644 index 0000000000..8782f50ecf Binary files /dev/null and b/.yarn/cache/@ethereumjs-util-npm-8.0.6-70105b3afb-034e06cdde.zip differ diff --git a/.yarn/cache/@fastify-busboy-npm-2.0.0-c6baf48382-41879937ce.zip b/.yarn/cache/@fastify-busboy-npm-2.0.0-c6baf48382-41879937ce.zip new file mode 100644 index 0000000000..82636906e6 Binary files /dev/null and b/.yarn/cache/@fastify-busboy-npm-2.0.0-c6baf48382-41879937ce.zip differ diff --git a/.yarn/cache/@hexagon-base64-npm-1.1.27-df6f264962-617abb33a2.zip b/.yarn/cache/@hexagon-base64-npm-1.1.27-df6f264962-617abb33a2.zip new file mode 100644 index 0000000000..7341f04162 Binary files /dev/null and b/.yarn/cache/@hexagon-base64-npm-1.1.27-df6f264962-617abb33a2.zip differ diff --git a/.yarn/cache/@humanwhocodes-config-array-npm-0.11.10-7b63df9e7f-1b1302e240.zip b/.yarn/cache/@humanwhocodes-config-array-npm-0.11.10-7b63df9e7f-1b1302e240.zip new file mode 100644 index 0000000000..3970ef9bcb Binary files /dev/null and b/.yarn/cache/@humanwhocodes-config-array-npm-0.11.10-7b63df9e7f-1b1302e240.zip differ diff --git a/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.1-aa2de3f210-f5b441fe79.zip b/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.1-aa2de3f210-f5b441fe79.zip new file mode 100644 index 0000000000..0cb5724371 Binary files /dev/null and b/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.1-aa2de3f210-f5b441fe79.zip differ diff --git a/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.15-a055fb62cf-b881c7e503.zip b/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.15-a055fb62cf-b881c7e503.zip new file mode 100644 index 0000000000..402f52b7ae Binary files /dev/null and b/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.15-a055fb62cf-b881c7e503.zip differ diff --git a/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.20-d90f282910-cd1a735313.zip b/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.20-d90f282910-cd1a735313.zip new file mode 100644 index 0000000000..d54c0b7cb0 Binary files /dev/null and b/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.20-d90f282910-cd1a735313.zip differ diff --git a/.yarn/cache/@metamask-eth-sig-util-npm-5.0.2-7a51a167d8-1fbf1a0f5e.zip b/.yarn/cache/@metamask-eth-sig-util-npm-5.0.2-7a51a167d8-1fbf1a0f5e.zip new file mode 100644 index 0000000000..22bf5370a1 Binary files /dev/null and b/.yarn/cache/@metamask-eth-sig-util-npm-5.0.2-7a51a167d8-1fbf1a0f5e.zip differ diff --git a/.yarn/cache/@miniflare-cache-npm-2.13.0-7f6d9e5681-91d9d508fb.zip b/.yarn/cache/@miniflare-cache-npm-2.13.0-7f6d9e5681-91d9d508fb.zip deleted file mode 100644 index b0e4b717bf..0000000000 Binary files a/.yarn/cache/@miniflare-cache-npm-2.13.0-7f6d9e5681-91d9d508fb.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-cli-parser-npm-2.13.0-113133e5ba-23c9158a21.zip b/.yarn/cache/@miniflare-cli-parser-npm-2.13.0-113133e5ba-23c9158a21.zip deleted file mode 100644 index c5673aae57..0000000000 Binary files a/.yarn/cache/@miniflare-cli-parser-npm-2.13.0-113133e5ba-23c9158a21.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-core-npm-2.13.0-34fb6a87d4-ecda8f922c.zip b/.yarn/cache/@miniflare-core-npm-2.13.0-34fb6a87d4-ecda8f922c.zip deleted file mode 100644 index adc72e9e14..0000000000 Binary files a/.yarn/cache/@miniflare-core-npm-2.13.0-34fb6a87d4-ecda8f922c.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-d1-npm-2.13.0-a7ca2de65f-422fa599d0.zip b/.yarn/cache/@miniflare-d1-npm-2.13.0-a7ca2de65f-422fa599d0.zip deleted file mode 100644 index 40719fa945..0000000000 Binary files a/.yarn/cache/@miniflare-d1-npm-2.13.0-a7ca2de65f-422fa599d0.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-durable-objects-npm-2.13.0-fef8737582-06030fd7cd.zip b/.yarn/cache/@miniflare-durable-objects-npm-2.13.0-fef8737582-06030fd7cd.zip deleted file mode 100644 index d3a3da7189..0000000000 Binary files a/.yarn/cache/@miniflare-durable-objects-npm-2.13.0-fef8737582-06030fd7cd.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-html-rewriter-npm-2.13.0-7438e94660-4dcdad8900.zip b/.yarn/cache/@miniflare-html-rewriter-npm-2.13.0-7438e94660-4dcdad8900.zip deleted file mode 100644 index adbf691199..0000000000 Binary files a/.yarn/cache/@miniflare-html-rewriter-npm-2.13.0-7438e94660-4dcdad8900.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-http-server-npm-2.13.0-a0d651a8e6-5cfa0619e7.zip b/.yarn/cache/@miniflare-http-server-npm-2.13.0-a0d651a8e6-5cfa0619e7.zip deleted file mode 100644 index a83f276f93..0000000000 Binary files a/.yarn/cache/@miniflare-http-server-npm-2.13.0-a0d651a8e6-5cfa0619e7.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-kv-npm-2.13.0-db854858ee-833927a549.zip b/.yarn/cache/@miniflare-kv-npm-2.13.0-db854858ee-833927a549.zip deleted file mode 100644 index 76610e6079..0000000000 Binary files a/.yarn/cache/@miniflare-kv-npm-2.13.0-db854858ee-833927a549.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-queues-npm-2.13.0-70399a9e44-efcf77ac3d.zip b/.yarn/cache/@miniflare-queues-npm-2.13.0-70399a9e44-efcf77ac3d.zip deleted file mode 100644 index 92716f5e11..0000000000 Binary files a/.yarn/cache/@miniflare-queues-npm-2.13.0-70399a9e44-efcf77ac3d.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-r2-npm-2.13.0-a9da126061-de52cd7982.zip b/.yarn/cache/@miniflare-r2-npm-2.13.0-a9da126061-de52cd7982.zip deleted file mode 100644 index 9ad129d320..0000000000 Binary files a/.yarn/cache/@miniflare-r2-npm-2.13.0-a9da126061-de52cd7982.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-runner-vm-npm-2.13.0-b461f4a835-e569061ab9.zip b/.yarn/cache/@miniflare-runner-vm-npm-2.13.0-b461f4a835-e569061ab9.zip deleted file mode 100644 index 7b0a12609f..0000000000 Binary files a/.yarn/cache/@miniflare-runner-vm-npm-2.13.0-b461f4a835-e569061ab9.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-scheduler-npm-2.13.0-ada7527018-f646e61728.zip b/.yarn/cache/@miniflare-scheduler-npm-2.13.0-ada7527018-f646e61728.zip deleted file mode 100644 index 37c72c6290..0000000000 Binary files a/.yarn/cache/@miniflare-scheduler-npm-2.13.0-ada7527018-f646e61728.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-shared-npm-2.13.0-a6a7eae929-beb92cb87d.zip b/.yarn/cache/@miniflare-shared-npm-2.13.0-a6a7eae929-beb92cb87d.zip deleted file mode 100644 index fa56d85226..0000000000 Binary files a/.yarn/cache/@miniflare-shared-npm-2.13.0-a6a7eae929-beb92cb87d.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-sites-npm-2.13.0-b9bba8b5c2-327eea0f47.zip b/.yarn/cache/@miniflare-sites-npm-2.13.0-b9bba8b5c2-327eea0f47.zip deleted file mode 100644 index 50e98270c6..0000000000 Binary files a/.yarn/cache/@miniflare-sites-npm-2.13.0-b9bba8b5c2-327eea0f47.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-storage-file-npm-2.13.0-1c468fad95-0245b683b8.zip b/.yarn/cache/@miniflare-storage-file-npm-2.13.0-1c468fad95-0245b683b8.zip deleted file mode 100644 index bf34289426..0000000000 Binary files a/.yarn/cache/@miniflare-storage-file-npm-2.13.0-1c468fad95-0245b683b8.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-storage-memory-npm-2.13.0-a6f75a7ebf-974d1d15c9.zip b/.yarn/cache/@miniflare-storage-memory-npm-2.13.0-a6f75a7ebf-974d1d15c9.zip deleted file mode 100644 index bfe874523e..0000000000 Binary files a/.yarn/cache/@miniflare-storage-memory-npm-2.13.0-a6f75a7ebf-974d1d15c9.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-watcher-npm-2.13.0-8345e92ca8-8fa73acf63.zip b/.yarn/cache/@miniflare-watcher-npm-2.13.0-8345e92ca8-8fa73acf63.zip deleted file mode 100644 index a053b0418e..0000000000 Binary files a/.yarn/cache/@miniflare-watcher-npm-2.13.0-8345e92ca8-8fa73acf63.zip and /dev/null differ diff --git a/.yarn/cache/@miniflare-web-sockets-npm-2.13.0-20920eec6a-1b9eb8364d.zip b/.yarn/cache/@miniflare-web-sockets-npm-2.13.0-20920eec6a-1b9eb8364d.zip deleted file mode 100644 index d0b5a24d80..0000000000 Binary files a/.yarn/cache/@miniflare-web-sockets-npm-2.13.0-20920eec6a-1b9eb8364d.zip and /dev/null differ diff --git a/.yarn/cache/@motionone-dom-npm-10.15.5-4add8e8195-2453fe3df6.zip b/.yarn/cache/@motionone-dom-npm-10.16.2-69b667c47c-c75a7de62c.zip similarity index 88% rename from .yarn/cache/@motionone-dom-npm-10.15.5-4add8e8195-2453fe3df6.zip rename to .yarn/cache/@motionone-dom-npm-10.16.2-69b667c47c-c75a7de62c.zip index 871d8852ee..f99c4dce9a 100644 Binary files a/.yarn/cache/@motionone-dom-npm-10.15.5-4add8e8195-2453fe3df6.zip and b/.yarn/cache/@motionone-dom-npm-10.16.2-69b667c47c-c75a7de62c.zip differ diff --git a/.yarn/cache/@motionone-svelte-npm-10.15.5-9547ce730b-17c7cf75f9.zip b/.yarn/cache/@motionone-svelte-npm-10.16.2-134c26aed3-066570d991.zip similarity index 98% rename from .yarn/cache/@motionone-svelte-npm-10.15.5-9547ce730b-17c7cf75f9.zip rename to .yarn/cache/@motionone-svelte-npm-10.16.2-134c26aed3-066570d991.zip index 1455e969cb..027deb4d26 100644 Binary files a/.yarn/cache/@motionone-svelte-npm-10.15.5-9547ce730b-17c7cf75f9.zip and b/.yarn/cache/@motionone-svelte-npm-10.16.2-134c26aed3-066570d991.zip differ diff --git a/.yarn/cache/@motionone-vue-npm-10.15.5-fe30287c41-c87c019edf.zip b/.yarn/cache/@motionone-vue-npm-10.16.2-2cf042d8fc-37732f679b.zip similarity index 97% rename from .yarn/cache/@motionone-vue-npm-10.15.5-fe30287c41-c87c019edf.zip rename to .yarn/cache/@motionone-vue-npm-10.16.2-2cf042d8fc-37732f679b.zip index bcc05744cc..1088d5c66e 100644 Binary files a/.yarn/cache/@motionone-vue-npm-10.15.5-fe30287c41-c87c019edf.zip and b/.yarn/cache/@motionone-vue-npm-10.16.2-2cf042d8fc-37732f679b.zip differ diff --git a/.yarn/cache/@noble-hashes-npm-1.2.0-71d3c56c21-8ca080ce55.zip b/.yarn/cache/@noble-hashes-npm-1.2.0-71d3c56c21-8ca080ce55.zip new file mode 100644 index 0000000000..7f4c3aece7 Binary files /dev/null and b/.yarn/cache/@noble-hashes-npm-1.2.0-71d3c56c21-8ca080ce55.zip differ diff --git a/.yarn/cache/@noble-hashes-npm-1.3.1-64a92c8445-7fdefc0f7a.zip b/.yarn/cache/@noble-hashes-npm-1.3.1-64a92c8445-7fdefc0f7a.zip new file mode 100644 index 0000000000..cb4e631117 Binary files /dev/null and b/.yarn/cache/@noble-hashes-npm-1.3.1-64a92c8445-7fdefc0f7a.zip differ diff --git a/.yarn/cache/@noble-secp256k1-npm-1.7.1-95825e0b99-d2301f1f76.zip b/.yarn/cache/@noble-secp256k1-npm-1.7.1-95825e0b99-d2301f1f76.zip new file mode 100644 index 0000000000..4355da4070 Binary files /dev/null and b/.yarn/cache/@noble-secp256k1-npm-1.7.1-95825e0b99-d2301f1f76.zip differ diff --git a/.yarn/cache/@openzeppelin-contracts-npm-4.8.3-725781ba1b-aea130d38d.zip b/.yarn/cache/@openzeppelin-contracts-npm-4.8.3-725781ba1b-aea130d38d.zip deleted file mode 100644 index dde6f5ab9e..0000000000 Binary files a/.yarn/cache/@openzeppelin-contracts-npm-4.8.3-725781ba1b-aea130d38d.zip and /dev/null differ diff --git a/.yarn/cache/@openzeppelin-contracts-npm-4.9.3-5ad99d59ab-4932063e73.zip b/.yarn/cache/@openzeppelin-contracts-npm-4.9.3-5ad99d59ab-4932063e73.zip new file mode 100644 index 0000000000..d898d01c9a Binary files /dev/null and b/.yarn/cache/@openzeppelin-contracts-npm-4.9.3-5ad99d59ab-4932063e73.zip differ diff --git a/.yarn/cache/@peculiar-asn1-schema-npm-2.3.6-1020f463b2-fc09387c6e.zip b/.yarn/cache/@peculiar-asn1-schema-npm-2.3.6-1020f463b2-fc09387c6e.zip new file mode 100644 index 0000000000..2a3410ac2a Binary files /dev/null and b/.yarn/cache/@peculiar-asn1-schema-npm-2.3.6-1020f463b2-fc09387c6e.zip differ diff --git a/.yarn/cache/@peculiar-webcrypto-npm-1.4.3-3fee54da0a-5604c02b7e.zip b/.yarn/cache/@peculiar-webcrypto-npm-1.4.3-3fee54da0a-5604c02b7e.zip new file mode 100644 index 0000000000..803313be8b Binary files /dev/null and b/.yarn/cache/@peculiar-webcrypto-npm-1.4.3-3fee54da0a-5604c02b7e.zip differ diff --git a/.yarn/cache/@playwright-test-npm-1.32.3-84d2aa7fa4-f248e5851d.zip b/.yarn/cache/@playwright-test-npm-1.32.3-84d2aa7fa4-f248e5851d.zip deleted file mode 100644 index b84fd9d121..0000000000 Binary files a/.yarn/cache/@playwright-test-npm-1.32.3-84d2aa7fa4-f248e5851d.zip and /dev/null differ diff --git a/.yarn/cache/@playwright-test-npm-1.35.1-3073e07fa7-3509d2f2c7.zip b/.yarn/cache/@playwright-test-npm-1.35.1-3073e07fa7-3509d2f2c7.zip new file mode 100644 index 0000000000..4c6206ed0e Binary files /dev/null and b/.yarn/cache/@playwright-test-npm-1.35.1-3073e07fa7-3509d2f2c7.zip differ diff --git a/.yarn/cache/@scure-bip32-npm-1.1.5-e68f3ce3e6-b08494ab0d.zip b/.yarn/cache/@scure-bip32-npm-1.1.5-e68f3ce3e6-b08494ab0d.zip new file mode 100644 index 0000000000..8f98cd6303 Binary files /dev/null and b/.yarn/cache/@scure-bip32-npm-1.1.5-e68f3ce3e6-b08494ab0d.zip differ diff --git a/.yarn/cache/@scure-bip39-npm-1.1.1-86436221cb-fbb594c506.zip b/.yarn/cache/@scure-bip39-npm-1.1.1-86436221cb-fbb594c506.zip new file mode 100644 index 0000000000..78233564d7 Binary files /dev/null and b/.yarn/cache/@scure-bip39-npm-1.1.1-86436221cb-fbb594c506.zip differ diff --git a/.yarn/cache/@stripe-stripe-js-npm-1.54.1-5949142f7a-eb54054ede.zip b/.yarn/cache/@stripe-stripe-js-npm-1.54.1-5949142f7a-eb54054ede.zip new file mode 100644 index 0000000000..97dfd08840 Binary files /dev/null and b/.yarn/cache/@stripe-stripe-js-npm-1.54.1-5949142f7a-eb54054ede.zip differ diff --git a/.yarn/cache/@tanstack-query-core-npm-4.29.7-f55047b190-f28441a1fc.zip b/.yarn/cache/@tanstack-query-core-npm-4.29.11-9d24d63eb1-2a17223f34.zip similarity index 57% rename from .yarn/cache/@tanstack-query-core-npm-4.29.7-f55047b190-f28441a1fc.zip rename to .yarn/cache/@tanstack-query-core-npm-4.29.11-9d24d63eb1-2a17223f34.zip index ccf143a008..fb26ed6387 100644 Binary files a/.yarn/cache/@tanstack-query-core-npm-4.29.7-f55047b190-f28441a1fc.zip and b/.yarn/cache/@tanstack-query-core-npm-4.29.11-9d24d63eb1-2a17223f34.zip differ diff --git a/.yarn/cache/@tanstack-query-persist-client-core-npm-4.29.7-6625cf62e7-d9ca2ad0fc.zip b/.yarn/cache/@tanstack-query-persist-client-core-npm-4.29.11-36ce4a2dec-b1ea4d56aa.zip similarity index 98% rename from .yarn/cache/@tanstack-query-persist-client-core-npm-4.29.7-6625cf62e7-d9ca2ad0fc.zip rename to .yarn/cache/@tanstack-query-persist-client-core-npm-4.29.11-36ce4a2dec-b1ea4d56aa.zip index 43addb030c..2b79c38cbc 100644 Binary files a/.yarn/cache/@tanstack-query-persist-client-core-npm-4.29.7-6625cf62e7-d9ca2ad0fc.zip and b/.yarn/cache/@tanstack-query-persist-client-core-npm-4.29.11-36ce4a2dec-b1ea4d56aa.zip differ diff --git a/.yarn/cache/@tanstack-query-sync-storage-persister-npm-4.29.7-0c07e03ddb-135d50e4af.zip b/.yarn/cache/@tanstack-query-sync-storage-persister-npm-4.29.11-17a8829126-532a001ce1.zip similarity index 95% rename from .yarn/cache/@tanstack-query-sync-storage-persister-npm-4.29.7-0c07e03ddb-135d50e4af.zip rename to .yarn/cache/@tanstack-query-sync-storage-persister-npm-4.29.11-17a8829126-532a001ce1.zip index 49f796a838..26ecceec8e 100644 Binary files a/.yarn/cache/@tanstack-query-sync-storage-persister-npm-4.29.7-0c07e03ddb-135d50e4af.zip and b/.yarn/cache/@tanstack-query-sync-storage-persister-npm-4.29.11-17a8829126-532a001ce1.zip differ diff --git a/.yarn/cache/@tanstack-react-query-npm-4.29.12-5b8b58ce34-aea231af64.zip b/.yarn/cache/@tanstack-react-query-npm-4.29.12-5b8b58ce34-aea231af64.zip new file mode 100644 index 0000000000..bf4424b5c6 Binary files /dev/null and b/.yarn/cache/@tanstack-react-query-npm-4.29.12-5b8b58ce34-aea231af64.zip differ diff --git a/.yarn/cache/@tanstack-react-query-npm-4.29.7-915f204251-9db2fb78e1.zip b/.yarn/cache/@tanstack-react-query-npm-4.29.7-915f204251-9db2fb78e1.zip deleted file mode 100644 index 0b93badc5e..0000000000 Binary files a/.yarn/cache/@tanstack-react-query-npm-4.29.7-915f204251-9db2fb78e1.zip and /dev/null differ diff --git a/.yarn/cache/@tanstack-react-query-persist-client-npm-4.29.7-9a61487fa1-6e005cd279.zip b/.yarn/cache/@tanstack-react-query-persist-client-npm-4.29.12-8f05ae9371-3d7cf57ce2.zip similarity index 72% rename from .yarn/cache/@tanstack-react-query-persist-client-npm-4.29.7-9a61487fa1-6e005cd279.zip rename to .yarn/cache/@tanstack-react-query-persist-client-npm-4.29.12-8f05ae9371-3d7cf57ce2.zip index 028f36da93..9a20fe4dc4 100644 Binary files a/.yarn/cache/@tanstack-react-query-persist-client-npm-4.29.7-9a61487fa1-6e005cd279.zip and b/.yarn/cache/@tanstack-react-query-persist-client-npm-4.29.12-8f05ae9371-3d7cf57ce2.zip differ diff --git a/.yarn/cache/@typeform-embed-npm-2.14.0-91a82e0b20-903fa40a83.zip b/.yarn/cache/@typeform-embed-npm-2.14.0-91a82e0b20-903fa40a83.zip new file mode 100644 index 0000000000..1334516552 Binary files /dev/null and b/.yarn/cache/@typeform-embed-npm-2.14.0-91a82e0b20-903fa40a83.zip differ diff --git a/.yarn/cache/@typeform-embed-react-npm-2.27.0-684fec21c3-d6077a1339.zip b/.yarn/cache/@typeform-embed-react-npm-2.27.0-684fec21c3-d6077a1339.zip new file mode 100644 index 0000000000..cefd33bbf9 Binary files /dev/null and b/.yarn/cache/@typeform-embed-react-npm-2.27.0-684fec21c3-d6077a1339.zip differ diff --git a/.yarn/cache/@types-better-sqlite3-npm-7.6.3-ce23cfd6ed-37ffd2507b.zip b/.yarn/cache/@types-better-sqlite3-npm-7.6.3-ce23cfd6ed-37ffd2507b.zip deleted file mode 100644 index 2baaf244b4..0000000000 Binary files a/.yarn/cache/@types-better-sqlite3-npm-7.6.3-ce23cfd6ed-37ffd2507b.zip and /dev/null differ diff --git a/.yarn/cache/@types-node-npm-20.3.1-86012346c0-63a393ab6d.zip b/.yarn/cache/@types-node-npm-20.3.1-86012346c0-63a393ab6d.zip new file mode 100644 index 0000000000..6c167aa113 Binary files /dev/null and b/.yarn/cache/@types-node-npm-20.3.1-86012346c0-63a393ab6d.zip differ diff --git a/.yarn/cache/@types-stack-trace-npm-0.0.29-1a1300190b-2dcfdf8f10.zip b/.yarn/cache/@types-stack-trace-npm-0.0.29-1a1300190b-2dcfdf8f10.zip deleted file mode 100644 index 533ec17a5c..0000000000 Binary files a/.yarn/cache/@types-stack-trace-npm-0.0.29-1a1300190b-2dcfdf8f10.zip and /dev/null differ diff --git a/.yarn/cache/@typescript-eslint-eslint-plugin-npm-5.59.11-2b9cfe03cd-ff03eaa65a.zip b/.yarn/cache/@typescript-eslint-eslint-plugin-npm-5.59.11-2b9cfe03cd-ff03eaa65a.zip new file mode 100644 index 0000000000..3055843798 Binary files /dev/null and b/.yarn/cache/@typescript-eslint-eslint-plugin-npm-5.59.11-2b9cfe03cd-ff03eaa65a.zip differ diff --git a/.yarn/cache/@typescript-eslint-parser-npm-5.59.11-645894e08d-75eb6e6057.zip b/.yarn/cache/@typescript-eslint-parser-npm-5.59.11-645894e08d-75eb6e6057.zip new file mode 100644 index 0000000000..64fc321f66 Binary files /dev/null and b/.yarn/cache/@typescript-eslint-parser-npm-5.59.11-645894e08d-75eb6e6057.zip differ diff --git a/.yarn/cache/@typescript-eslint-scope-manager-npm-5.59.11-5d2465827e-f5c4e6d26d.zip b/.yarn/cache/@typescript-eslint-scope-manager-npm-5.59.11-5d2465827e-f5c4e6d26d.zip new file mode 100644 index 0000000000..a969bdd808 Binary files /dev/null and b/.yarn/cache/@typescript-eslint-scope-manager-npm-5.59.11-5d2465827e-f5c4e6d26d.zip differ diff --git a/.yarn/cache/@typescript-eslint-type-utils-npm-5.59.11-b04b5ea015-3570ba21af.zip b/.yarn/cache/@typescript-eslint-type-utils-npm-5.59.11-b04b5ea015-3570ba21af.zip new file mode 100644 index 0000000000..ed73d2dde3 Binary files /dev/null and b/.yarn/cache/@typescript-eslint-type-utils-npm-5.59.11-b04b5ea015-3570ba21af.zip differ diff --git a/.yarn/cache/@typescript-eslint-types-npm-5.59.11-fec3c5ff28-4bb667571a.zip b/.yarn/cache/@typescript-eslint-types-npm-5.59.11-fec3c5ff28-4bb667571a.zip new file mode 100644 index 0000000000..5742f971fc Binary files /dev/null and b/.yarn/cache/@typescript-eslint-types-npm-5.59.11-fec3c5ff28-4bb667571a.zip differ diff --git a/.yarn/cache/@typescript-eslint-typescript-estree-npm-5.59.11-451bf9de0d-516a828884.zip b/.yarn/cache/@typescript-eslint-typescript-estree-npm-5.59.11-451bf9de0d-516a828884.zip new file mode 100644 index 0000000000..f5d3ff6283 Binary files /dev/null and b/.yarn/cache/@typescript-eslint-typescript-estree-npm-5.59.11-451bf9de0d-516a828884.zip differ diff --git a/.yarn/cache/@typescript-eslint-utils-npm-5.59.11-fc5a1295dc-a61f3e761d.zip b/.yarn/cache/@typescript-eslint-utils-npm-5.59.11-fc5a1295dc-a61f3e761d.zip new file mode 100644 index 0000000000..aae41ca43c Binary files /dev/null and b/.yarn/cache/@typescript-eslint-utils-npm-5.59.11-fc5a1295dc-a61f3e761d.zip differ diff --git a/.yarn/cache/@typescript-eslint-visitor-keys-npm-5.59.11-2c0f2bc79a-4894ec4b2b.zip b/.yarn/cache/@typescript-eslint-visitor-keys-npm-5.59.11-2c0f2bc79a-4894ec4b2b.zip new file mode 100644 index 0000000000..a525fc802c Binary files /dev/null and b/.yarn/cache/@typescript-eslint-visitor-keys-npm-5.59.11-2c0f2bc79a-4894ec4b2b.zip differ diff --git a/.yarn/cache/@wagmi-chains-npm-0.3.1-de50a0732e-1669bd7fa6.zip b/.yarn/cache/@wagmi-chains-npm-0.3.1-de50a0732e-1669bd7fa6.zip deleted file mode 100644 index 21776c5f2c..0000000000 Binary files a/.yarn/cache/@wagmi-chains-npm-0.3.1-de50a0732e-1669bd7fa6.zip and /dev/null differ diff --git a/.yarn/cache/@wagmi-chains-npm-1.1.0-d207a4edd2-3359df95f6.zip b/.yarn/cache/@wagmi-chains-npm-1.1.0-d207a4edd2-3359df95f6.zip new file mode 100644 index 0000000000..d27f833086 Binary files /dev/null and b/.yarn/cache/@wagmi-chains-npm-1.1.0-d207a4edd2-3359df95f6.zip differ diff --git a/.yarn/cache/@wagmi-connectors-npm-2.0.0-0da064acbb-3f7bb27cba.zip b/.yarn/cache/@wagmi-connectors-npm-2.0.0-0da064acbb-3f7bb27cba.zip deleted file mode 100644 index 3cd345f453..0000000000 Binary files a/.yarn/cache/@wagmi-connectors-npm-2.0.0-0da064acbb-3f7bb27cba.zip and /dev/null differ diff --git a/.yarn/cache/@wagmi-connectors-npm-2.1.1-113449ec05-9b51c0e120.zip b/.yarn/cache/@wagmi-connectors-npm-2.1.1-113449ec05-9b51c0e120.zip new file mode 100644 index 0000000000..5ba7a028c6 Binary files /dev/null and b/.yarn/cache/@wagmi-connectors-npm-2.1.1-113449ec05-9b51c0e120.zip differ diff --git a/.yarn/cache/@wagmi-core-npm-1.0.8-3e19c96efc-c32b311884.zip b/.yarn/cache/@wagmi-core-npm-1.1.1-f1271c4a6c-f630700286.zip similarity index 63% rename from .yarn/cache/@wagmi-core-npm-1.0.8-3e19c96efc-c32b311884.zip rename to .yarn/cache/@wagmi-core-npm-1.1.1-f1271c4a6c-f630700286.zip index f4f9b4b18d..3dd99ac344 100644 Binary files a/.yarn/cache/@wagmi-core-npm-1.0.8-3e19c96efc-c32b311884.zip and b/.yarn/cache/@wagmi-core-npm-1.1.1-f1271c4a6c-f630700286.zip differ diff --git a/.yarn/cache/@walletconnect-core-npm-2.7.4-a004fc6f9f-84715f85fc.zip b/.yarn/cache/@walletconnect-core-npm-2.7.4-a004fc6f9f-84715f85fc.zip deleted file mode 100644 index e65b1bfdce..0000000000 Binary files a/.yarn/cache/@walletconnect-core-npm-2.7.4-a004fc6f9f-84715f85fc.zip and /dev/null differ diff --git a/.yarn/cache/@walletconnect-core-npm-2.7.8-773b9eb6c8-0cdb30c6a2.zip b/.yarn/cache/@walletconnect-core-npm-2.7.8-773b9eb6c8-0cdb30c6a2.zip new file mode 100644 index 0000000000..ac4b08a4c4 Binary files /dev/null and b/.yarn/cache/@walletconnect-core-npm-2.7.8-773b9eb6c8-0cdb30c6a2.zip differ diff --git a/.yarn/cache/@walletconnect-ethereum-provider-npm-2.7.4-22522467fb-89e7454ff7.zip b/.yarn/cache/@walletconnect-ethereum-provider-npm-2.7.4-22522467fb-89e7454ff7.zip deleted file mode 100644 index 616d0d4827..0000000000 Binary files a/.yarn/cache/@walletconnect-ethereum-provider-npm-2.7.4-22522467fb-89e7454ff7.zip and /dev/null differ diff --git a/.yarn/cache/@walletconnect-ethereum-provider-npm-2.7.8-d96c14f263-77b845b8c7.zip b/.yarn/cache/@walletconnect-ethereum-provider-npm-2.7.8-d96c14f263-77b845b8c7.zip new file mode 100644 index 0000000000..9710e6ca2b Binary files /dev/null and b/.yarn/cache/@walletconnect-ethereum-provider-npm-2.7.8-d96c14f263-77b845b8c7.zip differ diff --git a/.yarn/cache/@walletconnect-jsonrpc-http-connection-npm-1.0.7-674cdd27b1-c4efcd46d4.zip b/.yarn/cache/@walletconnect-jsonrpc-http-connection-npm-1.0.7-674cdd27b1-c4efcd46d4.zip new file mode 100644 index 0000000000..446b2155bc Binary files /dev/null and b/.yarn/cache/@walletconnect-jsonrpc-http-connection-npm-1.0.7-674cdd27b1-c4efcd46d4.zip differ diff --git a/.yarn/cache/@walletconnect-sign-client-npm-2.7.4-1bfd6ea5d4-370bf68aba.zip b/.yarn/cache/@walletconnect-sign-client-npm-2.7.4-1bfd6ea5d4-370bf68aba.zip deleted file mode 100644 index 87476aab3f..0000000000 Binary files a/.yarn/cache/@walletconnect-sign-client-npm-2.7.4-1bfd6ea5d4-370bf68aba.zip and /dev/null differ diff --git a/.yarn/cache/@walletconnect-sign-client-npm-2.7.8-8b4c0c88a0-32a0ea4274.zip b/.yarn/cache/@walletconnect-sign-client-npm-2.7.8-8b4c0c88a0-32a0ea4274.zip new file mode 100644 index 0000000000..4c42af2968 Binary files /dev/null and b/.yarn/cache/@walletconnect-sign-client-npm-2.7.8-8b4c0c88a0-32a0ea4274.zip differ diff --git a/.yarn/cache/@walletconnect-types-npm-2.7.4-43a69259fb-40d4d1ed37.zip b/.yarn/cache/@walletconnect-types-npm-2.7.4-43a69259fb-40d4d1ed37.zip deleted file mode 100644 index 626a7dad58..0000000000 Binary files a/.yarn/cache/@walletconnect-types-npm-2.7.4-43a69259fb-40d4d1ed37.zip and /dev/null differ diff --git a/.yarn/cache/@walletconnect-types-npm-2.7.8-6f4507cc5c-b60742237e.zip b/.yarn/cache/@walletconnect-types-npm-2.7.8-6f4507cc5c-b60742237e.zip new file mode 100644 index 0000000000..3a7d85a3da Binary files /dev/null and b/.yarn/cache/@walletconnect-types-npm-2.7.8-6f4507cc5c-b60742237e.zip differ diff --git a/.yarn/cache/@walletconnect-universal-provider-npm-2.7.4-e3699df38f-5f6ae4436c.zip b/.yarn/cache/@walletconnect-universal-provider-npm-2.7.4-e3699df38f-5f6ae4436c.zip deleted file mode 100644 index f9c3457c3b..0000000000 Binary files a/.yarn/cache/@walletconnect-universal-provider-npm-2.7.4-e3699df38f-5f6ae4436c.zip and /dev/null differ diff --git a/.yarn/cache/@walletconnect-universal-provider-npm-2.7.8-9b7360a37c-ec91ebeaac.zip b/.yarn/cache/@walletconnect-universal-provider-npm-2.7.8-9b7360a37c-ec91ebeaac.zip new file mode 100644 index 0000000000..869d86d5af Binary files /dev/null and b/.yarn/cache/@walletconnect-universal-provider-npm-2.7.8-9b7360a37c-ec91ebeaac.zip differ diff --git a/.yarn/cache/@walletconnect-utils-npm-2.7.4-c06d9ab1c9-ab2db03eaa.zip b/.yarn/cache/@walletconnect-utils-npm-2.7.4-c06d9ab1c9-ab2db03eaa.zip deleted file mode 100644 index 1c15be9204..0000000000 Binary files a/.yarn/cache/@walletconnect-utils-npm-2.7.4-c06d9ab1c9-ab2db03eaa.zip and /dev/null differ diff --git a/.yarn/cache/@walletconnect-utils-npm-2.7.8-6ca87022b5-d8f4c64540.zip b/.yarn/cache/@walletconnect-utils-npm-2.7.8-6ca87022b5-d8f4c64540.zip new file mode 100644 index 0000000000..56ee13e0d0 Binary files /dev/null and b/.yarn/cache/@walletconnect-utils-npm-2.7.8-6ca87022b5-d8f4c64540.zip differ diff --git a/.yarn/cache/@web3modal-core-npm-2.4.1-f9867ae4db-b8496bb488.zip b/.yarn/cache/@web3modal-core-npm-2.4.1-f9867ae4db-b8496bb488.zip deleted file mode 100644 index 489fd74685..0000000000 Binary files a/.yarn/cache/@web3modal-core-npm-2.4.1-f9867ae4db-b8496bb488.zip and /dev/null differ diff --git a/.yarn/cache/@web3modal-core-npm-2.4.3-859b7ce804-af18f7c442.zip b/.yarn/cache/@web3modal-core-npm-2.4.3-859b7ce804-af18f7c442.zip new file mode 100644 index 0000000000..b5bae5d8a2 Binary files /dev/null and b/.yarn/cache/@web3modal-core-npm-2.4.3-859b7ce804-af18f7c442.zip differ diff --git a/.yarn/cache/@web3modal-standalone-npm-2.4.1-3f923c90b7-0a26a7cc4b.zip b/.yarn/cache/@web3modal-standalone-npm-2.4.1-3f923c90b7-0a26a7cc4b.zip deleted file mode 100644 index 8178705519..0000000000 Binary files a/.yarn/cache/@web3modal-standalone-npm-2.4.1-3f923c90b7-0a26a7cc4b.zip and /dev/null differ diff --git a/.yarn/cache/@web3modal-standalone-npm-2.4.3-c51e5a9717-3a5c6b9352.zip b/.yarn/cache/@web3modal-standalone-npm-2.4.3-c51e5a9717-3a5c6b9352.zip new file mode 100644 index 0000000000..5bbb11f0ca Binary files /dev/null and b/.yarn/cache/@web3modal-standalone-npm-2.4.3-c51e5a9717-3a5c6b9352.zip differ diff --git a/.yarn/cache/@web3modal-ui-npm-2.4.1-211b7fd7cf-80f21d6c79.zip b/.yarn/cache/@web3modal-ui-npm-2.4.1-211b7fd7cf-80f21d6c79.zip deleted file mode 100644 index 071ae224e7..0000000000 Binary files a/.yarn/cache/@web3modal-ui-npm-2.4.1-211b7fd7cf-80f21d6c79.zip and /dev/null differ diff --git a/.yarn/cache/@web3modal-ui-npm-2.4.3-2e87fe4053-2198229f88.zip b/.yarn/cache/@web3modal-ui-npm-2.4.3-2e87fe4053-2198229f88.zip new file mode 100644 index 0000000000..58ea3b39db Binary files /dev/null and b/.yarn/cache/@web3modal-ui-npm-2.4.3-2e87fe4053-2198229f88.zip differ diff --git a/.yarn/cache/@zerodevapp-contracts-npm-4.0.0-beta.15-8308189979-e40e5fc877.zip b/.yarn/cache/@zerodevapp-contracts-npm-4.0.0-beta.15-8308189979-e40e5fc877.zip new file mode 100644 index 0000000000..b4bd1c1b3b Binary files /dev/null and b/.yarn/cache/@zerodevapp-contracts-npm-4.0.0-beta.15-8308189979-e40e5fc877.zip differ diff --git a/.yarn/cache/@zerodevapp-sdk-npm-3.0.15-e800e3a261-7fee226c3e.zip b/.yarn/cache/@zerodevapp-sdk-npm-3.0.15-e800e3a261-7fee226c3e.zip deleted file mode 100644 index 91e4a3ec86..0000000000 Binary files a/.yarn/cache/@zerodevapp-sdk-npm-3.0.15-e800e3a261-7fee226c3e.zip and /dev/null differ diff --git a/.yarn/cache/@zerodevapp-sdk-npm-3.1.57-b3559d2a56-3a3164f4af.zip b/.yarn/cache/@zerodevapp-sdk-npm-3.1.57-b3559d2a56-3a3164f4af.zip new file mode 100644 index 0000000000..5dc0a1316e Binary files /dev/null and b/.yarn/cache/@zerodevapp-sdk-npm-3.1.57-b3559d2a56-3a3164f4af.zip differ diff --git a/.yarn/cache/abitype-npm-0.8.1-02e3934d31-20a84b21fe.zip b/.yarn/cache/abitype-npm-0.8.1-02e3934d31-20a84b21fe.zip deleted file mode 100644 index b4a6ab3c0a..0000000000 Binary files a/.yarn/cache/abitype-npm-0.8.1-02e3934d31-20a84b21fe.zip and /dev/null differ diff --git a/.yarn/cache/abitype-npm-0.8.2-7e4eb32a46-ec9ade7e2b.zip b/.yarn/cache/abitype-npm-0.8.7-5b57472658-4351466808.zip similarity index 64% rename from .yarn/cache/abitype-npm-0.8.2-7e4eb32a46-ec9ade7e2b.zip rename to .yarn/cache/abitype-npm-0.8.7-5b57472658-4351466808.zip index 82bd2ecb5d..3297183a63 100644 Binary files a/.yarn/cache/abitype-npm-0.8.2-7e4eb32a46-ec9ade7e2b.zip and b/.yarn/cache/abitype-npm-0.8.7-5b57472658-4351466808.zip differ diff --git a/.yarn/cache/acorn-npm-8.10.0-2230c9e83e-538ba38af0.zip b/.yarn/cache/acorn-npm-8.10.0-2230c9e83e-538ba38af0.zip new file mode 100644 index 0000000000..6820207002 Binary files /dev/null and b/.yarn/cache/acorn-npm-8.10.0-2230c9e83e-538ba38af0.zip differ diff --git a/.yarn/cache/as-table-npm-1.0.55-d648539c6d-341c99d9e9.zip b/.yarn/cache/as-table-npm-1.0.55-d648539c6d-341c99d9e9.zip new file mode 100644 index 0000000000..ac81142ec8 Binary files /dev/null and b/.yarn/cache/as-table-npm-1.0.55-d648539c6d-341c99d9e9.zip differ diff --git a/.yarn/cache/better-sqlite3-npm-8.4.0-168ce4c7b2-f8b180c264.zip b/.yarn/cache/better-sqlite3-npm-8.4.0-168ce4c7b2-f8b180c264.zip new file mode 100644 index 0000000000..22fce25129 Binary files /dev/null and b/.yarn/cache/better-sqlite3-npm-8.4.0-168ce4c7b2-f8b180c264.zip differ diff --git a/.yarn/cache/builtins-npm-5.0.1-6d4820dd76-66d204657f.zip b/.yarn/cache/builtins-npm-5.0.1-6d4820dd76-66d204657f.zip deleted file mode 100644 index 9c03e4748b..0000000000 Binary files a/.yarn/cache/builtins-npm-5.0.1-6d4820dd76-66d204657f.zip and /dev/null differ diff --git a/.yarn/cache/bytestreamjs-npm-2.0.1-d07bf8721c-db4cb03979.zip b/.yarn/cache/bytestreamjs-npm-2.0.1-d07bf8721c-db4cb03979.zip new file mode 100644 index 0000000000..4db32b1253 Binary files /dev/null and b/.yarn/cache/bytestreamjs-npm-2.0.1-d07bf8721c-db4cb03979.zip differ diff --git a/.yarn/cache/capnp-ts-npm-0.7.0-300a60f261-9ab495a887.zip b/.yarn/cache/capnp-ts-npm-0.7.0-300a60f261-9ab495a887.zip new file mode 100644 index 0000000000..40c337f098 Binary files /dev/null and b/.yarn/cache/capnp-ts-npm-0.7.0-300a60f261-9ab495a887.zip differ diff --git a/.yarn/cache/cbor-extract-npm-2.1.1-bcad1459e1-283d9cdb3c.zip b/.yarn/cache/cbor-extract-npm-2.1.1-bcad1459e1-283d9cdb3c.zip new file mode 100644 index 0000000000..b87c024c52 Binary files /dev/null and b/.yarn/cache/cbor-extract-npm-2.1.1-bcad1459e1-283d9cdb3c.zip differ diff --git a/.yarn/cache/cbor-x-npm-1.5.4-2d5a649a4b-589513dcfa.zip b/.yarn/cache/cbor-x-npm-1.5.4-2d5a649a4b-589513dcfa.zip new file mode 100644 index 0000000000..e2a9be240a Binary files /dev/null and b/.yarn/cache/cbor-x-npm-1.5.4-2d5a649a4b-589513dcfa.zip differ diff --git a/.yarn/cache/cron-schedule-npm-3.0.6-cb639008e2-5f6bee8639.zip b/.yarn/cache/cron-schedule-npm-3.0.6-cb639008e2-5f6bee8639.zip deleted file mode 100644 index a5b86e8336..0000000000 Binary files a/.yarn/cache/cron-schedule-npm-3.0.6-cb639008e2-5f6bee8639.zip and /dev/null differ diff --git a/.yarn/cache/data-uri-to-buffer-npm-2.0.2-fb132dceb3-152bec5e77.zip b/.yarn/cache/data-uri-to-buffer-npm-2.0.2-fb132dceb3-152bec5e77.zip new file mode 100644 index 0000000000..71a7d0d5a1 Binary files /dev/null and b/.yarn/cache/data-uri-to-buffer-npm-2.0.2-fb132dceb3-152bec5e77.zip differ diff --git a/.yarn/cache/do-proxy-npm-1.3.4-57965abe48-8efe0b1ff7.zip b/.yarn/cache/do-proxy-npm-1.3.4-57965abe48-8efe0b1ff7.zip new file mode 100644 index 0000000000..d4f8580877 Binary files /dev/null and b/.yarn/cache/do-proxy-npm-1.3.4-57965abe48-8efe0b1ff7.zip differ diff --git a/.yarn/cache/dotenv-npm-16.1.4-c4499a21eb-c1b2e13df4.zip b/.yarn/cache/dotenv-npm-16.1.4-c4499a21eb-c1b2e13df4.zip new file mode 100644 index 0000000000..755fcf3f98 Binary files /dev/null and b/.yarn/cache/dotenv-npm-16.1.4-c4499a21eb-c1b2e13df4.zip differ diff --git a/.yarn/cache/eslint-config-prettier-npm-8.8.0-f1bf18b9b1-1e94c3882c.zip b/.yarn/cache/eslint-config-prettier-npm-8.8.0-f1bf18b9b1-1e94c3882c.zip new file mode 100644 index 0000000000..6401bd22c7 Binary files /dev/null and b/.yarn/cache/eslint-config-prettier-npm-8.8.0-f1bf18b9b1-1e94c3882c.zip differ diff --git a/.yarn/cache/eslint-npm-8.43.0-5757109ac8-55654ce00b.zip b/.yarn/cache/eslint-npm-8.43.0-5757109ac8-55654ce00b.zip new file mode 100644 index 0000000000..f51b7c3897 Binary files /dev/null and b/.yarn/cache/eslint-npm-8.43.0-5757109ac8-55654ce00b.zip differ diff --git a/.yarn/cache/eslint-scope-npm-7.2.1-48811e2821-dccda5c890.zip b/.yarn/cache/eslint-scope-npm-7.2.1-48811e2821-dccda5c890.zip new file mode 100644 index 0000000000..2c95bda9e9 Binary files /dev/null and b/.yarn/cache/eslint-scope-npm-7.2.1-48811e2821-dccda5c890.zip differ diff --git a/.yarn/cache/eslint-visitor-keys-npm-3.4.1-a5d0a58208-f05121d868.zip b/.yarn/cache/eslint-visitor-keys-npm-3.4.1-a5d0a58208-f05121d868.zip new file mode 100644 index 0000000000..e442ca3b41 Binary files /dev/null and b/.yarn/cache/eslint-visitor-keys-npm-3.4.1-a5d0a58208-f05121d868.zip differ diff --git a/.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip b/.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip new file mode 100644 index 0000000000..0014c0574a Binary files /dev/null and b/.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip differ diff --git a/.yarn/cache/esquery-npm-1.5.0-d8f8a06879-aefb0d2596.zip b/.yarn/cache/esquery-npm-1.5.0-d8f8a06879-aefb0d2596.zip new file mode 100644 index 0000000000..6006b96052 Binary files /dev/null and b/.yarn/cache/esquery-npm-1.5.0-d8f8a06879-aefb0d2596.zip differ diff --git a/.yarn/cache/ethereum-cryptography-npm-1.2.0-6cb0d0ad24-97e8e8253c.zip b/.yarn/cache/ethereum-cryptography-npm-1.2.0-6cb0d0ad24-97e8e8253c.zip new file mode 100644 index 0000000000..8ee9b80375 Binary files /dev/null and b/.yarn/cache/ethereum-cryptography-npm-1.2.0-6cb0d0ad24-97e8e8253c.zip differ diff --git a/.yarn/cache/ethereum-cryptography-npm-2.0.0-6b73cba626-958f8aab2d.zip b/.yarn/cache/ethereum-cryptography-npm-2.0.0-6b73cba626-958f8aab2d.zip new file mode 100644 index 0000000000..3a6088c5a3 Binary files /dev/null and b/.yarn/cache/ethereum-cryptography-npm-2.0.0-6b73cba626-958f8aab2d.zip differ diff --git a/.yarn/cache/ethers-eip712-npm-0.2.0-a7813a5b3f-d5514d385c.zip b/.yarn/cache/ethers-eip712-npm-0.2.0-a7813a5b3f-d5514d385c.zip deleted file mode 100644 index 45d8b16c7d..0000000000 Binary files a/.yarn/cache/ethers-eip712-npm-0.2.0-a7813a5b3f-d5514d385c.zip and /dev/null differ diff --git a/.yarn/cache/ethjs-util-npm-0.1.6-bd313edc1f-1f42959e78.zip b/.yarn/cache/ethjs-util-npm-0.1.6-bd313edc1f-1f42959e78.zip new file mode 100644 index 0000000000..df961e23ae Binary files /dev/null and b/.yarn/cache/ethjs-util-npm-0.1.6-bd313edc1f-1f42959e78.zip differ diff --git a/.yarn/cache/execa-npm-6.1.0-be1d7f323b-1a4af79983.zip b/.yarn/cache/execa-npm-6.1.0-be1d7f323b-1a4af79983.zip deleted file mode 100644 index 6d26cc0e1a..0000000000 Binary files a/.yarn/cache/execa-npm-6.1.0-be1d7f323b-1a4af79983.zip and /dev/null differ diff --git a/.yarn/cache/fflate-npm-0.4.8-4dd4e91e29-29d8cbe44d.zip b/.yarn/cache/fflate-npm-0.4.8-4dd4e91e29-29d8cbe44d.zip new file mode 100644 index 0000000000..4762434d07 Binary files /dev/null and b/.yarn/cache/fflate-npm-0.4.8-4dd4e91e29-29d8cbe44d.zip differ diff --git a/.yarn/cache/fido2-lib-npm-3.4.1-db1c73da7c-abf677eb7c.zip b/.yarn/cache/fido2-lib-npm-3.4.1-db1c73da7c-abf677eb7c.zip new file mode 100644 index 0000000000..ea8e3d1537 Binary files /dev/null and b/.yarn/cache/fido2-lib-npm-3.4.1-db1c73da7c-abf677eb7c.zip differ diff --git a/.yarn/cache/get-source-npm-2.0.12-98e6ec7e98-c73368fee7.zip b/.yarn/cache/get-source-npm-2.0.12-98e6ec7e98-c73368fee7.zip new file mode 100644 index 0000000000..1b645425ea Binary files /dev/null and b/.yarn/cache/get-source-npm-2.0.12-98e6ec7e98-c73368fee7.zip differ diff --git a/.yarn/cache/glob-npm-7.1.6-1ce3a5189a-351d549dd9.zip b/.yarn/cache/glob-npm-7.1.6-1ce3a5189a-351d549dd9.zip new file mode 100644 index 0000000000..a696eebd16 Binary files /dev/null and b/.yarn/cache/glob-npm-7.1.6-1ce3a5189a-351d549dd9.zip differ diff --git a/.yarn/cache/globals-npm-13.20.0-4565a722e7-ad1ecf914b.zip b/.yarn/cache/globals-npm-13.20.0-4565a722e7-ad1ecf914b.zip new file mode 100644 index 0000000000..e8add5b6bc Binary files /dev/null and b/.yarn/cache/globals-npm-13.20.0-4565a722e7-ad1ecf914b.zip differ diff --git a/.yarn/cache/graphemer-npm-1.4.0-0627732d35-bab8f0be9b.zip b/.yarn/cache/graphemer-npm-1.4.0-0627732d35-bab8f0be9b.zip new file mode 100644 index 0000000000..e04f8d3724 Binary files /dev/null and b/.yarn/cache/graphemer-npm-1.4.0-0627732d35-bab8f0be9b.zip differ diff --git a/.yarn/cache/graphql-npm-16.8.1-c2cd08b4c0-8d304b7b6f.zip b/.yarn/cache/graphql-npm-16.8.1-c2cd08b4c0-8d304b7b6f.zip new file mode 100644 index 0000000000..18cf7d3097 Binary files /dev/null and b/.yarn/cache/graphql-npm-16.8.1-c2cd08b4c0-8d304b7b6f.zip differ diff --git a/.yarn/cache/html-rewriter-wasm-npm-0.4.1-77359b95b5-e97f76e0f9.zip b/.yarn/cache/html-rewriter-wasm-npm-0.4.1-77359b95b5-e97f76e0f9.zip deleted file mode 100644 index 4d701a17af..0000000000 Binary files a/.yarn/cache/html-rewriter-wasm-npm-0.4.1-77359b95b5-e97f76e0f9.zip and /dev/null differ diff --git a/.yarn/cache/human-signals-npm-3.0.1-0c557ca74a-f252a7769c.zip b/.yarn/cache/human-signals-npm-3.0.1-0c557ca74a-f252a7769c.zip deleted file mode 100644 index 0bca2fa4eb..0000000000 Binary files a/.yarn/cache/human-signals-npm-3.0.1-0c557ca74a-f252a7769c.zip and /dev/null differ diff --git a/.yarn/cache/is-core-module-npm-2.12.1-ce74e89160-f04ea30533.zip b/.yarn/cache/is-core-module-npm-2.12.1-ce74e89160-f04ea30533.zip new file mode 100644 index 0000000000..9512b2ef2b Binary files /dev/null and b/.yarn/cache/is-core-module-npm-2.12.1-ce74e89160-f04ea30533.zip differ diff --git a/.yarn/cache/is-stream-npm-3.0.0-a77ac9a62e-172093fe99.zip b/.yarn/cache/is-stream-npm-3.0.0-a77ac9a62e-172093fe99.zip deleted file mode 100644 index 71e7d6518f..0000000000 Binary files a/.yarn/cache/is-stream-npm-3.0.0-a77ac9a62e-172093fe99.zip and /dev/null differ diff --git a/.yarn/cache/jiti-npm-1.19.1-eef2f0ec29-fdf55e315f.zip b/.yarn/cache/jiti-npm-1.19.1-eef2f0ec29-fdf55e315f.zip new file mode 100644 index 0000000000..a73fed2690 Binary files /dev/null and b/.yarn/cache/jiti-npm-1.19.1-eef2f0ec29-fdf55e315f.zip differ diff --git a/.yarn/cache/jose-npm-4.14.4-8255fd76fa-2d820a91a8.zip b/.yarn/cache/jose-npm-4.14.4-8255fd76fa-2d820a91a8.zip new file mode 100644 index 0000000000..82890e20cf Binary files /dev/null and b/.yarn/cache/jose-npm-4.14.4-8255fd76fa-2d820a91a8.zip differ diff --git a/.yarn/cache/lilconfig-npm-2.1.0-a179261924-8549bb352b.zip b/.yarn/cache/lilconfig-npm-2.1.0-a179261924-8549bb352b.zip new file mode 100644 index 0000000000..44e3230ea2 Binary files /dev/null and b/.yarn/cache/lilconfig-npm-2.1.0-a179261924-8549bb352b.zip differ diff --git a/.yarn/cache/lit-npm-2.7.4-9e53493901-7494f4e814.zip b/.yarn/cache/lit-npm-2.7.5-bef28da03f-61a3f87c57.zip similarity index 97% rename from .yarn/cache/lit-npm-2.7.4-9e53493901-7494f4e814.zip rename to .yarn/cache/lit-npm-2.7.5-bef28da03f-61a3f87c57.zip index 1c1c204cf5..4f2d34c2a1 100644 Binary files a/.yarn/cache/lit-npm-2.7.4-9e53493901-7494f4e814.zip and b/.yarn/cache/lit-npm-2.7.5-bef28da03f-61a3f87c57.zip differ diff --git a/.yarn/cache/micro-ftch-npm-0.3.1-4699fe6be7-0e49654725.zip b/.yarn/cache/micro-ftch-npm-0.3.1-4699fe6be7-0e49654725.zip new file mode 100644 index 0000000000..27d835d1e5 Binary files /dev/null and b/.yarn/cache/micro-ftch-npm-0.3.1-4699fe6be7-0e49654725.zip differ diff --git a/.yarn/cache/mimic-fn-npm-4.0.0-feaeda79f7-995dcece15.zip b/.yarn/cache/mimic-fn-npm-4.0.0-feaeda79f7-995dcece15.zip deleted file mode 100644 index f990f1de11..0000000000 Binary files a/.yarn/cache/mimic-fn-npm-4.0.0-feaeda79f7-995dcece15.zip and /dev/null differ diff --git a/.yarn/cache/miniflare-npm-2.13.0-8fff325abf-04af58399c.zip b/.yarn/cache/miniflare-npm-2.13.0-8fff325abf-04af58399c.zip deleted file mode 100644 index 01956470e5..0000000000 Binary files a/.yarn/cache/miniflare-npm-2.13.0-8fff325abf-04af58399c.zip and /dev/null differ diff --git a/.yarn/cache/miniflare-npm-3.20230710.0-7049668ed9-c497a2606e.zip b/.yarn/cache/miniflare-npm-3.20230710.0-7049668ed9-c497a2606e.zip new file mode 100644 index 0000000000..a688e676a9 Binary files /dev/null and b/.yarn/cache/miniflare-npm-3.20230710.0-7049668ed9-c497a2606e.zip differ diff --git a/.yarn/cache/motion-npm-10.15.5-470c647bef-43e7883d95.zip b/.yarn/cache/motion-npm-10.16.2-fa1bf30ff0-0b91256808.zip similarity index 88% rename from .yarn/cache/motion-npm-10.15.5-470c647bef-43e7883d95.zip rename to .yarn/cache/motion-npm-10.16.2-fa1bf30ff0-0b91256808.zip index 8b3ad3800b..008e0793b3 100644 Binary files a/.yarn/cache/motion-npm-10.15.5-470c647bef-43e7883d95.zip and b/.yarn/cache/motion-npm-10.16.2-fa1bf30ff0-0b91256808.zip differ diff --git a/.yarn/cache/nanoid-npm-3.3.6-e6d6ae7e71-7d0eda6570.zip b/.yarn/cache/nanoid-npm-3.3.6-e6d6ae7e71-7d0eda6570.zip new file mode 100644 index 0000000000..8526acad72 Binary files /dev/null and b/.yarn/cache/nanoid-npm-3.3.6-e6d6ae7e71-7d0eda6570.zip differ diff --git a/.yarn/cache/node-gyp-build-optional-packages-npm-5.0.3-50b9c76481-be3f023592.zip b/.yarn/cache/node-gyp-build-optional-packages-npm-5.0.3-50b9c76481-be3f023592.zip new file mode 100644 index 0000000000..b7d288db9b Binary files /dev/null and b/.yarn/cache/node-gyp-build-optional-packages-npm-5.0.3-50b9c76481-be3f023592.zip differ diff --git a/.yarn/cache/npm-run-path-npm-5.1.0-79c0668d42-dc184eb5ec.zip b/.yarn/cache/npm-run-path-npm-5.1.0-79c0668d42-dc184eb5ec.zip deleted file mode 100644 index 9b9a307b43..0000000000 Binary files a/.yarn/cache/npm-run-path-npm-5.1.0-79c0668d42-dc184eb5ec.zip and /dev/null differ diff --git a/.yarn/cache/npx-import-npm-1.1.4-38f5e68b91-7557d0c7d2.zip b/.yarn/cache/npx-import-npm-1.1.4-38f5e68b91-7557d0c7d2.zip deleted file mode 100644 index 4aee43e597..0000000000 Binary files a/.yarn/cache/npx-import-npm-1.1.4-38f5e68b91-7557d0c7d2.zip and /dev/null differ diff --git a/.yarn/cache/onetime-npm-6.0.0-4f3684e29a-0846ce78e4.zip b/.yarn/cache/onetime-npm-6.0.0-4f3684e29a-0846ce78e4.zip deleted file mode 100644 index 05f13202f3..0000000000 Binary files a/.yarn/cache/onetime-npm-6.0.0-4f3684e29a-0846ce78e4.zip and /dev/null differ diff --git a/.yarn/cache/parse-package-name-npm-1.0.0-c788a74e6c-dfbfa8ce7a.zip b/.yarn/cache/parse-package-name-npm-1.0.0-c788a74e6c-dfbfa8ce7a.zip deleted file mode 100644 index d13afde565..0000000000 Binary files a/.yarn/cache/parse-package-name-npm-1.0.0-c788a74e6c-dfbfa8ce7a.zip and /dev/null differ diff --git a/.yarn/cache/path-key-npm-4.0.0-2bce99f089-8e6c314ae6.zip b/.yarn/cache/path-key-npm-4.0.0-2bce99f089-8e6c314ae6.zip deleted file mode 100644 index 271eb03454..0000000000 Binary files a/.yarn/cache/path-key-npm-4.0.0-2bce99f089-8e6c314ae6.zip and /dev/null differ diff --git a/.yarn/cache/pkijs-npm-3.0.15-5c95538ba9-b9db0d9858.zip b/.yarn/cache/pkijs-npm-3.0.15-5c95538ba9-b9db0d9858.zip new file mode 100644 index 0000000000..e46c516dcb Binary files /dev/null and b/.yarn/cache/pkijs-npm-3.0.15-5c95538ba9-b9db0d9858.zip differ diff --git a/.yarn/cache/playwright-core-npm-1.32.3-3226b058a4-7ea091c41a.zip b/.yarn/cache/playwright-core-npm-1.32.3-3226b058a4-7ea091c41a.zip deleted file mode 100644 index dc15ad1110..0000000000 Binary files a/.yarn/cache/playwright-core-npm-1.32.3-3226b058a4-7ea091c41a.zip and /dev/null differ diff --git a/.yarn/cache/playwright-core-npm-1.35.1-69a99ef963-179abc0051.zip b/.yarn/cache/playwright-core-npm-1.35.1-69a99ef963-179abc0051.zip new file mode 100644 index 0000000000..2c848482fd Binary files /dev/null and b/.yarn/cache/playwright-core-npm-1.35.1-69a99ef963-179abc0051.zip differ diff --git a/.yarn/cache/postal-mime-npm-1.0.16-5981a9ed49-adcfd1432a.zip b/.yarn/cache/postal-mime-npm-1.0.16-5981a9ed49-adcfd1432a.zip new file mode 100644 index 0000000000..8730f51517 Binary files /dev/null and b/.yarn/cache/postal-mime-npm-1.0.16-5981a9ed49-adcfd1432a.zip differ diff --git a/.yarn/cache/postcss-import-npm-15.1.0-8b9e86f900-7bd04bd8f0.zip b/.yarn/cache/postcss-import-npm-15.1.0-8b9e86f900-7bd04bd8f0.zip new file mode 100644 index 0000000000..00850ef368 Binary files /dev/null and b/.yarn/cache/postcss-import-npm-15.1.0-8b9e86f900-7bd04bd8f0.zip differ diff --git a/.yarn/cache/postcss-js-npm-4.0.1-2c4ee70bf3-5c1e83efea.zip b/.yarn/cache/postcss-js-npm-4.0.1-2c4ee70bf3-5c1e83efea.zip new file mode 100644 index 0000000000..d9b8602631 Binary files /dev/null and b/.yarn/cache/postcss-js-npm-4.0.1-2c4ee70bf3-5c1e83efea.zip differ diff --git a/.yarn/cache/postcss-nested-npm-5.0.6-d408d3cd6e-dbcbfd11e5.zip b/.yarn/cache/postcss-nested-npm-5.0.6-d408d3cd6e-dbcbfd11e5.zip deleted file mode 100644 index c5cf42e8cd..0000000000 Binary files a/.yarn/cache/postcss-nested-npm-5.0.6-d408d3cd6e-dbcbfd11e5.zip and /dev/null differ diff --git a/.yarn/cache/postcss-nested-npm-6.0.1-5cdc427fe8-7ddb0364cd.zip b/.yarn/cache/postcss-nested-npm-6.0.1-5cdc427fe8-7ddb0364cd.zip new file mode 100644 index 0000000000..79b46905a6 Binary files /dev/null and b/.yarn/cache/postcss-nested-npm-6.0.1-5cdc427fe8-7ddb0364cd.zip differ diff --git a/.yarn/cache/postcss-npm-8.4.27-2a9f5f8f40-1cdd0c2988.zip b/.yarn/cache/postcss-npm-8.4.27-2a9f5f8f40-1cdd0c2988.zip new file mode 100644 index 0000000000..11d492b6c1 Binary files /dev/null and b/.yarn/cache/postcss-npm-8.4.27-2a9f5f8f40-1cdd0c2988.zip differ diff --git a/.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip b/.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip new file mode 100644 index 0000000000..1623d46ce1 Binary files /dev/null and b/.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip differ diff --git a/.yarn/cache/posthog-js-npm-1.71.0-40a3464da4-bd809c0811.zip b/.yarn/cache/posthog-js-npm-1.71.0-40a3464da4-bd809c0811.zip new file mode 100644 index 0000000000..5397e0acfd Binary files /dev/null and b/.yarn/cache/posthog-js-npm-1.71.0-40a3464da4-bd809c0811.zip differ diff --git a/.yarn/cache/preact-npm-10.15.0-e947074de2-6fa78d3179.zip b/.yarn/cache/preact-npm-10.15.1-bd458de913-dabad11843.zip similarity index 92% rename from .yarn/cache/preact-npm-10.15.0-e947074de2-6fa78d3179.zip rename to .yarn/cache/preact-npm-10.15.1-bd458de913-dabad11843.zip index 3b471a965b..430b4d6c3d 100644 Binary files a/.yarn/cache/preact-npm-10.15.0-e947074de2-6fa78d3179.zip and b/.yarn/cache/preact-npm-10.15.1-bd458de913-dabad11843.zip differ diff --git a/.yarn/cache/prettier-npm-2.8.8-430828a36c-b49e409431.zip b/.yarn/cache/prettier-npm-2.8.8-430828a36c-b49e409431.zip new file mode 100644 index 0000000000..b144a3bc5d Binary files /dev/null and b/.yarn/cache/prettier-npm-2.8.8-430828a36c-b49e409431.zip differ diff --git a/.yarn/cache/printable-characters-npm-1.0.42-88f6789fd4-2724aa0291.zip b/.yarn/cache/printable-characters-npm-1.0.42-88f6789fd4-2724aa0291.zip new file mode 100644 index 0000000000..21f51c3659 Binary files /dev/null and b/.yarn/cache/printable-characters-npm-1.0.42-88f6789fd4-2724aa0291.zip differ diff --git a/.yarn/cache/qs-npm-6.11.2-b118bc1c6f-e812f3c590.zip b/.yarn/cache/qs-npm-6.11.2-b118bc1c6f-e812f3c590.zip new file mode 100644 index 0000000000..e6e6f34e19 Binary files /dev/null and b/.yarn/cache/qs-npm-6.11.2-b118bc1c6f-e812f3c590.zip differ diff --git a/.yarn/cache/react-icons-npm-4.10.1-74abe904b6-b6c8d4fe48.zip b/.yarn/cache/react-icons-npm-4.10.1-74abe904b6-b6c8d4fe48.zip new file mode 100644 index 0000000000..12e56a61ac Binary files /dev/null and b/.yarn/cache/react-icons-npm-4.10.1-74abe904b6-b6c8d4fe48.zip differ diff --git a/.yarn/cache/remix-auth-twitter-npm-1.0.0-3c74c29331-b2f8dbd174.zip b/.yarn/cache/remix-auth-twitter-npm-1.0.0-3c74c29331-b2f8dbd174.zip deleted file mode 100644 index e432a410d8..0000000000 Binary files a/.yarn/cache/remix-auth-twitter-npm-1.0.0-3c74c29331-b2f8dbd174.zip and /dev/null differ diff --git a/.yarn/cache/remix-auth-twitter-npm-2.0.1-3e0329223a-520ceefd96.zip b/.yarn/cache/remix-auth-twitter-npm-2.0.1-3e0329223a-520ceefd96.zip new file mode 100644 index 0000000000..67206e0545 Binary files /dev/null and b/.yarn/cache/remix-auth-twitter-npm-2.0.1-3e0329223a-520ceefd96.zip differ diff --git a/.yarn/cache/resolve-npm-1.22.3-f7dee15274-fb834b8134.zip b/.yarn/cache/resolve-npm-1.22.3-f7dee15274-fb834b8134.zip new file mode 100644 index 0000000000..f3daae8bc8 Binary files /dev/null and b/.yarn/cache/resolve-npm-1.22.3-f7dee15274-fb834b8134.zip differ diff --git a/.yarn/cache/resolve-patch-8df1eb26d0-ad59734723.zip b/.yarn/cache/resolve-patch-8df1eb26d0-ad59734723.zip new file mode 100644 index 0000000000..7d4960beb5 Binary files /dev/null and b/.yarn/cache/resolve-patch-8df1eb26d0-ad59734723.zip differ diff --git a/.yarn/cache/semiver-npm-1.1.0-74aef11f2f-87e78c4fca.zip b/.yarn/cache/semiver-npm-1.1.0-74aef11f2f-87e78c4fca.zip deleted file mode 100644 index 55b6446f73..0000000000 Binary files a/.yarn/cache/semiver-npm-1.1.0-74aef11f2f-87e78c4fca.zip and /dev/null differ diff --git a/.yarn/cache/semver-npm-5.7.1-40bcea106b-57fd0acfd0.zip b/.yarn/cache/semver-npm-5.7.1-40bcea106b-57fd0acfd0.zip deleted file mode 100644 index 68795d8776..0000000000 Binary files a/.yarn/cache/semver-npm-5.7.1-40bcea106b-57fd0acfd0.zip and /dev/null differ diff --git a/.yarn/cache/semver-npm-5.7.2-938ee91eaa-fb4ab5e0dd.zip b/.yarn/cache/semver-npm-5.7.2-938ee91eaa-fb4ab5e0dd.zip new file mode 100644 index 0000000000..1a2673b793 Binary files /dev/null and b/.yarn/cache/semver-npm-5.7.2-938ee91eaa-fb4ab5e0dd.zip differ diff --git a/.yarn/cache/set-cookie-parser-npm-2.6.0-a7dd154236-bf11ebc594.zip b/.yarn/cache/set-cookie-parser-npm-2.6.0-a7dd154236-bf11ebc594.zip new file mode 100644 index 0000000000..af793cde03 Binary files /dev/null and b/.yarn/cache/set-cookie-parser-npm-2.6.0-a7dd154236-bf11ebc594.zip differ diff --git a/.yarn/cache/stack-trace-npm-0.0.10-9460b173e1-473036ad32.zip b/.yarn/cache/stack-trace-npm-0.0.10-9460b173e1-473036ad32.zip deleted file mode 100644 index 6674dc5c4f..0000000000 Binary files a/.yarn/cache/stack-trace-npm-0.0.10-9460b173e1-473036ad32.zip and /dev/null differ diff --git a/.yarn/cache/stacktracey-npm-2.1.8-1824f88839-abd8316b4e.zip b/.yarn/cache/stacktracey-npm-2.1.8-1824f88839-abd8316b4e.zip new file mode 100644 index 0000000000..8e2f28d9a4 Binary files /dev/null and b/.yarn/cache/stacktracey-npm-2.1.8-1824f88839-abd8316b4e.zip differ diff --git a/.yarn/cache/stoppable-npm-1.1.0-23cdcad1a6-63104fcbde.zip b/.yarn/cache/stoppable-npm-1.1.0-23cdcad1a6-63104fcbde.zip new file mode 100644 index 0000000000..a5fa490929 Binary files /dev/null and b/.yarn/cache/stoppable-npm-1.1.0-23cdcad1a6-63104fcbde.zip differ diff --git a/.yarn/cache/strip-final-newline-npm-3.0.0-7972cbec8b-23ee263adf.zip b/.yarn/cache/strip-final-newline-npm-3.0.0-7972cbec8b-23ee263adf.zip deleted file mode 100644 index 9cbcced9e8..0000000000 Binary files a/.yarn/cache/strip-final-newline-npm-3.0.0-7972cbec8b-23ee263adf.zip and /dev/null differ diff --git a/.yarn/cache/stripe-npm-12.9.0-9bb9987347-a860736592.zip b/.yarn/cache/stripe-npm-12.9.0-9bb9987347-a860736592.zip new file mode 100644 index 0000000000..d845c77701 Binary files /dev/null and b/.yarn/cache/stripe-npm-12.9.0-9bb9987347-a860736592.zip differ diff --git a/.yarn/cache/sucrase-npm-3.34.0-434160cdf2-61860063bd.zip b/.yarn/cache/sucrase-npm-3.34.0-434160cdf2-61860063bd.zip new file mode 100644 index 0000000000..daa2b4d2ae Binary files /dev/null and b/.yarn/cache/sucrase-npm-3.34.0-434160cdf2-61860063bd.zip differ diff --git a/.yarn/cache/tailwindcss-npm-3.1.8-cd1248272f-86480301fc.zip b/.yarn/cache/tailwindcss-npm-3.1.8-cd1248272f-86480301fc.zip deleted file mode 100644 index 69352d149e..0000000000 Binary files a/.yarn/cache/tailwindcss-npm-3.1.8-cd1248272f-86480301fc.zip and /dev/null differ diff --git a/.yarn/cache/tailwindcss-npm-3.3.3-1cb35d024e-0195c7a3eb.zip b/.yarn/cache/tailwindcss-npm-3.3.3-1cb35d024e-0195c7a3eb.zip new file mode 100644 index 0000000000..48c1832b9f Binary files /dev/null and b/.yarn/cache/tailwindcss-npm-3.3.3-1cb35d024e-0195c7a3eb.zip differ diff --git a/.yarn/cache/tldts-core-npm-6.0.14-801479fc1f-c1946b259a.zip b/.yarn/cache/tldts-core-npm-6.0.14-801479fc1f-c1946b259a.zip new file mode 100644 index 0000000000..5730c721c6 Binary files /dev/null and b/.yarn/cache/tldts-core-npm-6.0.14-801479fc1f-c1946b259a.zip differ diff --git a/.yarn/cache/tldts-npm-6.0.14-12698dfa20-d59264aacb.zip b/.yarn/cache/tldts-npm-6.0.14-12698dfa20-d59264aacb.zip new file mode 100644 index 0000000000..625c153125 Binary files /dev/null and b/.yarn/cache/tldts-npm-6.0.14-12698dfa20-d59264aacb.zip differ diff --git a/.yarn/cache/ts-interface-checker-npm-0.1.13-0c7b064494-20c29189c2.zip b/.yarn/cache/ts-interface-checker-npm-0.1.13-0c7b064494-20c29189c2.zip new file mode 100644 index 0000000000..db41941a3a Binary files /dev/null and b/.yarn/cache/ts-interface-checker-npm-0.1.13-0c7b064494-20c29189c2.zip differ diff --git a/.yarn/cache/tslib-npm-2.5.3-7756051e02-88902b309a.zip b/.yarn/cache/tslib-npm-2.5.3-7756051e02-88902b309a.zip new file mode 100644 index 0000000000..c465ec16d6 Binary files /dev/null and b/.yarn/cache/tslib-npm-2.5.3-7756051e02-88902b309a.zip differ diff --git a/.yarn/cache/tweetnacl-npm-1.0.3-b7eef04660-e4a57cac18.zip b/.yarn/cache/tweetnacl-npm-1.0.3-b7eef04660-e4a57cac18.zip new file mode 100644 index 0000000000..eb6ea70626 Binary files /dev/null and b/.yarn/cache/tweetnacl-npm-1.0.3-b7eef04660-e4a57cac18.zip differ diff --git a/.yarn/cache/tweetnacl-util-npm-0.15.1-1a24bc512a-ae6aa8a52c.zip b/.yarn/cache/tweetnacl-util-npm-0.15.1-1a24bc512a-ae6aa8a52c.zip new file mode 100644 index 0000000000..c493b5a805 Binary files /dev/null and b/.yarn/cache/tweetnacl-util-npm-0.15.1-1a24bc512a-ae6aa8a52c.zip differ diff --git a/.yarn/cache/typescript-npm-5.1.3-ff9af2aba1-d9d51862d9.zip b/.yarn/cache/typescript-npm-5.1.3-ff9af2aba1-d9d51862d9.zip new file mode 100644 index 0000000000..e3cbe94271 Binary files /dev/null and b/.yarn/cache/typescript-npm-5.1.3-ff9af2aba1-d9d51862d9.zip differ diff --git a/.yarn/cache/typescript-patch-7747aa5a5c-32a25b2e12.zip b/.yarn/cache/typescript-patch-7747aa5a5c-32a25b2e12.zip new file mode 100644 index 0000000000..cde82e8c22 Binary files /dev/null and b/.yarn/cache/typescript-patch-7747aa5a5c-32a25b2e12.zip differ diff --git a/.yarn/cache/undici-npm-5.20.0-e0d42e5e9b-25412a785b.zip b/.yarn/cache/undici-npm-5.20.0-e0d42e5e9b-25412a785b.zip deleted file mode 100644 index 943b3ad7d1..0000000000 Binary files a/.yarn/cache/undici-npm-5.20.0-e0d42e5e9b-25412a785b.zip and /dev/null differ diff --git a/.yarn/cache/undici-npm-5.26.3-bdeea4fdde-aaa9aadb71.zip b/.yarn/cache/undici-npm-5.26.3-bdeea4fdde-aaa9aadb71.zip new file mode 100644 index 0000000000..b6108c8e11 Binary files /dev/null and b/.yarn/cache/undici-npm-5.26.3-bdeea4fdde-aaa9aadb71.zip differ diff --git a/.yarn/cache/urlpattern-polyfill-npm-4.0.3-960ed5350a-96ac2aea49.zip b/.yarn/cache/urlpattern-polyfill-npm-4.0.3-960ed5350a-96ac2aea49.zip deleted file mode 100644 index 63c1290a9b..0000000000 Binary files a/.yarn/cache/urlpattern-polyfill-npm-4.0.3-960ed5350a-96ac2aea49.zip and /dev/null differ diff --git a/.yarn/cache/utf8-codec-npm-1.0.0-5eceb329a7-864e9b840e.zip b/.yarn/cache/utf8-codec-npm-1.0.0-5eceb329a7-864e9b840e.zip new file mode 100644 index 0000000000..db043e6d5d Binary files /dev/null and b/.yarn/cache/utf8-codec-npm-1.0.0-5eceb329a7-864e9b840e.zip differ diff --git a/.yarn/cache/validate-npm-package-name-npm-4.0.0-3f82c77ef8-a32fd537ba.zip b/.yarn/cache/validate-npm-package-name-npm-4.0.0-3f82c77ef8-a32fd537ba.zip deleted file mode 100644 index 2ea767c585..0000000000 Binary files a/.yarn/cache/validate-npm-package-name-npm-4.0.0-3f82c77ef8-a32fd537ba.zip and /dev/null differ diff --git a/.yarn/cache/viem-npm-0.3.39-67d4ed85f4-f7d62d3fb0.zip b/.yarn/cache/viem-npm-1.0.0-df6873588e-4ecc438a66.zip similarity index 63% rename from .yarn/cache/viem-npm-0.3.39-67d4ed85f4-f7d62d3fb0.zip rename to .yarn/cache/viem-npm-1.0.0-df6873588e-4ecc438a66.zip index 253369782d..ae2aaf42fe 100644 Binary files a/.yarn/cache/viem-npm-0.3.39-67d4ed85f4-f7d62d3fb0.zip and b/.yarn/cache/viem-npm-1.0.0-df6873588e-4ecc438a66.zip differ diff --git a/.yarn/cache/wagmi-npm-1.0.9-b4c0e7a262-1777e6aadd.zip b/.yarn/cache/wagmi-npm-1.0.9-b4c0e7a262-1777e6aadd.zip deleted file mode 100644 index 20510dfd35..0000000000 Binary files a/.yarn/cache/wagmi-npm-1.0.9-b4c0e7a262-1777e6aadd.zip and /dev/null differ diff --git a/.yarn/cache/wagmi-npm-1.1.1-0767eb55a6-cefc5cf11c.zip b/.yarn/cache/wagmi-npm-1.1.1-0767eb55a6-cefc5cf11c.zip new file mode 100644 index 0000000000..ceae1cc2f1 Binary files /dev/null and b/.yarn/cache/wagmi-npm-1.1.1-0767eb55a6-cefc5cf11c.zip differ diff --git a/.yarn/cache/webcrypto-core-npm-1.7.7-bb22025843-1dc5aedb25.zip b/.yarn/cache/webcrypto-core-npm-1.7.7-bb22025843-1dc5aedb25.zip new file mode 100644 index 0000000000..f9581a3a16 Binary files /dev/null and b/.yarn/cache/webcrypto-core-npm-1.7.7-bb22025843-1dc5aedb25.zip differ diff --git a/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip b/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip deleted file mode 100644 index 518977eb88..0000000000 Binary files a/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip and /dev/null differ diff --git a/.yarn/cache/word-wrap-npm-1.2.4-7a75a0d62c-8f1f2e0a39.zip b/.yarn/cache/word-wrap-npm-1.2.4-7a75a0d62c-8f1f2e0a39.zip new file mode 100644 index 0000000000..37a84b30e5 Binary files /dev/null and b/.yarn/cache/word-wrap-npm-1.2.4-7a75a0d62c-8f1f2e0a39.zip differ diff --git a/.yarn/cache/workerd-npm-1.20230710.0-42bf4767c1-944614d1aa.zip b/.yarn/cache/workerd-npm-1.20230710.0-42bf4767c1-944614d1aa.zip new file mode 100644 index 0000000000..04a6aefea4 Binary files /dev/null and b/.yarn/cache/workerd-npm-1.20230710.0-42bf4767c1-944614d1aa.zip differ diff --git a/.yarn/cache/wrangler-npm-2.14.0-0bab972a8c-c7cdd467f4.zip b/.yarn/cache/wrangler-npm-2.14.0-0bab972a8c-c7cdd467f4.zip deleted file mode 100644 index 46de49f1ab..0000000000 Binary files a/.yarn/cache/wrangler-npm-2.14.0-0bab972a8c-c7cdd467f4.zip and /dev/null differ diff --git a/.yarn/cache/wrangler-npm-3.2.0-8f0769f4aa-7be4f53fcf.zip b/.yarn/cache/wrangler-npm-3.2.0-8f0769f4aa-7be4f53fcf.zip new file mode 100644 index 0000000000..a761aa3bc2 Binary files /dev/null and b/.yarn/cache/wrangler-npm-3.2.0-8f0769f4aa-7be4f53fcf.zip differ diff --git a/.yarn/cache/ws-npm-8.13.0-26ffa3016a-53e991bbf9.zip b/.yarn/cache/ws-npm-8.13.0-26ffa3016a-53e991bbf9.zip new file mode 100644 index 0000000000..74e59aab9d Binary files /dev/null and b/.yarn/cache/ws-npm-8.13.0-26ffa3016a-53e991bbf9.zip differ diff --git a/.yarn/cache/youch-npm-2.2.2-6f77397ebf-e81644ad94.zip b/.yarn/cache/youch-npm-2.2.2-6f77397ebf-e81644ad94.zip deleted file mode 100644 index d2e7f7a2ba..0000000000 Binary files a/.yarn/cache/youch-npm-2.2.2-6f77397ebf-e81644ad94.zip and /dev/null differ diff --git a/.yarn/cache/youch-npm-3.2.3-3b2222977f-c0faced381.zip b/.yarn/cache/youch-npm-3.2.3-3b2222977f-c0faced381.zip new file mode 100644 index 0000000000..18d8d784ac Binary files /dev/null and b/.yarn/cache/youch-npm-3.2.3-3b2222977f-c0faced381.zip differ diff --git a/.yarn/cache/zod-npm-3.21.4-9f570b215c-f185ba8734.zip b/.yarn/cache/zod-npm-3.21.4-9f570b215c-f185ba8734.zip new file mode 100644 index 0000000000..70fad1d021 Binary files /dev/null and b/.yarn/cache/zod-npm-3.21.4-9f570b215c-f185ba8734.zip differ diff --git a/.yarn/cache/zod-npm-3.22.4-2bccbc41b4-80bfd7f803.zip b/.yarn/cache/zod-npm-3.22.4-2bccbc41b4-80bfd7f803.zip new file mode 100644 index 0000000000..05a3c8d240 Binary files /dev/null and b/.yarn/cache/zod-npm-3.22.4-2bccbc41b4-80bfd7f803.zip differ diff --git a/README.md b/README.md index 136e94bd0b..cbbe1d8e49 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,8 @@ ##### Platform +![](https://github.com/proofzero/rollupid/actions/workflows/main-core.yaml/badge.svg) ![](https://github.com/proofzero/rollupid/actions/workflows/main-galaxy.yaml/badge.svg) -![](https://github.com/proofzero/rollupid/actions/workflows/main-edges.yaml/badge.svg) -![](https://github.com/proofzero/rollupid/actions/workflows/main-starbase.yaml/badge.svg) -![](https://github.com/proofzero/rollupid/actions/workflows/main-access.yaml/badge.svg) -![](https://github.com/proofzero/rollupid/actions/workflows/main-address.yaml/badge.svg) -![](https://github.com/proofzero/rollupid/actions/workflows/main-account.yaml/badge.svg) ![](https://github.com/proofzero/rollupid/actions/workflows/main-images.yaml/badge.svg) ![](https://github.com/proofzero/rollupid/actions/workflows/main-email.yaml/badge.svg) diff --git a/apps/console/.dev.vars.example b/apps/console/.dev.vars.example index 70751c4bab..4162869681 100644 --- a/apps/console/.dev.vars.example +++ b/apps/console/.dev.vars.example @@ -1,2 +1,8 @@ +SECRET_SESSION_SALT = "" SECRET_SESSION_KEY = "" INTERNAL_GOOGLE_ANALYTICS_TAG = "G-NHNH4KRWC3" + +SECRET_STRIPE_API_KEY = "" +SECRET_STRIPE_WEBHOOK_SECRET = "" +SECRET_STRIPE_PRO_PLAN_ID = "" +SECRET_STRIPE_GROUP_SEAT_PLAN_ID = "" diff --git a/apps/console/app/assets/auth-side-graphics.svg b/apps/console/app/assets/auth-side-graphics.svg new file mode 100644 index 0000000000..1a3b75b66e --- /dev/null +++ b/apps/console/app/assets/auth-side-graphics.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/console/app/assets/console-social.png b/apps/console/app/assets/console-social.png deleted file mode 100644 index c6d372acd9..0000000000 Binary files a/apps/console/app/assets/console-social.png and /dev/null differ diff --git a/apps/console/app/components/AppBox/index.tsx b/apps/console/app/components/AppBox/index.tsx index f2f21ab832..4909864ef8 100644 --- a/apps/console/app/components/AppBox/index.tsx +++ b/apps/console/app/components/AppBox/index.tsx @@ -3,6 +3,7 @@ */ // TODO migrate to FolderPlusIcon and remove bespoke version +import { ServicePlanType } from '@proofzero/types/billing' import { ApplicationList } from '../Applications/ApplicationList' // AppBox @@ -16,11 +17,17 @@ type AppBoxProps = { published?: boolean createdTimestamp?: number icon?: string + hasCustomDomain: boolean + appPlan: ServicePlanType + groupName?: string + groupID?: string + groupPaymentFailed?: boolean }[] // Link target for creating a new application. createLink: string onCreate: () => void navigate: (clientId: string) => void + transfer: (clientId: string) => void } export default function AppBox(props: AppBoxProps) { @@ -31,6 +38,11 @@ export default function AppBox(props: AppBoxProps) { createdTimestamp: app.createdTimestamp, published: app.published, icon: app.icon, + hasCustomDomain: app.hasCustomDomain, + appPlan: app.appPlan, + groupName: app.groupName, + groupPaymentFailed: app.groupPaymentFailed, + groupID: app.groupID, })) return ( @@ -39,6 +51,7 @@ export default function AppBox(props: AppBoxProps) { applications={mappedApps} onCreate={props.onCreate} navigate={props.navigate} + transfer={props.transfer} /> ) diff --git a/apps/console/app/components/Applications/ApplicationList.tsx b/apps/console/app/components/Applications/ApplicationList.tsx index ad2e4d6efc..c6847d7c46 100644 --- a/apps/console/app/components/Applications/ApplicationList.tsx +++ b/apps/console/app/components/Applications/ApplicationList.tsx @@ -1,5 +1,4 @@ -import { Button } from '@proofzero/design-system/src/atoms/buttons/Button' -import { Text } from '@proofzero/design-system/src/atoms/text/Text' +import { Button, Text } from '@proofzero/design-system' import { useState } from 'react' import { DeleteAppModal } from '../DeleteAppModal/DeleteAppModal' @@ -9,80 +8,150 @@ import { } from './ApplicationListItem' import type { ApplicationListItemProps } from './ApplicationListItem' +import _ from 'lodash' +import { DangerPill } from '@proofzero/design-system/src/atoms/pills/DangerPill' +import { Link } from '@remix-run/react' +import classNames from 'classnames' type ApplicationListProps = { applications: ApplicationListItemProps[] onCreate: () => void navigate: (clientId: string) => void + transfer: (clientId: string) => void + lite?: boolean } export const ApplicationList = ({ applications, onCreate, navigate, + transfer, + lite = false, }: ApplicationListProps) => { const [actionApp, setActionApp] = useState< | { clientId: string name: string + hasCustomDomain: boolean } | undefined >() const [deleteModalOpen, setDeleteModalOpen] = useState(false) + const ownApps = applications.filter((a) => !a.groupID && !a.groupName) + const groupApps = applications.filter((a) => a.groupID && a.groupName) + + const groupedAppsByGroupID = _.groupBy(groupApps, 'groupID') + const groupedApplications = _.mapValues(groupedAppsByGroupID, (apps) => { + return { + groupName: apps[0].groupName, + groupPaymentFailed: apps[0].groupPaymentFailed, + apps, + } + }) + return (
-
- - Your Applications - + {!lite && ( +
+ + Your Applications + - -
+ +
+ )} -
-
- - - Published - -
+ {!lite && ( +
+
+ + + Published + +
-
- - - Unpublished - -
-
+
+ + + Unpublished + +
+
+ )} -
+
{actionApp && ( { setDeleteModalOpen(false) }} - clientId={actionApp?.clientId} + appClientID={actionApp?.clientId} appName={actionApp?.name} + appHasCustomDomain={actionApp?.hasCustomDomain} /> )} - {applications.map((ali) => ( - { - setActionApp({ - clientId, - name: appName, - }) - setDeleteModalOpen(true) - }} - /> +
+ {ownApps.map((ali) => ( + { + setActionApp({ + clientId, + name: appName, + hasCustomDomain, + }) + setDeleteModalOpen(true) + }} + /> + ))} +
+ + {Object.entries(groupedApplications).map(([groupID, entry]) => ( +
+ {!lite && ( +
+ + {entry.groupName} + + + {entry.groupPaymentFailed && ( + + + + )} +
+ )} + + {entry.apps.map((ali) => ( + { + setActionApp({ + clientId, + name: appName, + hasCustomDomain, + }) + setDeleteModalOpen(true) + }} + /> + ))} +
))}
diff --git a/apps/console/app/components/Applications/ApplicationListItem.tsx b/apps/console/app/components/Applications/ApplicationListItem.tsx index 0adfb0316f..9b1f397357 100644 --- a/apps/console/app/components/Applications/ApplicationListItem.tsx +++ b/apps/console/app/components/Applications/ApplicationListItem.tsx @@ -1,8 +1,11 @@ import { Menu, Transition } from '@headlessui/react' +import { Pill } from '@proofzero/design-system/src/atoms/pills/Pill' import { Text } from '@proofzero/design-system/src/atoms/text/Text' +import { ServicePlanType } from '@proofzero/types/billing' import { Fragment } from 'react' import { HiDotsVertical, HiOutlineCog } from 'react-icons/hi' import { HiOutlineTrash } from 'react-icons/hi2' +import { TbArrowsTransferUp } from 'react-icons/tb' type ApplicationListItemPublishedStateProps = { published?: boolean @@ -25,7 +28,7 @@ export const ApplicationListItemIcon = ({ title, iconUrl, }: ApplicationListItemIconProps) => ( -
+
{!iconUrl && ( {title?.substring(0, 1)} )} @@ -39,8 +42,18 @@ export type ApplicationListItemProps = { createdTimestamp?: number icon?: string published?: boolean + hasCustomDomain: boolean + appPlan: ServicePlanType + groupName?: string + groupID?: string + groupPaymentFailed?: boolean navigate?: (clientId: string) => void - onDeleteApplication?: (clientId: string, appName: string) => void + transfer?: (clientId: string) => void + onDeleteApplication?: ( + clientId: string, + appName: string, + hasCustomDomain: boolean + ) => void } export const ApplicationListItem = ({ id, @@ -48,8 +61,11 @@ export const ApplicationListItem = ({ createdTimestamp, icon, published, + hasCustomDomain, onDeleteApplication, navigate, + transfer, + appPlan, }: ApplicationListItemProps) => (
@@ -59,16 +75,21 @@ export const ApplicationListItem = ({
-
{ if (navigate) navigate(id) }} className="hover:underline cursor-pointer" > {name} -
+
+ {appPlan !== ServicePlanType.FREE ? ( + + {appPlan} + + ) : null}
@@ -122,6 +143,26 @@ export const ApplicationListItem = ({
+
+
{ + if (transfer) transfer(id) + }} + className="cursor-pointer" + > + + + + Transfer Application + + +
+
+
{ if (onDeleteApplication) { - onDeleteApplication(id, name ?? '') + onDeleteApplication(id, name ?? '', hasCustomDomain) } }} > diff --git a/apps/console/app/components/Applications/LoginsPanel/LoginsPanel.stories.tsx b/apps/console/app/components/Applications/LoginsPanel/LoginsPanel.stories.tsx index c60534c623..57e8764a85 100644 --- a/apps/console/app/components/Applications/LoginsPanel/LoginsPanel.stories.tsx +++ b/apps/console/app/components/Applications/LoginsPanel/LoginsPanel.stories.tsx @@ -8,16 +8,19 @@ export default { const Template = () => ( diff --git a/apps/console/app/components/Applications/LoginsPanel/LoginsPanel.tsx b/apps/console/app/components/Applications/LoginsPanel/LoginsPanel.tsx index 6dfc029ae4..8ba1623b0f 100644 --- a/apps/console/app/components/Applications/LoginsPanel/LoginsPanel.tsx +++ b/apps/console/app/components/Applications/LoginsPanel/LoginsPanel.tsx @@ -70,7 +70,7 @@ export const LoginsPanel = ({ return (
{authorizedProfiles.length ? ( <> diff --git a/apps/console/app/components/Billing/index.tsx b/apps/console/app/components/Billing/index.tsx new file mode 100644 index 0000000000..e4491a4b3d --- /dev/null +++ b/apps/console/app/components/Billing/index.tsx @@ -0,0 +1,941 @@ +import { Button } from '@proofzero/design-system' +import { Text } from '@proofzero/design-system/src/atoms/text/Text' +import { FaCheck, FaTrash } from 'react-icons/fa' +import { + HiChevronDown, + HiChevronUp, + HiMinus, + HiPlus, + HiOutlineShoppingCart, + HiArrowUp, + HiOutlineX, +} from 'react-icons/hi' +import { + type FetcherWithComponents, + NavLink, + useNavigate, + type SubmitFunction, +} from '@remix-run/react' +import type { AppLoaderData } from '~/root' +import { Popover, Transition } from '@headlessui/react' +import { Listbox } from '@headlessui/react' +import { TbHourglassHigh } from 'react-icons/tb' +import classnames from 'classnames' +import { Modal } from '@proofzero/design-system/src/molecules/modal/Modal' +import { useState } from 'react' +import { ToastWithLink } from '@proofzero/design-system/src/atoms/toast/ToastWithLink' +import { HiArrowNarrowRight } from 'react-icons/hi' +import _ from 'lodash' +import iSvg from '@proofzero/design-system/src/atoms/info/i.svg' +import plans, { PlanDetails } from '~/utils/plans' +import { PaymentData, ServicePlanType } from '@proofzero/types/billing' +import { Spinner } from '@proofzero/packages/design-system/src/atoms/spinner/Spinner' + +export const PlanFeatures = ({ + plan, + featuresColor, +}: { + plan: PlanDetails + featuresColor: 'text-indigo-500' | 'text-gray-500' +}) => { + return ( +
    + {plan.features.map((feature) => ( +
  • +
    + {feature.type === 'current' && ( + + )} + {feature.type === 'future' && ( + + )} +
    + + + {feature.title} + + + {feature.aggregateFeatures && ( + + + + +
      + {feature.aggregateFeatures.map((af) => ( +
    • +
      + {af.type === 'current' && ( + + )} + {af.type === 'future' && ( + + )} +
      + + + {af.title} + +
    • + ))} +
    +
    +
    + )} +
  • + ))} +
+ ) +} + +const PurchaseProModal = ({ + isOpen, + setIsOpen, + plan, + entitlements, + paymentData, + submit, +}: { + isOpen: boolean + setIsOpen: (open: boolean) => void + plan: PlanDetails + entitlements: number + paymentData?: PaymentData + submit: SubmitFunction +}) => { + const [proEntitlementDelta, setProEntitlementDelta] = useState(1) + + return ( + setIsOpen(false)}> +
+
+ + Purchase Entitlement(s) + +
{ + setIsOpen(false) + }} + > + +
+
+ + {!paymentData?.paymentMethodID ? ( +
+ +
+ ) : null} + +
+
+ + {plan.title} + + + + {plan.description} + + + +
+ +
+ +
+
+ + Number of Entitlements + + + {proEntitlementDelta} x ${plan.price}/month + +
+ +
+ + + + + +
+
+ +
+ +
+ + Changes to your subscription + + +
+ {`+$${ + plan.price * proEntitlementDelta + }`} + + per month + +
+
+
+ +
+ +
+ + +
+
+
+ ) +} + +const AssignEntitlementModal = ({ + isOpen, + setIsOpen, + entitlements, + paymentData, + entitlementUsage, + fetcher, + apps, + newAppURL = '/apps/new', +}: { + isOpen: boolean + setIsOpen: (open: boolean) => void + entitlements: number + entitlementUsage: number + paymentData?: PaymentData + fetcher: FetcherWithComponents + apps: AppLoaderData[] + newAppURL?: string +}) => { + const navigate = useNavigate() + + return ( + setIsOpen(false)}> +
+
+
+ + Assign Entitlement(s) + + + {entitlementUsage} of {entitlements} Entitlements used + +
+
{ + setIsOpen(false) + }} + > + +
+
+ {!paymentData?.paymentMethodID ? ( +
+ +
+ ) : null} +
+
+
    + {apps.map((app) => { + return ( +
  • +
    + {app.name} + + {app.appPlan[0] + app.appPlan.slice(1).toLowerCase()}{' '} + Plan + +
    + {app.appPlan === ServicePlanType.PRO ? ( + + ) : ( + <> + {entitlementUsage < entitlements ? ( + + ) : ( + + )} + + )} +
  • + ) + })} +
+
+
+ +
+
+
+
+ ) +} + +const RemoveEntitelmentModal = ({ + isOpen, + setIsOpen, + plan, + entitlements, + entitlementUsage, + paymentData, + submit, +}: { + isOpen: boolean + setIsOpen: (open: boolean) => void + plan: PlanDetails + entitlements: number + entitlementUsage: number + paymentData?: PaymentData + submit: SubmitFunction +}) => { + const [proEntitlementNew, setProEntitlementNew] = useState(entitlementUsage) + + return ( + setIsOpen(false)}> +
+
+ + Remove Entitlement(s) + +
{ + setIsOpen(false) + }} + > + +
+
+
+
+
+ + {plan.title} + +
    +
  • + You are currently using {entitlementUsage}/{entitlements}{' '} + {plan.title} entitlements +
  • +
  • + You can downgrade some of your applications if you'd like to + pay for fewer Entitlements. +
  • +
+
+
+
+
+ + Number of Entitlements + + {`${entitlementUsage} x ${ + plans[ServicePlanType.PRO].price + }/month`} +
+ +
+
+ {entitlements} Entitlements + +
+ +
+ + {({ open }) => { + return ( +
+ + {proEntitlementNew} + {open ? ( + + ) : ( + + )} + + + + {Array.apply(null, Array(entitlements + 1)).map( + (_, i) => { + return i >= entitlementUsage ? ( + + {({ selected }) => { + return ( +
+ {i} +
+ ) + }} +
+ ) : null + } + )} +
+
+
+ ) + }} +
+
+
+
+
+ +
+ + Changes to your subscription + + +
+ {`${ + plan.price * (entitlements - proEntitlementNew) !== 0 + ? '-' + : '' + }$${plan.price * (entitlements - proEntitlementNew)}`} + + per month + +
+
+
+
+
+ + +
+
+
+ ) +} + +const AssignedAppModal = ({ + apps, + isOpen, + setIsOpen, +}: { + apps: AppLoaderData[] + isOpen: boolean + setIsOpen: (isOpen: boolean) => void +}) => { + return ( + setIsOpen(false)}> +
+
+ + Assigned Application(s) + +
{ + setIsOpen(false) + }} + > + +
+
+ +
+
    + {apps.map((app) => ( +
  • +
    + + {app.name} + + + {plans[app.appPlan].title} + +
    + + + + +
  • + ))} +
+
+
+
+ ) +} + +export const PlanCard = ({ + plan, + entitlements, + apps, + paymentData, + submit, + fetcher, + hasUnpaidInvoices = false, + newAppURL, +}: { + plan: PlanDetails + entitlements: number + apps: AppLoaderData[] + paymentData?: PaymentData + hasUnpaidInvoices: boolean + submit: SubmitFunction + fetcher: FetcherWithComponents + newAppURL?: string +}) => { + const [purchaseProModalOpen, setPurchaseProModalOpen] = useState(false) + const [removeEntitlementModalOpen, setRemoveEntitlementModalOpen] = + useState(false) + const [assignedAppModalOpen, setAssignedAppModalOpen] = useState(false) + const [assignEntitlementsModalOpen, setAssignEntitlementsModalOpen] = + useState(false) + + const appsWithAssignedPlan = apps.filter( + (a) => a.appPlan === ServicePlanType.PRO + ) + return ( + <> + + + + +
+
+
+ + {plan.title} + + + {plan.description} + +
+ +
+ + +
+
+
+
+
+ +
+ +
+ + {entitlements > 0 && ( +
+
+
+ + Entitlements + + +
+
+
+ +
+
+ {appsWithAssignedPlan.length > 0 && ( + + )} +
+ + {`${appsWithAssignedPlan.length} out of ${entitlements} Entitlements used`} + +
+
+ +
+ + ${entitlements * plans.PRO.price} + + + per month + +
+
+
+ )} +
+
+ {entitlements === 0 && ( +
+ +
+ )} + {entitlements > appsWithAssignedPlan.length && ( +
+ +
+ )} +
+
+ + ) +} diff --git a/apps/console/app/components/Billing/seating.tsx b/apps/console/app/components/Billing/seating.tsx new file mode 100644 index 0000000000..21c81472eb --- /dev/null +++ b/apps/console/app/components/Billing/seating.tsx @@ -0,0 +1,543 @@ +import { Listbox, Transition } from '@headlessui/react' +import { Button } from '@proofzero/design-system' +import { Text } from '@proofzero/design-system/src/atoms/text/Text' +import { ToastWithLink } from '@proofzero/design-system/src/atoms/toast/ToastWithLink' +import { Modal } from '@proofzero/design-system/src/molecules/modal/Modal' +import { IDENTITY_GROUP_OPTIONS } from '@proofzero/platform/identity/src/constants' +import { PaymentData } from '@proofzero/types/billing' +import { IdentityGroupURNSpace } from '@proofzero/urns/identity-group' +import { Link } from '@remix-run/react' +import classnames from 'classnames' +import { useState } from 'react' +import { FaTrash } from 'react-icons/fa' +import { + HiArrowNarrowRight, + HiChevronDown, + HiChevronUp, + HiMinus, + HiOutlineShoppingCart, + HiOutlineX, + HiPlus, +} from 'react-icons/hi' + +const seatingCost = 42 + +export const PurchaseGroupSeatingModal = ({ + isOpen, + setIsOpen, + groupID, + paymentData, + purchaseFn, +}: { + isOpen: boolean + setIsOpen: (open: boolean) => void + groupID: string + paymentData?: PaymentData + purchaseFn: (quantity: number) => void +}) => { + const [seatCountDelta, setSeatCountDelta] = useState(1) + + return ( + setIsOpen(false)}> +
+
+ + Purchase Additional User Seats + +
{ + setIsOpen(false) + }} + > + +
+
+ + {!paymentData?.paymentMethodID && ( +
+ +
+ )} + +
+
+ + Additional User Seats + + + + Each group has {IDENTITY_GROUP_OPTIONS.maxFreeMembers} free user + seats. If you wish to add more than{' '} + {IDENTITY_GROUP_OPTIONS.maxFreeMembers} members, additional seats + need to be purchased. + +
+ +
+ +
+
+ + Additional User Seats + + + {seatCountDelta} x ${seatingCost}/month + +
+ +
+ + + + + +
+
+ +
+ +
+ + Changes to your subscription + + +
+ {`+$${ + seatingCost * seatCountDelta + }`} + + per month + +
+
+
+ +
+ +
+ + +
+
+
+ ) +} + +export const RemoveGroupSeatingModal = ({ + isOpen, + setIsOpen, + removalFn, + seatsUsed, + totalSeats, + paymentIsSetup, +}: { + isOpen: boolean + setIsOpen: (open: boolean) => void + removalFn: (quantity: number) => void + seatsUsed: number + totalSeats: number + paymentIsSetup: boolean +}) => { + const [seatsNew, setSeatsNew] = useState(seatsUsed) + return ( + setIsOpen(false)}> +
+
+ + Remove Additional User Seat(s) + +
{ + setIsOpen(false) + }} + > + +
+
+
+
+
+ + Additional User Seats + +
    +
  • + You are currently using {seatsUsed}/{totalSeats} Additional + User Seats +
  • +
  • + You can remove some Members of your Group if you'd like to pay + for fewer Seats. +
  • +
+
+
+
+
+ + Number of Additional Seats + + {`${totalSeats} x ${seatingCost}/month`} +
+ +
+
+ {totalSeats} Seat(s) + +
+ +
+ + {({ open }) => { + return ( +
+ + {seatsNew} + {open ? ( + + ) : ( + + )} + + + + {Array.apply(null, Array(totalSeats + 1)).map( + (_, i) => { + return i >= seatsUsed ? ( + + {({ selected }) => { + return ( +
+ {i} +
+ ) + }} +
+ ) : null + } + )} +
+
+
+ ) + }} +
+
+
+
+
+ +
+ + Changes to your subscription + + +
+ {`${ + seatingCost * (totalSeats - seatsNew) !== 0 ? '-' : '' + }$${seatingCost * (totalSeats - seatsNew)}`} + + per month + +
+
+
+
+
+ + +
+
+
+ ) +} + +export const GroupSeatingCard = ({ + groupID, + seatsTotal, + seatsUsed, + paymentData, + purchaseFn, + removalFn, +}: { + groupID: string + seatsTotal: number + seatsUsed: number + paymentData?: PaymentData + purchaseFn: (quantity: number) => void + removalFn: (quantity: number) => void +}) => { + const [isPurchaseModalOpen, setIsPurchaseModalOpen] = useState(false) + const [isRemovalModalOpen, setIsRemovalModalOpen] = useState(false) + + return ( + <> + + + + +
+
+
+ + Additional User Seats + + + Each group has {IDENTITY_GROUP_OPTIONS.maxFreeMembers} free user + seats. If you wish to add more than{' '} + {IDENTITY_GROUP_OPTIONS.maxFreeMembers} members, additional seats + need to be purchased. + +
+ +
+ +
+
+
+ {seatsTotal > 0 && ( + <> +
+
+
+
+ + Additional Seats + + +
+
+
+ +
+
+ + + +
+ + {`${seatsUsed} out of ${seatsTotal} Additional Seats used`} + +
+
+ +
+ + {`$${seatingCost * seatsTotal}`} + + + per month + +
+
+
+
+
+ {seatsTotal === 0 && ( +
+ +
+ )} + + {seatsUsed < seatsTotal && ( +
+ +
+ )} +
+ + )} +
+ + ) +} diff --git a/apps/console/app/components/ContactUs/index.tsx b/apps/console/app/components/ContactUs/index.tsx new file mode 100644 index 0000000000..bc24af75b0 --- /dev/null +++ b/apps/console/app/components/ContactUs/index.tsx @@ -0,0 +1,37 @@ +import { Button } from '@proofzero/design-system' +import { IdentityURN } from '@proofzero/urns/identity' +import { Text } from '@proofzero/design-system/src/atoms/text/Text' +import { useRef } from 'react' +import { PopupButton } from '@typeform/embed-react' + +export default ({ urn, type }: { urn: IdentityURN; type: 'btn' | 'text' }) => { + const ref = useRef(null) + const openPopup = () => ref.current?.open() + + return ( + <> + + + {type === 'btn' ? ( + + ) : ( + + Any questions? + + + )} + + ) +} diff --git a/apps/console/app/components/DeleteAppModal/DeleteAppModal.tsx b/apps/console/app/components/DeleteAppModal/DeleteAppModal.tsx index b7e55e7f9c..9d6e02c082 100644 --- a/apps/console/app/components/DeleteAppModal/DeleteAppModal.tsx +++ b/apps/console/app/components/DeleteAppModal/DeleteAppModal.tsx @@ -1,6 +1,8 @@ -import React, { useState } from 'react' +import { useState } from 'react' +import { Link, useFetcher } from '@remix-run/react' +import type { FetcherWithComponents } from '@remix-run/react' -import { Button } from '@proofzero/design-system/src/atoms/buttons/Button' +import { Button } from '@proofzero/design-system' import { Modal } from '@proofzero/design-system/src/molecules/modal/Modal' import { Text } from '@proofzero/design-system/src/atoms/text/Text' @@ -8,95 +10,143 @@ import dangerVector from '../../images/danger.svg' import { Input } from '@proofzero/design-system/src/atoms/form/Input' import { RiLoader5Fill } from 'react-icons/ri' +import { HiOutlineX } from 'react-icons/hi' export type DeleteAppModalProps = { - clientId: string appName: string + appClientID: string + appHasCustomDomain: boolean isOpen: boolean - deleteAppCallback: (app: any) => void + deleteAppCallback: (state: boolean) => unknown } export const DeleteAppModal = ({ - clientId, appName, + appClientID, + appHasCustomDomain, isOpen, deleteAppCallback, }: DeleteAppModalProps) => { - const [isAppNameMatches, setAppNameMatches] = useState(false) - const [isSubmitting, setIsSubmitting] = useState(false) + const fetcher = useFetcher() + const [hasCustomDomain] = useState(Boolean(appHasCustomDomain)) + return ( - deleteAppCallback(false)} - > + deleteAppCallback(false)}>
- + danger
- - Delete Application - - -
{ - setIsSubmitting(true) - }} - > -
- - Are you sure you want to delete {appName} app? This - action cannot be undone once confirmed. - - - Confirm you want to delete this application by typing its name - below. - - { - setAppNameMatches(appName === e?.target?.value) - }} - /> -
- +
+ + Delete Application + + +
-
- - -
-
+ {hasCustomDomain && ( + + )} + {!hasCustomDomain && ( + + )}
) } + +type DeleteModalAppFormProps = { + fetcher: FetcherWithComponents + appClientID: string + appName: string + callback: (state: boolean) => unknown +} + +const DeleteModalAppForm = ({ + fetcher, + appClientID, + appName, + callback, +}: DeleteModalAppFormProps) => { + const [isAppNameMatches, setAppNameMatches] = useState(false) + return ( + +
+ + Are you sure you want to delete {appName} app? This action + cannot be undone once confirmed. + + + Confirm you want to delete this application by typing its name below. + + setAppNameMatches(appName === e?.target?.value)} + /> +
+ + +
+ + +
+
+ ) +} + +type HasCustomDomainProps = { + clientID: string +} + +const HasCustomDomain = ({ clientID }: HasCustomDomainProps) => ( +
+ + This application has a custom domain configured. You need to delete it + before you can delete the application. + + + + + +
+) diff --git a/apps/console/app/components/EarlyAccess/EarlyAccessPanel.tsx b/apps/console/app/components/EarlyAccess/EarlyAccessPanel.tsx index 056c2c8c5b..b59944242c 100644 --- a/apps/console/app/components/EarlyAccess/EarlyAccessPanel.tsx +++ b/apps/console/app/components/EarlyAccess/EarlyAccessPanel.tsx @@ -1,25 +1,46 @@ import { Text } from '@proofzero/design-system/src/atoms/text/Text' import { FeaturePill } from '@proofzero/design-system/src/atoms/pills/FeaturePill' -import { ButtonAnchor } from '@proofzero/design-system/src/atoms/buttons/ButtonAnchor' -import { FaDiscord, FaGithub, FaTwitter } from 'react-icons/fa' import { DocumentationBadge } from '../DocumentationBadge' +import type { IdentityURN } from '@proofzero/urns/identity' +import ContactUs from '../ContactUs' +import { ServicePlanType } from '@proofzero/types/billing' +import { isPlanGuarded } from '~/utils/planGate' +import plans from '~/utils/plans' +import _ from 'lodash' +import { TbLock } from 'react-icons/tb' +import { Button } from '@proofzero/design-system' +import { NavLink } from '@remix-run/react' type EarlyAccessPanelProps = { + clientID: string title: string subtitle: string copy: string imgSrc: string url: string imgClassName?: string + currentPlan: ServicePlanType + featurePlan?: ServicePlanType + identityURN: IdentityURN + earlyAccess: boolean + showPreviewButton?: boolean + handlePreviewButtonClick?: () => void } const EarlyAccessPanel = ({ + clientID, title, subtitle, copy, imgSrc, url, imgClassName, + currentPlan, + featurePlan, + identityURN, + earlyAccess, + showPreviewButton = false, + handlePreviewButtonClick, }: EarlyAccessPanelProps) => { return ( <> @@ -36,48 +57,52 @@ const EarlyAccessPanel = ({
-
- +
+ {featurePlan && ( + + )} + {earlyAccess && }
- {subtitle} - {copy} -
-
- - Follow us for updates - - -
- - - - Twitter - +
+ {featurePlan && isPlanGuarded(currentPlan, featurePlan) && ( + + + + )} - - - - Discord - - - - - - GitHub - -
+ Preview + + )}
+ +
diff --git a/apps/console/app/components/IconPicker/index.tsx b/apps/console/app/components/IconPicker/index.tsx index deda3cacca..a9276fdadd 100644 --- a/apps/console/app/components/IconPicker/index.tsx +++ b/apps/console/app/components/IconPicker/index.tsx @@ -19,7 +19,8 @@ function pickIcon( height: number }, minWidth?: number, - minHeight?: number + minHeight?: number, + variant: string = 'public' ) { return (e: any) => new Promise(async (ok) => { @@ -86,12 +87,12 @@ function pickIcon( body: formData, }).then((res) => res.json()) - const publicVariantUrls = cfUploadRes.result.variants.filter((v) => - v.endsWith('public') + const variantUrls = cfUploadRes.result.variants.filter((v) => + v.endsWith(variant) ) - if (publicVariantUrls.length) { - setIconUrl(publicVariantUrls[0]) + if (variantUrls.length) { + setIconUrl(variantUrls[0]) } } @@ -128,6 +129,7 @@ type IconPickerProps = { setIsFormChanged: (val: boolean) => void setIsImgUploading: (val: boolean) => void imageUploadCallback?: (url: string) => void + variant?: string } export default function IconPicker({ @@ -143,6 +145,7 @@ export default function IconPicker({ setIsFormChanged, setIsImgUploading, imageUploadCallback = () => {}, + variant, }: IconPickerProps) { const [icon, setIcon] = useState('') const [iconUrl, setIconUrl] = useState('') @@ -204,13 +207,6 @@ export default function IconPicker({ e.stopPropagation() } - const appIcon = - icon !== '' ? ( - Application icon - ) : ( -
@@ -283,7 +289,8 @@ export default function IconPicker({ maxSize, aspectRatio, minWidth, - minHeight + minHeight, + variant )(event) if (Object.keys(errors).length) { setInvalidState(true) diff --git a/apps/console/app/components/RotateCredsModal/RotateCredsModal.tsx b/apps/console/app/components/RotateCredsModal/RotateCredsModal.tsx index 0852bd94b9..60cfcbbaf7 100644 --- a/apps/console/app/components/RotateCredsModal/RotateCredsModal.tsx +++ b/apps/console/app/components/RotateCredsModal/RotateCredsModal.tsx @@ -1,10 +1,10 @@ import React from 'react' -import { Button } from '@proofzero/design-system/src/atoms/buttons/Button' +import { Button, Text } from '@proofzero/design-system' import { Modal } from '@proofzero/design-system/src/molecules/modal/Modal' -import { Text } from '@proofzero/design-system/src/atoms/text/Text' import dangerVector from '../../images/danger.svg' +import { HiOutlineX } from 'react-icons/hi' export type RotateCredsModalProps = { isOpen: boolean @@ -18,17 +18,28 @@ export const RotateCredsModal = ({ rotateCallback, }: RotateCredsModalProps) => { return ( - closeCallback()}> + closeCallback()}>
- + danger
- - Roll Key - +
+ + Roll Key + +
{ + closeCallback() + }} + > + +
+
diff --git a/apps/console/app/components/SiteHeader/sign-out-link.tsx b/apps/console/app/components/SiteHeader/sign-out-link.tsx index 66717f7ba5..376249ddb1 100644 --- a/apps/console/app/components/SiteHeader/sign-out-link.tsx +++ b/apps/console/app/components/SiteHeader/sign-out-link.tsx @@ -3,16 +3,24 @@ import { Text } from '@proofzero/design-system/src/atoms/text/Text' import { HiOutlineLogout } from 'react-icons/hi' +import { usePostHog } from 'posthog-js/react' + export default function SignOut({ className }: { className: string }) { let submit = useSubmit() + const posthog = usePostHog() + return (
)) +} function AppMenu({ props, close }: AppMenuProps) { + const appPlan = props.apps.find((a) => a.clientId === props.selected)?.appPlan + return (
- + {props.selected && (
- {AppSubmenu(props.selected, close)} + {AppSubmenu(props.selected, appPlan, close)}
)}
@@ -330,11 +380,46 @@ type ExternalLinksProps = { PASSPORT_URL: string docsURL: string close?: () => void + paymentFailedIdentityGroups: IdentityGroupURN[] } -function ExternalLinks({ PASSPORT_URL, docsURL }: ExternalLinksProps) { +function ExternalLinks({ + PASSPORT_URL, + docsURL, + paymentFailedIdentityGroups, +}: ExternalLinksProps) { return (
+
+ `${menuItemClass(isActive, false)} `} + > + +
+ + Groups + +
+
+
+
+ `${menuItemClass(isActive, false)} `} + > + +
+ + Billing & Invoicing + + + {paymentFailedIdentityGroups?.length > 0 && ( + + )} +
+
+
- +
User Settings diff --git a/apps/console/app/entry.server.tsx b/apps/console/app/entry.server.tsx index 0ac1b7e242..b6a4d37f02 100644 --- a/apps/console/app/entry.server.tsx +++ b/apps/console/app/entry.server.tsx @@ -38,14 +38,30 @@ export default function handleRequest( (nonce, dev) => getCSP({ directives: { - 'default-src': [SELF], + 'default-src': [ + SELF, + 'https://verify.walletconnect.com', + 'form.typeform.com', + 'https://*.stripe.com', + ], 'connect-src': [ SELF, '*.google-analytics.com', + 'wss://relay.walletconnect.com', + 'https://*.g.alchemy.com', 'https://upload.imagedelivery.net', + 'https://analytics.rollup.id', + 'https://maps.googleapis.com', + 'https://api.stripe.com', // Used for Remix WebSocket Live Reaload ...(dev ? ['ws://localhost:*/socket'] : []), ], + 'frame-src': [ + SELF, + 'https://js.stripe.com', + 'https://hooks.stripe.com', + 'form.typeform.com', + ], 'script-src': [SELF, `'nonce-${nonce}' ${STRICT_DYNAMIC}`], 'style-src': [ SELF, diff --git a/apps/console/app/images/console_logo_black_text.svg b/apps/console/app/images/console_logo_black_text.svg new file mode 100644 index 0000000000..a34a337966 --- /dev/null +++ b/apps/console/app/images/console_logo_black_text.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/apps/console/app/images/console_onboarding.svg b/apps/console/app/images/console_onboarding.svg new file mode 100644 index 0000000000..bba7ae0fac --- /dev/null +++ b/apps/console/app/images/console_onboarding.svg @@ -0,0 +1,525 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/console/app/root.tsx b/apps/console/app/root.tsx index 530081fc96..0bbdb47713 100644 --- a/apps/console/app/root.tsx +++ b/apps/console/app/root.tsx @@ -3,9 +3,9 @@ */ import type { - MetaFunction, LinksFunction, LoaderFunction, + MetaFunction, } from '@remix-run/cloudflare' import { Loader } from '@proofzero/design-system/src/molecules/loader/Loader' @@ -25,6 +25,7 @@ import { useLoaderData, useTransition, useCatch, + useFetcher, } from '@remix-run/react' import { useContext, useEffect } from 'react' @@ -38,14 +39,23 @@ import icon16 from './images/favicon-16x16.png' import * as gtag from '~/utils/gtags.client' import { parseJwt, requireJWT } from './utilities/session.server' -import createStarbaseClient from '@proofzero/platform-clients/starbase' -import createAccountClient from '@proofzero/platform-clients/account' +import createCoreClient from '@proofzero/platform-clients/core' import { getAuthzHeaderConditionallyFromToken } from '@proofzero/utils' import { generateTraceContextHeaders } from '@proofzero/platform-middleware/trace' -import type { AccountURN } from '@proofzero/urns/account' + +import type { IdentityURN } from '@proofzero/urns/identity' + import { NonceContext } from '@proofzero/design-system/src/atoms/contexts/nonce-context' + import useTreeshakeHack from '@proofzero/design-system/src/hooks/useTreeshakeHack' import { getRollupReqFunctionErrorWrapper } from '@proofzero/utils/errors' +import { BadRequestError } from '@proofzero/errors' +import posthog from 'posthog-js' +import { PostHogProvider } from 'posthog-js/react' +import { useHydrated } from 'remix-utils' +import { getCurrentAndUpcomingInvoices } from './utils/billing' +import type { ServicePlanType } from '@proofzero/types/billing' +import { registerFeatureFlag } from '@proofzero/design-system/src/hooks/feature-flags' export const links: LinksFunction = () => { return [ @@ -58,62 +68,98 @@ export const links: LinksFunction = () => { ] } -export const meta: MetaFunction = () => ({ - charset: 'utf-8', - title: 'Console - Rollup', - viewport: 'width=device-width,initial-scale=1', -}) +export type AppLoaderData = { + clientId: string + name?: string + icon?: string + published?: boolean + createdTimestamp?: number + appPlan: ServicePlanType + hasCustomDomain: boolean + groupID?: string + groupName?: string +} export type LoaderData = { - apps: { - clientId: string - name?: string - icon?: string - published?: boolean - createdTimestamp?: number - }[] + apps: AppLoaderData[] avatarUrl: string PASSPORT_URL: string displayName: string + hasUnpaidInvoices: boolean + unpaidInvoiceURL: string ENV: { + POSTHOG_API_KEY: string + POSTHOG_PROXY_HOST: string INTERNAL_GOOGLE_ANALYTICS_TAG: string REMIX_DEV_SERVER_WS_PORT?: number WALLET_CONNECT_PROJECT_ID: string } + identityURN: IdentityURN } export const loader: LoaderFunction = getRollupReqFunctionErrorWrapper( async ({ request, context }) => { - const jwt = await requireJWT(request) + if ( + request.cf.botManagement.score <= 30 && + !['localhost', '127.0.0.1'].includes(new URL(request.url).hostname) + ) { + return null + } + const jwt = await requireJWT(request, context.env) + if (!jwt) { + throw new BadRequestError({ + message: 'No JWT found in request.', + }) + } const traceHeader = generateTraceContextHeaders(context.traceSpan) const parsedJwt = parseJwt(jwt) - const accountURN = parsedJwt.sub as AccountURN + const identityURN = parsedJwt.sub as IdentityURN try { - const accountClient = createAccountClient(Account, { - ...getAuthzHeaderConditionallyFromToken(jwt), - ...traceHeader, - }) - const starbaseClient = createStarbaseClient(Starbase, { + const coreClient = createCoreClient(context.env.Core, { ...getAuthzHeaderConditionallyFromToken(jwt), ...traceHeader, }) - const apps = await starbaseClient.listApps.query() - const reshapedApps = apps.map((a) => { - return { + + const [apps, groupApps] = await Promise.all([ + coreClient.starbase.listApps.query(), + coreClient.starbase.listGroupApps.query(), + ]) + + const reshapedApps = [ + ...apps.map((a) => { + return { + clientId: a.clientId, + name: a.app?.name, + icon: a.app?.icon, + published: a.published, + createdTimestamp: a.createdTimestamp, + appPlan: a.appPlan, + hasCustomDomain: Boolean(a.customDomain), + } + }), + ...groupApps.map((a) => ({ clientId: a.clientId, name: a.app?.name, icon: a.app?.icon, published: a.published, createdTimestamp: a.createdTimestamp, - } - }) + appPlan: a.appPlan, + hasCustomDomain: Boolean(a.customDomain), + groupName: a.groupName, + groupID: a.groupURN.split('/')[1], + })), + ].sort( + (a, b) => + a.name!.localeCompare(b.name!) || + (a.createdTimestamp || 0) - (b.createdTimestamp || 0) + ) let avatarUrl = '' let displayName = '' try { - const profile = await accountClient.getProfile.query({ - account: accountURN, + const profile = await coreClient.identity.getProfile.query({ + identity: identityURN, }) avatarUrl = profile?.pfp?.image || '' displayName = profile?.displayName || '' @@ -121,19 +167,59 @@ export const loader: LoaderFunction = getRollupReqFunctionErrorWrapper( console.error('Could not retrieve profile image.', e) } + const { + PASSPORT_URL, + POSTHOG_PROXY_HOST, + POSTHOG_API_KEY, + INTERNAL_GOOGLE_ANALYTICS_TAG, + WALLET_CONNECT_PROJECT_ID, + } = context.env + + const spd = await coreClient.billing.getStripePaymentData.query({ + URN: identityURN, + }) + + // might be quite heavy object + // for that reason I don't put it in outlet context + const invoices = await getCurrentAndUpcomingInvoices( + spd, + context.env.SECRET_STRIPE_API_KEY + ) + + let unpaidInvoiceURL = '/billing/portal' + + let hasUnpaidInvoices = false + try { + hasUnpaidInvoices = invoices.some((invoice) => { + if (invoice.status) + if (['uncollectible', 'open'].includes(invoice.status)) { + unpaidInvoiceURL = invoice.url as string + return true + } + return false + }) + } catch (e) { + console.error('Could not retrieve invoices.', e) + } + return json({ apps: reshapedApps, avatarUrl, + hasUnpaidInvoices, + unpaidInvoiceURL, PASSPORT_URL, ENV: { - WALLET_CONNECT_PROJECT_ID, + POSTHOG_API_KEY, + POSTHOG_PROXY_HOST, INTERNAL_GOOGLE_ANALYTICS_TAG, REMIX_DEV_SERVER_WS_PORT: process.env.NODE_ENV === 'development' ? +process.env.REMIX_DEV_SERVER_WS_PORT! : undefined, + WALLET_CONNECT_PROJECT_ID, }, displayName, + identityURN, }) } catch (error) { console.error({ error }) @@ -142,19 +228,48 @@ export const loader: LoaderFunction = getRollupReqFunctionErrorWrapper( } ) +export const meta: MetaFunction = () => { + return { + charset: 'utf-8', + title: 'Console - Rollup', + viewport: 'width=device-width,initial-scale=1', + 'og:image': + 'https://uploads-ssl.webflow.com/63d2527457e052627d01c416/64c91dd58d5781fa9a23ea85_OG%20(2).png', + 'og:description': 'Simple & Secure Private Auth', + 'og:title': 'Console - Rollup', + 'og:url': 'https://console.rollup.id', + 'twitter:card': 'summary_large_image', + 'twitter:site': '@rollupid_xyz', + 'twitter:creator': '@rollupid_xyz', + 'twitter:image': + 'https://uploads-ssl.webflow.com/63d2527457e052627d01c416/64c91dd58d5781fa9a23ea85_OG%20(2).png', + 'theme-color': '#ffffff', + 'mobile-web-app-capable': 'yes', + 'apple-mobile-web-app-capable': 'yes', + } +} + export default function App() { const nonce = useContext(NonceContext) const transition = useTransition() const location = useLocation() - const loaderData = useLoaderData() + const loaderData = useLoaderData() ?? {} - const GATag = loaderData.ENV.INTERNAL_GOOGLE_ANALYTICS_TAG + const GATag = loaderData?.ENV.INTERNAL_GOOGLE_ANALYTICS_TAG - const remixDevPort = loaderData.ENV.REMIX_DEV_SERVER_WS_PORT + const remixDevPort = loaderData?.ENV.REMIX_DEV_SERVER_WS_PORT useTreeshakeHack(remixDevPort) - const { apps, avatarUrl, PASSPORT_URL, displayName } = loaderData + const { + apps, + avatarUrl, + PASSPORT_URL, + displayName, + identityURN, + hasUnpaidInvoices, + unpaidInvoiceURL, + } = loaderData ?? {} useEffect(() => { if (GATag) { @@ -162,6 +277,31 @@ export default function App() { } }, [location, GATag]) + const hydrated = useHydrated() + useEffect(() => { + // https://posthog.com/docs/libraries/react#posthog-provider + if (hydrated) { + try { + posthog?.init(loaderData.ENV.POSTHOG_API_KEY, { + api_host: loaderData.ENV.POSTHOG_PROXY_HOST, + autocapture: false, + }) + posthog?.identify(identityURN) + } catch (ex) { + console.error(ex) + } + } + }, [hydrated]) + + registerFeatureFlag() + + const paymentFailedIdentityGroupsFetcher = useFetcher() + useEffect(() => { + paymentFailedIdentityGroupsFetcher.load( + '/api/payment-failed-identity-groups' + ) + }, []) + return ( @@ -169,8 +309,9 @@ export default function App() { - {!GATag ? null : ( + {GATag && ( <> + {/* */}