@arcblock/did-connect-react 3.5.2 → 4.0.0-beta.2
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/ConnectContext.d.ts +13 -0
- package/dist/ConnectContext.d.ts.map +1 -0
- package/dist/ConnectContext.js +14 -0
- package/dist/ConnectContext.js.map +1 -0
- package/dist/ConnectProvider.d.ts +11 -0
- package/dist/ConnectProvider.d.ts.map +1 -0
- package/dist/ConnectProvider.js +23 -0
- package/dist/ConnectProvider.js.map +1 -0
- package/dist/compat/SessionProvider.d.ts +22 -0
- package/dist/compat/SessionProvider.d.ts.map +1 -0
- package/dist/compat/SessionProvider.js +17 -0
- package/dist/compat/SessionProvider.js.map +1 -0
- package/dist/compat/index.d.ts +4 -0
- package/dist/compat/index.d.ts.map +1 -0
- package/dist/compat/index.js +3 -0
- package/dist/compat/index.js.map +1 -0
- package/dist/compat/useSessionContext.d.ts +14 -0
- package/dist/compat/useSessionContext.d.ts.map +1 -0
- package/dist/compat/useSessionContext.js +20 -0
- package/dist/compat/useSessionContext.js.map +1 -0
- package/dist/components/LoginPage.d.ts +15 -0
- package/dist/components/LoginPage.d.ts.map +1 -0
- package/dist/components/LoginPage.js +33 -0
- package/dist/components/LoginPage.js.map +1 -0
- package/dist/components/UserAvatar.d.ts +19 -0
- package/dist/components/UserAvatar.d.ts.map +1 -0
- package/dist/components/UserAvatar.js +45 -0
- package/dist/components/UserAvatar.js.map +1 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useConnect.d.ts +15 -0
- package/dist/hooks/useConnect.d.ts.map +1 -0
- package/dist/hooks/useConnect.js +19 -0
- package/dist/hooks/useConnect.js.map +1 -0
- package/dist/hooks/useEmail.d.ts +11 -0
- package/dist/hooks/useEmail.d.ts.map +1 -0
- package/dist/hooks/useEmail.js +47 -0
- package/dist/hooks/useEmail.js.map +1 -0
- package/dist/hooks/useOAuth.d.ts +12 -0
- package/dist/hooks/useOAuth.d.ts.map +1 -0
- package/dist/hooks/useOAuth.js +75 -0
- package/dist/hooks/useOAuth.js.map +1 -0
- package/dist/hooks/usePasskey.d.ts +14 -0
- package/dist/hooks/usePasskey.d.ts.map +1 -0
- package/dist/hooks/usePasskey.js +35 -0
- package/dist/hooks/usePasskey.js.map +1 -0
- package/dist/hooks/useSession.d.ts +12 -0
- package/dist/hooks/useSession.d.ts.map +1 -0
- package/dist/hooks/useSession.js +30 -0
- package/dist/hooks/useSession.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/internals/blocklet-config.d.ts +22 -0
- package/dist/internals/blocklet-config.d.ts.map +1 -0
- package/dist/internals/blocklet-config.js +26 -0
- package/dist/internals/blocklet-config.js.map +1 -0
- package/dist/internals/local-storage-adapter.d.ts +12 -0
- package/dist/internals/local-storage-adapter.d.ts.map +1 -0
- package/dist/internals/local-storage-adapter.js +32 -0
- package/dist/internals/local-storage-adapter.js.map +1 -0
- package/dist/internals/use-sync-state.d.ts +18 -0
- package/dist/internals/use-sync-state.d.ts.map +1 -0
- package/dist/internals/use-sync-state.js +38 -0
- package/dist/internals/use-sync-state.js.map +1 -0
- package/package.json +33 -79
- package/LICENSE +0 -13
- package/README.md +0 -134
- package/dist/standalone/did-connect-react.css +0 -1
- package/dist/standalone/index.js +0 -136774
- package/lib/Address/index.js +0 -4
- package/lib/Avatar/index.js +0 -4
- package/lib/Button/index.js +0 -17
- package/lib/Connect/assets/locale.js +0 -147
- package/lib/Connect/assets/login-bg.png +0 -0
- package/lib/Connect/assets/login-slogan.js +0 -9
- package/lib/Connect/components/action-button.js +0 -26
- package/lib/Connect/components/app-tips.js +0 -132
- package/lib/Connect/components/auto-height.js +0 -31
- package/lib/Connect/components/back-button.js +0 -25
- package/lib/Connect/components/connect-status.js +0 -263
- package/lib/Connect/components/did-connect-title.js +0 -127
- package/lib/Connect/components/download-tips.js +0 -52
- package/lib/Connect/components/loading.js +0 -26
- package/lib/Connect/components/login-item/connect-choose-list.js +0 -257
- package/lib/Connect/components/login-item/connect-provider-list.js +0 -345
- package/lib/Connect/components/login-item/login-method-item.js +0 -147
- package/lib/Connect/components/login-item/mobile-login-item.js +0 -116
- package/lib/Connect/components/login-item/passkey-login-item.js +0 -44
- package/lib/Connect/components/login-item/wallet-login-options.js +0 -114
- package/lib/Connect/components/login-item/web-login-item.js +0 -104
- package/lib/Connect/components/mask-overlay.js +0 -34
- package/lib/Connect/components/refresh-overlay.js +0 -57
- package/lib/Connect/components/switch-app.js +0 -70
- package/lib/Connect/connect.js +0 -505
- package/lib/Connect/contexts/state.js +0 -156
- package/lib/Connect/fallback-connect.js +0 -53
- package/lib/Connect/fullpage.js +0 -5
- package/lib/Connect/hooks/auth-url.js +0 -23
- package/lib/Connect/hooks/method-list.js +0 -46
- package/lib/Connect/hooks/page-show.js +0 -17
- package/lib/Connect/hooks/provider-list.js +0 -69
- package/lib/Connect/hooks/security.js +0 -27
- package/lib/Connect/hooks/token.js +0 -296
- package/lib/Connect/hooks/use-apps.js +0 -19
- package/lib/Connect/hooks/use-quick-connect.js +0 -86
- package/lib/Connect/index.js +0 -16
- package/lib/Connect/landing-page.js +0 -5
- package/lib/Connect/plugins/email/index.js +0 -65
- package/lib/Connect/plugins/email/list-item.js +0 -31
- package/lib/Connect/plugins/email/placeholder.js +0 -284
- package/lib/Connect/plugins/index.js +0 -4
- package/lib/Connect/use-connect.js +0 -164
- package/lib/Connect/with-blocklet.js +0 -15
- package/lib/Connect/with-bridge-call.js +0 -108
- package/lib/Federated/context.js +0 -61
- package/lib/Federated/index.js +0 -7
- package/lib/Logo/index.js +0 -4
- package/lib/OAuth/bind-conflict-alert.js +0 -29
- package/lib/OAuth/context.js +0 -277
- package/lib/OAuth/guest.svg.js +0 -5
- package/lib/OAuth/index.js +0 -7
- package/lib/OAuth/passport-switcher.js +0 -5
- package/lib/Passkey/actions.js +0 -170
- package/lib/Passkey/constants.js +0 -4
- package/lib/Passkey/context.js +0 -281
- package/lib/Passkey/dialog.js +0 -280
- package/lib/Passkey/icon.js +0 -13
- package/lib/Passkey/index.js +0 -9
- package/lib/Service/index.js +0 -62
- package/lib/Session/assets/did-spaces-guide-cover.svg.js +0 -111
- package/lib/Session/assets/did-spaces-guide-icon.svg.js +0 -9
- package/lib/Session/context.js +0 -5
- package/lib/Session/did-spaces-guide.js +0 -136
- package/lib/Session/handler.js +0 -55
- package/lib/Session/hooks/use-federated.js +0 -64
- package/lib/Session/hooks/use-mobile.js +0 -8
- package/lib/Session/hooks/use-protected-routes.js +0 -11
- package/lib/Session/hooks/use-session-token.js +0 -181
- package/lib/Session/hooks/use-verify.js +0 -45
- package/lib/Session/index.js +0 -941
- package/lib/Session/libs/constants.js +0 -18
- package/lib/Session/libs/did-spaces.js +0 -10
- package/lib/Session/libs/federated.js +0 -42
- package/lib/Session/libs/index.js +0 -15
- package/lib/Session/libs/locales.js +0 -161
- package/lib/Session/libs/login-mobile.js +0 -55
- package/lib/Session/window-focus-aware.js +0 -17
- package/lib/SessionManager/index.js +0 -4
- package/lib/Storage/engine/cookie.js +0 -22
- package/lib/Storage/engine/local-storage.js +0 -37
- package/lib/Storage/index.js +0 -23
- package/lib/User/index.js +0 -6
- package/lib/User/use-did.js +0 -59
- package/lib/User/wrap-did.js +0 -13
- package/lib/WebWalletSWKeeper/index.js +0 -5
- package/lib/components/PassportSwitcher.js +0 -128
- package/lib/constant.js +0 -23
- package/lib/error.js +0 -8
- package/lib/hooks/use-locale.js +0 -7
- package/lib/index.js +0 -111
- package/lib/locales/en.js +0 -17
- package/lib/locales/index.js +0 -10
- package/lib/locales/zh.js +0 -17
- package/lib/node_modules/@blocklet/js-sdk/dist/index.js +0 -512
- package/lib/packages/did-connect/package.json.js +0 -7
- package/lib/types.d.ts +0 -355
- package/lib/utils.js +0 -225
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useCallback, useState } from 'react';
|
|
2
|
+
import { useConnectContext } from '../ConnectContext.js';
|
|
3
|
+
export function usePasskey() {
|
|
4
|
+
const { config } = useConnectContext();
|
|
5
|
+
const [loading, setLoading] = useState(false);
|
|
6
|
+
const [error, setError] = useState(null);
|
|
7
|
+
const runAuth = useCallback(async (options) => {
|
|
8
|
+
setLoading(true);
|
|
9
|
+
setError(null);
|
|
10
|
+
try {
|
|
11
|
+
const { runPasskeyAuth } = await import('@arcblock/did-connect-core/ui');
|
|
12
|
+
const prefix = `${config.servicePrefix ?? '/.well-known/service'}/api/passkey`;
|
|
13
|
+
const result = await runPasskeyAuth({
|
|
14
|
+
prefix,
|
|
15
|
+
authOnly: options.authOnly,
|
|
16
|
+
registerOnly: options.registerOnly,
|
|
17
|
+
name: options.name,
|
|
18
|
+
onStatus: () => { },
|
|
19
|
+
});
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
const msg = err?.message ?? 'Passkey operation failed';
|
|
24
|
+
setError(msg);
|
|
25
|
+
throw err;
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
setLoading(false);
|
|
29
|
+
}
|
|
30
|
+
}, [config.servicePrefix]);
|
|
31
|
+
const authenticate = useCallback(() => runAuth({ authOnly: true }), [runAuth]);
|
|
32
|
+
const register = useCallback((name) => runAuth({ registerOnly: true, name }), [runAuth]);
|
|
33
|
+
return { loading, error, authenticate, register };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=usePasskey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePasskey.js","sourceRoot":"","sources":["../../src/hooks/usePasskey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AASzD,MAAM,UAAU,UAAU;IACxB,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,OAIN,EAAiD,EAAE;QAClD,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,IAAI,sBAAsB,cAAc,CAAC;YAC/E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,MAAM;gBACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;aACnB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,GAAG,EAAE,OAAO,IAAI,0BAA0B,CAAC;YACvD,QAAQ,CAAC,GAAG,CAAC,CAAC;YACd,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,aAAa,CAAC,CACvB,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EACjC,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,IAAa,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EACxD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { UserInfo } from '@arcblock/did-connect-core';
|
|
2
|
+
export interface UseSessionReturn {
|
|
3
|
+
user: UserInfo | null;
|
|
4
|
+
loading: boolean;
|
|
5
|
+
error: string | null;
|
|
6
|
+
initialized: boolean;
|
|
7
|
+
isAuthenticated: boolean;
|
|
8
|
+
logout: () => Promise<void>;
|
|
9
|
+
refresh: () => Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare function useSession(): UseSessionReturn;
|
|
12
|
+
//# sourceMappingURL=useSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSession.d.ts","sourceRoot":"","sources":["../../src/hooks/useSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAMzE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAID,wBAAgB,UAAU,IAAI,gBAAgB,CA+B7C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SessionManager } from '@arcblock/did-connect-core';
|
|
2
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
3
|
+
import { useConnectContext } from '../ConnectContext.js';
|
|
4
|
+
import { useSyncState } from '../internals/use-sync-state.js';
|
|
5
|
+
const SESSION_EVENTS = ['userChange', 'logout', 'error', 'tokenRefreshed'];
|
|
6
|
+
export function useSession() {
|
|
7
|
+
const { config, http, storage } = useConnectContext();
|
|
8
|
+
const [state, manager] = useSyncState(() => new SessionManager(config, http, storage), SESSION_EVENTS);
|
|
9
|
+
const restoreRef = useRef(false);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (!restoreRef.current) {
|
|
12
|
+
restoreRef.current = true;
|
|
13
|
+
manager.restore().then(() => {
|
|
14
|
+
manager.startAutoCheck();
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}, [manager]);
|
|
18
|
+
const logout = useCallback(() => manager.logout(), [manager]);
|
|
19
|
+
const refresh = useCallback(() => manager.getSession().then(() => { }), [manager]);
|
|
20
|
+
return {
|
|
21
|
+
user: state.user,
|
|
22
|
+
loading: state.loading,
|
|
23
|
+
error: state.error,
|
|
24
|
+
initialized: state.initialized,
|
|
25
|
+
isAuthenticated: state.user !== null,
|
|
26
|
+
logout,
|
|
27
|
+
refresh,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=useSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSession.js","sourceRoot":"","sources":["../../src/hooks/useSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAY9D,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAE3E,MAAM,UAAU,UAAU;IACxB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEtD,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,YAAY,CACnC,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,EAC/C,cAAc,CACf,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1B,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAElF,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK,CAAC,IAAI,KAAK,IAAI;QACpC,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type { AppInfo, AuthMethod, AuthResult, ConnectConfig, CreateTokenParams, OAuthProvider, PasskeyResult, Role, SessionState, TokenState, TokenStatus, UserInfo, } from '@arcblock/did-connect-core';
|
|
2
|
+
export { VERSION } from '@arcblock/did-connect-core';
|
|
3
|
+
export type { ConnectContextValue } from './ConnectContext.js';
|
|
4
|
+
export { useConnectContext } from './ConnectContext.js';
|
|
5
|
+
export type { ConnectProviderProps } from './ConnectProvider.js';
|
|
6
|
+
export { ConnectProvider } from './ConnectProvider.js';
|
|
7
|
+
export type { LoginPageProps } from './components/LoginPage.js';
|
|
8
|
+
export { LoginPage } from './components/LoginPage.js';
|
|
9
|
+
export type { UserAvatarProps } from './components/UserAvatar.js';
|
|
10
|
+
export { UserAvatar } from './components/UserAvatar.js';
|
|
11
|
+
export type { UseConnectOptions, UseConnectReturn, UseEmailReturn, UseOAuthReturn, UsePasskeyReturn, UseSessionReturn, } from './hooks/index.js';
|
|
12
|
+
export { useConnect, useEmail, useOAuth, usePasskey, useSession } from './hooks/index.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,QAAQ,GACT,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// @arcblock/did-connect-react — barrel export
|
|
2
|
+
export { VERSION } from '@arcblock/did-connect-core';
|
|
3
|
+
export { useConnectContext } from './ConnectContext.js';
|
|
4
|
+
// Provider
|
|
5
|
+
export { ConnectProvider } from './ConnectProvider.js';
|
|
6
|
+
// Components
|
|
7
|
+
export { LoginPage } from './components/LoginPage.js';
|
|
8
|
+
export { UserAvatar } from './components/UserAvatar.js';
|
|
9
|
+
// Hooks
|
|
10
|
+
export { useConnect, useEmail, useOAuth, usePasskey, useSession } from './hooks/index.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAkB9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AASxD,QAAQ;AACR,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ConnectConfig } from '@arcblock/did-connect-core';
|
|
2
|
+
declare global {
|
|
3
|
+
interface Window {
|
|
4
|
+
blocklet?: {
|
|
5
|
+
appPid?: string;
|
|
6
|
+
appId?: string;
|
|
7
|
+
appName?: string;
|
|
8
|
+
appUrl?: string;
|
|
9
|
+
prefix?: string;
|
|
10
|
+
servicePrefix?: string;
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Build a ConnectConfig from `window.blocklet` (injected by blocklet-server).
|
|
17
|
+
*
|
|
18
|
+
* Returns null if `window` or `window.blocklet` is not available (SSR safe).
|
|
19
|
+
* Only reads known properties — does not leak arbitrary fields.
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildConfigFromBlocklet(): ConnectConfig | null;
|
|
22
|
+
//# sourceMappingURL=blocklet-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocklet-config.d.ts","sourceRoot":"","sources":["../../src/internals/blocklet-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,QAAQ,CAAC,EAAE;YACT,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;KACH;CACF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,aAAa,GAAG,IAAI,CAoB9D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a ConnectConfig from `window.blocklet` (injected by blocklet-server).
|
|
3
|
+
*
|
|
4
|
+
* Returns null if `window` or `window.blocklet` is not available (SSR safe).
|
|
5
|
+
* Only reads known properties — does not leak arbitrary fields.
|
|
6
|
+
*/
|
|
7
|
+
export function buildConfigFromBlocklet() {
|
|
8
|
+
if (typeof window === 'undefined' || !window.blocklet) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const b = window.blocklet;
|
|
12
|
+
const appPid = b.appPid || b.appId || '';
|
|
13
|
+
const prefix = typeof b.prefix === 'string' ? b.prefix : '';
|
|
14
|
+
// servicePrefix: explicit field (cloudflare) > prefix (blocklet-server) > default
|
|
15
|
+
const svcPrefix = typeof b.servicePrefix === 'string'
|
|
16
|
+
? b.servicePrefix
|
|
17
|
+
: prefix || '/.well-known/service';
|
|
18
|
+
return {
|
|
19
|
+
appPid,
|
|
20
|
+
appName: typeof b.appName === 'string' ? b.appName : '',
|
|
21
|
+
appUrl: typeof b.appUrl === 'string' ? b.appUrl : undefined,
|
|
22
|
+
apiPrefix: `${svcPrefix}/api/did`,
|
|
23
|
+
servicePrefix: svcPrefix,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=blocklet-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocklet-config.js","sourceRoot":"","sources":["../../src/internals/blocklet-config.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,kFAAkF;IAClF,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ;QACnD,CAAC,CAAC,CAAC,CAAC,aAAa;QACjB,CAAC,CAAC,MAAM,IAAI,sBAAsB,CAAC;IAErC,OAAO;QACL,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACvD,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC3D,SAAS,EAAE,GAAG,SAAS,UAAU;QACjC,aAAa,EAAE,SAAS;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StorageAdapter } from '@arcblock/did-connect-core';
|
|
2
|
+
/**
|
|
3
|
+
* StorageAdapter backed by localStorage.
|
|
4
|
+
*
|
|
5
|
+
* SSR-safe: all operations silently return defaults on error.
|
|
6
|
+
*/
|
|
7
|
+
export declare class LocalStorageAdapter implements StorageAdapter {
|
|
8
|
+
get(key: string): string | null;
|
|
9
|
+
set(key: string, value: string): void;
|
|
10
|
+
remove(key: string): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=local-storage-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-storage-adapter.d.ts","sourceRoot":"","sources":["../../src/internals/local-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACxD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQrC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAO1B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StorageAdapter backed by localStorage.
|
|
3
|
+
*
|
|
4
|
+
* SSR-safe: all operations silently return defaults on error.
|
|
5
|
+
*/
|
|
6
|
+
export class LocalStorageAdapter {
|
|
7
|
+
get(key) {
|
|
8
|
+
try {
|
|
9
|
+
return localStorage.getItem(key);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
set(key, value) {
|
|
16
|
+
try {
|
|
17
|
+
localStorage.setItem(key, value);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// QuotaExceededError or SSR — silently ignore
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
remove(key) {
|
|
24
|
+
try {
|
|
25
|
+
localStorage.removeItem(key);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// SSR — silently ignore
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=local-storage-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-storage-adapter.js","sourceRoot":"","sources":["../../src/internals/local-storage-adapter.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAC9B,GAAG,CAAC,GAAW;QACb,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAa;QAC5B,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC;YACH,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface Syncable<S> {
|
|
2
|
+
state: Readonly<S>;
|
|
3
|
+
on(event: string, handler: (...args: any[]) => void): any;
|
|
4
|
+
off(event: string, handler: (...args: any[]) => void): any;
|
|
5
|
+
destroy(): void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Bridge a core class with on/off/destroy/state to React state.
|
|
9
|
+
*
|
|
10
|
+
* - `factory()` runs only once (on mount)
|
|
11
|
+
* - Events trigger `setState({ ...instance.state })` (shallow copy)
|
|
12
|
+
* - Unmount calls `off` for each event + `destroy()`
|
|
13
|
+
* - Returns [state, instance, sync] — call `sync()` to manually
|
|
14
|
+
* re-read instance.state (e.g. after `reset()` which fires no event).
|
|
15
|
+
*/
|
|
16
|
+
export declare function useSyncState<T extends Syncable<S>, S>(factory: () => T, events: string[]): [Readonly<S>, T, () => void];
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=use-sync-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-sync-state.d.ts","sourceRoot":"","sources":["../../src/internals/use-sync-state.ts"],"names":[],"mappings":"AAEA,UAAU,QAAQ,CAAC,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,CAAC;IAC1D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,CAAC;IAC3D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EACnD,OAAO,EAAE,MAAM,CAAC,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,CAkC9B"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Bridge a core class with on/off/destroy/state to React state.
|
|
4
|
+
*
|
|
5
|
+
* - `factory()` runs only once (on mount)
|
|
6
|
+
* - Events trigger `setState({ ...instance.state })` (shallow copy)
|
|
7
|
+
* - Unmount calls `off` for each event + `destroy()`
|
|
8
|
+
* - Returns [state, instance, sync] — call `sync()` to manually
|
|
9
|
+
* re-read instance.state (e.g. after `reset()` which fires no event).
|
|
10
|
+
*/
|
|
11
|
+
export function useSyncState(factory, events) {
|
|
12
|
+
const instanceRef = useRef(null);
|
|
13
|
+
if (instanceRef.current === null) {
|
|
14
|
+
instanceRef.current = factory();
|
|
15
|
+
}
|
|
16
|
+
const instance = instanceRef.current;
|
|
17
|
+
const [state, setState] = useState(() => ({ ...instance.state }));
|
|
18
|
+
const sync = useCallback(() => {
|
|
19
|
+
setState({ ...instanceRef.current.state });
|
|
20
|
+
}, []);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
const inst = instanceRef.current;
|
|
23
|
+
const handler = () => {
|
|
24
|
+
setState({ ...inst.state });
|
|
25
|
+
};
|
|
26
|
+
for (const event of events) {
|
|
27
|
+
inst.on(event, handler);
|
|
28
|
+
}
|
|
29
|
+
return () => {
|
|
30
|
+
for (const event of events) {
|
|
31
|
+
inst.off(event, handler);
|
|
32
|
+
}
|
|
33
|
+
inst.destroy();
|
|
34
|
+
};
|
|
35
|
+
}, []);
|
|
36
|
+
return [state, instance, sync];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=use-sync-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-sync-state.js","sourceRoot":"","sources":["../../src/internals/use-sync-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASjE;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,MAAgB;IAEhB,MAAM,WAAW,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IAE3C,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACjC,WAAW,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAc,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE/E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,QAAQ,CAAC,EAAE,GAAG,WAAW,CAAC,OAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,WAAW,CAAC,OAAQ,CAAC;QAElC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,GAAG,EAAE;YACV,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,94 +1,48 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcblock/did-connect-react",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"url": "git+https://github.com/ArcBlock/ux.git"
|
|
18
|
-
},
|
|
19
|
-
"scripts": {
|
|
20
|
-
"lint": "eslint src tests --ext js --ext jsx",
|
|
21
|
-
"lint:fix": "npm run lint -- --fix",
|
|
22
|
-
"build": "vite build",
|
|
23
|
-
"build:standalone": "vite build --config vite.config.did-connect.mjs",
|
|
24
|
-
"autoexports": "node tools/auto-exports.js",
|
|
25
|
-
"watch": "vite build --watch",
|
|
26
|
-
"precommit": "CI=1 npm run lint",
|
|
27
|
-
"prepush": "CI=1 npm run lint",
|
|
28
|
-
"prepublish": "npm run build && npm run build:standalone",
|
|
29
|
-
"test": "node tools/jest.js",
|
|
30
|
-
"coverage": "npm run test -- --coverage"
|
|
31
|
-
},
|
|
32
|
-
"bugs": {
|
|
33
|
-
"url": "https://github.com/ArcBlock/ux/issues"
|
|
3
|
+
"version": "4.0.0-beta.2",
|
|
4
|
+
"description": "React hooks and components for DID Connect — built on @arcblock/did-connect-core",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./compat": {
|
|
14
|
+
"types": "./dist/compat/index.d.ts",
|
|
15
|
+
"import": "./dist/compat/index.js"
|
|
16
|
+
}
|
|
34
17
|
},
|
|
35
18
|
"dependencies": {
|
|
36
|
-
"@arcblock/
|
|
37
|
-
"@arcblock/did": "^1.29.8",
|
|
38
|
-
"@arcblock/icons": "3.5.2",
|
|
39
|
-
"@arcblock/react-hooks": "3.5.2",
|
|
40
|
-
"@arcblock/ws": "^1.29.8",
|
|
41
|
-
"@blocklet/constant": "^1.17.9",
|
|
42
|
-
"@fontsource/lexend": "^5.2.9",
|
|
43
|
-
"@iconify-icons/logos": "^1.2.36",
|
|
44
|
-
"@iconify-icons/material-symbols": "^1.2.58",
|
|
45
|
-
"@iconify/react": "^5.2.1",
|
|
46
|
-
"@ocap/util": "^1.29.8",
|
|
47
|
-
"@simplewebauthn/browser": "^13.1.0",
|
|
48
|
-
"ahooks": "^3.8.5",
|
|
49
|
-
"axios": "^1.10.0",
|
|
50
|
-
"base64-url": "^2.3.3",
|
|
51
|
-
"buffer": "^6.0.3",
|
|
52
|
-
"color-convert": "^3.1.0",
|
|
53
|
-
"eventemitter3": "^5.0.1",
|
|
54
|
-
"flat": "^5.0.2",
|
|
55
|
-
"js-cookie": "^2.2.1",
|
|
56
|
-
"jwt-decode": "^3.1.2",
|
|
57
|
-
"lodash": "^4.17.21",
|
|
58
|
-
"mdi-material-ui": "^7.9.4",
|
|
59
|
-
"p-queue": "^6.6.2",
|
|
60
|
-
"p-retry": "^6.2.1",
|
|
61
|
-
"p-wait-for": "^5.0.2",
|
|
62
|
-
"path-to-regexp": "^1.9.0",
|
|
63
|
-
"semver": "^7.7.2",
|
|
64
|
-
"tweetnacl": "^1.0.3",
|
|
65
|
-
"tweetnacl-sealedbox-js": "^1.2.0",
|
|
66
|
-
"ufo": "^1.6.1"
|
|
19
|
+
"@arcblock/did-connect-core": "^4.0.0-beta.2"
|
|
67
20
|
},
|
|
68
21
|
"peerDependencies": {
|
|
69
|
-
"
|
|
70
|
-
"@blocklet/js-sdk": "^1.17.4",
|
|
71
|
-
"@blocklet/theme": "^3.1.0",
|
|
72
|
-
"@emotion/react": "^11.14.0",
|
|
73
|
-
"@emotion/styled": "^11.14.0",
|
|
74
|
-
"@mui/material": "^7.2.0",
|
|
75
|
-
"react": "^19.0.0",
|
|
76
|
-
"react-dom": "^19.0.0"
|
|
22
|
+
"react": "^19.0.0"
|
|
77
23
|
},
|
|
78
|
-
"sideEffects": [
|
|
79
|
-
"**/*.css",
|
|
80
|
-
"**/*.scss"
|
|
81
|
-
],
|
|
82
24
|
"files": [
|
|
83
|
-
"lib",
|
|
84
25
|
"dist"
|
|
85
26
|
],
|
|
86
27
|
"publishConfig": {
|
|
87
28
|
"access": "public"
|
|
88
29
|
},
|
|
30
|
+
"license": "Apache-2.0",
|
|
89
31
|
"devDependencies": {
|
|
90
|
-
"
|
|
91
|
-
"
|
|
32
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
33
|
+
"@testing-library/react": "^16.3.2",
|
|
34
|
+
"@types/react": "^19.1.0",
|
|
35
|
+
"@types/react-dom": "^19.1.0",
|
|
36
|
+
"jsdom": "^29.0.1",
|
|
37
|
+
"react": "^19.1.0",
|
|
38
|
+
"react-dom": "^19.1.0",
|
|
39
|
+
"vitest": "^4.1.1"
|
|
92
40
|
},
|
|
93
|
-
"
|
|
94
|
-
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc",
|
|
43
|
+
"lint": "biome check src/",
|
|
44
|
+
"test": "vitest run",
|
|
45
|
+
"test:coverage": "vitest run --coverage",
|
|
46
|
+
"typecheck": "tsc --noEmit"
|
|
47
|
+
}
|
|
48
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
Copyright 2018-2022 ArcBlock
|
|
2
|
-
|
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
you may not use this file except in compliance with the License.
|
|
5
|
-
You may obtain a copy of the License at
|
|
6
|
-
|
|
7
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
|
|
9
|
-
Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
See the License for the specific language governing permissions and
|
|
13
|
-
limitations under the License.
|
package/README.md
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-

|
|
2
|
-
|
|
3
|
-
> Client side library to work with DID Connect by ArcBlock.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```shell
|
|
8
|
-
yarn add @arcblock/did-connect-react
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
Then:
|
|
12
|
-
|
|
13
|
-
```javascript
|
|
14
|
-
import axios from 'axios';
|
|
15
|
-
|
|
16
|
-
// import each module individually
|
|
17
|
-
import DidAddress from '@arcblock/did-connect-react/lib/Address';
|
|
18
|
-
import DidConnect from '@arcblock/did-connect-react/lib/Connect';
|
|
19
|
-
import DidAvatar from '@arcblock/did-connect-react/lib/Avatar';
|
|
20
|
-
import DidButton from '@arcblock/did-connect-react/lib/Button';
|
|
21
|
-
import DIDLogo from '@arcblock/did-connect-react/lib/Logo';
|
|
22
|
-
import { SessionProvider, SessionConsumer } from '@arcblock/did-connect-react/lib/Session';
|
|
23
|
-
import SessionManager from '@arcblock/did-connect-react/lib/SessionManager';
|
|
24
|
-
|
|
25
|
-
// or use ES6 named imports
|
|
26
|
-
import {
|
|
27
|
-
Address as DidAddress,
|
|
28
|
-
Connect as DidConnect,
|
|
29
|
-
Avatar as DidAvatar,
|
|
30
|
-
Button as DidButton,
|
|
31
|
-
Logo as DIDLogo,
|
|
32
|
-
Session,
|
|
33
|
-
SessionManager,
|
|
34
|
-
} from '@arcblock/did-connect-react/lib';
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### DidConnect
|
|
38
|
-
|
|
39
|
-
```jsx
|
|
40
|
-
<DidConnect
|
|
41
|
-
popup
|
|
42
|
-
open={open}
|
|
43
|
-
action="login"
|
|
44
|
-
checkFn={axios.get}
|
|
45
|
-
onClose={() => handleOnClose()}
|
|
46
|
-
onSuccess={() => (window.location.href = '/profile')}
|
|
47
|
-
messages={{
|
|
48
|
-
title: 'login',
|
|
49
|
-
scan: 'Scan QR code with DID Wallet',
|
|
50
|
-
confirm: 'Confirm login on your DID Wallet',
|
|
51
|
-
success: 'You have successfully signed in!',
|
|
52
|
-
}}
|
|
53
|
-
/>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Note**: DidConnect component has a built-in instance of WebWalletSWKeeper that embeds a wallet iframe in the DOM to keep the service worker of the web wallet alive. When the DidConnect component is destroyed, WebWalletSWKeeper will also be destroyed, so avoid using it like the following:
|
|
57
|
-
|
|
58
|
-
```jsx
|
|
59
|
-
{open && (
|
|
60
|
-
<DidConnect
|
|
61
|
-
popup
|
|
62
|
-
action="login"
|
|
63
|
-
...
|
|
64
|
-
/>
|
|
65
|
-
)}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### display DidConnect in popup
|
|
69
|
-
|
|
70
|
-
```jsx
|
|
71
|
-
const [open, setOpen] = React.useState(false);
|
|
72
|
-
const handleOnClose = () => {
|
|
73
|
-
// ...
|
|
74
|
-
setOpen(false);
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
...
|
|
78
|
-
|
|
79
|
-
<button type="button" onClick={() => setOpen(true)}>
|
|
80
|
-
Open DidConnect
|
|
81
|
-
</button>
|
|
82
|
-
|
|
83
|
-
<DidConnect
|
|
84
|
-
popup
|
|
85
|
-
open={open}
|
|
86
|
-
action="login"
|
|
87
|
-
checkFn={axios.get}
|
|
88
|
-
onClose={() => handleOnClose()}
|
|
89
|
-
onSuccess={() => (window.location.href = '/profile')}
|
|
90
|
-
messages={{
|
|
91
|
-
title: 'login',
|
|
92
|
-
scan: 'Scan QR code with DID Wallet',
|
|
93
|
-
confirm: 'Confirm login on your DID Wallet',
|
|
94
|
-
success: 'You have successfully signed in!',
|
|
95
|
-
}}
|
|
96
|
-
webWalletUrl={webWalletUrl}
|
|
97
|
-
/>
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### DidAvatar
|
|
101
|
-
|
|
102
|
-
```jsx
|
|
103
|
-
<DidAvatar did={userDid} size={256} />
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### DidButton
|
|
107
|
-
|
|
108
|
-
```jsx
|
|
109
|
-
<ConnectButton size="large" />
|
|
110
|
-
<ConnectButton size="medium" />
|
|
111
|
-
<ConnectButton size="small" />
|
|
112
|
-
<ConnectButton>Custom Text</ConnectButton>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### DIDLogo
|
|
116
|
-
|
|
117
|
-
```jsx
|
|
118
|
-
<DIDLogo size={32} />
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### DidAddress
|
|
122
|
-
|
|
123
|
-
```jsx
|
|
124
|
-
<DidAddress did={userDid} size={32} />
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### SessionManager
|
|
128
|
-
|
|
129
|
-
```jsx
|
|
130
|
-
<SessionProvider serviceHost={get(window, 'blocklet.prefix', '/')} webWalletUrl={webWalletUrl}>
|
|
131
|
-
<SessionConsumer>{(value) => <SessionManager session={value.session} />}</SessionConsumer>
|
|
132
|
-
...
|
|
133
|
-
</SessionProvider>
|
|
134
|
-
```
|