@kheopskit/core 5.3.0 → 6.0.0-rc.1
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/CHANGELOG.md +432 -0
- package/MIGRATING_TO_V6.md +840 -0
- package/README.md +629 -12
- package/dist/ethereum.d.mts +12 -6
- package/dist/ethereum.d.ts +12 -6
- package/dist/ethereum.js +13 -10
- package/dist/ethereum.js.map +1 -1
- package/dist/ethereum.mjs +7 -4
- package/dist/ethereum.mjs.map +1 -1
- package/dist/{iconCache-pP2ES4pJ.mjs → iconCache-C-U3IEbP.mjs} +21 -40
- package/dist/iconCache-C-U3IEbP.mjs.map +1 -0
- package/dist/{iconCache-DUtkJlaX.js → iconCache-FR4iy6go.js} +21 -40
- package/dist/iconCache-FR4iy6go.js.map +1 -0
- package/dist/index.d.mts +17 -63
- package/dist/index.d.ts +17 -63
- package/dist/index.js +387 -373
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +384 -369
- package/dist/index.mjs.map +1 -1
- package/dist/injectedWallets-48L-AL1I.mjs +173 -0
- package/dist/injectedWallets-48L-AL1I.mjs.map +1 -0
- package/dist/injectedWallets-Dy8YGKL-.js +178 -0
- package/dist/injectedWallets-Dy8YGKL-.js.map +1 -0
- package/dist/internal.d.mts +3 -27
- package/dist/internal.d.ts +3 -27
- package/dist/internal.js +2 -2
- package/dist/internal.mjs +2 -2
- package/dist/pageLoad-BZ7o8p5R.mjs +24 -0
- package/dist/pageLoad-BZ7o8p5R.mjs.map +1 -0
- package/dist/pageLoad-D1wLeuFG.js +28 -0
- package/dist/pageLoad-D1wLeuFG.js.map +1 -0
- package/dist/platformAccounts-BjIeRcFN.js +321 -0
- package/dist/platformAccounts-BjIeRcFN.js.map +1 -0
- package/dist/platformAccounts-yyRUrnel.mjs +256 -0
- package/dist/platformAccounts-yyRUrnel.mjs.map +1 -0
- package/dist/polkadot.d.mts +127 -11
- package/dist/polkadot.d.ts +127 -11
- package/dist/polkadot.js +187 -106
- package/dist/polkadot.js.map +1 -1
- package/dist/polkadot.mjs +180 -99
- package/dist/polkadot.mjs.map +1 -1
- package/dist/solana.d.mts +11 -5
- package/dist/solana.d.ts +11 -5
- package/dist/solana.js +18 -15
- package/dist/solana.js.map +1 -1
- package/dist/solana.mjs +7 -4
- package/dist/solana.mjs.map +1 -1
- package/dist/storage-D3AwNgqc.d.mts +27 -0
- package/dist/storage-D3AwNgqc.d.ts +27 -0
- package/dist/testing.d.mts +71 -0
- package/dist/testing.d.ts +71 -0
- package/dist/testing.js +136 -0
- package/dist/testing.js.map +1 -0
- package/dist/testing.mjs +131 -0
- package/dist/testing.mjs.map +1 -0
- package/dist/{types-DKU-SNio.js → types-BWHvNFlN.js} +149 -2
- package/dist/types-BWHvNFlN.js.map +1 -0
- package/dist/types-Yor672md.mjs +215 -0
- package/dist/types-Yor672md.mjs.map +1 -0
- package/dist/types-lkMXVJNG.d.mts +685 -0
- package/dist/types-lkMXVJNG.d.ts +685 -0
- package/dist/walletconnect.d.mts +41 -0
- package/dist/walletconnect.d.ts +41 -0
- package/dist/walletconnect.js +219 -0
- package/dist/walletconnect.js.map +1 -0
- package/dist/walletconnect.mjs +216 -0
- package/dist/walletconnect.mjs.map +1 -0
- package/package.json +30 -6
- package/dist/errors-BLFP1dQI.mjs +0 -181
- package/dist/errors-BLFP1dQI.mjs.map +0 -1
- package/dist/errors-DYWVPHrR.js +0 -222
- package/dist/errors-DYWVPHrR.js.map +0 -1
- package/dist/iconCache-DUtkJlaX.js.map +0 -1
- package/dist/iconCache-pP2ES4pJ.mjs.map +0 -1
- package/dist/injectedWallets-BqR-_aAy.js +0 -148
- package/dist/injectedWallets-BqR-_aAy.js.map +0 -1
- package/dist/injectedWallets-Uz4hPuoW.mjs +0 -119
- package/dist/injectedWallets-Uz4hPuoW.mjs.map +0 -1
- package/dist/types-AxUDtkR-.d.mts +0 -338
- package/dist/types-AxUDtkR-.d.ts +0 -338
- package/dist/types-DKU-SNio.js.map +0 -1
- package/dist/types-jnifAAA0.mjs +0 -104
- package/dist/types-jnifAAA0.mjs.map +0 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
const require_types = require("./types-BWHvNFlN.js");
|
|
2
|
+
let rxjs = require("rxjs");
|
|
3
|
+
//#region src/api/injectedWallets.ts
|
|
4
|
+
/**
|
|
5
|
+
* Compare two wallet arrays by their relevant properties (not functions).
|
|
6
|
+
* Shared by every platform's injected-wallets stream.
|
|
7
|
+
*/
|
|
8
|
+
const walletsEqual = (a, b) => {
|
|
9
|
+
if (a.length !== b.length) return false;
|
|
10
|
+
return a.every((w, i) => w.id === b[i]?.id && w.status === b[i]?.status && w.error === b[i]?.error && w.name === b[i]?.name);
|
|
11
|
+
};
|
|
12
|
+
const join = (connecting, walletId, signal) => {
|
|
13
|
+
if (!signal) {
|
|
14
|
+
connecting.anchored = true;
|
|
15
|
+
return connecting.promise;
|
|
16
|
+
}
|
|
17
|
+
connecting.waiting++;
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
const leave = () => {
|
|
20
|
+
if (connecting.answered) return;
|
|
21
|
+
reject(require_types.abortedError(walletId, "connect"));
|
|
22
|
+
connecting.waiting--;
|
|
23
|
+
if (!connecting.anchored && connecting.waiting === 0) connecting.abort();
|
|
24
|
+
};
|
|
25
|
+
signal.addEventListener("abort", leave, { once: true });
|
|
26
|
+
connecting.promise.then(resolve, reject).finally(() => signal.removeEventListener("abort", leave));
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The shared engine behind every platform's injected-wallets stream: tracks
|
|
31
|
+
* each wallet's connection (pending attempt or live handle), shares one
|
|
32
|
+
* in-flight connect per wallet, persists connected ids to the store for
|
|
33
|
+
* auto-reconnect, and re-emits the wallet list whenever the registry or
|
|
34
|
+
* connection state changes.
|
|
35
|
+
*/
|
|
36
|
+
const createInjectedWallets$ = (store, adapter) => new rxjs.Observable((subscriber) => {
|
|
37
|
+
const connections$ = new rxjs.BehaviorSubject(/* @__PURE__ */ new Map());
|
|
38
|
+
const teardown = new AbortController();
|
|
39
|
+
let present = /* @__PURE__ */ new Set();
|
|
40
|
+
const abortConnectsOfSourcesThatLeft = (sources) => {
|
|
41
|
+
present = new Set(sources.map((source) => adapter.getWalletId(source)));
|
|
42
|
+
for (const [walletId, connection] of connections$.value) if (connection.status === "connecting" && !present.has(walletId)) connection.abort();
|
|
43
|
+
};
|
|
44
|
+
const setConnection = (walletId, connection) => {
|
|
45
|
+
const next = new Map(connections$.value);
|
|
46
|
+
if (connection) next.set(walletId, connection);
|
|
47
|
+
else next.delete(walletId);
|
|
48
|
+
connections$.next(next);
|
|
49
|
+
};
|
|
50
|
+
const startConnect = (source, walletId, signal) => {
|
|
51
|
+
const controller = new AbortController();
|
|
52
|
+
const connecting = {
|
|
53
|
+
status: "connecting",
|
|
54
|
+
promise: new Promise((resolve, reject) => {
|
|
55
|
+
controller.signal.addEventListener("abort", () => {
|
|
56
|
+
setConnection(walletId, void 0);
|
|
57
|
+
reject(require_types.abortedError(walletId, "connect"));
|
|
58
|
+
}, { once: true });
|
|
59
|
+
new Promise((res) => res(adapter.connect(source, walletId))).then((handle) => {
|
|
60
|
+
connecting.answered = true;
|
|
61
|
+
if (controller.signal.aborted) {
|
|
62
|
+
adapter.releaseAbandonedHandle?.(handle, walletId);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
setConnection(walletId, {
|
|
66
|
+
status: "connected",
|
|
67
|
+
handle
|
|
68
|
+
});
|
|
69
|
+
resolve();
|
|
70
|
+
store.rememberWallet(walletId);
|
|
71
|
+
}, (error) => {
|
|
72
|
+
connecting.answered = true;
|
|
73
|
+
if (controller.signal.aborted) return;
|
|
74
|
+
const connectError = require_types.toConnectError(error, walletId, adapter.isUserRejection ?? (() => false));
|
|
75
|
+
setConnection(walletId, {
|
|
76
|
+
status: "disconnected",
|
|
77
|
+
error: connectError
|
|
78
|
+
});
|
|
79
|
+
reject(connectError);
|
|
80
|
+
});
|
|
81
|
+
}),
|
|
82
|
+
anchored: false,
|
|
83
|
+
waiting: 0,
|
|
84
|
+
answered: false,
|
|
85
|
+
abort: () => {
|
|
86
|
+
if (connections$.value.get(walletId) === connecting) controller.abort();
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
setConnection(walletId, connecting);
|
|
90
|
+
return join(connecting, walletId, signal);
|
|
91
|
+
};
|
|
92
|
+
const untilSettled = (disconnecting, walletId, signal) => new Promise((resolve, reject) => {
|
|
93
|
+
const signals = signal ? [teardown.signal, signal] : [teardown.signal];
|
|
94
|
+
const settle = () => {
|
|
95
|
+
for (const s of signals) s.removeEventListener("abort", settle);
|
|
96
|
+
if (signals.some((s) => s.aborted)) reject(require_types.abortedError(walletId, "connect"));
|
|
97
|
+
else resolve();
|
|
98
|
+
};
|
|
99
|
+
if (signals.some((s) => s.aborted)) return settle();
|
|
100
|
+
for (const s of signals) s.addEventListener("abort", settle, { once: true });
|
|
101
|
+
disconnecting.then(settle, settle);
|
|
102
|
+
});
|
|
103
|
+
const connect = (source, walletId, options) => {
|
|
104
|
+
if (teardown.signal.aborted || !present.has(walletId)) return Promise.reject(require_types.abortedError(walletId, "connect"));
|
|
105
|
+
const current = connections$.value.get(walletId);
|
|
106
|
+
if (current?.status === "connected") {
|
|
107
|
+
if (!current.disconnecting) return Promise.resolve();
|
|
108
|
+
return untilSettled(current.disconnecting, walletId, options?.signal).then(() => connect(source, walletId, options));
|
|
109
|
+
}
|
|
110
|
+
if (options?.signal?.aborted) return Promise.reject(require_types.abortedError(walletId, "connect"));
|
|
111
|
+
if (current?.status === "connecting") return join(current, walletId, options?.signal);
|
|
112
|
+
return startConnect(source, walletId, options?.signal);
|
|
113
|
+
};
|
|
114
|
+
const disconnect = (source, walletId) => {
|
|
115
|
+
const current = connections$.value.get(walletId);
|
|
116
|
+
if (!current || current.status === "disconnected") return Promise.resolve();
|
|
117
|
+
if (current.status === "connecting") {
|
|
118
|
+
current.abort();
|
|
119
|
+
return Promise.resolve();
|
|
120
|
+
}
|
|
121
|
+
if (current.disconnecting) return current.disconnecting;
|
|
122
|
+
store.forgetWallet(walletId);
|
|
123
|
+
const disconnecting = (async () => {
|
|
124
|
+
try {
|
|
125
|
+
await adapter.disconnect?.(source, walletId);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
if (!teardown.signal.aborted) {
|
|
128
|
+
setConnection(walletId, {
|
|
129
|
+
status: "connected",
|
|
130
|
+
handle: current.handle
|
|
131
|
+
});
|
|
132
|
+
store.rememberWallet(walletId);
|
|
133
|
+
}
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
if (teardown.signal.aborted) return;
|
|
137
|
+
setConnection(walletId, void 0);
|
|
138
|
+
adapter.onDisconnected?.(walletId);
|
|
139
|
+
})();
|
|
140
|
+
setConnection(walletId, {
|
|
141
|
+
...current,
|
|
142
|
+
disconnecting
|
|
143
|
+
});
|
|
144
|
+
return disconnecting;
|
|
145
|
+
};
|
|
146
|
+
const sub = (0, rxjs.combineLatest)([adapter.sources$, connections$]).pipe((0, rxjs.tap)(([sources]) => abortConnectsOfSourcesThatLeft(sources)), (0, rxjs.map)(([sources, connections]) => sources.map((source) => {
|
|
147
|
+
const walletId = adapter.getWalletId(source);
|
|
148
|
+
const connection = connections.get(walletId);
|
|
149
|
+
const connected = connection?.status === "connected" ? connection : void 0;
|
|
150
|
+
return adapter.buildWallet({
|
|
151
|
+
source,
|
|
152
|
+
walletId,
|
|
153
|
+
handle: connected?.handle,
|
|
154
|
+
status: connection?.status ?? "disconnected",
|
|
155
|
+
error: connection?.status === "disconnected" ? connection.error : void 0,
|
|
156
|
+
isConnected: connected !== void 0,
|
|
157
|
+
connect: (options) => connect(source, walletId, options),
|
|
158
|
+
disconnect: () => disconnect(source, walletId)
|
|
159
|
+
});
|
|
160
|
+
})), (0, rxjs.distinctUntilChanged)(walletsEqual)).subscribe(subscriber);
|
|
161
|
+
return () => {
|
|
162
|
+
teardown.abort();
|
|
163
|
+
for (const connection of connections$.value.values()) if (connection.status === "connecting") connection.abort();
|
|
164
|
+
sub.unsubscribe();
|
|
165
|
+
};
|
|
166
|
+
}).pipe((0, rxjs.shareReplay)({
|
|
167
|
+
refCount: true,
|
|
168
|
+
bufferSize: 1
|
|
169
|
+
}));
|
|
170
|
+
//#endregion
|
|
171
|
+
Object.defineProperty(exports, "createInjectedWallets$", {
|
|
172
|
+
enumerable: true,
|
|
173
|
+
get: function() {
|
|
174
|
+
return createInjectedWallets$;
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
//# sourceMappingURL=injectedWallets-Dy8YGKL-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectedWallets-Dy8YGKL-.js","names":["abortedError","Observable","BehaviorSubject","toConnectError","combineLatest","tap","map","distinctUntilChanged","shareReplay"],"sources":["../src/api/injectedWallets.ts"],"sourcesContent":["import {\n\tBehaviorSubject,\n\tcombineLatest,\n\tdistinctUntilChanged,\n\tmap,\n\tObservable,\n\tshareReplay,\n\ttap,\n} from \"rxjs\";\nimport type { WalletId } from \"../utils/WalletId\";\nimport { abortedError, type KheopskitError, toConnectError } from \"./errors\";\nimport type { KheopskitStore } from \"./store\";\nimport type { BaseWallet, ConnectOptions, WalletStatus } from \"./types\";\n\n/**\n * Compare two wallet arrays by their relevant properties (not functions).\n * Shared by every platform's injected-wallets stream.\n */\nconst walletsEqual = <\n\tW extends Pick<BaseWallet, \"id\" | \"status\" | \"error\" | \"name\">,\n>(\n\ta: W[],\n\tb: W[],\n): boolean => {\n\tif (a.length !== b.length) return false;\n\treturn a.every(\n\t\t(w, i) =>\n\t\t\tw.id === b[i]?.id &&\n\t\t\tw.status === b[i]?.status &&\n\t\t\tw.error === b[i]?.error &&\n\t\t\tw.name === b[i]?.name,\n\t);\n};\n\n/**\n * The platform-specific surface of an injected-wallets stream. Everything else\n * — the connect/disconnect state machine, the connected-ids bookkeeping, the\n * store persistence, change detection and sharing — is owned by\n * {@link createInjectedWallets$}.\n *\n * @typeParam TSource - a wallet as the platform's registry reports it\n * @typeParam TWallet - the platform's wallet type\n * @typeParam THandle - live connection handle retained while connected\n */\nexport type InjectedWalletsAdapter<\n\tTSource,\n\tTWallet extends BaseWallet,\n\tTHandle = void,\n> = {\n\t/** Live registry of the platform's injected wallets (emits `[]` during SSR). */\n\tsources$: Observable<readonly TSource[]>;\n\t/** Stable wallet id for a registry entry. */\n\tgetWalletId: (source: TSource) => WalletId;\n\t/**\n\t * Platform connect call. The resolved value is retained as the wallet's\n\t * live handle until disconnect.\n\t */\n\tconnect: (source: TSource, walletId: WalletId) => Promise<THandle>;\n\t/** `true` maps the platform's rejection to `USER_REJECTED`; absent means never. */\n\tisUserRejection?: (error: unknown) => boolean;\n\treleaseAbandonedHandle?: (handle: THandle, walletId: WalletId) => void;\n\t/**\n\t * Optional platform disconnect call, awaited before local state clears so a\n\t * failed disconnect rejects without desyncing the connected list.\n\t */\n\tdisconnect?: (source: TSource, walletId: WalletId) => Promise<void>;\n\t/**\n\t * Runs after a disconnect fully applied — the place to drop cached account\n\t * observables so a later reconnect rebuilds them against a fresh handle.\n\t */\n\tonDisconnected?: (walletId: WalletId) => void;\n\t/** Build the platform wallet object for one registry entry. */\n\tbuildWallet: (args: {\n\t\tsource: TSource;\n\t\twalletId: WalletId;\n\t\t/** Live connection handle; `undefined` while disconnected. */\n\t\thandle: THandle | undefined;\n\t\tstatus: WalletStatus;\n\t\terror: KheopskitError | undefined;\n\t\tisConnected: boolean;\n\t\tconnect: (options?: ConnectOptions) => Promise<void>;\n\t\tdisconnect: () => Promise<void>;\n\t}) => TWallet;\n};\n\ntype Connecting = {\n\tstatus: \"connecting\";\n\tpromise: Promise<void>;\n\tanchored: boolean;\n\twaiting: number;\n\tanswered: boolean;\n\tabort: () => void;\n};\n\ntype Connection<THandle> =\n\t| Connecting\n\t| { status: \"connected\"; handle: THandle; disconnecting?: Promise<void> }\n\t| { status: \"disconnected\"; error: KheopskitError };\n\nconst join = (\n\tconnecting: Connecting,\n\twalletId: WalletId,\n\tsignal: AbortSignal | undefined,\n): Promise<void> => {\n\tif (!signal) {\n\t\tconnecting.anchored = true;\n\t\treturn connecting.promise;\n\t}\n\tconnecting.waiting++;\n\treturn new Promise<void>((resolve, reject) => {\n\t\tconst leave = () => {\n\t\t\tif (connecting.answered) return;\n\t\t\treject(abortedError(walletId, \"connect\"));\n\t\t\tconnecting.waiting--;\n\t\t\tif (!connecting.anchored && connecting.waiting === 0) connecting.abort();\n\t\t};\n\t\tsignal.addEventListener(\"abort\", leave, { once: true });\n\t\tconnecting.promise\n\t\t\t.then(resolve, reject)\n\t\t\t.finally(() => signal.removeEventListener(\"abort\", leave));\n\t});\n};\n\n/**\n * The shared engine behind every platform's injected-wallets stream: tracks\n * each wallet's connection (pending attempt or live handle), shares one\n * in-flight connect per wallet, persists connected ids to the store for\n * auto-reconnect, and re-emits the wallet list whenever the registry or\n * connection state changes.\n */\nexport const createInjectedWallets$ = <\n\tTSource,\n\tTWallet extends BaseWallet,\n\tTHandle = void,\n>(\n\tstore: KheopskitStore,\n\tadapter: InjectedWalletsAdapter<TSource, TWallet, THandle>,\n): Observable<TWallet[]> =>\n\tnew Observable<TWallet[]>((subscriber) => {\n\t\tconst connections$ = new BehaviorSubject<\n\t\t\tReadonlyMap<WalletId, Connection<THandle>>\n\t\t>(new Map());\n\t\tconst teardown = new AbortController();\n\t\tlet present = new Set<WalletId>();\n\n\t\tconst abortConnectsOfSourcesThatLeft = (sources: readonly TSource[]) => {\n\t\t\tpresent = new Set(sources.map((source) => adapter.getWalletId(source)));\n\t\t\tfor (const [walletId, connection] of connections$.value)\n\t\t\t\tif (connection.status === \"connecting\" && !present.has(walletId))\n\t\t\t\t\tconnection.abort();\n\t\t};\n\n\t\tconst setConnection = (\n\t\t\twalletId: WalletId,\n\t\t\tconnection: Connection<THandle> | undefined,\n\t\t) => {\n\t\t\tconst next = new Map(connections$.value);\n\t\t\tif (connection) next.set(walletId, connection);\n\t\t\telse next.delete(walletId);\n\t\t\tconnections$.next(next);\n\t\t};\n\n\t\tconst startConnect = (\n\t\t\tsource: TSource,\n\t\t\twalletId: WalletId,\n\t\t\tsignal: AbortSignal | undefined,\n\t\t): Promise<void> => {\n\t\t\tconst controller = new AbortController();\n\t\t\tconst promise = new Promise<void>((resolve, reject) => {\n\t\t\t\tcontroller.signal.addEventListener(\n\t\t\t\t\t\"abort\",\n\t\t\t\t\t() => {\n\t\t\t\t\t\tsetConnection(walletId, undefined);\n\t\t\t\t\t\treject(abortedError(walletId, \"connect\"));\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true },\n\t\t\t\t);\n\t\t\t\tnew Promise<THandle>((res) =>\n\t\t\t\t\tres(adapter.connect(source, walletId)),\n\t\t\t\t).then(\n\t\t\t\t\t(handle) => {\n\t\t\t\t\t\tconnecting.answered = true;\n\t\t\t\t\t\tif (controller.signal.aborted) {\n\t\t\t\t\t\t\tadapter.releaseAbandonedHandle?.(handle, walletId);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetConnection(walletId, { status: \"connected\", handle });\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tstore.rememberWallet(walletId);\n\t\t\t\t\t},\n\t\t\t\t\t(error) => {\n\t\t\t\t\t\tconnecting.answered = true;\n\t\t\t\t\t\tif (controller.signal.aborted) return;\n\t\t\t\t\t\tconst connectError = toConnectError(\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\twalletId,\n\t\t\t\t\t\t\tadapter.isUserRejection ?? (() => false),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetConnection(walletId, {\n\t\t\t\t\t\t\tstatus: \"disconnected\",\n\t\t\t\t\t\t\terror: connectError,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treject(connectError);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t\t\tconst connecting: Connecting = {\n\t\t\t\tstatus: \"connecting\",\n\t\t\t\tpromise,\n\t\t\t\tanchored: false,\n\t\t\t\twaiting: 0,\n\t\t\t\tanswered: false,\n\t\t\t\tabort: () => {\n\t\t\t\t\tif (connections$.value.get(walletId) === connecting)\n\t\t\t\t\t\tcontroller.abort();\n\t\t\t\t},\n\t\t\t};\n\t\t\tsetConnection(walletId, connecting);\n\t\t\treturn join(connecting, walletId, signal);\n\t\t};\n\n\t\tconst untilSettled = (\n\t\t\tdisconnecting: Promise<void>,\n\t\t\twalletId: WalletId,\n\t\t\tsignal: AbortSignal | undefined,\n\t\t): Promise<void> =>\n\t\t\tnew Promise<void>((resolve, reject) => {\n\t\t\t\tconst signals = signal ? [teardown.signal, signal] : [teardown.signal];\n\t\t\t\tconst settle = () => {\n\t\t\t\t\tfor (const s of signals) s.removeEventListener(\"abort\", settle);\n\t\t\t\t\tif (signals.some((s) => s.aborted))\n\t\t\t\t\t\treject(abortedError(walletId, \"connect\"));\n\t\t\t\t\telse resolve();\n\t\t\t\t};\n\t\t\t\tif (signals.some((s) => s.aborted)) return settle();\n\t\t\t\tfor (const s of signals)\n\t\t\t\t\ts.addEventListener(\"abort\", settle, { once: true });\n\t\t\t\tdisconnecting.then(settle, settle);\n\t\t\t});\n\n\t\tconst connect = (\n\t\t\tsource: TSource,\n\t\t\twalletId: WalletId,\n\t\t\toptions?: ConnectOptions,\n\t\t): Promise<void> => {\n\t\t\tif (teardown.signal.aborted || !present.has(walletId))\n\t\t\t\treturn Promise.reject(abortedError(walletId, \"connect\"));\n\t\t\tconst current = connections$.value.get(walletId);\n\t\t\tif (current?.status === \"connected\") {\n\t\t\t\tif (!current.disconnecting) return Promise.resolve();\n\t\t\t\treturn untilSettled(\n\t\t\t\t\tcurrent.disconnecting,\n\t\t\t\t\twalletId,\n\t\t\t\t\toptions?.signal,\n\t\t\t\t).then(() => connect(source, walletId, options));\n\t\t\t}\n\t\t\tif (options?.signal?.aborted)\n\t\t\t\treturn Promise.reject(abortedError(walletId, \"connect\"));\n\t\t\tif (current?.status === \"connecting\")\n\t\t\t\treturn join(current, walletId, options?.signal);\n\t\t\treturn startConnect(source, walletId, options?.signal);\n\t\t};\n\n\t\tconst disconnect = (source: TSource, walletId: WalletId): Promise<void> => {\n\t\t\tconst current = connections$.value.get(walletId);\n\t\t\tif (!current || current.status === \"disconnected\")\n\t\t\t\treturn Promise.resolve();\n\t\t\tif (current.status === \"connecting\") {\n\t\t\t\tcurrent.abort();\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t\tif (current.disconnecting) return current.disconnecting;\n\n\t\t\tstore.forgetWallet(walletId);\n\t\t\tconst disconnecting = (async () => {\n\t\t\t\ttry {\n\t\t\t\t\tawait adapter.disconnect?.(source, walletId);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!teardown.signal.aborted) {\n\t\t\t\t\t\tsetConnection(walletId, {\n\t\t\t\t\t\t\tstatus: \"connected\",\n\t\t\t\t\t\t\thandle: current.handle,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tstore.rememberWallet(walletId);\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tif (teardown.signal.aborted) return;\n\t\t\t\tsetConnection(walletId, undefined);\n\t\t\t\tadapter.onDisconnected?.(walletId);\n\t\t\t})();\n\t\t\tsetConnection(walletId, { ...current, disconnecting });\n\t\t\treturn disconnecting;\n\t\t};\n\n\t\tconst sub = combineLatest([adapter.sources$, connections$])\n\t\t\t.pipe(\n\t\t\t\ttap(([sources]) => abortConnectsOfSourcesThatLeft(sources)),\n\t\t\t\tmap(([sources, connections]) =>\n\t\t\t\t\tsources.map((source): TWallet => {\n\t\t\t\t\t\tconst walletId = adapter.getWalletId(source);\n\t\t\t\t\t\tconst connection = connections.get(walletId);\n\t\t\t\t\t\tconst connected =\n\t\t\t\t\t\t\tconnection?.status === \"connected\" ? connection : undefined;\n\t\t\t\t\t\treturn adapter.buildWallet({\n\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\twalletId,\n\t\t\t\t\t\t\thandle: connected?.handle,\n\t\t\t\t\t\t\tstatus: connection?.status ?? \"disconnected\",\n\t\t\t\t\t\t\terror:\n\t\t\t\t\t\t\t\tconnection?.status === \"disconnected\"\n\t\t\t\t\t\t\t\t\t? connection.error\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tisConnected: connected !== undefined,\n\t\t\t\t\t\t\tconnect: (options) => connect(source, walletId, options),\n\t\t\t\t\t\t\tdisconnect: () => disconnect(source, walletId),\n\t\t\t\t\t\t});\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tdistinctUntilChanged(walletsEqual),\n\t\t\t)\n\t\t\t.subscribe(subscriber);\n\n\t\treturn () => {\n\t\t\tteardown.abort();\n\t\t\tfor (const connection of connections$.value.values())\n\t\t\t\tif (connection.status === \"connecting\") connection.abort();\n\t\t\tsub.unsubscribe();\n\t\t};\n\t}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n"],"mappings":";;;;;;;AAkBA,MAAM,gBAGL,GACA,MACa;CACb,IAAI,EAAE,WAAW,EAAE,QAAQ,OAAO;CAClC,OAAO,EAAE,OACP,GAAG,MACH,EAAE,OAAO,EAAE,EAAE,EAAE,MACf,EAAE,WAAW,EAAE,EAAE,EAAE,UACnB,EAAE,UAAU,EAAE,EAAE,EAAE,SAClB,EAAE,SAAS,EAAE,EAAE,EAAE,IACnB;AACD;AAmEA,MAAM,QACL,YACA,UACA,WACmB;CACnB,IAAI,CAAC,QAAQ;EACZ,WAAW,WAAW;EACtB,OAAO,WAAW;CACnB;CACA,WAAW;CACX,OAAO,IAAI,SAAe,SAAS,WAAW;EAC7C,MAAM,cAAc;GACnB,IAAI,WAAW,UAAU;GACzB,OAAOA,cAAAA,aAAa,UAAU,SAAS,CAAC;GACxC,WAAW;GACX,IAAI,CAAC,WAAW,YAAY,WAAW,YAAY,GAAG,WAAW,MAAM;EACxE;EACA,OAAO,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;EACtD,WAAW,QACT,KAAK,SAAS,MAAM,CAAC,CACrB,cAAc,OAAO,oBAAoB,SAAS,KAAK,CAAC;CAC3D,CAAC;AACF;;;;;;;;AASA,MAAa,0BAKZ,OACA,YAEA,IAAIC,KAAAA,YAAuB,eAAe;CACzC,MAAM,eAAe,IAAIC,KAAAA,gCAEvB,IAAI,IAAI,CAAC;CACX,MAAM,WAAW,IAAI,gBAAgB;CACrC,IAAI,0BAAU,IAAI,IAAc;CAEhC,MAAM,kCAAkC,YAAgC;EACvE,UAAU,IAAI,IAAI,QAAQ,KAAK,WAAW,QAAQ,YAAY,MAAM,CAAC,CAAC;EACtE,KAAK,MAAM,CAAC,UAAU,eAAe,aAAa,OACjD,IAAI,WAAW,WAAW,gBAAgB,CAAC,QAAQ,IAAI,QAAQ,GAC9D,WAAW,MAAM;CACpB;CAEA,MAAM,iBACL,UACA,eACI;EACJ,MAAM,OAAO,IAAI,IAAI,aAAa,KAAK;EACvC,IAAI,YAAY,KAAK,IAAI,UAAU,UAAU;OACxC,KAAK,OAAO,QAAQ;EACzB,aAAa,KAAK,IAAI;CACvB;CAEA,MAAM,gBACL,QACA,UACA,WACmB;EACnB,MAAM,aAAa,IAAI,gBAAgB;EAuCvC,MAAM,aAAyB;GAC9B,QAAQ;GACR,SAAA,IAxCmB,SAAe,SAAS,WAAW;IACtD,WAAW,OAAO,iBACjB,eACM;KACL,cAAc,UAAU,KAAA,CAAS;KACjC,OAAOF,cAAAA,aAAa,UAAU,SAAS,CAAC;IACzC,GACA,EAAE,MAAM,KAAK,CACd;IACA,IAAI,SAAkB,QACrB,IAAI,QAAQ,QAAQ,QAAQ,QAAQ,CAAC,CACtC,CAAC,CAAC,MACA,WAAW;KACX,WAAW,WAAW;KACtB,IAAI,WAAW,OAAO,SAAS;MAC9B,QAAQ,yBAAyB,QAAQ,QAAQ;MACjD;KACD;KACA,cAAc,UAAU;MAAE,QAAQ;MAAa;KAAO,CAAC;KACvD,QAAQ;KACR,MAAM,eAAe,QAAQ;IAC9B,IACC,UAAU;KACV,WAAW,WAAW;KACtB,IAAI,WAAW,OAAO,SAAS;KAC/B,MAAM,eAAeG,cAAAA,eACpB,OACA,UACA,QAAQ,0BAA0B,MACnC;KACA,cAAc,UAAU;MACvB,QAAQ;MACR,OAAO;KACR,CAAC;KACD,OAAO,YAAY;IACpB,CACD;GACD,CAGO;GACN,UAAU;GACV,SAAS;GACT,UAAU;GACV,aAAa;IACZ,IAAI,aAAa,MAAM,IAAI,QAAQ,MAAM,YACxC,WAAW,MAAM;GACnB;EACD;EACA,cAAc,UAAU,UAAU;EAClC,OAAO,KAAK,YAAY,UAAU,MAAM;CACzC;CAEA,MAAM,gBACL,eACA,UACA,WAEA,IAAI,SAAe,SAAS,WAAW;EACtC,MAAM,UAAU,SAAS,CAAC,SAAS,QAAQ,MAAM,IAAI,CAAC,SAAS,MAAM;EACrE,MAAM,eAAe;GACpB,KAAK,MAAM,KAAK,SAAS,EAAE,oBAAoB,SAAS,MAAM;GAC9D,IAAI,QAAQ,MAAM,MAAM,EAAE,OAAO,GAChC,OAAOH,cAAAA,aAAa,UAAU,SAAS,CAAC;QACpC,QAAQ;EACd;EACA,IAAI,QAAQ,MAAM,MAAM,EAAE,OAAO,GAAG,OAAO,OAAO;EAClD,KAAK,MAAM,KAAK,SACf,EAAE,iBAAiB,SAAS,QAAQ,EAAE,MAAM,KAAK,CAAC;EACnD,cAAc,KAAK,QAAQ,MAAM;CAClC,CAAC;CAEF,MAAM,WACL,QACA,UACA,YACmB;EACnB,IAAI,SAAS,OAAO,WAAW,CAAC,QAAQ,IAAI,QAAQ,GACnD,OAAO,QAAQ,OAAOA,cAAAA,aAAa,UAAU,SAAS,CAAC;EACxD,MAAM,UAAU,aAAa,MAAM,IAAI,QAAQ;EAC/C,IAAI,SAAS,WAAW,aAAa;GACpC,IAAI,CAAC,QAAQ,eAAe,OAAO,QAAQ,QAAQ;GACnD,OAAO,aACN,QAAQ,eACR,UACA,SAAS,MACV,CAAC,CAAC,WAAW,QAAQ,QAAQ,UAAU,OAAO,CAAC;EAChD;EACA,IAAI,SAAS,QAAQ,SACpB,OAAO,QAAQ,OAAOA,cAAAA,aAAa,UAAU,SAAS,CAAC;EACxD,IAAI,SAAS,WAAW,cACvB,OAAO,KAAK,SAAS,UAAU,SAAS,MAAM;EAC/C,OAAO,aAAa,QAAQ,UAAU,SAAS,MAAM;CACtD;CAEA,MAAM,cAAc,QAAiB,aAAsC;EAC1E,MAAM,UAAU,aAAa,MAAM,IAAI,QAAQ;EAC/C,IAAI,CAAC,WAAW,QAAQ,WAAW,gBAClC,OAAO,QAAQ,QAAQ;EACxB,IAAI,QAAQ,WAAW,cAAc;GACpC,QAAQ,MAAM;GACd,OAAO,QAAQ,QAAQ;EACxB;EACA,IAAI,QAAQ,eAAe,OAAO,QAAQ;EAE1C,MAAM,aAAa,QAAQ;EAC3B,MAAM,iBAAiB,YAAY;GAClC,IAAI;IACH,MAAM,QAAQ,aAAa,QAAQ,QAAQ;GAC5C,SAAS,OAAO;IACf,IAAI,CAAC,SAAS,OAAO,SAAS;KAC7B,cAAc,UAAU;MACvB,QAAQ;MACR,QAAQ,QAAQ;KACjB,CAAC;KACD,MAAM,eAAe,QAAQ;IAC9B;IACA,MAAM;GACP;GACA,IAAI,SAAS,OAAO,SAAS;GAC7B,cAAc,UAAU,KAAA,CAAS;GACjC,QAAQ,iBAAiB,QAAQ;EAClC,EAAA,CAAG;EACH,cAAc,UAAU;GAAE,GAAG;GAAS;EAAc,CAAC;EACrD,OAAO;CACR;CAEA,MAAM,OAAA,GAAMI,KAAAA,cAAAA,CAAc,CAAC,QAAQ,UAAU,YAAY,CAAC,CAAC,CACzD,MAAA,GACAC,KAAAA,IAAAA,EAAK,CAAC,aAAa,+BAA+B,OAAO,CAAC,IAAA,GAC1DC,KAAAA,IAAAA,EAAK,CAAC,SAAS,iBACd,QAAQ,KAAK,WAAoB;EAChC,MAAM,WAAW,QAAQ,YAAY,MAAM;EAC3C,MAAM,aAAa,YAAY,IAAI,QAAQ;EAC3C,MAAM,YACL,YAAY,WAAW,cAAc,aAAa,KAAA;EACnD,OAAO,QAAQ,YAAY;GAC1B;GACA;GACA,QAAQ,WAAW;GACnB,QAAQ,YAAY,UAAU;GAC9B,OACC,YAAY,WAAW,iBACpB,WAAW,QACX,KAAA;GACJ,aAAa,cAAc,KAAA;GAC3B,UAAU,YAAY,QAAQ,QAAQ,UAAU,OAAO;GACvD,kBAAkB,WAAW,QAAQ,QAAQ;EAC9C,CAAC;CACF,CAAC,CACF,IAAA,GACAC,KAAAA,qBAAAA,CAAqB,YAAY,CAClC,CAAC,CACA,UAAU,UAAU;CAEtB,aAAa;EACZ,SAAS,MAAM;EACf,KAAK,MAAM,cAAc,aAAa,MAAM,OAAO,GAClD,IAAI,WAAW,WAAW,cAAc,WAAW,MAAM;EAC1D,IAAI,YAAY;CACjB;AACD,CAAC,CAAC,CAAC,MAAA,GAAKC,KAAAA,YAAAA,CAAY;CAAE,UAAU;CAAM,YAAY;AAAE,CAAC,CAAC"}
|
package/dist/internal.d.mts
CHANGED
|
@@ -1,30 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as getSafeLocalStorage } from "./storage-D3AwNgqc.mjs";
|
|
2
|
+
import { a as CachedAccount, b as WalletConnectWallet, i as BaseWalletAccount, o as CachedWallet, r as BaseWallet } from "./types-lkMXVJNG.mjs";
|
|
2
3
|
import { n as clearCachedObservable, r as clearCachedObservablesByPrefix } from "./getCachedObservable-LUq9IfEx.mjs";
|
|
3
|
-
//#region src/utils/storage.d.ts
|
|
4
|
-
type Storage = {
|
|
5
|
-
getItem: (key: string) => string | null;
|
|
6
|
-
setItem: (key: string, value: string) => void;
|
|
7
|
-
removeItem: (key: string) => void;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Extended storage interface with cross-tab sync support.
|
|
11
|
-
*/
|
|
12
|
-
type SyncableStorage = Storage & {
|
|
13
|
-
/**
|
|
14
|
-
* Subscribe to storage changes from other tabs.
|
|
15
|
-
* Returns an unsubscribe function.
|
|
16
|
-
*/
|
|
17
|
-
subscribe?: (key: string, callback: (value: string | null) => void) => () => void;
|
|
18
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
* A safe localStorage wrapper that falls back to noopStorage
|
|
21
|
-
* when localStorage is not available (e.g., during SSR).
|
|
22
|
-
* Includes cross-tab sync via the native 'storage' event.
|
|
23
|
-
*
|
|
24
|
-
* Lazily initialized on first access to be SSR-safe.
|
|
25
|
-
*/
|
|
26
|
-
export declare const getSafeLocalStorage: () => SyncableStorage;
|
|
27
|
-
//#endregion
|
|
28
4
|
//#region src/utils/hydrateState.d.ts
|
|
29
5
|
/**
|
|
30
6
|
* Converts a wallet to a CachedWallet for storage.
|
|
@@ -47,5 +23,5 @@ export declare const serializeAccount: (account: BaseWalletAccount) => CachedAcc
|
|
|
47
23
|
*/
|
|
48
24
|
export declare const setCachedIcons: (icons: Record<string, string>) => void;
|
|
49
25
|
//#endregion
|
|
50
|
-
export { clearCachedObservable, clearCachedObservablesByPrefix };
|
|
26
|
+
export { clearCachedObservable, clearCachedObservablesByPrefix, getSafeLocalStorage };
|
|
51
27
|
//# sourceMappingURL=internal.d.mts.map
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,30 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as getSafeLocalStorage } from "./storage-D3AwNgqc.js";
|
|
2
|
+
import { a as CachedAccount, b as WalletConnectWallet, i as BaseWalletAccount, o as CachedWallet, r as BaseWallet } from "./types-lkMXVJNG.js";
|
|
2
3
|
import { n as clearCachedObservable, r as clearCachedObservablesByPrefix } from "./getCachedObservable-LUq9IfEx.js";
|
|
3
|
-
//#region src/utils/storage.d.ts
|
|
4
|
-
type Storage = {
|
|
5
|
-
getItem: (key: string) => string | null;
|
|
6
|
-
setItem: (key: string, value: string) => void;
|
|
7
|
-
removeItem: (key: string) => void;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Extended storage interface with cross-tab sync support.
|
|
11
|
-
*/
|
|
12
|
-
type SyncableStorage = Storage & {
|
|
13
|
-
/**
|
|
14
|
-
* Subscribe to storage changes from other tabs.
|
|
15
|
-
* Returns an unsubscribe function.
|
|
16
|
-
*/
|
|
17
|
-
subscribe?: (key: string, callback: (value: string | null) => void) => () => void;
|
|
18
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
* A safe localStorage wrapper that falls back to noopStorage
|
|
21
|
-
* when localStorage is not available (e.g., during SSR).
|
|
22
|
-
* Includes cross-tab sync via the native 'storage' event.
|
|
23
|
-
*
|
|
24
|
-
* Lazily initialized on first access to be SSR-safe.
|
|
25
|
-
*/
|
|
26
|
-
export declare const getSafeLocalStorage: () => SyncableStorage;
|
|
27
|
-
//#endregion
|
|
28
4
|
//#region src/utils/hydrateState.d.ts
|
|
29
5
|
/**
|
|
30
6
|
* Converts a wallet to a CachedWallet for storage.
|
|
@@ -47,5 +23,5 @@ export declare const serializeAccount: (account: BaseWalletAccount) => CachedAcc
|
|
|
47
23
|
*/
|
|
48
24
|
export declare const setCachedIcons: (icons: Record<string, string>) => void;
|
|
49
25
|
//#endregion
|
|
50
|
-
export { clearCachedObservable, clearCachedObservablesByPrefix };
|
|
26
|
+
export { clearCachedObservable, clearCachedObservablesByPrefix, getSafeLocalStorage };
|
|
51
27
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_types = require("./types-
|
|
3
|
-
const require_iconCache = require("./iconCache-
|
|
2
|
+
const require_types = require("./types-BWHvNFlN.js");
|
|
3
|
+
const require_iconCache = require("./iconCache-FR4iy6go.js");
|
|
4
4
|
exports.clearCachedObservable = require_types.clearCachedObservable;
|
|
5
5
|
exports.clearCachedObservablesByPrefix = require_types.clearCachedObservablesByPrefix;
|
|
6
6
|
exports.getSafeLocalStorage = require_iconCache.getSafeLocalStorage;
|
package/dist/internal.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as serializeAccount, i as getSafeLocalStorage, l as serializeWallet, n as setCachedIcons } from "./iconCache-
|
|
1
|
+
import { g as clearCachedObservablesByPrefix, h as clearCachedObservable } from "./types-Yor672md.mjs";
|
|
2
|
+
import { c as serializeAccount, i as getSafeLocalStorage, l as serializeWallet, n as setCachedIcons } from "./iconCache-C-U3IEbP.mjs";
|
|
3
3
|
export { clearCachedObservable, clearCachedObservablesByPrefix, getSafeLocalStorage, serializeAccount, serializeWallet, setCachedIcons };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
//#region src/utils/pageLoad.ts
|
|
3
|
+
const pageLoaded$ = new Observable((subscriber) => {
|
|
4
|
+
if (typeof document === "undefined") {
|
|
5
|
+
subscriber.next(false);
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
if (document.readyState === "complete") {
|
|
9
|
+
subscriber.next(true);
|
|
10
|
+
subscriber.complete();
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
subscriber.next(false);
|
|
14
|
+
const onLoad = () => {
|
|
15
|
+
subscriber.next(true);
|
|
16
|
+
subscriber.complete();
|
|
17
|
+
};
|
|
18
|
+
window.addEventListener("load", onLoad, { once: true });
|
|
19
|
+
return () => window.removeEventListener("load", onLoad);
|
|
20
|
+
});
|
|
21
|
+
//#endregion
|
|
22
|
+
export { pageLoaded$ as t };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=pageLoad-BZ7o8p5R.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageLoad-BZ7o8p5R.mjs","names":[],"sources":["../src/utils/pageLoad.ts"],"sourcesContent":["import { Observable } from \"rxjs\";\n\nexport const pageLoaded$ = new Observable<boolean>((subscriber) => {\n\tif (typeof document === \"undefined\") {\n\t\tsubscriber.next(false);\n\t\treturn;\n\t}\n\n\tif (document.readyState === \"complete\") {\n\t\tsubscriber.next(true);\n\t\tsubscriber.complete();\n\t\treturn;\n\t}\n\n\tsubscriber.next(false);\n\n\tconst onLoad = () => {\n\t\tsubscriber.next(true);\n\t\tsubscriber.complete();\n\t};\n\twindow.addEventListener(\"load\", onLoad, { once: true });\n\n\treturn () => window.removeEventListener(\"load\", onLoad);\n});\n"],"mappings":";;AAEA,MAAa,cAAc,IAAI,YAAqB,eAAe;CAClE,IAAI,OAAO,aAAa,aAAa;EACpC,WAAW,KAAK,KAAK;EACrB;CACD;CAEA,IAAI,SAAS,eAAe,YAAY;EACvC,WAAW,KAAK,IAAI;EACpB,WAAW,SAAS;EACpB;CACD;CAEA,WAAW,KAAK,KAAK;CAErB,MAAM,eAAe;EACpB,WAAW,KAAK,IAAI;EACpB,WAAW,SAAS;CACrB;CACA,OAAO,iBAAiB,QAAQ,QAAQ,EAAE,MAAM,KAAK,CAAC;CAEtD,aAAa,OAAO,oBAAoB,QAAQ,MAAM;AACvD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/utils/pageLoad.ts
|
|
2
|
+
const pageLoaded$ = new (require("rxjs")).Observable((subscriber) => {
|
|
3
|
+
if (typeof document === "undefined") {
|
|
4
|
+
subscriber.next(false);
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
if (document.readyState === "complete") {
|
|
8
|
+
subscriber.next(true);
|
|
9
|
+
subscriber.complete();
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
subscriber.next(false);
|
|
13
|
+
const onLoad = () => {
|
|
14
|
+
subscriber.next(true);
|
|
15
|
+
subscriber.complete();
|
|
16
|
+
};
|
|
17
|
+
window.addEventListener("load", onLoad, { once: true });
|
|
18
|
+
return () => window.removeEventListener("load", onLoad);
|
|
19
|
+
});
|
|
20
|
+
//#endregion
|
|
21
|
+
Object.defineProperty(exports, "pageLoaded$", {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function() {
|
|
24
|
+
return pageLoaded$;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=pageLoad-D1wLeuFG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageLoad-D1wLeuFG.js","names":["Observable"],"sources":["../src/utils/pageLoad.ts"],"sourcesContent":["import { Observable } from \"rxjs\";\n\nexport const pageLoaded$ = new Observable<boolean>((subscriber) => {\n\tif (typeof document === \"undefined\") {\n\t\tsubscriber.next(false);\n\t\treturn;\n\t}\n\n\tif (document.readyState === \"complete\") {\n\t\tsubscriber.next(true);\n\t\tsubscriber.complete();\n\t\treturn;\n\t}\n\n\tsubscriber.next(false);\n\n\tconst onLoad = () => {\n\t\tsubscriber.next(true);\n\t\tsubscriber.complete();\n\t};\n\twindow.addEventListener(\"load\", onLoad, { once: true });\n\n\treturn () => window.removeEventListener(\"load\", onLoad);\n});\n"],"mappings":";AAEA,MAAa,cAAc,mBAAIA,EAAAA,CAAAA,YAAqB,eAAe;CAClE,IAAI,OAAO,aAAa,aAAa;EACpC,WAAW,KAAK,KAAK;EACrB;CACD;CAEA,IAAI,SAAS,eAAe,YAAY;EACvC,WAAW,KAAK,IAAI;EACpB,WAAW,SAAS;EACpB;CACD;CAEA,WAAW,KAAK,KAAK;CAErB,MAAM,eAAe;EACpB,WAAW,KAAK,IAAI;EACpB,WAAW,SAAS;CACrB;CACA,OAAO,iBAAiB,QAAQ,QAAQ,EAAE,MAAM,KAAK,CAAC;CAEtD,aAAa,OAAO,oBAAoB,QAAQ,MAAM;AACvD,CAAC"}
|