@elogroup-sereduc/ser-front-core-client 3.0.8 → 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.
@@ -1,4 +1,5 @@
1
1
  import { SerOAuth, SerOAuthConfig } from "./ser-oauth-js";
2
+ import { OidcConfig } from "./store";
2
3
  export declare function createSerOAuth(config: SerOAuthConfig): SerOAuth;
3
4
  export type CreateKeycloakAuthOptions = {
4
5
  authorizationEndpoint: string;
@@ -11,6 +12,8 @@ export type InitAuthOptions = {
11
12
  basePath?: string;
12
13
  authProviderUrl?: string;
13
14
  realm?: string;
15
+ oidcConfig?: OidcConfig;
14
16
  };
15
- export declare function initAuth({ authClient, basePath, authProviderUrl, realm, }: InitAuthOptions): Promise<boolean>;
17
+ export declare function initAuth({ authClient, basePath, authProviderUrl, realm, oidcConfig, }: InitAuthOptions): Promise<boolean>;
18
+ export declare function getAuthClient(): SerOAuth;
16
19
  //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/auth/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE1D,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAS/D;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,qBAAqB,EACrB,QAAQ,EACR,GAAG,GACJ,EAAE,yBAAyB,GAAG,QAAQ,CActC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,QAAQ,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,QAAQ,CAAC,EAC7B,UAAU,EACV,QAAa,EACb,eAAe,EACf,KAAK,GACN,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAYpC"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/auth/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAgB,UAAU,EAAE,MAAM,SAAS,CAAC;AAKnD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAS/D;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,qBAAqB,EACrB,QAAQ,EACR,GAAG,GACJ,EAAE,yBAAyB,GAAG,QAAQ,CActC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,QAAQ,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,wBAAsB,QAAQ,CAAC,EAC7B,UAAU,EACV,QAAa,EACb,eAAe,EACf,KAAK,EACL,UAAU,GACX,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBpC;AAMD,wBAAgB,aAAa,IAAI,QAAQ,CAexC"}
@@ -1,4 +1,6 @@
1
1
  import { SerOAuth } from "./ser-oauth-js";
2
+ import { useAuthStore } from "./store";
3
+ let authClientInstance = null;
2
4
  export function createSerOAuth(config) {
3
5
  const kc = new SerOAuth(config);
4
6
  kc.onTokenExpired = () => {
@@ -18,10 +20,13 @@ export function createKeycloakAuthFromUrl({ authorizationEndpoint, clientId, idp
18
20
  idp,
19
21
  });
20
22
  }
21
- export async function initAuth({ authClient, basePath = "", authProviderUrl, realm, }) {
23
+ export async function initAuth({ authClient, basePath = "", authProviderUrl, realm, oidcConfig, }) {
24
+ authClientInstance = authClient;
22
25
  if (authProviderUrl && realm) {
23
- const store = (await import("./store")).useAuthStore;
24
- store.getState().setInternalConfig(authProviderUrl, realm);
26
+ useAuthStore.getState().setInternalConfig(authProviderUrl, realm);
27
+ }
28
+ if (oidcConfig) {
29
+ useAuthStore.getState().setOidcConfig(oidcConfig);
25
30
  }
26
31
  return await authClient.init({
27
32
  onLoad: "check-sso",
@@ -29,4 +34,15 @@ export async function initAuth({ authClient, basePath = "", authProviderUrl, rea
29
34
  pkceMethod: "S256",
30
35
  });
31
36
  }
37
+ export function getAuthClient() {
38
+ if (authClientInstance) {
39
+ return authClientInstance;
40
+ }
41
+ const oidcConfig = useAuthStore.getState().oidcConfig;
42
+ if (!oidcConfig) {
43
+ throw new Error("Auth client not initialized. Call initAuth first or ensure oidcConfig is set in store.");
44
+ }
45
+ authClientInstance = createKeycloakAuthFromUrl(oidcConfig);
46
+ return authClientInstance;
47
+ }
32
48
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/auth/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,gBAAgB,CAAC;AAE1D,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGhC,EAAE,CAAC,cAAc,GAAG,GAAG,EAAE;QACvB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC;AAQD,MAAM,UAAU,yBAAyB,CAAC,EACxC,qBAAqB,EACrB,QAAQ,EACR,GAAG,GACuB;IAC1B,MAAM,GAAG,GAAG,qBAAqB;SAC9B,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAEpC,MAAM,KAAK,GACT,qBAAqB,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAErE,OAAO,cAAc,CAAC;QACpB,GAAG;QACH,KAAK;QACL,QAAQ;QACR,GAAG;KACJ,CAAC,CAAC;AACL,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAC7B,UAAU,EACV,QAAQ,GAAG,EAAE,EACb,eAAe,EACf,KAAK,GACW;IAEhB,IAAI,eAAe,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;QACrD,KAAK,CAAC,QAAQ,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,MAAM,EAAE,WAAW;QACnB,yBAAyB,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,wBAAwB;QACvF,UAAU,EAAE,MAAM;KACnB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/auth/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;AAGnD,IAAI,kBAAkB,GAAoB,IAAI,CAAC;AAE/C,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGhC,EAAE,CAAC,cAAc,GAAG,GAAG,EAAE;QACvB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC;AAQD,MAAM,UAAU,yBAAyB,CAAC,EACxC,qBAAqB,EACrB,QAAQ,EACR,GAAG,GACuB;IAC1B,MAAM,GAAG,GAAG,qBAAqB;SAC9B,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAEpC,MAAM,KAAK,GACT,qBAAqB,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAErE,OAAO,cAAc,CAAC;QACpB,GAAG;QACH,KAAK;QACL,QAAQ;QACR,GAAG;KACJ,CAAC,CAAC;AACL,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAC7B,UAAU,EACV,QAAQ,GAAG,EAAE,EACb,eAAe,EACf,KAAK,EACL,UAAU,GACM;IAEhB,kBAAkB,GAAG,UAAU,CAAC;IAGhC,IAAI,eAAe,IAAI,KAAK,EAAE,CAAC;QAC7B,YAAY,CAAC,QAAQ,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAGD,IAAI,UAAU,EAAE,CAAC;QACf,YAAY,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,MAAM,EAAE,WAAW;QACnB,yBAAyB,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,wBAAwB;QACvF,UAAU,EAAE,MAAM;KACnB,CAAC,CAAC;AACL,CAAC;AAMD,MAAM,UAAU,aAAa;IAC3B,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAGD,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IAED,kBAAkB,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
@@ -1,9 +1,9 @@
1
1
  export { SerOAuth } from "./ser-oauth-js";
2
2
  export type { SerOAuthConfig, InitOptions, LoginOptions, LogoutOptions, } from "./ser-oauth-js";
3
3
  export { useAuthStore } from "./store";
4
- export type { TokenSet } from "./store";
4
+ export type { TokenSet, OidcConfig } from "./store";
5
5
  export { createApiClient } from "./http-client";
6
- export { createSerOAuth, createKeycloakAuthFromUrl, initAuth, } from "./bootstrap";
6
+ export { createSerOAuth, createKeycloakAuthFromUrl, initAuth, getAuthClient, } from "./bootstrap";
7
7
  export type { CreateKeycloakAuthOptions, InitAuthOptions } from "./bootstrap";
8
8
  export { hasRoles } from "./route-guards";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,QAAQ,EACR,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export { SerOAuth } from "./ser-oauth-js";
2
2
  export { useAuthStore } from "./store";
3
3
  export { createApiClient } from "./http-client";
4
- export { createSerOAuth, createKeycloakAuthFromUrl, initAuth, } from "./bootstrap";
4
+ export { createSerOAuth, createKeycloakAuthFromUrl, initAuth, getAuthClient, } from "./bootstrap";
5
5
  export { hasRoles } from "./route-guards";
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAS1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,QAAQ,GACT,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAS1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,QAAQ,EACR,aAAa,GACd,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
@@ -13,19 +13,33 @@ export type ImpersonData = {
13
13
  realm: string;
14
14
  savedAt: number;
15
15
  };
16
- type AuthState = TokenSet & {
16
+ export type OidcConfig = {
17
+ authorizationEndpoint: string;
18
+ clientId: string;
19
+ idp?: string;
20
+ };
21
+ type AuthStateData = TokenSet & {
17
22
  authenticated: boolean;
18
23
  authType: "default" | "imperson";
19
24
  authProviderUrl?: string;
20
25
  realm?: string;
26
+ oidcConfig?: OidcConfig;
27
+ };
28
+ type AuthStateActions = {
21
29
  setTokens: (t: TokenSet) => void;
22
30
  setAuthType: (type: "default" | "imperson") => void;
23
31
  setInternalConfig: (authProviderUrl: string, realm: string) => void;
32
+ setOidcConfig: (config: OidcConfig) => void;
24
33
  saveImpersonData: (data: Omit<ImpersonData, "savedAt">) => void;
25
34
  loadImpersonData: (realm: string) => ImpersonData | null;
26
35
  clearImpersonData: () => void;
27
36
  clear: () => void;
28
37
  };
29
- 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
+ }
30
44
  export {};
31
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;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,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,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,wEA0DtB,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,55 +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
- setTokens: (t) => set({
13
- ...t,
14
- authenticated: Boolean(t.accessToken),
15
- }),
16
- setAuthType: (type) => set({ authType: type }),
17
- setInternalConfig: (authProviderUrl, realm) => set({ authProviderUrl, realm }),
18
- saveImpersonData: (data) => {
19
- const impersonData = {
20
- ...data,
21
- savedAt: Date.now(),
22
- };
23
- localStorage.setItem(IMPERSON_STORAGE_KEY, JSON.stringify(impersonData));
24
- },
25
- loadImpersonData: (realm) => {
26
- try {
27
- const stored = localStorage.getItem(IMPERSON_STORAGE_KEY);
28
- 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 {
29
51
  return null;
30
- const data = JSON.parse(stored);
31
- if (data.realm !== realm)
32
- return null;
33
- return data;
34
- }
35
- catch {
36
- return null;
37
- }
38
- },
39
- clearImpersonData: () => {
40
- localStorage.removeItem(IMPERSON_STORAGE_KEY);
41
- },
42
- clear: () => {
43
- set((state) => ({
44
- accessToken: null,
45
- refreshToken: null,
46
- idToken: null,
47
- accessExpiresAt: null,
48
- authenticated: false,
49
- authType: "default",
50
- authProviderUrl: state.authProviderUrl,
51
- realm: state.realm,
52
- }));
53
- },
54
- }));
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;
55
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;AAmBjC,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAgBxC,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;IAEhB,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,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;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAyB7C,MAAM,oBAAoB,GAAG,UAAU,CAAC;AA2BxC,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAY,CAAC;IAEtC,IAAI,KAAK,GAAkB;QACzB,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,SAAS;QACnB,eAAe,EAAE,SAAS;QAC1B,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,SAAS;KACtB,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,OAA+B,EAAE,EAAE;QACnD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;QACjC,MAAM,EAAE,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,OAAO,GAAqB;QAChC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,QAAQ,CAAC;gBACP,GAAG,CAAC;gBACJ,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;QAED,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAEnD,iBAAiB,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,CAC5C,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;QAEtC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAE3D,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,YAAY,GAAiB;gBACjC,GAAG,IAAI;gBACP,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;aACpB,CAAC;YACF,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE;YAClC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBAC1D,IAAI,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAC;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAiB,CAAC;gBAEhD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC;gBACtC,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,GAAG,EAAE;YACtB,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAChD,CAAC;QAED,KAAK,EAAE,GAAG,EAAE;YACV,QAAQ,CAAC;gBACP,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,eAAe,EAAE,IAAI;gBACrB,aAAa,EAAE,KAAK;gBACpB,QAAQ,EAAE,SAAS;gBACnB,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,GAAc,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;QACrD,SAAS,EAAE,CAAC,QAAkB,EAAE,EAAE;YAChC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,WAAW,EAAE,GAAkB,EAAE,CAAC,KAAK;KACxC,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;AAQpC,MAAM,UAAU,YAAY,CAAI,QAAkC;IAChE,MAAM,KAAK,GAAG,oBAAoB,CAChC,SAAS,CAAC,SAAS,EACnB,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAC7B,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAC9B,CAAC;IAEF,MAAM,SAAS,GAAc,EAAE,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IAEnE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAGD,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from "./auth";
2
- export { SerOAuth, useAuthStore, createApiClient, createSerOAuth, createKeycloakAuthFromUrl, initAuth, hasRoles, } from "./auth";
3
- export type { SerOAuthConfig, InitOptions, LoginOptions, LogoutOptions, TokenSet, } from "./auth";
2
+ export { SerOAuth, useAuthStore, createApiClient, createSerOAuth, createKeycloakAuthFromUrl, initAuth, getAuthClient, hasRoles, } from "./auth";
3
+ export type { SerOAuthConfig, InitOptions, LoginOptions, LogoutOptions, TokenSet, OidcConfig, } from "./auth";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,QAAQ,CAAC;AAGvB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,QAAQ,EACR,QAAQ,GACT,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,EACb,QAAQ,GACT,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,QAAQ,CAAC;AAGvB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,UAAU,GACX,MAAM,QAAQ,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from "./auth";
2
- export { SerOAuth, useAuthStore, createApiClient, createSerOAuth, createKeycloakAuthFromUrl, initAuth, hasRoles, } from "./auth";
2
+ export { SerOAuth, useAuthStore, createApiClient, createSerOAuth, createKeycloakAuthFromUrl, initAuth, getAuthClient, hasRoles, } from "./auth";
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,QAAQ,CAAC;AAGvB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,QAAQ,EACR,QAAQ,GACT,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,QAAQ,CAAC;AAGvB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,MAAM,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elogroup-sereduc/ser-front-core-client",
3
- "version": "3.0.8",
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
  }