@naculus/connector-embedded 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +63 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +29 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Naculus
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var u=Object.create;var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var m=(n,e)=>{for(var t in e)o(n,t,{get:e[t],enumerable:!0})},d=(n,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of w(e))!h.call(n,s)&&s!==t&&o(n,s,{get:()=>e[s],enumerable:!(a=g(e,s))||a.enumerable});return n};var y=(n,e,t)=>(t=n!=null?u(p(n)):{},d(e||!n||!n.__esModule?o(t,"default",{value:n,enumerable:!0}):t,n)),P=n=>d(o({},"__esModule",{value:!0}),n);var k={};m(k,{PocketConnector:()=>l,createPocketConnector:()=>v});module.exports=P(k);var i=require("@naculus/connect-core"),W={desktop:!0,mobile:!0,deepLink:!1,qr:!1,trustedReconnect:!0},l=class{id="pocket";name="Pocket Wallet";kind="embedded";namespaces=["eip155"];supports=W;cfg;wallet=null;constructor(e={}){this.cfg={storageKey:e.storageKey??"naculus_pocket",derivationPath:e.derivationPath??"m/44'/60'/0'/0/0",autoSave:e.autoSave??!0,chainId:e.chainId??"eip155:1",rpcUrl:e.rpcUrl??""}}async ensureWallet(){if(!this.wallet){let{PocketWallet:e}=await import("@naculus/wallet-engine");this.wallet=new e(this.cfg)}return this.wallet}async generateWallet(){return(await this.ensureWallet()).generate()}async importFromMnemonic(e){return(await this.ensureWallet()).importMnemonic(e)}async importFromPrivateKey(e){return(await this.ensureWallet()).importPrivateKey(e)}async load(){return(await this.ensureWallet()).load()}getWallet(){return this.wallet?.getWalletData()??null}hasWallet(){return this.wallet?.hasWallet??!1}getAddress(){return this.wallet?.address??null}getStorageSecurityLevel(){return this.wallet?.getStorageSecurityLevel()??4}async wipe(){await(await this.ensureWallet()).wipe()}async connect(){let e=await this.ensureWallet();if(await e.load()||await e.generate(),!e.address)throw new i.WalletError("tx_failed","Failed to create pocket wallet");let a=e.address,s=this.cfg.chainId;return(0,i.createEmptySession)({id:`pocket-${a}-${Date.now()}`,walletId:a,walletType:"embedded",namespaces:{eip155:{chains:[s],accounts:[`${s}:${a}`],methods:["eth_sendTransaction","personal_sign","eth_signTypedData","eth_signTypedData_v4"],events:[]}},platform:"desktop-web"})}async reconnect(e){return e}async disconnect(){this.wallet=null}async getAccounts(e){let t=await this.ensureWallet();return t.address?[`${this.cfg.chainId}:${t.address}`]:[]}async signMessage(e,t){let a=await this.ensureWallet(),s=t,r=s.message,c=s.typedData;if(c){if(!a.signTypedData)throw new i.WalletError("method_not_allowed","signTypedData not supported");return(await a.signTypedData(c)).signature}if(!r)throw new i.WalletError("invalid_input","Message is required for signing");return(await a.signMessage(r)).signature}async signTransaction(e,t){let a=await this.ensureWallet(),s=t,r={to:s.to,value:s.value,data:s.data,gas:s.gas,gasPrice:s.gasPrice,chainId:parseInt(this.cfg.chainId.split(":")[1],10)};return a.signTransaction(r)}async sendTransaction(e,t){let a=await this.ensureWallet(),s=t,r={to:s.to,value:s.value,data:s.data,gas:s.gas,gasPrice:s.gasPrice};return a.sendTransaction(r)}async switchChain(e,t){this.cfg.chainId=t.startsWith("eip155:")?t:`eip155:${t}`;let a=await this.ensureWallet();a.setChain(this.cfg.chainId),e.namespaces.eip155.chains=[this.cfg.chainId],a.address&&(e.namespaces.eip155.accounts=[`${this.cfg.chainId}:${a.address}`])}async sendCalls(e,t,a){throw new i.WalletError("method_unsupported","sendCalls not supported via Pocket connector")}async getCapabilities(e){return{}}};function v(n){return new l(n)}0&&(module.exports={PocketConnector,createPocketConnector});
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Pocket Connector — Bridge from @naculus/connect to @naculus/wallet-engine\n *\n * This is a thin adapter that wraps PocketWallet into a UniversalConnector\n * so the connect SDK can use the embedded wallet seamlessly.\n *\n * When @naculus/wallet-engine is published independently, this file is the\n * only bridge point between the two packages.\n */\n\nimport type {\n ConnectorSupport,\n UniversalConnector,\n UniversalWalletSession,\n} from \"@naculus/connect-core\";\nimport { createEmptySession, WalletError } from \"@naculus/connect-core\";\nimport type { PocketConfig, WalletData } from \"@naculus/wallet-engine\";\n\nconst SUPPORT: ConnectorSupport = {\n desktop: true,\n mobile: true,\n deepLink: false,\n qr: false,\n trustedReconnect: true,\n};\n\nexport type { PocketConfig, WalletData };\n\nclass PocketConnectorImpl implements UniversalConnector {\n readonly id = \"pocket\";\n readonly name = \"Pocket Wallet\";\n readonly kind = \"embedded\" as const;\n readonly namespaces = [\"eip155\"];\n readonly supports = SUPPORT;\n\n private cfg: PocketConfig & {\n storageKey: string;\n derivationPath: string;\n autoSave: boolean;\n chainId: string;\n rpcUrl: string;\n };\n private wallet: import(\"@naculus/wallet-engine\").PocketWallet | null = null;\n\n constructor(config: PocketConfig = {}) {\n this.cfg = {\n storageKey: config.storageKey ?? \"naculus_pocket\",\n derivationPath: config.derivationPath ?? \"m/44'/60'/0'/0/0\",\n autoSave: config.autoSave ?? true,\n chainId: config.chainId ?? \"eip155:1\",\n rpcUrl: config.rpcUrl ?? \"\",\n };\n }\n\n private async ensureWallet(): Promise<\n import(\"@naculus/wallet-engine\").PocketWallet\n > {\n if (!this.wallet) {\n const { PocketWallet } = await import(\"@naculus/wallet-engine\");\n this.wallet = new PocketWallet(this.cfg);\n }\n return this.wallet;\n }\n\n // ── Wallet Lifecycle ──────────────────────────────────────────\n\n /** Generate a new random wallet */\n async generateWallet(): Promise<WalletData> {\n const w = await this.ensureWallet();\n return w.generate();\n }\n\n /** Import from mnemonic */\n async importFromMnemonic(mnemonic: string): Promise<WalletData> {\n const w = await this.ensureWallet();\n return w.importMnemonic(mnemonic);\n }\n\n /** Import from private key */\n async importFromPrivateKey(pkHex: `0x${string}`): Promise<WalletData> {\n const w = await this.ensureWallet();\n return w.importPrivateKey(pkHex);\n }\n\n /** Load wallet from storage */\n async load(): Promise<boolean> {\n const w = await this.ensureWallet();\n return w.load();\n }\n\n /** Get current wallet data */\n getWallet(): WalletData | null {\n return this.wallet?.getWalletData() ?? null;\n }\n\n /** Check if wallet exists */\n hasWallet(): boolean {\n return this.wallet?.hasWallet ?? false;\n }\n\n /** Get wallet address */\n getAddress(): string | null {\n return this.wallet?.address ?? null;\n }\n\n /**\n * Storage security tier — delegates to PocketWallet.getStorageSecurityLevel().\n *\n * 1 = IndexedDB + AES-GCM (highest)\n * 2 = IndexedDB (default)\n * 3 = localStorage + AES-GCM(warning)\n * 4 = localStorage (critical — switch browser)\n */\n getStorageSecurityLevel(): number {\n return this.wallet?.getStorageSecurityLevel() ?? 4;\n }\n\n /** Securely wipe wallet */\n async wipe(): Promise<void> {\n const w = await this.ensureWallet();\n await w.wipe();\n }\n\n // ── UniversalConnector Implementation ─────────────────────────\n\n async connect(): Promise<UniversalWalletSession> {\n const w = await this.ensureWallet();\n const loaded = await w.load();\n if (!loaded) await w.generate();\n if (!w.address)\n throw new WalletError(\"tx_failed\", \"Failed to create pocket wallet\");\n\n const addr = w.address;\n const cid = this.cfg.chainId;\n return createEmptySession({\n id: `pocket-${addr}-${Date.now()}`,\n walletId: addr,\n walletType: \"embedded\",\n namespaces: {\n eip155: {\n chains: [cid],\n accounts: [`${cid}:${addr}`],\n methods: [\n \"eth_sendTransaction\",\n \"personal_sign\",\n \"eth_signTypedData\",\n \"eth_signTypedData_v4\",\n ],\n events: [],\n },\n },\n platform: \"desktop-web\",\n });\n }\n\n async reconnect(\n session: UniversalWalletSession,\n ): Promise<UniversalWalletSession> {\n return session;\n }\n\n async disconnect(): Promise<void> {\n this.wallet = null;\n }\n\n async getAccounts(session: UniversalWalletSession): Promise<string[]> {\n const w = await this.ensureWallet();\n if (!w.address) return [];\n return [`${this.cfg.chainId}:${w.address}`];\n }\n\n async signMessage(\n session: UniversalWalletSession,\n input: unknown,\n ): Promise<unknown> {\n const w = await this.ensureWallet();\n const raw = input as Record<string, unknown>;\n const message = raw.message as string;\n\n // Route to typed data signing if typed data is provided\n const typedData = raw.typedData as string | undefined;\n if (typedData) {\n if (!w.signTypedData)\n throw new WalletError(\n \"method_not_allowed\",\n \"signTypedData not supported\",\n );\n const result = await w.signTypedData(typedData);\n return result.signature;\n }\n\n if (!message)\n throw new WalletError(\"invalid_input\", \"Message is required for signing\");\n const result = await w.signMessage(message);\n return result.signature;\n }\n\n async signTransaction(\n session: UniversalWalletSession,\n input: unknown,\n ): Promise<unknown> {\n const w = await this.ensureWallet();\n const raw = input as Record<string, unknown>;\n const txInput = {\n to: raw.to as string,\n value: raw.value as string,\n data: raw.data as string,\n gas: raw.gas as string,\n gasPrice: raw.gasPrice as string,\n chainId: parseInt(this.cfg.chainId.split(\":\")[1], 10),\n };\n return w.signTransaction(txInput);\n }\n\n async sendTransaction(\n session: UniversalWalletSession,\n input: unknown,\n ): Promise<unknown> {\n const w = await this.ensureWallet();\n const raw = input as Record<string, unknown>;\n const txInput = {\n to: raw.to as string,\n value: raw.value as string,\n data: raw.data as string,\n gas: raw.gas as string,\n gasPrice: raw.gasPrice as string,\n };\n return w.sendTransaction(txInput);\n }\n\n async switchChain(\n session: UniversalWalletSession,\n chainId: string,\n ): Promise<void> {\n this.cfg.chainId = chainId.startsWith(\"eip155:\")\n ? chainId\n : `eip155:${chainId}`;\n const w = await this.ensureWallet();\n w.setChain(this.cfg.chainId);\n session.namespaces.eip155.chains = [this.cfg.chainId];\n if (w.address) {\n session.namespaces.eip155.accounts = [`${this.cfg.chainId}:${w.address}`];\n }\n }\n\n async sendCalls(\n session: UniversalWalletSession,\n calls: any[],\n chainId?: string,\n ): Promise<string> {\n throw new WalletError(\n \"method_unsupported\",\n \"sendCalls not supported via Pocket connector\",\n );\n }\n\n async getCapabilities(\n session: UniversalWalletSession,\n ): Promise<Record<string, any>> {\n return {};\n }\n}\n\n// ── Exports (New API) ─────────────────────────────────────────\nexport function createPocketConnector(\n config?: PocketConfig,\n): PocketConnectorImpl {\n return new PocketConnectorImpl(config);\n}\nexport type { PocketConnectorImpl as PocketConnectorClass };\nexport { PocketConnectorImpl as PocketConnector };\n"],"mappings":"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","names":["index_exports","__export","PocketConnectorImpl","createPocketConnector","__toCommonJS","import_connect_core","SUPPORT","config","PocketWallet","mnemonic","pkHex","w","addr","cid","session","input","raw","message","typedData","txInput","chainId","calls"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { UniversalConnector, ConnectorSupport, UniversalWalletSession } from '@naculus/connect-core';
|
|
2
|
+
import { PocketConfig, WalletData } from '@naculus/wallet-engine';
|
|
3
|
+
export { PocketConfig, WalletData } from '@naculus/wallet-engine';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Pocket Connector — Bridge from @naculus/connect to @naculus/wallet-engine
|
|
7
|
+
*
|
|
8
|
+
* This is a thin adapter that wraps PocketWallet into a UniversalConnector
|
|
9
|
+
* so the connect SDK can use the embedded wallet seamlessly.
|
|
10
|
+
*
|
|
11
|
+
* When @naculus/wallet-engine is published independently, this file is the
|
|
12
|
+
* only bridge point between the two packages.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
declare class PocketConnectorImpl implements UniversalConnector {
|
|
16
|
+
readonly id = "pocket";
|
|
17
|
+
readonly name = "Pocket Wallet";
|
|
18
|
+
readonly kind: "embedded";
|
|
19
|
+
readonly namespaces: string[];
|
|
20
|
+
readonly supports: ConnectorSupport;
|
|
21
|
+
private cfg;
|
|
22
|
+
private wallet;
|
|
23
|
+
constructor(config?: PocketConfig);
|
|
24
|
+
private ensureWallet;
|
|
25
|
+
/** Generate a new random wallet */
|
|
26
|
+
generateWallet(): Promise<WalletData>;
|
|
27
|
+
/** Import from mnemonic */
|
|
28
|
+
importFromMnemonic(mnemonic: string): Promise<WalletData>;
|
|
29
|
+
/** Import from private key */
|
|
30
|
+
importFromPrivateKey(pkHex: `0x${string}`): Promise<WalletData>;
|
|
31
|
+
/** Load wallet from storage */
|
|
32
|
+
load(): Promise<boolean>;
|
|
33
|
+
/** Get current wallet data */
|
|
34
|
+
getWallet(): WalletData | null;
|
|
35
|
+
/** Check if wallet exists */
|
|
36
|
+
hasWallet(): boolean;
|
|
37
|
+
/** Get wallet address */
|
|
38
|
+
getAddress(): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Storage security tier — delegates to PocketWallet.getStorageSecurityLevel().
|
|
41
|
+
*
|
|
42
|
+
* 1 = IndexedDB + AES-GCM (highest)
|
|
43
|
+
* 2 = IndexedDB (default)
|
|
44
|
+
* 3 = localStorage + AES-GCM(warning)
|
|
45
|
+
* 4 = localStorage (critical — switch browser)
|
|
46
|
+
*/
|
|
47
|
+
getStorageSecurityLevel(): number;
|
|
48
|
+
/** Securely wipe wallet */
|
|
49
|
+
wipe(): Promise<void>;
|
|
50
|
+
connect(): Promise<UniversalWalletSession>;
|
|
51
|
+
reconnect(session: UniversalWalletSession): Promise<UniversalWalletSession>;
|
|
52
|
+
disconnect(): Promise<void>;
|
|
53
|
+
getAccounts(session: UniversalWalletSession): Promise<string[]>;
|
|
54
|
+
signMessage(session: UniversalWalletSession, input: unknown): Promise<unknown>;
|
|
55
|
+
signTransaction(session: UniversalWalletSession, input: unknown): Promise<unknown>;
|
|
56
|
+
sendTransaction(session: UniversalWalletSession, input: unknown): Promise<unknown>;
|
|
57
|
+
switchChain(session: UniversalWalletSession, chainId: string): Promise<void>;
|
|
58
|
+
sendCalls(session: UniversalWalletSession, calls: any[], chainId?: string): Promise<string>;
|
|
59
|
+
getCapabilities(session: UniversalWalletSession): Promise<Record<string, any>>;
|
|
60
|
+
}
|
|
61
|
+
declare function createPocketConnector(config?: PocketConfig): PocketConnectorImpl;
|
|
62
|
+
|
|
63
|
+
export { PocketConnectorImpl as PocketConnector, PocketConnectorImpl as PocketConnectorClass, createPocketConnector };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { UniversalConnector, ConnectorSupport, UniversalWalletSession } from '@naculus/connect-core';
|
|
2
|
+
import { PocketConfig, WalletData } from '@naculus/wallet-engine';
|
|
3
|
+
export { PocketConfig, WalletData } from '@naculus/wallet-engine';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Pocket Connector — Bridge from @naculus/connect to @naculus/wallet-engine
|
|
7
|
+
*
|
|
8
|
+
* This is a thin adapter that wraps PocketWallet into a UniversalConnector
|
|
9
|
+
* so the connect SDK can use the embedded wallet seamlessly.
|
|
10
|
+
*
|
|
11
|
+
* When @naculus/wallet-engine is published independently, this file is the
|
|
12
|
+
* only bridge point between the two packages.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
declare class PocketConnectorImpl implements UniversalConnector {
|
|
16
|
+
readonly id = "pocket";
|
|
17
|
+
readonly name = "Pocket Wallet";
|
|
18
|
+
readonly kind: "embedded";
|
|
19
|
+
readonly namespaces: string[];
|
|
20
|
+
readonly supports: ConnectorSupport;
|
|
21
|
+
private cfg;
|
|
22
|
+
private wallet;
|
|
23
|
+
constructor(config?: PocketConfig);
|
|
24
|
+
private ensureWallet;
|
|
25
|
+
/** Generate a new random wallet */
|
|
26
|
+
generateWallet(): Promise<WalletData>;
|
|
27
|
+
/** Import from mnemonic */
|
|
28
|
+
importFromMnemonic(mnemonic: string): Promise<WalletData>;
|
|
29
|
+
/** Import from private key */
|
|
30
|
+
importFromPrivateKey(pkHex: `0x${string}`): Promise<WalletData>;
|
|
31
|
+
/** Load wallet from storage */
|
|
32
|
+
load(): Promise<boolean>;
|
|
33
|
+
/** Get current wallet data */
|
|
34
|
+
getWallet(): WalletData | null;
|
|
35
|
+
/** Check if wallet exists */
|
|
36
|
+
hasWallet(): boolean;
|
|
37
|
+
/** Get wallet address */
|
|
38
|
+
getAddress(): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Storage security tier — delegates to PocketWallet.getStorageSecurityLevel().
|
|
41
|
+
*
|
|
42
|
+
* 1 = IndexedDB + AES-GCM (highest)
|
|
43
|
+
* 2 = IndexedDB (default)
|
|
44
|
+
* 3 = localStorage + AES-GCM(warning)
|
|
45
|
+
* 4 = localStorage (critical — switch browser)
|
|
46
|
+
*/
|
|
47
|
+
getStorageSecurityLevel(): number;
|
|
48
|
+
/** Securely wipe wallet */
|
|
49
|
+
wipe(): Promise<void>;
|
|
50
|
+
connect(): Promise<UniversalWalletSession>;
|
|
51
|
+
reconnect(session: UniversalWalletSession): Promise<UniversalWalletSession>;
|
|
52
|
+
disconnect(): Promise<void>;
|
|
53
|
+
getAccounts(session: UniversalWalletSession): Promise<string[]>;
|
|
54
|
+
signMessage(session: UniversalWalletSession, input: unknown): Promise<unknown>;
|
|
55
|
+
signTransaction(session: UniversalWalletSession, input: unknown): Promise<unknown>;
|
|
56
|
+
sendTransaction(session: UniversalWalletSession, input: unknown): Promise<unknown>;
|
|
57
|
+
switchChain(session: UniversalWalletSession, chainId: string): Promise<void>;
|
|
58
|
+
sendCalls(session: UniversalWalletSession, calls: any[], chainId?: string): Promise<string>;
|
|
59
|
+
getCapabilities(session: UniversalWalletSession): Promise<Record<string, any>>;
|
|
60
|
+
}
|
|
61
|
+
declare function createPocketConnector(config?: PocketConfig): PocketConnectorImpl;
|
|
62
|
+
|
|
63
|
+
export { PocketConnectorImpl as PocketConnector, PocketConnectorImpl as PocketConnectorClass, createPocketConnector };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createEmptySession as c,WalletError as i}from"@naculus/connect-core";var d={desktop:!0,mobile:!0,deepLink:!1,qr:!1,trustedReconnect:!0},r=class{id="pocket";name="Pocket Wallet";kind="embedded";namespaces=["eip155"];supports=d;cfg;wallet=null;constructor(e={}){this.cfg={storageKey:e.storageKey??"naculus_pocket",derivationPath:e.derivationPath??"m/44'/60'/0'/0/0",autoSave:e.autoSave??!0,chainId:e.chainId??"eip155:1",rpcUrl:e.rpcUrl??""}}async ensureWallet(){if(!this.wallet){let{PocketWallet:e}=await import("@naculus/wallet-engine");this.wallet=new e(this.cfg)}return this.wallet}async generateWallet(){return(await this.ensureWallet()).generate()}async importFromMnemonic(e){return(await this.ensureWallet()).importMnemonic(e)}async importFromPrivateKey(e){return(await this.ensureWallet()).importPrivateKey(e)}async load(){return(await this.ensureWallet()).load()}getWallet(){return this.wallet?.getWalletData()??null}hasWallet(){return this.wallet?.hasWallet??!1}getAddress(){return this.wallet?.address??null}getStorageSecurityLevel(){return this.wallet?.getStorageSecurityLevel()??4}async wipe(){await(await this.ensureWallet()).wipe()}async connect(){let e=await this.ensureWallet();if(await e.load()||await e.generate(),!e.address)throw new i("tx_failed","Failed to create pocket wallet");let a=e.address,t=this.cfg.chainId;return c({id:`pocket-${a}-${Date.now()}`,walletId:a,walletType:"embedded",namespaces:{eip155:{chains:[t],accounts:[`${t}:${a}`],methods:["eth_sendTransaction","personal_sign","eth_signTypedData","eth_signTypedData_v4"],events:[]}},platform:"desktop-web"})}async reconnect(e){return e}async disconnect(){this.wallet=null}async getAccounts(e){let s=await this.ensureWallet();return s.address?[`${this.cfg.chainId}:${s.address}`]:[]}async signMessage(e,s){let a=await this.ensureWallet(),t=s,n=t.message,l=t.typedData;if(l){if(!a.signTypedData)throw new i("method_not_allowed","signTypedData not supported");return(await a.signTypedData(l)).signature}if(!n)throw new i("invalid_input","Message is required for signing");return(await a.signMessage(n)).signature}async signTransaction(e,s){let a=await this.ensureWallet(),t=s,n={to:t.to,value:t.value,data:t.data,gas:t.gas,gasPrice:t.gasPrice,chainId:parseInt(this.cfg.chainId.split(":")[1],10)};return a.signTransaction(n)}async sendTransaction(e,s){let a=await this.ensureWallet(),t=s,n={to:t.to,value:t.value,data:t.data,gas:t.gas,gasPrice:t.gasPrice};return a.sendTransaction(n)}async switchChain(e,s){this.cfg.chainId=s.startsWith("eip155:")?s:`eip155:${s}`;let a=await this.ensureWallet();a.setChain(this.cfg.chainId),e.namespaces.eip155.chains=[this.cfg.chainId],a.address&&(e.namespaces.eip155.accounts=[`${this.cfg.chainId}:${a.address}`])}async sendCalls(e,s,a){throw new i("method_unsupported","sendCalls not supported via Pocket connector")}async getCapabilities(e){return{}}};function p(o){return new r(o)}export{r as PocketConnector,p as createPocketConnector};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Pocket Connector — Bridge from @naculus/connect to @naculus/wallet-engine\n *\n * This is a thin adapter that wraps PocketWallet into a UniversalConnector\n * so the connect SDK can use the embedded wallet seamlessly.\n *\n * When @naculus/wallet-engine is published independently, this file is the\n * only bridge point between the two packages.\n */\n\nimport type {\n ConnectorSupport,\n UniversalConnector,\n UniversalWalletSession,\n} from \"@naculus/connect-core\";\nimport { createEmptySession, WalletError } from \"@naculus/connect-core\";\nimport type { PocketConfig, WalletData } from \"@naculus/wallet-engine\";\n\nconst SUPPORT: ConnectorSupport = {\n desktop: true,\n mobile: true,\n deepLink: false,\n qr: false,\n trustedReconnect: true,\n};\n\nexport type { PocketConfig, WalletData };\n\nclass PocketConnectorImpl implements UniversalConnector {\n readonly id = \"pocket\";\n readonly name = \"Pocket Wallet\";\n readonly kind = \"embedded\" as const;\n readonly namespaces = [\"eip155\"];\n readonly supports = SUPPORT;\n\n private cfg: PocketConfig & {\n storageKey: string;\n derivationPath: string;\n autoSave: boolean;\n chainId: string;\n rpcUrl: string;\n };\n private wallet: import(\"@naculus/wallet-engine\").PocketWallet | null = null;\n\n constructor(config: PocketConfig = {}) {\n this.cfg = {\n storageKey: config.storageKey ?? \"naculus_pocket\",\n derivationPath: config.derivationPath ?? \"m/44'/60'/0'/0/0\",\n autoSave: config.autoSave ?? true,\n chainId: config.chainId ?? \"eip155:1\",\n rpcUrl: config.rpcUrl ?? \"\",\n };\n }\n\n private async ensureWallet(): Promise<\n import(\"@naculus/wallet-engine\").PocketWallet\n > {\n if (!this.wallet) {\n const { PocketWallet } = await import(\"@naculus/wallet-engine\");\n this.wallet = new PocketWallet(this.cfg);\n }\n return this.wallet;\n }\n\n // ── Wallet Lifecycle ──────────────────────────────────────────\n\n /** Generate a new random wallet */\n async generateWallet(): Promise<WalletData> {\n const w = await this.ensureWallet();\n return w.generate();\n }\n\n /** Import from mnemonic */\n async importFromMnemonic(mnemonic: string): Promise<WalletData> {\n const w = await this.ensureWallet();\n return w.importMnemonic(mnemonic);\n }\n\n /** Import from private key */\n async importFromPrivateKey(pkHex: `0x${string}`): Promise<WalletData> {\n const w = await this.ensureWallet();\n return w.importPrivateKey(pkHex);\n }\n\n /** Load wallet from storage */\n async load(): Promise<boolean> {\n const w = await this.ensureWallet();\n return w.load();\n }\n\n /** Get current wallet data */\n getWallet(): WalletData | null {\n return this.wallet?.getWalletData() ?? null;\n }\n\n /** Check if wallet exists */\n hasWallet(): boolean {\n return this.wallet?.hasWallet ?? false;\n }\n\n /** Get wallet address */\n getAddress(): string | null {\n return this.wallet?.address ?? null;\n }\n\n /**\n * Storage security tier — delegates to PocketWallet.getStorageSecurityLevel().\n *\n * 1 = IndexedDB + AES-GCM (highest)\n * 2 = IndexedDB (default)\n * 3 = localStorage + AES-GCM(warning)\n * 4 = localStorage (critical — switch browser)\n */\n getStorageSecurityLevel(): number {\n return this.wallet?.getStorageSecurityLevel() ?? 4;\n }\n\n /** Securely wipe wallet */\n async wipe(): Promise<void> {\n const w = await this.ensureWallet();\n await w.wipe();\n }\n\n // ── UniversalConnector Implementation ─────────────────────────\n\n async connect(): Promise<UniversalWalletSession> {\n const w = await this.ensureWallet();\n const loaded = await w.load();\n if (!loaded) await w.generate();\n if (!w.address)\n throw new WalletError(\"tx_failed\", \"Failed to create pocket wallet\");\n\n const addr = w.address;\n const cid = this.cfg.chainId;\n return createEmptySession({\n id: `pocket-${addr}-${Date.now()}`,\n walletId: addr,\n walletType: \"embedded\",\n namespaces: {\n eip155: {\n chains: [cid],\n accounts: [`${cid}:${addr}`],\n methods: [\n \"eth_sendTransaction\",\n \"personal_sign\",\n \"eth_signTypedData\",\n \"eth_signTypedData_v4\",\n ],\n events: [],\n },\n },\n platform: \"desktop-web\",\n });\n }\n\n async reconnect(\n session: UniversalWalletSession,\n ): Promise<UniversalWalletSession> {\n return session;\n }\n\n async disconnect(): Promise<void> {\n this.wallet = null;\n }\n\n async getAccounts(session: UniversalWalletSession): Promise<string[]> {\n const w = await this.ensureWallet();\n if (!w.address) return [];\n return [`${this.cfg.chainId}:${w.address}`];\n }\n\n async signMessage(\n session: UniversalWalletSession,\n input: unknown,\n ): Promise<unknown> {\n const w = await this.ensureWallet();\n const raw = input as Record<string, unknown>;\n const message = raw.message as string;\n\n // Route to typed data signing if typed data is provided\n const typedData = raw.typedData as string | undefined;\n if (typedData) {\n if (!w.signTypedData)\n throw new WalletError(\n \"method_not_allowed\",\n \"signTypedData not supported\",\n );\n const result = await w.signTypedData(typedData);\n return result.signature;\n }\n\n if (!message)\n throw new WalletError(\"invalid_input\", \"Message is required for signing\");\n const result = await w.signMessage(message);\n return result.signature;\n }\n\n async signTransaction(\n session: UniversalWalletSession,\n input: unknown,\n ): Promise<unknown> {\n const w = await this.ensureWallet();\n const raw = input as Record<string, unknown>;\n const txInput = {\n to: raw.to as string,\n value: raw.value as string,\n data: raw.data as string,\n gas: raw.gas as string,\n gasPrice: raw.gasPrice as string,\n chainId: parseInt(this.cfg.chainId.split(\":\")[1], 10),\n };\n return w.signTransaction(txInput);\n }\n\n async sendTransaction(\n session: UniversalWalletSession,\n input: unknown,\n ): Promise<unknown> {\n const w = await this.ensureWallet();\n const raw = input as Record<string, unknown>;\n const txInput = {\n to: raw.to as string,\n value: raw.value as string,\n data: raw.data as string,\n gas: raw.gas as string,\n gasPrice: raw.gasPrice as string,\n };\n return w.sendTransaction(txInput);\n }\n\n async switchChain(\n session: UniversalWalletSession,\n chainId: string,\n ): Promise<void> {\n this.cfg.chainId = chainId.startsWith(\"eip155:\")\n ? chainId\n : `eip155:${chainId}`;\n const w = await this.ensureWallet();\n w.setChain(this.cfg.chainId);\n session.namespaces.eip155.chains = [this.cfg.chainId];\n if (w.address) {\n session.namespaces.eip155.accounts = [`${this.cfg.chainId}:${w.address}`];\n }\n }\n\n async sendCalls(\n session: UniversalWalletSession,\n calls: any[],\n chainId?: string,\n ): Promise<string> {\n throw new WalletError(\n \"method_unsupported\",\n \"sendCalls not supported via Pocket connector\",\n );\n }\n\n async getCapabilities(\n session: UniversalWalletSession,\n ): Promise<Record<string, any>> {\n return {};\n }\n}\n\n// ── Exports (New API) ─────────────────────────────────────────\nexport function createPocketConnector(\n config?: PocketConfig,\n): PocketConnectorImpl {\n return new PocketConnectorImpl(config);\n}\nexport type { PocketConnectorImpl as PocketConnectorClass };\nexport { PocketConnectorImpl as PocketConnector };\n"],"mappings":"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","names":["createEmptySession","WalletError","SUPPORT","PocketConnectorImpl","config","PocketWallet","mnemonic","pkHex","w","addr","cid","session","input","raw","message","typedData","txInput","chainId","calls","createPocketConnector"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@naculus/connector-embedded",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist"
|
|
15
|
+
],
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@naculus/connect-core": "0.1.0",
|
|
18
|
+
"@naculus/wallet-engine": "0.1.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"tsup": "^8.3.6",
|
|
22
|
+
"typescript": "^5.9.3"
|
|
23
|
+
},
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "tsup",
|
|
27
|
+
"clean": "rm -rf dist"
|
|
28
|
+
}
|
|
29
|
+
}
|