@krosoft/react-supabase 0.0.1 → 0.0.3
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/README.md +1 -1
- package/dist/{auth/AuthContext.d.ts → contexts/auth.context.d.ts} +5 -3
- package/dist/contexts/auth.context.d.ts.map +1 -0
- package/dist/{auth/AuthContext.js → contexts/auth.context.js} +1 -1
- package/dist/contexts/auth.context.js.map +1 -0
- package/dist/contexts/index.d.ts +3 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/contexts/index.js +2 -0
- package/dist/contexts/index.js.map +1 -0
- package/dist/helpers/auth.helper.d.ts +13 -0
- package/dist/helpers/auth.helper.d.ts.map +1 -0
- package/dist/helpers/auth.helper.js +51 -0
- package/dist/helpers/auth.helper.js.map +1 -0
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +2 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/hooks/behaviors/useAuth.d.ts +3 -0
- package/dist/hooks/behaviors/useAuth.d.ts.map +1 -0
- package/dist/{auth → hooks/behaviors}/useAuth.js +1 -1
- package/dist/hooks/behaviors/useAuth.js.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useSupabaseQuery.d.ts.map +1 -1
- package/dist/hooks/useSupabaseQuery.js.map +1 -1
- package/dist/{auth → providers}/AuthProvider.d.ts +4 -0
- package/dist/providers/AuthProvider.d.ts.map +1 -0
- package/dist/providers/AuthProvider.js +153 -0
- package/dist/providers/AuthProvider.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +2 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/types/CustomUserMetadata.d.ts +9 -0
- package/dist/types/CustomUserMetadata.d.ts.map +1 -0
- package/dist/types/CustomUserMetadata.js +2 -0
- package/dist/types/CustomUserMetadata.js.map +1 -0
- package/dist/types/JwtPayloadWithMetadata.d.ts +5 -0
- package/dist/types/JwtPayloadWithMetadata.d.ts.map +1 -0
- package/dist/types/JwtPayloadWithMetadata.js +2 -0
- package/dist/types/JwtPayloadWithMetadata.js.map +1 -0
- package/dist/types/TenantMetadata.d.ts +6 -0
- package/dist/types/TenantMetadata.d.ts.map +1 -0
- package/dist/types/TenantMetadata.js +2 -0
- package/dist/types/TenantMetadata.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +26 -5
- package/dist/auth/AuthContext.d.ts.map +0 -1
- package/dist/auth/AuthContext.js.map +0 -1
- package/dist/auth/AuthProvider.d.ts.map +0 -1
- package/dist/auth/AuthProvider.js +0 -38
- package/dist/auth/AuthProvider.js.map +0 -1
- package/dist/auth/index.d.ts +0 -5
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -4
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/useAuth.d.ts +0 -3
- package/dist/auth/useAuth.d.ts.map +0 -1
- package/dist/auth/useAuth.js.map +0 -1
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
# krosoft-packages-react-supabase
|
|
1
|
+
# krosoft-packages-react-supabase
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { Session, User } from "@supabase/supabase-js";
|
|
2
2
|
export interface AuthContextType {
|
|
3
|
+
isAuthenticated: boolean;
|
|
3
4
|
user: User | null;
|
|
4
5
|
session: Session | null;
|
|
5
6
|
isLoading: boolean;
|
|
6
7
|
signIn: (email: string, password: string) => Promise<void>;
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
signUp: (email: string, password: string, name: string) => Promise<void>;
|
|
9
|
+
signOut: (redirectUrl?: string) => Promise<void>;
|
|
10
|
+
getLoginUrl: (redirectUrl?: string) => string;
|
|
9
11
|
}
|
|
10
12
|
export declare const AuthContext: import("react").Context<AuthContextType | undefined>;
|
|
11
|
-
//# sourceMappingURL=
|
|
13
|
+
//# sourceMappingURL=auth.context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.context.d.ts","sourceRoot":"","sources":["../../src/contexts/auth.context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAED,eAAO,MAAM,WAAW,sDAAwD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.context.js","sourceRoot":"","sources":["../../src/contexts/auth.context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AActC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAA8B,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Session, User } from "@supabase/supabase-js";
|
|
2
|
+
import type { TenantMetadata } from "../types/TenantMetadata";
|
|
3
|
+
export declare const enrichUserWithMetadata: (user: User, session: Session) => User;
|
|
4
|
+
export declare const extractUserMetadataFromSession: (session: Session | null) => {
|
|
5
|
+
roles: string[];
|
|
6
|
+
permissions: string[];
|
|
7
|
+
tenants: TenantMetadata[];
|
|
8
|
+
};
|
|
9
|
+
export declare const getTenantsId: (user: User | null) => string[];
|
|
10
|
+
export declare const getTenant: (user: User | null) => TenantMetadata | null;
|
|
11
|
+
export declare const getTenants: (user: User | null) => TenantMetadata[];
|
|
12
|
+
export declare const checkMultiTenants: (tenants: TenantMetadata[] | null) => boolean;
|
|
13
|
+
//# sourceMappingURL=auth.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/auth.helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAI3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,eAAO,MAAM,sBAAsB,GAAI,MAAM,IAAI,EAAE,SAAS,OAAO,KAAG,IAgBrE,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,SAAS,OAAO,GAAG,IAAI,KAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAgB3I,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,GAAG,IAAI,KAAG,MAAM,EAEtD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,MAAM,IAAI,GAAG,IAAI,KAAG,cAAc,GAAG,IAG9D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,GAAG,IAAI,KAAG,cAAc,EAS5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,SAAS,cAAc,EAAE,GAAG,IAAI,KAAG,OAEpE,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jwtDecode } from "jwt-decode";
|
|
2
|
+
export const enrichUserWithMetadata = (user, session) => {
|
|
3
|
+
if (!user || !session) {
|
|
4
|
+
return user;
|
|
5
|
+
}
|
|
6
|
+
const metadata = extractUserMetadataFromSession(session);
|
|
7
|
+
return {
|
|
8
|
+
...user,
|
|
9
|
+
user_metadata: {
|
|
10
|
+
...user.user_metadata,
|
|
11
|
+
roles: metadata.roles,
|
|
12
|
+
permissions: metadata.permissions,
|
|
13
|
+
tenants: metadata.tenants,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export const extractUserMetadataFromSession = (session) => {
|
|
18
|
+
if (!session?.access_token) {
|
|
19
|
+
return { roles: [], permissions: [], tenants: [] };
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const jwt = jwtDecode(session.access_token);
|
|
23
|
+
return {
|
|
24
|
+
roles: jwt.user_metadata?.roles ?? [],
|
|
25
|
+
permissions: jwt.user_metadata?.permissions ?? [],
|
|
26
|
+
tenants: jwt.user_metadata?.tenants ?? [],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return { roles: [], permissions: [], tenants: [] };
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
export const getTenantsId = (user) => {
|
|
34
|
+
return getTenants(user).map(tenant => tenant.id);
|
|
35
|
+
};
|
|
36
|
+
export const getTenant = (user) => {
|
|
37
|
+
const tenants = getTenants(user);
|
|
38
|
+
return tenants.length === 0 ? null : tenants[0];
|
|
39
|
+
};
|
|
40
|
+
export const getTenants = (user) => {
|
|
41
|
+
if (!user?.user_metadata?.tenants) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const metadata = user.user_metadata;
|
|
45
|
+
const tenants = (metadata.tenants ?? []);
|
|
46
|
+
return [...tenants].sort((a, b) => a.name.localeCompare(b.name));
|
|
47
|
+
};
|
|
48
|
+
export const checkMultiTenants = (tenants) => {
|
|
49
|
+
return (tenants?.length ?? 0) > 1;
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=auth.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.helper.js","sourceRoot":"","sources":["../../src/helpers/auth.helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAU,EAAE,OAAgB,EAAQ,EAAE;IAC3E,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAEzD,OAAO;QACL,GAAG,IAAI;QACP,aAAa,EAAE;YACb,GAAG,IAAI,CAAC,aAAa;YACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,OAAuB,EAAyE,EAAE;IAC/I,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAyB,OAAO,CAAC,YAAY,CAAC,CAAC;QAEpE,OAAO;YACL,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YACrC,WAAW,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW,IAAI,EAAE;YACjD,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,OAAO,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAiB,EAAY,EAAE;IAC1D,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAiB,EAAyB,EAAE;IACpE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAiB,EAAoB,EAAE;IAChE,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAmC,CAAC;IAC1D,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAqB,CAAC;IAE7D,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAgC,EAAW,EAAE;IAC7E,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../src/hooks/behaviors/useAuth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,eAAO,MAAM,OAAO,QAAO,eAM1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../../src/hooks/behaviors/useAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAoB,EAAE;IAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/hooks/index.js
CHANGED
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSupabaseQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useSupabaseQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,KAAK,eAAe,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC;AAE1F,eAAO,MAAM,gBAAgB,GAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"useSupabaseQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useSupabaseQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,KAAK,eAAe,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC;AAE1F,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,UAAU,SAAS,OAAO,EAAE,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,iBAAc,KAAG,cAAc,CAAC,CAAC,EAAE,KAAK,CAetI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSupabaseQuery.js","sourceRoot":"","sources":["../../src/hooks/useSupabaseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"useSupabaseQuery.js","sourceRoot":"","sources":["../../src/hooks/useSupabaseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAI,QAA4B,EAAE,OAA2B,EAAE,OAAO,GAAG,IAAI,EAA4B,EAAE;IACzI,OAAO,QAAQ,CAAW;QACxB,QAAQ;QACR,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;YACxC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -2,6 +2,10 @@ import type { SupabaseClient } from "@supabase/supabase-js";
|
|
|
2
2
|
interface AuthProviderProps {
|
|
3
3
|
client: SupabaseClient;
|
|
4
4
|
children: React.ReactNode;
|
|
5
|
+
navigate: (path: string) => void;
|
|
6
|
+
onSuccess?: (message: string) => void;
|
|
7
|
+
onError?: (message: string) => void;
|
|
8
|
+
loginPath?: string;
|
|
5
9
|
}
|
|
6
10
|
export declare const AuthProvider: React.FC<AuthProviderProps>;
|
|
7
11
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../src/providers/AuthProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,cAAc,EAAQ,MAAM,uBAAuB,CAAC;AAK3E,UAAU,iBAAiB;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAsKpD,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
4
|
+
import { AuthContext } from "../contexts/auth.context";
|
|
5
|
+
import { enrichUserWithMetadata } from "../helpers/auth.helper";
|
|
6
|
+
export const AuthProvider = ({ client, children, navigate, onSuccess, onError, loginPath = "/auth/login" }) => {
|
|
7
|
+
const [user, setUser] = useState(null);
|
|
8
|
+
const [session, setSession] = useState(null);
|
|
9
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
10
|
+
const queryClient = useQueryClient();
|
|
11
|
+
const clearAllData = () => {
|
|
12
|
+
queryClient.clear();
|
|
13
|
+
};
|
|
14
|
+
const getLoginUrl = (redirectUrl) => {
|
|
15
|
+
if (redirectUrl) {
|
|
16
|
+
return `${loginPath}?redirect=${encodeURIComponent(redirectUrl)}`;
|
|
17
|
+
}
|
|
18
|
+
const currentPath = window.location.pathname;
|
|
19
|
+
if (currentPath !== loginPath && currentPath !== "/") {
|
|
20
|
+
return `${loginPath}?redirect=${encodeURIComponent(currentPath)}`;
|
|
21
|
+
}
|
|
22
|
+
return loginPath;
|
|
23
|
+
};
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
const initSession = async () => {
|
|
26
|
+
try {
|
|
27
|
+
const { data, error } = await client.auth.getSession();
|
|
28
|
+
if (error) {
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
if (data.session?.user) {
|
|
32
|
+
setSession(data.session);
|
|
33
|
+
setUser(enrichUserWithMetadata(data.session.user, data.session));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
setSession(null);
|
|
37
|
+
setUser(null);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
setSession(null);
|
|
42
|
+
setUser(null);
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
setIsLoading(false);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const { data: listener } = client.auth.onAuthStateChange((_event, newSession) => {
|
|
49
|
+
if (_event !== "INITIAL_SESSION") {
|
|
50
|
+
clearAllData();
|
|
51
|
+
}
|
|
52
|
+
if (newSession?.user) {
|
|
53
|
+
setSession(newSession);
|
|
54
|
+
setUser(enrichUserWithMetadata(newSession.user, newSession));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
setSession(null);
|
|
58
|
+
setUser(null);
|
|
59
|
+
}
|
|
60
|
+
setIsLoading(false);
|
|
61
|
+
});
|
|
62
|
+
void initSession();
|
|
63
|
+
return () => {
|
|
64
|
+
listener.subscription.unsubscribe();
|
|
65
|
+
};
|
|
66
|
+
}, [client, queryClient]);
|
|
67
|
+
const signIn = async (email, password) => {
|
|
68
|
+
try {
|
|
69
|
+
setIsLoading(true);
|
|
70
|
+
const { data, error } = await client.auth.signInWithPassword({ email, password });
|
|
71
|
+
if (error) {
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
clearAllData();
|
|
75
|
+
if (data.session && data.user) {
|
|
76
|
+
setUser(enrichUserWithMetadata(data.user, data.session));
|
|
77
|
+
setSession(data.session);
|
|
78
|
+
}
|
|
79
|
+
navigate("/");
|
|
80
|
+
onSuccess?.("Connexion réussie");
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
const message = err instanceof Error ? err.message : "Échec de la connexion";
|
|
84
|
+
onError?.(message);
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
setIsLoading(false);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
const signUp = async (email, password, name) => {
|
|
91
|
+
try {
|
|
92
|
+
setIsLoading(true);
|
|
93
|
+
const { error } = await client.auth.signUp({
|
|
94
|
+
email,
|
|
95
|
+
password,
|
|
96
|
+
options: { data: { name } },
|
|
97
|
+
});
|
|
98
|
+
if (error) {
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
clearAllData();
|
|
102
|
+
navigate("/");
|
|
103
|
+
onSuccess?.("Inscription réussie");
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
const message = err instanceof Error ? err.message : "Échec de l'inscription";
|
|
107
|
+
onError?.(message);
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
setIsLoading(false);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const signOut = async (redirectUrl) => {
|
|
114
|
+
try {
|
|
115
|
+
setIsLoading(true);
|
|
116
|
+
if (!session) {
|
|
117
|
+
setUser(null);
|
|
118
|
+
setSession(null);
|
|
119
|
+
clearAllData();
|
|
120
|
+
navigate(getLoginUrl(redirectUrl));
|
|
121
|
+
onSuccess?.("Déconnexion réussie");
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const { error } = await client.auth.signOut();
|
|
125
|
+
if (error) {
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
clearAllData();
|
|
129
|
+
navigate(getLoginUrl(redirectUrl));
|
|
130
|
+
onSuccess?.("Déconnexion réussie");
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
setUser(null);
|
|
134
|
+
setSession(null);
|
|
135
|
+
clearAllData();
|
|
136
|
+
navigate(getLoginUrl());
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
setIsLoading(false);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
return (_jsx(AuthContext.Provider, { value: {
|
|
143
|
+
isAuthenticated: !!user,
|
|
144
|
+
user,
|
|
145
|
+
session,
|
|
146
|
+
isLoading,
|
|
147
|
+
signIn,
|
|
148
|
+
signUp,
|
|
149
|
+
signOut,
|
|
150
|
+
getLoginUrl,
|
|
151
|
+
}, children: children }));
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=AuthProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../src/providers/AuthProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TenantMetadata } from "./TenantMetadata";
|
|
2
|
+
export interface CustomUserMetadata {
|
|
3
|
+
avatar_url?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
roles?: string[];
|
|
6
|
+
permissions?: string[];
|
|
7
|
+
tenants?: TenantMetadata[];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=CustomUserMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomUserMetadata.d.ts","sourceRoot":"","sources":["../../src/types/CustomUserMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomUserMetadata.js","sourceRoot":"","sources":["../../src/types/CustomUserMetadata.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JwtPayloadWithMetadata.d.ts","sourceRoot":"","sources":["../../src/types/JwtPayloadWithMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JwtPayloadWithMetadata.js","sourceRoot":"","sources":["../../src/types/JwtPayloadWithMetadata.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TenantMetadata.d.ts","sourceRoot":"","sources":["../../src/types/TenantMetadata.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TenantMetadata.js","sourceRoot":"","sources":["../../src/types/TenantMetadata.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@krosoft/react-supabase",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Krosoft shared React Supabase package",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
|
-
"./
|
|
8
|
-
"import": "./dist/
|
|
9
|
-
"types": "./dist/
|
|
7
|
+
"./contexts": {
|
|
8
|
+
"import": "./dist/contexts/index.js",
|
|
9
|
+
"types": "./dist/contexts/index.d.ts"
|
|
10
|
+
},
|
|
11
|
+
"./providers": {
|
|
12
|
+
"import": "./dist/providers/index.js",
|
|
13
|
+
"types": "./dist/providers/index.d.ts"
|
|
10
14
|
},
|
|
11
15
|
"./hooks": {
|
|
12
16
|
"import": "./dist/hooks/index.js",
|
|
13
17
|
"types": "./dist/hooks/index.d.ts"
|
|
18
|
+
},
|
|
19
|
+
"./helpers": {
|
|
20
|
+
"import": "./dist/helpers/index.js",
|
|
21
|
+
"types": "./dist/helpers/index.d.ts"
|
|
22
|
+
},
|
|
23
|
+
"./types": {
|
|
24
|
+
"import": "./dist/types/index.js",
|
|
25
|
+
"types": "./dist/types/index.d.ts"
|
|
14
26
|
}
|
|
15
27
|
},
|
|
16
28
|
"files": [
|
|
@@ -22,6 +34,9 @@
|
|
|
22
34
|
"type-check": "tsc --noEmit",
|
|
23
35
|
"test": "vitest run"
|
|
24
36
|
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"jwt-decode": "^4.0.0"
|
|
39
|
+
},
|
|
25
40
|
"peerDependencies": {
|
|
26
41
|
"react": ">=18.0.0",
|
|
27
42
|
"@supabase/supabase-js": ">=2.0.0",
|
|
@@ -30,14 +45,20 @@
|
|
|
30
45
|
"devDependencies": {
|
|
31
46
|
"@krosoft/tooling-eslint-react": ">=0.0.2",
|
|
32
47
|
"@krosoft/tooling-prettier": ">=0.0.6",
|
|
48
|
+
"@krosoft/tooling-tsconfig": ">=0.0.6",
|
|
33
49
|
"@krosoft/tooling-tsconfig-react": ">=0.0.5",
|
|
34
50
|
"@supabase/supabase-js": "^2.49.4",
|
|
35
51
|
"@tanstack/react-query": "^5.80.2",
|
|
36
52
|
"@types/react": "^18.3.0",
|
|
37
53
|
"prettier": "^3.8.1",
|
|
38
54
|
"react": "^18.3.1",
|
|
55
|
+
"react-dom": "^18.3.1",
|
|
39
56
|
"typescript": "^5.9.3",
|
|
40
|
-
"vitest": "^4.1.2"
|
|
57
|
+
"vitest": "^4.1.2",
|
|
58
|
+
"@testing-library/dom": "^10.4.0",
|
|
59
|
+
"@testing-library/react": "^16.3.0",
|
|
60
|
+
"@vitejs/plugin-react": "^4.5.2",
|
|
61
|
+
"jsdom": "^26.1.0"
|
|
41
62
|
},
|
|
42
63
|
"repository": {
|
|
43
64
|
"type": "git",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AuthContext.d.ts","sourceRoot":"","sources":["../../src/auth/AuthContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,eAAO,MAAM,WAAW,sDAAwD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AuthContext.js","sourceRoot":"","sources":["../../src/auth/AuthContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAYtC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAA8B,SAAS,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,cAAc,EAAQ,MAAM,uBAAuB,CAAC;AAG3E,UAAU,iBAAiB;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2CpD,CAAC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
|
-
import { AuthContext } from "./AuthContext";
|
|
4
|
-
export const AuthProvider = ({ client, children }) => {
|
|
5
|
-
const [user, setUser] = useState(null);
|
|
6
|
-
const [session, setSession] = useState(null);
|
|
7
|
-
const [isLoading, setIsLoading] = useState(true);
|
|
8
|
-
useEffect(() => {
|
|
9
|
-
const { data: listener } = client.auth.onAuthStateChange((_event, newSession) => {
|
|
10
|
-
setSession(newSession);
|
|
11
|
-
setUser(newSession?.user ?? null);
|
|
12
|
-
setIsLoading(false);
|
|
13
|
-
});
|
|
14
|
-
return () => {
|
|
15
|
-
listener.subscription.unsubscribe();
|
|
16
|
-
};
|
|
17
|
-
}, [client]);
|
|
18
|
-
const signIn = async (email, password) => {
|
|
19
|
-
const { error } = await client.auth.signInWithPassword({ email, password });
|
|
20
|
-
if (error) {
|
|
21
|
-
throw error;
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
const signOut = async () => {
|
|
25
|
-
const { error } = await client.auth.signOut();
|
|
26
|
-
if (error) {
|
|
27
|
-
throw error;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
const signUp = async (email, password) => {
|
|
31
|
-
const { error } = await client.auth.signUp({ email, password });
|
|
32
|
-
if (error) {
|
|
33
|
-
throw error;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
return (_jsx(AuthContext.Provider, { value: { user, session, isLoading, signIn, signOut, signUp }, children: children }));
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=AuthProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;IAChF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAc,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;YAC9E,UAAU,CAAC,UAAU,CAAC,CAAC;YACvB,OAAO,CAAC,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;YAClC,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,MAAM,GAAG,KAAK,EAAE,KAAa,EAAE,QAAgB,EAAiB,EAAE;QACtE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,EAAE,KAAa,EAAE,QAAgB,EAAiB,EAAE;QACtE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAC/E,QAAQ,GACY,CACxB,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/auth/index.d.ts
DELETED
package/dist/auth/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/auth/index.js
DELETED
package/dist/auth/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/auth/useAuth.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../src/auth/useAuth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,eAAO,MAAM,OAAO,QAAO,eAM1B,CAAC"}
|
package/dist/auth/useAuth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../src/auth/useAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAoB,EAAE;IAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|