@cartridge/controller 0.8.0 → 0.9.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/.turbo/turbo-build$colon$deps.log +51 -49
- package/.turbo/turbo-build.log +47 -45
- package/dist/account.d.ts +2 -3
- package/dist/controller.d.ts +1 -1
- package/dist/iframe/keychain.d.ts +4 -2
- package/dist/index.js +179 -180
- package/dist/index.js.map +1 -1
- package/dist/node/index.cjs +2 -2
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +2 -2
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.js +2 -2
- package/dist/node/index.js.map +1 -1
- package/dist/{provider-ClUbos7A.js → provider-B9Ikz5hr.js} +2 -2
- package/dist/provider-B9Ikz5hr.js.map +1 -0
- package/dist/provider.d.ts +1 -1
- package/dist/session.js +10 -10
- package/dist/session.js.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/wallets/bridge.d.ts +2 -2
- package/dist/wallets/metamask/index.d.ts +2 -2
- package/dist/wallets/rabby/index.d.ts +1 -1
- package/dist/wallets/types.d.ts +2 -2
- package/package.json +6 -6
- package/src/account.ts +5 -8
- package/src/controller.ts +2 -2
- package/src/iframe/keychain.ts +14 -2
- package/src/node/account.ts +1 -1
- package/src/provider.ts +9 -9
- package/src/session/account.ts +1 -2
- package/src/types.ts +0 -1
- package/src/wallets/bridge.ts +5 -18
- package/src/wallets/metamask/index.ts +9 -13
- package/src/wallets/rabby/index.ts +9 -4
- package/src/wallets/types.ts +5 -2
- package/.turbo/turbo-format$colon$check.log +0 -7
- package/.turbo/turbo-format.log +0 -44
- package/dist/provider-ClUbos7A.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -76,7 +76,7 @@ type CartridgeID = string;
|
|
|
76
76
|
export type ControllerAccounts = Record<ContractAddress, CartridgeID>;
|
|
77
77
|
export interface Keychain {
|
|
78
78
|
probe(rpcUrl: string): Promise<ProbeReply | ConnectError>;
|
|
79
|
-
connect(policies: SessionPolicies, rpcUrl: string, signupOptions?: AuthOptions
|
|
79
|
+
connect(policies: SessionPolicies, rpcUrl: string, signupOptions?: AuthOptions): Promise<ConnectReply | ConnectError>;
|
|
80
80
|
disconnect(): void;
|
|
81
81
|
reset(): void;
|
|
82
82
|
revoke(origin: string): void;
|
package/dist/wallets/bridge.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare class WalletBridge {
|
|
|
4
4
|
constructor();
|
|
5
5
|
getIFrameMethods(): {
|
|
6
6
|
externalDetectWallets: (_origin: string) => () => Promise<ExternalWallet[]>;
|
|
7
|
-
externalConnectWallet: (_origin: string) => (type: ExternalWalletType
|
|
7
|
+
externalConnectWallet: (_origin: string) => (type: ExternalWalletType) => Promise<ExternalWalletResponse<unknown>>;
|
|
8
8
|
externalSignMessage: (_origin: string) => (identifier: ExternalWalletType | string, message: string) => Promise<ExternalWalletResponse<unknown>>;
|
|
9
9
|
externalSignTypedData: (_origin: string) => (identifier: ExternalWalletType | string, data: any) => Promise<ExternalWalletResponse<unknown>>;
|
|
10
10
|
externalSendTransaction: (_origin: string) => (identifier: ExternalWalletType | string, txn: any) => Promise<ExternalWalletResponse<unknown>>;
|
|
@@ -13,7 +13,7 @@ export declare class WalletBridge {
|
|
|
13
13
|
detectWallets(): Promise<ExternalWallet[]>;
|
|
14
14
|
private getWalletAdapterByType;
|
|
15
15
|
private handleError;
|
|
16
|
-
connectWallet(type: ExternalWalletType
|
|
16
|
+
connectWallet(type: ExternalWalletType): Promise<ExternalWalletResponse>;
|
|
17
17
|
private getConnectedWalletAdapter;
|
|
18
18
|
signMessage(identifier: ExternalWalletType | string, message: string): Promise<ExternalWalletResponse>;
|
|
19
19
|
signTypedData(identifier: ExternalWalletType | string, data: any): Promise<ExternalWalletResponse>;
|
|
@@ -9,10 +9,10 @@ export declare class MetaMaskWallet implements WalletAdapter {
|
|
|
9
9
|
constructor();
|
|
10
10
|
isAvailable(): boolean;
|
|
11
11
|
getInfo(): ExternalWallet;
|
|
12
|
-
connect(
|
|
12
|
+
connect(): Promise<ExternalWalletResponse<any>>;
|
|
13
13
|
getConnectedAccounts(): string[];
|
|
14
14
|
signTransaction(transaction: any): Promise<ExternalWalletResponse<any>>;
|
|
15
|
-
signMessage(message: string): Promise<ExternalWalletResponse<any>>;
|
|
15
|
+
signMessage(message: string, address?: string): Promise<ExternalWalletResponse<any>>;
|
|
16
16
|
signTypedData(data: any): Promise<ExternalWalletResponse<any>>;
|
|
17
17
|
sendTransaction(_txn: any): Promise<ExternalWalletResponse<any>>;
|
|
18
18
|
switchChain(chainId: string): Promise<boolean>;
|
|
@@ -12,7 +12,7 @@ export declare class RabbyWallet implements WalletAdapter {
|
|
|
12
12
|
connect(address?: string): Promise<ExternalWalletResponse<any>>;
|
|
13
13
|
getConnectedAccounts(): string[];
|
|
14
14
|
signTransaction(transaction: any): Promise<ExternalWalletResponse<any>>;
|
|
15
|
-
signMessage(message: `0x${string}
|
|
15
|
+
signMessage(message: `0x${string}`, address?: string): Promise<ExternalWalletResponse<any>>;
|
|
16
16
|
signTypedData(data: any): Promise<ExternalWalletResponse<any>>;
|
|
17
17
|
sendTransaction(_txn: any): Promise<ExternalWalletResponse<any>>;
|
|
18
18
|
switchChain(chainId: string): Promise<boolean>;
|
package/dist/wallets/types.d.ts
CHANGED
|
@@ -22,8 +22,8 @@ export interface WalletAdapter {
|
|
|
22
22
|
isAvailable(): boolean;
|
|
23
23
|
getInfo(): ExternalWallet;
|
|
24
24
|
getConnectedAccounts(): string[];
|
|
25
|
-
connect(
|
|
26
|
-
signMessage?(message: string): Promise<ExternalWalletResponse<any>>;
|
|
25
|
+
connect(): Promise<ExternalWalletResponse<any>>;
|
|
26
|
+
signMessage?(message: string, address?: string): Promise<ExternalWalletResponse<any>>;
|
|
27
27
|
signTypedData?(data: any): Promise<ExternalWalletResponse<any>>;
|
|
28
28
|
sendTransaction(tx: any): Promise<ExternalWalletResponse<any>>;
|
|
29
29
|
getBalance(tokenAddress?: string): Promise<ExternalWalletResponse<any>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cartridge/controller",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Cartridge Controller",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
"@metamask/sdk": "^0.32.1",
|
|
25
25
|
"@solana/web3.js": "^1.98.0",
|
|
26
26
|
"open": "^10.1.0",
|
|
27
|
-
"starknet": "^6.
|
|
27
|
+
"starknet": "^7.6.2",
|
|
28
28
|
"starknetkit": "^2.6.1"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@cartridge/controller-wasm": "0.1
|
|
31
|
+
"@cartridge/controller-wasm": "0.2.1",
|
|
32
32
|
"@cartridge/penpal": "^6.2.4",
|
|
33
33
|
"ethers": "^6.13.5",
|
|
34
|
-
"@starknet-io/types-js": "^0.
|
|
34
|
+
"@starknet-io/types-js": "^0.8.4",
|
|
35
35
|
"@telegram-apps/sdk": "^2.4.0",
|
|
36
36
|
"@turnkey/sdk-browser": "^4.0.0",
|
|
37
37
|
"cbor-x": "^1.5.0",
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"typescript": "^5.7.3",
|
|
51
51
|
"vite": "^6.0.0",
|
|
52
52
|
"vite-plugin-dts": "^4.5.3",
|
|
53
|
-
"vite-plugin-node-polyfills": "^0.
|
|
53
|
+
"vite-plugin-node-polyfills": "^0.23.0",
|
|
54
54
|
"vite-plugin-top-level-await": "^1.4.4",
|
|
55
55
|
"vite-plugin-wasm": "^3.4.1",
|
|
56
|
-
"@cartridge/tsconfig": "0.
|
|
56
|
+
"@cartridge/tsconfig": "0.9.0"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"build:deps": "pnpm build",
|
package/src/account.ts
CHANGED
|
@@ -6,8 +6,6 @@ import {
|
|
|
6
6
|
AllowArray,
|
|
7
7
|
} from "starknet";
|
|
8
8
|
|
|
9
|
-
import { SPEC } from "@starknet-io/types-js";
|
|
10
|
-
|
|
11
9
|
import {
|
|
12
10
|
ConnectError,
|
|
13
11
|
Keychain,
|
|
@@ -18,9 +16,9 @@ import {
|
|
|
18
16
|
import { AsyncMethodReturns } from "@cartridge/penpal";
|
|
19
17
|
import BaseProvider from "./provider";
|
|
20
18
|
import { toArray } from "./utils";
|
|
19
|
+
import { SIGNATURE } from "@starknet-io/types-js";
|
|
21
20
|
|
|
22
21
|
class ControllerAccount extends WalletAccount {
|
|
23
|
-
address: string;
|
|
24
22
|
private keychain: AsyncMethodReturns<Keychain>;
|
|
25
23
|
private modal: Modal;
|
|
26
24
|
private options?: KeychainOptions;
|
|
@@ -33,9 +31,8 @@ class ControllerAccount extends WalletAccount {
|
|
|
33
31
|
options: KeychainOptions,
|
|
34
32
|
modal: Modal,
|
|
35
33
|
) {
|
|
36
|
-
super({ nodeUrl: rpcUrl }, provider);
|
|
34
|
+
super({ nodeUrl: rpcUrl }, provider, address);
|
|
37
35
|
|
|
38
|
-
this.address = address;
|
|
39
36
|
this.keychain = keychain;
|
|
40
37
|
this.options = options;
|
|
41
38
|
this.modal = modal;
|
|
@@ -111,13 +108,13 @@ class ControllerAccount extends WalletAccount {
|
|
|
111
108
|
* @returns the signature of the JSON object
|
|
112
109
|
* @throws {Error} if the JSON object is not a valid JSON
|
|
113
110
|
*/
|
|
114
|
-
async signMessage(typedData: TypedData): Promise<
|
|
111
|
+
async signMessage(typedData: TypedData): Promise<SIGNATURE> {
|
|
115
112
|
return new Promise(async (resolve, reject) => {
|
|
116
113
|
const sessionSign = await this.keychain.signMessage(typedData, "", true);
|
|
117
114
|
|
|
118
115
|
// Session sign succeeded
|
|
119
116
|
if (!("code" in sessionSign)) {
|
|
120
|
-
resolve(sessionSign as
|
|
117
|
+
resolve(sessionSign as SIGNATURE);
|
|
121
118
|
return;
|
|
122
119
|
}
|
|
123
120
|
|
|
@@ -126,7 +123,7 @@ class ControllerAccount extends WalletAccount {
|
|
|
126
123
|
const manualSign = await this.keychain.signMessage(typedData, "", false);
|
|
127
124
|
|
|
128
125
|
if (!("code" in manualSign)) {
|
|
129
|
-
resolve(manualSign as
|
|
126
|
+
resolve(manualSign as SIGNATURE);
|
|
130
127
|
} else {
|
|
131
128
|
reject((manualSign as ConnectError).error);
|
|
132
129
|
}
|
package/src/controller.ts
CHANGED
|
@@ -38,7 +38,7 @@ export default class ControllerProvider extends BaseProvider {
|
|
|
38
38
|
return !!this.keychain;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
constructor(options: ControllerOptions) {
|
|
41
|
+
constructor(options: ControllerOptions = {}) {
|
|
42
42
|
super();
|
|
43
43
|
|
|
44
44
|
// Default Cartridge chains that are always available
|
|
@@ -63,6 +63,7 @@ export default class ControllerProvider extends BaseProvider {
|
|
|
63
63
|
onConnect: (keychain) => {
|
|
64
64
|
this.keychain = keychain;
|
|
65
65
|
},
|
|
66
|
+
version: version,
|
|
66
67
|
}),
|
|
67
68
|
};
|
|
68
69
|
|
|
@@ -189,7 +190,6 @@ export default class ControllerProvider extends BaseProvider {
|
|
|
189
190
|
: this.options.policies || {},
|
|
190
191
|
this.rpcUrl(),
|
|
191
192
|
this.options.signupOptions,
|
|
192
|
-
version,
|
|
193
193
|
);
|
|
194
194
|
if (response.code !== ResponseCodes.SUCCESS) {
|
|
195
195
|
throw new Error(response.message);
|
package/src/iframe/keychain.ts
CHANGED
|
@@ -3,12 +3,20 @@ import { Keychain, KeychainOptions } from "../types";
|
|
|
3
3
|
import { WalletBridge } from "../wallets/bridge";
|
|
4
4
|
import { IFrame, IFrameOptions } from "./base";
|
|
5
5
|
|
|
6
|
-
type KeychainIframeOptions = IFrameOptions<Keychain> &
|
|
6
|
+
type KeychainIframeOptions = IFrameOptions<Keychain> &
|
|
7
|
+
KeychainOptions & {
|
|
8
|
+
version?: string;
|
|
9
|
+
};
|
|
7
10
|
|
|
8
11
|
export class KeychainIFrame extends IFrame<Keychain> {
|
|
9
12
|
private walletBridge: WalletBridge;
|
|
10
13
|
|
|
11
|
-
constructor({
|
|
14
|
+
constructor({
|
|
15
|
+
url,
|
|
16
|
+
policies,
|
|
17
|
+
version,
|
|
18
|
+
...iframeOptions
|
|
19
|
+
}: KeychainIframeOptions) {
|
|
12
20
|
const _url = new URL(url ?? KEYCHAIN_URL);
|
|
13
21
|
const walletBridge = new WalletBridge();
|
|
14
22
|
|
|
@@ -19,6 +27,10 @@ export class KeychainIFrame extends IFrame<Keychain> {
|
|
|
19
27
|
);
|
|
20
28
|
}
|
|
21
29
|
|
|
30
|
+
if (version) {
|
|
31
|
+
_url.searchParams.set("v", encodeURIComponent(version));
|
|
32
|
+
}
|
|
33
|
+
|
|
22
34
|
super({
|
|
23
35
|
...iframeOptions,
|
|
24
36
|
id: "controller-keychain",
|
package/src/node/account.ts
CHANGED
|
@@ -37,7 +37,7 @@ export default class SessionAccount extends WalletAccount {
|
|
|
37
37
|
sessionKeyGuid: string;
|
|
38
38
|
},
|
|
39
39
|
) {
|
|
40
|
-
super({ nodeUrl: rpcUrl }, provider);
|
|
40
|
+
super({ nodeUrl: rpcUrl }, provider, address);
|
|
41
41
|
|
|
42
42
|
this.address = address;
|
|
43
43
|
this.controller = CartridgeSessionAccount.newAsRegistered(
|
package/src/provider.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { WalletAccount } from "starknet";
|
|
2
1
|
import {
|
|
3
2
|
AddInvokeTransactionParameters,
|
|
4
3
|
AddStarknetChainParameters,
|
|
5
|
-
Errors,
|
|
6
4
|
Permission,
|
|
7
5
|
RequestAccountsParameters,
|
|
8
6
|
RequestFn,
|
|
9
7
|
StarknetWindowObject,
|
|
10
8
|
SwitchStarknetChainParameters,
|
|
11
9
|
TypedData,
|
|
10
|
+
UNEXPECTED_ERROR,
|
|
12
11
|
WalletEventHandlers,
|
|
13
12
|
WalletEventListener,
|
|
14
13
|
WalletEvents,
|
|
15
14
|
} from "@starknet-io/types-js";
|
|
15
|
+
import { WalletAccount } from "starknet";
|
|
16
16
|
import manifest from "../package.json";
|
|
17
17
|
|
|
18
18
|
import { icon } from "./icon";
|
|
@@ -93,7 +93,7 @@ export default abstract class BaseProvider implements StarknetWindowObject {
|
|
|
93
93
|
code: 63,
|
|
94
94
|
message: "An unexpected error occurred",
|
|
95
95
|
data: "wallet_watchAsset not implemented",
|
|
96
|
-
} as
|
|
96
|
+
} as UNEXPECTED_ERROR;
|
|
97
97
|
|
|
98
98
|
case "wallet_addStarknetChain": {
|
|
99
99
|
let params = call.params as AddStarknetChainParameters;
|
|
@@ -111,7 +111,7 @@ export default abstract class BaseProvider implements StarknetWindowObject {
|
|
|
111
111
|
code: 63,
|
|
112
112
|
message: "An unexpected error occurred",
|
|
113
113
|
data: "Account not initialized",
|
|
114
|
-
} as
|
|
114
|
+
} as UNEXPECTED_ERROR;
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
return await this.account.getChainId();
|
|
@@ -121,7 +121,7 @@ export default abstract class BaseProvider implements StarknetWindowObject {
|
|
|
121
121
|
code: 63,
|
|
122
122
|
message: "An unexpected error occurred",
|
|
123
123
|
data: "wallet_deploymentData not implemented",
|
|
124
|
-
} as
|
|
124
|
+
} as UNEXPECTED_ERROR;
|
|
125
125
|
|
|
126
126
|
case "wallet_addInvokeTransaction":
|
|
127
127
|
if (!this.account) {
|
|
@@ -129,7 +129,7 @@ export default abstract class BaseProvider implements StarknetWindowObject {
|
|
|
129
129
|
code: 63,
|
|
130
130
|
message: "An unexpected error occurred",
|
|
131
131
|
data: "Account not initialized",
|
|
132
|
-
} as
|
|
132
|
+
} as UNEXPECTED_ERROR;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
let params = call.params as AddInvokeTransactionParameters;
|
|
@@ -146,7 +146,7 @@ export default abstract class BaseProvider implements StarknetWindowObject {
|
|
|
146
146
|
code: 63,
|
|
147
147
|
message: "An unexpected error occurred",
|
|
148
148
|
data: "wallet_addDeclareTransaction not implemented",
|
|
149
|
-
} as
|
|
149
|
+
} as UNEXPECTED_ERROR;
|
|
150
150
|
|
|
151
151
|
case "wallet_signTypedData": {
|
|
152
152
|
if (!this.account) {
|
|
@@ -154,7 +154,7 @@ export default abstract class BaseProvider implements StarknetWindowObject {
|
|
|
154
154
|
code: 63,
|
|
155
155
|
message: "An unexpected error occurred",
|
|
156
156
|
data: "Account not initialized",
|
|
157
|
-
} as
|
|
157
|
+
} as UNEXPECTED_ERROR;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
return await this.account.signMessage(call.params as TypedData);
|
|
@@ -169,7 +169,7 @@ export default abstract class BaseProvider implements StarknetWindowObject {
|
|
|
169
169
|
code: 63,
|
|
170
170
|
message: "An unexpected error occurred",
|
|
171
171
|
data: `Unknown RPC call type: ${call.type}`,
|
|
172
|
-
} as
|
|
172
|
+
} as UNEXPECTED_ERROR;
|
|
173
173
|
}
|
|
174
174
|
};
|
|
175
175
|
|
package/src/session/account.ts
CHANGED
|
@@ -37,9 +37,8 @@ export default class SessionAccount extends WalletAccount {
|
|
|
37
37
|
sessionKeyGuid: string;
|
|
38
38
|
},
|
|
39
39
|
) {
|
|
40
|
-
super({ nodeUrl: rpcUrl }, provider);
|
|
40
|
+
super({ nodeUrl: rpcUrl }, provider, address);
|
|
41
41
|
|
|
42
|
-
this.address = address;
|
|
43
42
|
this.controller = CartridgeSessionAccount.newAsRegistered(
|
|
44
43
|
rpcUrl,
|
|
45
44
|
privateKey,
|
package/src/types.ts
CHANGED
package/src/wallets/bridge.ts
CHANGED
|
@@ -38,9 +38,8 @@ export class WalletBridge {
|
|
|
38
38
|
getIFrameMethods() {
|
|
39
39
|
return {
|
|
40
40
|
externalDetectWallets: (_origin: string) => () => this.detectWallets(),
|
|
41
|
-
externalConnectWallet:
|
|
42
|
-
(
|
|
43
|
-
this.connectWallet(type, address),
|
|
41
|
+
externalConnectWallet: (_origin: string) => (type: ExternalWalletType) =>
|
|
42
|
+
this.connectWallet(type),
|
|
44
43
|
externalSignMessage:
|
|
45
44
|
(_origin: string) =>
|
|
46
45
|
(identifier: ExternalWalletType | string, message: string) =>
|
|
@@ -102,11 +101,10 @@ export class WalletBridge {
|
|
|
102
101
|
|
|
103
102
|
async connectWallet(
|
|
104
103
|
type: ExternalWalletType,
|
|
105
|
-
address?: string,
|
|
106
104
|
): Promise<ExternalWalletResponse> {
|
|
107
105
|
try {
|
|
108
106
|
const wallet = this.getWalletAdapterByType(type);
|
|
109
|
-
const response = await wallet.connect(
|
|
107
|
+
const response = await wallet.connect();
|
|
110
108
|
|
|
111
109
|
if (response.success && response.account) {
|
|
112
110
|
console.log(
|
|
@@ -138,23 +136,12 @@ export class WalletBridge {
|
|
|
138
136
|
const checkSummedAddress = getAddress(identifier);
|
|
139
137
|
|
|
140
138
|
wallet = this.walletAdapters.values().find((adapter) => {
|
|
141
|
-
return (
|
|
142
|
-
adapter.getConnectedAccounts().includes(checkSummedAddress) ||
|
|
143
|
-
adapter.type === checkSummedAddress
|
|
144
|
-
);
|
|
139
|
+
return adapter.getConnectedAccounts().includes(checkSummedAddress);
|
|
145
140
|
});
|
|
146
141
|
} else {
|
|
147
142
|
wallet = this.walletAdapters.get(identifier);
|
|
148
143
|
}
|
|
149
144
|
|
|
150
|
-
if (!wallet && typeof identifier === "string") {
|
|
151
|
-
wallet = this.walletAdapters
|
|
152
|
-
.values()
|
|
153
|
-
.find((adapter) =>
|
|
154
|
-
adapter.getConnectedAccounts().includes(getAddress(identifier)),
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
145
|
if (!wallet) {
|
|
159
146
|
throw new Error(
|
|
160
147
|
`Wallet with identifier ${identifier} is not connected or supported`,
|
|
@@ -175,7 +162,7 @@ export class WalletBridge {
|
|
|
175
162
|
`Wallet type ${wallet.type} (identifier: ${identifier}) does not support signing messages`,
|
|
176
163
|
);
|
|
177
164
|
}
|
|
178
|
-
return await wallet.signMessage(message);
|
|
165
|
+
return await wallet.signMessage(message, identifier);
|
|
179
166
|
} catch (error) {
|
|
180
167
|
return this.handleError(
|
|
181
168
|
identifier,
|
|
@@ -33,19 +33,15 @@ export class MetaMaskWallet implements WalletAdapter {
|
|
|
33
33
|
.then((accounts: any) => {
|
|
34
34
|
if (accounts && accounts.length > 0) {
|
|
35
35
|
this.account = getAddress(accounts[0]);
|
|
36
|
-
this.connectedAccounts = accounts.map(
|
|
37
|
-
getAddress(account),
|
|
38
|
-
);
|
|
36
|
+
this.connectedAccounts = accounts.map(getAddress);
|
|
39
37
|
}
|
|
40
38
|
});
|
|
41
39
|
this.MMSDK.getProvider()?.on("accountsChanged", (accounts: any) => {
|
|
42
40
|
if (Array.isArray(accounts)) {
|
|
43
41
|
if (accounts.length > 0) {
|
|
44
42
|
this.account = getAddress(accounts?.[0]);
|
|
43
|
+
this.connectedAccounts = accounts.map(getAddress);
|
|
45
44
|
}
|
|
46
|
-
this.connectedAccounts = accounts.map((account: string) =>
|
|
47
|
-
getAddress(account),
|
|
48
|
-
);
|
|
49
45
|
}
|
|
50
46
|
});
|
|
51
47
|
});
|
|
@@ -75,11 +71,7 @@ export class MetaMaskWallet implements WalletAdapter {
|
|
|
75
71
|
};
|
|
76
72
|
}
|
|
77
73
|
|
|
78
|
-
async connect(
|
|
79
|
-
if (address && this.connectedAccounts.includes(getAddress(address))) {
|
|
80
|
-
this.account = getAddress(address);
|
|
81
|
-
}
|
|
82
|
-
|
|
74
|
+
async connect(): Promise<ExternalWalletResponse<any>> {
|
|
83
75
|
if (this.account) {
|
|
84
76
|
return { success: true, wallet: this.type, account: this.account };
|
|
85
77
|
}
|
|
@@ -95,6 +87,7 @@ export class MetaMaskWallet implements WalletAdapter {
|
|
|
95
87
|
this.connectedAccounts = accounts.map((account: string) =>
|
|
96
88
|
getAddress(account),
|
|
97
89
|
);
|
|
90
|
+
|
|
98
91
|
return { success: true, wallet: this.type, account: this.account };
|
|
99
92
|
}
|
|
100
93
|
|
|
@@ -142,7 +135,10 @@ export class MetaMaskWallet implements WalletAdapter {
|
|
|
142
135
|
}
|
|
143
136
|
}
|
|
144
137
|
|
|
145
|
-
async signMessage(
|
|
138
|
+
async signMessage(
|
|
139
|
+
message: string,
|
|
140
|
+
address?: string,
|
|
141
|
+
): Promise<ExternalWalletResponse<any>> {
|
|
146
142
|
try {
|
|
147
143
|
if (!this.isAvailable() || !this.account) {
|
|
148
144
|
throw new Error("MetaMask is not connected");
|
|
@@ -150,7 +146,7 @@ export class MetaMaskWallet implements WalletAdapter {
|
|
|
150
146
|
|
|
151
147
|
const result = await this.MMSDK.getProvider()?.request({
|
|
152
148
|
method: "personal_sign",
|
|
153
|
-
params: [this.account, message],
|
|
149
|
+
params: [address || this.account, message],
|
|
154
150
|
});
|
|
155
151
|
|
|
156
152
|
return { success: true, wallet: this.type, result };
|
|
@@ -27,7 +27,10 @@ export class RabbyWallet implements WalletAdapter {
|
|
|
27
27
|
method: "eth_accounts",
|
|
28
28
|
})
|
|
29
29
|
.then((accounts) => {
|
|
30
|
-
this.connectedAccounts = accounts;
|
|
30
|
+
this.connectedAccounts = accounts.map(getAddress);
|
|
31
|
+
if (accounts.length > 0) {
|
|
32
|
+
this.account = getAddress(accounts?.[0]);
|
|
33
|
+
}
|
|
31
34
|
});
|
|
32
35
|
this.provider?.provider?.on("accountsChanged", (accounts: string[]) => {
|
|
33
36
|
if (accounts) {
|
|
@@ -74,8 +77,8 @@ export class RabbyWallet implements WalletAdapter {
|
|
|
74
77
|
method: "eth_requestAccounts",
|
|
75
78
|
});
|
|
76
79
|
if (accounts && accounts.length > 0) {
|
|
77
|
-
this.account = accounts[0];
|
|
78
|
-
this.connectedAccounts = accounts;
|
|
80
|
+
this.account = getAddress(accounts[0]);
|
|
81
|
+
this.connectedAccounts = accounts.map(getAddress);
|
|
79
82
|
return { success: true, wallet: this.type, account: this.account };
|
|
80
83
|
}
|
|
81
84
|
|
|
@@ -125,14 +128,16 @@ export class RabbyWallet implements WalletAdapter {
|
|
|
125
128
|
|
|
126
129
|
async signMessage(
|
|
127
130
|
message: `0x${string}`,
|
|
131
|
+
address?: string,
|
|
128
132
|
): Promise<ExternalWalletResponse<any>> {
|
|
129
133
|
try {
|
|
130
134
|
if (!this.isAvailable() || !this.account) {
|
|
131
135
|
throw new Error("Rabby is not connected");
|
|
132
136
|
}
|
|
137
|
+
|
|
133
138
|
const result = await this.provider?.provider.request({
|
|
134
139
|
method: "personal_sign",
|
|
135
|
-
params: [this.account
|
|
140
|
+
params: [address || this.account, message] as any,
|
|
136
141
|
});
|
|
137
142
|
|
|
138
143
|
return { success: true, wallet: this.type, result };
|
package/src/wallets/types.ts
CHANGED
|
@@ -27,8 +27,11 @@ export interface WalletAdapter {
|
|
|
27
27
|
isAvailable(): boolean;
|
|
28
28
|
getInfo(): ExternalWallet;
|
|
29
29
|
getConnectedAccounts(): string[];
|
|
30
|
-
connect(
|
|
31
|
-
signMessage?(
|
|
30
|
+
connect(): Promise<ExternalWalletResponse<any>>;
|
|
31
|
+
signMessage?(
|
|
32
|
+
message: string,
|
|
33
|
+
address?: string,
|
|
34
|
+
): Promise<ExternalWalletResponse<any>>;
|
|
32
35
|
signTypedData?(data: any): Promise<ExternalWalletResponse<any>>;
|
|
33
36
|
sendTransaction(tx: any): Promise<ExternalWalletResponse<any>>;
|
|
34
37
|
getBalance(tokenAddress?: string): Promise<ExternalWalletResponse<any>>;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
> @cartridge/controller@0.8.0 format:check /Users/tarrencevanas/code/c7e/controller/packages/controller
|
|
4
|
-
> prettier --check "src/**/*.ts"
|
|
5
|
-
|
|
6
|
-
Checking formatting...
|
|
7
|
-
src/__tests__/controllerDefaults.test.ts[2K[1Gsrc/__tests__/parseChainId.test.ts[2K[1Gsrc/__tests__/setup.ts[2K[1Gsrc/account.ts[2K[1Gsrc/constants.ts[2K[1Gsrc/controller.ts[2K[1Gsrc/errors.ts[2K[1Gsrc/icon.ts[2K[1Gsrc/iframe/base.ts[2K[1Gsrc/iframe/index.ts[2K[1Gsrc/iframe/keychain.ts[2K[1Gsrc/iframe/profile.ts[2K[1Gsrc/index.ts[2K[1Gsrc/lookup.ts[2K[1Gsrc/mutex.ts[2K[1Gsrc/node/account.ts[2K[1Gsrc/node/backend.ts[2K[1Gsrc/node/index.ts[2K[1Gsrc/node/provider.ts[2K[1Gsrc/node/server.ts[2K[1Gsrc/policies.ts[2K[1Gsrc/provider.ts[2K[1Gsrc/session/account.ts[2K[1Gsrc/session/backend.ts[2K[1Gsrc/session/index.ts[2K[1Gsrc/session/provider.ts[2K[1Gsrc/telegram/backend.ts[2K[1Gsrc/telegram/provider.ts[2K[1Gsrc/types.ts[2K[1Gsrc/utils.ts[2K[1Gsrc/wallets/argent/index.ts[2K[1Gsrc/wallets/bridge.ts[2K[1Gsrc/wallets/index.ts[2K[1Gsrc/wallets/metamask/index.ts[2K[1Gsrc/wallets/phantom/index.ts[2K[1Gsrc/wallets/rabby/index.ts[2K[1Gsrc/wallets/types.ts[2K[1GAll matched files use Prettier code style!
|
package/.turbo/turbo-format.log
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
> @cartridge/controller@0.7.14-alpha.3 format /Users/tarrencevanas/code/c7e/controller/packages/controller
|
|
4
|
-
> prettier --write "src/**/*.ts"
|
|
5
|
-
|
|
6
|
-
src/__tests__/controllerDefaults.test.ts[2K[1G[90msrc/__tests__/controllerDefaults.test.ts[39m 49ms (unchanged)
|
|
7
|
-
src/__tests__/parseChainId.test.ts[2K[1G[90msrc/__tests__/parseChainId.test.ts[39m 7ms (unchanged)
|
|
8
|
-
src/__tests__/setup.ts[2K[1Gsrc/__tests__/setup.ts 5ms
|
|
9
|
-
src/account.ts[2K[1G[90msrc/account.ts[39m 17ms (unchanged)
|
|
10
|
-
src/constants.ts[2K[1G[90msrc/constants.ts[39m 3ms (unchanged)
|
|
11
|
-
src/controller.ts[2K[1G[90msrc/controller.ts[39m 57ms (unchanged)
|
|
12
|
-
src/errors.ts[2K[1G[90msrc/errors.ts[39m 2ms (unchanged)
|
|
13
|
-
src/icon.ts[2K[1G[90msrc/icon.ts[39m 1ms (unchanged)
|
|
14
|
-
src/iframe/base.ts[2K[1G[90msrc/iframe/base.ts[39m 22ms (unchanged)
|
|
15
|
-
src/iframe/index.ts[2K[1G[90msrc/iframe/index.ts[39m 11ms (unchanged)
|
|
16
|
-
src/iframe/keychain.ts[2K[1G[90msrc/iframe/keychain.ts[39m 7ms (unchanged)
|
|
17
|
-
src/iframe/profile.ts[2K[1G[90msrc/iframe/profile.ts[39m 4ms (unchanged)
|
|
18
|
-
src/index.ts[2K[1G[90msrc/index.ts[39m 2ms (unchanged)
|
|
19
|
-
src/lookup.ts[2K[1G[90msrc/lookup.ts[39m 55ms (unchanged)
|
|
20
|
-
src/mutex.ts[2K[1G[90msrc/mutex.ts[39m 16ms (unchanged)
|
|
21
|
-
src/node/account.ts[2K[1G[90msrc/node/account.ts[39m 6ms (unchanged)
|
|
22
|
-
src/node/backend.ts[2K[1G[90msrc/node/backend.ts[39m 16ms (unchanged)
|
|
23
|
-
src/node/index.ts[2K[1G[90msrc/node/index.ts[39m 1ms (unchanged)
|
|
24
|
-
src/node/provider.ts[2K[1G[90msrc/node/provider.ts[39m 16ms (unchanged)
|
|
25
|
-
src/node/server.ts[2K[1G[90msrc/node/server.ts[39m 7ms (unchanged)
|
|
26
|
-
src/policies.ts[2K[1G[90msrc/policies.ts[39m 3ms (unchanged)
|
|
27
|
-
src/provider.ts[2K[1G[90msrc/provider.ts[39m 20ms (unchanged)
|
|
28
|
-
src/session/account.ts[2K[1G[90msrc/session/account.ts[39m 2ms (unchanged)
|
|
29
|
-
src/session/backend.ts[2K[1G[90msrc/session/backend.ts[39m 2ms (unchanged)
|
|
30
|
-
src/session/index.ts[2K[1G[90msrc/session/index.ts[39m 1ms (unchanged)
|
|
31
|
-
src/session/provider.ts[2K[1G[90msrc/session/provider.ts[39m 15ms (unchanged)
|
|
32
|
-
src/telegram/backend.ts[2K[1G[90msrc/telegram/backend.ts[39m 1ms (unchanged)
|
|
33
|
-
src/telegram/provider.ts[2K[1G[90msrc/telegram/provider.ts[39m 9ms (unchanged)
|
|
34
|
-
src/types.ts[2K[1G[90msrc/types.ts[39m 20ms (unchanged)
|
|
35
|
-
src/utils.ts[2K[1G[90msrc/utils.ts[39m 26ms (unchanged)
|
|
36
|
-
src/wallets/argent/index.ts[2K[1G[90msrc/wallets/argent/index.ts[39m 11ms (unchanged)
|
|
37
|
-
src/wallets/bridge.ts[2K[1G[90msrc/wallets/bridge.ts[39m 27ms (unchanged)
|
|
38
|
-
src/wallets/index.ts[2K[1G[90msrc/wallets/index.ts[39m 1ms (unchanged)
|
|
39
|
-
src/wallets/metamask/index.ts[2K[1G[90msrc/wallets/metamask/index.ts[39m 23ms (unchanged)
|
|
40
|
-
src/wallets/phantom/index.ts[2K[1G[90msrc/wallets/phantom/index.ts[39m 9ms (unchanged)
|
|
41
|
-
src/wallets/rabby/index.ts[2K[1G[90msrc/wallets/rabby/index.ts[39m 20ms (unchanged)
|
|
42
|
-
src/wallets/turnkey/index.ts[2K[1G[90msrc/wallets/turnkey/index.ts[39m 10ms (unchanged)
|
|
43
|
-
src/wallets/types.ts[2K[1G[90msrc/wallets/types.ts[39m 2ms (unchanged)
|
|
44
|
-
src/wallets/wallet-connect/index.ts[2K[1G[90msrc/wallets/wallet-connect/index.ts[39m 19ms (unchanged)
|