appos 0.4.2-0 → 0.5.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/exports/api/index.d.mts +5 -4
  2. package/dist/exports/api/index.mjs +117 -15
  3. package/dist/exports/api/orm.d.mts +1 -1
  4. package/dist/exports/api/orm.mjs +1 -1
  5. package/dist/exports/api/workflows/index.d.mts +4 -3
  6. package/dist/exports/api/workflows/index.mjs +2 -2
  7. package/dist/exports/app-context-B1VJ9qnH.mjs +3 -0
  8. package/dist/exports/auth-DVv5fNvd.d.mts +874 -0
  9. package/dist/exports/cli/index.d.mts +4 -3
  10. package/dist/exports/cli/index.mjs +90 -16
  11. package/dist/exports/{constants-DbBfpyC3.mjs → constants-BicCnEiJ.mjs} +7 -1
  12. package/dist/exports/{index-B3m3Uvsl.d.mts → index-D3decHVs.d.mts} +470 -876
  13. package/dist/exports/{instrumentation-DrvjMp7J.mjs → instrumentation-DkoLNAtz.mjs} +1 -1
  14. package/dist/exports/instrumentation.d.mts +1 -1
  15. package/dist/exports/instrumentation.mjs +1 -1
  16. package/dist/exports/{mock-CURQkGUm.mjs → mock-2jMk5l3y.mjs} +1 -1
  17. package/dist/exports/{openapi-C7QT3gNU.mjs → openapi-uisUTLq7.mjs} +154 -109
  18. package/dist/exports/{orm-CQk1S10H.d.mts → orm-CJrd147z.d.mts} +1 -1
  19. package/dist/exports/{orm-BYSfGzG0.mjs → orm-COJ9l6sS.mjs} +1 -1
  20. package/dist/exports/{send-email-Do8SjZL7.mjs → send-email-CXxlkfFL.mjs} +13 -1
  21. package/dist/exports/{server-lUTkWRNL.mjs → server-CA4aI0U6.mjs} +15 -9
  22. package/dist/exports/ssr-BsfNjYlJ.mjs +16 -0
  23. package/dist/exports/storybook/index.d.ts +43 -0
  24. package/dist/exports/storybook/index.js +43 -0
  25. package/dist/exports/tests/api.d.mts +4 -3
  26. package/dist/exports/tests/api.mjs +7 -7
  27. package/dist/exports/tests/mock.mjs +1 -1
  28. package/dist/exports/vite/index.mjs +51 -2
  29. package/dist/exports/web/index.d.ts +1173 -363
  30. package/dist/exports/web/index.js +1860 -843
  31. package/dist/exports/web/routes.d.mts +137 -0
  32. package/dist/exports/{ssr-C4ZXh5DE.mjs → web/routes.mjs} +28 -86
  33. package/dist/exports/web/ssr.d.mts +6 -248
  34. package/dist/exports/web/ssr.mjs +2 -2
  35. package/package.json +39 -12
  36. package/src/storybook/.storybook/main.ts +100 -0
  37. package/src/storybook/.storybook/manager.ts +75 -0
  38. package/src/storybook/.storybook/preview.ts +37 -0
  39. package/src/storybook/components/ColorGrid.tsx +324 -0
  40. package/src/storybook/components/IconGallery.tsx +268 -0
  41. package/src/storybook/components/SpacingScale.tsx +236 -0
  42. package/src/storybook/components/TypographyScale.tsx +277 -0
  43. package/src/storybook/components/index.ts +3 -0
  44. package/src/storybook/docs/Introduction.mdx +29 -0
  45. package/src/storybook/docs/foundations/Colors.mdx +27 -0
  46. package/src/storybook/docs/foundations/Icons.mdx +26 -0
  47. package/src/storybook/docs/foundations/Spacing.mdx +23 -0
  48. package/src/storybook/docs/foundations/Typography.mdx +39 -0
  49. package/src/storybook/vite.config.ts +24 -0
  50. package/src/web/lib/colors.ts +220 -0
  51. package/src/web/routes/auth/_layout.tsx +14 -8
  52. package/src/web/routes/auth/forgot-password.tsx +3 -1
  53. package/src/web/routes/auth/phone-otp.tsx +1 -2
  54. package/src/web/routes/auth/utils.ts +30 -170
  55. package/src/web/ui/button.stories.tsx +260 -0
  56. package/src/web/ui/globals.css +2 -0
  57. package/src/web/ui/locales/en/ui.json +49 -32
  58. package/src/web/ui/locales/zh-CN/ui.json +53 -36
  59. package/src/web/ui/locales/zh-TW/ui.json +53 -36
  60. package/dist/exports/app-context-deZa7oJC.mjs +0 -3
  61. /package/dist/exports/{app-context-DoFRTUi5.mjs → app-context-LF4QmPUC.mjs} +0 -0
  62. /package/dist/exports/{chunk-Db_DmN2K.mjs → chunk-CHSICr2d.mjs} +0 -0
  63. /package/dist/exports/{instrumentation-B0Ev9PvT.d.mts → instrumentation-CFIspF8-.d.mts} +0 -0
  64. /package/dist/exports/{vite-compat-CeAU9UrA.mjs → vite-compat-CICObU9F.mjs} +0 -0
  65. /package/dist/exports/{youch-handler-BEWxHUsu.mjs → youch-handler-CHwX0Fou.mjs} +0 -0
@@ -1,4 +1,5 @@
1
- import { $ as StorageAttachment, $t as createAccessControl, A as defaultI18nConfig, At as EventBus, B as ServerConfig, Bt as Cache, C as scanAPIRoutes, Ct as defineQueue, D as loadMiddleware, Dt as DbChangeInput, E as defineMiddleware, Et as loadWorkflows, F as DefineAppContextOpts, Ft as defineEventBus, G as DefineStorageOptions, Gt as AuditAction, H as defineAppContainer, Ht as defineCache, I as SessionData, It as loadEvents, J as defineS3Disk, Jt as AuthPasskeyConfig, K as Storage, Kt as Auth, L as defineAppContext, Lt as Config, M as i18n, Mt as dbChangeInputSchema, N as defineAuthSchema, Nt as dbChangesEvent, Ot as DefineEventBusOptions, P as AppContext, Pt as defineEvent, Q as NewStorageVariantRecord, Qt as auditActionSchema, R as AppContainer, Rt as baseSchema, S as registerRoutes, St as WorkflowStartOptions, T as Middleware, Tt as defineWorkflow, U as DatabaseWithStorage, Ut as AccessControlRoles, V as WorkerConfig, Vt as DefineCacheOptions, W as DefineS3DiskOptions, Wt as AccessController, X as NewStorageAttachment, Xt as DefineAuthOptions, Y as defineStorage, Yt as AuthSessionConfig, Z as NewStorageBlob, Zt as Role, _ as defineOpenAPIConfig, _t as QueueFactoryContext, a as defineRedisClient, an as QualifiedTableNames, at as defineStorageSchema, b as generateOpenAPIDocument, bt as WorkflowContext, c as DefineOpenAPIConfigInput, cn as defineMigrationOpts, ct as Mailer, d as OpenAPIMethodSpec, dn as DefineLoggerOptions, dt as MailerPayloadReact, en as defineAuth, et as StorageBlob, f as OpenAPIObjectConfigV31, fn as Logger, ft as MailerWithQueue, g as defineOpenAPI, gt as QueueFactory, h as ValidationErrorResponse, ht as Queue, i as RedisClient, in as MigrationType, it as StorageVariantRecord, j as defineI18n, jt as EventContext, k as I18nInitOptions, kt as Event, l as DefineOpenAPIReturn, ln as defineTestDatabase, lt as MailerPayload, m as RouteModule, mt as DefineQueueOptions, nn as DefineDatabaseOptions, nt as StorageRelationsConfig, o as withOtelSpan, on as dbChanges, ot as DefineMailerOptions, p as OpenAPIRegistration, pn as defineLogger, pt as defineMailer, q as StorageService, qt as AuthConfig, r as DefineRedisClientOptions, rn as DefineTestDatabaseOptions, rt as StorageTables, s as DefineOpenAPIConfig, sn as defineDatabase, st as DefineMailerOptionsWithQueue, t as CustomTypeOptions, tn as Database, tt as StorageRelations, u as HandlerParams, un as migrationsSchema, ut as MailerPayloadHtml, v as defineOpenAPIEndpoint, vt as QueueRateLimit, w as writeOpenAPISpecs, wt as defineScheduledWorkflow, x as loadAndRegisterAPIRoutes, xt as WorkflowHandle, y as defineTypedResponses, yt as ScheduledWorkflowContext, z as Container, zt as defineConfig } from "../index-B3m3Uvsl.mjs";
2
- import "../orm-CQk1S10H.mjs";
3
- import "../instrumentation-B0Ev9PvT.mjs";
4
- export { AccessControlRoles, AccessController, AppContainer, AppContext, AuditAction, Auth, AuthConfig, AuthPasskeyConfig, AuthSessionConfig, Cache, Config, Container, CustomTypeOptions, Database, DatabaseWithStorage, DbChangeInput, DefineAppContextOpts, DefineAuthOptions, DefineCacheOptions, DefineDatabaseOptions, DefineEventBusOptions, DefineLoggerOptions, DefineMailerOptions, DefineMailerOptionsWithQueue, DefineOpenAPIConfig, DefineOpenAPIConfigInput, DefineOpenAPIReturn, DefineQueueOptions, DefineRedisClientOptions, DefineS3DiskOptions, DefineStorageOptions, DefineTestDatabaseOptions, Event, EventBus, EventContext, HandlerParams, I18nInitOptions, Logger, Mailer, MailerPayload, MailerPayloadHtml, MailerPayloadReact, MailerWithQueue, Middleware, MigrationType, NewStorageAttachment, NewStorageBlob, NewStorageVariantRecord, OpenAPIMethodSpec, OpenAPIObjectConfigV31, OpenAPIRegistration, QualifiedTableNames, Queue, QueueFactory, QueueFactoryContext, QueueRateLimit, RedisClient, Role, RouteModule, ScheduledWorkflowContext, ServerConfig, SessionData, Storage, StorageAttachment, StorageBlob, StorageRelations, StorageRelationsConfig, StorageService, StorageTables, StorageVariantRecord, ValidationErrorResponse, WorkerConfig, WorkflowContext, WorkflowHandle, WorkflowStartOptions, auditActionSchema, baseSchema, createAccessControl, dbChangeInputSchema, dbChanges, dbChangesEvent, defaultI18nConfig, defineAppContainer, defineAppContext, defineAuth, defineAuthSchema, defineCache, defineConfig, defineDatabase, defineEvent, defineEventBus, defineI18n, defineLogger, defineMailer, defineMiddleware, defineMigrationOpts, defineOpenAPI, defineOpenAPIConfig, defineOpenAPIEndpoint, defineQueue, defineRedisClient, defineS3Disk, defineScheduledWorkflow, defineStorage, defineStorageSchema, defineTestDatabase, defineTypedResponses, defineWorkflow, generateOpenAPIDocument, i18n, loadAndRegisterAPIRoutes, loadEvents, loadMiddleware, loadWorkflows, migrationsSchema, registerRoutes, scanAPIRoutes, withOtelSpan, writeOpenAPISpecs };
1
+ import { A as defineLogger, C as dbChanges, D as migrationsSchema, E as defineTestDatabase, O as DefineLoggerOptions, S as QualifiedTableNames, T as defineMigrationOpts, a as AuthCaptchaConfig, b as DefineTestDatabaseOptions, c as AuthSessionConfig, d as Role, f as auditActionSchema, g as defineEndpointRateLimits, h as defineAuth, i as Auth, k as Logger, l as CaptchaProvider, m as createAccessControl, n as AccessController, o as AuthConfig, p as captchaProviders, r as AuditAction, s as AuthPasskeyConfig, t as AccessControlRoles, u as DefineAuthOptions, v as Database, w as defineDatabase, x as MigrationType, y as DefineDatabaseOptions } from "../auth-DVv5fNvd.mjs";
2
+ import { $ as StorageAttachment, A as defaultI18nConfig, At as EventBus, B as ServerConfig, Bt as Cache, C as scanAPIRoutes, Ct as defineQueue, D as loadMiddleware, Dt as DbChangeInput, E as defineMiddleware, Et as loadWorkflows, F as DefineAppContextOpts, Ft as defineEventBus, G as DefineStorageOptions, H as defineAppContainer, Ht as defineCache, I as SessionData, It as loadEvents, J as defineS3Disk, K as Storage, L as defineAppContext, Lt as Config, M as i18n, Mt as dbChangeInputSchema, N as defineAuthSchema, Nt as dbChangesEvent, Ot as DefineEventBusOptions, P as AppContext, Pt as defineEvent, Q as NewStorageVariantRecord, R as AppContainer, Rt as baseSchema, S as registerRoutes, St as WorkflowStartOptions, T as Middleware, Tt as defineWorkflow, U as DatabaseWithStorage, V as WorkerConfig, Vt as DefineCacheOptions, W as DefineS3DiskOptions, X as NewStorageAttachment, Y as defineStorage, Z as NewStorageBlob, _ as defineOpenAPIConfig, _t as QueueFactoryContext, a as defineRedisClient, at as defineStorageSchema, b as generateOpenAPIDocument, bt as WorkflowContext, c as DefineOpenAPIConfigInput, ct as Mailer, d as OpenAPIMethodSpec, dt as MailerPayloadReact, et as StorageBlob, f as OpenAPIObjectConfigV31, ft as MailerWithQueue, g as defineOpenAPI, gt as QueueFactory, h as ValidationErrorResponse, ht as Queue, i as RedisClient, it as StorageVariantRecord, j as defineI18n, jt as EventContext, k as I18nInitOptions, kt as Event, l as DefineOpenAPIReturn, lt as MailerPayload, m as RouteModule, mt as DefineQueueOptions, nt as StorageRelationsConfig, o as withOtelSpan, ot as DefineMailerOptions, p as OpenAPIRegistration, pt as defineMailer, q as StorageService, r as DefineRedisClientOptions, rt as StorageTables, s as DefineOpenAPIConfig, st as DefineMailerOptionsWithQueue, t as CustomTypeOptions, tt as StorageRelations, u as HandlerParams, ut as MailerPayloadHtml, v as defineOpenAPIEndpoint, vt as QueueRateLimit, w as writeOpenAPISpecs, wt as defineScheduledWorkflow, x as loadAndRegisterAPIRoutes, xt as WorkflowHandle, y as defineTypedResponses, yt as ScheduledWorkflowContext, z as Container, zt as defineConfig } from "../index-D3decHVs.mjs";
3
+ import "../orm-CJrd147z.mjs";
4
+ import "../instrumentation-CFIspF8-.mjs";
5
+ export { AccessControlRoles, AccessController, AppContainer, AppContext, AuditAction, Auth, AuthCaptchaConfig, AuthConfig, AuthPasskeyConfig, AuthSessionConfig, Cache, CaptchaProvider, Config, Container, CustomTypeOptions, Database, DatabaseWithStorage, DbChangeInput, DefineAppContextOpts, DefineAuthOptions, DefineCacheOptions, DefineDatabaseOptions, DefineEventBusOptions, DefineLoggerOptions, DefineMailerOptions, DefineMailerOptionsWithQueue, DefineOpenAPIConfig, DefineOpenAPIConfigInput, DefineOpenAPIReturn, DefineQueueOptions, DefineRedisClientOptions, DefineS3DiskOptions, DefineStorageOptions, DefineTestDatabaseOptions, Event, EventBus, EventContext, HandlerParams, I18nInitOptions, Logger, Mailer, MailerPayload, MailerPayloadHtml, MailerPayloadReact, MailerWithQueue, Middleware, MigrationType, NewStorageAttachment, NewStorageBlob, NewStorageVariantRecord, OpenAPIMethodSpec, OpenAPIObjectConfigV31, OpenAPIRegistration, QualifiedTableNames, Queue, QueueFactory, QueueFactoryContext, QueueRateLimit, RedisClient, Role, RouteModule, ScheduledWorkflowContext, ServerConfig, SessionData, Storage, StorageAttachment, StorageBlob, StorageRelations, StorageRelationsConfig, StorageService, StorageTables, StorageVariantRecord, ValidationErrorResponse, WorkerConfig, WorkflowContext, WorkflowHandle, WorkflowStartOptions, auditActionSchema, baseSchema, captchaProviders, createAccessControl, dbChangeInputSchema, dbChanges, dbChangesEvent, defaultI18nConfig, defineAppContainer, defineAppContext, defineAuth, defineAuthSchema, defineCache, defineConfig, defineDatabase, defineEndpointRateLimits, defineEvent, defineEventBus, defineI18n, defineLogger, defineMailer, defineMiddleware, defineMigrationOpts, defineOpenAPI, defineOpenAPIConfig, defineOpenAPIEndpoint, defineQueue, defineRedisClient, defineS3Disk, defineScheduledWorkflow, defineStorage, defineStorageSchema, defineTestDatabase, defineTypedResponses, defineWorkflow, generateOpenAPIDocument, i18n, loadAndRegisterAPIRoutes, loadEvents, loadMiddleware, loadWorkflows, migrationsSchema, registerRoutes, scanAPIRoutes, withOtelSpan, writeOpenAPISpecs };
@@ -1,14 +1,14 @@
1
- import { t as defineAppContext } from "../app-context-DoFRTUi5.mjs";
2
- import { _ as defineAuthSchema, a as loadWorkflows, c as generatePreview, d as dbChangeInputSchema, f as dbChangesEvent, g as defineRedisClient, h as loadEvents, i as defineWorkflow, l as generateImageVariant, m as defineEventBus, n as defineQueue, o as purgeAttachment, p as defineEvent, r as defineScheduledWorkflow, t as sendEmail, u as extractBlobMetadata } from "../send-email-Do8SjZL7.mjs";
3
- import { f as PUBLIC_DIR, l as LOCALES_DIR } from "../constants-DbBfpyC3.mjs";
4
- import { _ as defineMigrationOpts, a as generateOpenAPIDocument, c as scanAPIRoutes, d as loadMiddleware, f as ui_default$2, g as defineDatabase, h as dbChanges, i as defineTypedResponses, l as writeOpenAPISpecs, m as ui_default, n as defineOpenAPIConfig, o as loadAndRegisterAPIRoutes, p as ui_default$1, r as defineOpenAPIEndpoint, s as registerRoutes, t as defineOpenAPI, u as defineMiddleware, v as defineTestDatabase, y as migrationsSchema } from "../openapi-C7QT3gNU.mjs";
5
- import { t as instrumentation_exports } from "../instrumentation-DrvjMp7J.mjs";
6
- import { _ as pgTable, c as orm_exports, t as index, w as unique } from "../orm-BYSfGzG0.mjs";
1
+ import { t as defineAppContext } from "../app-context-LF4QmPUC.mjs";
2
+ import { _ as defineAuthSchema, a as loadWorkflows, c as generatePreview, d as dbChangeInputSchema, f as dbChangesEvent, g as defineRedisClient, h as loadEvents, i as defineWorkflow, l as generateImageVariant, m as defineEventBus, n as defineQueue, o as purgeAttachment, p as defineEvent, r as defineScheduledWorkflow, t as sendEmail, u as extractBlobMetadata } from "../send-email-CXxlkfFL.mjs";
3
+ import { p as PUBLIC_DIR, u as LOCALES_DIR } from "../constants-BicCnEiJ.mjs";
4
+ import { _ as defineMigrationOpts, a as generateOpenAPIDocument, c as scanAPIRoutes, d as loadMiddleware, f as ui_default$2, g as defineDatabase, h as dbChanges, i as defineTypedResponses, l as writeOpenAPISpecs, m as ui_default, n as defineOpenAPIConfig, o as loadAndRegisterAPIRoutes, p as ui_default$1, r as defineOpenAPIEndpoint, s as registerRoutes, t as defineOpenAPI, u as defineMiddleware, v as defineTestDatabase, y as migrationsSchema } from "../openapi-uisUTLq7.mjs";
5
+ import { t as instrumentation_exports } from "../instrumentation-DkoLNAtz.mjs";
6
+ import { _ as pgTable, c as orm_exports, t as index, w as unique } from "../orm-COJ9l6sS.mjs";
7
7
  import { passkey } from "@better-auth/passkey";
8
8
  import { sso } from "@better-auth/sso";
9
9
  import { betterAuth } from "better-auth";
10
10
  import { drizzleAdapter } from "better-auth/adapters/drizzle";
11
- import { admin, anonymous, apiKey, emailOTP, magicLink, multiSession, phoneNumber, twoFactor, username } from "better-auth/plugins";
11
+ import { admin, anonymous, apiKey, captcha, emailOTP, lastLoginMethod, magicLink, multiSession, phoneNumber, twoFactor, username } from "better-auth/plugins";
12
12
  import { createAccessControl } from "better-auth/plugins/access";
13
13
  import { z } from "zod";
14
14
  import "@better-auth/passkey/client";
@@ -45,8 +45,23 @@ const AUTH_BASE_URL = "";
45
45
  //#endregion
46
46
  //#region src/api/auth.ts
47
47
  /**
48
- * Standard audit log actions following OCSF/CADF standards.
49
- * Zod enum provides both runtime validation and TypeScript type.
48
+ * Array of all supported captcha providers.
49
+ * Use with z.enum() for config validation.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * CAPTCHA_PROVIDER: z.enum(captchaProviders).optional(),
54
+ * ```
55
+ */
56
+ const captchaProviders = [
57
+ "cloudflare-turnstile",
58
+ "google-recaptcha",
59
+ "hcaptcha",
60
+ "captchafox"
61
+ ];
62
+ /**
63
+ * Standard audit log actions following OCSF/CADF standards. Zod enum provides
64
+ * both runtime validation and TypeScript type.
50
65
  *
51
66
  * Actions:
52
67
  * - Data ops: INSERT, UPDATE, DELETE, TRUNCATE, SELECT
@@ -63,6 +78,68 @@ const auditActionSchema = z.enum([
63
78
  "UPDATE"
64
79
  ]);
65
80
  /**
81
+ * Default rate limits for endpoints that trigger costly 3rd party services.
82
+ * 3 requests per 60 seconds to prevent excessive email/SMS costs.
83
+ */
84
+ const DEFAULT_COSTLY_RATE_LIMITS = {
85
+ "/send-verification-email": {
86
+ window: 60,
87
+ max: 3
88
+ },
89
+ "/request-password-reset": {
90
+ window: 60,
91
+ max: 3
92
+ },
93
+ "/sign-in/magic-link": {
94
+ window: 60,
95
+ max: 3
96
+ },
97
+ "/email-otp/send-verification-otp": {
98
+ window: 60,
99
+ max: 3
100
+ },
101
+ "/two-factor/send-otp": {
102
+ window: 60,
103
+ max: 3
104
+ },
105
+ "/phone-number/send-otp": {
106
+ window: 60,
107
+ max: 3
108
+ }
109
+ };
110
+ /**
111
+ * Creates endpoint-specific rate limit rules by merging user overrides with defaults.
112
+ * User overrides take precedence over defaults.
113
+ *
114
+ * @param overrides - Custom rate limits to override defaults (type-safe for default endpoints).
115
+ * @returns Merged rate limit rules.
116
+ *
117
+ * @see https://www.better-auth.com/docs/concepts/rate-limit
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * // Use defaults
122
+ * defineEndpointRateLimits()
123
+ *
124
+ * // Override specific endpoint (type-safe)
125
+ * defineEndpointRateLimits({
126
+ * "/send-verification-email": { window: 120, max: 5 },
127
+ * })
128
+ *
129
+ * // Add custom endpoint
130
+ * defineEndpointRateLimits({
131
+ * "/custom-endpoint": { window: 30, max: 10 },
132
+ * })
133
+ * ```
134
+ */
135
+ function defineEndpointRateLimits(overrides) {
136
+ if (!overrides) return { ...DEFAULT_COSTLY_RATE_LIMITS };
137
+ return {
138
+ ...DEFAULT_COSTLY_RATE_LIMITS,
139
+ ...overrides
140
+ };
141
+ }
142
+ /**
66
143
  * Defines Better Auth instance from neutral config + server dependencies.
67
144
  */
68
145
  function defineAuth(opts) {
@@ -142,20 +219,30 @@ function defineAuth(opts) {
142
219
  trustEmailVerified: config.plugins.sso.trustEmailVerified,
143
220
  domainVerification: config.plugins.sso.domainVerification ? { enabled: true } : void 0
144
221
  }));
222
+ if (config.plugins?.lastUsedMethod) plugins.push(lastLoginMethod({ storeInDatabase: config.plugins.lastUsedMethod.storeInDatabase }));
223
+ if (config.plugins?.captcha) {
224
+ const captchaConfig = opts.captcha;
225
+ plugins.push(captcha({
226
+ provider: config.plugins.captcha.provider,
227
+ secretKey: captchaConfig?.secretKey ?? "",
228
+ endpoints: config.plugins.captcha.endpoints,
229
+ minScore: captchaConfig?.minScore
230
+ }));
231
+ }
145
232
  const socialProviders = {};
146
- if (config.oauth?.google) socialProviders.google = {
233
+ if (config.methods?.oauth?.google) socialProviders.google = {
147
234
  clientId: oauth?.google?.clientId ?? process.env.GOOGLE_CLIENT_ID ?? "",
148
235
  clientSecret: oauth?.google?.clientSecret ?? process.env.GOOGLE_CLIENT_SECRET ?? ""
149
236
  };
150
- if (config.oauth?.github) socialProviders.github = {
237
+ if (config.methods?.oauth?.github) socialProviders.github = {
151
238
  clientId: oauth?.github?.clientId ?? process.env.GITHUB_CLIENT_ID ?? "",
152
239
  clientSecret: oauth?.github?.clientSecret ?? process.env.GITHUB_CLIENT_SECRET ?? ""
153
240
  };
154
- if (config.oauth?.apple) socialProviders.apple = {
241
+ if (config.methods?.oauth?.apple) socialProviders.apple = {
155
242
  clientId: oauth?.apple?.clientId ?? process.env.APPLE_CLIENT_ID ?? "",
156
243
  clientSecret: oauth?.apple?.clientSecret ?? process.env.APPLE_CLIENT_SECRET ?? ""
157
244
  };
158
- if (config.oauth?.facebook) socialProviders.facebook = {
245
+ if (config.methods?.oauth?.facebook) socialProviders.facebook = {
159
246
  clientId: oauth?.facebook?.clientId ?? process.env.FACEBOOK_CLIENT_ID ?? "",
160
247
  clientSecret: oauth?.facebook?.clientSecret ?? process.env.FACEBOOK_CLIENT_SECRET ?? ""
161
248
  };
@@ -203,6 +290,14 @@ function defineAuth(opts) {
203
290
  token
204
291
  }) : void 0
205
292
  } : { enabled: false },
293
+ emailVerification: hooks.sendVerificationEmail ? {
294
+ sendVerificationEmail: async ({ user, url, token }) => hooks.sendVerificationEmail({
295
+ email: user.email,
296
+ url,
297
+ token
298
+ }),
299
+ sendOnSignUp: config.methods?.emailPassword?.requireEmailVerification ?? false
300
+ } : void 0,
206
301
  plugins,
207
302
  secret,
208
303
  session: session ? {
@@ -210,7 +305,14 @@ function defineAuth(opts) {
210
305
  updateAge: session.updateAge,
211
306
  freshAge: session.freshAge
212
307
  } : void 0,
213
- socialProviders: Object.keys(socialProviders).length > 0 ? socialProviders : void 0
308
+ socialProviders: Object.keys(socialProviders).length > 0 ? socialProviders : void 0,
309
+ rateLimit: config.rateLimit === false ? { enabled: false } : {
310
+ enabled: config.rateLimit?.enabled ?? true,
311
+ window: config.rateLimit?.window ?? 60,
312
+ max: config.rateLimit?.max ?? 100,
313
+ storage: "database",
314
+ customRules: defineEndpointRateLimits(config.rateLimit?.customRules)
315
+ }
214
316
  });
215
317
  const excludeTablesSet = new Set(auditLog?.excludeTables ?? []);
216
318
  return Object.assign(auth, {
@@ -1438,4 +1540,4 @@ function defineStorageSchema() {
1438
1540
  }
1439
1541
 
1440
1542
  //#endregion
1441
- export { StorageService, auditActionSchema, baseSchema, createAccessControl, dbChangeInputSchema, dbChanges, dbChangesEvent, defaultI18nConfig, defineAppContainer, defineAppContext, defineAuth, defineAuthSchema, defineCache, defineConfig, defineDatabase, defineEvent, defineEventBus, defineI18n, defineLogger, defineMailer, defineMiddleware, defineMigrationOpts, defineOpenAPI, defineOpenAPIConfig, defineOpenAPIEndpoint, defineQueue, defineRedisClient, defineS3Disk, defineScheduledWorkflow, defineStorage, defineStorageSchema, defineTestDatabase, defineTypedResponses, defineWorkflow, generateOpenAPIDocument, loadAndRegisterAPIRoutes, loadEvents, loadMiddleware, loadWorkflows, migrationsSchema, registerRoutes, scanAPIRoutes, withOtelSpan, writeOpenAPISpecs };
1543
+ export { StorageService, auditActionSchema, baseSchema, captchaProviders, createAccessControl, dbChangeInputSchema, dbChanges, dbChangesEvent, defaultI18nConfig, defineAppContainer, defineAppContext, defineAuth, defineAuthSchema, defineCache, defineConfig, defineDatabase, defineEndpointRateLimits, defineEvent, defineEventBus, defineI18n, defineLogger, defineMailer, defineMiddleware, defineMigrationOpts, defineOpenAPI, defineOpenAPIConfig, defineOpenAPIEndpoint, defineQueue, defineRedisClient, defineS3Disk, defineScheduledWorkflow, defineStorage, defineStorageSchema, defineTestDatabase, defineTypedResponses, defineWorkflow, generateOpenAPIDocument, loadAndRegisterAPIRoutes, loadEvents, loadMiddleware, loadWorkflows, migrationsSchema, registerRoutes, scanAPIRoutes, withOtelSpan, writeOpenAPISpecs };
@@ -1,3 +1,3 @@
1
- import { C as sparsevec, E as uniqueKeyName, S as smallserial, T as uniqueIndex, _ as pgTable, a as isPgSequence, b as serial, d as pgEnum, f as pgMaterializedView, g as pgSequence, h as pgSchema, i as isPgSchema, l as parsePgArray, m as pgRole, n as isPgEnum, o as isPgView, p as pgPolicy, r as isPgMaterializedView, s as numeric, t as index, u as parsePgNestedArray, v as pgTableCreator, w as unique, x as smallint, y as pgView } from "../orm-CQk1S10H.mjs";
1
+ import { C as sparsevec, E as uniqueKeyName, S as smallserial, T as uniqueIndex, _ as pgTable, a as isPgSequence, b as serial, d as pgEnum, f as pgMaterializedView, g as pgSequence, h as pgSchema, i as isPgSchema, l as parsePgArray, m as pgRole, n as isPgEnum, o as isPgView, p as pgPolicy, r as isPgMaterializedView, s as numeric, t as index, u as parsePgNestedArray, v as pgTableCreator, w as unique, x as smallint, y as pgView } from "../orm-CJrd147z.mjs";
2
2
  export * from "drizzle-orm";
3
3
  export { index, isPgEnum, isPgMaterializedView, isPgSchema, isPgSequence, isPgView, numeric, parsePgArray, parsePgNestedArray, pgEnum, pgMaterializedView, pgPolicy, pgRole, pgSchema, pgSequence, pgTable, pgTableCreator, pgView, serial, smallint, smallserial, sparsevec, unique, uniqueIndex, uniqueKeyName };
@@ -1,4 +1,4 @@
1
- import { C as sparsevec, E as uniqueKeyName, S as smallserial, T as uniqueIndex, _ as pgTable, a as isPgSequence, b as serial, d as pgEnum, f as pgMaterializedView, g as pgSequence, h as pgSchema, i as isPgSchema, l as parsePgArray, m as pgRole, n as isPgEnum, o as isPgView, p as pgPolicy, r as isPgMaterializedView, s as numeric, t as index, u as parsePgNestedArray, v as pgTableCreator, w as unique, x as smallint, y as pgView } from "../orm-BYSfGzG0.mjs";
1
+ import { C as sparsevec, E as uniqueKeyName, S as smallserial, T as uniqueIndex, _ as pgTable, a as isPgSequence, b as serial, d as pgEnum, f as pgMaterializedView, g as pgSequence, h as pgSchema, i as isPgSchema, l as parsePgArray, m as pgRole, n as isPgEnum, o as isPgView, p as pgPolicy, r as isPgMaterializedView, s as numeric, t as index, u as parsePgNestedArray, v as pgTableCreator, w as unique, x as smallint, y as pgView } from "../orm-COJ9l6sS.mjs";
2
2
 
3
3
  export * from "drizzle-orm"
4
4
 
@@ -1,6 +1,7 @@
1
- import { St as WorkflowStartOptions, xt as WorkflowHandle, z as Container } from "../../index-B3m3Uvsl.mjs";
2
- import "../../orm-CQk1S10H.mjs";
3
- import "../../instrumentation-B0Ev9PvT.mjs";
1
+ import "../../auth-DVv5fNvd.mjs";
2
+ import { St as WorkflowStartOptions, xt as WorkflowHandle, z as Container } from "../../index-D3decHVs.mjs";
3
+ import "../../orm-CJrd147z.mjs";
4
+ import "../../instrumentation-CFIspF8-.mjs";
4
5
  import { z } from "zod";
5
6
  import * as _dbos_inc_dbos_sdk0 from "@dbos-inc/dbos-sdk";
6
7
 
@@ -1,4 +1,4 @@
1
- import { s as trackDbChanges } from "../../send-email-Do8SjZL7.mjs";
2
- import "../../constants-DbBfpyC3.mjs";
1
+ import { s as trackDbChanges } from "../../send-email-CXxlkfFL.mjs";
2
+ import "../../constants-BicCnEiJ.mjs";
3
3
 
4
4
  export { trackDbChanges };
@@ -0,0 +1,3 @@
1
+ import { t as defineAppContext } from "./app-context-LF4QmPUC.mjs";
2
+
3
+ export { defineAppContext };