@lifelens/auth 0.1.0 → 0.2.0

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/context.d.ts CHANGED
@@ -1,31 +1,16 @@
1
1
  import { type ReactNode } from "react";
2
- import type { User } from "@supabase/supabase-js";
2
+ import type { SupabaseClient, User } from "@supabase/supabase-js";
3
3
  export interface AuthContextValue {
4
4
  user: User | null;
5
5
  loading: boolean;
6
- signInWithGoogle: (options?: {
7
- redirectTo?: string;
8
- }) => Promise<{
9
- provider: string;
10
- url: string | null;
11
- } | null>;
12
- signInWithEmail: (email: string, password: string) => Promise<{
13
- user: User;
14
- session: unknown;
15
- } | null>;
16
- signUpWithEmail: (email: string, password: string, fullName: string, options?: {
17
- emailRedirectTo?: string;
18
- }) => Promise<{
19
- user: User | null;
20
- session: unknown;
21
- } | null>;
22
- resetPassword: (email: string) => Promise<void>;
6
+ supabase: SupabaseClient;
23
7
  signOut: () => Promise<void>;
24
8
  }
25
9
  interface AuthProviderProps {
26
10
  children: ReactNode;
11
+ supabaseClient?: SupabaseClient;
27
12
  }
28
13
  export declare const useAuth: () => AuthContextValue;
29
- export declare function AuthProvider({ children }: AuthProviderProps): import("react").JSX.Element;
14
+ export declare function AuthProvider({ children, supabaseClient }: AuthProviderProps): import("react").JSX.Element;
30
15
  export {};
31
16
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAIlD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAClH,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACvG,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACxK,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAMD,eAAO,MAAM,OAAO,QAAO,gBAM1B,CAAC;AAmBF,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,+BAqH3D"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAID,eAAO,MAAM,OAAO,QAAO,gBAM1B,CAAC;AAeF,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,iBAAiB,+BAqC3E"}
package/dist/context.js CHANGED
@@ -2,7 +2,6 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { createContext, useContext, useEffect, useState, useMemo, useCallback, } from "react";
4
4
  import { getSupabaseBrowserClient } from "./client";
5
- // ─── Context ───────────────────────────────────────────
6
5
  const AuthContext = createContext(null);
7
6
  export const useAuth = () => {
8
7
  const context = useContext(AuthContext);
@@ -11,7 +10,6 @@ export const useAuth = () => {
11
10
  }
12
11
  return context;
13
12
  };
14
- // ─── Sentry helper (safe fallback) ─────────────────────
15
13
  async function updateSentryUser(user) {
16
14
  try {
17
15
  const Sentry = await import("@sentry/nextjs");
@@ -26,11 +24,10 @@ async function updateSentryUser(user) {
26
24
  // @sentry/nextjs is not installed — silently skip
27
25
  }
28
26
  }
29
- // ─── Provider ──────────────────────────────────────────
30
- export function AuthProvider({ children }) {
27
+ export function AuthProvider({ children, supabaseClient }) {
31
28
  const [user, setUser] = useState(null);
32
29
  const [loading, setLoading] = useState(true);
33
- const supabase = getSupabaseBrowserClient();
30
+ const supabase = supabaseClient ?? getSupabaseBrowserClient();
34
31
  useEffect(() => {
35
32
  supabase.auth.getSession().then(({ data: { session } }) => {
36
33
  setUser(session?.user ?? null);
@@ -46,68 +43,12 @@ export function AuthProvider({ children }) {
46
43
  });
47
44
  return () => subscription.unsubscribe();
48
45
  }, [supabase]);
49
- const signInWithGoogle = useCallback(async ({ redirectTo } = {}) => {
50
- const { data, error } = await supabase.auth.signInWithOAuth({
51
- provider: "google",
52
- options: {
53
- redirectTo: redirectTo || `${globalThis.location.origin}/auth/callback`,
54
- },
55
- });
56
- if (error)
57
- throw error;
58
- return data;
59
- }, [supabase]);
60
- const signInWithEmail = useCallback(async (email, password) => {
61
- const { data, error } = await supabase.auth.signInWithPassword({
62
- email,
63
- password,
64
- });
65
- if (error)
66
- throw error;
67
- return data;
68
- }, [supabase]);
69
- const signUpWithEmail = useCallback(async (email, password, fullName, { emailRedirectTo } = {}) => {
70
- const { data, error } = await supabase.auth.signUp({
71
- email,
72
- password,
73
- options: {
74
- data: { full_name: fullName },
75
- emailRedirectTo: emailRedirectTo || `${globalThis.location.origin}/auth/callback`,
76
- },
77
- });
78
- if (error)
79
- throw error;
80
- return data;
81
- }, [supabase]);
82
- const resetPassword = useCallback(async (email) => {
83
- const { error } = await supabase.auth.resetPasswordForEmail(email, {
84
- redirectTo: `${globalThis.location.origin}/auth/reset-password`,
85
- });
86
- if (error)
87
- throw error;
88
- }, [supabase]);
89
46
  const signOut = useCallback(async () => {
90
47
  const { error } = await supabase.auth.signOut();
91
48
  if (error)
92
49
  throw error;
93
50
  }, [supabase]);
94
- const value = useMemo(() => ({
95
- user,
96
- loading,
97
- signInWithGoogle,
98
- signInWithEmail,
99
- signUpWithEmail,
100
- resetPassword,
101
- signOut,
102
- }), [
103
- user,
104
- loading,
105
- signInWithGoogle,
106
- signInWithEmail,
107
- signUpWithEmail,
108
- resetPassword,
109
- signOut,
110
- ]);
51
+ const value = useMemo(() => ({ user, loading, supabase, signOut }), [user, loading, supabase, signOut]);
111
52
  return _jsx(AuthContext.Provider, { value: value, children: children });
112
53
  }
113
54
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { useSignIn } from "./useSignIn";
2
+ export { useResetPassword } from "./useResetPassword";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { useSignIn } from "./useSignIn";
2
+ export { useResetPassword } from "./useResetPassword";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function useResetPassword(): (email: string) => Promise<void>;
2
+ //# sourceMappingURL=useResetPassword.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResetPassword.d.ts","sourceRoot":"","sources":["../../src/hooks/useResetPassword.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,YAId,MAAM,mBAUvB"}
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { useCallback } from "react";
3
+ import { useAuth } from "../context";
4
+ export function useResetPassword() {
5
+ const { supabase } = useAuth();
6
+ const resetPassword = useCallback(async (email) => {
7
+ const { error } = await supabase.auth.resetPasswordForEmail(email, {
8
+ redirectTo: `${globalThis.location.origin}/auth/reset-password`,
9
+ });
10
+ if (error)
11
+ throw error;
12
+ }, [supabase]);
13
+ return resetPassword;
14
+ }
15
+ //# sourceMappingURL=useResetPassword.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResetPassword.js","sourceRoot":"","sources":["../../src/hooks/useResetPassword.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EAAE,KAAa,EAAE,EAAE;QACtB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;YACjE,UAAU,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,sBAAsB;SAChE,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;IACzB,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,20 @@
1
+ export declare function useSignIn(): {
2
+ withOAuth: (provider: string, options?: {
3
+ redirectTo?: string;
4
+ }) => Promise<{
5
+ provider: import("@supabase/auth-js").Provider;
6
+ url: string;
7
+ }>;
8
+ withPassword: (email: string, password: string) => Promise<{
9
+ user: import("@supabase/auth-js").User;
10
+ session: import("@supabase/auth-js").Session;
11
+ weakPassword?: import("@supabase/auth-js").WeakPassword;
12
+ }>;
13
+ signUp: (email: string, password: string, fullName?: string, options?: {
14
+ emailRedirectTo?: string;
15
+ }) => Promise<{
16
+ user: import("@supabase/auth-js").User | null;
17
+ session: import("@supabase/auth-js").Session | null;
18
+ }>;
19
+ };
20
+ //# sourceMappingURL=useSignIn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignIn.d.ts","sourceRoot":"","sources":["../../src/hooks/useSignIn.ts"],"names":[],"mappings":"AAKA,wBAAgB,SAAS;0BAKT,MAAM,YACN;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;;;;0BAiBrB,MAAM,YAAY,MAAM;;;;;oBAa7B,MAAM,YACH,MAAM,aACL,MAAM,YACP;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;;;;EAmB3C"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { useCallback } from "react";
3
+ import { useAuth } from "../context";
4
+ export function useSignIn() {
5
+ const { supabase } = useAuth();
6
+ const withOAuth = useCallback(async (provider, options) => {
7
+ const { data, error } = await supabase.auth.signInWithOAuth({
8
+ provider: provider,
9
+ options: {
10
+ redirectTo: options?.redirectTo ||
11
+ `${globalThis.location.origin}/auth/callback`,
12
+ },
13
+ });
14
+ if (error)
15
+ throw error;
16
+ return data;
17
+ }, [supabase]);
18
+ const withPassword = useCallback(async (email, password) => {
19
+ const { data, error } = await supabase.auth.signInWithPassword({
20
+ email,
21
+ password,
22
+ });
23
+ if (error)
24
+ throw error;
25
+ return data;
26
+ }, [supabase]);
27
+ const signUp = useCallback(async (email, password, fullName, options) => {
28
+ const { data, error } = await supabase.auth.signUp({
29
+ email,
30
+ password,
31
+ options: {
32
+ data: fullName ? { full_name: fullName } : undefined,
33
+ emailRedirectTo: options?.emailRedirectTo ||
34
+ `${globalThis.location.origin}/auth/callback`,
35
+ },
36
+ });
37
+ if (error)
38
+ throw error;
39
+ return data;
40
+ }, [supabase]);
41
+ return { withOAuth, withPassword, signUp };
42
+ }
43
+ //# sourceMappingURL=useSignIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignIn.js","sourceRoot":"","sources":["../../src/hooks/useSignIn.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,UAAU,SAAS;IACvB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAE/B,MAAM,SAAS,GAAG,WAAW,CAC3B,KAAK,EACH,QAAgB,EAChB,OAAiC,EACjC,EAAE;QACF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;YAC1D,QAAQ,EAAE,QAAiB;YAC3B,OAAO,EAAE;gBACP,UAAU,EACR,OAAO,EAAE,UAAU;oBACnB,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,gBAAgB;aAChD;SACF,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EAAE,KAAa,EAAE,QAAgB,EAAE,EAAE;QACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC7D,KAAK;YACL,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EACH,KAAa,EACb,QAAgB,EAChB,QAAiB,EACjB,OAAsC,EACtC,EAAE;QACF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YACjD,KAAK;YACL,QAAQ;YACR,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;gBACpD,eAAe,EACb,OAAO,EAAE,eAAe;oBACxB,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,gBAAgB;aAChD;SACF,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC"}
package/dist/server.d.ts CHANGED
@@ -8,4 +8,8 @@ export declare function requireServerAuth(hubUrl?: string): Promise<{
8
8
  user: User;
9
9
  supabase: SupabaseClient;
10
10
  }>;
11
+ export declare function requireApiAuth(): Promise<{
12
+ user: User;
13
+ supabase: SupabaseClient;
14
+ }>;
11
15
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAMlE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAmC/D;AAED,wBAAsB,iBAAiB,CACrC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAE,CAAC,CAYnD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAMlE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAmC/D;AAED,wBAAsB,iBAAiB,CACrC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAE,CAAC,CAWnD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAC9C,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC,CASD"}
package/dist/server.js CHANGED
@@ -32,9 +32,16 @@ export async function requireServerAuth(hubUrl) {
32
32
  const { user, supabase } = await getServerUser();
33
33
  if (!user) {
34
34
  redirect(hubUrl ? `${hubUrl}/login` : "/login");
35
- // redirect() throws internally — this satisfies TypeScript narrowing
36
35
  throw new Error("Redirect should have been thrown");
37
36
  }
38
37
  return { user, supabase };
39
38
  }
39
+ export async function requireApiAuth() {
40
+ const { user, supabase } = await getServerUser();
41
+ if (!user) {
42
+ const { NextResponse } = await import("next/server");
43
+ throw NextResponse.json({ error: "Unauthorized" }, { status: 401 });
44
+ }
45
+ return { user, supabase };
46
+ }
40
47
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa;IAC9C,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAuB,EAAE;IACjD,CAAC,CAAC,SAAS,CAAC;AAOd,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;IAEpC,MAAM,QAAQ,GAAG,kBAAkB,CACjC,OAAO,CAAC,GAAG,CAAC,wBAAyB,EACrC,OAAO,CAAC,GAAG,CAAC,6BAA8B,EAC1C;QACE,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE;YACP,MAAM;gBACJ,OAAO,WAAW,CAAC,MAAM,EAAE,CAAC;YAC9B,CAAC;YACD,MAAM,CAAC,YAAY;gBACjB,IAAI,CAAC;oBACH,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAChD,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CACtC,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,0DAA0D;gBAC5D,CAAC;YACH,CAAC;SACF;KACF,CACF,CAAC;IAEF,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,EACd,KAAK,GACN,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAElC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAe;IAEf,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAErD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAEjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChD,qEAAqE;QACrE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa;IAC9C,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAuB,EAAE;IACjD,CAAC,CAAC,SAAS,CAAC;AAOd,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;IAEpC,MAAM,QAAQ,GAAG,kBAAkB,CACjC,OAAO,CAAC,GAAG,CAAC,wBAAyB,EACrC,OAAO,CAAC,GAAG,CAAC,6BAA8B,EAC1C;QACE,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE;YACP,MAAM;gBACJ,OAAO,WAAW,CAAC,MAAM,EAAE,CAAC;YAC9B,CAAC;YACD,MAAM,CAAC,YAAY;gBACjB,IAAI,CAAC;oBACH,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAChD,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CACtC,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,0DAA0D;gBAC5D,CAAC;YACH,CAAC;SACF;KACF,CACF,CAAC;IAEF,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,EACd,KAAK,GACN,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAElC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAe;IAEf,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAErD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAEjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAIlC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAEjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type { User, Session, AuthError } from "@supabase/supabase-js";
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifelens/auth",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Universal auth SDK for the LifeLens ecosystem — works across any Next.js app, independent repos, and mobile apps",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -38,6 +38,14 @@
38
38
  "./callback": {
39
39
  "types": "./dist/callback.d.ts",
40
40
  "import": "./dist/callback.js"
41
+ },
42
+ "./hooks": {
43
+ "types": "./dist/hooks/index.d.ts",
44
+ "import": "./dist/hooks/index.js"
45
+ },
46
+ "./types": {
47
+ "types": "./dist/types.d.ts",
48
+ "import": "./dist/types.js"
41
49
  }
42
50
  },
43
51
  "files": [
@@ -45,18 +53,23 @@
45
53
  ],
46
54
  "scripts": {
47
55
  "build": "tsc",
56
+ "test": "vitest run",
57
+ "test:watch": "vitest",
48
58
  "clean": "rimraf dist",
49
59
  "prepublishOnly": "npm run build"
50
60
  },
51
61
  "dependencies": {
52
- "@supabase/ssr": "^0.7.0",
53
62
  "@supabase/supabase-js": "^2.80.0"
54
63
  },
55
64
  "peerDependencies": {
65
+ "@supabase/ssr": "^0.5.0 || ^0.6.0 || ^0.7.0",
56
66
  "next": "^14.0.0 || ^15.0.0 || ^16.0.0",
57
67
  "react": "^18.0.0 || ^19.0.0"
58
68
  },
59
69
  "peerDependenciesMeta": {
70
+ "@supabase/ssr": {
71
+ "optional": true
72
+ },
60
73
  "next": {
61
74
  "optional": true
62
75
  },