@gauts/auth 0.8.2 → 0.9.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.
Files changed (75) hide show
  1. package/README.md +292 -66
  2. package/dist/adapters/drizzle/config.d.ts +11 -0
  3. package/dist/adapters/drizzle/config.d.ts.map +1 -0
  4. package/dist/adapters/drizzle/config.js +147 -0
  5. package/dist/adapters/drizzle/config.js.map +1 -0
  6. package/dist/adapters/drizzle/index.d.ts +4 -0
  7. package/dist/adapters/drizzle/index.d.ts.map +1 -0
  8. package/dist/adapters/drizzle/index.js +156 -0
  9. package/dist/adapters/drizzle/index.js.map +1 -0
  10. package/dist/adapters/drizzle/model.d.ts +21 -0
  11. package/dist/adapters/drizzle/model.d.ts.map +1 -0
  12. package/dist/adapters/drizzle/model.js +61 -0
  13. package/dist/adapters/drizzle/model.js.map +1 -0
  14. package/dist/adapters/drizzle/schema.d.ts +311 -0
  15. package/dist/adapters/drizzle/schema.d.ts.map +1 -0
  16. package/dist/adapters/drizzle/schema.js +37 -0
  17. package/dist/adapters/drizzle/schema.js.map +1 -0
  18. package/dist/adapters/drizzle/types.d.ts +109 -0
  19. package/dist/adapters/drizzle/types.d.ts.map +1 -0
  20. package/dist/adapters/drizzle/types.js +2 -0
  21. package/dist/adapters/drizzle/types.js.map +1 -0
  22. package/dist/adapters/express/index.d.ts +83 -0
  23. package/dist/adapters/express/index.d.ts.map +1 -0
  24. package/dist/adapters/express/index.js +72 -0
  25. package/dist/adapters/express/index.js.map +1 -0
  26. package/dist/adapters/express/social.d.ts +29 -0
  27. package/dist/adapters/express/social.d.ts.map +1 -0
  28. package/dist/adapters/express/social.js +44 -0
  29. package/dist/adapters/express/social.js.map +1 -0
  30. package/dist/adapters/fastify/index.d.ts +85 -0
  31. package/dist/adapters/fastify/index.d.ts.map +1 -0
  32. package/dist/adapters/fastify/index.js +100 -0
  33. package/dist/adapters/fastify/index.js.map +1 -0
  34. package/dist/adapters/fastify/social.d.ts +27 -0
  35. package/dist/adapters/fastify/social.d.ts.map +1 -0
  36. package/dist/adapters/fastify/social.js +48 -0
  37. package/dist/adapters/fastify/social.js.map +1 -0
  38. package/dist/adapters/hono/index.d.ts +4 -11
  39. package/dist/adapters/hono/index.d.ts.map +1 -1
  40. package/dist/adapters/hono/index.js +31 -223
  41. package/dist/adapters/hono/index.js.map +1 -1
  42. package/dist/adapters/hono/social.d.ts +4 -10
  43. package/dist/adapters/hono/social.d.ts.map +1 -1
  44. package/dist/adapters/hono/social.js +25 -221
  45. package/dist/adapters/hono/social.js.map +1 -1
  46. package/dist/adapters/model.d.ts +33 -0
  47. package/dist/adapters/model.d.ts.map +1 -0
  48. package/dist/adapters/model.js +87 -0
  49. package/dist/adapters/model.js.map +1 -0
  50. package/dist/adapters/prisma/config.d.ts.map +1 -1
  51. package/dist/adapters/prisma/config.js +1 -4
  52. package/dist/adapters/prisma/config.js.map +1 -1
  53. package/dist/adapters/prisma/model.d.ts +7 -8
  54. package/dist/adapters/prisma/model.d.ts.map +1 -1
  55. package/dist/adapters/prisma/model.js +11 -79
  56. package/dist/adapters/prisma/model.js.map +1 -1
  57. package/dist/adapters/utils/cookie.d.ts +17 -0
  58. package/dist/adapters/utils/cookie.d.ts.map +1 -0
  59. package/dist/adapters/utils/cookie.js +59 -0
  60. package/dist/adapters/utils/cookie.js.map +1 -0
  61. package/dist/adapters/utils/session.d.ts +4 -0
  62. package/dist/adapters/utils/session.d.ts.map +1 -0
  63. package/dist/adapters/utils/session.js +216 -0
  64. package/dist/adapters/utils/session.js.map +1 -0
  65. package/dist/adapters/utils/social.d.ts +51 -0
  66. package/dist/adapters/utils/social.d.ts.map +1 -0
  67. package/dist/adapters/utils/social.js +278 -0
  68. package/dist/adapters/utils/social.js.map +1 -0
  69. package/dist/adapters/utils/types.d.ts +67 -0
  70. package/dist/adapters/utils/types.d.ts.map +1 -0
  71. package/dist/adapters/utils/types.js +2 -0
  72. package/dist/adapters/utils/types.js.map +1 -0
  73. package/package.json +40 -3
  74. package/src/adapters/drizzle/schema.ts +47 -0
  75. package/src/adapters/prisma/schema.prisma +38 -0
@@ -0,0 +1,29 @@
1
+ import type { Request, RequestHandler, Response } from "express";
2
+ import type { AuthAccount } from "../../session/types.js";
3
+ import type { SocialAuthenticated, SocialConfig, SocialDbAdapter, SocialIdentity } from "../../social/types.js";
4
+ import type { HttpCookieOptions } from "../utils/types.js";
5
+ type ExpressSocialDeps<TAccount extends AuthAccount, TData> = {
6
+ config: SocialConfig<TData>;
7
+ cookie: HttpCookieOptions;
8
+ db: SocialDbAdapter<TAccount>;
9
+ sessionCookieNames: readonly string[];
10
+ secret: string;
11
+ };
12
+ type ExpressSocialInput = {
13
+ request: Request;
14
+ response: Response;
15
+ };
16
+ type CompleteRegistrationInput<TData> = ExpressSocialInput & {
17
+ data: TData;
18
+ };
19
+ export type ExpressSocialLocals<TAccount extends AuthAccount = AuthAccount> = {
20
+ social: SocialAuthenticated<TAccount>;
21
+ };
22
+ export type ExpressSocial<TAccount extends AuthAccount = AuthAccount, TData = undefined> = {
23
+ completeRegistration(input: CompleteRegistrationInput<TData>): Promise<SocialAuthenticated<TAccount>>;
24
+ getRegistration(input: ExpressSocialInput): SocialIdentity;
25
+ handle: RequestHandler;
26
+ };
27
+ export declare const createExpressSocial: <TAccount extends AuthAccount, TData>({ config, cookie, db, sessionCookieNames, secret, }: ExpressSocialDeps<TAccount, TData>) => ExpressSocial<TAccount, TData>;
28
+ export {};
29
+ //# sourceMappingURL=social.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../../src/adapters/express/social.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EACR,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,cAAc,EACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,KAAK,iBAAiB,CAAC,QAAQ,SAAS,WAAW,EAAE,KAAK,IAAI;IAC1D,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACtB,CAAC;AAEF,KAAK,yBAAyB,CAAC,KAAK,IAAI,kBAAkB,GAAG;IACzD,IAAI,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,IAAI;IAC1E,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,KAAK,GAAG,SAAS,IAAI;IACvF,oBAAoB,CAChB,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,GACxC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,cAAc,CAAC;IAC3D,MAAM,EAAE,cAAc,CAAC;CAC1B,CAAC;AAcF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,SAAS,WAAW,EAAE,KAAK,EAAE,qDAMtE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAsCpE,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { createHttpSocial } from "../utils/social.js";
2
+ const getParam = ({ name, request }) => {
3
+ const value = request.params[name];
4
+ return typeof value === "string" ? value : value?.[0];
5
+ };
6
+ const getQuery = ({ name, request }) => {
7
+ const value = request.query[name];
8
+ return typeof value === "string" ? value : undefined;
9
+ };
10
+ export const createExpressSocial = ({ config, cookie, db, sessionCookieNames, secret, }) => {
11
+ const social = createHttpSocial({
12
+ appendSetCookie: ({ response, value }) => {
13
+ response.append("Set-Cookie", value);
14
+ },
15
+ config,
16
+ cookie,
17
+ db,
18
+ getHeader: ({ name, request }) => request.get(name),
19
+ getParam,
20
+ getQuery,
21
+ sessionCookieNames,
22
+ secret,
23
+ });
24
+ const handle = async (request, response, next) => {
25
+ const result = await social.handle({ request, response });
26
+ if (result.type === "not_found") {
27
+ response.sendStatus(404);
28
+ return;
29
+ }
30
+ if (result.type === "redirect") {
31
+ response.redirect(result.url);
32
+ return;
33
+ }
34
+ const locals = response.locals;
35
+ locals.social = result.value;
36
+ next();
37
+ };
38
+ return {
39
+ completeRegistration: (input) => social.completeRegistration(input),
40
+ getRegistration: (input) => social.getRegistration(input),
41
+ handle,
42
+ };
43
+ };
44
+ //# sourceMappingURL=social.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social.js","sourceRoot":"","sources":["../../../src/adapters/express/social.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgCtD,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAsC,EAAsB,EAAE;IAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAsC,EAAsB,EAAE;IAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAsC,EACrE,MAAM,EACN,MAAM,EACN,EAAE,EACF,kBAAkB,EAClB,MAAM,GAC2B,EAAkC,EAAE;IACrE,MAAM,MAAM,GAAG,gBAAgB,CAAqC;QAChE,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;YACrC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,MAAM;QACN,MAAM;QACN,EAAE;QACF,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACnD,QAAQ;QACR,QAAQ;QACR,kBAAkB;QAClB,MAAM;KACT,CAAC,CAAC;IAEH,MAAM,MAAM,GAAmB,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;QAC7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO;QACX,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAuC,CAAC;QAChE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC7B,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;IAEF,OAAO;QACH,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACnE,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;QACzD,MAAM;KACT,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,85 @@
1
+ import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
2
+ import { type Auth, type AuthDeps } from "../../auth.js";
3
+ import type { SessionCacheConfig } from "../../session/cache.js";
4
+ import type { SessionCookieNames } from "../../session/cookie.js";
5
+ import type { AuthAccount, DbAdapter, ResolvedSession, Session } from "../../session/types.js";
6
+ import type { SocialConfig, SocialDbAdapter } from "../../social/types.js";
7
+ import type { HttpCookieConfig } from "../utils/types.js";
8
+ import { type FastifySocial } from "./social.js";
9
+ export type { SessionCacheConfig } from "../../session/cache.js";
10
+ export type { FastifySocial, FastifySocialHandler } from "./social.js";
11
+ export type FastifyAuthContext<TAccount extends AuthAccount = AuthAccount> = {
12
+ account: TAccount;
13
+ session: Session;
14
+ user: TAccount["user"];
15
+ };
16
+ export type FastifyCookieConfig = HttpCookieConfig;
17
+ export type FastifyGetIp = (request: FastifyRequest) => Promise<string | null | undefined> | string | null | undefined;
18
+ type FastifyCacheOptions = {
19
+ cache: SessionCacheConfig;
20
+ secret: string;
21
+ } | {
22
+ cache?: undefined;
23
+ secret?: string;
24
+ };
25
+ export type FastifyAdapterConfig<TAccount extends AuthAccount = AuthAccount> = {
26
+ auth: Auth<TAccount>;
27
+ cache?: SessionCacheConfig;
28
+ cookie?: FastifyCookieConfig;
29
+ getIp?: FastifyGetIp;
30
+ secret?: string;
31
+ };
32
+ type FastifyAuthBase<TAccount extends AuthAccount> = Omit<AuthDeps<TAccount>, "db"> & {
33
+ cookie?: FastifyCookieConfig;
34
+ db: DbAdapter<TAccount>;
35
+ getIp?: FastifyGetIp;
36
+ };
37
+ type FastifySocialOptions<TAccount extends AuthAccount, TData> = {
38
+ db: DbAdapter<TAccount> & SocialDbAdapter<TAccount>;
39
+ secret: string;
40
+ social: SocialConfig<TData>;
41
+ } | {
42
+ db: DbAdapter<TAccount>;
43
+ social?: undefined;
44
+ };
45
+ export type FastifyAuthConfig<TAccount extends AuthAccount = AuthAccount, TData = undefined> = Omit<FastifyAuthBase<TAccount>, "db"> & FastifyCacheOptions & FastifySocialOptions<TAccount, TData>;
46
+ type FastifyAuthOptions<TAccount extends AuthAccount> = Omit<FastifyAuthBase<TAccount>, "db"> & FastifyCacheOptions;
47
+ type DbAccount<TDb> = TDb extends DbAdapter<infer TAccount> ? TAccount : never;
48
+ type FastifyRequestInput = {
49
+ reply: FastifyReply;
50
+ request: FastifyRequest;
51
+ };
52
+ type CreateSessionInput = FastifyRequestInput & {
53
+ account_id: string;
54
+ country?: string | null;
55
+ };
56
+ export type FastifySessionHandler = (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
57
+ export type FastifyAdapter<TAccount extends AuthAccount = AuthAccount> = {
58
+ clearSession(reply: FastifyReply): void;
59
+ cookie: Readonly<SessionCookieNames>;
60
+ createSession(input: CreateSessionInput): Promise<Session>;
61
+ decorate(app: FastifyInstance): void;
62
+ getToken(request: FastifyRequest): string | null;
63
+ renewSession(input: FastifyRequestInput): Promise<Session>;
64
+ requireSession: FastifySessionHandler;
65
+ resolveSession(input: FastifyRequestInput): Promise<ResolvedSession<TAccount>>;
66
+ revokeSession(input: FastifyRequestInput): Promise<string[]>;
67
+ };
68
+ export type FastifyAuth<TAccount extends AuthAccount = AuthAccount> = Auth<TAccount> & FastifyAdapter<TAccount>;
69
+ export type FastifySocialAuth<TAccount extends AuthAccount = AuthAccount, TData = undefined> = Auth<TAccount> & FastifyAdapter<TAccount> & {
70
+ social: FastifySocial<TAccount, TData>;
71
+ };
72
+ export declare const createFastifyAdapter: <TAccount extends AuthAccount>({ auth, cache, cookie, getIp, secret, }: FastifyAdapterConfig<TAccount>) => FastifyAdapter<TAccount>;
73
+ type CreateFastifyAuth = {
74
+ <TDb extends DbAdapter, TData>(input: FastifyAuthOptions<DbAccount<TDb>> & {
75
+ db: TDb & SocialDbAdapter<DbAccount<TDb>>;
76
+ secret: string;
77
+ social: SocialConfig<TData>;
78
+ }): FastifySocialAuth<DbAccount<TDb>, TData>;
79
+ <TDb extends DbAdapter>(input: FastifyAuthOptions<DbAccount<TDb>> & {
80
+ db: TDb;
81
+ social?: undefined;
82
+ }): FastifyAuth<DbAccount<TDb>>;
83
+ };
84
+ export declare const createFastifyAuth: CreateFastifyAuth;
85
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/fastify/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import { createAuth } from "../../auth.js";
2
+ import { resolveHttpCookie } from "../utils/cookie.js";
3
+ import { requireSocialDb } from "../utils/social.js";
4
+ import { createHttpSession } from "../utils/session.js";
5
+ import { createFastifySocial } from "./social.js";
6
+ const decorateRequest = ({ app, name }) => {
7
+ if (!app.hasRequestDecorator(name)) {
8
+ app.decorateRequest(name);
9
+ }
10
+ };
11
+ export const createFastifyAdapter = ({ auth, cache, cookie, getIp, secret, }) => {
12
+ const session = createHttpSession({
13
+ appendSetCookie: ({ response, value }) => {
14
+ response.header("Set-Cookie", value);
15
+ },
16
+ auth,
17
+ ...(cache === undefined ? {} : { cache }),
18
+ ...(cookie === undefined ? {} : { cookie }),
19
+ framework: "Fastify",
20
+ getHeader: ({ name, request }) => {
21
+ const value = request.headers[name];
22
+ return Array.isArray(value) ? value[0] : value;
23
+ },
24
+ ...(getIp === undefined ? {} : { getIp }),
25
+ getMethod: (request) => request.method,
26
+ ...(secret === undefined ? {} : { secret }),
27
+ });
28
+ const resolveSession = ({ reply, request, }) => {
29
+ return session.resolveSession({ request, response: reply });
30
+ };
31
+ const requireSession = async (request, reply) => {
32
+ const value = await resolveSession({ reply, request });
33
+ request.setDecorator("session", value.session);
34
+ request.setDecorator("account", value.account);
35
+ request.setDecorator("user", value.account.user);
36
+ };
37
+ const decorate = (app) => {
38
+ decorateRequest({ app, name: "session" });
39
+ decorateRequest({ app, name: "account" });
40
+ decorateRequest({ app, name: "user" });
41
+ };
42
+ return {
43
+ clearSession: (reply) => session.clearSession(reply),
44
+ cookie: session.cookie,
45
+ createSession: ({ account_id, country, reply, request }) => {
46
+ return session.createSession({
47
+ account_id,
48
+ ...(country === undefined ? {} : { country }),
49
+ request,
50
+ response: reply,
51
+ });
52
+ },
53
+ decorate,
54
+ getToken: (request) => session.getToken(request),
55
+ renewSession: ({ reply, request }) => {
56
+ return session.renewSession({ request, response: reply });
57
+ },
58
+ requireSession,
59
+ resolveSession,
60
+ revokeSession: ({ reply, request }) => {
61
+ return session.revokeSession({ request, response: reply });
62
+ },
63
+ };
64
+ };
65
+ const createFastifyAuthImpl = ({ cache, cookie, db, getIp, password, secret, session, social, }) => {
66
+ const auth = createAuth({
67
+ db,
68
+ ...(password === undefined ? {} : { password }),
69
+ ...(session === undefined ? {} : { session }),
70
+ });
71
+ const adapter = createFastifyAdapter({
72
+ auth,
73
+ ...(cache === undefined ? {} : { cache }),
74
+ ...(cookie === undefined ? {} : { cookie }),
75
+ ...(getIp === undefined ? {} : { getIp }),
76
+ ...(secret === undefined ? {} : { secret }),
77
+ });
78
+ if (social === undefined) {
79
+ return { ...auth, ...adapter };
80
+ }
81
+ const resolvedCookie = resolveHttpCookie(cookie);
82
+ const socialAdapter = createFastifySocial({
83
+ config: social,
84
+ cookie: resolvedCookie.options,
85
+ db: requireSocialDb(db),
86
+ sessionCookieNames: Object.values(resolvedCookie.names),
87
+ secret,
88
+ });
89
+ return {
90
+ ...auth,
91
+ ...adapter,
92
+ decorate: (app) => {
93
+ adapter.decorate(app);
94
+ decorateRequest({ app, name: "social" });
95
+ },
96
+ social: socialAdapter,
97
+ };
98
+ };
99
+ export const createFastifyAuth = createFastifyAuthImpl;
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/fastify/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { FastifyReply, FastifyRequest } from "fastify";
2
+ import type { AuthAccount } from "../../session/types.js";
3
+ import type { SocialAuthenticated, SocialConfig, SocialDbAdapter, SocialIdentity } from "../../social/types.js";
4
+ import type { HttpCookieOptions } from "../utils/types.js";
5
+ type FastifySocialDeps<TAccount extends AuthAccount, TData> = {
6
+ config: SocialConfig<TData>;
7
+ cookie: HttpCookieOptions;
8
+ db: SocialDbAdapter<TAccount>;
9
+ sessionCookieNames: readonly string[];
10
+ secret: string;
11
+ };
12
+ type FastifySocialInput = {
13
+ reply: FastifyReply;
14
+ request: FastifyRequest;
15
+ };
16
+ type CompleteRegistrationInput<TData> = FastifySocialInput & {
17
+ data: TData;
18
+ };
19
+ export type FastifySocialHandler = (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
20
+ export type FastifySocial<TAccount extends AuthAccount = AuthAccount, TData = undefined> = {
21
+ completeRegistration(input: CompleteRegistrationInput<TData>): Promise<SocialAuthenticated<TAccount>>;
22
+ getRegistration(input: FastifySocialInput): SocialIdentity;
23
+ handle: FastifySocialHandler;
24
+ };
25
+ export declare const createFastifySocial: <TAccount extends AuthAccount, TData>({ config, cookie, db, sessionCookieNames, secret, }: FastifySocialDeps<TAccount, TData>) => FastifySocial<TAccount, TData>;
26
+ export {};
27
+ //# sourceMappingURL=social.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../../src/adapters/fastify/social.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EACR,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,cAAc,EACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,KAAK,iBAAiB,CAAC,QAAQ,SAAS,WAAW,EAAE,KAAK,IAAI;IAC1D,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,KAAK,yBAAyB,CAAC,KAAK,IAAI,kBAAkB,GAAG;IACzD,IAAI,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnG,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,KAAK,GAAG,SAAS,IAAI;IACvF,oBAAoB,CAChB,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,GACxC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,cAAc,CAAC;IAC3D,MAAM,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAWF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,SAAS,WAAW,EAAE,KAAK,EAAE,qDAMtE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CA2CpE,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { createHttpSocial } from "../utils/social.js";
2
+ const getValue = ({ name, value }) => {
3
+ if (typeof value !== "object" || value === null) {
4
+ return undefined;
5
+ }
6
+ const field = value[name];
7
+ return typeof field === "string" ? field : undefined;
8
+ };
9
+ export const createFastifySocial = ({ config, cookie, db, sessionCookieNames, secret, }) => {
10
+ const social = createHttpSocial({
11
+ appendSetCookie: ({ response, value }) => {
12
+ response.header("Set-Cookie", value);
13
+ },
14
+ config,
15
+ cookie,
16
+ db,
17
+ getHeader: ({ name, request }) => {
18
+ const value = request.headers[name];
19
+ return Array.isArray(value) ? value[0] : value;
20
+ },
21
+ getParam: ({ name, request }) => getValue({ name, value: request.params }),
22
+ getQuery: ({ name, request }) => getValue({ name, value: request.query }),
23
+ sessionCookieNames,
24
+ secret,
25
+ });
26
+ const handle = async (request, reply) => {
27
+ const result = await social.handle({ request, response: reply });
28
+ if (result.type === "not_found") {
29
+ reply.callNotFound();
30
+ return;
31
+ }
32
+ if (result.type === "redirect") {
33
+ reply.redirect(result.url);
34
+ return;
35
+ }
36
+ request.setDecorator("social", result.value);
37
+ };
38
+ return {
39
+ completeRegistration: ({ data, reply, request }) => {
40
+ return social.completeRegistration({ data, request, response: reply });
41
+ },
42
+ getRegistration: ({ reply, request }) => {
43
+ return social.getRegistration({ request, response: reply });
44
+ },
45
+ handle,
46
+ };
47
+ };
48
+ //# sourceMappingURL=social.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social.js","sourceRoot":"","sources":["../../../src/adapters/fastify/social.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA8BtD,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAoC,EAAsB,EAAE;IACvF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAI,KAAiC,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAsC,EACrE,MAAM,EACN,MAAM,EACN,EAAE,EACF,kBAAkB,EAClB,MAAM,GAC2B,EAAkC,EAAE;IACrE,MAAM,MAAM,GAAG,gBAAgB,CAAgD;QAC3E,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;YACrC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,MAAM;QACN,MAAM;QACN,EAAE;QACF,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,CAAC;QACD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1E,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACzE,kBAAkB;QAClB,MAAM;KACT,CAAC,CAAC;IAEH,MAAM,MAAM,GAAyB,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC1D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjE,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO;QACX,CAAC;QAED,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,OAAO;QACH,oBAAoB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/C,OAAO,MAAM,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;YACpC,OAAO,MAAM,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,MAAM;KACT,CAAC;AACN,CAAC,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import type { Context, Env, MiddlewareHandler } from "hono";
2
2
  import { type Auth, type AuthDeps } from "../../auth.js";
3
- import { type SessionCacheConfig } from "../../session/cache.js";
3
+ import type { SessionCacheConfig } from "../../session/cache.js";
4
+ import type { SessionCookieNames } from "../../session/cookie.js";
4
5
  import type { AuthAccount, DbAdapter, ResolvedSession, Session } from "../../session/types.js";
5
6
  import type { SocialConfig, SocialDbAdapter } from "../../social/types.js";
7
+ import type { HttpCookieConfig } from "../utils/types.js";
6
8
  import { type HonoSocial } from "./social.js";
7
- import { type SessionCookieNames } from "../../session/cookie.js";
8
9
  export type { SessionCacheConfig } from "../../session/cache.js";
9
10
  export type { HonoSocial, HonoSocialEnv, HonoSocialVariables } from "./social.js";
10
11
  export type HonoAuthVariables<TAccount extends AuthAccount = AuthAccount> = {
@@ -15,15 +16,7 @@ export type HonoAuthVariables<TAccount extends AuthAccount = AuthAccount> = {
15
16
  export type HonoAuthEnv<TAccount extends AuthAccount = AuthAccount> = Env & {
16
17
  Variables: HonoAuthVariables<TAccount>;
17
18
  };
18
- export type HonoCookieConfig = {
19
- cacheName?: string;
20
- domain?: string;
21
- path?: string;
22
- renewName?: string;
23
- sameSite?: "Strict" | "Lax" | "None";
24
- secure?: boolean;
25
- sessionName?: string;
26
- };
19
+ export type HonoCookieConfig = HttpCookieConfig;
27
20
  export type HonoGetIp = (c: Context) => Promise<string | null | undefined> | string | null | undefined;
28
21
  type HonoCacheOptions = {
29
22
  cache: SessionCacheConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,EAAc,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElF,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,IAAI;IACxE,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,IAAI,GAAG,GAAG;IACxE,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG,CACpB,CAAC,EAAE,OAAO,KACT,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEpE,KAAK,gBAAgB,GACf;IACI,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAClB,GACD;IACI,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAER,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,IAAI;IACxE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,YAAY,CAAC,QAAQ,SAAS,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,GAAG;IAC/E,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,KAAK,iBAAiB,CAAC,QAAQ,SAAS,WAAW,EAAE,KAAK,IACpD;IACI,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;CAC/B,GACD;IACI,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAER,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,KAAK,GAAG,SAAS,IAAI,IAAI,CAC5F,YAAY,CAAC,QAAQ,CAAC,EACtB,IAAI,CACP,GACG,gBAAgB,GAChB,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEvC,KAAK,eAAe,CAAC,QAAQ,SAAS,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,GACnF,gBAAgB,CAAC;AAErB,KAAK,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,SAAS,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE/E,KAAK,kBAAkB,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,IAAI;IAClE,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACrC,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,cAAc,EAAE,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,QAAQ,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,GAC7E,WAAW,CAAC,QAAQ,CAAC,CAAC;AAE1B,MAAM,MAAM,cAAc,CACtB,QAAQ,SAAS,WAAW,GAAG,WAAW,EAC1C,KAAK,GAAG,SAAS,IACjB,IAAI,CAAC,QAAQ,CAAC,GACd,WAAW,CAAC,QAAQ,CAAC,GAAG;IACpB,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;CACvC,CAAC;AAEN,eAAO,MAAM,iBAAiB,GAAI,QAAQ,SAAS,WAAW,EAAE,yCAM7D,iBAAiB,CAAC,QAAQ,CAAC,KAAG,WAAW,CAAC,QAAQ,CAiEpD,CAAC;AAEF,KAAK,cAAc,GAAG;IAClB,CAAC,GAAG,SAAS,SAAS,EAAE,KAAK,EACzB,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG;QACrC,EAAE,EAAE,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;KAC/B,GACF,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,GAAG,SAAS,SAAS,EAClB,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG;QACrC,EAAE,EAAE,GAAG,CAAC;QACR,MAAM,CAAC,EAAE,SAAS,CAAC;KACtB,GACF,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC;AA4CF,eAAO,MAAM,cAAc,EAAyB,cAAc,CAAC"}