@prabhask5/stellar-engine 1.1.4 → 1.1.5

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 CHANGED
@@ -18,6 +18,7 @@ A local-first, offline-capable sync engine for **SvelteKit + Supabase + Dexie**
18
18
  - **Operation coalescing** -- batches of rapid local writes (e.g., 50 individual increments) are compressed into a single outbound operation, reducing sync traffic dramatically.
19
19
  - **Tombstone management** -- soft deletes are propagated cleanly, and stale tombstones are garbage-collected after a configurable retention period.
20
20
  - **Egress optimization** -- column-level select lists and ownership filters ensure only the data your client needs is fetched from Supabase.
21
+ - **Email** -- optional SMTP email sending for share link invitations and notifications, with credential validation.
21
22
 
22
23
  ## Quick start
23
24
 
@@ -105,6 +106,31 @@ if (!auth.singleUserSetUp) {
105
106
  }
106
107
  ```
107
108
 
109
+ ### Email (optional)
110
+
111
+ Send emails via SMTP for share link invitations:
112
+
113
+ ```ts
114
+ import { sendEmail, validateSmtpCredentials } from '@prabhask5/stellar-engine/email';
115
+
116
+ // Validate SMTP credentials
117
+ const { valid, error } = await validateSmtpCredentials({
118
+ smtpHost: 'smtp.example.com',
119
+ smtpPort: 587,
120
+ smtpUser: 'user@example.com',
121
+ smtpPass: 'password',
122
+ fromEmail: 'noreply@example.com',
123
+ fromName: 'My App'
124
+ });
125
+
126
+ // Send an email
127
+ const result = await sendEmail(config, {
128
+ to: 'recipient@example.com',
129
+ subject: 'You have been invited',
130
+ html: '<p>Click here to view the shared note.</p>'
131
+ });
132
+ ```
133
+
108
134
  ## Subpath exports
109
135
 
110
136
  Import only what you need via subpath exports:
@@ -119,6 +145,7 @@ Import only what you need via subpath exports:
119
145
  | `@prabhask5/stellar-engine/utils` | Utility functions (`generateId`, `now`, `calculateNewOrder`, `snakeToCamel`, `debug`, etc.) |
120
146
  | `@prabhask5/stellar-engine/actions` | Svelte `use:` actions (`remoteChangeAnimation`, `trackEditing`, `triggerLocalAnimation`) |
121
147
  | `@prabhask5/stellar-engine/config` | Runtime config (`initConfig`, `getConfig`, `setConfig`, `getDexieTableFor`) |
148
+ | `@prabhask5/stellar-engine/email` | Email sending (`sendEmail`, `validateSmtpCredentials`) |
122
149
 
123
150
  The root export (`@prabhask5/stellar-engine`) re-exports everything for backward compatibility.
124
151
 
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Email Sending Module
3
+ *
4
+ * Server-side email sending via SMTP using nodemailer.
5
+ * Designed for use in API routes — never runs in the browser.
6
+ */
7
+ export interface EmailConfig {
8
+ smtpHost: string;
9
+ smtpPort: number;
10
+ smtpUser: string;
11
+ smtpPass: string;
12
+ fromEmail: string;
13
+ fromName: string;
14
+ }
15
+ export interface SendEmailParams {
16
+ to: string;
17
+ subject: string;
18
+ html: string;
19
+ text?: string;
20
+ }
21
+ /**
22
+ * Send an email via SMTP.
23
+ *
24
+ * Creates a nodemailer transporter from the provided config, sends the email,
25
+ * and returns a result object. Never throws — errors are returned in the result.
26
+ */
27
+ export declare function sendEmail(config: EmailConfig, params: SendEmailParams): Promise<{
28
+ success: boolean;
29
+ error?: string;
30
+ }>;
31
+ //# sourceMappingURL=sendEmail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendEmail.d.ts","sourceRoot":"","sources":["../../src/email/sendEmail.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB/C"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Email Sending Module
3
+ *
4
+ * Server-side email sending via SMTP using nodemailer.
5
+ * Designed for use in API routes — never runs in the browser.
6
+ */
7
+ import nodemailer from 'nodemailer';
8
+ /**
9
+ * Send an email via SMTP.
10
+ *
11
+ * Creates a nodemailer transporter from the provided config, sends the email,
12
+ * and returns a result object. Never throws — errors are returned in the result.
13
+ */
14
+ export async function sendEmail(config, params) {
15
+ try {
16
+ const transporter = nodemailer.createTransport({
17
+ host: config.smtpHost,
18
+ port: config.smtpPort,
19
+ secure: config.smtpPort === 465,
20
+ auth: {
21
+ user: config.smtpUser,
22
+ pass: config.smtpPass
23
+ }
24
+ });
25
+ await transporter.sendMail({
26
+ from: `"${config.fromName}" <${config.fromEmail}>`,
27
+ to: params.to,
28
+ subject: params.subject,
29
+ html: params.html,
30
+ text: params.text
31
+ });
32
+ return { success: true };
33
+ }
34
+ catch (e) {
35
+ const message = e instanceof Error ? e.message : 'Unknown email error';
36
+ return { success: false, error: message };
37
+ }
38
+ }
39
+ //# sourceMappingURL=sendEmail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendEmail.js","sourceRoot":"","sources":["../../src/email/sendEmail.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,UAAU,MAAM,YAAY,CAAC;AAkBpC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAmB,EACnB,MAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC;YAC7C,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,KAAK,GAAG;YAC/B,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;aACtB;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,SAAS,GAAG;YAClD,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * SMTP Credential Validation
3
+ *
4
+ * Tests SMTP connectivity using nodemailer's verify() method.
5
+ * Matches the { valid, error } pattern used by validateSupabaseCredentials.
6
+ */
7
+ import type { EmailConfig } from './sendEmail';
8
+ /**
9
+ * Validate SMTP credentials by attempting to connect and authenticate.
10
+ *
11
+ * Returns `{ valid: true }` on success, or `{ valid: false, error }` on failure.
12
+ * Never throws.
13
+ */
14
+ export declare function validateSmtpCredentials(config: EmailConfig): Promise<{
15
+ valid: boolean;
16
+ error?: string;
17
+ }>;
18
+ //# sourceMappingURL=validateSmtp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateSmtp.d.ts","sourceRoot":"","sources":["../../src/email/validateSmtp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB7C"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * SMTP Credential Validation
3
+ *
4
+ * Tests SMTP connectivity using nodemailer's verify() method.
5
+ * Matches the { valid, error } pattern used by validateSupabaseCredentials.
6
+ */
7
+ import nodemailer from 'nodemailer';
8
+ /**
9
+ * Validate SMTP credentials by attempting to connect and authenticate.
10
+ *
11
+ * Returns `{ valid: true }` on success, or `{ valid: false, error }` on failure.
12
+ * Never throws.
13
+ */
14
+ export async function validateSmtpCredentials(config) {
15
+ try {
16
+ const transporter = nodemailer.createTransport({
17
+ host: config.smtpHost,
18
+ port: config.smtpPort,
19
+ secure: config.smtpPort === 465,
20
+ auth: {
21
+ user: config.smtpUser,
22
+ pass: config.smtpPass
23
+ }
24
+ });
25
+ await transporter.verify();
26
+ return { valid: true };
27
+ }
28
+ catch (e) {
29
+ const message = e instanceof Error ? e.message : 'Unknown SMTP error';
30
+ return { valid: false, error: message };
31
+ }
32
+ }
33
+ //# sourceMappingURL=validateSmtp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateSmtp.js","sourceRoot":"","sources":["../../src/email/validateSmtp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,UAAU,MAAM,YAAY,CAAC;AAGpC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC;YAC7C,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,KAAK,GAAG;YAC/B,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;aACtB;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACtE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { sendEmail } from '../email/sendEmail';
2
+ export type { EmailConfig, SendEmailParams } from '../email/sendEmail';
3
+ export { validateSmtpCredentials } from '../email/validateSmtp';
4
+ //# sourceMappingURL=email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/entries/email.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Email subpath barrel – @prabhask5/stellar-engine/email
2
+ export { sendEmail } from '../email/sendEmail';
3
+ export { validateSmtpCredentials } from '../email/validateSmtp';
4
+ //# sourceMappingURL=email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/entries/email.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -8,6 +8,14 @@ export interface AppConfig {
8
8
  supabaseUrl: string;
9
9
  supabaseAnonKey: string;
10
10
  configured: boolean;
11
+ smtpHost?: string;
12
+ smtpPort?: number;
13
+ smtpUser?: string;
14
+ smtpPass?: string;
15
+ fromEmail?: string;
16
+ fromName?: string;
17
+ emailConfigured?: boolean;
18
+ shareTokenSecret?: string;
11
19
  }
12
20
  export declare function _setConfigPrefix(prefix: string): void;
13
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeConfig.d.ts","sourceRoot":"","sources":["../../src/runtime/runtimeConfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,QAE9C;AAuCD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA6C5D;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,SAAS,GAAG,IAAI,CAQ5C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAGjD"}
1
+ {"version":3,"file":"runtimeConfig.d.ts","sourceRoot":"","sources":["../../src/runtime/runtimeConfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IAEpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,QAE9C;AAuCD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA6C5D;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,SAAS,GAAG,IAAI,CAQ5C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAGjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeConfig.js","sourceRoot":"","sources":["../../src/runtime/runtimeConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtimeConfig.js","sourceRoot":"","sources":["../../src/runtime/runtimeConfig.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prabhask5/stellar-engine",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -40,6 +40,10 @@
40
40
  "./crdt": {
41
41
  "types": "./dist/entries/crdt.d.ts",
42
42
  "import": "./dist/entries/crdt.js"
43
+ },
44
+ "./email": {
45
+ "types": "./dist/entries/email.d.ts",
46
+ "import": "./dist/entries/email.js"
43
47
  }
44
48
  },
45
49
  "files": [
@@ -67,6 +71,7 @@
67
71
  "dependencies": {
68
72
  "@supabase/supabase-js": "^2.49.0",
69
73
  "dexie": "^4.2.1",
74
+ "nodemailer": "^6.9.0",
70
75
  "y-indexeddb": "^9.0.12",
71
76
  "y-protocols": "^1.0.6",
72
77
  "yjs": "^13.6.20"
@@ -81,6 +86,7 @@
81
86
  },
82
87
  "devDependencies": {
83
88
  "@eslint/js": "^9.39.2",
89
+ "@types/nodemailer": "^6.4.0",
84
90
  "eslint": "^9.39.2",
85
91
  "globals": "^17.3.0",
86
92
  "knip": "^5.82.1",