@multiplatform.one/keycloak 6.1.0 → 6.3.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/README.md +58 -0
- package/dist/cjs/index.cjs +28 -1
- package/dist/cjs/index.native.cjs +36 -5
- package/dist/esm/index.js +28 -1
- package/dist/esm/index.native.js +36 -5
- package/package.json +18 -16
- package/src/betterAuth/expoAuthFlow.native.ts +56 -5
- package/src/frappeToken.ts +53 -4
- package/types/Authenticated.d.ts +9 -0
- package/types/Authenticated.d.ts.map +1 -0
- package/types/Loading.d.ts +6 -0
- package/types/Loading.d.ts.map +1 -0
- package/types/authConfig.d.ts +10 -0
- package/types/authConfig.d.ts.map +1 -0
- package/types/betterAuth/client.d.ts +798 -0
- package/types/betterAuth/client.d.ts.map +1 -0
- package/types/betterAuth/expoAuthFlow.native.d.ts +31 -0
- package/types/betterAuth/expoAuthFlow.native.d.ts.map +1 -0
- package/types/betterAuth/expoClient.d.ts +803 -0
- package/types/betterAuth/expoClient.d.ts.map +1 -0
- package/types/betterAuth/index.d.ts +3 -0
- package/types/betterAuth/index.d.ts.map +1 -0
- package/types/frappeToken.d.ts +19 -0
- package/types/frappeToken.d.ts.map +1 -0
- package/types/frappeToken.native.d.ts +15 -0
- package/types/frappeToken.native.d.ts.map +1 -0
- package/types/hooks/index.d.ts +4 -0
- package/types/hooks/index.d.ts.map +1 -0
- package/types/hooks/useAuthConfig.d.ts +2 -0
- package/types/hooks/useAuthConfig.d.ts.map +1 -0
- package/types/hooks/useTokensFromQuery/index.d.ts +2 -0
- package/types/hooks/useTokensFromQuery/index.d.ts.map +1 -0
- package/types/hooks/useTokensFromQuery/index.native.d.ts +2 -0
- package/types/hooks/useTokensFromQuery/index.native.d.ts.map +1 -0
- package/types/hooks/useTokensFromState.d.ts +2 -0
- package/types/hooks/useTokensFromState.d.ts.map +1 -0
- package/types/index.d.ts +10 -0
- package/types/index.d.ts.map +1 -0
- package/types/keycloak/base.d.ts +50 -0
- package/types/keycloak/base.d.ts.map +1 -0
- package/types/keycloak/config.d.ts +12 -0
- package/types/keycloak/config.d.ts.map +1 -0
- package/types/keycloak/context.d.ts +3 -0
- package/types/keycloak/context.d.ts.map +1 -0
- package/types/keycloak/index.d.ts +20 -0
- package/types/keycloak/index.d.ts.map +1 -0
- package/types/keycloak/index.native.d.ts +7 -0
- package/types/keycloak/index.native.d.ts.map +1 -0
- package/types/keycloak/index.webext.d.ts +19 -0
- package/types/keycloak/index.webext.d.ts.map +1 -0
- package/types/one.d.ts +28 -0
- package/types/one.d.ts.map +1 -0
- package/types/provider/AfterAuth.d.ts +6 -0
- package/types/provider/AfterAuth.d.ts.map +1 -0
- package/types/provider/KeycloakProvider.d.ts +17 -0
- package/types/provider/KeycloakProvider.d.ts.map +1 -0
- package/types/provider/authProvider/index.d.ts +13 -0
- package/types/provider/authProvider/index.d.ts.map +1 -0
- package/types/provider/authProvider/index.native.d.ts +15 -0
- package/types/provider/authProvider/index.native.d.ts.map +1 -0
- package/types/provider/authProvider/index.webext.d.ts +14 -0
- package/types/provider/authProvider/index.webext.d.ts.map +1 -0
- package/types/provider/authProvider/shared.d.ts +38 -0
- package/types/provider/authProvider/shared.d.ts.map +1 -0
- package/types/provider/index.d.ts +4 -0
- package/types/provider/index.d.ts.map +1 -0
- package/types/session/index.d.ts +29 -0
- package/types/session/index.d.ts.map +1 -0
- package/types/session/index.native.d.ts +13 -0
- package/types/session/index.native.d.ts.map +1 -0
- package/types/session/index.webext.d.ts +11 -0
- package/types/session/index.webext.d.ts.map +1 -0
- package/types/state.d.ts +18 -0
- package/types/state.d.ts.map +1 -0
- package/types/token.d.ts +129 -0
- package/types/token.d.ts.map +1 -0
- package/types/types.d.ts +19 -0
- package/types/types.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expoClient.d.ts","sourceRoot":"","sources":["../../src/betterAuth/expoClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAiBuqB,CAAC;iBAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAy3C,CAAC;aAAwC,CAAC;mBAA2C,CAAC;eAAiC,CAAC;;;;;iBAA+U,CAAC;iBAAmC,CAAC;;YAAmD,CAAC;gBAAuC,CAAC;gBAA2C,CAAC;sBAAwC,CAAC;cAAwC,CAAC;cAA8C,CAAC;eAA+B,CAAC;mBAAyG,CAAC;yBAAuB,CAAC;;eAAyC,CAAC;;;aAA0G,CAAC;YAA+B,CAAC;;;;;;;;;;;;YAA+e,CAAC;aAAgB,CAAC;cAAiB,CAAC;cAAiB,CAAC;;aAA8F,CAAC;oBAAiE,CAAC;cAAgC,CAAC;mBAAkG,CAAC;yBAA0E,CAAC;qBAAwC,CAAC;;;uBAAkF,CAAC;+GAAuL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAHt4I;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/betterAuth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keycloak access token for Frappe API requests — web variant.
|
|
3
|
+
*
|
|
4
|
+
* Web HTTP requests to a same-origin bench could ride the better-auth
|
|
5
|
+
* account cookie, but the Socket.IO realtime handshake cannot: frappe's
|
|
6
|
+
* socketio auth middleware only accepts a frappe `sid` cookie or an
|
|
7
|
+
* `Authorization` header (it never forwards arbitrary cookies to the web
|
|
8
|
+
* server). So the web client fetches the Keycloak access token from
|
|
9
|
+
* better-auth's same-origin `/get-access-token` endpoint (which refreshes
|
|
10
|
+
* server-side when expired, authenticated by the better-auth session
|
|
11
|
+
* cookie) and sends `Authorization: Bearer <token>` on every REST request
|
|
12
|
+
* and socket handshake — the same transport native uses. The bench's
|
|
13
|
+
* frappe_keycloak auth hook validates the JWT against the realm public key.
|
|
14
|
+
*/
|
|
15
|
+
/** Returns a valid Keycloak access token, or undefined when signed out. */
|
|
16
|
+
export declare function getKeycloakBearerToken(): Promise<string | undefined>;
|
|
17
|
+
/** Drop the cached token (sign-out). */
|
|
18
|
+
export declare function clearKeycloakBearerToken(): void;
|
|
19
|
+
//# sourceMappingURL=frappeToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frappeToken.d.ts","sourceRoot":"","sources":["../src/frappeToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,2EAA2E;AAC3E,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmC1E;AAED,wCAAwC;AACxC,wBAAgB,wBAAwB,SAEvC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keycloak access token for Frappe API requests — native variant.
|
|
3
|
+
*
|
|
4
|
+
* Native Frappe requests can't ride the better-auth cookies (they live in the
|
|
5
|
+
* SecureStore jar, not the OS cookie store), so the Frappe HttpClient sends
|
|
6
|
+
* `Authorization: Bearer <keycloak access token>` instead — the bench's
|
|
7
|
+
* frappe_keycloak auth hook checks the Bearer header first. The token comes
|
|
8
|
+
* from better-auth's /get-access-token endpoint (which refreshes server-side
|
|
9
|
+
* when expired), authenticated with the SecureStore cookie jar.
|
|
10
|
+
*/
|
|
11
|
+
/** Returns a valid Keycloak access token, or undefined when signed out. */
|
|
12
|
+
export declare function getKeycloakBearerToken(): Promise<string | undefined>;
|
|
13
|
+
/** Drop the cached token (sign-out). */
|
|
14
|
+
export declare function clearKeycloakBearerToken(): void;
|
|
15
|
+
//# sourceMappingURL=frappeToken.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frappeToken.native.d.ts","sourceRoot":"","sources":["../src/frappeToken.native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,2EAA2E;AAC3E,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuB1E;AAED,wCAAwC;AACxC,wBAAgB,wBAAwB,SAEvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuthConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useAuthConfig.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,4BAE5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTokensFromQuery/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,YAWjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTokensFromQuery/index.native.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,eAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTokensFromState.d.ts","sourceRoot":"","sources":["../../src/hooks/useTokensFromState.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,YAGjC"}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./Authenticated";
|
|
2
|
+
export * from "./authConfig";
|
|
3
|
+
export * from "./hooks/index";
|
|
4
|
+
export * from "./keycloak/index";
|
|
5
|
+
export * from "./provider/index";
|
|
6
|
+
export * from "./session/index";
|
|
7
|
+
export * from "./token";
|
|
8
|
+
export * from "./types";
|
|
9
|
+
export { getKeycloakBearerToken } from "./frappeToken";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type KeycloakClient from "@multiplatform.one/keycloak-js";
|
|
2
|
+
import type { KeycloakLoginOptions as KeycloakJsLoginOptions, KeycloakLogoutOptions as KeycloakJsLogoutOptions } from "@multiplatform.one/keycloak-js";
|
|
3
|
+
import type { Session } from "../session/index";
|
|
4
|
+
import type { AccessTokenParsed, TokenParsed } from "../token";
|
|
5
|
+
import type { KeycloakMock } from "../types";
|
|
6
|
+
import type { KeycloakConfig } from "./config";
|
|
7
|
+
export declare class BaseKeycloak {
|
|
8
|
+
readonly config: KeycloakConfig;
|
|
9
|
+
authenticated: boolean;
|
|
10
|
+
clientId: string;
|
|
11
|
+
email?: string;
|
|
12
|
+
idToken?: string;
|
|
13
|
+
idTokenParsed?: TokenParsed;
|
|
14
|
+
realm: string;
|
|
15
|
+
realmAccess?: RealmAccess;
|
|
16
|
+
refreshToken?: string;
|
|
17
|
+
refreshTokenParsed?: TokenParsed;
|
|
18
|
+
resourceAccess?: ResourceAccess;
|
|
19
|
+
sessionId?: string;
|
|
20
|
+
subject?: string;
|
|
21
|
+
token?: string;
|
|
22
|
+
tokenParsed?: AccessTokenParsed;
|
|
23
|
+
username?: string;
|
|
24
|
+
protected _keycloakClient?: KeycloakClient;
|
|
25
|
+
protected _login?: (_options: KeycloakLoginOptions) => Promise<undefined>;
|
|
26
|
+
protected _logout?: (_options: KeycloakLogoutOptions) => Promise<undefined>;
|
|
27
|
+
protected _mock?: KeycloakMock;
|
|
28
|
+
constructor(config: KeycloakConfig, input?: string | KeycloakClient | KeycloakMock | Session, idToken?: string, refreshToken?: string, login?: (_options: KeycloakLoginOptions) => Promise<undefined>, logout?: (_options: KeycloakLogoutOptions) => Promise<undefined>);
|
|
29
|
+
protected _handleInputObject(input: KeycloakClient | KeycloakMock | Session): void;
|
|
30
|
+
protected _parseTokens(): void;
|
|
31
|
+
protected _clear(): void;
|
|
32
|
+
protected _sync(): void;
|
|
33
|
+
getUserInfo(): Promise<any>;
|
|
34
|
+
login(options?: KeycloakLoginOptions): Promise<void>;
|
|
35
|
+
logout(options?: KeycloakLogoutOptions): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
export declare function useKeycloak(): import(".").Keycloak | null | undefined;
|
|
38
|
+
export type KeycloakLogoutOptions = KeycloakJsLogoutOptions;
|
|
39
|
+
export type KeycloakLoginOptions = KeycloakJsLoginOptions & {
|
|
40
|
+
redirect?: boolean;
|
|
41
|
+
};
|
|
42
|
+
export interface ResourceAccess {
|
|
43
|
+
[clientId: string]: {
|
|
44
|
+
roles: string[];
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export interface RealmAccess {
|
|
48
|
+
roles: string[];
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/keycloak/base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,cAAc,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EACV,oBAAoB,IAAI,sBAAsB,EAC9C,qBAAqB,IAAI,uBAAuB,EACjD,MAAM,gCAAgC,CAAC;AAGxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,qBAAa,YAAY;aAuBL,MAAM,EAAE,cAAc;IAtBjC,aAAa,UAAS;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEzB,SAAS,CAAC,eAAe,CAAC,EAAE,cAAc,CAAC;IAC3C,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1E,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5E,SAAS,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;gBAGb,MAAM,EAAE,cAAc,EACtC,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,YAAY,GAAG,OAAO,EACxD,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC,SAAS,CAAC,EAC9D,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,SAAS,CAAC;IAiBlE,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO;IAQ3E,SAAS,CAAC,YAAY;IAYtB,SAAS,CAAC,MAAM;IAgBhB,SAAS,CAAC,KAAK;IA0CT,WAAW;IAeX,KAAK,CAAC,OAAO,GAAE,oBAAyB;IAUxC,MAAM,CAAC,OAAO,GAAE,qBAA0B;CAQjD;AAED,wBAAgB,WAAW,4CAI1B;AAED,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAC5D,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B,CAAC,QAAQ,EAAE,MAAM,GAAG;QAClB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { KeycloakServerConfig } from "@multiplatform.one/keycloak-js";
|
|
2
|
+
/** App config uses the Keycloak-server shape ({ url, realm, clientId }), not generic OIDC. */
|
|
3
|
+
export interface KeycloakConfig extends KeycloakServerConfig {
|
|
4
|
+
publicClientId?: string;
|
|
5
|
+
scopes?: string[];
|
|
6
|
+
/** Better Auth server base URL (for native/Expo). Defaults to same origin on web. */
|
|
7
|
+
betterAuthBaseUrl?: string;
|
|
8
|
+
/** Expo deep-link scheme (e.g. "multiplatform-one"). Used by @better-auth/expo client. */
|
|
9
|
+
expoScheme?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const KeycloakConfigContext: import("react").Context<KeycloakConfig>;
|
|
12
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/keycloak/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAG3E,8FAA8F;AAC9F,MAAM,WAAW,cAAe,SAAQ,oBAAoB;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,qBAAqB,yCAIhC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/keycloak/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;AAElC,eAAO,MAAM,eAAe,+CAAiD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/keycloak/index.ts
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* Better Auth–powered Keycloak class and useKeycloak hook for web.
|
|
6
|
+
* Replaces the previous next-auth/react based implementation.
|
|
7
|
+
*/
|
|
8
|
+
import type KeycloakClient from "@multiplatform.one/keycloak-js";
|
|
9
|
+
import type { Session } from "../session/index";
|
|
10
|
+
import type { KeycloakMock } from "../types";
|
|
11
|
+
import { BaseKeycloak, type KeycloakLoginOptions, type KeycloakLogoutOptions } from "./base";
|
|
12
|
+
export declare class Keycloak extends BaseKeycloak {
|
|
13
|
+
protected _handleInputObject(input: KeycloakClient | KeycloakMock | Session): void;
|
|
14
|
+
login(options?: KeycloakLoginOptions): Promise<void>;
|
|
15
|
+
logout(options?: KeycloakLogoutOptions): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare function useKeycloak(): Keycloak | null | undefined;
|
|
18
|
+
export * from "./base";
|
|
19
|
+
export * from "./config";
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keycloak/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,cAAc,MAAM,gCAAgC,CAAC;AAKjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAI7F,qBAAa,QAAS,SAAQ,YAAY;IACxC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO;IAcrE,KAAK,CAAC,OAAO,GAAE,oBAAyB;IAgBxC,MAAM,CAAC,OAAO,GAAE,qBAA0B;CAqBjD;AAED,wBAAgB,WAAW,gCAwB1B;AAED,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseKeycloak } from "./base";
|
|
2
|
+
export declare class Keycloak extends BaseKeycloak {
|
|
3
|
+
}
|
|
4
|
+
export declare function useKeycloak(): import(".").Keycloak | Keycloak | null | undefined;
|
|
5
|
+
export * from "./base";
|
|
6
|
+
export * from "./config";
|
|
7
|
+
//# sourceMappingURL=index.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/keycloak/index.native.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,qBAAa,QAAS,SAAQ,YAAY;CAAG;AAE7C,wBAAgB,WAAW,uDAY1B;AAED,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/keycloak/index.webext.ts
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* WebExt Keycloak class using Better Auth client for login/logout.
|
|
6
|
+
* Patched Keycloak JS client when available (iframe/token scenarios).
|
|
7
|
+
*/
|
|
8
|
+
import type KeycloakClient from "@multiplatform.one/keycloak-js";
|
|
9
|
+
import type { KeycloakMock } from "../types";
|
|
10
|
+
import { BaseKeycloak, type KeycloakLoginOptions, type KeycloakLogoutOptions } from "./base";
|
|
11
|
+
export declare class Keycloak extends BaseKeycloak {
|
|
12
|
+
protected _handleInputObject(input: KeycloakClient | KeycloakMock): void;
|
|
13
|
+
login(options?: KeycloakLoginOptions): Promise<void>;
|
|
14
|
+
logout(options?: KeycloakLogoutOptions): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export declare function useKeycloak(): import(".").Keycloak | null | undefined;
|
|
17
|
+
export * from "./base";
|
|
18
|
+
export * from "./config";
|
|
19
|
+
//# sourceMappingURL=index.webext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.webext.d.ts","sourceRoot":"","sources":["../../src/keycloak/index.webext.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,cAAc,MAAM,gCAAgC,CAAC;AAKjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAG7F,qBAAa,QAAS,SAAQ,YAAY;IACxC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY;IAQ3D,KAAK,CAAC,OAAO,GAAE,oBAAyB;IAgBxC,MAAM,CAAC,OAAO,GAAE,qBAA0B;CAiBjD;AAED,wBAAgB,WAAW,4CAK1B;AAED,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
package/types/one.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/one.ts
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* Better Auth server configuration factory for apps using One.
|
|
6
|
+
* Replaces the previous Auth.js (createAuthConfig) approach.
|
|
7
|
+
* Stateless sessions — no database required.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createAuth(config: AuthHandlerConfig): import("better-auth").Auth<any>;
|
|
10
|
+
export interface KeycloakOptions {
|
|
11
|
+
adminPassword?: string;
|
|
12
|
+
adminUsername?: string;
|
|
13
|
+
baseUrl?: string;
|
|
14
|
+
clientId: string;
|
|
15
|
+
clientSecret: string;
|
|
16
|
+
realm?: string;
|
|
17
|
+
authorization?: Record<string, any>;
|
|
18
|
+
}
|
|
19
|
+
export interface AuthHandlerConfig {
|
|
20
|
+
baseUrl?: string;
|
|
21
|
+
keycloak: KeycloakOptions;
|
|
22
|
+
secret?: string;
|
|
23
|
+
scopes?: string[];
|
|
24
|
+
/** Expo deep-link scheme (e.g. "multiplatform-one") — added to trustedOrigins. */
|
|
25
|
+
expoScheme?: string;
|
|
26
|
+
}
|
|
27
|
+
export type Auth = ReturnType<typeof createAuth>;
|
|
28
|
+
//# sourceMappingURL=one.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"one.d.ts","sourceRoot":"","sources":["../src/one.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,mCA+CnD;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ComponentType, type PropsWithChildren } from "react";
|
|
2
|
+
export interface AfterAuthProps extends PropsWithChildren {
|
|
3
|
+
loadingComponent?: ComponentType;
|
|
4
|
+
}
|
|
5
|
+
export declare function AfterAuth({ children, loadingComponent: _loadingComponent }: AfterAuthProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=AfterAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AfterAuth.d.ts","sourceRoot":"","sources":["../../src/provider/AfterAuth.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAK9E,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,gBAAgB,CAAC,EAAE,aAAa,CAAC;CAClC;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,EAAE,cAAc,2CAwD1F"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PropsWithChildren } from "react";
|
|
2
|
+
import type { AuthConfig } from "../authConfig";
|
|
3
|
+
export interface KeycloakProviderProps extends PropsWithChildren, AuthConfig {
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
clientId?: string;
|
|
6
|
+
publicClientId?: string;
|
|
7
|
+
realm?: string;
|
|
8
|
+
/** Better Auth server base URL (drives the native sign-in flow). Without it
|
|
9
|
+
* the native provider falls back to a hardcoded localhost:5000 -- on macOS
|
|
10
|
+
* that's ControlCenter (AirPlay) answering 403 to everything, which makes
|
|
11
|
+
* the Login button a perfectly silent no-op. */
|
|
12
|
+
betterAuthBaseUrl?: string;
|
|
13
|
+
/** App scheme for the Expo auth-session redirect (native). */
|
|
14
|
+
expoScheme?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function KeycloakProvider({ baseUrl, betterAuthBaseUrl, children, clientId, expoScheme, loginRedirectUri, debug, disabled, iframeSso, publicClientId, realm, }: KeycloakProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=KeycloakProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeycloakProvider.d.ts","sourceRoot":"","sources":["../../src/provider/KeycloakProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB,EAAE,UAAU;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;oDAGgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,EACd,KAAK,GACN,EAAE,qBAAqB,2CAsBvB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/provider/auth_provider/index.tsx
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* Web AuthProvider using Better Auth.
|
|
6
|
+
* Replaces the previous next-auth SessionProvider approach.
|
|
7
|
+
* For cookie-based (session) auth, Better Auth manages the session
|
|
8
|
+
* server-side; no client-side SessionProvider wrapper is needed.
|
|
9
|
+
* Patched Keycloak JS client for iframe/direct-token strategies.
|
|
10
|
+
*/
|
|
11
|
+
import type { AuthProviderProps } from "./shared";
|
|
12
|
+
export declare function AuthProvider({ children, disabled, keycloakConfig, keycloakInitOptions, loadingComponent, }: AuthProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/provider/authProvider/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,UAAU,CAAC;AAGzE,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,GACjB,EAAE,iBAAiB,2CA0WnB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/provider/auth_provider/index.native.tsx
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* Native (Expo) AuthProvider using the hand-rolled Better Auth flow
|
|
6
|
+
* (betterAuth/expoAuthFlow.native.ts): fetch + expo-web-browser + SecureStore.
|
|
7
|
+
* Deliberately NOT @better-auth/expo/client — its import graph drags
|
|
8
|
+
* better-auth's cookies module -> @better-auth/core db schema -> zod into the
|
|
9
|
+
* Hermes bundle, and zod's module init dies under the vxrn/rolldown dev
|
|
10
|
+
* transform. The server side stays better-auth (the expo() plugin provides
|
|
11
|
+
* /expo-authorization-proxy and the cookie hand-back).
|
|
12
|
+
*/
|
|
13
|
+
import type { AuthProviderProps } from "./shared";
|
|
14
|
+
export declare function AuthProvider({ children, disabled, keycloakConfig, loadingComponent, }: AuthProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=index.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../../src/provider/authProvider/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,EAAE,iBAAiB,2CA6FnB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/provider/auth_provider/index.webext.tsx
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* WebExt AuthProvider using Better Auth client.
|
|
6
|
+
* Web extensions run in a browser context — Better Auth client
|
|
7
|
+
* works via same-origin cookies. The extension must have host
|
|
8
|
+
* permissions for the Better Auth server origin.
|
|
9
|
+
*
|
|
10
|
+
* Patched Keycloak JS client for direct-token scenarios (iframe, store).
|
|
11
|
+
*/
|
|
12
|
+
import type { AuthProviderProps } from "./shared";
|
|
13
|
+
export declare function AuthProvider({ children, disabled, keycloakConfig, keycloakInitOptions, loadingComponent, }: AuthProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=index.webext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.webext.d.ts","sourceRoot":"","sources":["../../../src/provider/authProvider/index.webext.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,UAAU,CAAC;AAGzE,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,GACjB,EAAE,iBAAiB,2CA+UnB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/provider/auth_provider/shared.ts
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* Shared types and constants for AuthProvider.
|
|
6
|
+
* No longer depends on next-auth.
|
|
7
|
+
*/
|
|
8
|
+
import type { KeycloakInitOptions } from "@multiplatform.one/keycloak-js";
|
|
9
|
+
import type { ComponentType, PropsWithChildren } from "react";
|
|
10
|
+
import type { KeycloakConfig } from "../../keycloak/index";
|
|
11
|
+
export declare const defaultKeycloakInitOptions: KeycloakInitOptions;
|
|
12
|
+
export interface MessageSchema {
|
|
13
|
+
type: string;
|
|
14
|
+
payload?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface AuthProviderProps extends PropsWithChildren {
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
keycloakConfig: KeycloakConfig;
|
|
19
|
+
keycloakInitOptions?: KeycloakInitOptions;
|
|
20
|
+
loadingComponent?: ComponentType;
|
|
21
|
+
}
|
|
22
|
+
export interface Tokens<B = boolean> {
|
|
23
|
+
idToken?: string | B;
|
|
24
|
+
refreshToken?: string | B;
|
|
25
|
+
token?: string | B;
|
|
26
|
+
}
|
|
27
|
+
export declare enum AuthStrategy {
|
|
28
|
+
BetterAuth = "better-auth",
|
|
29
|
+
ExpoAuth = "expo-auth",
|
|
30
|
+
KeycloakClientImplicit = "keycloak-client-implicit",
|
|
31
|
+
KeycloakClientStandard = "keycloak-client-standard"
|
|
32
|
+
}
|
|
33
|
+
export declare enum AuthSource {
|
|
34
|
+
Query = "query",
|
|
35
|
+
Session = "session",
|
|
36
|
+
Store = "store"
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/provider/authProvider/shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,eAAO,MAAM,0BAA0B,EAAE,mBAMxC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,aAAa,CAAC;CAClC;AAED,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,OAAO;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;CACpB;AAED,oBAAY,YAAY;IACtB,UAAU,gBAAgB;IAC1B,QAAQ,cAAc;IACtB,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;CACpD;AAED,oBAAY,UAAU;IACpB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/session/index.ts
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* Better Auth session hook for web.
|
|
6
|
+
* Replaces the previous next-auth/react useSession.
|
|
7
|
+
*/
|
|
8
|
+
export interface Session {
|
|
9
|
+
accessToken?: string;
|
|
10
|
+
err?: Error;
|
|
11
|
+
idToken?: string;
|
|
12
|
+
refreshToken?: string;
|
|
13
|
+
user?: {
|
|
14
|
+
id: string;
|
|
15
|
+
name?: string | null;
|
|
16
|
+
email?: string | null;
|
|
17
|
+
image?: string | null;
|
|
18
|
+
};
|
|
19
|
+
expires?: string;
|
|
20
|
+
}
|
|
21
|
+
export type SessionStatus = "loading" | "authenticated" | "unauthenticated";
|
|
22
|
+
export interface SessionContextValue<_R extends boolean = false> {
|
|
23
|
+
session: Session | null;
|
|
24
|
+
status: SessionStatus;
|
|
25
|
+
update?: () => void;
|
|
26
|
+
}
|
|
27
|
+
declare let useSession: <R extends boolean = false>(_options?: Record<string, unknown>) => SessionContextValue<R>;
|
|
28
|
+
export { useSession };
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,OAAO;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE5E,MAAM,WAAW,mBAAmB,CAAC,EAAE,SAAS,OAAO,GAAG,KAAK;IAC7D,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,QAAA,IAAI,UAAU,GAAI,CAAC,SAAS,OAAO,GAAG,KAAK,EACzC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACjC,mBAAmB,CAAC,CAAC,CAEvB,CAAC;AAwBF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/session/index.native.ts
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* Native session hook backed by a tiny external store the AuthProvider feeds
|
|
6
|
+
* (no better-auth client on native -- see betterAuth/expoAuthFlow.native.ts).
|
|
7
|
+
*/
|
|
8
|
+
import type { Session, SessionContextValue, SessionStatus } from "./index";
|
|
9
|
+
/** Fed by the native AuthProvider on mount / sign-in / sign-out. */
|
|
10
|
+
export declare function setNativeSession(session: Session | null, status?: SessionStatus): void;
|
|
11
|
+
export declare function getSession(): Promise<Session | null>;
|
|
12
|
+
export declare function useSession<R extends boolean = false>(_options?: Record<string, unknown>): SessionContextValue<R>;
|
|
13
|
+
//# sourceMappingURL=index.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/session/index.native.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAU3E,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,QAM/E;AAOD,wBAAsB,UAAU,4BAE/B;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,OAAO,GAAG,KAAK,EAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,mBAAmB,CAAC,CAAC,CAAC,CAMxB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/session/index.webext.ts
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
*
|
|
5
|
+
* Session stub for web extensions. Uses Better Auth client internally
|
|
6
|
+
* when available; otherwise returns empty session.
|
|
7
|
+
*/
|
|
8
|
+
import type { SessionContextValue } from "./index";
|
|
9
|
+
export declare function getSession(): Promise<null>;
|
|
10
|
+
export declare function useSession<R extends boolean = false>(_options?: Record<string, unknown>): SessionContextValue<R>;
|
|
11
|
+
//# sourceMappingURL=index.webext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.webext.d.ts","sourceRoot":"","sources":["../../src/session/index.webext.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,wBAAsB,UAAU,kBAE/B;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,OAAO,GAAG,KAAK,EAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,mBAAmB,CAAC,CAAC,CAAC,CAExB"}
|
package/types/state.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const persist: boolean;
|
|
2
|
+
export interface AuthTokenState {
|
|
3
|
+
idToken: string;
|
|
4
|
+
refreshToken: string;
|
|
5
|
+
token: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AuthState extends AuthTokenState {
|
|
8
|
+
setIdToken: (idToken: string) => void;
|
|
9
|
+
setRefreshToken: (refreshToken: string) => void;
|
|
10
|
+
setToken: (token: string) => void;
|
|
11
|
+
setTokens: (tokens: {
|
|
12
|
+
idToken?: string;
|
|
13
|
+
refreshToken?: string;
|
|
14
|
+
token?: string;
|
|
15
|
+
}) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function useAuthStore(): AuthState;
|
|
18
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,SAAmD,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC1F;AAOD,wBAAgB,YAAY,IAAI,SAAS,CAUxC"}
|