diff --git a/.firebaserc b/.firebaserc index c1e911302..36d055871 100644 --- a/.firebaserc +++ b/.firebaserc @@ -7,13 +7,6 @@ ] } }, - "stake-demo-app": { - "hosting": { - "stake-demo-app": [ - "stake-demo-app" - ] - } - }, "nft-quest-testnet": { "hosting": { "nft-quest-testnet": [ diff --git a/.github/workflows/ci-rust.yml b/.github/workflows/ci-rust.yml index 66e1ade67..15293b8d8 100644 --- a/.github/workflows/ci-rust.yml +++ b/.github/workflows/ci-rust.yml @@ -5,100 +5,17 @@ permissions: on: push: paths: - - "packages/contracts/**" - "packages/erc4337-contracts/**" - "packages/sdk-platforms/rust/**" - ".github/workflows/ci-rust.yml" pull_request: paths: - - "packages/contracts/**" - "packages/erc4337-contracts/**" - "packages/sdk-platforms/rust/**" - ".github/workflows/ci-rust.yml" workflow_dispatch: jobs: - rust-sdk: - name: Rust Legacy SDK - runs-on: ubuntu-latest - strategy: - matrix: - config: - - debug - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.4 - - - name: Install Rust - run: | - rustup update stable && rustup default stable - rustup toolchain install nightly - - - name: Run rustfmt - run: | - rustup component add rustfmt --toolchain nightly - cargo +nightly fmt --all -- --check - working-directory: packages/sdk-platforms/rust/zksync-sso - - - name: Install Anvil ZKsync Manually - run: | - SCRIPT_PATH=".github/workflows/scripts/install-anvil-zksync.sh" - chmod +x "$SCRIPT_PATH" - bash "$SCRIPT_PATH" - - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 9.11.0 - - - name: Use Node.js - uses: actions/setup-node@v4 - with: - node-version: lts/Iron - cache: pnpm - - - name: Install dependencies - run: pnpm install -r --frozen-lockfile - - - name: Install contract dependencies - run: pnpm install -r --frozen-lockfile - working-directory: packages/contracts - - - name: Build contracts - run: pnpm build - working-directory: packages/contracts - - - name: Run clippy - run: | - rustup component add clippy --toolchain stable - rustup component add --toolchain 1.90.0-x86_64-unknown-linux-gnu clippy - cargo clippy --all-targets -- -D warnings - working-directory: packages/sdk-platforms/rust/zksync-sso - - - name: Start anvil-zksync node - run: | - anvil-zksync --cache=none run > anvil-zksync.log 2>&1 & - # Wait a few seconds to ensure the node starts - sleep 5 - # Verify it's running - if ! pgrep -f "anvil-zksync"; then - echo "Error: anvil-zksync failed to start" - cat anvil-zksync.log - exit 1 - fi - - - name: Run rust tests - run: cargo test -- --test-threads=1 - working-directory: packages/sdk-platforms/rust/zksync-sso - - # - name: Run integration tests - # run: cargo test test_complete_zksync_sso_integration -- --ignored - # working-directory: packages/sdk-platforms/rust/zksync-sso - rust-sdk-erc4337: name: Rust 4337 SDK runs-on: ubuntu-latest diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 443ea4122..d5476e302 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,116 +4,10 @@ on: push: branches: - main - paths-ignore: - - "packages/sdk-platforms/**" - - ".github/workflows/ci-swift.yml" - - ".github/workflows/ci-rust.yml" - - ".github/workflows/ci-reactnative.yml" pull_request: - paths-ignore: - - "packages/sdk-platforms/**" - - ".github/workflows/ci-swift.yml" - - ".github/workflows/ci-rust.yml" - - ".github/workflows/ci-reactnative.yml" workflow_dispatch: jobs: - e2e-demo-app: - runs-on: ubuntu-latest - defaults: - run: - working-directory: ./ - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - with: - submodules: recursive - - # Start node - - name: Era Test Node Action - uses: dutterbutter/era-test-node-action@36ffd2eefd46dc16e7e2a8e1715124400ec0a3ba # v1 - - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 9.11.0 - - - name: Use Node.js - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4 - with: - node-version: lts/Iron - cache: pnpm - - - name: Setup Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - targets: wasm32-unknown-unknown - - - name: Install wasm-pack - run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - - - name: Install zksync-foundry - run: | - wget -qc https://github.com/matter-labs/foundry-zksync/releases/download/nightly/foundry_nightly_linux_amd64.tar.gz -O - | tar -xz - ./forge -V && ./cast -V - sudo mv ./forge /usr/local/bin/ - sudo mv ./cast /usr/local/bin/ - forge -V && cast -V - - # Install dependencies for repo - - name: Install dependencies - run: pnpm install -r --frozen-lockfile - - # Install dependencies for the submodule - - name: Install contract dependencies - run: pnpm install -r --frozen-lockfile - working-directory: packages/contracts - - - name: Build contracts - run: pnpm build - working-directory: packages/contracts - - - name: Deploy contracts - run: pnpm run deploy --file ../auth-server/stores/local-node.json - working-directory: packages/contracts - - # Web SDK depends on ERC-4337 contracts for WASM build - - name: Install ERC-4337 contract dependencies - run: forge soldeer install - working-directory: packages/erc4337-contracts - - - name: Build ERC-4337 contracts - run: forge build - working-directory: packages/erc4337-contracts - - - name: Build SDK - run: | - pnpm nx build sdk - pnpm nx build web-sdk - pnpm nx build sdk-4337 - pnpm nx build connector-export - pnpm nx build demo-app - - - name: Deploy Demo-App contracts - run: pnpm nx deploy-contracts demo-app - - - name: Run tests - run: pnpm test - working-directory: packages/sdk - - # Run E2E tests - - name: Install Playwright Chromium Browser - run: pnpm exec playwright install chromium - working-directory: examples/demo-app - - name: Run e2e tests - run: pnpm nx e2e demo-app - - uses: actions/upload-artifact@v4 - if: ${{ !cancelled() }} - with: - name: demo-app-playwright-report - path: examples/demo-app/playwright-report/ - retention-days: 3 - e2e-demo-app-erc4337: runs-on: ubuntu-latest permissions: @@ -127,10 +21,6 @@ jobs: with: submodules: recursive - # Start node - - name: Era Test Node Action - uses: dutterbutter/era-test-node-action@36ffd2eefd46dc16e7e2a8e1715124400ec0a3ba # v1 - - name: Setup pnpm uses: pnpm/action-setup@v4 with: @@ -178,12 +68,10 @@ jobs: run: forge build working-directory: packages/erc4337-contracts - - name: Build SDK with ERC-4337 + - name: Build ERC-4337 related packages run: | - pnpm nx build sdk pnpm nx build web-sdk pnpm nx build sdk-4337 - pnpm nx build connector-export pnpm nx build:erc4337 demo-app - name: Deploy Demo-App ERC-4337 contracts @@ -218,7 +106,7 @@ jobs: name: demo-app-4337-playwright-report path: examples/demo-app/playwright-report/ retention-days: 3 - + e2e-nft-quest: runs-on: ubuntu-latest defaults: @@ -278,45 +166,4 @@ jobs: with: name: nft-quest-playwright-report path: examples/nft-quest/playwright-report/ - retention-days: 3 - - contracts: - runs-on: ubuntu-latest - defaults: - run: - working-directory: ./ - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - with: - submodules: recursive - - # Start node - - name: Era Test Node Action - uses: dutterbutter/era-test-node-action@36ffd2eefd46dc16e7e2a8e1715124400ec0a3ba # v1 - - # Setup pnpm - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 9.11.0 - - - name: Use Node.js - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4 - with: - node-version: lts/Iron - cache: pnpm - - # Install dependencies for the submodule - - name: Install contract dependencies - run: pnpm install -r --frozen-lockfile - working-directory: packages/contracts - - # Build contracts and generate types - - name: Build contracts - run: pnpm build - working-directory: packages/contracts - - # Run contract tests - - name: Run contract test - run: pnpm test - working-directory: packages/contracts + retention-days: 3 \ No newline at end of file diff --git a/.github/workflows/deploy-auth-server.yml b/.github/workflows/deploy-auth-server.yml index 955257afe..02c96f4be 100644 --- a/.github/workflows/deploy-auth-server.yml +++ b/.github/workflows/deploy-auth-server.yml @@ -3,8 +3,10 @@ on: push: branches: [ "main" ] paths: + - "packages/erc4337-contracts/**" + - "packages/sdk-platforms/rust/**" - "packages/auth-server/**" - - "packages/sdk/**" + - "packages/sdk-4337/**" workflow_dispatch: env: @@ -31,26 +33,30 @@ jobs: node-version: lts/Iron cache: 'pnpm' - # SDK depends on contracts - - name: Install contract dependencies - run: pnpm install -r --frozen-lockfile - working-directory: packages/contracts - - - name: Build contracts - run: pnpm run build - working-directory: packages/contracts - - # Local node to have target for deploy - - name: Era Test Node Action - uses: dutterbutter/anvil-zksync-action@v1.1.0 + - name: Setup Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + targets: wasm32-unknown-unknown - - name: Deploy contracts - run: pnpm run deploy --file ../auth-server/stores/local-node.json - working-directory: packages/contracts + - name: Install wasm-pack + run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Install dependencies run: pnpm install -r --frozen-lockfile + # Web SDK depends on ERC-4337 contracts for WASM build + - name: Install foundry + uses: foundry-rs/foundry-toolchain@v1.5.0 + + - name: Install ERC-4337 contract dependencies + run: forge soldeer install + working-directory: packages/erc4337-contracts + + - name: Build ERC-4337 contracts + run: forge build + working-directory: packages/erc4337-contracts + - name: Build apps env: NUXT_PUBLIC_DEFAULT_CHAIN_ID: 300 diff --git a/.github/workflows/deploy-package.yml b/.github/workflows/deploy-package.yml index cdfd7fa65..08bb29f40 100644 --- a/.github/workflows/deploy-package.yml +++ b/.github/workflows/deploy-package.yml @@ -43,15 +43,6 @@ jobs: - name: Install dependencies run: pnpm install -r --frozen-lockfile - # SDK depends on contracts - - name: Install contract dependencies - run: pnpm install -r --frozen-lockfile - working-directory: packages/contracts - - - name: Build contracts - run: pnpm build - working-directory: packages/contracts - # Web SDK depends on ERC-4337 contracts for WASM build - name: Install ERC-4337 contract dependencies run: forge soldeer install @@ -61,31 +52,14 @@ jobs: run: forge build working-directory: packages/erc4337-contracts - # Local node to have target for deploy - - name: Era Test Node Action - uses: dutterbutter/anvil-zksync-action@v1.1.0 - - - name: Deploy contracts - run: pnpm run deploy --file ../auth-server/stores/local-node.json - working-directory: packages/contracts - - name: Build the package - run: pnpm nx build sdk - - - name: Build the wagmi-connector package - run: pnpm nx build connector-export + run: pnpm nx build sdk-4337 - name: Build the web SDK package run: pnpm nx build web-sdk - name: Prepare package.json - working-directory: packages/sdk - run: node prepare-package.mjs - env: - INPUT_VERSION: ${{ github.event.inputs.version }} - - - name: Prepare wagmi connector package.json - working-directory: packages/connector-export + working-directory: packages/sdk-4337 run: node prepare-package.mjs env: INPUT_VERSION: ${{ github.event.inputs.version }} @@ -111,11 +85,7 @@ jobs: echo "tag=$TAG" >> $GITHUB_OUTPUT - name: Publish SDK to NPM - working-directory: packages/sdk - run: npm publish --access public --tag ${{ steps.npm_tag.outputs.tag }} - - - name: Publish wagmi connector to NPM - working-directory: packages/connector-export + working-directory: packages/sdk-4337 run: npm publish --access public --tag ${{ steps.npm_tag.outputs.tag }} - name: Publish web SDK to NPM @@ -129,19 +99,12 @@ jobs: echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> ~/.npmrc - name: Publish SDK to GitHub Packages - working-directory: packages/sdk + working-directory: packages/sdk-4337 run: | # Update package name for GitHub Packages to be scoped to the organization npm pkg set name="@matter-labs/zksync-sso" npm publish --registry=https://npm.pkg.github.com --tag ${{ steps.npm_tag.outputs.tag }} - - name: Publish wagmi connector to GitHub Packages - working-directory: packages/connector-export - run: | - # Update package name for GitHub Packages to be scoped to the organization - npm pkg set name="@matter-labs/zksync-sso-wagmi-connector" - npm publish --registry=https://npm.pkg.github.com --tag ${{ steps.npm_tag.outputs.tag }} - - name: Publish web SDK to GitHub Packages working-directory: packages/sdk-platforms/web run: | diff --git a/.github/workflows/deploy-preview.yml b/.github/workflows/deploy-preview.yml index 8cff50fa7..5089cee86 100644 --- a/.github/workflows/deploy-preview.yml +++ b/.github/workflows/deploy-preview.yml @@ -2,8 +2,10 @@ name: "Preview Auth Server" on: pull_request: paths: + - "packages/erc4337-contracts/**" + - "packages/sdk-platforms/rust/**" - "packages/auth-server/**" - - "packages/sdk/**" + - "packages/sdk-4337/**" workflow_dispatch: env: @@ -33,31 +35,34 @@ jobs: node-version: lts/Iron cache: 'pnpm' - # SDK depends on contracts - - name: Install contract dependencies - run: pnpm install -r --frozen-lockfile - working-directory: packages/contracts - - - name: Build contracts - run: pnpm run build - working-directory: packages/contracts - - # Local node to have target for deploy - - name: Era Test Node Action - uses: dutterbutter/anvil-zksync-action@v1.1.0 + - name: Setup Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + targets: wasm32-unknown-unknown - - name: Deploy contracts - run: pnpm run deploy --file ../auth-server/stores/local-node.json - working-directory: packages/contracts + - name: Install wasm-pack + run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Install dependencies run: pnpm install -r --frozen-lockfile + # Web SDK depends on ERC-4337 contracts for WASM build + - name: Install foundry + uses: foundry-rs/foundry-toolchain@v1.5.0 + + - name: Install ERC-4337 contract dependencies + run: forge soldeer install + working-directory: packages/erc4337-contracts + + - name: Build ERC-4337 contracts + run: forge build + working-directory: packages/erc4337-contracts + - name: Build Auth Server env: NUXT_PUBLIC_DEFAULT_CHAIN_ID: 300 NUXT_PUBLIC_SALT_SERVICE_URL: "https://sso-oidc.zksync.dev/salt" - run: pnpm nx build auth-server - name: Deploy preview diff --git a/README.md b/README.md index 39298ef93..d5380531a 100644 --- a/README.md +++ b/README.md @@ -126,16 +126,14 @@ const connectWithSSO = () => { This monorepo is comprised of the following packages, products, and examples: -- `packages/sdk` is the `zksync-sso` JavaScript SDK +- `packages/sdk-4337` is the `zksync-sso` JavaScript SDK - `packages/auth-server` is the Auth Server used for account creation and session key management -- `packages/contracts` are the on-chain smart contracts behind ZKsync SSO - accounts +- `packages/erc4337-contracts` are the on-chain smart contracts behind ZKsync + SSO accounts - `examples/nft-quest` is an app demonstrating the use of ZKsync SSO with sessions - `examples/nft-quest-contracts` are the smart contracts for `nft-quest` -- `examples/demo-app` is a test app mostly used for CI testing -- `examples/bank-demo` is an app demonstrating the fully embedded experience ## Running development @@ -218,8 +216,7 @@ command. ## Running/Debugging End-to-End Tests -To execute the end-to-end tests for the `demo-app` (or similarly for -`nft-quest`), you'll need to do some setup: +To execute the end-to-end tests for the `demo-app` you'll need to do some setup: 1. Start `anvil-zksync` 2. Deploy the smart contracts, `pnpm --dir packages/contracts run deploy` diff --git a/cspell-config/cspell-misc.txt b/cspell-config/cspell-misc.txt index 7c0ce86c0..e1918a9be 100644 --- a/cspell-config/cspell-misc.txt +++ b/cspell-config/cspell-misc.txt @@ -15,23 +15,6 @@ sepolia foundryup unpermitted -// examples/bank-demo -ctap -Aave -aave -jdoe -wght -topup -OBAGNSGT -OXBB -Usdc -usdc - -// examples/nft-quest -Fren -fren -nfts - // auth-server oidc Oidc @@ -52,3 +35,9 @@ EVMLA // paymasters zyfi + +// examples/nft-quest +Fren +fren +nfts +wght diff --git a/examples/bank-demo/.gitignore b/examples/bank-demo/.gitignore deleted file mode 100644 index 4a7f73a2e..000000000 --- a/examples/bank-demo/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Nuxt dev/build outputs -.output -.data -.nuxt -.nitro -.cache -dist - -# Node dependencies -node_modules - -# Logs -logs -*.log - -# Misc -.DS_Store -.fleet -.idea - -# Local env files -.env -.env.* -!.env.example diff --git a/examples/bank-demo/.lintstagedrc.js b/examples/bank-demo/.lintstagedrc.js deleted file mode 100644 index 2259ed229..000000000 --- a/examples/bank-demo/.lintstagedrc.js +++ /dev/null @@ -1,5 +0,0 @@ -import baseConfig from "../../.lintstagedrc.js"; - -export default { - ...baseConfig, -}; diff --git a/examples/bank-demo/README.md b/examples/bank-demo/README.md deleted file mode 100644 index eb3601ee6..000000000 --- a/examples/bank-demo/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Bank demo - -A Bank ZKsync demo illustrating how to create a ZKsync smart account, log in -with a Passkey, and stake some ETH with a fully embedded wallet. - -## Running the demo locally - -From the packages/contracts directory, deploy the contracts to a local node: - -```bash -pnpm run deploy --file ../../examples/bank-demo/local-node.json -``` - -Run the following command from the root of the monorepo: - -```bash -pnpm nx dev bank-demo -``` - -_Note: You will need `era_test_node` running with the latest contracts deployed_ - -## "Resetting" the demo - -Account session and data is stored via the browser Local storage. - -1. When you need to restart the demo, click the `Accounts` tab, click the - ellipses (`...`), and click `Reset Demo`. - -2. You should also delete the Passkey stored for the app. In the Chrome browser, - navigate to `chrome://settings/passkeys`. Click the settings button for the - entry for `localhost` and click "Delete". - -## Deploying the Bank demo to Firebase - -The Bank demo app uses Demo Node (`https://node.nvillanueva.com`). Add your -deployer private key to the .env file (packages/contracts/.env) - -1. Deploy the latest contracts with - - `pnpm --dir packages/contracts run deploy --network demoNode`. - -2. Update `nuxt.config.ts` contract addresses under `$production`. - -3. Build the project with `pnpm nx build bank-demo`. - -4. Deploy the project to Firebase. - - ```bash - pnpm nx deploy bank-demo - ``` diff --git a/examples/bank-demo/components/app/AddCryptoButton.vue b/examples/bank-demo/components/app/AddCryptoButton.vue deleted file mode 100644 index b8567736e..000000000 --- a/examples/bank-demo/components/app/AddCryptoButton.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - diff --git a/examples/bank-demo/components/app/ColorMode.vue b/examples/bank-demo/components/app/ColorMode.vue deleted file mode 100644 index 30f3cce36..000000000 --- a/examples/bank-demo/components/app/ColorMode.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/examples/bank-demo/components/app/NavButton.vue b/examples/bank-demo/components/app/NavButton.vue deleted file mode 100644 index c48e108a7..000000000 --- a/examples/bank-demo/components/app/NavButton.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/examples/bank-demo/components/app/NoPasskeyDialog.vue b/examples/bank-demo/components/app/NoPasskeyDialog.vue deleted file mode 100644 index a4620de97..000000000 --- a/examples/bank-demo/components/app/NoPasskeyDialog.vue +++ /dev/null @@ -1,276 +0,0 @@ - - - - - \ No newline at end of file diff --git a/examples/bank-demo/components/app/OnRampCrypto.vue b/examples/bank-demo/components/app/OnRampCrypto.vue deleted file mode 100644 index 3b1585fd4..000000000 --- a/examples/bank-demo/components/app/OnRampCrypto.vue +++ /dev/null @@ -1,100 +0,0 @@ - - - diff --git a/examples/bank-demo/components/common/CryptoDeployer.ts b/examples/bank-demo/components/common/CryptoDeployer.ts deleted file mode 100644 index 09224000c..000000000 --- a/examples/bank-demo/components/common/CryptoDeployer.ts +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2025 cbe -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import type { Hex, Chain } from "viem"; -import { createWalletClient, http } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; - -export const getDeployerClient = async (deployerKey: Hex) => { - const config = useRuntimeConfig(); - return createWalletClient({ - account: privateKeyToAccount(deployerKey), - chain: config.public.network as Chain, - transport: http() - }); -}; \ No newline at end of file diff --git a/examples/bank-demo/components/common/Spinner.vue b/examples/bank-demo/components/common/Spinner.vue deleted file mode 100644 index 8bbc9e425..000000000 --- a/examples/bank-demo/components/common/Spinner.vue +++ /dev/null @@ -1,19 +0,0 @@ - diff --git a/examples/bank-demo/components/layout/Card.vue b/examples/bank-demo/components/layout/Card.vue deleted file mode 100644 index 0c7902b08..000000000 --- a/examples/bank-demo/components/layout/Card.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/examples/bank-demo/components/layout/Header.vue b/examples/bank-demo/components/layout/Header.vue deleted file mode 100644 index e267ad81e..000000000 --- a/examples/bank-demo/components/layout/Header.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/examples/bank-demo/components/layout/Section.vue b/examples/bank-demo/components/layout/Section.vue deleted file mode 100644 index 81439bdb2..000000000 --- a/examples/bank-demo/components/layout/Section.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/examples/bank-demo/components/token/eth.vue b/examples/bank-demo/components/token/eth.vue deleted file mode 100644 index e9fafa1c6..000000000 --- a/examples/bank-demo/components/token/eth.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/examples/bank-demo/components/token/gbp.vue b/examples/bank-demo/components/token/gbp.vue deleted file mode 100644 index 8ebe0c5b6..000000000 --- a/examples/bank-demo/components/token/gbp.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/examples/bank-demo/components/token/usdc.vue b/examples/bank-demo/components/token/usdc.vue deleted file mode 100644 index b560f38d6..000000000 --- a/examples/bank-demo/components/token/usdc.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Button.vue b/examples/bank-demo/components/zk/Button.vue deleted file mode 100644 index 3f34be2bd..000000000 --- a/examples/bank-demo/components/zk/Button.vue +++ /dev/null @@ -1,63 +0,0 @@ - - - - - diff --git a/examples/bank-demo/components/zk/ButtonIcon.vue b/examples/bank-demo/components/zk/ButtonIcon.vue deleted file mode 100644 index 932210dd5..000000000 --- a/examples/bank-demo/components/zk/ButtonIcon.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Copy.vue b/examples/bank-demo/components/zk/Copy.vue deleted file mode 100644 index be9edd86d..000000000 --- a/examples/bank-demo/components/zk/Copy.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Dialog.vue b/examples/bank-demo/components/zk/Dialog.vue deleted file mode 100644 index 6d00fcef9..000000000 --- a/examples/bank-demo/components/zk/Dialog.vue +++ /dev/null @@ -1,49 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Dropdown.vue b/examples/bank-demo/components/zk/Dropdown.vue deleted file mode 100644 index b5f0dffe3..000000000 --- a/examples/bank-demo/components/zk/Dropdown.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Icon.vue b/examples/bank-demo/components/zk/Icon.vue deleted file mode 100644 index e12b3f273..000000000 --- a/examples/bank-demo/components/zk/Icon.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/examples/bank-demo/components/zk/IconThumbnail.vue b/examples/bank-demo/components/zk/IconThumbnail.vue deleted file mode 100644 index 2c21ad317..000000000 --- a/examples/bank-demo/components/zk/IconThumbnail.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Input.vue b/examples/bank-demo/components/zk/Input.vue deleted file mode 100644 index 8bf95a08d..000000000 --- a/examples/bank-demo/components/zk/Input.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Link.vue b/examples/bank-demo/components/zk/Link.vue deleted file mode 100644 index b26020c1f..000000000 --- a/examples/bank-demo/components/zk/Link.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Switch.vue b/examples/bank-demo/components/zk/Switch.vue deleted file mode 100644 index 0594eb0d3..000000000 --- a/examples/bank-demo/components/zk/Switch.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Tabs.vue b/examples/bank-demo/components/zk/Tabs.vue deleted file mode 100644 index 3e67c0617..000000000 --- a/examples/bank-demo/components/zk/Tabs.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/Tooltip.vue b/examples/bank-demo/components/zk/Tooltip.vue deleted file mode 100644 index 2ee64f0e8..000000000 --- a/examples/bank-demo/components/zk/Tooltip.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/panel/Card.vue b/examples/bank-demo/components/zk/panel/Card.vue deleted file mode 100644 index 7e80c3908..000000000 --- a/examples/bank-demo/components/zk/panel/Card.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/panel/Section.vue b/examples/bank-demo/components/zk/panel/Section.vue deleted file mode 100644 index 7c7bc0a15..000000000 --- a/examples/bank-demo/components/zk/panel/Section.vue +++ /dev/null @@ -1,50 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/table/Body.vue b/examples/bank-demo/components/zk/table/Body.vue deleted file mode 100644 index 928174710..000000000 --- a/examples/bank-demo/components/zk/table/Body.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/table/CellData.vue b/examples/bank-demo/components/zk/table/CellData.vue deleted file mode 100644 index b37d60c1d..000000000 --- a/examples/bank-demo/components/zk/table/CellData.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/table/Row.vue b/examples/bank-demo/components/zk/table/Row.vue deleted file mode 100644 index 0866b0d68..000000000 --- a/examples/bank-demo/components/zk/table/Row.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/examples/bank-demo/components/zk/table/RowLink.vue b/examples/bank-demo/components/zk/table/RowLink.vue deleted file mode 100644 index e13f866b1..000000000 --- a/examples/bank-demo/components/zk/table/RowLink.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/examples/bank-demo/composables/useAppMeta.ts b/examples/bank-demo/composables/useAppMeta.ts deleted file mode 100644 index 50152954a..000000000 --- a/examples/bank-demo/composables/useAppMeta.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { useStorage } from "@vueuse/core"; -import type { Address } from "viem"; - -export interface AppMetadata { - name: string; - icon: string | null; - privateKey: string | null; - credentialPublicKey: string | null; - credentialId: string | null; - cryptoAccountAddress: `0x${string}` | null; - hasCompletedInitialTransfer: boolean; - hasCompletedAaveStake: boolean; -} - -export const useAppMeta = () => { - const appMetaStorage = useStorage("app-meta", { - name: "", - icon: null, - // k1 owner fallback if no passkey support - privateKey: null, - // Uint8Array from your Passkey - credentialPublicKey: null, - // base64 from your Passkey - credentialId: null, - // Account address that got created - cryptoAccountAddress: null, - // Have you purchased any ETH? - hasCompletedInitialTransfer: false, - // Have you staked any ETH? - hasCompletedAaveStake: false, - }); - - const config = useRuntimeConfig(); - return { - appMeta: appMetaStorage, - userDisplay: "Jane Doe", - userId: "jdoe", - contracts: { - accountFactory: config.public.accountFactory as Address, - passkey: config.public.passkey as Address, - session: config.public.session as Address, - recovery: config.public.recovery as Address, - }, - deployerKey: config.public.bankDemoDeployerKey, - aaveAddress: config.public.aaveAddress as Address, - explorerUrl: config.public.explorerUrl, - }; -}; diff --git a/examples/bank-demo/composables/useCart.ts b/examples/bank-demo/composables/useCart.ts deleted file mode 100644 index 3b0cb3de4..000000000 --- a/examples/bank-demo/composables/useCart.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { useStorage } from "@vueuse/core"; - -export interface CartData { - amount: number; - priceOfEth: number; -} - -export const useCart = () => { - const cartData = useStorage("cart-data", { - amount: 0, - priceOfEth: 1786.79, - }); - - return cartData; -}; diff --git a/examples/bank-demo/composables/useHistory.ts b/examples/bank-demo/composables/useHistory.ts deleted file mode 100644 index 655d8fe96..000000000 --- a/examples/bank-demo/composables/useHistory.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { useStorage } from "@vueuse/core"; - -export interface HistoryData { - mainAccount: Array<{ icon: string; description: string; amount: string; time: string; value: number }>; - cryptoAccount: Array<{ icon: string; description: string; amount: string; time: string; transactionHash: string; valueEth: number }>; -} - -export const useHistory = () => { - const history = useStorage("history", { - mainAccount: [ - { description: "OBA topup from J Doe", amount: "+ £2,000.00", time: "4 Oct, 13:32 - OBAGNSGT3OXBB4433", icon: "add", value: 2000 }, - ], - cryptoAccount: [], - }); - - return history; -}; diff --git a/examples/bank-demo/eslint.config.js b/examples/bank-demo/eslint.config.js deleted file mode 100644 index 9ecac4733..000000000 --- a/examples/bank-demo/eslint.config.js +++ /dev/null @@ -1,12 +0,0 @@ -// @ts-check -import withNuxt from "./.nuxt/eslint.config.mjs"; - -export default withNuxt({ - rules: { - "no-console": "warn", - semi: ["error", "always"], // Require semicolons - quotes: ["error", "double"], // Require double quotes - "vue/multi-word-component-names": "off", // Allow multi-word component names - "vue/require-default-prop": "off", // Allow props without default values - }, -}); diff --git a/examples/bank-demo/index.d.ts b/examples/bank-demo/index.d.ts deleted file mode 100644 index 82c4a79d7..000000000 --- a/examples/bank-demo/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare module "nuxt/schema" { - interface PublicRuntimeConfig { - aaveAddress: `0x${string}`; - bankDemoDeployerKey: `0x${string}`; - network: zksyncInMemoryNode | zksyncSepoliaTestnet; - accountFactory: `0x${string}`; - passkey: `0x${string}`; - session: `0x${string}`; - explorerUrl: string; - } -} - -export {}; diff --git a/examples/bank-demo/layouts/default.vue b/examples/bank-demo/layouts/default.vue deleted file mode 100644 index e403fa414..000000000 --- a/examples/bank-demo/layouts/default.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/examples/bank-demo/local-node.json b/examples/bank-demo/local-node.json deleted file mode 100644 index 6640dea38..000000000 --- a/examples/bank-demo/local-node.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "session": "0xcc8bD0d99CF35e5F07d5FbbFd8f7B628010E52C2", - "passkey": "0xDdB1e5ECd29aAC588E0fb0a7eAB1b589fE7D7dcD", - "accountFactory": "0x940adFE6B30536D22eD78870aA79c9DC0835556C", - "accountPaymaster": "0x025A31E05306E1Db13D1F54581f6C729BE284Fd4", - "recovery": "0xE797B5A28B73925250e70e4077568bF3a4CDc240" -} diff --git a/examples/bank-demo/nuxt.config.ts b/examples/bank-demo/nuxt.config.ts deleted file mode 100644 index cd6584328..000000000 --- a/examples/bank-demo/nuxt.config.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { defineNuxtConfig } from "nuxt/config"; -import { zksyncInMemoryNode } from "viem/chains"; -import localChainData from "./local-node.json"; - -// https://nuxt.com/docs/api/configuration/nuxt-config -export default defineNuxtConfig({ - compatibilityDate: "2024-04-03", - devtools: { enabled: true }, - modules: ["@nuxt/icon", "@vueuse/nuxt", "radix-vue/nuxt", "@nuxt/eslint", "@pinia/nuxt", "@nuxtjs/tailwindcss", "@nuxtjs/google-fonts"], - ssr: false, - googleFonts: { - families: { - Inter: [300, 400, 500, 600, 700], - }, - }, - app: { - head: { - bodyAttrs: { - class: "bg-khaki", - }, - }, - }, - runtimeConfig: { - public: { - aaveAddress: "0xBC989fDe9e54cAd2aB4392Af6dF60f04873A033A", // Rich Account 0 - bankDemoDeployerKey: "0x3d3cbc973389cb26f657686445bcc75662b415b656078503592ac8c1abb8810e", // Rich Account 0 - network: zksyncInMemoryNode, - session: localChainData.session, - passkey: localChainData.passkey, - accountFactory: localChainData.accountFactory, - recovery: localChainData.recovery, - explorerUrl: "http://localhost:3010/", - }, - }, - $production: { - runtimeConfig: { - public: { - aaveAddress: "0xBC989fDe9e54cAd2aB4392Af6dF60f04873A033A", // Rich Account 0 - bankDemoDeployerKey: "0x3d3cbc973389cb26f657686445bcc75662b415b656078503592ac8c1abb8810e", // Rich Account 0 - network: { - ...zksyncInMemoryNode, - rpcUrls: { - default: { - http: ["https://node.nvillanueva.com"], - }, - }, - }, - session: "0xdCdAC285612841db9Fa732098EAF04A917A71A28", - passkey: "0xCeC63BD0f35e04F3Bef1128bA3A856A7BB4D88f1", - accountFactory: "0x23b13d016E973C9915c6252271fF06cCA2098885", - recovery: "0x6AA83E35439D71F28273Df396BC7768dbaA9849D", - explorerUrl: "http://34.121.229.57:3010/", - }, - }, - }, - vite: { - css: { - preprocessorOptions: { - scss: { - // Fix deprecation warnings with modern API - api: "modern", - }, - }, - }, - }, -}); diff --git a/examples/bank-demo/package.json b/examples/bank-demo/package.json deleted file mode 100644 index c7ed6fbdd..000000000 --- a/examples/bank-demo/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "nuxt-app", - "private": true, - "type": "module", - "scripts": { - "postinstall": "nuxt prepare" - }, - "dependencies": { - "@heroicons/vue": "^2.1.5", - "@nuxt/eslint": "^0.5.7", - "@nuxt/icon": "^1.5.5", - "@nuxtjs/google-fonts": "^3.2.0", - "@nuxtjs/tailwindcss": "^6.12.0", - "@pinia/nuxt": "^0.5.5", - "@simplewebauthn/browser": "^13.1.0", - "@simplewebauthn/server": "^13.1.1", - "@vueuse/core": "^11.0.0", - "@vueuse/nuxt": "^11.1.0", - "nuxt": "^3.13.0", - "pinia": "^2.1.7", - "radix-vue": "^1.9.7", - "tailwind-merge": "^2.5.3", - "viem": "^2.30.0", - "vue": "latest", - "vue-router": "latest", - "zksync-sso": "workspace:*" - } -} diff --git a/examples/bank-demo/pages/cards.vue b/examples/bank-demo/pages/cards.vue deleted file mode 100644 index a5df23c3a..000000000 --- a/examples/bank-demo/pages/cards.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/examples/bank-demo/pages/checkout.vue b/examples/bank-demo/pages/checkout.vue deleted file mode 100644 index a81bc5023..000000000 --- a/examples/bank-demo/pages/checkout.vue +++ /dev/null @@ -1,155 +0,0 @@ - - - diff --git a/examples/bank-demo/pages/crypto-account.vue b/examples/bank-demo/pages/crypto-account.vue deleted file mode 100644 index c2e60fd2a..000000000 --- a/examples/bank-demo/pages/crypto-account.vue +++ /dev/null @@ -1,376 +0,0 @@ - - - diff --git a/examples/bank-demo/pages/index.vue b/examples/bank-demo/pages/index.vue deleted file mode 100644 index e9a3a962b..000000000 --- a/examples/bank-demo/pages/index.vue +++ /dev/null @@ -1,85 +0,0 @@ - - - diff --git a/examples/bank-demo/pages/kitchen-sink.vue b/examples/bank-demo/pages/kitchen-sink.vue deleted file mode 100644 index c8cdb7259..000000000 --- a/examples/bank-demo/pages/kitchen-sink.vue +++ /dev/null @@ -1,326 +0,0 @@ - - - diff --git a/examples/bank-demo/project.json b/examples/bank-demo/project.json deleted file mode 100644 index 0ee7d7df0..000000000 --- a/examples/bank-demo/project.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "bank-demo", - "implicitDependencies": ["sdk"], - "tags": ["type:app"], - "targets": { - "dev": { - "executor": "nx:run-commands", - "options": { - "cwd": "examples/bank-demo", - "command": "PORT=3005 nuxt dev" - }, - "dependsOn": ["^build"] - }, - "build": { - "executor": "nx:run-commands", - "options": { - "cwd": "examples/bank-demo", - "command": "nuxt generate" - }, - "dependsOn": ["^build"] - }, - "deploy": { - "executor": "nx:run-commands", - "options": { - "cwd": "examples/bank-demo", - "command": "firebase deploy --only hosting:stake-demo-app --project stake-demo-app" - }, - "dependsOn": ["build"] - }, - "deploy:preview": { - "executor": "nx:run-commands", - "options": { - "cwd": "examples/nft-quest", - "command": "firebase hosting:channel:deploy --only stake-demo-app --project stake-demo-app" - }, - "dependsOn": ["build"] - }, - "preview": { - "executor": "nx:run-commands", - "options": { - "cwd": "examples/bank-demo", - "command": "nuxt preview" - }, - "dependsOn": ["^build", "build"] - } - } -} diff --git a/examples/bank-demo/public/aave-logo.png b/examples/bank-demo/public/aave-logo.png deleted file mode 100644 index 25440c1e3..000000000 Binary files a/examples/bank-demo/public/aave-logo.png and /dev/null differ diff --git a/examples/bank-demo/public/avatar-uniswap.png b/examples/bank-demo/public/avatar-uniswap.png deleted file mode 100644 index c24bf5ab6..000000000 Binary files a/examples/bank-demo/public/avatar-uniswap.png and /dev/null differ diff --git a/examples/bank-demo/public/favicon.ico b/examples/bank-demo/public/favicon.ico deleted file mode 100644 index 98c8f2a2b..000000000 Binary files a/examples/bank-demo/public/favicon.ico and /dev/null differ diff --git a/examples/bank-demo/public/frame-thumbnail.png b/examples/bank-demo/public/frame-thumbnail.png deleted file mode 100644 index 919edf5d3..000000000 Binary files a/examples/bank-demo/public/frame-thumbnail.png and /dev/null differ diff --git a/examples/bank-demo/public/revolut-logo.png b/examples/bank-demo/public/revolut-logo.png deleted file mode 100644 index 03763e0b4..000000000 Binary files a/examples/bank-demo/public/revolut-logo.png and /dev/null differ diff --git a/examples/bank-demo/public/robots.txt b/examples/bank-demo/public/robots.txt deleted file mode 100644 index 8b1378917..000000000 --- a/examples/bank-demo/public/robots.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/examples/bank-demo/public/square-thumbnail.png b/examples/bank-demo/public/square-thumbnail.png deleted file mode 100644 index f0bf7c8ea..000000000 Binary files a/examples/bank-demo/public/square-thumbnail.png and /dev/null differ diff --git a/examples/bank-demo/public/usd-token.svg b/examples/bank-demo/public/usd-token.svg deleted file mode 100644 index f8e4c26d9..000000000 --- a/examples/bank-demo/public/usd-token.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/bank-demo/tailwind.config.js b/examples/bank-demo/tailwind.config.js deleted file mode 100644 index 040f70411..000000000 --- a/examples/bank-demo/tailwind.config.js +++ /dev/null @@ -1,121 +0,0 @@ -/** @type {import('tailwindcss').Config} */ - -export default { - darkMode: ["selector", ".dark-mode"], - content: [], - theme: { - fontFamily: { - sans: ["Inter", "sans-serif"], - }, - extend: { - borderRadius: { - zk: "16px", - }, - colors: { - khaki: "#F6F6F6", - neutral: { - 50: "#F7F7F7", - 100: "#EBEBEB", - 200: "#D1D1D1", - 300: "#BABABA", - 400: "#A1A1A1", - 500: "#878787", - 600: "#707070", - 700: "#575757", - 800: "#3D3D3D", - 900: "#262626", - 950: "#1A1A1A", - }, - primary: { - 50: "#ECEDFE", - 100: "#DEDFFC", - 200: "#B8BAF9", - 300: "#EAEBFD", - 400: "#9896FF", - 500: "#4F55F1", - 600: "#131AEC", - 700: "#0E14B4", - 800: "#090D76", - 900: "#05073D", - 950: "#02031C", - }, - warning: { - 50: "#FFF9E5", - 100: "#FFECB2", - 200: "#FFE080", - 300: "#FFD44D", - 400: "#FFC81A", - 500: "#FFC200", - 600: "#E5AF00", - 700: "#CC9B00", - 800: "#997500", - 900: "#664E00", - 950: "#4D3A00", - }, - error: { - 50: "#FFCCCC", - 100: "#FFB2B2", - 200: "#FF8C8C", - 300: "#FF6666", - 400: "#FF3333", - 500: "#FF0000", - 600: "#CC0000", - 700: "#A60000", - 800: "#800000", - 900: "#590000", - 950: "#330000", - }, - success: { - 50: "#CCFFE5", - 100: "#B2FFD9", - 200: "#8CFFC6", - 300: "#66FFB2", - 400: "#33FF99", - 500: "#00FF80", - 600: "#00CC66", - 700: "#00A653", - 800: "#008040", - 900: "#00592D", - 950: "#00331A", - }, - }, - keyframes: { - overlayShow: { - from: { opacity: 0 }, - to: { opacity: 1 }, - }, - contentShow: { - from: { opacity: 0, transform: "translate(-50%, -48%) scale(0.96)" }, - to: { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }, - }, - slideDownAndFade: { - from: { opacity: 0, transform: "translateY(-2px)" }, - to: { opacity: 1, transform: "translateY(0)" }, - }, - slideLeftAndFade: { - from: { opacity: 0, transform: "translateX(2px)" }, - to: { opacity: 1, transform: "translateX(0)" }, - }, - slideUpAndFade: { - from: { opacity: 0, transform: "translateY(2px)" }, - to: { opacity: 1, transform: "translateY(0)" }, - }, - slideRightAndFade: { - from: { opacity: 0, transform: "translateX(-2px)" }, - to: { opacity: 1, transform: "translateX(0)" }, - }, - }, - animation: { - overlayShow: "overlayShow 150ms cubic-bezier(0.16, 1, 0.3, 1)", - contentShow: "contentShow 150ms cubic-bezier(0.16, 1, 0.3, 1)", - slideDownAndFade: - "slideDownAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)", - slideLeftAndFade: - "slideLeftAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)", - slideUpAndFade: "slideUpAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)", - slideRightAndFade: - "slideRightAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)", - }, - }, - }, -}; diff --git a/examples/bank-demo/tsconfig.json b/examples/bank-demo/tsconfig.json deleted file mode 100644 index a746f2a70..000000000 --- a/examples/bank-demo/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - // https://nuxt.com/docs/guide/concepts/typescript - "extends": "./.nuxt/tsconfig.json" -} diff --git a/examples/demo-app/components/PasskeyConfig.vue b/examples/demo-app/components/PasskeyConfig.vue index cf6fe0af6..8c7600bd2 100644 --- a/examples/demo-app/components/PasskeyConfig.vue +++ b/examples/demo-app/components/PasskeyConfig.vue @@ -166,15 +166,15 @@ async function handleCreatePasskey() { const credential = await createWebAuthnCredential({ rpName: "SSO Demo", rpId: window.location.hostname, - userName: "Demo User", - userEmail: "demo-user@zksync-sso.example", + displayName: "Demo User", + name: "demo-user@zksync-sso.example", timeout: 60000, }); // Update the passkey configuration config.value.credentialId = credential.credentialId; - config.value.passkeyX = credential.publicKeyX; - config.value.passkeyY = credential.publicKeyY; + config.value.passkeyX = credential.publicKey.x; + config.value.passkeyY = credential.publicKey.y; config.value.originDomain = credential.origin; // eslint-disable-next-line no-console diff --git a/examples/demo-app/components/SessionCreator.vue b/examples/demo-app/components/SessionCreator.vue index d45485ff4..b1560842d 100644 --- a/examples/demo-app/components/SessionCreator.vue +++ b/examples/demo-app/components/SessionCreator.vue @@ -73,7 +73,7 @@ import { ref, computed } from "vue"; import { createPublicClient, http, parseEther, type Chain, type Address } from "viem"; import { createBundlerClient } from "viem/account-abstraction"; -import { createSession as createSessionAction, toEcdsaSmartAccount, LimitType } from "zksync-sso-4337/client"; +import { createSession, toEcdsaSmartAccount, LimitType } from "zksync-sso-4337/client"; interface SessionConfig { enabled: boolean; @@ -244,7 +244,7 @@ async function createSessionOnChain() { // Create the session on-chain let sessionResult; try { - sessionResult = await createSessionAction(bundlerClient, { + sessionResult = await createSession(bundlerClient, { sessionSpec, contracts: { sessionValidator: props.sessionConfig.validatorAddress as Address, diff --git a/examples/demo-app/components/SessionTransactionSender.vue b/examples/demo-app/components/SessionTransactionSender.vue index e441f6003..325a92687 100644 --- a/examples/demo-app/components/SessionTransactionSender.vue +++ b/examples/demo-app/components/SessionTransactionSender.vue @@ -159,7 +159,9 @@ async function sendTransaction() { // Create session client (wraps session smart account) const sessionClient = createSessionClient({ address: props.accountAddress as Address, - sessionValidatorAddress: props.sessionConfig.validatorAddress as Address, + contracts: { + sessionValidator: props.sessionConfig.validatorAddress as Address, + }, sessionKeyPrivateKey: props.sessionConfig.sessionPrivateKey as `0x${string}`, sessionSpec: { signer: props.sessionConfig.sessionSigner as Address, diff --git a/examples/demo-app/package.json b/examples/demo-app/package.json index ac44d89f6..f1bc23e00 100644 --- a/examples/demo-app/package.json +++ b/examples/demo-app/package.json @@ -18,9 +18,7 @@ "viem": "2.30.0", "vue": "^3.4.21", "wagmi": "^2.12.17", - "zksync-sso": "workspace:*", - "zksync-sso-4337": "workspace:*", - "zksync-sso-wagmi-connector": "workspace:*" + "zksync-sso-4337": "workspace:*" }, "devDependencies": { "@nuxt/eslint": "^0.5.7", diff --git a/examples/demo-app/pages/index.vue b/examples/demo-app/pages/index.vue index e8fe7df7c..52cdac2c3 100644 --- a/examples/demo-app/pages/index.vue +++ b/examples/demo-app/pages/index.vue @@ -32,20 +32,12 @@ v-if="address" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded mt-3 mr-4 disabled:bg-slate-300" :disabled="isSendingEth" - @click="sendTokens(false)" + @click="sendTokens()" > Send 0.1 ETH - -
@@ -92,7 +84,7 @@ Typed Data Verification Result: {{ isValidTypedDataSignature ? 'Valid ✓' : 'Invalid ✗' }}

- + -->
import { disconnect, getBalance, watchAccount, sendTransaction, createConfig, connect, reconnect, waitForTransactionReceipt, type GetBalanceReturnType, signTypedData, readContract } from "@wagmi/core"; import { createWalletClient, createPublicClient, http, parseEther, type Address, type Hash } from "viem"; -import { zksyncSsoConnector } from "zksync-sso-wagmi-connector"; +import { zksyncSsoConnector } from "zksync-sso-4337/connector"; import { privateKeyToAccount } from "viem/accounts"; -import { getGeneralPaymasterInput, zksyncInMemoryNode } from "viem/zksync"; -import PaymasterContract from "../forge-output-paymaster.json"; +import { localhost } from "viem/chains"; import ERC1271CallerContract from "../forge-output-erc1271.json"; -const chain = zksyncInMemoryNode; +const chain = localhost; const testTransferTarget = "0x55bE1B079b53962746B2e86d12f158a41DF294A6"; @@ -152,7 +143,7 @@ const fundAccount = async () => { if (!address.value) throw new Error("Not connected"); const richClient = createWalletClient({ - account: privateKeyToAccount("0x3eb15da85647edd9a1159a4a13b9e7c56877c4eb33f614546d4db06a51868b1c"), + account: privateKeyToAccount("0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"), // Rich anvil account chain: chain, transport: http(), }); @@ -223,7 +214,7 @@ const disconnectWallet = async () => { /* Send ETH */ const isSendingEth = ref(false); -const sendTokens = async (usePaymaster: boolean) => { +const sendTokens = async () => { if (!address.value) return; errorMessage.value = ""; @@ -231,19 +222,10 @@ const sendTokens = async (usePaymaster: boolean) => { try { let transactionHash; - if (usePaymaster) { - transactionHash = await sendTransaction(wagmiConfig, { - to: testTransferTarget, - value: parseEther("0.1"), - paymaster: PaymasterContract.deployedTo as Address, - paymasterInput: getGeneralPaymasterInput({ innerInput: "0x" }), - }); - } else { - transactionHash = await sendTransaction(wagmiConfig, { - to: testTransferTarget, - value: parseEther("0.1"), - }); - } + transactionHash = await sendTransaction(wagmiConfig, { + to: testTransferTarget, + value: parseEther("0.1"), + }); // FIXME: When not using sessions, sendTransaction returns a map and not a string // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -303,7 +285,7 @@ const typedData = { }, } as const; -const signTypedDataHandler = async () => { +const _signTypedDataHandler = async () => { if (!address.value) return; errorMessage.value = ""; diff --git a/examples/demo-app/pages/web-sdk-test.vue b/examples/demo-app/pages/web-sdk-test.vue index 53f39f12d..69af87e28 100644 --- a/examples/demo-app/pages/web-sdk-test.vue +++ b/examples/demo-app/pages/web-sdk-test.vue @@ -76,7 +76,10 @@
Account Address: - {{ deploymentResult.address }} + {{ deploymentResult.address }}
EOA Signer: @@ -185,7 +188,10 @@ class="mt-2" data-testid="found-addresses-result" > -
    +
    • b.toString(16).padStart(2, "0")).join("")}`; + const credential = await getPasskeyCredential(); + if (!credential) throw new Error("No credential returned from WebAuthn"); // Set the scanned passkey details - findPasskeyCredentialId.value = credentialIdHex; + findPasskeyCredentialId.value = credential.credentialIdHex; findPasskeyOriginDomain.value = window.location.origin; findPasskeyScanned.value = true; // eslint-disable-next-line no-console console.log("Passkey scanned successfully:"); // eslint-disable-next-line no-console - console.log(" Credential ID:", credentialIdHex); + console.log(" Credential ID:", credential.credentialIdHex); // eslint-disable-next-line no-console console.log(" Origin:", window.location.origin); @@ -989,10 +975,10 @@ async function scanPasskeyForFindAccounts() { const result = await findAddressesByPasskey({ client: publicClient, contracts: { - webauthnValidator: contracts.webauthnValidator as Address, + webauthnValidator: contracts.webauthnValidator, }, passkey: { - credentialId: credentialIdHex as Hex, + credentialId: credential.credentialIdHex, originDomain: window.location.origin, }, }); diff --git a/examples/demo-app/project.json b/examples/demo-app/project.json index 34173d6d4..a7abbf951 100644 --- a/examples/demo-app/project.json +++ b/examples/demo-app/project.json @@ -2,24 +2,6 @@ "name": "demo-app", "tags": ["type:app"], "targets": { - "dev": { - "executor": "nx:run-commands", - "options": { - "cwd": "examples/demo-app", - "commands": [ - { - "command": "pnpm nx dev auth-server", - "prefix": "Auth-Server:" - }, - - { - "command": "PORT=3004 nuxt dev", - "prefix": "Demo-App:" - } - ] - }, - "dependsOn": ["deploy-contracts"] - }, "dev:erc4337": { "executor": "nx:run-commands", "options": { @@ -38,18 +20,6 @@ }, "dependsOn": ["deploy-contracts-erc4337"] }, - "build": { - "executor": "nx:run-commands", - "options": { - "cwd": "examples/demo-app", - "commands": [ - { - "command": "pnpm nuxt generate" - } - ] - }, - "dependsOn": ["deploy-contracts"] - }, "build:erc4337": { "executor": "nx:run-commands", "options": { @@ -76,14 +46,6 @@ "command": "forge build" } }, - "deploy-contracts": { - "executor": "nx:run-commands", - "options": { - "cwd": "examples/demo-app", - "command": "forge create smart-contracts/DemoPaymaster.sol:DemoPaymaster --private-key 0x7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --rpc-url http://localhost:8011 --root . --chain 260 --zksync --json 2>&1 | sed -n 's/.*\\({.*}\\).*/\\1/p' > forge-output-paymaster.json && ADDRESS=$(sed -n 's/.*\"deployedTo\":\"\\([^\"]*\\)\".*/\\1/p' forge-output-paymaster.json) && echo \"DemoPaymaster deployed to: $ADDRESS\" && cast send --private-key 0x7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 $ADDRESS --rpc-url http://localhost:8011 --value 0.1ether && forge create smart-contracts/ERC1271Caller.sol:ERC1271Caller --private-key 0x7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --rpc-url http://localhost:8011 --root . --chain 260 --zksync --json 2>&1 | sed -n 's/.*\\({.*}\\).*/\\1/p' > forge-output-erc1271.json && ADDRESS=$(sed -n 's/.*\"deployedTo\":\"\\([^\"]*\\)\".*/\\1/p' forge-output-erc1271.json) && echo \"ERC1271Caller deployed to: $ADDRESS\"" - }, - "dependsOn": ["build-contracts"] - }, "deploy-contracts-erc4337": { "executor": "nx:run-commands", "options": { @@ -125,14 +87,6 @@ }, "dependsOn": ["build:local"] }, - "e2e:setup": { - "executor": "nx:run-commands", - "options": { - "cwd": "examples/demo-app", - "command": "pnpm exec playwright install chromium" - }, - "dependsOn": ["deploy-contracts"] - }, "e2e:setup:erc4337": { "executor": "nx:run-commands", "options": { diff --git a/firebase.json b/firebase.json index 5410c6766..6637d29fc 100644 --- a/firebase.json +++ b/firebase.json @@ -17,12 +17,6 @@ } ] }, - { - "target": "stake-demo-app", - "trailingSlash": false, - "public": "examples/bank-demo/.output/public", - "ignore": ["firebase.json", "**/.*", "**/node_modules/**"] - }, { "target": "nft-quest-testnet", "trailingSlash": false, diff --git a/package.json b/package.json index e25e33d17..a23066b6e 100644 --- a/package.json +++ b/package.json @@ -48,8 +48,7 @@ "typescript-eslint": "8.7.0", "viem": "^2.30.0", "zksync-sso": "workspace:*", - "zksync-sso-4337": "workspace:*", - "zksync-sso-wagmi-connector": "workspace:*" + "zksync-sso-4337": "workspace:*" }, "nx": { "includedScripts": [] diff --git a/packages/auth-server/.env.example b/packages/auth-server/.env.example index 596e51490..66ab5bd54 100644 --- a/packages/auth-server/.env.example +++ b/packages/auth-server/.env.example @@ -1,5 +1,5 @@ # Default chain ID (optional) -NUXT_PUBLIC_DEFAULT_CHAIN_ID=300 +NUXT_PUBLIC_DEFAULT_CHAIN_ID=1337 # AppKit Project ID NUXT_PUBLIC_APPKIT_PROJECT_ID=your-appkit-project-id diff --git a/packages/auth-server/components/PrividiumLogin.vue b/packages/auth-server/components/PrividiumLogin.vue index f22750bfa..577987d86 100644 --- a/packages/auth-server/components/PrividiumLogin.vue +++ b/packages/auth-server/components/PrividiumLogin.vue @@ -152,8 +152,8 @@ diff --git a/packages/auth-server/components/account-recovery/AccountSelect.vue b/packages/auth-server/components/account-recovery.disabled/AccountSelect.vue similarity index 100% rename from packages/auth-server/components/account-recovery/AccountSelect.vue rename to packages/auth-server/components/account-recovery.disabled/AccountSelect.vue diff --git a/packages/auth-server/components/account-recovery/AddRecoveryMethodModal.vue b/packages/auth-server/components/account-recovery.disabled/AddRecoveryMethodModal.vue similarity index 100% rename from packages/auth-server/components/account-recovery/AddRecoveryMethodModal.vue rename to packages/auth-server/components/account-recovery.disabled/AddRecoveryMethodModal.vue diff --git a/packages/auth-server/components/account-recovery/ConfirmActionCard.vue b/packages/auth-server/components/account-recovery.disabled/ConfirmActionCard.vue similarity index 100% rename from packages/auth-server/components/account-recovery/ConfirmActionCard.vue rename to packages/auth-server/components/account-recovery.disabled/ConfirmActionCard.vue diff --git a/packages/auth-server/components/account-recovery/ConfirmInfoCard.vue b/packages/auth-server/components/account-recovery.disabled/ConfirmInfoCard.vue similarity index 100% rename from packages/auth-server/components/account-recovery/ConfirmInfoCard.vue rename to packages/auth-server/components/account-recovery.disabled/ConfirmInfoCard.vue diff --git a/packages/auth-server/components/account-recovery/GoogleRecoveryFlow.vue b/packages/auth-server/components/account-recovery.disabled/GoogleRecoveryFlow.vue similarity index 100% rename from packages/auth-server/components/account-recovery/GoogleRecoveryFlow.vue rename to packages/auth-server/components/account-recovery.disabled/GoogleRecoveryFlow.vue diff --git a/packages/auth-server/components/account-recovery/PasskeyGenerationFlow.vue b/packages/auth-server/components/account-recovery.disabled/PasskeyGenerationFlow.vue similarity index 97% rename from packages/auth-server/components/account-recovery/PasskeyGenerationFlow.vue rename to packages/auth-server/components/account-recovery.disabled/PasskeyGenerationFlow.vue index 2b2066192..9a4445b18 100644 --- a/packages/auth-server/components/account-recovery/PasskeyGenerationFlow.vue +++ b/packages/auth-server/components/account-recovery.disabled/PasskeyGenerationFlow.vue @@ -70,7 +70,7 @@ diff --git a/packages/auth-server/pages/index.vue b/packages/auth-server/pages/index.vue index 013120eeb..84aca3124 100644 --- a/packages/auth-server/pages/index.vue +++ b/packages/auth-server/pages/index.vue @@ -31,12 +31,13 @@ Log In - +
@@ -58,8 +59,6 @@ diff --git a/packages/auth-server/pages/recovery/account-not-ready.vue b/packages/auth-server/pages/recovery.disabled/account-not-ready.vue similarity index 100% rename from packages/auth-server/pages/recovery/account-not-ready.vue rename to packages/auth-server/pages/recovery.disabled/account-not-ready.vue diff --git a/packages/auth-server/pages/recovery/google/index.vue b/packages/auth-server/pages/recovery.disabled/google/index.vue similarity index 100% rename from packages/auth-server/pages/recovery/google/index.vue rename to packages/auth-server/pages/recovery.disabled/google/index.vue diff --git a/packages/auth-server/pages/recovery/guardian/(actions)/confirm-guardian.vue b/packages/auth-server/pages/recovery.disabled/guardian/(actions)/confirm-guardian.vue similarity index 99% rename from packages/auth-server/pages/recovery/guardian/(actions)/confirm-guardian.vue rename to packages/auth-server/pages/recovery.disabled/guardian/(actions)/confirm-guardian.vue index a19e72825..00f0c4cac 100644 --- a/packages/auth-server/pages/recovery/guardian/(actions)/confirm-guardian.vue +++ b/packages/auth-server/pages/recovery.disabled/guardian/(actions)/confirm-guardian.vue @@ -192,6 +192,7 @@ const confirmGuardianAction = async () => { await getGuardians(accountAddress.value); } catch (err) { confirmGuardianError.value = "An error occurred while confirming the guardian. Please try again."; + // eslint-disable-next-line no-console console.error(err); } }; diff --git a/packages/auth-server/pages/recovery/guardian/(actions)/confirm-recovery.vue b/packages/auth-server/pages/recovery.disabled/guardian/(actions)/confirm-recovery.vue similarity index 97% rename from packages/auth-server/pages/recovery/guardian/(actions)/confirm-recovery.vue rename to packages/auth-server/pages/recovery.disabled/guardian/(actions)/confirm-recovery.vue index a633abe77..d6bed9cb4 100644 --- a/packages/auth-server/pages/recovery/guardian/(actions)/confirm-recovery.vue +++ b/packages/auth-server/pages/recovery.disabled/guardian/(actions)/confirm-recovery.vue @@ -106,7 +106,7 @@