@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 +27 -0
- package/dist/email/sendEmail.d.ts +31 -0
- package/dist/email/sendEmail.d.ts.map +1 -0
- package/dist/email/sendEmail.js +39 -0
- package/dist/email/sendEmail.js.map +1 -0
- package/dist/email/validateSmtp.d.ts +18 -0
- package/dist/email/validateSmtp.d.ts.map +1 -0
- package/dist/email/validateSmtp.js +33 -0
- package/dist/email/validateSmtp.js.map +1 -0
- package/dist/entries/email.d.ts +4 -0
- package/dist/entries/email.d.ts.map +1 -0
- package/dist/entries/email.js +4 -0
- package/dist/entries/email.js.map +1 -0
- package/dist/runtime/runtimeConfig.d.ts +8 -0
- package/dist/runtime/runtimeConfig.d.ts.map +1 -1
- package/dist/runtime/runtimeConfig.js.map +1 -1
- package/package.json +7 -1
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 @@
|
|
|
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 @@
|
|
|
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;
|
|
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":"AAAA;;;;;GAKG;
|
|
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.
|
|
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",
|