@upbond/sdk - v0.0.3
    Preparing search index...

    @upbond/sdk - v0.0.3

    @upbond/sdk — Login 3.0 外部 SDK

    RP 開発者が UPBOND ID(OIDC)+ 埋め込みウォレット(MPC/TSS)+ リカバリを数行で組み込むための SDK(docs/00-BUILD-SPEC.md §1)。auth0-spa-js や @web3auth/* を直接使わずに済ませることが目的。

    • EXAMPLES.md — シナリオ別のサンプル集(認証専用 / リダイレクトウォレット / 埋め込みウィジェット / 低レベル OIDC)。型チェック済みの examples/*.ts を embedme で埋め込み。
    • docs/api/ — 生成 API リファレンス(TypeDoc → Markdown、pnpm --filter @upbond/sdk docs:api で再生成)。
    • docs/24-sdk-design.md — 設計記録(決定事項 D1–、変更記録)。
    • docs/27-sdk-release.md — 初回外部リリース Runbook(準備済み・未実行)。

    RP が設定するのは clientId の 1 つだけ(+ staging に繋ぐ場合の environment)。environment のデフォルトは 'production' で、issuer(auth.upbond.io)からウォレットまで全部が埋まる。ウォレットのデフォルトは embedded(ウィジェット)モード: 鍵・パスキー・儀式はすべて wallet.upbond.io のウィジェット内で動き、RP ページには EIP-1193 provider だけが渡る。redirectUriwindow.location.origin がデフォルト(issuer 側にその値を登録しておくこと)。

    import { createUpbond } from '@upbond/sdk';

    const upbond = createUpbond({
    clientId: 'your-client-id',
    // environment: 'staging', // staging に繋ぐ場合のみ。省略 = production
    });

    await upbond.init(); // callback 消費 or セッション復元
    loginBtn.onclick = () => upbond.login(); // issuer へ redirect(PKCE は内部)
    logoutBtn.onclick = () => upbond.logout(); // issuer サインアウト

    認証専用の RP もこの形のまま — ウォレット系メソッドを呼ばなければウォレットには触れない。

    追加設定は不要。connect() でユーザーを接続し、getEthereumProvider() の EIP-1193 provider を ethers.js / viem からそのまま使える。署名要求は必ずウィジェットの確認 UI(origin バッジ + 生体)に落ちる — RP ページからのサイレント署名は不能。

    const upbond = createUpbond({ clientId: 'your-client-id' });

    await upbond.init();
    connectBtn.onclick = async () => {
    await upbond.connect(); // popup: ログイン + ウォレット(ユーザージェスチャー内で!)
    const provider = await upbond.getEthereumProvider(); // EIP-1193
    const [address] = await provider.request({ method: 'eth_accounts' });
    };
    sendBtn.onclick = async () => {
    const provider = await upbond.getEthereumProvider();
    await provider.request({
    method: 'eth_sendTransaction',
    params: [{ to, value }], // 承認はウィジェット側の確認 UI
    });
    };
    openBtn.onclick = () => upbond.openWallet(); // フルウォレット UI をオーバーレイ表示

    対応 RPC は eth_accounts / eth_requestAccounts / eth_chainId / personal_sign / eth_sendTransaction(ネイティブ送金)。data 付き tx(ERC-20 / コントラクト呼び出し)と読み取り系(eth_call 等)は未対応 — 読み取りは公開 RPC の JsonRpcProvider を併用する(docs/25-widget.md)。

    wallet: { mode: 'redirect' } で MPC 儀式を RP ページ内で実行する形に切り替わる(connectWallet() / setupWallet() / signTransaction() 系 API)。この場合はパートナーの origin を Web3Auth ダッシュボードの allowed origins に追加する運用が必要。旧設定との互換のため、mode 省略でもローカル MPC 系フィールド(web3authClientId / network / verifier / rpId / recovery)を明示した設定は redirect と解釈される。詳細は EXAMPLES.md §2。

    注意点:

    • ウォレット操作(connect() / redirect モードの setupWallet 等)はユーザージェスチャー(クリックハンドラ)内で呼ぶ — popup / パスキー / 生体プロンプトが開くため。
    • MPC スタック(redirect モード)は動的 import。embedded / 認証専用の RP はバンドルにも実行時にも @web3auth を含まない。
    • 低レベル API(beginAuthorization / completeAuthorization / buildLogoutUrl)は advanced 用途向けに公開継続。
    • src/index.ts が公開面のすべて。それ以外の import はサポート外。
    • 内部は src/core/(プラットフォーム非依存 — 将来 @upbond/sdk-core として抽出可能)と src/web/(ブラウザアダプタ)に分離。境界は scripts/check-deps.mjs が CI で強制する: core はブラウザグローバル禁止・import は @upbond/shared / jose / core 内相対のみ。
    • @web3auth/* の直接依存は禁止(wallet-core 抽象経由のみ、.claude/rules/wallet.md)。
    • エラーはすべて UpbondError { code }。内部実装のエラー型は公開面に漏らさない。

    公開 API(型・メソッド・エラー code)は外部顧客との契約であり、破壊的変更はバージョニング + docs/ の移行ガイドなしに行わない。契約の凍結は初の外部リリースから適用。それまでは 0.x として docs/24-sdk-design.md(設計記録)に変更を記録しながら開発する。