@momentumcms/auth 0.5.0 → 0.5.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@momentumcms/auth",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Better Auth integration for Momentum CMS",
5
5
  "license": "MIT",
6
6
  "author": "Momentum CMS Contributors",
@@ -26,12 +26,20 @@
26
26
  "main": "./index.cjs",
27
27
  "types": "./src/index.d.ts",
28
28
  "peerDependencies": {
29
+ "@angular/core": ">=19.0.0",
29
30
  "@momentumcms/core": ">=0.0.1",
31
+ "@momentumcms/email": ">=0.5.1",
30
32
  "@momentumcms/logger": ">=0.0.1",
31
33
  "better-auth": "^1.4.0",
32
34
  "better-sqlite3": "^12.0.0",
33
35
  "nodemailer": "^8.0.0",
34
36
  "pg": "^8.0.0"
35
37
  },
38
+ "dependencies": {
39
+ "@angular/compiler": "~21.2.0",
40
+ "@angular/platform-browser": "~21.2.0",
41
+ "@angular/platform-server": "~21.2.0",
42
+ "juice": "^11.1.1"
43
+ },
36
44
  "module": "./index.js"
37
45
  }
package/src/lib/auth.d.ts CHANGED
@@ -2,6 +2,7 @@ import { betterAuth } from 'better-auth';
2
2
  import type { Pool } from 'pg';
3
3
  import type { Database } from 'better-sqlite3';
4
4
  import { type EmailConfig } from './email';
5
+ import { type FindEmailTemplateFn } from './email-templates';
5
6
  import type { Field } from '@momentumcms/core';
6
7
  import type { OAuthProvidersConfig } from './auth-core';
7
8
  export type { MomentumUser, MomentumSession, OAuthProviderConfig, OAuthProvidersConfig, } from './auth-core';
@@ -26,6 +27,12 @@ export interface MomentumEmailOptions extends EmailConfig {
26
27
  appName?: string;
27
28
  /** Require email verification on signup. Default: false */
28
29
  requireEmailVerification?: boolean;
30
+ /**
31
+ * Optional callback to look up email templates from the database.
32
+ * When provided, DB templates are used first; falls back to Angular SSR rendering.
33
+ * Typically wired from the email plugin's API.
34
+ */
35
+ findEmailTemplate?: FindEmailTemplateFn;
29
36
  }
30
37
  /**
31
38
  * Configuration options for Momentum Auth.
@@ -0,0 +1,11 @@
1
+ export interface PasswordResetEmailData {
2
+ name?: string;
3
+ url: string;
4
+ appName: string;
5
+ expiresIn: string;
6
+ }
7
+ export declare class PasswordResetEmailComponent {
8
+ readonly data: PasswordResetEmailData;
9
+ readonly year: number;
10
+ get greeting(): string;
11
+ }
@@ -0,0 +1,11 @@
1
+ export interface VerificationEmailData {
2
+ name?: string;
3
+ url: string;
4
+ appName: string;
5
+ expiresIn: string;
6
+ }
7
+ export declare class VerificationEmailComponent {
8
+ readonly data: VerificationEmailData;
9
+ readonly year: number;
10
+ get greeting(): string;
11
+ }
@@ -1,7 +1,20 @@
1
+ /**
2
+ * Result of looking up an email template from the database.
3
+ * Returned by `findEmailTemplate` callbacks.
4
+ */
5
+ export interface DbEmailTemplate {
6
+ subject?: string;
7
+ emailBlocks?: unknown[];
8
+ }
9
+ /**
10
+ * Callback type for looking up email templates from the database.
11
+ * Returns null if no template is found (falls back to Angular SSR rendering).
12
+ */
13
+ export type FindEmailTemplateFn = (slug: string) => Promise<DbEmailTemplate | null>;
1
14
  /**
2
15
  * Email template options.
3
16
  */
4
- interface EmailTemplateOptions {
17
+ export interface EmailTemplateOptions {
5
18
  /** Recipient's name */
6
19
  name?: string;
7
20
  /** Action URL (reset link, verification link, etc.) */
@@ -10,39 +23,46 @@ interface EmailTemplateOptions {
10
23
  appName?: string;
11
24
  /** Expiration time for the link (e.g., '1 hour') */
12
25
  expiresIn?: string;
26
+ /** Optional callback to look up templates from the database (DB-first). */
27
+ findEmailTemplate?: FindEmailTemplateFn;
13
28
  }
14
29
  /**
15
30
  * Generate password reset email content.
16
31
  *
32
+ * If `findEmailTemplate` is provided, queries the DB for a 'password-reset' template first.
33
+ * Falls back to Angular SSR rendering if no DB template is found.
34
+ *
17
35
  * @example
18
36
  * ```typescript
19
- * const { subject, text, html } = getPasswordResetEmail({
37
+ * const { subject, text, html } = await getPasswordResetEmail({
20
38
  * name: 'John',
21
39
  * url: 'https://example.com/admin/reset-password?token=abc123',
22
40
  * expiresIn: '1 hour',
23
41
  * });
24
42
  * ```
25
43
  */
26
- export declare function getPasswordResetEmail(options: EmailTemplateOptions): {
44
+ export declare function getPasswordResetEmail(options: EmailTemplateOptions): Promise<{
27
45
  subject: string;
28
46
  text: string;
29
47
  html: string;
30
- };
48
+ }>;
31
49
  /**
32
50
  * Generate email verification email content.
33
51
  *
52
+ * If `findEmailTemplate` is provided, queries the DB for a 'verification' template first.
53
+ * Falls back to Angular SSR rendering if no DB template is found.
54
+ *
34
55
  * @example
35
56
  * ```typescript
36
- * const { subject, text, html } = getVerificationEmail({
57
+ * const { subject, text, html } = await getVerificationEmail({
37
58
  * name: 'John',
38
59
  * url: 'https://example.com/admin/verify-email?token=abc123',
39
60
  * expiresIn: '24 hours',
40
61
  * });
41
62
  * ```
42
63
  */
43
- export declare function getVerificationEmail(options: EmailTemplateOptions): {
64
+ export declare function getVerificationEmail(options: EmailTemplateOptions): Promise<{
44
65
  subject: string;
45
66
  text: string;
46
67
  html: string;
47
- };
48
- export {};
68
+ }>;