{"_id":"@d9-network/dapp-connector","name":"@d9-network/dapp-connector","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@d9-network/dapp-connector","version":"0.1.0","description":"Production SDK for connecting D9 Wallet from dapps via PAPI extension and WalletConnect.","license":"MIT","type":"module","sideEffects":false,"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./protocol":{"types":"./dist/protocol.d.ts","import":"./dist/protocol.js","default":"./dist/protocol.js"},"./package.json":"./package.json"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/D-Nine-Chain/mobile-wallet.git","directory":"packages/dapp-connector"},"bugs":{"url":"https://github.com/D-Nine-Chain/mobile-wallet/issues"},"homepage":"https://github.com/D-Nine-Chain/mobile-wallet/tree/main/packages/dapp-connector#readme","keywords":["d9","wallet","polkadot","papi","walletconnect","substrate","dapp","signer"],"engines":{"node":">=20"},"dependencies":{"@walletconnect/sign-client":"2.23.10","polkadot-api":"^2.1.6","zod":"^4.4.3"},"devDependencies":{"@types/node":"^25.9.3","tsdown":"^0.22.8","tsx":"4.21.0","typescript":"6.0.3"},"scripts":{"build":"tsdown","test:run":"tsx --test src/**/*.test.ts","typecheck":"tsc --project tsconfig.json --noEmit"},"_nodeVersion":"24.18.0","_id":"@d9-network/dapp-connector@0.1.0","dist":{"integrity":"sha512-xLcWj4QxptOBFKTswJcwx0UTMCqlY+ScTXMtyDJA3DB7aW9MD3UIMPoU6vfcx7pub3QNPZZOpYURJUMyMDy+hQ==","shasum":"69561cf302073e3bbd06dba77a18e21ae6d950fa","tarball":"https://registry.npmjs.org/@d9-network/dapp-connector/-/dapp-connector-0.1.0.tgz","fileCount":9,"unpackedSize":144116,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBOKpo7OBnrlew1ecYM0cZmeNZy7TiP2ZDYico1xn/zqAiEAl8Yu+AuuxVdH9bgCO+soyLHK92IvJHntXHOINzTiVBA="}]},"_npmUser":{"name":"cyenoch","email":"1759761439@qq.com"},"directories":{},"maintainers":[{"name":"cyenoch","email":"1759761439@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dapp-connector_0.1.0_1784276696525_0.7211462629911707"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-17T08:24:56.365Z","0.1.0":"2026-07-17T08:24:56.658Z","modified":"2026-07-17T08:24:56.921Z"},"maintainers":[{"name":"cyenoch","email":"1759761439@qq.com"}],"description":"Production SDK for connecting D9 Wallet from dapps via PAPI extension and WalletConnect.","homepage":"https://github.com/D-Nine-Chain/mobile-wallet/tree/main/packages/dapp-connector#readme","keywords":["d9","wallet","polkadot","papi","walletconnect","substrate","dapp","signer"],"repository":{"type":"git","url":"git+https://github.com/D-Nine-Chain/mobile-wallet.git","directory":"packages/dapp-connector"},"bugs":{"url":"https://github.com/D-Nine-Chain/mobile-wallet/issues"},"license":"MIT","readme":"# @d9-network/dapp-connector\n\nProduction SDK for connecting **D9 Wallet** from web dapps.\n\nSupports:\n\n- **PAPI extension** (`window.injectedWeb3[\"d9-wallet\"]`) inside the D9 Wallet in-app browser\n- **WalletConnect v2** (`d9net` namespace) for external browsers / mobile deep links\n\n## Install\n\n```bash\nnpm install @d9-network/dapp-connector\n# or\npnpm add @d9-network/dapp-connector\n```\n\n## Quick start\n\n```ts\nimport {\n  createD9DAppConnector,\n  D9_DEFAULT_CHAIN_ID,\n  D9_DEFAULT_WALLET_CONNECT_PROJECT_ID,\n  D9_DEFAULT_WALLET_CONNECT_RELAY_URL,\n  buildD9WalletConnectAppLink,\n} from \"@d9-network/dapp-connector\";\n\nconst connector = createD9DAppConnector({\n  dappName: \"My DApp\",\n  chainId: D9_DEFAULT_CHAIN_ID, // d9net:<genesis-ref>\n  walletConnect: {\n    projectId: D9_DEFAULT_WALLET_CONNECT_PROJECT_ID,\n    relayUrl: D9_DEFAULT_WALLET_CONNECT_RELAY_URL,\n    metadata: {\n      name: \"My DApp\",\n      description: \"Example\",\n      url: window.location.origin,\n      icons: [`${window.location.origin}/icon.png`],\n    },\n  },\n});\n\n// Prefer injected PAPI when available; otherwise WalletConnect.\nconst start = await connector.connect({ transport: \"auto\" });\n\nif (start.transport === \"papi\") {\n  // Connected immediately after user approval in the wallet.\n  console.log(connector.getAccounts());\n} else {\n  // Show QR / open deep link with start.uri\n  if (start.uri) {\n    // Mobile deep link into D9 Wallet\n    // window.location.href = buildD9WalletConnectAppLink(start.uri)\n  }\n  await start.approval();\n}\n\nconst account = connector.getAccounts()[0];\nif (!account) throw new Error(\"No account\");\n\nconst signed = await connector.signMessage({\n  address: account.address,\n  message: \"Hello from My DApp\",\n});\nconsole.log(signed.signature);\n```\n\n### Explicit transports\n\n```ts\n// PAPI only (D9 Wallet browser)\nawait connector.papi.connect();\n\n// WalletConnect only\nconst wc = await connector.walletConnect.connect({\n  requiredMethods: [\"d9_signMessage\"],\n});\n// show wc.uri, then:\nconst handle = await wc.approval();\nawait handle.requestMessage({\n  account: connector.getAccounts()[0]!.accountId!,\n  message: \"0x0102\",\n});\n```\n\n### Snapshot / subscribe\n\n```ts\nconst stop = connector.subscribe((snapshot) => {\n  console.log(snapshot.status, snapshot.transport, snapshot.accounts);\n});\n\n// later\nstop();\nawait connector.disconnect();\n```\n\n## Protocol notes\n\n| Surface | Value |\n| --- | --- |\n| Injected provider name | `d9-wallet` |\n| WalletConnect namespace | `d9net` |\n| Chain ID | `d9net:<first 32 hex of genesis hash>` |\n| Message method | `d9_signMessage` |\n| Transaction method | `d9_signTransaction` |\n| Auth method | `d9_authenticate` |\n| Account names (WC) | `sessionProperties[\"d9.accountNames\"]` JSON map |\n| Display addresses | `Dn...` prefix (signer still uses chain address under the hood) |\n\n## Build / publish\n\n```bash\npnpm --filter @d9-network/dapp-connector typecheck\npnpm --filter @d9-network/dapp-connector test:run\npnpm --filter @d9-network/dapp-connector build\n\n# dry-run\npnpm --filter @d9-network/dapp-connector exec npm pack --dry-run\n\n# publish (npm login first)\npnpm --filter @d9-network/dapp-connector publish --access public\n```\n\n`prepublishOnly` runs typecheck + tests + tsdown build.\n\n## Example app\n\nSee `apps/example-dapp` in this monorepo for a Vite + React demo of both transports.\n","readmeFilename":"","_rev":"1-b8b7c48219193830441f9bf47fd58679"}