@lemondouble/lemon-auth 0.3.1 → 0.3.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/client/index.d.ts +25 -0
- package/dist/client/index.js +6 -9
- package/dist/client/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { L as LemonUser } from '../types-CgrEUXwM.js';
|
|
3
|
+
import * as react from 'react';
|
|
4
|
+
import 'jose';
|
|
5
|
+
|
|
6
|
+
interface AuthContextValue {
|
|
7
|
+
user: LemonUser | null;
|
|
8
|
+
isAuthenticated: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare function AuthProvider({ user, children, }: {
|
|
11
|
+
user: LemonUser | null;
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
}): react_jsx_runtime.JSX.Element;
|
|
14
|
+
declare function useAuth(): AuthContextValue;
|
|
15
|
+
|
|
16
|
+
declare function AutoTokenRefresh({ children }: {
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
}): string | number | bigint | boolean | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | null;
|
|
19
|
+
|
|
20
|
+
declare function loginUrl(redirectUrl: string): string;
|
|
21
|
+
declare function profileUrl(redirectUrl?: string): string;
|
|
22
|
+
declare function logout(): Promise<void>;
|
|
23
|
+
declare function refreshToken(): Promise<boolean>;
|
|
24
|
+
|
|
25
|
+
export { AuthProvider, AutoTokenRefresh, LemonUser, loginUrl, logout, profileUrl, refreshToken, useAuth };
|
package/dist/client/index.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import {
|
|
3
|
+
LOGIN_URL,
|
|
4
|
+
LOGOUT_URL,
|
|
5
|
+
PROFILE_PAGE_URL,
|
|
6
|
+
REFRESH_URL
|
|
7
|
+
} from "../chunk-B2EFAFKY.js";
|
|
2
8
|
|
|
3
9
|
// src/client/context.tsx
|
|
4
10
|
import { createContext, useContext } from "react";
|
|
@@ -21,15 +27,6 @@ function useAuth() {
|
|
|
21
27
|
import { useEffect } from "react";
|
|
22
28
|
import { useRouter } from "next/navigation";
|
|
23
29
|
|
|
24
|
-
// src/constants.ts
|
|
25
|
-
var AUTH_SERVER_URL = "https://auth.lemondouble.com";
|
|
26
|
-
var JWKS_URL = `${AUTH_SERVER_URL}/.well-known/jwks.json`;
|
|
27
|
-
var LOGIN_URL = `${AUTH_SERVER_URL}/api/oauth2/google/login`;
|
|
28
|
-
var REFRESH_URL = `${AUTH_SERVER_URL}/api/token/refresh`;
|
|
29
|
-
var LOGOUT_URL = `${AUTH_SERVER_URL}/api/token/logout`;
|
|
30
|
-
var PROFILE_URL = `${AUTH_SERVER_URL}/api/user/me`;
|
|
31
|
-
var PROFILE_PAGE_URL = `${AUTH_SERVER_URL}/profile`;
|
|
32
|
-
|
|
33
30
|
// src/client/url.ts
|
|
34
31
|
function loginUrl(redirectUrl) {
|
|
35
32
|
return `${LOGIN_URL}?redirect_url=${encodeURIComponent(redirectUrl)}`;
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/context.tsx","../../src/client/auto-token-refresh.tsx","../../src/
|
|
1
|
+
{"version":3,"sources":["../../src/client/context.tsx","../../src/client/auto-token-refresh.tsx","../../src/client/url.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport type { LemonUser } from \"../types.js\";\n\ninterface AuthContextValue {\n user: LemonUser | null;\n isAuthenticated: boolean;\n}\n\nconst AuthContext = createContext<AuthContextValue>({\n user: null,\n isAuthenticated: false,\n});\n\nexport function AuthProvider({\n user,\n children,\n}: {\n user: LemonUser | null;\n children: React.ReactNode;\n}) {\n return (\n <AuthContext value={{ user, isAuthenticated: user !== null }}>\n {children}\n </AuthContext>\n );\n}\n\nexport function useAuth(): AuthContextValue {\n return useContext(AuthContext);\n}\n","\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useRouter } from \"next/navigation\";\nimport { useAuth } from \"./context.js\";\nimport { refreshToken } from \"./url.js\";\n\nexport function AutoTokenRefresh({ children }: { children?: React.ReactNode }) {\n const { isAuthenticated } = useAuth();\n const router = useRouter();\n\n useEffect(() => {\n if (isAuthenticated) return;\n\n let ignore = false;\n\n refreshToken().then((ok) => {\n if (!ignore && ok) {\n router.refresh();\n }\n });\n\n return () => {\n ignore = true;\n };\n }, [isAuthenticated, router]);\n\n if (isAuthenticated) return null;\n return children ?? null;\n}\n","import {\n LOGIN_URL,\n LOGOUT_URL,\n PROFILE_PAGE_URL,\n REFRESH_URL,\n} from \"../constants.js\";\n\nexport function loginUrl(redirectUrl: string): string {\n return `${LOGIN_URL}?redirect_url=${encodeURIComponent(redirectUrl)}`;\n}\n\nexport function profileUrl(redirectUrl?: string): string {\n if (redirectUrl) {\n return `${PROFILE_PAGE_URL}?redirect_url=${encodeURIComponent(redirectUrl)}`;\n }\n return PROFILE_PAGE_URL;\n}\n\nexport async function logout(): Promise<void> {\n await fetch(LOGOUT_URL, {\n method: \"POST\",\n credentials: \"include\",\n });\n}\n\nexport async function refreshToken(): Promise<boolean> {\n const res = await fetch(REFRESH_URL, {\n method: \"POST\",\n credentials: \"include\",\n });\n return res.ok;\n}\n"],"mappings":";;;;;;;;AAEA,SAAS,eAAe,kBAAkB;AAqBtC;AAbJ,IAAM,cAAc,cAAgC;AAAA,EAClD,MAAM;AAAA,EACN,iBAAiB;AACnB,CAAC;AAEM,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AACF,GAGG;AACD,SACE,oBAAC,eAAY,OAAO,EAAE,MAAM,iBAAiB,SAAS,KAAK,GACxD,UACH;AAEJ;AAEO,SAAS,UAA4B;AAC1C,SAAO,WAAW,WAAW;AAC/B;;;AC7BA,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;;;ACInB,SAAS,SAAS,aAA6B;AACpD,SAAO,GAAG,SAAS,iBAAiB,mBAAmB,WAAW,CAAC;AACrE;AAEO,SAAS,WAAW,aAA8B;AACvD,MAAI,aAAa;AACf,WAAO,GAAG,gBAAgB,iBAAiB,mBAAmB,WAAW,CAAC;AAAA,EAC5E;AACA,SAAO;AACT;AAEA,eAAsB,SAAwB;AAC5C,QAAM,MAAM,YAAY;AAAA,IACtB,QAAQ;AAAA,IACR,aAAa;AAAA,EACf,CAAC;AACH;AAEA,eAAsB,eAAiC;AACrD,QAAM,MAAM,MAAM,MAAM,aAAa;AAAA,IACnC,QAAQ;AAAA,IACR,aAAa;AAAA,EACf,CAAC;AACD,SAAO,IAAI;AACb;;;ADxBO,SAAS,iBAAiB,EAAE,SAAS,GAAmC;AAC7E,QAAM,EAAE,gBAAgB,IAAI,QAAQ;AACpC,QAAM,SAAS,UAAU;AAEzB,YAAU,MAAM;AACd,QAAI,gBAAiB;AAErB,QAAI,SAAS;AAEb,iBAAa,EAAE,KAAK,CAAC,OAAO;AAC1B,UAAI,CAAC,UAAU,IAAI;AACjB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,eAAS;AAAA,IACX;AAAA,EACF,GAAG,CAAC,iBAAiB,MAAM,CAAC;AAE5B,MAAI,gBAAiB,QAAO;AAC5B,SAAO,YAAY;AACrB;","names":[]}
|