@ckb-ccc/connector 0.0.9-alpha.2 → 0.0.10-alpha.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/dist/assets/chains/index.d.ts +1 -0
- package/dist/assets/chains/index.d.ts.map +1 -1
- package/dist/assets/chains/index.js +1 -0
- package/dist/barrel.d.ts +2 -1
- package/dist/barrel.d.ts.map +1 -1
- package/dist/barrel.js +2 -1
- package/dist/components/button-pill.d.ts +7 -0
- package/dist/components/button-pill.d.ts.map +1 -0
- package/dist/components/button-pill.js +54 -0
- package/dist/components/button.d.ts +7 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +60 -0
- package/dist/components/copy-button.d.ts +10 -0
- package/dist/components/copy-button.d.ts.map +1 -0
- package/dist/components/copy-button.js +76 -0
- package/dist/components/dialog.d.ts +8 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +103 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +4 -0
- package/dist/connector/index.d.ts +8 -21
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +59 -496
- package/dist/scenes/connected.d.ts +12 -1
- package/dist/scenes/connected.d.ts.map +1 -1
- package/dist/scenes/connected.js +204 -59
- package/dist/scenes/index.d.ts +2 -3
- package/dist/scenes/index.d.ts.map +1 -1
- package/dist/scenes/index.js +2 -3
- package/dist/scenes/{connecting.d.ts → selecting/connecting.d.ts} +1 -1
- package/dist/scenes/selecting/connecting.d.ts.map +1 -0
- package/dist/scenes/{connecting.js → selecting/connecting.js} +5 -5
- package/dist/scenes/selecting/index.d.ts +19 -0
- package/dist/scenes/selecting/index.d.ts.map +1 -0
- package/dist/scenes/selecting/index.js +164 -0
- package/dist/scenes/{signers.d.ts → selecting/signers.d.ts} +1 -1
- package/dist/scenes/selecting/signers.d.ts.map +1 -0
- package/dist/scenes/{signers.js → selecting/signers.js} +6 -7
- package/dist/scenes/{wallets.d.ts → selecting/wallets.d.ts} +1 -1
- package/dist/scenes/selecting/wallets.d.ts.map +1 -0
- package/dist/scenes/{wallets.js → selecting/wallets.js} +3 -3
- package/dist/signers/index.d.ts +28 -0
- package/dist/signers/index.d.ts.map +1 -0
- package/dist/signers/index.js +104 -0
- package/package.json +3 -3
- package/src/assets/chains/index.ts +1 -0
- package/src/barrel.ts +3 -1
- package/src/components/button-pill.ts +48 -0
- package/src/components/button.ts +54 -0
- package/src/components/copy-button.ts +69 -0
- package/src/components/dialog.ts +97 -0
- package/src/components/index.ts +4 -0
- package/src/connector/index.ts +67 -596
- package/src/scenes/connected.ts +197 -68
- package/src/scenes/index.ts +2 -3
- package/src/scenes/{connecting.ts → selecting/connecting.ts} +6 -6
- package/src/scenes/selecting/index.ts +181 -0
- package/src/scenes/{signers.ts → selecting/signers.ts} +7 -8
- package/src/scenes/{wallets.ts → selecting/wallets.ts} +4 -4
- package/src/signers/index.ts +186 -0
- package/dist/assets/chains/ckb.sm.svg.d.ts +0 -2
- package/dist/assets/chains/ckb.sm.svg.d.ts.map +0 -1
- package/dist/assets/chains/ckb.sm.svg.js +0 -2
- package/dist/assets/copy.svg.d.ts +0 -2
- package/dist/assets/copy.svg.d.ts.map +0 -1
- package/dist/assets/copy.svg.js +0 -2
- package/dist/events/index.d.ts +0 -7
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/index.js +0 -10
- package/dist/scenes/connecting.d.ts.map +0 -1
- package/dist/scenes/signers.d.ts.map +0 -1
- package/dist/scenes/wallets.d.ts.map +0 -1
- package/src/assets/chains/ckb.sm.svg.ts +0 -5
- package/src/assets/copy.svg.ts +0 -5
- package/src/events/index.ts +0 -11
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { ccc } from "@ckb-ccc/ccc";
|
|
2
|
+
import { ReactiveController, ReactiveControllerHost } from "lit";
|
|
3
|
+
import { NOSTR_SVG } from "../assets/chains/nostr.svg";
|
|
4
|
+
import { JOY_ID_SVG } from "../assets/joy-id.svg";
|
|
5
|
+
import { METAMASK_SVG } from "../assets/metamask.svg";
|
|
6
|
+
import { OKX_SVG } from "../assets/okx.svg";
|
|
7
|
+
import { UNI_SAT_SVG } from "../assets/uni-sat.svg";
|
|
8
|
+
import { WalletWithSigners } from "../types";
|
|
9
|
+
|
|
10
|
+
export class SignersController implements ReactiveController {
|
|
11
|
+
public wallets: WalletWithSigners[] = [];
|
|
12
|
+
|
|
13
|
+
private resetListeners: (() => void)[] = [];
|
|
14
|
+
|
|
15
|
+
constructor(
|
|
16
|
+
private readonly host: ReactiveControllerHost & {
|
|
17
|
+
client: ccc.Client;
|
|
18
|
+
signerFilter?: (
|
|
19
|
+
signerInfo: ccc.SignerInfo,
|
|
20
|
+
wallet: ccc.Wallet,
|
|
21
|
+
) => Promise<boolean>;
|
|
22
|
+
preferredNetworks?: ccc.NetworkPreference[];
|
|
23
|
+
name?: string;
|
|
24
|
+
icon?: string;
|
|
25
|
+
refreshSigner: () => void;
|
|
26
|
+
},
|
|
27
|
+
) {
|
|
28
|
+
host.addController(this);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
getConfig() {
|
|
32
|
+
const name =
|
|
33
|
+
this.host.name ??
|
|
34
|
+
(document.querySelector("head title") as HTMLTitleElement).text;
|
|
35
|
+
const icon =
|
|
36
|
+
this.host.icon ??
|
|
37
|
+
(document.querySelector('link[rel="icon"]') as HTMLLinkElement).href;
|
|
38
|
+
const preferredNetworks = [
|
|
39
|
+
...(this.host.preferredNetworks ?? []),
|
|
40
|
+
{
|
|
41
|
+
addressPrefix: "ckb",
|
|
42
|
+
signerType: ccc.SignerType.BTC,
|
|
43
|
+
network: "btc",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
addressPrefix: "ckt",
|
|
47
|
+
signerType: ccc.SignerType.BTC,
|
|
48
|
+
network: "btcTestnet",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
client: this.host.client,
|
|
54
|
+
name,
|
|
55
|
+
icon,
|
|
56
|
+
preferredNetworks,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
update() {
|
|
61
|
+
this.host.refreshSigner();
|
|
62
|
+
this.host.requestUpdate();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
refresh() {
|
|
66
|
+
this.resetListeners.forEach((listener) => listener());
|
|
67
|
+
this.resetListeners = [];
|
|
68
|
+
|
|
69
|
+
this.wallets = [];
|
|
70
|
+
|
|
71
|
+
const { client, name, icon, preferredNetworks } = this.getConfig();
|
|
72
|
+
|
|
73
|
+
ccc.JoyId.getJoyIdSigners(client, name, icon, preferredNetworks).forEach(
|
|
74
|
+
({ signer, name }) => {
|
|
75
|
+
this.addSigner("JoyID", name, JOY_ID_SVG, signer);
|
|
76
|
+
},
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
const uniSatSigner = ccc.UniSat.getUniSatSigner(client, preferredNetworks);
|
|
80
|
+
if (uniSatSigner) {
|
|
81
|
+
this.addSigner("UniSat", "BTC", UNI_SAT_SVG, uniSatSigner);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
ccc.Okx.getOKXBitcoinSigner(client, preferredNetworks).forEach((signer) => {
|
|
85
|
+
this.addSigner("OKX Wallet", signer.type, OKX_SVG, signer);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const nip07Signer = ccc.Nip07.getNip07Signer(client);
|
|
89
|
+
if (nip07Signer) {
|
|
90
|
+
this.addSigner("Nostr", "Nostr", NOSTR_SVG, nip07Signer);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const eip6963Manager = new ccc.Eip6963.SignerFactory(client);
|
|
94
|
+
this.resetListeners.push(
|
|
95
|
+
eip6963Manager.subscribeSigners((signer) => {
|
|
96
|
+
this.addSigner(
|
|
97
|
+
`${signer.detail.info.name}`,
|
|
98
|
+
"EVM",
|
|
99
|
+
signer.detail.info.icon,
|
|
100
|
+
signer,
|
|
101
|
+
);
|
|
102
|
+
this.update();
|
|
103
|
+
}),
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
// === Dummy signers ===
|
|
107
|
+
this.addSigner(
|
|
108
|
+
"MetaMask",
|
|
109
|
+
"EVM",
|
|
110
|
+
METAMASK_SVG,
|
|
111
|
+
new ccc.SignerOpenLink(
|
|
112
|
+
client,
|
|
113
|
+
ccc.SignerType.EVM,
|
|
114
|
+
`https://metamask.app.link/dapp/${window.location.href}`,
|
|
115
|
+
),
|
|
116
|
+
);
|
|
117
|
+
[ccc.SignerType.EVM, ccc.SignerType.BTC].forEach((type) => {
|
|
118
|
+
this.addSigner(
|
|
119
|
+
"OKX Wallet",
|
|
120
|
+
type,
|
|
121
|
+
OKX_SVG,
|
|
122
|
+
new ccc.SignerOpenLink(
|
|
123
|
+
client,
|
|
124
|
+
type,
|
|
125
|
+
"https://www.okx.com/download?deeplink=" +
|
|
126
|
+
encodeURIComponent(
|
|
127
|
+
"okx://wallet/dapp/url?dappUrl=" +
|
|
128
|
+
encodeURIComponent(window.location.href),
|
|
129
|
+
),
|
|
130
|
+
),
|
|
131
|
+
);
|
|
132
|
+
});
|
|
133
|
+
this.addSigner(
|
|
134
|
+
"UniSat",
|
|
135
|
+
ccc.SignerType.BTC,
|
|
136
|
+
UNI_SAT_SVG,
|
|
137
|
+
new ccc.SignerOpenLink(
|
|
138
|
+
client,
|
|
139
|
+
ccc.SignerType.BTC,
|
|
140
|
+
"https://unisat.io/download",
|
|
141
|
+
),
|
|
142
|
+
);
|
|
143
|
+
// ===
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
private async addSigner(
|
|
147
|
+
walletName: string,
|
|
148
|
+
signerName: string,
|
|
149
|
+
icon: string,
|
|
150
|
+
signer: ccc.Signer,
|
|
151
|
+
) {
|
|
152
|
+
const signerInfo = { name: signerName, signer };
|
|
153
|
+
|
|
154
|
+
const signerFilter = this.host.signerFilter;
|
|
155
|
+
if (
|
|
156
|
+
signerFilter &&
|
|
157
|
+
!(await signerFilter(signerInfo, { name: walletName, icon }))
|
|
158
|
+
) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const wallet = this.wallets.find((w) => w.name === walletName);
|
|
163
|
+
|
|
164
|
+
if (!wallet) {
|
|
165
|
+
this.wallets.push({
|
|
166
|
+
name: walletName,
|
|
167
|
+
icon,
|
|
168
|
+
signers: [signerInfo],
|
|
169
|
+
});
|
|
170
|
+
} else {
|
|
171
|
+
const signers = [...wallet.signers, signerInfo].filter(
|
|
172
|
+
({ signer }) => !(signer instanceof ccc.SignerDummy),
|
|
173
|
+
);
|
|
174
|
+
wallet.signers = signers.length !== 0 ? signers : [signerInfo];
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
this.update();
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
hostConnected(): void {
|
|
181
|
+
this.refresh();
|
|
182
|
+
// Wait for plugins to be loaded
|
|
183
|
+
setTimeout(() => this.refresh(), 100);
|
|
184
|
+
}
|
|
185
|
+
hostDisconnected(): void {}
|
|
186
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ckb.sm.svg.d.ts","sourceRoot":"","sources":["../../../src/assets/chains/ckb.sm.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,QAEtB,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { encodeSvgToImgSrc } from "../utils";
|
|
2
|
-
export const CKB_SM_SVG = encodeSvgToImgSrc('<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_221_415)"><path d="M0.666992 9C0.666992 11.3869 1.6152 13.6761 3.30303 15.364C4.99086 17.0518 7.28004 18 9.66699 18C12.0539 18 14.3431 17.0518 16.031 15.364C17.7188 13.6761 18.667 11.3869 18.667 9C18.667 6.61305 17.7188 4.32387 16.031 2.63604C14.3431 0.948212 12.0539 0 9.66699 0C7.28004 0 4.99086 0.948212 3.30303 2.63604C1.6152 4.32387 0.666992 6.61305 0.666992 9Z" fill="#333333"/><path d="M5.51318 4.84619V12.9231H7.60395V8.52235H9.20549L5.51318 4.84619Z" fill="white"/><path d="M11.73 4.84619V9.24696H10.1284L13.8207 12.9231V4.84619H11.73Z" fill="white"/></g><defs><clipPath id="clip0_221_415"><rect width="18" height="18" fill="white" transform="translate(0.666992)"/></clipPath></defs></svg>');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"copy.svg.d.ts","sourceRoot":"","sources":["../../src/assets/copy.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,QAEpB,CAAC"}
|
package/dist/assets/copy.svg.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { encodeSvgToImgSrc } from "./utils";
|
|
2
|
-
export const COPY_SVG = encodeSvgToImgSrc('<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19 13.5657V6.10526C19 5.49737 18.5091 5 17.9091 5H10.5454C9.94543 5 9.45452 5.49737 9.45452 6.10526V13.5657C9.45452 14.1736 9.94543 14.671 10.5454 14.671H17.9091C18.5091 14.671 19 14.1736 19 13.5657Z" fill="#999999"/><path d="M14.5455 15.8684H9.18183C8.58183 15.8684 8.09092 15.3711 8.09092 14.7632V9.329H6.09091C5.49091 9.329 5 9.82637 5 10.4343V17.8947C5 18.5026 5.49091 19 6.09091 19H13.4546C14.0546 19 14.5455 18.5026 14.5455 17.8947V15.8684Z" fill="#999999"/></svg>');
|
package/dist/events/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;;CAIzC;AAED,qBAAa,WAAY,SAAQ,KAAK;;CAIrC"}
|
package/dist/events/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connecting.d.ts","sourceRoot":"","sources":["../../src/scenes/connecting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,gBAAgB,EAAE,CAChB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,GAAG,CAAC,UAAU,KACnB,OAAO,gDA2Bb"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signers.d.ts","sourceRoot":"","sources":["../../src/scenes/signers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAKnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAO7D;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,EAAE,CAChB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,GAAG,CAAC,UAAU,KACnB,OAAO,gDA4Bb"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/scenes/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,gBAAgB,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,EACxD,gBAAgB,EAAE,CAChB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,GAAG,CAAC,UAAU,KACnB,OAAO,aAwBb"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { encodeSvgToImgSrc } from "../utils";
|
|
2
|
-
|
|
3
|
-
export const CKB_SM_SVG = encodeSvgToImgSrc(
|
|
4
|
-
'<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_221_415)"><path d="M0.666992 9C0.666992 11.3869 1.6152 13.6761 3.30303 15.364C4.99086 17.0518 7.28004 18 9.66699 18C12.0539 18 14.3431 17.0518 16.031 15.364C17.7188 13.6761 18.667 11.3869 18.667 9C18.667 6.61305 17.7188 4.32387 16.031 2.63604C14.3431 0.948212 12.0539 0 9.66699 0C7.28004 0 4.99086 0.948212 3.30303 2.63604C1.6152 4.32387 0.666992 6.61305 0.666992 9Z" fill="#333333"/><path d="M5.51318 4.84619V12.9231H7.60395V8.52235H9.20549L5.51318 4.84619Z" fill="white"/><path d="M11.73 4.84619V9.24696H10.1284L13.8207 12.9231V4.84619H11.73Z" fill="white"/></g><defs><clipPath id="clip0_221_415"><rect width="18" height="18" fill="white" transform="translate(0.666992)"/></clipPath></defs></svg>',
|
|
5
|
-
);
|
package/src/assets/copy.svg.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { encodeSvgToImgSrc } from "./utils";
|
|
2
|
-
|
|
3
|
-
export const COPY_SVG = encodeSvgToImgSrc(
|
|
4
|
-
'<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19 13.5657V6.10526C19 5.49737 18.5091 5 17.9091 5H10.5454C9.94543 5 9.45452 5.49737 9.45452 6.10526V13.5657C9.45452 14.1736 9.94543 14.671 10.5454 14.671H17.9091C18.5091 14.671 19 14.1736 19 13.5657Z" fill="#999999"/><path d="M14.5455 15.8684H9.18183C8.58183 15.8684 8.09092 15.3711 8.09092 14.7632V9.329H6.09091C5.49091 9.329 5 9.82637 5 10.4343V17.8947C5 18.5026 5.49091 19 6.09091 19H13.4546C14.0546 19 14.5455 18.5026 14.5455 17.8947V15.8684Z" fill="#999999"/></svg>',
|
|
5
|
-
);
|
package/src/events/index.ts
DELETED