@0xchain/with-login 1.1.0-beta.37 → 1.1.0-beta.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -4
- package/package.json +7 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
+
export { ACCESS_TOKEN_COOKIE_KEYS, REFRESH_TOKEN_COOKIE_KEYS, getRuntimeLoginState, setRuntimeSession, } from '@0xchain/auth';
|
|
2
3
|
export declare const isLogin: () => boolean;
|
|
3
4
|
export declare enum LoginMessageType {
|
|
4
5
|
CLOSE_LOGIN_MODAL = "closeLoginModal",
|
|
@@ -21,9 +22,11 @@ export interface LoginContextValue {
|
|
|
21
22
|
}
|
|
22
23
|
interface LoginProviderProps {
|
|
23
24
|
children: React.ReactNode;
|
|
25
|
+
/** 显式传入时可不依赖 NextIntlClientProvider(仍建议包在 Intl 内) */
|
|
26
|
+
locale?: string;
|
|
24
27
|
loginSuccessCallback?: () => Promise<void>;
|
|
25
28
|
}
|
|
26
|
-
export declare function LoginProvider({ children, loginSuccessCallback }: LoginProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare function LoginProvider({ children, locale: localeProp, loginSuccessCallback, }: LoginProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
27
30
|
export declare function useLogin(): LoginContextValue;
|
|
28
31
|
interface WithLoginProps extends React.PropsWithChildren, React.HTMLAttributes<HTMLElement> {
|
|
29
32
|
children?: React.ReactNode;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAON,MAAM,OAAO,CAAC;AAYf,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAcvB,eAAO,MAAM,OAAO,eAInB,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,iBAAiB,oBAAoB;IACrC,aAAa,iBAAiB;CAC/B;AAED,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;IACxD,4BAA4B,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC;CACpF;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAuCD,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,oBAA8C,GAC/C,EAAE,kBAAkB,2CA4GpB;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAED,UAAU,cACR,SAAQ,KAAK,CAAC,iBAAiB,EAC7B,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,kDAcvE;AAED,eAAe,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React, { createContext, useState, useRef, useCallback, useEffect, useContext } from "react";
|
|
4
|
-
import { useLocale } from "
|
|
4
|
+
import { useLocale } from "@0xchain/i18n/react";
|
|
5
5
|
import { twMerge } from "tailwind-merge";
|
|
6
6
|
import { useTheme } from "@0xchain/next-themes";
|
|
7
7
|
import Cookies from "js-cookie";
|
|
8
|
+
import { getRuntimeLoginState, setRuntimeSession, REFRESH_TOKEN_COOKIE_KEYS, ACCESS_TOKEN_COOKIE_KEYS } from "@0xchain/auth";
|
|
9
|
+
import { ACCESS_TOKEN_COOKIE_KEYS as ACCESS_TOKEN_COOKIE_KEYS2, REFRESH_TOKEN_COOKIE_KEYS as REFRESH_TOKEN_COOKIE_KEYS2, getRuntimeLoginState as getRuntimeLoginState2, setRuntimeSession as setRuntimeSession2 } from "@0xchain/auth";
|
|
10
|
+
function pickCookieValue(keys) {
|
|
11
|
+
for (const key of keys) {
|
|
12
|
+
const value = Cookies.get(key);
|
|
13
|
+
if (value) return value;
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const hasRefreshToken = () => !!pickCookieValue(REFRESH_TOKEN_COOKIE_KEYS);
|
|
18
|
+
const hasAccessToken = () => !!pickCookieValue(ACCESS_TOKEN_COOKIE_KEYS);
|
|
19
|
+
const hasAnyToken = () => hasRefreshToken() || hasAccessToken();
|
|
8
20
|
const isLogin = () => {
|
|
9
|
-
|
|
21
|
+
const runtime = getRuntimeLoginState();
|
|
22
|
+
if (typeof runtime === "boolean") return runtime;
|
|
23
|
+
return hasAnyToken();
|
|
10
24
|
};
|
|
11
25
|
var LoginMessageType = /* @__PURE__ */ ((LoginMessageType2) => {
|
|
12
26
|
LoginMessageType2["CLOSE_LOGIN_MODAL"] = "closeLoginModal";
|
|
@@ -44,12 +58,17 @@ function resolveThemeNow(resolvedTheme) {
|
|
|
44
58
|
function buildAuthUrl(locale, path, theme, redirectUri) {
|
|
45
59
|
return `${process.env.NEXT_PUBLIC_AUTH_URL}/${locale}/${path}?mode=dialog&theme=${theme}&redirect_uri=${encodeURIComponent(redirectUri)}`;
|
|
46
60
|
}
|
|
47
|
-
function LoginProvider({
|
|
61
|
+
function LoginProvider({
|
|
62
|
+
children,
|
|
63
|
+
locale: localeProp,
|
|
64
|
+
loginSuccessCallback = () => Promise.resolve()
|
|
65
|
+
}) {
|
|
48
66
|
const [isOpen, setIsOpen] = useState(false);
|
|
49
67
|
const [mounted, setMounted] = useState(false);
|
|
50
68
|
const [url, setUrl] = useState(null);
|
|
51
69
|
const callbacksRef = useRef(/* @__PURE__ */ new Set());
|
|
52
|
-
const
|
|
70
|
+
const localeFromIntl = useLocale();
|
|
71
|
+
const locale = localeProp ?? localeFromIntl;
|
|
53
72
|
const { resolvedTheme } = useTheme();
|
|
54
73
|
const currentTheme = mounted ? resolveThemeNow(resolvedTheme) : "light";
|
|
55
74
|
const openLogin = useCallback((type) => {
|
|
@@ -75,6 +94,13 @@ function LoginProvider({ children, loginSuccessCallback = () => Promise.resolve(
|
|
|
75
94
|
closeLogin();
|
|
76
95
|
}
|
|
77
96
|
if (event.data?.type === "loginSuccess") {
|
|
97
|
+
setRuntimeSession({
|
|
98
|
+
isLoggedIn: true,
|
|
99
|
+
hasAccessToken: hasAccessToken(),
|
|
100
|
+
hasRefreshToken: hasRefreshToken(),
|
|
101
|
+
accessTokenExpired: false,
|
|
102
|
+
claims: null
|
|
103
|
+
});
|
|
78
104
|
closeLogin();
|
|
79
105
|
window.location.reload();
|
|
80
106
|
}
|
|
@@ -151,11 +177,15 @@ function WithLogin({ children, onClick, ...rest }) {
|
|
|
151
177
|
return /* @__PURE__ */ jsx(Trigger, { ...rest, children });
|
|
152
178
|
}
|
|
153
179
|
export {
|
|
180
|
+
ACCESS_TOKEN_COOKIE_KEYS2 as ACCESS_TOKEN_COOKIE_KEYS,
|
|
154
181
|
LoginMessageType,
|
|
155
182
|
LoginProvider,
|
|
156
183
|
OpenLoginType,
|
|
184
|
+
REFRESH_TOKEN_COOKIE_KEYS2 as REFRESH_TOKEN_COOKIE_KEYS,
|
|
157
185
|
WithLogin,
|
|
158
186
|
WithLogin as default,
|
|
187
|
+
getRuntimeLoginState2 as getRuntimeLoginState,
|
|
159
188
|
isLogin,
|
|
189
|
+
setRuntimeSession2 as setRuntimeSession,
|
|
160
190
|
useLogin
|
|
161
191
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xchain/with-login",
|
|
3
|
-
"version": "1.1.0-beta.
|
|
3
|
+
"version": "1.1.0-beta.39",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"@0xchain/next-themes": "1.0.0",
|
|
22
22
|
"js-cookie": "3.0.5",
|
|
23
23
|
"next": "16.1.6",
|
|
24
|
-
"next-intl": "4.
|
|
24
|
+
"next-intl": "4.13.0",
|
|
25
25
|
"react": "19.1.1",
|
|
26
26
|
"react-dom": "19.1.1",
|
|
27
27
|
"tailwind-merge": "3.3.1"
|
|
@@ -31,12 +31,16 @@
|
|
|
31
31
|
"@types/js-cookie": "3.0.6",
|
|
32
32
|
"js-cookie": "3.0.5",
|
|
33
33
|
"next": "16.1.6",
|
|
34
|
-
"next-intl": "4.
|
|
34
|
+
"next-intl": "4.13.0",
|
|
35
35
|
"react": "19.1.1",
|
|
36
36
|
"react-dom": "19.1.1",
|
|
37
37
|
"rollup-plugin-preserve-use-client": "3.0.1",
|
|
38
38
|
"tailwind-merge": "3.3.1"
|
|
39
39
|
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@0xchain/auth": "1.1.0-beta.39",
|
|
42
|
+
"@0xchain/i18n": "1.1.0-beta.39"
|
|
43
|
+
},
|
|
40
44
|
"nx": {
|
|
41
45
|
"tags": [
|
|
42
46
|
"type:feature"
|