@nexus-cross/connect-kit-react 1.3.0-beta.1 → 1.3.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/dist/chunk-ZL2BHNN6.js +143 -0
- package/dist/client.d.ts +46 -4
- package/dist/client.js +1 -3
- package/dist/index.d.ts +378 -28
- package/dist/index.js +1 -19
- package/package.json +11 -8
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/components/ConnectButton.d.ts +0 -102
- package/dist/components/ConnectButton.d.ts.map +0 -1
- package/dist/components/ConnectButton.js +0 -584
- package/dist/components/ConnectButton.js.map +0 -1
- package/dist/components/CrossConnectKitProvider.d.ts +0 -38
- package/dist/components/CrossConnectKitProvider.d.ts.map +0 -1
- package/dist/components/CrossConnectKitProvider.js +0 -790
- package/dist/components/CrossConnectKitProvider.js.map +0 -1
- package/dist/components/CrossConnectModal.d.ts +0 -20
- package/dist/components/CrossConnectModal.d.ts.map +0 -1
- package/dist/components/CrossConnectModal.js +0 -80
- package/dist/components/CrossConnectModal.js.map +0 -1
- package/dist/components/OtherWalletsModal.d.ts +0 -20
- package/dist/components/OtherWalletsModal.d.ts.map +0 -1
- package/dist/components/OtherWalletsModal.js +0 -300
- package/dist/components/OtherWalletsModal.js.map +0 -1
- package/dist/config/createConnectKitConfig.d.ts +0 -36
- package/dist/config/createConnectKitConfig.d.ts.map +0 -1
- package/dist/config/createConnectKitConfig.js +0 -80
- package/dist/config/createConnectKitConfig.js.map +0 -1
- package/dist/context/CrossConnectKitContext.d.ts +0 -100
- package/dist/context/CrossConnectKitContext.d.ts.map +0 -1
- package/dist/context/CrossConnectKitContext.js +0 -10
- package/dist/context/CrossConnectKitContext.js.map +0 -1
- package/dist/context/CrossConnectKitThemeContext.d.ts +0 -41
- package/dist/context/CrossConnectKitThemeContext.d.ts.map +0 -1
- package/dist/context/CrossConnectKitThemeContext.js +0 -22
- package/dist/context/CrossConnectKitThemeContext.js.map +0 -1
- package/dist/hooks/useCrossxEmbeddedInfo.d.ts +0 -41
- package/dist/hooks/useCrossxEmbeddedInfo.d.ts.map +0 -1
- package/dist/hooks/useCrossxEmbeddedInfo.js +0 -241
- package/dist/hooks/useCrossxEmbeddedInfo.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/runtime-log.d.ts +0 -2
- package/dist/runtime-log.d.ts.map +0 -1
- package/dist/runtime-log.js +0 -44
- package/dist/runtime-log.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -2
- package/dist/version.js.map +0 -1
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import type { CrossConnectKitConfig, OAuthPort, WalletId } from '@nexus-cross/connect-kit-core';
|
|
2
|
-
import type { ConnectorEntry, ConnectorRegistry } from '@nexus-cross/connect-kit-wagmi';
|
|
3
|
-
export interface CrossConnectKitContextValue {
|
|
4
|
-
kitConfig: CrossConnectKitConfig;
|
|
5
|
-
connectorRegistry: ConnectorRegistry;
|
|
6
|
-
/** Available wallets derived from the registry (excludes embedded) */
|
|
7
|
-
availableWallets: readonly ConnectorEntry[];
|
|
8
|
-
/** Connect by walletId — resolved through the registry */
|
|
9
|
-
connect: (walletId: WalletId) => Promise<void>;
|
|
10
|
-
/** Shortcut: trigger embedded wallet connect (SDK modal) */
|
|
11
|
-
connectWallet: () => Promise<void>;
|
|
12
|
-
/** Disconnect and clean up wagmi + SDK + cached session storage. */
|
|
13
|
-
disconnect: () => Promise<void>;
|
|
14
|
-
/** Open the SDK's wallet selector (embedded only) */
|
|
15
|
-
selectWallet: () => Promise<{
|
|
16
|
-
address: string;
|
|
17
|
-
index: number;
|
|
18
|
-
} | null>;
|
|
19
|
-
/** Currently active wallet type, resolved from registry */
|
|
20
|
-
currentWallet: WalletId | null;
|
|
21
|
-
/**
|
|
22
|
-
* The most recent wallet the user picked from the unified connect
|
|
23
|
-
* modal. Set by `runConnect` before the wagmi-side connect begins,
|
|
24
|
-
* cleared on dismissal/error so callers can detect that the user
|
|
25
|
-
* gave up on the wallet UI even when wagmi's `isConnecting` stays
|
|
26
|
-
* stuck on a pending connector promise (WalletConnect QR, OAuth
|
|
27
|
-
* popup). Reads of this should be paired with `isConnected` —
|
|
28
|
-
* `lastIntent && !isConnected` means "we asked for X but X hasn't
|
|
29
|
-
* succeeded yet", and a transition from non-null → null while
|
|
30
|
-
* disconnected is the kit's "user cancelled" signal.
|
|
31
|
-
*/
|
|
32
|
-
lastIntent: WalletId | null;
|
|
33
|
-
/**
|
|
34
|
-
* Unified "a connect attempt is in flight" flag spanning EVERY
|
|
35
|
-
* connection path — so "Connecting…" UI behaves identically regardless
|
|
36
|
-
* of which wallet the user picked. Unlike wagmi's
|
|
37
|
-
* `useAccount().isConnecting`, this also covers:
|
|
38
|
-
*
|
|
39
|
-
* - the reown direct-connect AppKit flow (`metamask` / `binance`),
|
|
40
|
-
* which resolves outside wagmi's `connectAsync` and therefore never
|
|
41
|
-
* flips wagmi's own `isConnecting`;
|
|
42
|
-
* - the embedded OAuth popup (`google` / `apple`), wired through
|
|
43
|
-
* `oauth.signIn` rather than the wagmi connect path.
|
|
44
|
-
*
|
|
45
|
-
* Set the instant the user picks a wallet in the modal; cleared on
|
|
46
|
-
* success (`isConnected`), cancel, or error. In-memory only — a stale
|
|
47
|
-
* persisted `lastIntent` from a previous page load never turns it on,
|
|
48
|
-
* and silent background reconnects (wagmi `isReconnecting`) don't either.
|
|
49
|
-
*/
|
|
50
|
-
isConnecting: boolean;
|
|
51
|
-
/**
|
|
52
|
-
* The `walletId` of the in-flight connect attempt, or `null` when idle.
|
|
53
|
-
* Same lifecycle as {@link isConnecting} — use it to drive a per-wallet
|
|
54
|
-
* spinner inside a custom connect modal.
|
|
55
|
-
*/
|
|
56
|
-
connectingWalletId: WalletId | null;
|
|
57
|
-
/** Open the "Other Wallets" modal */
|
|
58
|
-
openOtherWallets: () => void;
|
|
59
|
-
/** Close the "Other Wallets" modal */
|
|
60
|
-
closeOtherWallets: () => void;
|
|
61
|
-
/** Whether the "Other Wallets" modal is open */
|
|
62
|
-
otherWalletsOpen: boolean;
|
|
63
|
-
/**
|
|
64
|
-
* Headless OAuth entry point. Non-null only when the kit was created
|
|
65
|
-
* with an `embeddedConnectorFactory` (i.e. crossy-sdk is present).
|
|
66
|
-
* Used by `<CrossConnectModal>` to wire the Google/Apple buttons.
|
|
67
|
-
*/
|
|
68
|
-
oauth: OAuthPort | null;
|
|
69
|
-
/**
|
|
70
|
-
* Extra wallet click-handlers the DApp wants to render in the connect
|
|
71
|
-
* modal that have NO wagmi connector behind them (e.g. coming-soon
|
|
72
|
-
* placeholders or dapp-ui-only wallets like Verse8 / Tron). Keys are
|
|
73
|
-
* walletIds known to dapp-ui's `WALLET_REGISTRY`; values are click
|
|
74
|
-
* handlers (typically opening an alert or external page).
|
|
75
|
-
*/
|
|
76
|
-
extraWallets: Partial<Record<WalletId, () => void | Promise<void>>>;
|
|
77
|
-
/**
|
|
78
|
-
* Optional whitelist controlling which wallet ids appear in the
|
|
79
|
-
* connect modal's "Other Wallets" list.
|
|
80
|
-
*
|
|
81
|
-
* - `undefined` (default) — show every registered wallet
|
|
82
|
-
* - `[]` — show none (social row only)
|
|
83
|
-
* - `['cross_wallet', ...]` — show only the listed ids
|
|
84
|
-
*
|
|
85
|
-
* Applies to both wagmi-backed entries and `extraWallets`. The social
|
|
86
|
-
* row is independent of this — disable social by omitting
|
|
87
|
-
* `embeddedConnectorFactory` from `createCrossxConfig`.
|
|
88
|
-
*/
|
|
89
|
-
walletAllowlist: readonly WalletId[] | null;
|
|
90
|
-
/**
|
|
91
|
-
* On-ramp 활성화 여부 (= `!!kitConfig.onRampId`). 실제 어댑터/훅은
|
|
92
|
-
* `@nexus-cross/onramp/react`의 OnRampProvider/useOnRamp를 통해 노출 —
|
|
93
|
-
* 이 값은 단순히 connect-kit 호출자가 onRampId 설정 여부를 빠르게
|
|
94
|
-
* 알아볼 수 있게 한다.
|
|
95
|
-
*/
|
|
96
|
-
onRampEnabled: boolean;
|
|
97
|
-
}
|
|
98
|
-
export declare const CrossConnectKitContext: import("react").Context<CrossConnectKitContextValue | null>;
|
|
99
|
-
export declare function useCrossConnectKit(): CrossConnectKitContextValue;
|
|
100
|
-
//# sourceMappingURL=CrossConnectKitContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CrossConnectKitContext.d.ts","sourceRoot":"","sources":["../../src/context/CrossConnectKitContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,QAAQ,EACT,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExF,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,qBAAqB,CAAC;IACjC,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,sEAAsE;IACtE,gBAAgB,EAAE,SAAS,cAAc,EAAE,CAAC;IAE5C,0DAA0D;IAC1D,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,4DAA4D;IAC5D,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,oEAAoE;IACpE,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,qDAAqD;IACrD,YAAY,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAEvE,2DAA2D;IAC3D,aAAa,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE/B;;;;;;;;;;OAUG;IACH,UAAU,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE5B;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,kBAAkB,EAAE,QAAQ,GAAG,IAAI,CAAC;IACpC,qCAAqC;IACrC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,sCAAsC;IACtC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,gDAAgD;IAChD,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAExB;;;;;;OAMG;IACH,YAAY,EAAE,OAAO,CACnB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAC7C,CAAC;IAEF;;;;;;;;;;;OAWG;IACH,eAAe,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE5C;;;;;OAKG;IACH,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,sBAAsB,6DAA0D,CAAC;AAE9F,wBAAgB,kBAAkB,IAAI,2BAA2B,CAMhE"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createContext, useContext } from 'react';
|
|
2
|
-
export const CrossConnectKitContext = createContext(null);
|
|
3
|
-
export function useCrossConnectKit() {
|
|
4
|
-
const ctx = useContext(CrossConnectKitContext);
|
|
5
|
-
if (!ctx) {
|
|
6
|
-
throw new Error('useCrossConnectKit must be used within <CrossConnectKitProvider>');
|
|
7
|
-
}
|
|
8
|
-
return ctx;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=CrossConnectKitContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CrossConnectKitContext.js","sourceRoot":"","sources":["../../src/context/CrossConnectKitContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAiHlD,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAqC,IAAI,CAAC,CAAC;AAE9F,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { ThemeMode, ThemeTokens } from '@nexus-cross/connect-kit-core';
|
|
2
|
-
/**
|
|
3
|
-
* Resolved theme state exposed to consumers inside `<CrossConnectKitProvider>`.
|
|
4
|
-
* `mode` already accounts for `autoDetectTheme` and any runtime
|
|
5
|
-
* overrides via `setTheme`.
|
|
6
|
-
*/
|
|
7
|
-
export interface CrossConnectKitThemeContextValue {
|
|
8
|
-
/** Active theme mode (respects `autoDetectTheme` + runtime overrides). */
|
|
9
|
-
mode: ThemeMode;
|
|
10
|
-
/** Resolved token set passed to crossy-sdk + published as `--cck-*`. */
|
|
11
|
-
tokens: ThemeTokens | undefined;
|
|
12
|
-
/**
|
|
13
|
-
* Override the theme mode at runtime. Mirrors crossy-sdk's
|
|
14
|
-
* `sdk.applyTheme(mode)`.
|
|
15
|
-
*
|
|
16
|
-
* Passing `null` reverts to whatever the original `CrossConnectKitConfig`
|
|
17
|
-
* declared (including `autoDetectTheme`).
|
|
18
|
-
*/
|
|
19
|
-
setThemeMode: (mode: ThemeMode | null) => void;
|
|
20
|
-
/**
|
|
21
|
-
* Override color tokens at runtime. Passed straight through to
|
|
22
|
-
* crossy-sdk's `applyTheme(mode, themeTokens)` on the next render,
|
|
23
|
-
* and re-published as CSS variables so dapp-ui surfaces update too.
|
|
24
|
-
*
|
|
25
|
-
* Passing `null` reverts to `CrossConnectKitConfig.themeTokens`.
|
|
26
|
-
*/
|
|
27
|
-
setThemeTokens: (tokens: ThemeTokens | null) => void;
|
|
28
|
-
}
|
|
29
|
-
export declare const CrossConnectKitThemeContext: import("react").Context<CrossConnectKitThemeContextValue | null>;
|
|
30
|
-
/**
|
|
31
|
-
* Access the resolved theme and the runtime override setters. Must be
|
|
32
|
-
* called inside `<CrossConnectKitProvider>`.
|
|
33
|
-
*/
|
|
34
|
-
export declare function useCrossConnectKitTheme(): CrossConnectKitThemeContextValue;
|
|
35
|
-
/**
|
|
36
|
-
* Version that returns `null` when called outside the provider — handy
|
|
37
|
-
* for components (like `WalletInfo`) that want to opt into the kit's
|
|
38
|
-
* theme if mounted under the provider, but keep working standalone.
|
|
39
|
-
*/
|
|
40
|
-
export declare function useOptionalCrossConnectKitTheme(): CrossConnectKitThemeContextValue | null;
|
|
41
|
-
//# sourceMappingURL=CrossConnectKitThemeContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CrossConnectKitThemeContext.d.ts","sourceRoot":"","sources":["../../src/context/CrossConnectKitThemeContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC/C,0EAA0E;IAC1E,IAAI,EAAE,SAAS,CAAC;IAChB,wEAAwE;IACxE,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CACtD;AAED,eAAO,MAAM,2BAA2B,kEACsB,CAAC;AAE/D;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,gCAAgC,CAQ1E;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,gCAAgC,GAAG,IAAI,CAEzF"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { createContext, useContext } from 'react';
|
|
2
|
-
export const CrossConnectKitThemeContext = createContext(null);
|
|
3
|
-
/**
|
|
4
|
-
* Access the resolved theme and the runtime override setters. Must be
|
|
5
|
-
* called inside `<CrossConnectKitProvider>`.
|
|
6
|
-
*/
|
|
7
|
-
export function useCrossConnectKitTheme() {
|
|
8
|
-
const ctx = useContext(CrossConnectKitThemeContext);
|
|
9
|
-
if (!ctx) {
|
|
10
|
-
throw new Error('useCrossConnectKitTheme must be used within <CrossConnectKitProvider>');
|
|
11
|
-
}
|
|
12
|
-
return ctx;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Version that returns `null` when called outside the provider — handy
|
|
16
|
-
* for components (like `WalletInfo`) that want to opt into the kit's
|
|
17
|
-
* theme if mounted under the provider, but keep working standalone.
|
|
18
|
-
*/
|
|
19
|
-
export function useOptionalCrossConnectKitTheme() {
|
|
20
|
-
return useContext(CrossConnectKitThemeContext);
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=CrossConnectKitThemeContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CrossConnectKitThemeContext.js","sourceRoot":"","sources":["../../src/context/CrossConnectKitThemeContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA+BlD,MAAM,CAAC,MAAM,2BAA2B,GACtC,aAAa,CAA0C,IAAI,CAAC,CAAC;AAE/D;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO,UAAU,CAAC,2BAA2B,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { Connector } from 'wagmi';
|
|
2
|
-
export interface CrossxEmbeddedInfo {
|
|
3
|
-
/** crossy-sdk OAuth 로그인 타입. embedded가 아니면 `null`. */
|
|
4
|
-
loginType: 'google' | 'apple' | null;
|
|
5
|
-
/** SDK `getAddresses()`가 리턴한 현재 주소의 `name` 필드(계정 라벨). */
|
|
6
|
-
accountName: string | null;
|
|
7
|
-
/** SDK `getAddresses()`가 리턴한 전체 계정 목록. embedded가 아니면 빈 배열. */
|
|
8
|
-
accounts: Array<{
|
|
9
|
-
address: `0x${string}`;
|
|
10
|
-
index?: number;
|
|
11
|
-
name?: string;
|
|
12
|
-
}>;
|
|
13
|
-
/**
|
|
14
|
-
* SDK 조회가 완료됐는지 여부. embedded 세션에서 처음 마운트됐을 때
|
|
15
|
-
* `loginType`은 잠시 `null`이고 다음 틱에 `google`/`apple`로 바뀌는데,
|
|
16
|
-
* 이 플래그로 "아직 해석 중" vs "해석 완료(OAuth 아님)"을 구분한다.
|
|
17
|
-
* embedded가 아닌 wallet은 즉시 `true`.
|
|
18
|
-
*/
|
|
19
|
-
isResolved: boolean;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* crossy-sdk 2.0 세션 메타데이터(`getUserInfo().loginType`,
|
|
23
|
-
* `getAddresses()[].name`)를 비동기로 읽어오는 훅.
|
|
24
|
-
*
|
|
25
|
-
* - `walletId`가 `"cross_embedded"`가 아니면 항상
|
|
26
|
-
* `{ loginType: null, accountName: null, accounts: [], isResolved: true }`.
|
|
27
|
-
* - 내부 호출은 연결된 Provider가 `sdk` 필드를 노출하는 crossy-sdk 스펙을
|
|
28
|
-
* 가정하며, 필드가 없거나 에러가 나면 조용히 nulls로 떨어진다.
|
|
29
|
-
* - RN native bridge가 walletChanged 이벤트로 보내주는 walletName(예: imported
|
|
30
|
-
* wallet의 사용자 라벨)도 함께 구독해, SDK 서버 캐시 `name`보다 우선
|
|
31
|
-
* accountName으로 사용한다.
|
|
32
|
-
*
|
|
33
|
-
* 인자 없이 호출하면 `useAccount()` / `useCrossConnectKit()`에서 값을 자동으로
|
|
34
|
-
* 받아오고, 명시적으로 제어하고 싶으면 오버라이드 값을 넘길 수 있다.
|
|
35
|
-
*/
|
|
36
|
-
export declare function useCrossxEmbeddedInfo(args?: {
|
|
37
|
-
walletId?: string | null;
|
|
38
|
-
connector?: Connector;
|
|
39
|
-
address?: string;
|
|
40
|
-
}): CrossxEmbeddedInfo;
|
|
41
|
-
//# sourceMappingURL=useCrossxEmbeddedInfo.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCrossxEmbeddedInfo.d.ts","sourceRoot":"","sources":["../../src/hooks/useCrossxEmbeddedInfo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,SAAS,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;IACrC,yDAAyD;IACzD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE;IAC3C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,kBAAkB,CAgRrB"}
|
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef, useState } from 'react';
|
|
2
|
-
import { useAccount } from 'wagmi';
|
|
3
|
-
import { useCrossConnectKit } from '../context/CrossConnectKitContext.js';
|
|
4
|
-
/**
|
|
5
|
-
* crossy-sdk 2.0 세션 메타데이터(`getUserInfo().loginType`,
|
|
6
|
-
* `getAddresses()[].name`)를 비동기로 읽어오는 훅.
|
|
7
|
-
*
|
|
8
|
-
* - `walletId`가 `"cross_embedded"`가 아니면 항상
|
|
9
|
-
* `{ loginType: null, accountName: null, accounts: [], isResolved: true }`.
|
|
10
|
-
* - 내부 호출은 연결된 Provider가 `sdk` 필드를 노출하는 crossy-sdk 스펙을
|
|
11
|
-
* 가정하며, 필드가 없거나 에러가 나면 조용히 nulls로 떨어진다.
|
|
12
|
-
* - RN native bridge가 walletChanged 이벤트로 보내주는 walletName(예: imported
|
|
13
|
-
* wallet의 사용자 라벨)도 함께 구독해, SDK 서버 캐시 `name`보다 우선
|
|
14
|
-
* accountName으로 사용한다.
|
|
15
|
-
*
|
|
16
|
-
* 인자 없이 호출하면 `useAccount()` / `useCrossConnectKit()`에서 값을 자동으로
|
|
17
|
-
* 받아오고, 명시적으로 제어하고 싶으면 오버라이드 값을 넘길 수 있다.
|
|
18
|
-
*/
|
|
19
|
-
export function useCrossxEmbeddedInfo(args) {
|
|
20
|
-
const { address: autoAddress, connector: autoConnector } = useAccount();
|
|
21
|
-
const { currentWallet: autoWalletId } = useCrossConnectKit();
|
|
22
|
-
const walletId = args?.walletId !== undefined ? args.walletId : autoWalletId;
|
|
23
|
-
const connector = args?.connector !== undefined ? args.connector : autoConnector;
|
|
24
|
-
const address = args?.address !== undefined ? args.address : autoAddress;
|
|
25
|
-
const [info, setInfo] = useState({
|
|
26
|
-
loginType: null,
|
|
27
|
-
accountName: null,
|
|
28
|
-
accounts: [],
|
|
29
|
-
isResolved: false,
|
|
30
|
-
});
|
|
31
|
-
// RN native bridge가 walletChanged 이벤트로 넘겨주는 wallet 라벨을 주소별로
|
|
32
|
-
// 캐시한다. SDK `getAddresses()` 서버 캐시에는 이 라벨이 들어있지 않으므로
|
|
33
|
-
// `addressChanged` 이벤트를 별도 구독해 보관한 뒤 accountName 해석 시 우선
|
|
34
|
-
// 사용한다.
|
|
35
|
-
const bridgeWalletNameRef = useRef(new Map());
|
|
36
|
-
const [bridgeVersion, setBridgeVersion] = useState(0);
|
|
37
|
-
useEffect(() => {
|
|
38
|
-
let cancelled = false;
|
|
39
|
-
if (walletId !== 'cross_embedded') {
|
|
40
|
-
setInfo({
|
|
41
|
-
loginType: null,
|
|
42
|
-
accountName: null,
|
|
43
|
-
accounts: [],
|
|
44
|
-
isResolved: true,
|
|
45
|
-
});
|
|
46
|
-
return () => {
|
|
47
|
-
cancelled = true;
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
// embedded인데 wagmi 커넥터가 아직 준비되지 않은 시점(페이지 리로드 직후
|
|
51
|
-
// auto-reconnect 중). 이 때 resolved=true로 단락하면 loginType 없이 CROSSx로
|
|
52
|
-
// 폴백 → 이후 Google로 교체되는 플래시가 생긴다. 커넥터가 나타날 때까지
|
|
53
|
-
// pending 상태를 유지한다.
|
|
54
|
-
if (!connector) {
|
|
55
|
-
setInfo({
|
|
56
|
-
loginType: null,
|
|
57
|
-
accountName: null,
|
|
58
|
-
accounts: [],
|
|
59
|
-
isResolved: false,
|
|
60
|
-
});
|
|
61
|
-
return () => {
|
|
62
|
-
cancelled = true;
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
// embedded 세션 + connector 준비됨: 매 의존성 변경마다 "해석 중"으로 리셋
|
|
66
|
-
// 후 비동기 조회.
|
|
67
|
-
setInfo((prev) => ({ ...prev, isResolved: false }));
|
|
68
|
-
// 페이지 리로드 직후 `useAccount().connector`는 wagmi의 직렬화된 껍데기
|
|
69
|
-
// 상태라 `connector.getProvider`가 아직 함수가 아니다. 또 getProvider가
|
|
70
|
-
// 붙어서 호출해도 SDK 내부 세션 복원이 끝나기 전엔 `sdk.getUserInfo()`가
|
|
71
|
-
// `null`을 돌려준다. 두 단계 모두 retryable로 취급해 loginType이
|
|
72
|
-
// google/apple로 나올 때까지 짧게 폴링한다.
|
|
73
|
-
const MAX_ATTEMPTS = 20;
|
|
74
|
-
const INTERVAL_MS = 300;
|
|
75
|
-
const attemptFetch = async () => {
|
|
76
|
-
if (typeof connector.getProvider !== 'function')
|
|
77
|
-
return 'retry';
|
|
78
|
-
let provider;
|
|
79
|
-
try {
|
|
80
|
-
provider = (await connector.getProvider());
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
return 'retry';
|
|
84
|
-
}
|
|
85
|
-
const sdk = provider?.sdk;
|
|
86
|
-
if (!sdk)
|
|
87
|
-
return 'giveup';
|
|
88
|
-
// SDK 가 addressChanged 를 우리 hook 구독보다 먼저 emit 한 경우, RN bridge
|
|
89
|
-
// 라벨을 놓칠 수 있다. SDK 가 노출하는 동기 getter 가 있으면 그것으로 cache 를
|
|
90
|
-
// seed 해서 race 를 메운다. (이벤트 기반 path 와 둘 다 살아있어 idempotent.)
|
|
91
|
-
try {
|
|
92
|
-
const bridgeActive = sdk.getRNBridgeActiveWallet?.();
|
|
93
|
-
const seedName = bridgeActive?.walletName?.trim();
|
|
94
|
-
if (bridgeActive && seedName) {
|
|
95
|
-
bridgeWalletNameRef.current.set(bridgeActive.address.toLowerCase(), seedName);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
/* getter 가 없거나 throw 해도 무시 — 이벤트 path 가 살아있음 */
|
|
100
|
-
}
|
|
101
|
-
const [userInfo, addresses] = await Promise.all([
|
|
102
|
-
sdk.getUserInfo?.().catch(() => null) ?? null,
|
|
103
|
-
sdk.getAddresses?.().catch(() => null) ?? null,
|
|
104
|
-
]);
|
|
105
|
-
if (cancelled)
|
|
106
|
-
return 'done';
|
|
107
|
-
const loginTypeRaw = userInfo?.loginType;
|
|
108
|
-
const loginType = loginTypeRaw === 'google' || loginTypeRaw === 'apple'
|
|
109
|
-
? loginTypeRaw
|
|
110
|
-
: null;
|
|
111
|
-
if (!loginType)
|
|
112
|
-
return 'retry';
|
|
113
|
-
const normalized = address?.toLowerCase();
|
|
114
|
-
const match = normalized && Array.isArray(addresses)
|
|
115
|
-
? addresses.find((e) => e.address.toLowerCase() === normalized)
|
|
116
|
-
: null;
|
|
117
|
-
const mappedAccounts = Array.isArray(addresses)
|
|
118
|
-
? addresses
|
|
119
|
-
.filter((entry) => /^0x[a-fA-F0-9]{40}$/.test(entry.address))
|
|
120
|
-
.map((entry) => ({
|
|
121
|
-
address: entry.address.toLowerCase(),
|
|
122
|
-
...(Number.isFinite(entry.index) ? { index: entry.index } : {}),
|
|
123
|
-
...(entry.name?.trim() ? { name: entry.name.trim() } : {}),
|
|
124
|
-
}))
|
|
125
|
-
: [];
|
|
126
|
-
// RN bridge가 walletChanged 이벤트로 보내준 라벨이 있으면 서버 캐시
|
|
127
|
-
// `name`보다 우선 사용한다 — bridge 경로가 항상 최신 사용자 의도다.
|
|
128
|
-
const bridgeName = normalized
|
|
129
|
-
? bridgeWalletNameRef.current.get(normalized)?.trim()
|
|
130
|
-
: undefined;
|
|
131
|
-
// 현재 active address(`useAccount`)가 SDK `getAddresses()` 목록에 없는
|
|
132
|
-
// 경우 — 예: RN bridge가 외부 imported wallet으로 active wallet을 바꿔서
|
|
133
|
-
// SDK 서버 캐시에 아직 없는 주소가 들어온 상황 — match가 null이라도
|
|
134
|
-
// accountName이 null로 빠지지 않게 폴백을 적용하고, accounts 목록에도
|
|
135
|
-
// raw address를 합성 엔트리로 추가해 SendPage 등 다른 소비자가 이 주소를
|
|
136
|
-
// 인식할 수 있게 한다.
|
|
137
|
-
const accounts = !match &&
|
|
138
|
-
normalized &&
|
|
139
|
-
/^0x[a-fA-F0-9]{40}$/.test(normalized)
|
|
140
|
-
? [
|
|
141
|
-
...mappedAccounts,
|
|
142
|
-
{
|
|
143
|
-
address: normalized,
|
|
144
|
-
index: mappedAccounts.length,
|
|
145
|
-
...(bridgeName ? { name: bridgeName } : {}),
|
|
146
|
-
},
|
|
147
|
-
]
|
|
148
|
-
: mappedAccounts;
|
|
149
|
-
// SDK는 사용자가 라벨을 지정한 경우에만 `name`을 채워준다. 비어 있을 때
|
|
150
|
-
// dapp-ui 기본값("Account 1")로 떨어지면 실제 Account 1 / 다른 계정과 시각적
|
|
151
|
-
// 으로 구분이 안 된다. 우선순위:
|
|
152
|
-
// 1. RN bridge 가 보낸 walletName (imported wallet 라벨)
|
|
153
|
-
// 2. 서버 캐시의 `name` (사용자가 지정한 라벨)
|
|
154
|
-
// 3. 서버 캐시 매치된 인덱스 기반 "Account N" — 진짜 N번째 계정인 게
|
|
155
|
-
// 확인된 경우만
|
|
156
|
-
// 4. 매치가 없는 외부 주소(예: RN bridge active wallet 이 SDK 서버
|
|
157
|
-
// 캐시에 없는 imported wallet) → 주소를 단축해서 표시. "Account 1"
|
|
158
|
-
// 로 떨어뜨리면 실제 Account 1 과 충돌하므로 금지.
|
|
159
|
-
const trimmedName = bridgeName || match?.name?.trim();
|
|
160
|
-
const accountName = trimmedName ||
|
|
161
|
-
(typeof match?.index === 'number'
|
|
162
|
-
? `Account ${match.index + 1}`
|
|
163
|
-
: address
|
|
164
|
-
? `${address.slice(0, 6)}…${address.slice(-4)}`
|
|
165
|
-
: null);
|
|
166
|
-
setInfo({ loginType, accountName, accounts, isResolved: true });
|
|
167
|
-
return 'done';
|
|
168
|
-
};
|
|
169
|
-
void (async () => {
|
|
170
|
-
for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
|
|
171
|
-
if (cancelled)
|
|
172
|
-
return;
|
|
173
|
-
const status = await attemptFetch();
|
|
174
|
-
if (status === 'done')
|
|
175
|
-
return;
|
|
176
|
-
if (status === 'giveup') {
|
|
177
|
-
if (!cancelled)
|
|
178
|
-
setInfo({
|
|
179
|
-
loginType: null,
|
|
180
|
-
accountName: null,
|
|
181
|
-
accounts: [],
|
|
182
|
-
isResolved: true,
|
|
183
|
-
});
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
await new Promise((resolve) => setTimeout(resolve, INTERVAL_MS));
|
|
187
|
-
}
|
|
188
|
-
// 타임아웃: 재시도 한도를 넘어서도 loginType이 안 나오면 CROSSx 폴백.
|
|
189
|
-
if (!cancelled)
|
|
190
|
-
setInfo({
|
|
191
|
-
loginType: null,
|
|
192
|
-
accountName: null,
|
|
193
|
-
accounts: [],
|
|
194
|
-
isResolved: true,
|
|
195
|
-
});
|
|
196
|
-
})();
|
|
197
|
-
return () => {
|
|
198
|
-
cancelled = true;
|
|
199
|
-
};
|
|
200
|
-
}, [walletId, connector, address, bridgeVersion]);
|
|
201
|
-
// SDK `addressChanged` 이벤트를 구독해 RN bridge로 들어오는 walletName을
|
|
202
|
-
// 주소별 캐시에 보관한다. 이 effect는 sdk 인스턴스(=connector) 단위로 한 번만
|
|
203
|
-
// 구독을 유지하므로 address 변경에는 의존하지 않는다.
|
|
204
|
-
useEffect(() => {
|
|
205
|
-
if (walletId !== 'cross_embedded' || !connector)
|
|
206
|
-
return;
|
|
207
|
-
if (typeof connector.getProvider !== 'function')
|
|
208
|
-
return;
|
|
209
|
-
let cancelled = false;
|
|
210
|
-
let unsubscribe;
|
|
211
|
-
void (async () => {
|
|
212
|
-
let provider;
|
|
213
|
-
try {
|
|
214
|
-
provider = (await connector.getProvider());
|
|
215
|
-
}
|
|
216
|
-
catch {
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
if (cancelled)
|
|
220
|
-
return;
|
|
221
|
-
const sdk = provider?.sdk;
|
|
222
|
-
if (!sdk?.on)
|
|
223
|
-
return;
|
|
224
|
-
unsubscribe = sdk.on('addressChanged', ({ address: addr, walletName }) => {
|
|
225
|
-
const name = walletName?.trim();
|
|
226
|
-
if (!name)
|
|
227
|
-
return;
|
|
228
|
-
bridgeWalletNameRef.current.set(addr.toLowerCase(), name);
|
|
229
|
-
// 메인 resolution effect를 재실행시켜 새 walletName이 accountName에
|
|
230
|
-
// 반영되도록 한다.
|
|
231
|
-
setBridgeVersion((v) => v + 1);
|
|
232
|
-
});
|
|
233
|
-
})();
|
|
234
|
-
return () => {
|
|
235
|
-
cancelled = true;
|
|
236
|
-
unsubscribe?.();
|
|
237
|
-
};
|
|
238
|
-
}, [walletId, connector]);
|
|
239
|
-
return info;
|
|
240
|
-
}
|
|
241
|
-
//# sourceMappingURL=useCrossxEmbeddedInfo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCrossxEmbeddedInfo.js","sourceRoot":"","sources":["../../src/hooks/useCrossxEmbeddedInfo.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,YAAY,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,cAAc,GACf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAEvF,OAAO,EACL,uBAAuB,EACvB,+BAA+B,GAChC,MAAM,0CAA0C,CAAC;AAClD,YAAY,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAEjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAK3E,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAO9B,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,YAAY,EACV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,KAAK,EACL,SAAS,EACT,cAAc,EACd,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,YAAY,EACV,cAAc,EACd,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,uBAAuB,EAAE,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAGlF,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAO9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE,OAAO,EACL,uBAAuB,EACvB,+BAA+B,GAChC,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,wDAAwD;AACxD,6DAA6D;AAC7D,mEAAmE;AACnE,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,cAAc,GACf,MAAM,2BAA2B,CAAC;AASnC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAU/D,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAW9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAoCpD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAO5D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/runtime-log.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-log.d.ts","sourceRoot":"","sources":["../src/runtime-log.ts"],"names":[],"mappings":"AAmDA,wBAAgB,uBAAuB,IAAI,IAAI,CAO9C"}
|
package/dist/runtime-log.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { CONNECT_KIT_REACT_VERSION } from './version.js';
|
|
2
|
-
const GLOBAL_KEY = '__nexusCrossAppLauncherRuntime';
|
|
3
|
-
function getState() {
|
|
4
|
-
if (typeof window === 'undefined')
|
|
5
|
-
return null;
|
|
6
|
-
const global = window;
|
|
7
|
-
global[GLOBAL_KEY] ?? (global[GLOBAL_KEY] = { mode: 'dapp-ui' });
|
|
8
|
-
return global[GLOBAL_KEY];
|
|
9
|
-
}
|
|
10
|
-
function scheduleFlush(state) {
|
|
11
|
-
if (state.scheduled)
|
|
12
|
-
return;
|
|
13
|
-
state.scheduled = true;
|
|
14
|
-
const flush = () => {
|
|
15
|
-
state.scheduled = false;
|
|
16
|
-
if (state.loggedMode === state.mode)
|
|
17
|
-
return;
|
|
18
|
-
if (state.mode === 'connect-kit-react') {
|
|
19
|
-
const kitVersion = state.connectKitVersion ?? CONNECT_KIT_REACT_VERSION;
|
|
20
|
-
console.info(`[CROSSx App Launcher] connect-kit-react v${kitVersion} 초기화 완료 ` +
|
|
21
|
-
`(dapp-ui v${CONNECT_KIT_REACT_VERSION}, 사용 모드: connect-kit)`);
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
console.info(`[CROSSx App Launcher] dapp-ui v${CONNECT_KIT_REACT_VERSION} 초기화 완료 ` +
|
|
25
|
-
`(사용 모드: dapp-ui only)`);
|
|
26
|
-
}
|
|
27
|
-
state.loggedMode = state.mode;
|
|
28
|
-
};
|
|
29
|
-
if (typeof queueMicrotask === 'function') {
|
|
30
|
-
queueMicrotask(flush);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
Promise.resolve().then(flush);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export function announceConnectKitUsage() {
|
|
37
|
-
const state = getState();
|
|
38
|
-
if (!state)
|
|
39
|
-
return;
|
|
40
|
-
state.mode = 'connect-kit-react';
|
|
41
|
-
state.connectKitVersion = CONNECT_KIT_REACT_VERSION;
|
|
42
|
-
scheduleFlush(state);
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=runtime-log.js.map
|
package/dist/runtime-log.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-log.js","sourceRoot":"","sources":["../src/runtime-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AASzD,MAAM,UAAU,GAAG,gCAAgC,CAAC;AAEpD,SAAS,QAAQ;IACf,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,MAAM,GAAG,MAEd,CAAC;IACF,MAAM,CAAC,UAAU,MAAjB,MAAM,CAAC,UAAU,IAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAC;IAC3C,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB;IAC3C,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO;IAC5B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IAEvB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QACxB,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI;YAAE,OAAO;QAE5C,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,IAAI,yBAAyB,CAAC;YACxE,OAAO,CAAC,IAAI,CACV,4CAA4C,UAAU,UAAU;gBAC9D,aAAa,yBAAyB,uBAAuB,CAChE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,kCAAkC,yBAAyB,UAAU;gBACnE,uBAAuB,CAC1B,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;IAChC,CAAC,CAAC;IAEF,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;QACzC,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,KAAK,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,KAAK,CAAC,iBAAiB,GAAG,yBAAyB,CAAC;IACpD,aAAa,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
package/dist/version.d.ts
DELETED
package/dist/version.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,UAAU,CAAC"}
|
package/dist/version.js
DELETED
package/dist/version.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC"}
|