@arcblock/did-connect-react 3.1.34 → 3.1.35

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/lib/constant.js CHANGED
@@ -1,22 +1,23 @@
1
- const _ = 300, o = 1800, n = "/.well-known/service", E = "login_token", c = "refresh_token", t = "/.well-known/service", e = "/api/did", s = "DID Connect", d = "__did-connect__", T = ["scanned", "succeed", "error", "busy"], A = {
1
+ const _ = 300, o = 1800, n = "/.well-known/service", E = "login_token", c = "x-csrf-token", t = "refresh_token", e = "/.well-known/service", s = "/api/did", T = "DID Connect", d = "__did-connect__", A = ["scanned", "succeed", "error", "busy"], S = {
2
2
  chrome: "https://chromewebstore.google.com/detail/did-wallet/ibjflpbmadchofnbpppegdbnifdgincp",
3
3
  edge: "https://microsoftedge.microsoft.com/addons/detail/did-wallet/hjgoblidjnnnamdkinbichnfbmghmafd"
4
- }, i = 2 * 1e3, S = 6, I = "nf_lang", l = 1e3, D = window?.blocklet?.DID_SPACES_BASE_URL || "https://www.didspaces.com/app";
4
+ }, i = 2 * 1e3, I = 6, R = "nf_lang", O = 1e3, l = window?.blocklet?.DID_SPACES_BASE_URL || "https://www.didspaces.com/app";
5
5
  export {
6
- e as API_DID_PREFIX,
6
+ s as API_DID_PREFIX,
7
7
  n as BLOCKLET_SERVICE_PATH_PREFIX,
8
- T as BUSY_STATUS,
9
- l as CHECK_INTERVAL_TIME,
8
+ A as BUSY_STATUS,
9
+ O as CHECK_INTERVAL_TIME,
10
10
  i as CHECK_STATUS_INTERVAL,
11
- s as DEFAULT_NAME,
11
+ c as CSRF_TOKEN_STORAGE_KEY,
12
+ T as DEFAULT_NAME,
12
13
  _ as DEFAULT_TIMEOUT,
13
14
  o as DEFAULT_WINDOW_TIMEOUT,
14
15
  d as DID_CONNECT_URL_PARAMS_NAME,
15
- D as DID_SPACES_BASE_URL,
16
- A as EXT_DOWNLOAD_URL,
17
- I as LANG_COOKIE_NAME,
18
- c as REFRESH_TOKEN_STORAGE_KEY,
19
- t as RELAY_SOCKET_PREFIX,
16
+ l as DID_SPACES_BASE_URL,
17
+ S as EXT_DOWNLOAD_URL,
18
+ R as LANG_COOKIE_NAME,
19
+ t as REFRESH_TOKEN_STORAGE_KEY,
20
+ e as RELAY_SOCKET_PREFIX,
20
21
  E as SESSION_TOKEN_STORAGE_KEY,
21
- S as VERIFY_CODE_LENGTH
22
+ I as VERIFY_CODE_LENGTH
22
23
  };
package/lib/index.js CHANGED
@@ -1,107 +1,108 @@
1
1
  import { default as t, default as r, default as s } from "./Connect/index.js";
2
2
  import { default as n, default as d } from "./Button/index.js";
3
- import { default as E, default as p } from "@arcblock/ux/lib/DIDLogo";
4
- import { createSessionContext as x, createAuthServiceSessionContext as _, createSessionContext as A } from "./Session/index.js";
5
- import { OAuthConsumer as C, OAuthContext as i, OAuthProvider as I, useOAuth as l } from "./OAuth/context.js";
6
- import { PasskeyConsumer as c, PasskeyContext as S, PasskeyProvider as D, usePasskey as O } from "./Passkey/context.js";
7
- import { default as L } from "./Passkey/actions.js";
3
+ import { default as f, default as p } from "@arcblock/ux/lib/DIDLogo";
4
+ import { createSessionContext as _, createAuthServiceSessionContext as x, createSessionContext as A } from "./Session/index.js";
5
+ import { OAuthConsumer as m, OAuthContext as i, OAuthProvider as T, useOAuth as I } from "./OAuth/context.js";
6
+ import { PasskeyConsumer as l, PasskeyContext as c, PasskeyProvider as O, usePasskey as D } from "./Passkey/context.js";
7
+ import { default as R } from "./Passkey/actions.js";
8
8
  import { default as N } from "./User/use-did.js";
9
9
  import { default as F } from "./User/wrap-did.js";
10
- import { FederatedConsumer as M, FederatedContext as K, FederatedProvider as y, useFederatedContext as h } from "./Federated/context.js";
11
- import { API_DID_PREFIX as V, BLOCKLET_SERVICE_PATH_PREFIX as v, BUSY_STATUS as B, CHECK_INTERVAL_TIME as W, CHECK_STATUS_INTERVAL as H, DEFAULT_NAME as Y, DEFAULT_TIMEOUT as b, DEFAULT_WINDOW_TIMEOUT as G, DID_CONNECT_URL_PARAMS_NAME as X, DID_SPACES_BASE_URL as w, EXT_DOWNLOAD_URL as q, LANG_COOKIE_NAME as j, REFRESH_TOKEN_STORAGE_KEY as z, RELAY_SOCKET_PREFIX as J, SESSION_TOKEN_STORAGE_KEY as Q, VERIFY_CODE_LENGTH as Z } from "./constant.js";
12
- import { createAxios as ee, debug as oe, decodeConnectUrl as te, decodeKey as re, decodeUrlParams as se, decrypt as ae, encodeConnectUrl as ne, encodeKey as de, encrypt as fe, formatCacheTtl as Ee, getApiErrorMessage as pe, getAppId as ue, getBrowserLang as xe, getConnectedInfo as _e, getWebAuthnErrorMessage as Ae, logger as me, openPopup as Ce, parseNextWorkflow as ie, parseTokenFromConnectUrl as Ie, runPopup as le, sleep as Te, updateConnectedInfo as ce, version as Se } from "./utils.js";
13
- import { NotOpenError as Oe } from "./error.js";
10
+ import { FederatedConsumer as K, FederatedContext as M, FederatedProvider as y, useFederatedContext as h } from "./Federated/context.js";
11
+ import { API_DID_PREFIX as V, BLOCKLET_SERVICE_PATH_PREFIX as v, BUSY_STATUS as B, CHECK_INTERVAL_TIME as W, CHECK_STATUS_INTERVAL as Y, CSRF_TOKEN_STORAGE_KEY as G, DEFAULT_NAME as H, DEFAULT_TIMEOUT as b, DEFAULT_WINDOW_TIMEOUT as X, DID_CONNECT_URL_PARAMS_NAME as w, DID_SPACES_BASE_URL as q, EXT_DOWNLOAD_URL as j, LANG_COOKIE_NAME as z, REFRESH_TOKEN_STORAGE_KEY as J, RELAY_SOCKET_PREFIX as Q, SESSION_TOKEN_STORAGE_KEY as Z, VERIFY_CODE_LENGTH as $ } from "./constant.js";
12
+ import { createAxios as oe, debug as te, decodeConnectUrl as re, decodeKey as se, decodeUrlParams as ae, decrypt as ne, encodeConnectUrl as de, encodeKey as Ee, encrypt as fe, formatCacheTtl as pe, getApiErrorMessage as ue, getAppId as _e, getBrowserLang as xe, getConnectedInfo as Ae, getWebAuthnErrorMessage as Ce, logger as me, openPopup as ie, parseNextWorkflow as Te, parseTokenFromConnectUrl as Ie, runPopup as Se, sleep as le, updateConnectedInfo as ce, version as Oe } from "./utils.js";
13
+ import { NotOpenError as ge } from "./error.js";
14
14
  import { default as Le } from "@arcblock/ux/lib/SessionManager";
15
- import { default as Ne } from "@arcblock/ux/lib/Address";
16
- import { default as Fe } from "@arcblock/ux/lib/Avatar";
15
+ import { default as Pe } from "@arcblock/ux/lib/Address";
16
+ import { default as Ue } from "@arcblock/ux/lib/Avatar";
17
17
  import { default as Me } from "./Connect/use-connect.js";
18
- import { EVENTS as ye } from "./Session/libs/constants.js";
19
- import { didSpacesIsRequired as ke } from "./Session/libs/did-spaces.js";
20
- import { loginFederatedMaster as ve, mountFederatedIframe as Be } from "./Session/libs/federated.js";
21
- import { translations as He } from "./Session/libs/locales.js";
22
- import { checkEnableAutoLogin as be, getMobileVisitorId as Ge, login as Xe } from "./Session/libs/login-mobile.js";
23
- import { SessionContext as qe } from "./Session/context.js";
18
+ import { EVENTS as he } from "./Session/libs/constants.js";
19
+ import { didSpacesIsRequired as Ve } from "./Session/libs/did-spaces.js";
20
+ import { loginFederatedMaster as Be, mountFederatedIframe as We } from "./Session/libs/federated.js";
21
+ import { translations as Ge } from "./Session/libs/locales.js";
22
+ import { checkEnableAutoLogin as be, getMobileVisitorId as Xe, login as we } from "./Session/libs/login-mobile.js";
23
+ import { SessionContext as je } from "./Session/context.js";
24
24
  export * from "@arcblock/ux/lib/Util/wallet";
25
- import { getVisitorId as Je, setVisitorId as Qe } from "@arcblock/ux/lib/Util";
25
+ import { getVisitorId as Qe, setVisitorId as Ze } from "@arcblock/ux/lib/Util";
26
26
  export {
27
27
  V as API_DID_PREFIX,
28
- Ne as Address,
29
- Fe as Avatar,
28
+ Pe as Address,
29
+ Ue as Avatar,
30
30
  v as BLOCKLET_SERVICE_PATH_PREFIX,
31
31
  B as BUSY_STATUS,
32
32
  n as Button,
33
33
  W as CHECK_INTERVAL_TIME,
34
- H as CHECK_STATUS_INTERVAL,
34
+ Y as CHECK_STATUS_INTERVAL,
35
+ G as CSRF_TOKEN_STORAGE_KEY,
35
36
  t as Connect,
36
- Y as DEFAULT_NAME,
37
+ H as DEFAULT_NAME,
37
38
  b as DEFAULT_TIMEOUT,
38
- G as DEFAULT_WINDOW_TIMEOUT,
39
+ X as DEFAULT_WINDOW_TIMEOUT,
39
40
  d as DIDButton,
40
41
  r as DIDConnect,
41
- E as DIDLogo,
42
- X as DID_CONNECT_URL_PARAMS_NAME,
43
- w as DID_SPACES_BASE_URL,
42
+ f as DIDLogo,
43
+ w as DID_CONNECT_URL_PARAMS_NAME,
44
+ q as DID_SPACES_BASE_URL,
44
45
  s as DidConnect,
45
- ye as EVENTS,
46
- q as EXT_DOWNLOAD_URL,
47
- M as FederatedConsumer,
48
- K as FederatedContext,
46
+ he as EVENTS,
47
+ j as EXT_DOWNLOAD_URL,
48
+ K as FederatedConsumer,
49
+ M as FederatedContext,
49
50
  y as FederatedProvider,
50
- j as LANG_COOKIE_NAME,
51
+ z as LANG_COOKIE_NAME,
51
52
  p as Logo,
52
- Oe as NotOpenError,
53
- C as OAuthConsumer,
53
+ ge as NotOpenError,
54
+ m as OAuthConsumer,
54
55
  i as OAuthContext,
55
- I as OAuthProvider,
56
- L as PasskeyActions,
57
- c as PasskeyConsumer,
58
- S as PasskeyContext,
59
- D as PasskeyProvider,
60
- z as REFRESH_TOKEN_STORAGE_KEY,
61
- J as RELAY_SOCKET_PREFIX,
62
- Q as SESSION_TOKEN_STORAGE_KEY,
63
- x as Session,
64
- qe as SessionContext,
56
+ T as OAuthProvider,
57
+ R as PasskeyActions,
58
+ l as PasskeyConsumer,
59
+ c as PasskeyContext,
60
+ O as PasskeyProvider,
61
+ J as REFRESH_TOKEN_STORAGE_KEY,
62
+ Q as RELAY_SOCKET_PREFIX,
63
+ Z as SESSION_TOKEN_STORAGE_KEY,
64
+ _ as Session,
65
+ je as SessionContext,
65
66
  Le as SessionManager,
66
- Z as VERIFY_CODE_LENGTH,
67
+ $ as VERIFY_CODE_LENGTH,
67
68
  F as WrapDid,
68
69
  be as checkEnableAutoLogin,
69
- _ as createAuthServiceSessionContext,
70
- ee as createAxios,
70
+ x as createAuthServiceSessionContext,
71
+ oe as createAxios,
71
72
  A as createSessionContext,
72
- oe as debug,
73
- te as decodeConnectUrl,
74
- re as decodeKey,
75
- se as decodeUrlParams,
76
- ae as decrypt,
77
- ke as didSpacesIsRequired,
78
- ne as encodeConnectUrl,
79
- de as encodeKey,
73
+ te as debug,
74
+ re as decodeConnectUrl,
75
+ se as decodeKey,
76
+ ae as decodeUrlParams,
77
+ ne as decrypt,
78
+ Ve as didSpacesIsRequired,
79
+ de as encodeConnectUrl,
80
+ Ee as encodeKey,
80
81
  fe as encrypt,
81
- Ee as formatCacheTtl,
82
- pe as getApiErrorMessage,
83
- ue as getAppId,
82
+ pe as formatCacheTtl,
83
+ ue as getApiErrorMessage,
84
+ _e as getAppId,
84
85
  xe as getBrowserLang,
85
- _e as getConnectedInfo,
86
- Ge as getMobileVisitorId,
87
- Je as getVisitorId,
88
- Ae as getWebAuthnErrorMessage,
86
+ Ae as getConnectedInfo,
87
+ Xe as getMobileVisitorId,
88
+ Qe as getVisitorId,
89
+ Ce as getWebAuthnErrorMessage,
89
90
  me as logger,
90
- Xe as login,
91
- ve as loginFederatedMaster,
92
- Be as mountFederatedIframe,
93
- Ce as openPopup,
94
- ie as parseNextWorkflow,
91
+ we as login,
92
+ Be as loginFederatedMaster,
93
+ We as mountFederatedIframe,
94
+ ie as openPopup,
95
+ Te as parseNextWorkflow,
95
96
  Ie as parseTokenFromConnectUrl,
96
- le as runPopup,
97
- Qe as setVisitorId,
98
- Te as sleep,
99
- He as translations,
97
+ Se as runPopup,
98
+ Ze as setVisitorId,
99
+ le as sleep,
100
+ Ge as translations,
100
101
  ce as updateConnectedInfo,
101
102
  Me as useConnect,
102
103
  N as useDid,
103
104
  h as useFederatedContext,
104
- l as useOAuth,
105
- O as usePasskey,
106
- Se as version
105
+ I as useOAuth,
106
+ D as usePasskey,
107
+ Oe as version
107
108
  };
@@ -1,4 +1,4 @@
1
- const o = "3.1.34", s = {
1
+ const o = "3.1.35", s = {
2
2
  version: o
3
3
  };
4
4
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/did-connect-react",
3
- "version": "3.1.34",
3
+ "version": "3.1.35",
4
4
  "description": "Client side library to work with DID Connect by ArcBlock.",
5
5
  "keywords": [
6
6
  "react",
@@ -32,10 +32,10 @@
32
32
  "url": "https://github.com/ArcBlock/ux/issues"
33
33
  },
34
34
  "dependencies": {
35
- "@arcblock/bridge": "3.1.34",
35
+ "@arcblock/bridge": "3.1.35",
36
36
  "@arcblock/did": "^1.21.3",
37
- "@arcblock/icons": "3.1.34",
38
- "@arcblock/react-hooks": "3.1.34",
37
+ "@arcblock/icons": "3.1.35",
38
+ "@arcblock/react-hooks": "3.1.35",
39
39
  "@arcblock/ws": "^1.21.3",
40
40
  "@fontsource/lexend": "^5.2.9",
41
41
  "@iconify-icons/logos": "^1.2.36",
@@ -80,5 +80,5 @@
80
80
  "eslint-plugin-react-hooks": "^4.6.2",
81
81
  "jest": "^29.7.0"
82
82
  },
83
- "gitHead": "c4810edc1f51b25c0e9bd55b2021f284d378ecb1"
83
+ "gitHead": "52c5cb7cbc7f22fe05f9c1d85559199fb3166d72"
84
84
  }
@@ -25,6 +25,7 @@ export default function useSessionToken({
25
25
  pageState,
26
26
  serviceHost,
27
27
  sessionTokenStorage,
28
+ csrfTokenStorage,
28
29
  refreshTokenStorage,
29
30
  lazyRefreshToken,
30
31
  apiOptions = {},
@@ -33,6 +34,7 @@ export default function useSessionToken({
33
34
  const [retryCount, setRetryCount] = useState(0);
34
35
  const [intervalTime, setIntervalTime] = useState(CHECK_INTERVAL_TIME);
35
36
  const { getToken: getSessionToken, setToken: setSessionToken, removeToken: removeSessionToken } = sessionTokenStorage;
37
+ const { setToken: setCsrfToken } = csrfTokenStorage;
36
38
  const { getToken: getRefreshToken, setToken: setRefreshToken, removeToken: removeRefreshToken } = refreshTokenStorage;
37
39
  const request = useCreation(() => {
38
40
  return createAxios({
@@ -326,7 +328,7 @@ export default function useSessionToken({
326
328
  const handleLoginResult = useMemoizedFn((result) => {
327
329
  const loginResult = Array.isArray(result) ? result[0] : result;
328
330
  debug('handleLoginResult', { loginResult, result });
329
- const { loginToken, sessionToken, refreshToken, visitorId, encrypted = true } = loginResult;
331
+ const { loginToken, csrfToken, sessionToken, refreshToken, visitorId, encrypted = true } = loginResult;
330
332
  const token = loginToken || sessionToken;
331
333
  let decryptSessionToken;
332
334
  let decryptRefreshToken;
@@ -336,6 +338,9 @@ export default function useSessionToken({
336
338
  debug('handleLoginResult: setSessionToken', { decryptSessionToken });
337
339
  setSessionToken(decryptSessionToken);
338
340
 
341
+ const decryptCsrfToken = encrypted ? decrypt(csrfToken) : csrfToken;
342
+ setCsrfToken(decryptCsrfToken);
343
+
339
344
  if (refreshToken) {
340
345
  decryptRefreshToken = encrypted ? decrypt(refreshToken) : refreshToken;
341
346
  debug('handleLoginResult: setRefreshToken', { decryptRefreshToken });
@@ -61,6 +61,7 @@ import {
61
61
  REFRESH_TOKEN_STORAGE_KEY,
62
62
  SESSION_TOKEN_STORAGE_KEY,
63
63
  DID_SPACES_BASE_URL,
64
+ CSRF_TOKEN_STORAGE_KEY,
64
65
  } from '../constant';
65
66
  import { checkEnableAutoLogin, getMobileVisitorId, login as loginInMobile } from './libs/login-mobile';
66
67
  import useQuickConnect from '../Connect/hooks/use-quick-connect';
@@ -141,6 +142,10 @@ function createSessionContext(
141
142
  }
142
143
 
143
144
  const sessionTokenStorage = createStorage(storageKey, storageEngine, storageOptions);
145
+ const csrfTokenStorage = createStorage(CSRF_TOKEN_STORAGE_KEY, 'cookie', {
146
+ secure: true,
147
+ sameSite: 'strict',
148
+ });
144
149
 
145
150
  const refreshTokenStorage = createStorage(opts.refreshTokenStorageKey, 'ls');
146
151
 
@@ -359,6 +364,7 @@ function createSessionContext(
359
364
  pageState,
360
365
  sessionTokenStorage,
361
366
  refreshTokenStorage,
367
+ csrfTokenStorage,
362
368
  serviceHost: props.serviceHost,
363
369
  apiOptions: props.apiOptions,
364
370
  lazyRefreshToken: props.lazyRefreshToken,
@@ -1516,6 +1522,7 @@ function createSessionContext(
1516
1522
  await onLogin({
1517
1523
  sessionToken: result.sessionToken,
1518
1524
  refreshToken: result.refreshToken,
1525
+ csrfToken: result.csrfToken,
1519
1526
  visitorId: result.visitorId,
1520
1527
  encrypted: false,
1521
1528
  });
@@ -1605,6 +1612,7 @@ function createSessionContext(
1605
1612
  await onLogin({
1606
1613
  sessionToken: result.sessionToken,
1607
1614
  refreshToken: result.refreshToken,
1615
+ csrfToken: result.csrfToken,
1608
1616
  visitorId: result.visitorId,
1609
1617
  encrypted: false,
1610
1618
  });
package/src/constant.js CHANGED
@@ -2,6 +2,7 @@ export const DEFAULT_TIMEOUT = 5 * 60;
2
2
  export const DEFAULT_WINDOW_TIMEOUT = 30 * 60;
3
3
  export const BLOCKLET_SERVICE_PATH_PREFIX = '/.well-known/service';
4
4
  export const SESSION_TOKEN_STORAGE_KEY = 'login_token';
5
+ export const CSRF_TOKEN_STORAGE_KEY = 'x-csrf-token';
5
6
  export const REFRESH_TOKEN_STORAGE_KEY = 'refresh_token';
6
7
 
7
8
  export const RELAY_SOCKET_PREFIX = '/.well-known/service';