@pureq/auth 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +293 -0
- package/dist/adapter/capabilities.d.ts +23 -0
- package/dist/adapter/capabilities.d.ts.map +1 -0
- package/dist/adapter/capabilities.js +77 -0
- package/dist/adapter/capabilities.js.map +1 -0
- package/dist/adapter/index.d.ts +12 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/index.js +121 -0
- package/dist/adapter/index.js.map +1 -0
- package/dist/adapter/sql.d.ts +36 -0
- package/dist/adapter/sql.d.ts.map +1 -0
- package/dist/adapter/sql.js +268 -0
- package/dist/adapter/sql.js.map +1 -0
- package/dist/adapters/index.d.ts +4 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +42 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/authorization/index.d.ts +8 -0
- package/dist/authorization/index.d.ts.map +1 -0
- package/dist/authorization/index.js +49 -0
- package/dist/authorization/index.js.map +1 -0
- package/dist/bridge/index.d.ts +23 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +124 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/callbacks/index.d.ts +8 -0
- package/dist/callbacks/index.d.ts.map +1 -0
- package/dist/callbacks/index.js +53 -0
- package/dist/callbacks/index.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +481 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/kit.d.ts +7 -0
- package/dist/core/kit.d.ts.map +1 -0
- package/dist/core/kit.js +145 -0
- package/dist/core/kit.js.map +1 -0
- package/dist/core/starter.d.ts +28 -0
- package/dist/core/starter.d.ts.map +1 -0
- package/dist/core/starter.js +67 -0
- package/dist/core/starter.js.map +1 -0
- package/dist/csrf/index.d.ts +7 -0
- package/dist/csrf/index.d.ts.map +1 -0
- package/dist/csrf/index.js +126 -0
- package/dist/csrf/index.js.map +1 -0
- package/dist/debug/index.d.ts +8 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/index.js +21 -0
- package/dist/debug/index.js.map +1 -0
- package/dist/encryption/index.d.ts +8 -0
- package/dist/encryption/index.d.ts.map +1 -0
- package/dist/encryption/index.js +43 -0
- package/dist/encryption/index.js.map +1 -0
- package/dist/events/index.d.ts +22 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +53 -0
- package/dist/events/index.js.map +1 -0
- package/dist/framework/index.d.ts +10 -0
- package/dist/framework/index.d.ts.map +1 -0
- package/dist/framework/index.js +68 -0
- package/dist/framework/index.js.map +1 -0
- package/dist/framework/packs.d.ts +54 -0
- package/dist/framework/packs.d.ts.map +1 -0
- package/dist/framework/packs.js +124 -0
- package/dist/framework/packs.js.map +1 -0
- package/dist/framework/recipes.d.ts +6 -0
- package/dist/framework/recipes.d.ts.map +1 -0
- package/dist/framework/recipes.js +108 -0
- package/dist/framework/recipes.js.map +1 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +95 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/react.d.ts +9 -0
- package/dist/hooks/react.d.ts.map +1 -0
- package/dist/hooks/react.js +24 -0
- package/dist/hooks/react.js.map +1 -0
- package/dist/hooks/vue.d.ts +4 -0
- package/dist/hooks/vue.d.ts.map +1 -0
- package/dist/hooks/vue.js +32 -0
- package/dist/hooks/vue.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/jwt/index.d.ts +13 -0
- package/dist/jwt/index.d.ts.map +1 -0
- package/dist/jwt/index.js +82 -0
- package/dist/jwt/index.js.map +1 -0
- package/dist/middleware/authBasic.d.ts +5 -0
- package/dist/middleware/authBasic.d.ts.map +1 -0
- package/dist/middleware/authBasic.js +25 -0
- package/dist/middleware/authBasic.js.map +1 -0
- package/dist/middleware/authBearer.d.ts +4 -0
- package/dist/middleware/authBearer.d.ts.map +1 -0
- package/dist/middleware/authBearer.js +26 -0
- package/dist/middleware/authBearer.js.map +1 -0
- package/dist/middleware/authCustom.d.ts +4 -0
- package/dist/middleware/authCustom.d.ts.map +1 -0
- package/dist/middleware/authCustom.js +22 -0
- package/dist/middleware/authCustom.js.map +1 -0
- package/dist/middleware/authRefresh.d.ts +4 -0
- package/dist/middleware/authRefresh.d.ts.map +1 -0
- package/dist/middleware/authRefresh.js +68 -0
- package/dist/middleware/authRefresh.js.map +1 -0
- package/dist/middleware/authSession.d.ts +5 -0
- package/dist/middleware/authSession.d.ts.map +1 -0
- package/dist/middleware/authSession.js +35 -0
- package/dist/middleware/authSession.js.map +1 -0
- package/dist/middleware/broadcastSync.d.ts +7 -0
- package/dist/middleware/broadcastSync.d.ts.map +1 -0
- package/dist/middleware/broadcastSync.js +36 -0
- package/dist/middleware/broadcastSync.js.map +1 -0
- package/dist/middleware/common.d.ts +3 -0
- package/dist/middleware/common.d.ts.map +1 -0
- package/dist/middleware/common.js +10 -0
- package/dist/middleware/common.js.map +1 -0
- package/dist/middleware/index.d.ts +8 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +8 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/tokenLifecycle.d.ts +4 -0
- package/dist/middleware/tokenLifecycle.d.ts.map +1 -0
- package/dist/middleware/tokenLifecycle.js +52 -0
- package/dist/middleware/tokenLifecycle.js.map +1 -0
- package/dist/migration/index.d.ts +40 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +136 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/oidc/index.d.ts +25 -0
- package/dist/oidc/index.d.ts.map +1 -0
- package/dist/oidc/index.js +392 -0
- package/dist/oidc/index.js.map +1 -0
- package/dist/oidc/providers.d.ts +21 -0
- package/dist/oidc/providers.d.ts.map +1 -0
- package/dist/oidc/providers.js +51 -0
- package/dist/oidc/providers.js.map +1 -0
- package/dist/presets/index.d.ts +13 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +12 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/providers/callbackContracts.d.ts +14 -0
- package/dist/providers/callbackContracts.d.ts.map +1 -0
- package/dist/providers/callbackContracts.js +14 -0
- package/dist/providers/callbackContracts.js.map +1 -0
- package/dist/providers/errors.d.ts +9 -0
- package/dist/providers/errors.d.ts.map +1 -0
- package/dist/providers/errors.js +66 -0
- package/dist/providers/errors.js.map +1 -0
- package/dist/providers/index.d.ts +28 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +29 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/presets.d.ts +17 -0
- package/dist/providers/presets.d.ts.map +1 -0
- package/dist/providers/presets.js +84 -0
- package/dist/providers/presets.js.map +1 -0
- package/dist/revocation/index.d.ts +10 -0
- package/dist/revocation/index.d.ts.map +1 -0
- package/dist/revocation/index.js +182 -0
- package/dist/revocation/index.js.map +1 -0
- package/dist/session/exporters.d.ts +15 -0
- package/dist/session/exporters.d.ts.map +1 -0
- package/dist/session/exporters.js +62 -0
- package/dist/session/exporters.js.map +1 -0
- package/dist/session/index.d.ts +11 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +324 -0
- package/dist/session/index.js.map +1 -0
- package/dist/shared/encoding.d.ts +5 -0
- package/dist/shared/encoding.d.ts.map +1 -0
- package/dist/shared/encoding.js +27 -0
- package/dist/shared/encoding.js.map +1 -0
- package/dist/shared/errors.d.ts +13 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +12 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/index.d.ts +5 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +5 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/types.d.ts +585 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +2 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/shared/values.d.ts +3 -0
- package/dist/shared/values.d.ts.map +1 -0
- package/dist/shared/values.js +23 -0
- package/dist/shared/values.js.map +1 -0
- package/dist/storage/index.d.ts +44 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +318 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/templates/index.d.ts +9 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +146 -0
- package/dist/templates/index.js.map +1 -0
- package/package.json +173 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createAuthRequestAdapter } from "../adapters";
|
|
2
|
+
export { createAuthRouteHandlerRecipe, createAuthServerActionRecipe, mapAuthErrorToHttp } from "./recipes";
|
|
3
|
+
export { createExpressAuthKitPack, createFastifyAuthKitPack, createNextAuthKitPack, createReactAuthKitBootstrapPack, } from "./packs";
|
|
4
|
+
function emptyState() {
|
|
5
|
+
return { accessToken: null, refreshToken: null };
|
|
6
|
+
}
|
|
7
|
+
function buildSessionTransferPayload(state, setCookieHeaders) {
|
|
8
|
+
return {
|
|
9
|
+
format: "pureq-auth-session-transfer/v1",
|
|
10
|
+
issuedAt: Date.now(),
|
|
11
|
+
state,
|
|
12
|
+
setCookieHeaders,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create a framework context that bootstraps auth from a request.
|
|
17
|
+
* ARCH-3: Catches bootstrap errors and falls back to empty session.
|
|
18
|
+
*/
|
|
19
|
+
export async function createAuthFrameworkContext(options = {}) {
|
|
20
|
+
const adapter = createAuthRequestAdapter(options);
|
|
21
|
+
let state;
|
|
22
|
+
if (options.request) {
|
|
23
|
+
try {
|
|
24
|
+
state = await adapter.bootstrap(options.request);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
options.onBootstrapError?.(error);
|
|
28
|
+
state = emptyState();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
state = await adapter.session.getState();
|
|
33
|
+
}
|
|
34
|
+
const syncState = async () => {
|
|
35
|
+
state = await adapter.session.getState();
|
|
36
|
+
return state;
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
adapter,
|
|
40
|
+
getState() {
|
|
41
|
+
return state;
|
|
42
|
+
},
|
|
43
|
+
refreshState() {
|
|
44
|
+
return syncState();
|
|
45
|
+
},
|
|
46
|
+
async setTokens(tokens) {
|
|
47
|
+
await adapter.session.setTokens(tokens);
|
|
48
|
+
return syncState();
|
|
49
|
+
},
|
|
50
|
+
async clearSession() {
|
|
51
|
+
await adapter.session.clear();
|
|
52
|
+
return syncState();
|
|
53
|
+
},
|
|
54
|
+
toResponseHeaders(headers) {
|
|
55
|
+
return adapter.buildResponseHeaders(state, headers);
|
|
56
|
+
},
|
|
57
|
+
toResponseInit(init) {
|
|
58
|
+
return adapter.buildResponseInit(state, init);
|
|
59
|
+
},
|
|
60
|
+
toSessionTransferPayload() {
|
|
61
|
+
return buildSessionTransferPayload(state, adapter.buildSetCookieHeaders(state));
|
|
62
|
+
},
|
|
63
|
+
dispose() {
|
|
64
|
+
adapter.session.dispose();
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/framework/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC3G,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,SAAS,CAAC;AAEjB,SAAS,UAAU;IACjB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAuB,EACvB,gBAAmC;IAEnC,OAAO;QACL,MAAM,EAAE,gCAAgC;QACxC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;QACpB,KAAK;QACL,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,UAAuC,EAAE;IAEzC,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,KAAuB,CAAC;IAE5B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,GAAG,UAAU,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,IAA+B,EAAE;QACtD,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO;QACL,OAAO;QAEP,QAAQ;YACN,OAAO,KAAK,CAAC;QACf,CAAC;QAED,YAAY;YACV,OAAO,SAAS,EAAE,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAkB;YAChC,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,SAAS,EAAE,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,YAAY;YAChB,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,SAAS,EAAE,CAAC;QACrB,CAAC;QAED,iBAAiB,CAAC,OAAqB;YACrC,OAAO,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAED,cAAc,CAAC,IAAmB;YAChC,OAAO,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,wBAAwB;YACtB,OAAO,2BAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,OAAO;YACL,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { AuthKit, ReactAuthHooks, ReactUseSyncExternalStore } from "../shared";
|
|
2
|
+
type RouteRequestLike = {
|
|
3
|
+
readonly method?: string;
|
|
4
|
+
readonly url?: string;
|
|
5
|
+
readonly headers?: Headers | Readonly<Record<string, string | null | undefined>>;
|
|
6
|
+
readonly body?: unknown;
|
|
7
|
+
};
|
|
8
|
+
type ExpressLikeRequest = {
|
|
9
|
+
readonly method?: string;
|
|
10
|
+
readonly originalUrl?: string;
|
|
11
|
+
readonly url?: string;
|
|
12
|
+
readonly headers?: Readonly<Record<string, string | null | undefined>>;
|
|
13
|
+
readonly body?: unknown;
|
|
14
|
+
};
|
|
15
|
+
type ExpressLikeResponse = {
|
|
16
|
+
status(code: number): ExpressLikeResponse;
|
|
17
|
+
setHeader(name: string, value: string | readonly string[]): void;
|
|
18
|
+
json(value: unknown): void;
|
|
19
|
+
};
|
|
20
|
+
type FastifyLikeRequest = {
|
|
21
|
+
readonly method?: string;
|
|
22
|
+
readonly url?: string;
|
|
23
|
+
readonly headers?: Readonly<Record<string, string | null | undefined>>;
|
|
24
|
+
readonly body?: unknown;
|
|
25
|
+
};
|
|
26
|
+
type FastifyLikeReply = {
|
|
27
|
+
code(statusCode: number): FastifyLikeReply;
|
|
28
|
+
header(name: string, value: string | readonly string[]): FastifyLikeReply;
|
|
29
|
+
send(payload: unknown): void;
|
|
30
|
+
};
|
|
31
|
+
export declare function createNextAuthKitPack(kit: AuthKit): {
|
|
32
|
+
providers: (request?: RouteRequestLike) => Promise<Response>;
|
|
33
|
+
signIn: (request: RouteRequestLike) => Promise<Response>;
|
|
34
|
+
callback: (request: RouteRequestLike) => Promise<Response>;
|
|
35
|
+
session: (request: RouteRequestLike) => Promise<Response>;
|
|
36
|
+
signOut: (request: RouteRequestLike) => Promise<Response>;
|
|
37
|
+
};
|
|
38
|
+
export declare function createExpressAuthKitPack(kit: AuthKit): {
|
|
39
|
+
providers: (req: ExpressLikeRequest, res: ExpressLikeResponse) => Promise<void>;
|
|
40
|
+
signIn: (req: ExpressLikeRequest, res: ExpressLikeResponse) => Promise<void>;
|
|
41
|
+
callback: (req: ExpressLikeRequest, res: ExpressLikeResponse) => Promise<void>;
|
|
42
|
+
session: (req: ExpressLikeRequest, res: ExpressLikeResponse) => Promise<void>;
|
|
43
|
+
signOut: (req: ExpressLikeRequest, res: ExpressLikeResponse) => Promise<void>;
|
|
44
|
+
};
|
|
45
|
+
export declare function createFastifyAuthKitPack(kit: AuthKit): {
|
|
46
|
+
providers: (req: FastifyLikeRequest, reply: FastifyLikeReply) => Promise<void>;
|
|
47
|
+
signIn: (req: FastifyLikeRequest, reply: FastifyLikeReply) => Promise<void>;
|
|
48
|
+
callback: (req: FastifyLikeRequest, reply: FastifyLikeReply) => Promise<void>;
|
|
49
|
+
session: (req: FastifyLikeRequest, reply: FastifyLikeReply) => Promise<void>;
|
|
50
|
+
signOut: (req: FastifyLikeRequest, reply: FastifyLikeReply) => Promise<void>;
|
|
51
|
+
};
|
|
52
|
+
export declare function createReactAuthKitBootstrapPack(kit: AuthKit, useSyncExternalStore: ReactUseSyncExternalStore): ReactAuthHooks;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=packs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packs.d.ts","sourceRoot":"","sources":["../../src/framework/packs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEpF,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;IACjF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC3C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,gBAAgB,CAAC;IAC1E,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B,CAAC;AAsCF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO;0BAEzB,gBAAgB;sBACnB,gBAAgB;wBACd,gBAAgB;uBACjB,gBAAgB;uBAChB,gBAAgB;EAEtC;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO;qBAE1B,kBAAkB,OAAO,mBAAmB;kBAa/C,kBAAkB,OAAO,mBAAmB;oBAc1C,kBAAkB,OAAO,mBAAmB;mBAU7C,kBAAkB,OAAO,mBAAmB;mBAK5C,kBAAkB,OAAO,mBAAmB;EAMpE;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO;qBAE1B,kBAAkB,SAAS,gBAAgB;kBAa9C,kBAAkB,SAAS,gBAAgB;oBAczC,kBAAkB,SAAS,gBAAgB;mBAU5C,kBAAkB,SAAS,gBAAgB;mBAK3C,kBAAkB,SAAS,gBAAgB;EAMnE;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,OAAO,EACZ,oBAAoB,EAAE,yBAAyB,GAC9C,cAAc,CAEhB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
async function responseToJson(response) {
|
|
2
|
+
const text = await response.text();
|
|
3
|
+
if (!text) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
try {
|
|
7
|
+
return JSON.parse(text);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return text;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function setSetCookieToExpress(response, res) {
|
|
14
|
+
const setCookie = response.headers.get("set-cookie");
|
|
15
|
+
if (setCookie) {
|
|
16
|
+
res.setHeader("Set-Cookie", setCookie);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function setSetCookieToFastify(response, reply) {
|
|
20
|
+
const setCookie = response.headers.get("set-cookie");
|
|
21
|
+
if (setCookie) {
|
|
22
|
+
reply.header("Set-Cookie", setCookie);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function toRouteRequestLike(request, fallbackMethod) {
|
|
26
|
+
return {
|
|
27
|
+
...(fallbackMethod ? { method: fallbackMethod } : {}),
|
|
28
|
+
...(request.method ? { method: request.method } : {}),
|
|
29
|
+
...(request.url ? { url: request.url } : {}),
|
|
30
|
+
...(request.headers ? { headers: request.headers } : {}),
|
|
31
|
+
...(request.body !== undefined ? { body: request.body } : {}),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function createNextAuthKitPack(kit) {
|
|
35
|
+
return {
|
|
36
|
+
providers: (request = {}) => kit.handlers.handleSignIn(toRouteRequestLike(request, "GET")),
|
|
37
|
+
signIn: (request) => kit.handlers.handleSignIn(toRouteRequestLike(request, "POST")),
|
|
38
|
+
callback: (request) => kit.handlers.handleCallback(toRouteRequestLike(request)),
|
|
39
|
+
session: (request) => kit.handlers.handleSession(toRouteRequestLike(request)),
|
|
40
|
+
signOut: (request) => kit.handlers.handleSignOut(toRouteRequestLike(request)),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function createExpressAuthKitPack(kit) {
|
|
44
|
+
return {
|
|
45
|
+
providers: async (req, res) => {
|
|
46
|
+
const response = await kit.handlers.handleSignIn(toRouteRequestLike({
|
|
47
|
+
...((req.originalUrl ?? req.url) ? { url: req.originalUrl ?? req.url } : {}),
|
|
48
|
+
...(req.headers ? { headers: req.headers } : {}),
|
|
49
|
+
}, "GET"));
|
|
50
|
+
setSetCookieToExpress(response, res);
|
|
51
|
+
res.status(response.status).json(await responseToJson(response));
|
|
52
|
+
},
|
|
53
|
+
signIn: async (req, res) => {
|
|
54
|
+
const response = await kit.handlers.handleSignIn(toRouteRequestLike({
|
|
55
|
+
...((req.originalUrl ?? req.url) ? { url: req.originalUrl ?? req.url } : {}),
|
|
56
|
+
...(req.headers ? { headers: req.headers } : {}),
|
|
57
|
+
...(req.body !== undefined ? { body: req.body } : {}),
|
|
58
|
+
}, "POST"));
|
|
59
|
+
setSetCookieToExpress(response, res);
|
|
60
|
+
res.status(response.status).json(await responseToJson(response));
|
|
61
|
+
},
|
|
62
|
+
callback: async (req, res) => {
|
|
63
|
+
const response = await kit.handlers.handleCallback(toRouteRequestLike({
|
|
64
|
+
...((req.originalUrl ?? req.url) ? { url: req.originalUrl ?? req.url } : {}),
|
|
65
|
+
...(req.headers ? { headers: req.headers } : {}),
|
|
66
|
+
}));
|
|
67
|
+
setSetCookieToExpress(response, res);
|
|
68
|
+
res.status(response.status).json(await responseToJson(response));
|
|
69
|
+
},
|
|
70
|
+
session: async (req, res) => {
|
|
71
|
+
const response = await kit.handlers.handleSession(toRouteRequestLike(req.headers ? { headers: req.headers } : {}));
|
|
72
|
+
setSetCookieToExpress(response, res);
|
|
73
|
+
res.status(response.status).json(await responseToJson(response));
|
|
74
|
+
},
|
|
75
|
+
signOut: async (req, res) => {
|
|
76
|
+
const response = await kit.handlers.handleSignOut(toRouteRequestLike(req.headers ? { headers: req.headers } : {}));
|
|
77
|
+
setSetCookieToExpress(response, res);
|
|
78
|
+
res.status(response.status).json(await responseToJson(response));
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export function createFastifyAuthKitPack(kit) {
|
|
83
|
+
return {
|
|
84
|
+
providers: async (req, reply) => {
|
|
85
|
+
const response = await kit.handlers.handleSignIn(toRouteRequestLike({
|
|
86
|
+
...(req.url ? { url: req.url } : {}),
|
|
87
|
+
...(req.headers ? { headers: req.headers } : {}),
|
|
88
|
+
}, "GET"));
|
|
89
|
+
setSetCookieToFastify(response, reply);
|
|
90
|
+
reply.code(response.status).send(await responseToJson(response));
|
|
91
|
+
},
|
|
92
|
+
signIn: async (req, reply) => {
|
|
93
|
+
const response = await kit.handlers.handleSignIn(toRouteRequestLike({
|
|
94
|
+
...(req.url ? { url: req.url } : {}),
|
|
95
|
+
...(req.headers ? { headers: req.headers } : {}),
|
|
96
|
+
...(req.body !== undefined ? { body: req.body } : {}),
|
|
97
|
+
}, "POST"));
|
|
98
|
+
setSetCookieToFastify(response, reply);
|
|
99
|
+
reply.code(response.status).send(await responseToJson(response));
|
|
100
|
+
},
|
|
101
|
+
callback: async (req, reply) => {
|
|
102
|
+
const response = await kit.handlers.handleCallback(toRouteRequestLike({
|
|
103
|
+
...(req.url ? { url: req.url } : {}),
|
|
104
|
+
...(req.headers ? { headers: req.headers } : {}),
|
|
105
|
+
}));
|
|
106
|
+
setSetCookieToFastify(response, reply);
|
|
107
|
+
reply.code(response.status).send(await responseToJson(response));
|
|
108
|
+
},
|
|
109
|
+
session: async (req, reply) => {
|
|
110
|
+
const response = await kit.handlers.handleSession(toRouteRequestLike(req.headers ? { headers: req.headers } : {}));
|
|
111
|
+
setSetCookieToFastify(response, reply);
|
|
112
|
+
reply.code(response.status).send(await responseToJson(response));
|
|
113
|
+
},
|
|
114
|
+
signOut: async (req, reply) => {
|
|
115
|
+
const response = await kit.handlers.handleSignOut(toRouteRequestLike(req.headers ? { headers: req.headers } : {}));
|
|
116
|
+
setSetCookieToFastify(response, reply);
|
|
117
|
+
reply.code(response.status).send(await responseToJson(response));
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export function createReactAuthKitBootstrapPack(kit, useSyncExternalStore) {
|
|
122
|
+
return kit.createReactHooks(useSyncExternalStore);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=packs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packs.js","sourceRoot":"","sources":["../../src/framework/packs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AuthFrameworkContext, AuthMappedHttpError, AuthRouteHandlerRecipe, AuthRouteHandlerRecipeOptions, AuthServerActionRecipe } from "../shared";
|
|
2
|
+
export declare function mapAuthErrorToHttp(error: unknown, sanitize?: boolean): AuthMappedHttpError;
|
|
3
|
+
export declare function createAuthRouteHandlerRecipe(context: AuthFrameworkContext, recipeOptions?: AuthRouteHandlerRecipeOptions): AuthRouteHandlerRecipe;
|
|
4
|
+
export declare function createAuthServerActionRecipe(context: AuthFrameworkContext): AuthServerActionRecipe;
|
|
5
|
+
export type { AuthMappedHttpError, AuthRouteHandlerRecipe, AuthRouteHandlerRecipeOptions, AuthServerActionFailure, AuthServerActionRecipe, AuthServerActionResult, AuthServerActionSuccess, } from "../shared";
|
|
6
|
+
//# sourceMappingURL=recipes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/framework/recipes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EAEvB,MAAM,WAAW,CAAC;AAoBnB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,UAAQ,GAAG,mBAAmB,CA2CxF;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,oBAAoB,EAC7B,aAAa,GAAE,6BAAkC,GAChD,sBAAsB,CAwCxB;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,GAAG,sBAAsB,CAwBlG;AAED,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
function isErrorWithCode(value) {
|
|
2
|
+
return typeof value === "object" && value !== null && typeof value.code === "string";
|
|
3
|
+
}
|
|
4
|
+
/** SEC-M6: Generic user-facing messages for production. */
|
|
5
|
+
const SANITIZED_MESSAGES = {
|
|
6
|
+
PUREQ_AUTH_MISSING_TOKEN: "Authentication required",
|
|
7
|
+
PUREQ_AUTH_UNAUTHORIZED: "Authentication required",
|
|
8
|
+
PUREQ_AUTH_EXPIRED: "Session expired",
|
|
9
|
+
PUREQ_AUTH_INVALID_TOKEN: "Invalid credentials",
|
|
10
|
+
PUREQ_AUTH_REFRESH_FAILED: "Session expired",
|
|
11
|
+
PUREQ_AUTH_CSRF_INVALID: "Request validation failed",
|
|
12
|
+
PUREQ_AUTH_CSRF_FAILED: "Request validation failed",
|
|
13
|
+
PUREQ_AUTH_CSRF_INVALID_TOKEN: "Request validation failed",
|
|
14
|
+
PUREQ_AUTH_REVOKED: "Session has been revoked",
|
|
15
|
+
PUREQ_AUTH_INVALID_CREDENTIALS: "Invalid credentials",
|
|
16
|
+
};
|
|
17
|
+
export function mapAuthErrorToHttp(error, sanitize = false) {
|
|
18
|
+
if (!isErrorWithCode(error)) {
|
|
19
|
+
const message = sanitize ? "Internal server error" : (error instanceof Error ? error.message : "internal auth error");
|
|
20
|
+
return {
|
|
21
|
+
status: 500,
|
|
22
|
+
message,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const code = error.code;
|
|
26
|
+
const rawMessage = typeof error.message === "string" && error.message.trim() ? error.message : "auth error";
|
|
27
|
+
const message = sanitize ? (SANITIZED_MESSAGES[code] ?? "Authentication error") : rawMessage;
|
|
28
|
+
if (code === "PUREQ_AUTH_MISSING_TOKEN" || code === "PUREQ_AUTH_UNAUTHORIZED") {
|
|
29
|
+
return { status: 401, code, message };
|
|
30
|
+
}
|
|
31
|
+
if (code === "PUREQ_AUTH_EXPIRED" || code === "PUREQ_AUTH_INVALID_TOKEN") {
|
|
32
|
+
return { status: 401, code, message };
|
|
33
|
+
}
|
|
34
|
+
if (code === "PUREQ_AUTH_REFRESH_FAILED") {
|
|
35
|
+
return { status: 401, code, message };
|
|
36
|
+
}
|
|
37
|
+
if (code === "PUREQ_AUTH_CSRF_INVALID" ||
|
|
38
|
+
code === "PUREQ_AUTH_CSRF_FAILED" ||
|
|
39
|
+
code === "PUREQ_AUTH_CSRF_INVALID_TOKEN") {
|
|
40
|
+
return { status: 403, code, message };
|
|
41
|
+
}
|
|
42
|
+
if (code === "PUREQ_AUTH_REVOKED") {
|
|
43
|
+
return { status: 401, code, message };
|
|
44
|
+
}
|
|
45
|
+
if (code.startsWith("PUREQ_OIDC_")) {
|
|
46
|
+
return { status: 400, code, message };
|
|
47
|
+
}
|
|
48
|
+
return { status: 500, code, message };
|
|
49
|
+
}
|
|
50
|
+
export function createAuthRouteHandlerRecipe(context, recipeOptions = {}) {
|
|
51
|
+
const sanitize = recipeOptions.sanitizeErrors ?? true;
|
|
52
|
+
return {
|
|
53
|
+
context,
|
|
54
|
+
ok(body = null, init = {}) {
|
|
55
|
+
return new Response(body, context.toResponseInit(init));
|
|
56
|
+
},
|
|
57
|
+
json(value, init = {}) {
|
|
58
|
+
const headers = new Headers(init.headers);
|
|
59
|
+
if (!headers.has("content-type")) {
|
|
60
|
+
headers.set("content-type", "application/json; charset=utf-8");
|
|
61
|
+
}
|
|
62
|
+
return new Response(JSON.stringify(value), context.toResponseInit({ ...init, headers }));
|
|
63
|
+
},
|
|
64
|
+
error(error, init = {}) {
|
|
65
|
+
const mapped = mapAuthErrorToHttp(error, sanitize);
|
|
66
|
+
const headers = new Headers(init.headers);
|
|
67
|
+
if (!headers.has("content-type")) {
|
|
68
|
+
headers.set("content-type", "application/json; charset=utf-8");
|
|
69
|
+
}
|
|
70
|
+
return new Response(JSON.stringify({
|
|
71
|
+
error: {
|
|
72
|
+
code: mapped.code,
|
|
73
|
+
message: mapped.message,
|
|
74
|
+
},
|
|
75
|
+
}), context.toResponseInit({
|
|
76
|
+
...init,
|
|
77
|
+
status: init.status ?? mapped.status,
|
|
78
|
+
headers,
|
|
79
|
+
}));
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function createAuthServerActionRecipe(context) {
|
|
84
|
+
return {
|
|
85
|
+
context,
|
|
86
|
+
async run(action) {
|
|
87
|
+
try {
|
|
88
|
+
const data = await action();
|
|
89
|
+
return {
|
|
90
|
+
ok: true,
|
|
91
|
+
data,
|
|
92
|
+
transferPayload: context.toSessionTransferPayload(),
|
|
93
|
+
responseInit: context.toResponseInit({ status: 200 }),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
const mapped = mapAuthErrorToHttp(error, true);
|
|
98
|
+
return {
|
|
99
|
+
ok: false,
|
|
100
|
+
error: mapped,
|
|
101
|
+
transferPayload: context.toSessionTransferPayload(),
|
|
102
|
+
responseInit: context.toResponseInit({ status: mapped.status }),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=recipes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/framework/recipes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AuthSessionManager, AuthSessionStore, AuthSessionStoreOptions } from "../shared";
|
|
2
|
+
export { createReactAuthHooks } from "./react";
|
|
3
|
+
export { createVueAuthSessionComposable } from "./vue";
|
|
4
|
+
/**
|
|
5
|
+
* Create a subscribable session store that bridges session manager events to UI frameworks.
|
|
6
|
+
* FEAT-M2: Tracks loading/authenticated/unauthenticated status.
|
|
7
|
+
* FEAT-M3: Provides update() method for server-round-trip session updates.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createAuthSessionStore(session: AuthSessionManager, options?: AuthSessionStoreOptions): AuthSessionStore;
|
|
10
|
+
export type { AuthSessionStore, AuthSessionStoreOptions } from "../shared";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAuC,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpI,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,OAAO,CAAC;AASvD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,CAkGlB;AAED,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
export { createReactAuthHooks } from "./react";
|
|
2
|
+
export { createVueAuthSessionComposable } from "./vue";
|
|
3
|
+
function emptyState() {
|
|
4
|
+
return {
|
|
5
|
+
accessToken: null,
|
|
6
|
+
refreshToken: null,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Create a subscribable session store that bridges session manager events to UI frameworks.
|
|
11
|
+
* FEAT-M2: Tracks loading/authenticated/unauthenticated status.
|
|
12
|
+
* FEAT-M3: Provides update() method for server-round-trip session updates.
|
|
13
|
+
*/
|
|
14
|
+
export function createAuthSessionStore(session, options = {}) {
|
|
15
|
+
let disposed = false;
|
|
16
|
+
let snapshot = options.transferPayload?.state ?? options.initialState ?? emptyState();
|
|
17
|
+
let status = "loading";
|
|
18
|
+
const listeners = new Set();
|
|
19
|
+
const notify = () => {
|
|
20
|
+
for (const listener of listeners) {
|
|
21
|
+
listener();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const setSnapshot = (next) => {
|
|
25
|
+
snapshot = next;
|
|
26
|
+
status = next.accessToken ? "authenticated" : "unauthenticated";
|
|
27
|
+
notify();
|
|
28
|
+
};
|
|
29
|
+
const normalizeEventState = (eventType, eventState) => {
|
|
30
|
+
if (eventState) {
|
|
31
|
+
return eventState;
|
|
32
|
+
}
|
|
33
|
+
if (eventType === "tokens-cleared" || eventType === "session-logout") {
|
|
34
|
+
return emptyState();
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
};
|
|
38
|
+
const unsubscribeSession = session.onEvent((event) => {
|
|
39
|
+
if (disposed) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const next = normalizeEventState(event.type, event.state);
|
|
43
|
+
if (next) {
|
|
44
|
+
setSnapshot(next);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
void session.getState().then((state) => {
|
|
48
|
+
if (!disposed) {
|
|
49
|
+
setSnapshot(state);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
getSnapshot() {
|
|
54
|
+
return snapshot;
|
|
55
|
+
},
|
|
56
|
+
getStatus() {
|
|
57
|
+
return status;
|
|
58
|
+
},
|
|
59
|
+
subscribe(listener) {
|
|
60
|
+
if (disposed) {
|
|
61
|
+
return () => { };
|
|
62
|
+
}
|
|
63
|
+
listeners.add(listener);
|
|
64
|
+
return () => {
|
|
65
|
+
listeners.delete(listener);
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
async refresh() {
|
|
69
|
+
if (disposed) {
|
|
70
|
+
return snapshot;
|
|
71
|
+
}
|
|
72
|
+
const state = await session.getState();
|
|
73
|
+
setSnapshot(state);
|
|
74
|
+
return state;
|
|
75
|
+
},
|
|
76
|
+
/** FEAT-M3: Trigger a server-round-trip session update. */
|
|
77
|
+
async update() {
|
|
78
|
+
if (disposed) {
|
|
79
|
+
return snapshot;
|
|
80
|
+
}
|
|
81
|
+
const state = await session.getState();
|
|
82
|
+
setSnapshot(state);
|
|
83
|
+
return state;
|
|
84
|
+
},
|
|
85
|
+
dispose() {
|
|
86
|
+
if (disposed) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
disposed = true;
|
|
90
|
+
unsubscribeSession();
|
|
91
|
+
listeners.clear();
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AuthSessionStore, ReactAuthHooks, ReactUseSyncExternalStore } from "../shared";
|
|
2
|
+
/**
|
|
3
|
+
* Create React hooks for auth session state.
|
|
4
|
+
* FEAT-M2: Returns { data, status, update } instead of just AuthSessionState.
|
|
5
|
+
* DX-M2: Can be used with React context for SessionProvider pattern.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createReactAuthHooks(sessionStore: AuthSessionStore, useSyncExternalStore: ReactUseSyncExternalStore): ReactAuthHooks;
|
|
8
|
+
export type { ReactAuthHooks, ReactUseSyncExternalStore } from "../shared";
|
|
9
|
+
//# sourceMappingURL=react.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/hooks/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,gBAAgB,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEpH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,gBAAgB,EAC9B,oBAAoB,EAAE,yBAAyB,GAC9C,cAAc,CAwBhB;AAED,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create React hooks for auth session state.
|
|
3
|
+
* FEAT-M2: Returns { data, status, update } instead of just AuthSessionState.
|
|
4
|
+
* DX-M2: Can be used with React context for SessionProvider pattern.
|
|
5
|
+
*/
|
|
6
|
+
export function createReactAuthHooks(sessionStore, useSyncExternalStore) {
|
|
7
|
+
return {
|
|
8
|
+
useAuthSession() {
|
|
9
|
+
const data = useSyncExternalStore(sessionStore.subscribe, sessionStore.getSnapshot, sessionStore.getSnapshot);
|
|
10
|
+
return {
|
|
11
|
+
data,
|
|
12
|
+
status: sessionStore.getStatus(),
|
|
13
|
+
update: () => sessionStore.update(),
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
refreshAuthSession() {
|
|
17
|
+
return sessionStore.refresh();
|
|
18
|
+
},
|
|
19
|
+
disposeAuthSessionStore() {
|
|
20
|
+
sessionStore.dispose();
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/hooks/react.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,YAA8B,EAC9B,oBAA+C;IAE/C,OAAO;QACL,cAAc;YACZ,MAAM,IAAI,GAAG,oBAAoB,CAC/B,YAAY,CAAC,SAAS,EACtB,YAAY,CAAC,WAAW,EACxB,YAAY,CAAC,WAAW,CACzB,CAAC;YAEF,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE;gBAChC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE;aACpC,CAAC;QACJ,CAAC;QAED,kBAAkB;YAChB,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC;QAED,uBAAuB;YACrB,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AuthSessionStore, VueAuthSessionComposable, VueRuntimeBindings } from "../shared";
|
|
2
|
+
export declare function createVueAuthSessionComposable(sessionStore: AuthSessionStore, runtime: VueRuntimeBindings): () => VueAuthSessionComposable;
|
|
3
|
+
export type { VueAuthSessionComposable, VueRuntimeBindings } from "../shared";
|
|
4
|
+
//# sourceMappingURL=vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../src/hooks/vue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EAExB,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,kBAAkB,GAC1B,MAAM,wBAAwB,CAqChC;AAED,YAAY,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function createVueAuthSessionComposable(sessionStore, runtime) {
|
|
2
|
+
return () => {
|
|
3
|
+
const sessionRef = runtime.ref(sessionStore.getSnapshot());
|
|
4
|
+
const syncFromStore = () => {
|
|
5
|
+
sessionRef.value = sessionStore.getSnapshot();
|
|
6
|
+
};
|
|
7
|
+
const subscribe = () => {
|
|
8
|
+
return sessionStore.subscribe(syncFromStore);
|
|
9
|
+
};
|
|
10
|
+
let unsubscribe = subscribe();
|
|
11
|
+
if (runtime.onMounted) {
|
|
12
|
+
runtime.onMounted(() => {
|
|
13
|
+
unsubscribe();
|
|
14
|
+
unsubscribe = subscribe();
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
if (runtime.onBeforeUnmount) {
|
|
18
|
+
runtime.onBeforeUnmount(() => {
|
|
19
|
+
unsubscribe();
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
const session = (runtime.readonly
|
|
23
|
+
? runtime.readonly(sessionRef)
|
|
24
|
+
: sessionRef);
|
|
25
|
+
return {
|
|
26
|
+
session,
|
|
27
|
+
refreshAuthSession: () => sessionStore.refresh(),
|
|
28
|
+
disposeAuthSessionStore: () => sessionStore.dispose(),
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.js","sourceRoot":"","sources":["../../src/hooks/vue.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,8BAA8B,CAC5C,YAA8B,EAC9B,OAA2B;IAE3B,OAAO,GAAG,EAAE;QACV,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QAE3D,MAAM,aAAa,GAAG,GAAS,EAAE;YAC/B,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,GAAiB,EAAE;YACnC,OAAO,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,IAAI,WAAW,GAAG,SAAS,EAAE,CAAC;QAE9B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;gBACrB,WAAW,EAAE,CAAC;gBACd,WAAW,GAAG,SAAS,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE;gBAC3B,WAAW,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ;YAC/B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC9B,CAAC,CAAC,UAAU,CAA4D,CAAC;QAE3E,OAAO;YACL,OAAO;YACP,kBAAkB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE;YAChD,uBAAuB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE;SACtD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|