@starknet-io/get-starknet-discovery 5.0.0 → 6.0.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/index.cjs CHANGED
@@ -1,187 +1,171 @@
1
- 'use strict';
2
-
3
- const metamask = require('@starknet-io/get-starknet-virtual-wallet/metamask');
4
- const features = require('@starknet-io/get-starknet-wallet-standard/features');
5
- const getStarknetWalletStandard = require('@starknet-io/get-starknet-wallet-standard');
6
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let _starknet_io_get_starknet_virtual_wallet_metamask = require("@starknet-io/get-starknet-virtual-wallet/metamask");
3
+ let _starknet_io_get_starknet_wallet_standard_features = require("@starknet-io/get-starknet-wallet-standard/features");
4
+ let _starknet_io_get_starknet_wallet_standard = require("@starknet-io/get-starknet-wallet-standard");
5
+ //#region src/eip1193-wallet.ts
7
6
  function registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, register) {
8
- if (typeof window === "undefined")
9
- return;
10
- const handler = (event) => {
11
- const { info, provider } = event.detail;
12
- for (const adapter of eip1193Adapters) {
13
- const wallet = adapter(info, provider);
14
- if (wallet) {
15
- register(wallet);
16
- return;
17
- }
18
- }
19
- };
20
- window.addEventListener("eip6963:announceProvider", handler);
21
- window.dispatchEvent(new Event("eip6963:requestProvider"));
22
- return () => window.removeEventListener("eip6963:announceProvider", handler);
7
+ if (typeof window === "undefined") return;
8
+ const handler = (event) => {
9
+ const { info, provider } = event.detail;
10
+ for (const adapter of eip1193Adapters) {
11
+ const wallet = adapter(info, provider);
12
+ if (wallet) {
13
+ register(wallet);
14
+ return;
15
+ }
16
+ }
17
+ };
18
+ window.addEventListener("eip6963:announceProvider", handler);
19
+ window.dispatchEvent(new Event("eip6963:requestProvider"));
20
+ return () => window.removeEventListener("eip6963:announceProvider", handler);
23
21
  }
24
-
22
+ //#endregion
23
+ //#region src/injected-wallet.ts
25
24
  function registerInjectedWalletDiscovery(register) {
26
- if (typeof window === "undefined")
27
- return {
28
- unregister: () => {
29
- },
30
- refresh: () => {
31
- }
32
- };
33
- function refresh() {
34
- const injectedWallets = scanWindowForWallets(window);
35
- for (const wallet of injectedWallets) {
36
- register(new getStarknetWalletStandard.StarknetInjectedWallet(wallet));
37
- }
38
- }
39
- refresh();
40
- return {
41
- unregister: () => {
42
- },
43
- refresh
44
- };
25
+ if (typeof window === "undefined") return {
26
+ unregister: () => {},
27
+ refresh: () => {}
28
+ };
29
+ function refresh() {
30
+ const injectedWallets = scanWindowForWallets(window);
31
+ for (const wallet of injectedWallets) register(new _starknet_io_get_starknet_wallet_standard.StarknetInjectedWallet(wallet));
32
+ }
33
+ refresh();
34
+ return {
35
+ unregister: () => {},
36
+ refresh
37
+ };
45
38
  }
46
- function scanWindowForWallets(window2) {
47
- return Object.getOwnPropertyNames(window2).reduce((wallets, key) => {
48
- if (key.startsWith("starknet")) {
49
- const wallet = window2[key];
50
- if (isStarknetWindowObject(wallet)) {
51
- wallets.push(wallet);
52
- }
53
- }
54
- return wallets;
55
- }, []);
39
+ function scanWindowForWallets(window) {
40
+ return Object.getOwnPropertyNames(window).reduce((wallets, key) => {
41
+ if (key.startsWith("starknet")) {
42
+ const wallet = window[key];
43
+ if (isStarknetWindowObject(wallet)) wallets.push(wallet);
44
+ }
45
+ return wallets;
46
+ }, []);
56
47
  }
57
48
  const STARKNET_WALLET_KEYS = [
58
- "id",
59
- "name",
60
- "version",
61
- "icon",
62
- "request",
63
- "on",
64
- "off"
49
+ "id",
50
+ "name",
51
+ "version",
52
+ "icon",
53
+ "request",
54
+ "on",
55
+ "off"
65
56
  ];
66
57
  function isStarknetWindowObject(wallet) {
67
- if (typeof wallet !== "object" || wallet === null)
68
- return false;
69
- return STARKNET_WALLET_KEYS.every((key) => key in wallet);
58
+ if (typeof wallet !== "object" || wallet === null) return false;
59
+ return STARKNET_WALLET_KEYS.every((key) => key in wallet);
70
60
  }
71
-
61
+ //#endregion
62
+ //#region src/standard-wallet.ts
72
63
  function registerStandardWalletDiscovery(register) {
73
- if (typeof window === "undefined")
74
- return;
75
- const api = Object.freeze({ register });
76
- const handler = ({ detail: callback }) => {
77
- callback(api);
78
- };
79
- window.addEventListener(
80
- "wallet-standard:register-wallet",
81
- handler
82
- );
83
- window.dispatchEvent(new AppReadyEvent(api));
84
- return () => window.removeEventListener(
85
- "wallet-standard:register-wallet",
86
- handler
87
- );
64
+ if (typeof window === "undefined") return;
65
+ const api = Object.freeze({ register });
66
+ const handler = ({ detail: callback }) => {
67
+ callback(api);
68
+ };
69
+ window.addEventListener("wallet-standard:register-wallet", handler);
70
+ window.dispatchEvent(new AppReadyEvent(api));
71
+ return () => window.removeEventListener("wallet-standard:register-wallet", handler);
88
72
  }
89
- class AppReadyEvent extends Event {
90
- constructor(detail) {
91
- super("wallet-standard:app-ready", {
92
- bubbles: false,
93
- cancelable: false,
94
- composed: false
95
- });
96
- this.detail = detail;
97
- }
98
- get type() {
99
- return "wallet-standard:app-ready";
100
- }
101
- preventDefault() {
102
- throw new Error("preventDefault is deprecated");
103
- }
104
- stopImmediatePropagation() {
105
- throw new Error("stopImmediatePropagation is deprecated");
106
- }
107
- stopPropagation() {
108
- throw new Error("stopPropagation is deprecated");
109
- }
73
+ var AppReadyEvent = class extends Event {
74
+ constructor(detail) {
75
+ super("wallet-standard:app-ready", {
76
+ bubbles: false,
77
+ cancelable: false,
78
+ composed: false
79
+ });
80
+ this.detail = detail;
81
+ }
82
+ get type() {
83
+ return "wallet-standard:app-ready";
84
+ }
85
+ preventDefault() {
86
+ throw new Error("preventDefault is deprecated");
87
+ }
88
+ stopImmediatePropagation() {
89
+ throw new Error("stopImmediatePropagation is deprecated");
90
+ }
91
+ stopPropagation() {
92
+ throw new Error("stopPropagation is deprecated");
93
+ }
94
+ };
95
+ //#endregion
96
+ //#region src/store.ts
97
+ const DEFAULT_EIP1193_ADAPTERS = [_starknet_io_get_starknet_virtual_wallet_metamask.metaMaskVirtualWallet];
98
+ function createStore({ eip1193Adapters = DEFAULT_EIP1193_ADAPTERS } = {}) {
99
+ const listeners = /* @__PURE__ */ new Set();
100
+ let wallets = [];
101
+ function emitChanges() {
102
+ for (const listener of listeners) listener(wallets.map(({ wallet }) => wallet).slice());
103
+ }
104
+ registerStandardWalletDiscovery((wallet) => {
105
+ if (!(0, _starknet_io_get_starknet_wallet_standard_features.isStarknetWallet)(wallet)) return;
106
+ const existing = wallets.find((w) => w.wallet.name === wallet.name);
107
+ if (existing) {
108
+ if (existing.discoverer !== "standard") {
109
+ wallets = [{
110
+ discoverer: "standard",
111
+ wallet
112
+ }, ...wallets.filter((w) => w.wallet.name !== wallet.name)];
113
+ emitChanges();
114
+ }
115
+ } else {
116
+ wallets = [{
117
+ discoverer: "standard",
118
+ wallet
119
+ }, ...wallets];
120
+ emitChanges();
121
+ }
122
+ return () => {
123
+ wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
124
+ emitChanges();
125
+ };
126
+ });
127
+ registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, (wallet) => {
128
+ if (!(0, _starknet_io_get_starknet_wallet_standard_features.isStarknetWallet)(wallet)) return;
129
+ if (!wallets.find((w) => w.wallet.name === wallet.name)) {
130
+ wallets = [{
131
+ discoverer: "eip6963",
132
+ wallet
133
+ }, ...wallets];
134
+ emitChanges();
135
+ }
136
+ return () => {
137
+ wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
138
+ emitChanges();
139
+ };
140
+ });
141
+ const { refresh: refreshInjectedWallets } = registerInjectedWalletDiscovery((wallet) => {
142
+ if (!(0, _starknet_io_get_starknet_wallet_standard_features.isStarknetWallet)(wallet)) return;
143
+ if (!wallets.find((w) => w.wallet.name === wallet.name)) {
144
+ wallets = [{
145
+ discoverer: "injected",
146
+ wallet
147
+ }, ...wallets];
148
+ emitChanges();
149
+ }
150
+ return () => {
151
+ wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
152
+ emitChanges();
153
+ };
154
+ });
155
+ return {
156
+ _refreshInjectedWallets: refreshInjectedWallets,
157
+ getWallets() {
158
+ return wallets.map(({ wallet }) => wallet).slice();
159
+ },
160
+ subscribe(listener) {
161
+ listeners.add(listener);
162
+ return () => {
163
+ listeners.delete(listener);
164
+ };
165
+ }
166
+ };
110
167
  }
111
-
112
- const DEFAULT_EIP1193_ADAPTERS = [metamask.metaMaskVirtualWallet];
113
- function createStore({
114
- eip1193Adapters = DEFAULT_EIP1193_ADAPTERS
115
- } = {}) {
116
- const listeners = /* @__PURE__ */ new Set();
117
- let wallets = [];
118
- function emitChanges() {
119
- for (const listener of listeners) {
120
- listener(wallets.map(({ wallet }) => wallet).slice());
121
- }
122
- }
123
- registerStandardWalletDiscovery((wallet) => {
124
- if (!features.isStarknetWallet(wallet))
125
- return;
126
- const existing = wallets.find((w) => w.wallet.name === wallet.name);
127
- if (existing) {
128
- if (existing.discoverer !== "standard") {
129
- wallets = [
130
- { discoverer: "standard", wallet },
131
- ...wallets.filter((w) => w.wallet.name !== wallet.name)
132
- ];
133
- emitChanges();
134
- }
135
- } else {
136
- wallets = [{ discoverer: "standard", wallet }, ...wallets];
137
- emitChanges();
138
- }
139
- return () => {
140
- wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
141
- emitChanges();
142
- };
143
- });
144
- registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, (wallet) => {
145
- if (!features.isStarknetWallet(wallet))
146
- return;
147
- const existing = wallets.find((w) => w.wallet.name === wallet.name);
148
- if (!existing) {
149
- wallets = [{ discoverer: "eip6963", wallet }, ...wallets];
150
- emitChanges();
151
- }
152
- return () => {
153
- wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
154
- emitChanges();
155
- };
156
- });
157
- const { refresh: refreshInjectedWallets } = registerInjectedWalletDiscovery(
158
- (wallet) => {
159
- if (!features.isStarknetWallet(wallet))
160
- return;
161
- const existing = wallets.find((w) => w.wallet.name === wallet.name);
162
- if (!existing) {
163
- wallets = [{ discoverer: "injected", wallet }, ...wallets];
164
- emitChanges();
165
- }
166
- return () => {
167
- wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
168
- emitChanges();
169
- };
170
- }
171
- );
172
- return {
173
- _refreshInjectedWallets: refreshInjectedWallets,
174
- getWallets() {
175
- return wallets.map(({ wallet }) => wallet).slice();
176
- },
177
- subscribe(listener) {
178
- listeners.add(listener);
179
- return () => {
180
- listeners.delete(listener);
181
- };
182
- }
183
- };
184
- }
185
-
168
+ //#endregion
186
169
  exports.createStore = createStore;
187
- //# sourceMappingURL=index.cjs.map
170
+
171
+ //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/eip1193-wallet.ts","../src/injected-wallet.ts","../src/standard-wallet.ts","../src/store.ts"],"sourcesContent":["import type { EIP1193Adapter } from \"@starknet-io/get-starknet-virtual-wallet\";\nimport type { Wallet } from \"@wallet-standard/base\";\n\nexport function registerEIP1193WalletFromEIP6963Discovery(\n eip1193Adapters: EIP1193Adapter[],\n register: (wallet: Wallet) => () => void,\n) {\n if (typeof window === \"undefined\") return;\n\n const handler = (event: CustomEvent) => {\n const { info, provider } = event.detail;\n for (const adapter of eip1193Adapters) {\n const wallet = adapter(info, provider);\n if (wallet) {\n register(wallet);\n return;\n }\n }\n };\n\n window.addEventListener(\"eip6963:announceProvider\", handler);\n\n window.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n\n return () => window.removeEventListener(\"eip6963:announceProvider\", handler);\n}\n","import { StarknetInjectedWallet } from \"@starknet-io/get-starknet-wallet-standard\";\nimport type { StarknetWindowObject } from \"@starknet-io/types-js\";\nimport type { Wallet } from \"@wallet-standard/base\";\n\nexport function registerInjectedWalletDiscovery(\n register: (wallet: Wallet) => () => void,\n): {\n unregister: () => void;\n refresh: () => void;\n} {\n if (typeof window === \"undefined\")\n return {\n unregister: () => {},\n refresh: () => {},\n };\n\n function refresh() {\n const injectedWallets = scanWindowForWallets(window);\n\n for (const wallet of injectedWallets) {\n register(new StarknetInjectedWallet(wallet));\n }\n }\n\n refresh();\n\n return {\n unregister: () => {},\n refresh,\n };\n}\n\nfunction scanWindowForWallets(window: Window): StarknetWindowObject[] {\n return Object.getOwnPropertyNames(window).reduce((wallets, key) => {\n if (key.startsWith(\"starknet\")) {\n const wallet = window[key];\n\n if (isStarknetWindowObject(wallet)) {\n wallets.push(wallet);\n }\n }\n\n return wallets;\n }, []);\n}\n\nconst STARKNET_WALLET_KEYS = [\n \"id\",\n \"name\",\n \"version\",\n \"icon\",\n \"request\",\n \"on\",\n \"off\",\n];\n\nfunction isStarknetWindowObject(\n wallet: unknown,\n): wallet is StarknetWindowObject {\n if (typeof wallet !== \"object\" || wallet === null) return false;\n return STARKNET_WALLET_KEYS.every((key) => key in wallet);\n}\n","import type {\n Wallet,\n WalletEventsWindow,\n WindowAppReadyEvent,\n WindowAppReadyEventAPI,\n WindowRegisterWalletEvent,\n} from \"@wallet-standard/base\";\n\nexport function registerStandardWalletDiscovery(\n register: (wallet: Wallet) => () => void,\n) {\n if (typeof window === \"undefined\") return;\n\n const api = Object.freeze({ register });\n\n const handler = ({ detail: callback }: WindowRegisterWalletEvent) => {\n callback(api);\n };\n\n (window as WalletEventsWindow).addEventListener(\n \"wallet-standard:register-wallet\",\n handler,\n );\n\n (window as WalletEventsWindow).dispatchEvent(new AppReadyEvent(api));\n\n return () =>\n (window as WalletEventsWindow).removeEventListener(\n \"wallet-standard:register-wallet\",\n handler,\n );\n}\n\nclass AppReadyEvent extends Event implements WindowAppReadyEvent {\n constructor(public readonly detail: WindowAppReadyEventAPI) {\n super(\"wallet-standard:app-ready\", {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n }\n\n get type() {\n return \"wallet-standard:app-ready\" as const;\n }\n\n preventDefault(): never {\n throw new Error(\"preventDefault is deprecated\");\n }\n\n stopImmediatePropagation(): never {\n throw new Error(\"stopImmediatePropagation is deprecated\");\n }\n\n stopPropagation(): never {\n throw new Error(\"stopPropagation is deprecated\");\n }\n}\n","import type { EIP1193Adapter } from \"@starknet-io/get-starknet-virtual-wallet\";\nimport { metaMaskVirtualWallet } from \"@starknet-io/get-starknet-virtual-wallet/metamask\";\nimport {\n isStarknetWallet,\n type WalletWithStarknetFeatures,\n} from \"@starknet-io/get-starknet-wallet-standard/features\";\n\nimport { registerEIP1193WalletFromEIP6963Discovery } from \"./eip1193-wallet\";\nimport { registerInjectedWalletDiscovery } from \"./injected-wallet\";\nimport { registerStandardWalletDiscovery } from \"./standard-wallet\";\n\nexport type CleanupListener = () => void;\nexport type Listener = (wallets: readonly WalletWithStarknetFeatures[]) => void;\n\nexport type Store = {\n getWallets: () => WalletWithStarknetFeatures[];\n subscribe: (listener: Listener) => CleanupListener;\n _refreshInjectedWallets: () => void;\n};\n\n// Track how a wallet was discovered to prefer standard wallets over (legacy) injected wallets\ntype DiscoveredStarknetWallet = {\n discoverer: \"standard\" | \"injected\" | \"eip6963\";\n wallet: WalletWithStarknetFeatures;\n};\n\nexport type CreateStoreOptions = {\n eip1193Adapters?: EIP1193Adapter[];\n};\n\nconst DEFAULT_EIP1193_ADAPTERS: EIP1193Adapter[] = [metaMaskVirtualWallet];\n\nexport function createStore({\n eip1193Adapters = DEFAULT_EIP1193_ADAPTERS,\n}: CreateStoreOptions = {}): Store {\n const listeners = new Set<Listener>();\n let wallets: DiscoveredStarknetWallet[] = [];\n\n function emitChanges() {\n for (const listener of listeners) {\n listener(wallets.map(({ wallet }) => wallet).slice());\n }\n }\n\n registerStandardWalletDiscovery((wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n if (existing) {\n // If the wallet exists but is an injected wallet this library registered,\n // replace it with the standard wallet registered by the wallet itself.\n if (existing.discoverer !== \"standard\") {\n wallets = [\n { discoverer: \"standard\", wallet },\n ...wallets.filter((w) => w.wallet.name !== wallet.name),\n ];\n\n emitChanges();\n }\n } else {\n wallets = [{ discoverer: \"standard\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n });\n\n registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, (wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n if (!existing) {\n wallets = [{ discoverer: \"eip6963\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n });\n\n const { refresh: refreshInjectedWallets } = registerInjectedWalletDiscovery(\n (wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n // Only register injected wallets if they are not already registered.\n // We should not override standard wallets with injected wallets.\n if (!existing) {\n wallets = [{ discoverer: \"injected\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n },\n );\n\n return {\n _refreshInjectedWallets: refreshInjectedWallets,\n getWallets() {\n return wallets.map(({ wallet }) => wallet).slice();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n"],"names":["StarknetInjectedWallet","window","metaMaskVirtualWallet","isStarknetWallet"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["StarknetInjectedWallet","metaMaskVirtualWallet"],"sources":["../src/eip1193-wallet.ts","../src/injected-wallet.ts","../src/standard-wallet.ts","../src/store.ts"],"sourcesContent":["import type { EIP1193Adapter } from \"@starknet-io/get-starknet-virtual-wallet\";\nimport type { Wallet } from \"@wallet-standard/base\";\n\nexport function registerEIP1193WalletFromEIP6963Discovery(\n eip1193Adapters: EIP1193Adapter[],\n register: (wallet: Wallet) => () => void,\n) {\n if (typeof window === \"undefined\") return;\n\n const handler = (event: CustomEvent) => {\n const { info, provider } = event.detail;\n for (const adapter of eip1193Adapters) {\n const wallet = adapter(info, provider);\n if (wallet) {\n register(wallet);\n return;\n }\n }\n };\n\n window.addEventListener(\"eip6963:announceProvider\", handler);\n\n window.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n\n return () => window.removeEventListener(\"eip6963:announceProvider\", handler);\n}\n","import { StarknetInjectedWallet } from \"@starknet-io/get-starknet-wallet-standard\";\nimport type { StarknetWindowObject } from \"@starknet-io/types-js\";\nimport type { Wallet } from \"@wallet-standard/base\";\n\nexport function registerInjectedWalletDiscovery(\n register: (wallet: Wallet) => () => void,\n): {\n unregister: () => void;\n refresh: () => void;\n} {\n if (typeof window === \"undefined\")\n return {\n unregister: () => {},\n refresh: () => {},\n };\n\n function refresh() {\n const injectedWallets = scanWindowForWallets(window);\n\n for (const wallet of injectedWallets) {\n register(new StarknetInjectedWallet(wallet));\n }\n }\n\n refresh();\n\n return {\n unregister: () => {},\n refresh,\n };\n}\n\nfunction scanWindowForWallets(window: Window): StarknetWindowObject[] {\n return Object.getOwnPropertyNames(window).reduce((wallets, key) => {\n if (key.startsWith(\"starknet\")) {\n const wallet = window[key];\n\n if (isStarknetWindowObject(wallet)) {\n wallets.push(wallet);\n }\n }\n\n return wallets;\n }, []);\n}\n\nconst STARKNET_WALLET_KEYS = [\n \"id\",\n \"name\",\n \"version\",\n \"icon\",\n \"request\",\n \"on\",\n \"off\",\n];\n\nfunction isStarknetWindowObject(\n wallet: unknown,\n): wallet is StarknetWindowObject {\n if (typeof wallet !== \"object\" || wallet === null) return false;\n return STARKNET_WALLET_KEYS.every((key) => key in wallet);\n}\n","import type {\n Wallet,\n WalletEventsWindow,\n WindowAppReadyEvent,\n WindowAppReadyEventAPI,\n WindowRegisterWalletEvent,\n} from \"@wallet-standard/base\";\n\nexport function registerStandardWalletDiscovery(\n register: (wallet: Wallet) => () => void,\n) {\n if (typeof window === \"undefined\") return;\n\n const api = Object.freeze({ register });\n\n const handler = ({ detail: callback }: WindowRegisterWalletEvent) => {\n callback(api);\n };\n\n (window as WalletEventsWindow).addEventListener(\n \"wallet-standard:register-wallet\",\n handler,\n );\n\n (window as WalletEventsWindow).dispatchEvent(new AppReadyEvent(api));\n\n return () =>\n (window as WalletEventsWindow).removeEventListener(\n \"wallet-standard:register-wallet\",\n handler,\n );\n}\n\nclass AppReadyEvent extends Event implements WindowAppReadyEvent {\n constructor(public readonly detail: WindowAppReadyEventAPI) {\n super(\"wallet-standard:app-ready\", {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n }\n\n get type() {\n return \"wallet-standard:app-ready\" as const;\n }\n\n preventDefault(): never {\n throw new Error(\"preventDefault is deprecated\");\n }\n\n stopImmediatePropagation(): never {\n throw new Error(\"stopImmediatePropagation is deprecated\");\n }\n\n stopPropagation(): never {\n throw new Error(\"stopPropagation is deprecated\");\n }\n}\n","import type { EIP1193Adapter } from \"@starknet-io/get-starknet-virtual-wallet\";\nimport { metaMaskVirtualWallet } from \"@starknet-io/get-starknet-virtual-wallet/metamask\";\nimport {\n isStarknetWallet,\n type WalletWithStarknetFeatures,\n} from \"@starknet-io/get-starknet-wallet-standard/features\";\n\nimport { registerEIP1193WalletFromEIP6963Discovery } from \"./eip1193-wallet\";\nimport { registerInjectedWalletDiscovery } from \"./injected-wallet\";\nimport { registerStandardWalletDiscovery } from \"./standard-wallet\";\n\nexport type CleanupListener = () => void;\nexport type Listener = (wallets: readonly WalletWithStarknetFeatures[]) => void;\n\nexport type Store = {\n getWallets: () => WalletWithStarknetFeatures[];\n subscribe: (listener: Listener) => CleanupListener;\n _refreshInjectedWallets: () => void;\n};\n\n// Track how a wallet was discovered to prefer standard wallets over (legacy) injected wallets\ntype DiscoveredStarknetWallet = {\n discoverer: \"standard\" | \"injected\" | \"eip6963\";\n wallet: WalletWithStarknetFeatures;\n};\n\nexport type CreateStoreOptions = {\n eip1193Adapters?: EIP1193Adapter[];\n};\n\nconst DEFAULT_EIP1193_ADAPTERS: EIP1193Adapter[] = [metaMaskVirtualWallet];\n\nexport function createStore({\n eip1193Adapters = DEFAULT_EIP1193_ADAPTERS,\n}: CreateStoreOptions = {}): Store {\n const listeners = new Set<Listener>();\n let wallets: DiscoveredStarknetWallet[] = [];\n\n function emitChanges() {\n for (const listener of listeners) {\n listener(wallets.map(({ wallet }) => wallet).slice());\n }\n }\n\n registerStandardWalletDiscovery((wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n if (existing) {\n // If the wallet exists but is an injected wallet this library registered,\n // replace it with the standard wallet registered by the wallet itself.\n if (existing.discoverer !== \"standard\") {\n wallets = [\n { discoverer: \"standard\", wallet },\n ...wallets.filter((w) => w.wallet.name !== wallet.name),\n ];\n\n emitChanges();\n }\n } else {\n wallets = [{ discoverer: \"standard\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n });\n\n registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, (wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n if (!existing) {\n wallets = [{ discoverer: \"eip6963\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n });\n\n const { refresh: refreshInjectedWallets } = registerInjectedWalletDiscovery(\n (wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n // Only register injected wallets if they are not already registered.\n // We should not override standard wallets with injected wallets.\n if (!existing) {\n wallets = [{ discoverer: \"injected\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n },\n );\n\n return {\n _refreshInjectedWallets: refreshInjectedWallets,\n getWallets() {\n return wallets.map(({ wallet }) => wallet).slice();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n"],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -1,16 +1,20 @@
1
- import { EIP1193Adapter } from '@starknet-io/get-starknet-virtual-wallet';
2
- import { WalletWithStarknetFeatures } from '@starknet-io/get-starknet-wallet-standard/features';
1
+ import { EIP1193Adapter } from "@starknet-io/get-starknet-virtual-wallet";
2
+ import { WalletWithStarknetFeatures } from "@starknet-io/get-starknet-wallet-standard/features";
3
3
 
4
+ //#region src/store.d.ts
4
5
  type CleanupListener = () => void;
5
6
  type Listener = (wallets: readonly WalletWithStarknetFeatures[]) => void;
6
7
  type Store = {
7
- getWallets: () => WalletWithStarknetFeatures[];
8
- subscribe: (listener: Listener) => CleanupListener;
9
- _refreshInjectedWallets: () => void;
8
+ getWallets: () => WalletWithStarknetFeatures[];
9
+ subscribe: (listener: Listener) => CleanupListener;
10
+ _refreshInjectedWallets: () => void;
10
11
  };
11
12
  type CreateStoreOptions = {
12
- eip1193Adapters?: EIP1193Adapter[];
13
+ eip1193Adapters?: EIP1193Adapter[];
13
14
  };
14
- declare function createStore({ eip1193Adapters, }?: CreateStoreOptions): Store;
15
-
15
+ declare function createStore({
16
+ eip1193Adapters
17
+ }?: CreateStoreOptions): Store;
18
+ //#endregion
16
19
  export { type CleanupListener, type Listener, type Store, createStore };
20
+ //# sourceMappingURL=index.d.cts.map
package/dist/index.d.mts CHANGED
@@ -1,16 +1,20 @@
1
- import { EIP1193Adapter } from '@starknet-io/get-starknet-virtual-wallet';
2
- import { WalletWithStarknetFeatures } from '@starknet-io/get-starknet-wallet-standard/features';
1
+ import { WalletWithStarknetFeatures } from "@starknet-io/get-starknet-wallet-standard/features";
2
+ import { EIP1193Adapter } from "@starknet-io/get-starknet-virtual-wallet";
3
3
 
4
+ //#region src/store.d.ts
4
5
  type CleanupListener = () => void;
5
6
  type Listener = (wallets: readonly WalletWithStarknetFeatures[]) => void;
6
7
  type Store = {
7
- getWallets: () => WalletWithStarknetFeatures[];
8
- subscribe: (listener: Listener) => CleanupListener;
9
- _refreshInjectedWallets: () => void;
8
+ getWallets: () => WalletWithStarknetFeatures[];
9
+ subscribe: (listener: Listener) => CleanupListener;
10
+ _refreshInjectedWallets: () => void;
10
11
  };
11
12
  type CreateStoreOptions = {
12
- eip1193Adapters?: EIP1193Adapter[];
13
+ eip1193Adapters?: EIP1193Adapter[];
13
14
  };
14
- declare function createStore({ eip1193Adapters, }?: CreateStoreOptions): Store;
15
-
15
+ declare function createStore({
16
+ eip1193Adapters
17
+ }?: CreateStoreOptions): Store;
18
+ //#endregion
16
19
  export { type CleanupListener, type Listener, type Store, createStore };
20
+ //# sourceMappingURL=index.d.mts.map
package/dist/index.mjs CHANGED
@@ -1,185 +1,170 @@
1
- import { metaMaskVirtualWallet } from '@starknet-io/get-starknet-virtual-wallet/metamask';
2
- import { isStarknetWallet } from '@starknet-io/get-starknet-wallet-standard/features';
3
- import { StarknetInjectedWallet } from '@starknet-io/get-starknet-wallet-standard';
4
-
1
+ import { metaMaskVirtualWallet } from "@starknet-io/get-starknet-virtual-wallet/metamask";
2
+ import { isStarknetWallet } from "@starknet-io/get-starknet-wallet-standard/features";
3
+ import { StarknetInjectedWallet } from "@starknet-io/get-starknet-wallet-standard";
4
+ //#region src/eip1193-wallet.ts
5
5
  function registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, register) {
6
- if (typeof window === "undefined")
7
- return;
8
- const handler = (event) => {
9
- const { info, provider } = event.detail;
10
- for (const adapter of eip1193Adapters) {
11
- const wallet = adapter(info, provider);
12
- if (wallet) {
13
- register(wallet);
14
- return;
15
- }
16
- }
17
- };
18
- window.addEventListener("eip6963:announceProvider", handler);
19
- window.dispatchEvent(new Event("eip6963:requestProvider"));
20
- return () => window.removeEventListener("eip6963:announceProvider", handler);
6
+ if (typeof window === "undefined") return;
7
+ const handler = (event) => {
8
+ const { info, provider } = event.detail;
9
+ for (const adapter of eip1193Adapters) {
10
+ const wallet = adapter(info, provider);
11
+ if (wallet) {
12
+ register(wallet);
13
+ return;
14
+ }
15
+ }
16
+ };
17
+ window.addEventListener("eip6963:announceProvider", handler);
18
+ window.dispatchEvent(new Event("eip6963:requestProvider"));
19
+ return () => window.removeEventListener("eip6963:announceProvider", handler);
21
20
  }
22
-
21
+ //#endregion
22
+ //#region src/injected-wallet.ts
23
23
  function registerInjectedWalletDiscovery(register) {
24
- if (typeof window === "undefined")
25
- return {
26
- unregister: () => {
27
- },
28
- refresh: () => {
29
- }
30
- };
31
- function refresh() {
32
- const injectedWallets = scanWindowForWallets(window);
33
- for (const wallet of injectedWallets) {
34
- register(new StarknetInjectedWallet(wallet));
35
- }
36
- }
37
- refresh();
38
- return {
39
- unregister: () => {
40
- },
41
- refresh
42
- };
24
+ if (typeof window === "undefined") return {
25
+ unregister: () => {},
26
+ refresh: () => {}
27
+ };
28
+ function refresh() {
29
+ const injectedWallets = scanWindowForWallets(window);
30
+ for (const wallet of injectedWallets) register(new StarknetInjectedWallet(wallet));
31
+ }
32
+ refresh();
33
+ return {
34
+ unregister: () => {},
35
+ refresh
36
+ };
43
37
  }
44
- function scanWindowForWallets(window2) {
45
- return Object.getOwnPropertyNames(window2).reduce((wallets, key) => {
46
- if (key.startsWith("starknet")) {
47
- const wallet = window2[key];
48
- if (isStarknetWindowObject(wallet)) {
49
- wallets.push(wallet);
50
- }
51
- }
52
- return wallets;
53
- }, []);
38
+ function scanWindowForWallets(window) {
39
+ return Object.getOwnPropertyNames(window).reduce((wallets, key) => {
40
+ if (key.startsWith("starknet")) {
41
+ const wallet = window[key];
42
+ if (isStarknetWindowObject(wallet)) wallets.push(wallet);
43
+ }
44
+ return wallets;
45
+ }, []);
54
46
  }
55
47
  const STARKNET_WALLET_KEYS = [
56
- "id",
57
- "name",
58
- "version",
59
- "icon",
60
- "request",
61
- "on",
62
- "off"
48
+ "id",
49
+ "name",
50
+ "version",
51
+ "icon",
52
+ "request",
53
+ "on",
54
+ "off"
63
55
  ];
64
56
  function isStarknetWindowObject(wallet) {
65
- if (typeof wallet !== "object" || wallet === null)
66
- return false;
67
- return STARKNET_WALLET_KEYS.every((key) => key in wallet);
57
+ if (typeof wallet !== "object" || wallet === null) return false;
58
+ return STARKNET_WALLET_KEYS.every((key) => key in wallet);
68
59
  }
69
-
60
+ //#endregion
61
+ //#region src/standard-wallet.ts
70
62
  function registerStandardWalletDiscovery(register) {
71
- if (typeof window === "undefined")
72
- return;
73
- const api = Object.freeze({ register });
74
- const handler = ({ detail: callback }) => {
75
- callback(api);
76
- };
77
- window.addEventListener(
78
- "wallet-standard:register-wallet",
79
- handler
80
- );
81
- window.dispatchEvent(new AppReadyEvent(api));
82
- return () => window.removeEventListener(
83
- "wallet-standard:register-wallet",
84
- handler
85
- );
86
- }
87
- class AppReadyEvent extends Event {
88
- constructor(detail) {
89
- super("wallet-standard:app-ready", {
90
- bubbles: false,
91
- cancelable: false,
92
- composed: false
93
- });
94
- this.detail = detail;
95
- }
96
- get type() {
97
- return "wallet-standard:app-ready";
98
- }
99
- preventDefault() {
100
- throw new Error("preventDefault is deprecated");
101
- }
102
- stopImmediatePropagation() {
103
- throw new Error("stopImmediatePropagation is deprecated");
104
- }
105
- stopPropagation() {
106
- throw new Error("stopPropagation is deprecated");
107
- }
63
+ if (typeof window === "undefined") return;
64
+ const api = Object.freeze({ register });
65
+ const handler = ({ detail: callback }) => {
66
+ callback(api);
67
+ };
68
+ window.addEventListener("wallet-standard:register-wallet", handler);
69
+ window.dispatchEvent(new AppReadyEvent(api));
70
+ return () => window.removeEventListener("wallet-standard:register-wallet", handler);
108
71
  }
109
-
72
+ var AppReadyEvent = class extends Event {
73
+ constructor(detail) {
74
+ super("wallet-standard:app-ready", {
75
+ bubbles: false,
76
+ cancelable: false,
77
+ composed: false
78
+ });
79
+ this.detail = detail;
80
+ }
81
+ get type() {
82
+ return "wallet-standard:app-ready";
83
+ }
84
+ preventDefault() {
85
+ throw new Error("preventDefault is deprecated");
86
+ }
87
+ stopImmediatePropagation() {
88
+ throw new Error("stopImmediatePropagation is deprecated");
89
+ }
90
+ stopPropagation() {
91
+ throw new Error("stopPropagation is deprecated");
92
+ }
93
+ };
94
+ //#endregion
95
+ //#region src/store.ts
110
96
  const DEFAULT_EIP1193_ADAPTERS = [metaMaskVirtualWallet];
111
- function createStore({
112
- eip1193Adapters = DEFAULT_EIP1193_ADAPTERS
113
- } = {}) {
114
- const listeners = /* @__PURE__ */ new Set();
115
- let wallets = [];
116
- function emitChanges() {
117
- for (const listener of listeners) {
118
- listener(wallets.map(({ wallet }) => wallet).slice());
119
- }
120
- }
121
- registerStandardWalletDiscovery((wallet) => {
122
- if (!isStarknetWallet(wallet))
123
- return;
124
- const existing = wallets.find((w) => w.wallet.name === wallet.name);
125
- if (existing) {
126
- if (existing.discoverer !== "standard") {
127
- wallets = [
128
- { discoverer: "standard", wallet },
129
- ...wallets.filter((w) => w.wallet.name !== wallet.name)
130
- ];
131
- emitChanges();
132
- }
133
- } else {
134
- wallets = [{ discoverer: "standard", wallet }, ...wallets];
135
- emitChanges();
136
- }
137
- return () => {
138
- wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
139
- emitChanges();
140
- };
141
- });
142
- registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, (wallet) => {
143
- if (!isStarknetWallet(wallet))
144
- return;
145
- const existing = wallets.find((w) => w.wallet.name === wallet.name);
146
- if (!existing) {
147
- wallets = [{ discoverer: "eip6963", wallet }, ...wallets];
148
- emitChanges();
149
- }
150
- return () => {
151
- wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
152
- emitChanges();
153
- };
154
- });
155
- const { refresh: refreshInjectedWallets } = registerInjectedWalletDiscovery(
156
- (wallet) => {
157
- if (!isStarknetWallet(wallet))
158
- return;
159
- const existing = wallets.find((w) => w.wallet.name === wallet.name);
160
- if (!existing) {
161
- wallets = [{ discoverer: "injected", wallet }, ...wallets];
162
- emitChanges();
163
- }
164
- return () => {
165
- wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
166
- emitChanges();
167
- };
168
- }
169
- );
170
- return {
171
- _refreshInjectedWallets: refreshInjectedWallets,
172
- getWallets() {
173
- return wallets.map(({ wallet }) => wallet).slice();
174
- },
175
- subscribe(listener) {
176
- listeners.add(listener);
177
- return () => {
178
- listeners.delete(listener);
179
- };
180
- }
181
- };
97
+ function createStore({ eip1193Adapters = DEFAULT_EIP1193_ADAPTERS } = {}) {
98
+ const listeners = /* @__PURE__ */ new Set();
99
+ let wallets = [];
100
+ function emitChanges() {
101
+ for (const listener of listeners) listener(wallets.map(({ wallet }) => wallet).slice());
102
+ }
103
+ registerStandardWalletDiscovery((wallet) => {
104
+ if (!isStarknetWallet(wallet)) return;
105
+ const existing = wallets.find((w) => w.wallet.name === wallet.name);
106
+ if (existing) {
107
+ if (existing.discoverer !== "standard") {
108
+ wallets = [{
109
+ discoverer: "standard",
110
+ wallet
111
+ }, ...wallets.filter((w) => w.wallet.name !== wallet.name)];
112
+ emitChanges();
113
+ }
114
+ } else {
115
+ wallets = [{
116
+ discoverer: "standard",
117
+ wallet
118
+ }, ...wallets];
119
+ emitChanges();
120
+ }
121
+ return () => {
122
+ wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
123
+ emitChanges();
124
+ };
125
+ });
126
+ registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, (wallet) => {
127
+ if (!isStarknetWallet(wallet)) return;
128
+ if (!wallets.find((w) => w.wallet.name === wallet.name)) {
129
+ wallets = [{
130
+ discoverer: "eip6963",
131
+ wallet
132
+ }, ...wallets];
133
+ emitChanges();
134
+ }
135
+ return () => {
136
+ wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
137
+ emitChanges();
138
+ };
139
+ });
140
+ const { refresh: refreshInjectedWallets } = registerInjectedWalletDiscovery((wallet) => {
141
+ if (!isStarknetWallet(wallet)) return;
142
+ if (!wallets.find((w) => w.wallet.name === wallet.name)) {
143
+ wallets = [{
144
+ discoverer: "injected",
145
+ wallet
146
+ }, ...wallets];
147
+ emitChanges();
148
+ }
149
+ return () => {
150
+ wallets = wallets.filter((w) => w.wallet.name !== wallet.name);
151
+ emitChanges();
152
+ };
153
+ });
154
+ return {
155
+ _refreshInjectedWallets: refreshInjectedWallets,
156
+ getWallets() {
157
+ return wallets.map(({ wallet }) => wallet).slice();
158
+ },
159
+ subscribe(listener) {
160
+ listeners.add(listener);
161
+ return () => {
162
+ listeners.delete(listener);
163
+ };
164
+ }
165
+ };
182
166
  }
183
-
167
+ //#endregion
184
168
  export { createStore };
185
- //# sourceMappingURL=index.mjs.map
169
+
170
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/eip1193-wallet.ts","../src/injected-wallet.ts","../src/standard-wallet.ts","../src/store.ts"],"sourcesContent":["import type { EIP1193Adapter } from \"@starknet-io/get-starknet-virtual-wallet\";\nimport type { Wallet } from \"@wallet-standard/base\";\n\nexport function registerEIP1193WalletFromEIP6963Discovery(\n eip1193Adapters: EIP1193Adapter[],\n register: (wallet: Wallet) => () => void,\n) {\n if (typeof window === \"undefined\") return;\n\n const handler = (event: CustomEvent) => {\n const { info, provider } = event.detail;\n for (const adapter of eip1193Adapters) {\n const wallet = adapter(info, provider);\n if (wallet) {\n register(wallet);\n return;\n }\n }\n };\n\n window.addEventListener(\"eip6963:announceProvider\", handler);\n\n window.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n\n return () => window.removeEventListener(\"eip6963:announceProvider\", handler);\n}\n","import { StarknetInjectedWallet } from \"@starknet-io/get-starknet-wallet-standard\";\nimport type { StarknetWindowObject } from \"@starknet-io/types-js\";\nimport type { Wallet } from \"@wallet-standard/base\";\n\nexport function registerInjectedWalletDiscovery(\n register: (wallet: Wallet) => () => void,\n): {\n unregister: () => void;\n refresh: () => void;\n} {\n if (typeof window === \"undefined\")\n return {\n unregister: () => {},\n refresh: () => {},\n };\n\n function refresh() {\n const injectedWallets = scanWindowForWallets(window);\n\n for (const wallet of injectedWallets) {\n register(new StarknetInjectedWallet(wallet));\n }\n }\n\n refresh();\n\n return {\n unregister: () => {},\n refresh,\n };\n}\n\nfunction scanWindowForWallets(window: Window): StarknetWindowObject[] {\n return Object.getOwnPropertyNames(window).reduce((wallets, key) => {\n if (key.startsWith(\"starknet\")) {\n const wallet = window[key];\n\n if (isStarknetWindowObject(wallet)) {\n wallets.push(wallet);\n }\n }\n\n return wallets;\n }, []);\n}\n\nconst STARKNET_WALLET_KEYS = [\n \"id\",\n \"name\",\n \"version\",\n \"icon\",\n \"request\",\n \"on\",\n \"off\",\n];\n\nfunction isStarknetWindowObject(\n wallet: unknown,\n): wallet is StarknetWindowObject {\n if (typeof wallet !== \"object\" || wallet === null) return false;\n return STARKNET_WALLET_KEYS.every((key) => key in wallet);\n}\n","import type {\n Wallet,\n WalletEventsWindow,\n WindowAppReadyEvent,\n WindowAppReadyEventAPI,\n WindowRegisterWalletEvent,\n} from \"@wallet-standard/base\";\n\nexport function registerStandardWalletDiscovery(\n register: (wallet: Wallet) => () => void,\n) {\n if (typeof window === \"undefined\") return;\n\n const api = Object.freeze({ register });\n\n const handler = ({ detail: callback }: WindowRegisterWalletEvent) => {\n callback(api);\n };\n\n (window as WalletEventsWindow).addEventListener(\n \"wallet-standard:register-wallet\",\n handler,\n );\n\n (window as WalletEventsWindow).dispatchEvent(new AppReadyEvent(api));\n\n return () =>\n (window as WalletEventsWindow).removeEventListener(\n \"wallet-standard:register-wallet\",\n handler,\n );\n}\n\nclass AppReadyEvent extends Event implements WindowAppReadyEvent {\n constructor(public readonly detail: WindowAppReadyEventAPI) {\n super(\"wallet-standard:app-ready\", {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n }\n\n get type() {\n return \"wallet-standard:app-ready\" as const;\n }\n\n preventDefault(): never {\n throw new Error(\"preventDefault is deprecated\");\n }\n\n stopImmediatePropagation(): never {\n throw new Error(\"stopImmediatePropagation is deprecated\");\n }\n\n stopPropagation(): never {\n throw new Error(\"stopPropagation is deprecated\");\n }\n}\n","import type { EIP1193Adapter } from \"@starknet-io/get-starknet-virtual-wallet\";\nimport { metaMaskVirtualWallet } from \"@starknet-io/get-starknet-virtual-wallet/metamask\";\nimport {\n isStarknetWallet,\n type WalletWithStarknetFeatures,\n} from \"@starknet-io/get-starknet-wallet-standard/features\";\n\nimport { registerEIP1193WalletFromEIP6963Discovery } from \"./eip1193-wallet\";\nimport { registerInjectedWalletDiscovery } from \"./injected-wallet\";\nimport { registerStandardWalletDiscovery } from \"./standard-wallet\";\n\nexport type CleanupListener = () => void;\nexport type Listener = (wallets: readonly WalletWithStarknetFeatures[]) => void;\n\nexport type Store = {\n getWallets: () => WalletWithStarknetFeatures[];\n subscribe: (listener: Listener) => CleanupListener;\n _refreshInjectedWallets: () => void;\n};\n\n// Track how a wallet was discovered to prefer standard wallets over (legacy) injected wallets\ntype DiscoveredStarknetWallet = {\n discoverer: \"standard\" | \"injected\" | \"eip6963\";\n wallet: WalletWithStarknetFeatures;\n};\n\nexport type CreateStoreOptions = {\n eip1193Adapters?: EIP1193Adapter[];\n};\n\nconst DEFAULT_EIP1193_ADAPTERS: EIP1193Adapter[] = [metaMaskVirtualWallet];\n\nexport function createStore({\n eip1193Adapters = DEFAULT_EIP1193_ADAPTERS,\n}: CreateStoreOptions = {}): Store {\n const listeners = new Set<Listener>();\n let wallets: DiscoveredStarknetWallet[] = [];\n\n function emitChanges() {\n for (const listener of listeners) {\n listener(wallets.map(({ wallet }) => wallet).slice());\n }\n }\n\n registerStandardWalletDiscovery((wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n if (existing) {\n // If the wallet exists but is an injected wallet this library registered,\n // replace it with the standard wallet registered by the wallet itself.\n if (existing.discoverer !== \"standard\") {\n wallets = [\n { discoverer: \"standard\", wallet },\n ...wallets.filter((w) => w.wallet.name !== wallet.name),\n ];\n\n emitChanges();\n }\n } else {\n wallets = [{ discoverer: \"standard\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n });\n\n registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, (wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n if (!existing) {\n wallets = [{ discoverer: \"eip6963\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n });\n\n const { refresh: refreshInjectedWallets } = registerInjectedWalletDiscovery(\n (wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n // Only register injected wallets if they are not already registered.\n // We should not override standard wallets with injected wallets.\n if (!existing) {\n wallets = [{ discoverer: \"injected\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n },\n );\n\n return {\n _refreshInjectedWallets: refreshInjectedWallets,\n getWallets() {\n return wallets.map(({ wallet }) => wallet).slice();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n"],"names":["window"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/eip1193-wallet.ts","../src/injected-wallet.ts","../src/standard-wallet.ts","../src/store.ts"],"sourcesContent":["import type { EIP1193Adapter } from \"@starknet-io/get-starknet-virtual-wallet\";\nimport type { Wallet } from \"@wallet-standard/base\";\n\nexport function registerEIP1193WalletFromEIP6963Discovery(\n eip1193Adapters: EIP1193Adapter[],\n register: (wallet: Wallet) => () => void,\n) {\n if (typeof window === \"undefined\") return;\n\n const handler = (event: CustomEvent) => {\n const { info, provider } = event.detail;\n for (const adapter of eip1193Adapters) {\n const wallet = adapter(info, provider);\n if (wallet) {\n register(wallet);\n return;\n }\n }\n };\n\n window.addEventListener(\"eip6963:announceProvider\", handler);\n\n window.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n\n return () => window.removeEventListener(\"eip6963:announceProvider\", handler);\n}\n","import { StarknetInjectedWallet } from \"@starknet-io/get-starknet-wallet-standard\";\nimport type { StarknetWindowObject } from \"@starknet-io/types-js\";\nimport type { Wallet } from \"@wallet-standard/base\";\n\nexport function registerInjectedWalletDiscovery(\n register: (wallet: Wallet) => () => void,\n): {\n unregister: () => void;\n refresh: () => void;\n} {\n if (typeof window === \"undefined\")\n return {\n unregister: () => {},\n refresh: () => {},\n };\n\n function refresh() {\n const injectedWallets = scanWindowForWallets(window);\n\n for (const wallet of injectedWallets) {\n register(new StarknetInjectedWallet(wallet));\n }\n }\n\n refresh();\n\n return {\n unregister: () => {},\n refresh,\n };\n}\n\nfunction scanWindowForWallets(window: Window): StarknetWindowObject[] {\n return Object.getOwnPropertyNames(window).reduce((wallets, key) => {\n if (key.startsWith(\"starknet\")) {\n const wallet = window[key];\n\n if (isStarknetWindowObject(wallet)) {\n wallets.push(wallet);\n }\n }\n\n return wallets;\n }, []);\n}\n\nconst STARKNET_WALLET_KEYS = [\n \"id\",\n \"name\",\n \"version\",\n \"icon\",\n \"request\",\n \"on\",\n \"off\",\n];\n\nfunction isStarknetWindowObject(\n wallet: unknown,\n): wallet is StarknetWindowObject {\n if (typeof wallet !== \"object\" || wallet === null) return false;\n return STARKNET_WALLET_KEYS.every((key) => key in wallet);\n}\n","import type {\n Wallet,\n WalletEventsWindow,\n WindowAppReadyEvent,\n WindowAppReadyEventAPI,\n WindowRegisterWalletEvent,\n} from \"@wallet-standard/base\";\n\nexport function registerStandardWalletDiscovery(\n register: (wallet: Wallet) => () => void,\n) {\n if (typeof window === \"undefined\") return;\n\n const api = Object.freeze({ register });\n\n const handler = ({ detail: callback }: WindowRegisterWalletEvent) => {\n callback(api);\n };\n\n (window as WalletEventsWindow).addEventListener(\n \"wallet-standard:register-wallet\",\n handler,\n );\n\n (window as WalletEventsWindow).dispatchEvent(new AppReadyEvent(api));\n\n return () =>\n (window as WalletEventsWindow).removeEventListener(\n \"wallet-standard:register-wallet\",\n handler,\n );\n}\n\nclass AppReadyEvent extends Event implements WindowAppReadyEvent {\n constructor(public readonly detail: WindowAppReadyEventAPI) {\n super(\"wallet-standard:app-ready\", {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n }\n\n get type() {\n return \"wallet-standard:app-ready\" as const;\n }\n\n preventDefault(): never {\n throw new Error(\"preventDefault is deprecated\");\n }\n\n stopImmediatePropagation(): never {\n throw new Error(\"stopImmediatePropagation is deprecated\");\n }\n\n stopPropagation(): never {\n throw new Error(\"stopPropagation is deprecated\");\n }\n}\n","import type { EIP1193Adapter } from \"@starknet-io/get-starknet-virtual-wallet\";\nimport { metaMaskVirtualWallet } from \"@starknet-io/get-starknet-virtual-wallet/metamask\";\nimport {\n isStarknetWallet,\n type WalletWithStarknetFeatures,\n} from \"@starknet-io/get-starknet-wallet-standard/features\";\n\nimport { registerEIP1193WalletFromEIP6963Discovery } from \"./eip1193-wallet\";\nimport { registerInjectedWalletDiscovery } from \"./injected-wallet\";\nimport { registerStandardWalletDiscovery } from \"./standard-wallet\";\n\nexport type CleanupListener = () => void;\nexport type Listener = (wallets: readonly WalletWithStarknetFeatures[]) => void;\n\nexport type Store = {\n getWallets: () => WalletWithStarknetFeatures[];\n subscribe: (listener: Listener) => CleanupListener;\n _refreshInjectedWallets: () => void;\n};\n\n// Track how a wallet was discovered to prefer standard wallets over (legacy) injected wallets\ntype DiscoveredStarknetWallet = {\n discoverer: \"standard\" | \"injected\" | \"eip6963\";\n wallet: WalletWithStarknetFeatures;\n};\n\nexport type CreateStoreOptions = {\n eip1193Adapters?: EIP1193Adapter[];\n};\n\nconst DEFAULT_EIP1193_ADAPTERS: EIP1193Adapter[] = [metaMaskVirtualWallet];\n\nexport function createStore({\n eip1193Adapters = DEFAULT_EIP1193_ADAPTERS,\n}: CreateStoreOptions = {}): Store {\n const listeners = new Set<Listener>();\n let wallets: DiscoveredStarknetWallet[] = [];\n\n function emitChanges() {\n for (const listener of listeners) {\n listener(wallets.map(({ wallet }) => wallet).slice());\n }\n }\n\n registerStandardWalletDiscovery((wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n if (existing) {\n // If the wallet exists but is an injected wallet this library registered,\n // replace it with the standard wallet registered by the wallet itself.\n if (existing.discoverer !== \"standard\") {\n wallets = [\n { discoverer: \"standard\", wallet },\n ...wallets.filter((w) => w.wallet.name !== wallet.name),\n ];\n\n emitChanges();\n }\n } else {\n wallets = [{ discoverer: \"standard\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n });\n\n registerEIP1193WalletFromEIP6963Discovery(eip1193Adapters, (wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n if (!existing) {\n wallets = [{ discoverer: \"eip6963\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n });\n\n const { refresh: refreshInjectedWallets } = registerInjectedWalletDiscovery(\n (wallet) => {\n if (!isStarknetWallet(wallet)) return;\n\n const existing = wallets.find((w) => w.wallet.name === wallet.name);\n\n // Only register injected wallets if they are not already registered.\n // We should not override standard wallets with injected wallets.\n if (!existing) {\n wallets = [{ discoverer: \"injected\", wallet }, ...wallets];\n\n emitChanges();\n }\n\n return () => {\n wallets = wallets.filter((w) => w.wallet.name !== wallet.name);\n\n emitChanges();\n };\n },\n );\n\n return {\n _refreshInjectedWallets: refreshInjectedWallets,\n getWallets() {\n return wallets.map(({ wallet }) => wallet).slice();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starknet-io/get-starknet-discovery",
3
- "version": "5.0.0",
3
+ "version": "6.0.0",
4
4
  "keywords": [
5
5
  "starknet",
6
6
  "starkware",
@@ -12,11 +12,16 @@
12
12
  ],
13
13
  "license": "MIT",
14
14
  "type": "module",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/starknet-io/get-starknet.git",
18
+ "directory": "packages/discovery"
19
+ },
15
20
  "main": "./dist/index.mjs",
16
- "types": "./dist/index.d.ts",
21
+ "types": "./dist/index.d.mts",
17
22
  "exports": {
18
23
  ".": {
19
- "types": "./dist/index.d.ts",
24
+ "types": "./dist/index.d.mts",
20
25
  "import": "./dist/index.mjs",
21
26
  "require": "./dist/index.cjs",
22
27
  "default": "./dist/index.mjs"
@@ -27,20 +32,21 @@
27
32
  "src"
28
33
  ],
29
34
  "devDependencies": {
30
- "@wallet-standard/core": "^1.1.0",
31
- "happy-dom": "^17.4.4",
32
- "typescript": "^5.8.3",
33
- "unbuild": "^2.0.0",
34
- "vitest": "^3.1.1"
35
+ "@wallet-standard/core": "^1.1.2",
36
+ "happy-dom": "^20.10.2",
37
+ "tsdown": "^0.21.9",
38
+ "typescript": "^5.9.3",
39
+ "vitest": "^3.2.6"
35
40
  },
36
41
  "dependencies": {
37
- "@starknet-io/types-js": "^0.7.10",
38
- "@wallet-standard/base": "^1.1.0",
39
- "@starknet-io/get-starknet-virtual-wallet": "^5.0.0",
40
- "@starknet-io/get-starknet-wallet-standard": "^5.0.0"
42
+ "@starknet-io/types-js": "^0.10.2",
43
+ "@wallet-standard/base": "^1.1.1",
44
+ "@starknet-io/get-starknet-virtual-wallet": "^6.0.0",
45
+ "@starknet-io/get-starknet-wallet-standard": "^6.0.0"
41
46
  },
42
47
  "scripts": {
43
- "build": "unbuild",
48
+ "typecheck": "tsc --noEmit",
49
+ "build": "tsdown",
44
50
  "lint:check": "biome check .",
45
51
  "lint": "biome check --write .",
46
52
  "format": "biome format --write .",
package/dist/index.d.ts DELETED
@@ -1,16 +0,0 @@
1
- import { EIP1193Adapter } from '@starknet-io/get-starknet-virtual-wallet';
2
- import { WalletWithStarknetFeatures } from '@starknet-io/get-starknet-wallet-standard/features';
3
-
4
- type CleanupListener = () => void;
5
- type Listener = (wallets: readonly WalletWithStarknetFeatures[]) => void;
6
- type Store = {
7
- getWallets: () => WalletWithStarknetFeatures[];
8
- subscribe: (listener: Listener) => CleanupListener;
9
- _refreshInjectedWallets: () => void;
10
- };
11
- type CreateStoreOptions = {
12
- eip1193Adapters?: EIP1193Adapter[];
13
- };
14
- declare function createStore({ eip1193Adapters, }?: CreateStoreOptions): Store;
15
-
16
- export { type CleanupListener, type Listener, type Store, createStore };