@elogroup-sereduc/ser-front-core-client 3.0.9 → 4.0.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.
@@ -18,12 +18,14 @@ export type OidcConfig = {
18
18
  clientId: string;
19
19
  idp?: string;
20
20
  };
21
- type AuthState = TokenSet & {
21
+ type AuthStateData = TokenSet & {
22
22
  authenticated: boolean;
23
23
  authType: "default" | "imperson";
24
24
  authProviderUrl?: string;
25
25
  realm?: string;
26
26
  oidcConfig?: OidcConfig;
27
+ };
28
+ type AuthStateActions = {
27
29
  setTokens: (t: TokenSet) => void;
28
30
  setAuthType: (type: "default" | "imperson") => void;
29
31
  setInternalConfig: (authProviderUrl: string, realm: string) => void;
@@ -33,6 +35,11 @@ type AuthState = TokenSet & {
33
35
  clearImpersonData: () => void;
34
36
  clear: () => void;
35
37
  };
36
- export declare const useAuthStore: import("zustand").UseBoundStore<import("zustand").StoreApi<AuthState>>;
38
+ export type AuthState = AuthStateData & AuthStateActions;
39
+ export declare function useAuthStore(): AuthState;
40
+ export declare function useAuthStore<T>(selector: (state: AuthState) => T): T;
41
+ export declare namespace useAuthStore {
42
+ var getState: () => AuthState;
43
+ }
37
44
  export {};
38
45
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,KAAK,SAAS,GAAG,QAAQ,GAAG;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjC,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC;IACpD,iBAAiB,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;IAChE,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;IACzD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY,wEA8DtB,CAAC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,KAAK,aAAa,GAAG,QAAQ,GAAG;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,SAAS,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjC,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC;IACpD,iBAAiB,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;IAChE,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;IACzD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAsGzD,wBAAgB,YAAY,IAAI,SAAS,CAAC;AAC1C,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,CAAC;yBAAtD,YAAY;wBAjBV,SAAS"}
@@ -1,58 +1,90 @@
1
- import { create } from "zustand";
1
+ import { useSyncExternalStore } from "react";
2
2
  const IMPERSON_STORAGE_KEY = "imperson";
3
- export const useAuthStore = create((set) => ({
4
- accessToken: null,
5
- refreshToken: null,
6
- idToken: null,
7
- accessExpiresAt: null,
8
- authenticated: false,
9
- authType: "default",
10
- authProviderUrl: undefined,
11
- realm: undefined,
12
- oidcConfig: undefined,
13
- setTokens: (t) => set({
14
- ...t,
15
- authenticated: Boolean(t.accessToken),
16
- }),
17
- setAuthType: (type) => set({ authType: type }),
18
- setInternalConfig: (authProviderUrl, realm) => set({ authProviderUrl, realm }),
19
- setOidcConfig: (config) => set({ oidcConfig: config }),
20
- saveImpersonData: (data) => {
21
- const impersonData = {
22
- ...data,
23
- savedAt: Date.now(),
24
- };
25
- localStorage.setItem(IMPERSON_STORAGE_KEY, JSON.stringify(impersonData));
26
- },
27
- loadImpersonData: (realm) => {
28
- try {
29
- const stored = localStorage.getItem(IMPERSON_STORAGE_KEY);
30
- if (!stored)
3
+ const createAuthStore = () => {
4
+ const listeners = new Set();
5
+ let state = {
6
+ accessToken: null,
7
+ refreshToken: null,
8
+ idToken: null,
9
+ accessExpiresAt: null,
10
+ authenticated: false,
11
+ authType: "default",
12
+ authProviderUrl: undefined,
13
+ realm: undefined,
14
+ oidcConfig: undefined,
15
+ };
16
+ const notify = () => {
17
+ listeners.forEach((listener) => listener());
18
+ };
19
+ const setState = (partial) => {
20
+ state = { ...state, ...partial };
21
+ notify();
22
+ };
23
+ const actions = {
24
+ setTokens: (t) => {
25
+ setState({
26
+ ...t,
27
+ authenticated: Boolean(t.accessToken),
28
+ });
29
+ },
30
+ setAuthType: (type) => setState({ authType: type }),
31
+ setInternalConfig: (authProviderUrl, realm) => setState({ authProviderUrl, realm }),
32
+ setOidcConfig: (config) => setState({ oidcConfig: config }),
33
+ saveImpersonData: (data) => {
34
+ const impersonData = {
35
+ ...data,
36
+ savedAt: Date.now(),
37
+ };
38
+ localStorage.setItem(IMPERSON_STORAGE_KEY, JSON.stringify(impersonData));
39
+ },
40
+ loadImpersonData: (realm) => {
41
+ try {
42
+ const stored = localStorage.getItem(IMPERSON_STORAGE_KEY);
43
+ if (!stored)
44
+ return null;
45
+ const data = JSON.parse(stored);
46
+ if (data.realm !== realm)
47
+ return null;
48
+ return data;
49
+ }
50
+ catch {
31
51
  return null;
32
- const data = JSON.parse(stored);
33
- if (data.realm !== realm)
34
- return null;
35
- return data;
36
- }
37
- catch {
38
- return null;
39
- }
40
- },
41
- clearImpersonData: () => {
42
- localStorage.removeItem(IMPERSON_STORAGE_KEY);
43
- },
44
- clear: () => {
45
- set((state) => ({
46
- accessToken: null,
47
- refreshToken: null,
48
- idToken: null,
49
- accessExpiresAt: null,
50
- authenticated: false,
51
- authType: "default",
52
- authProviderUrl: state.authProviderUrl,
53
- realm: state.realm,
54
- oidcConfig: state.oidcConfig,
55
- }));
56
- },
57
- }));
52
+ }
53
+ },
54
+ clearImpersonData: () => {
55
+ localStorage.removeItem(IMPERSON_STORAGE_KEY);
56
+ },
57
+ clear: () => {
58
+ setState({
59
+ accessToken: null,
60
+ refreshToken: null,
61
+ idToken: null,
62
+ accessExpiresAt: null,
63
+ authenticated: false,
64
+ authType: "default",
65
+ authProviderUrl: state.authProviderUrl,
66
+ realm: state.realm,
67
+ oidcConfig: state.oidcConfig,
68
+ });
69
+ },
70
+ };
71
+ return {
72
+ getState: () => ({ ...state, ...actions }),
73
+ subscribe: (listener) => {
74
+ listeners.add(listener);
75
+ return () => listeners.delete(listener);
76
+ },
77
+ getSnapshot: () => state,
78
+ };
79
+ };
80
+ const authStore = createAuthStore();
81
+ export function useAuthStore(selector) {
82
+ const state = useSyncExternalStore(authStore.subscribe, () => authStore.getSnapshot(), () => authStore.getSnapshot());
83
+ const fullState = { ...state, ...authStore.getState() };
84
+ if (selector) {
85
+ return selector(fullState);
86
+ }
87
+ return fullState;
88
+ }
89
+ useAuthStore.getState = authStore.getState;
58
90
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAyBjC,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAkBxC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtD,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;IACb,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,KAAK;IACpB,QAAQ,EAAE,SAAS;IACnB,eAAe,EAAE,SAAS;IAC1B,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,SAAS;IAErB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CACf,GAAG,CAAC;QACF,GAAG,CAAC;QACJ,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;KACtC,CAAC;IAEJ,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE9C,iBAAiB,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,CAC5C,GAAG,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;IAEjC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAEtD,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,YAAY,GAAiB;YACjC,GAAG,IAAI;YACP,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;SACpB,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAiB,CAAC;YAEhD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,iBAAiB,EAAE,GAAG,EAAE;QACtB,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,EAAE,GAAG,EAAE;QACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACd,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,SAAS;YACnB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elogroup-sereduc/ser-front-core-client",
3
- "version": "3.0.9",
3
+ "version": "4.0.0",
4
4
  "description": "Complete OAuth/OIDC authentication system with Silent SSO, PKCE, and API client for Ser Educacional applications",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,10 +27,13 @@
27
27
  "access": "public"
28
28
  },
29
29
  "dependencies": {
30
- "axios": "^1.6.0",
31
- "zustand": "^4.4.0"
30
+ "axios": "^1.6.0"
31
+ },
32
+ "peerDependencies": {
33
+ "react": ">=18.0.0"
32
34
  },
33
35
  "devDependencies": {
36
+ "@types/react": "^18.2.0",
34
37
  "typescript": "^5.3.0"
35
38
  }
36
39
  }