@growth-labs/mailer 0.5.1 → 0.6.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.
- package/README.md +28 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/dist/options.d.ts +89 -0
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +5 -0
- package/dist/options.js.map +1 -1
- package/dist/vite-plugin.d.ts +5 -3
- package/dist/vite-plugin.d.ts.map +1 -1
- package/dist/vite-plugin.js +4 -2
- package/dist/vite-plugin.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +22 -4
- package/src/options.ts +9 -0
- package/src/vite-plugin.ts +7 -8
package/README.md
CHANGED
|
@@ -46,6 +46,34 @@ mailer({
|
|
|
46
46
|
})
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
+
This integration registers the newsletter routes and components listed below.
|
|
50
|
+
For a new subscriber, the subscribe route records the subscriber and sends a
|
|
51
|
+
confirmation email when `doubleOptIn` is enabled, or a welcome email when it is not.
|
|
52
|
+
|
|
53
|
+
### Components without delivery routes
|
|
54
|
+
|
|
55
|
+
Use `mailerComponents` instead of `mailer` when rendering `SubscribeForm` with
|
|
56
|
+
an endpoint owned by the consumer, or in a private preview with delivery disabled:
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
import { mailerComponents } from '@growth-labs/mailer'
|
|
60
|
+
|
|
61
|
+
mailerComponents({
|
|
62
|
+
turnstileSiteKey: 'public-site-key',
|
|
63
|
+
subscribePath: '/api/newsletter/subscribe', // Optional; this is the default
|
|
64
|
+
topics: ['daily-digest'], // Optional
|
|
65
|
+
})
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
This installs only the existing form configuration Vite plugin. It injects no
|
|
69
|
+
routes or tracking middleware and requires no D1, Queue, sender or secret binding.
|
|
70
|
+
Only these three public options are accepted; secret and delivery options fail
|
|
71
|
+
validation. The form still submits to `subscribePath`: this integration does not
|
|
72
|
+
implement subscription delivery or disable the form. The consumer must provide a
|
|
73
|
+
Turnstile-protected endpoint, or keep delivery unavailable in its private preview.
|
|
74
|
+
Choose one mailer integration per site. The default `mailer` integration retains
|
|
75
|
+
its full route, middleware and runtime security behavior.
|
|
76
|
+
|
|
49
77
|
## Production patterns
|
|
50
78
|
|
|
51
79
|
**`from` vs `replyTo`.** A common pattern is `fromAddress: 'noreply@mail.site.com'` paired with `replyTo: 'hello@site.com'`. The `from` lives on a domain you've verified with Cloudflare Email Sending (typically a `mail.` subdomain); `replyTo` points at a real human inbox readers can write back to. `replyTo` is also a per-message override on `sendTransactional` and a per-site field on `SiteMailerConfig` (realm pattern, since 0.4.0).
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { AstroIntegration } from 'astro';
|
|
2
|
-
import type { MailerOptions } from './options.js';
|
|
2
|
+
import type { MailerComponentsOptions, MailerOptions } from './options.js';
|
|
3
3
|
export default function mailer(userOptions: MailerOptions): AstroIntegration;
|
|
4
|
-
|
|
5
|
-
export
|
|
4
|
+
/** Render package components without installing delivery routes or tracking. */
|
|
5
|
+
export declare function mailerComponents(userOptions: MailerComponentsOptions): AstroIntegration;
|
|
6
|
+
export type { MailerComponentsOptions, MailerOptions, ResolvedMailerComponentsOptions, ResolvedMailerOptions, } from './options.js';
|
|
7
|
+
export { mailerComponentsOptionsSchema, mailerOptionsSchema } from './options.js';
|
|
6
8
|
export type { DigestItem, EmailProvider, EmailQueueMessage, EmailSend, EmailSendStatus, OutboundEmail, SendResult, SiteConfigLookup, SiteMailerConfig, Subscriber, SubscriberFilter, SubscriberStatus, TemplateData, TemplateName, } from './types.js';
|
|
7
9
|
export type { BroadcastRecipient, SendBroadcastParams, SendBroadcastResult, } from './utils/broadcast.js';
|
|
8
10
|
export { sendBroadcast } from './utils/broadcast.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAyB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAyB,MAAM,cAAc,CAAA;AAmBjG,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,WAAW,EAAE,aAAa,GAAG,gBAAgB,CAiE3E;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,uBAAuB,GAAG,gBAAgB,CAUvF;AAED,YAAY,EACX,uBAAuB,EACvB,aAAa,EACb,+BAA+B,EAC/B,qBAAqB,GACrB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACjF,YAAY,EACX,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACZ,MAAM,YAAY,CAAA;AACnB,YAAY,EACX,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,kBAAkB,GAClB,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fileURLToPath } from 'node:url';
|
|
2
|
-
import { mailerOptionsSchema } from './options.js';
|
|
2
|
+
import { mailerComponentsOptionsSchema, mailerOptionsSchema } from './options.js';
|
|
3
3
|
import { growthLabsMailerPlugin } from './vite-plugin.js';
|
|
4
4
|
function isSourceEntrypoint() {
|
|
5
5
|
return typeof import.meta.url === 'string' && import.meta.url.endsWith('.ts');
|
|
@@ -73,8 +73,20 @@ export default function mailer(userOptions) {
|
|
|
73
73
|
},
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
|
+
/** Render package components without installing delivery routes or tracking. */
|
|
77
|
+
export function mailerComponents(userOptions) {
|
|
78
|
+
const options = mailerComponentsOptionsSchema.parse(userOptions);
|
|
79
|
+
return {
|
|
80
|
+
name: '@growth-labs/mailer/components',
|
|
81
|
+
hooks: {
|
|
82
|
+
'astro:config:setup': ({ updateConfig }) => {
|
|
83
|
+
updateConfig({ vite: { plugins: [growthLabsMailerPlugin(options)] } });
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
76
88
|
// Re-export options and types
|
|
77
|
-
export { mailerOptionsSchema } from './options.js';
|
|
89
|
+
export { mailerComponentsOptionsSchema, mailerOptionsSchema } from './options.js';
|
|
78
90
|
export { sendBroadcast } from './utils/broadcast.js';
|
|
79
91
|
export { executeCampaignSchedule, executeDigestSchedule, prepareCampaign, prepareDigest, sendBatchCampaigns, } from './utils/scheduling.js';
|
|
80
92
|
// Re-export utilities for standalone use
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC,OAAO,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,SAAS,kBAAkB;IAC1B,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,oBAAoB,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAEjE,SAAS,iBAAiB,CAAC,IAAY;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAA;QACtF,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,oBAAoB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,WAA0B;IACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAA0B,CAAA;IAE/E,OAAO;QACN,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE;YACN,oBAAoB,EAAE,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE;gBAC3F,qCAAqC;gBACrC,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,wBAAwB,CAC1C,CAAA;gBACD,IAAI,YAAY,EAAE,CAAC;oBAClB,CAAC;oBAAC,OAAmC,CAAC,gBAAgB,GAAG,IAAI,CAAA;gBAC9D,CAAC;gBAED,yCAAyC;gBACzC,YAAY,CAAC;oBACZ,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,EAAE;iBACpD,CAAC,CAAA;gBAEF,gBAAgB;gBAChB,WAAW,CAAC;oBACX,OAAO,EAAE,OAAO,CAAC,aAAa;oBAC9B,UAAU,EAAE,iBAAiB,CAAC,oBAAoB,CAAC;oBACnD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;gBACF,WAAW,CAAC;oBACX,OAAO,EAAE,OAAO,CAAC,WAAW;oBAC5B,UAAU,EAAE,iBAAiB,CAAC,kBAAkB,CAAC;oBACjD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;gBACF,WAAW,CAAC;oBACX,OAAO,EAAE,OAAO,CAAC,eAAe;oBAChC,UAAU,EAAE,iBAAiB,CAAC,sBAAsB,CAAC;oBACrD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;gBACF,WAAW,CAAC;oBACX,OAAO,EAAE,OAAO,CAAC,eAAe;oBAChC,UAAU,EAAE,iBAAiB,CAAC,4BAA4B,CAAC;oBAC3D,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;gBACF,WAAW,CAAC;oBACX,OAAO,EAAE,OAAO,CAAC,WAAW;oBAC5B,UAAU,EAAE,iBAAiB,CAAC,kBAAkB,CAAC;oBACjD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;gBACF,WAAW,CAAC;oBACX,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,eAAe;oBAChD,UAAU,EAAE,iBAAiB,CAAC,qBAAqB,CAAC;oBACpD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;gBACF,WAAW,CAAC;oBACX,OAAO,EAAE,GAAG,OAAO,CAAC,cAAc,eAAe;oBACjD,UAAU,EAAE,iBAAiB,CAAC,sBAAsB,CAAC;oBACrD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;gBAEF,0BAA0B;gBAC1B,aAAa,CAAC;oBACb,UAAU,EAAE,iBAAiB,CAAC,uBAAuB,CAAC;oBACtD,KAAK,EAAE,MAAM;iBACb,CAAC,CAAA;YACH,CAAC;SACD;KACD,CAAA;AACF,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,WAAoC;IACpE,MAAM,OAAO,GAAG,6BAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAChE,OAAO;QACN,IAAI,EAAE,gCAAgC;QACtC,KAAK,EAAE;YACN,oBAAoB,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;gBAC1C,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACvE,CAAC;SACD;KACD,CAAA;AACF,CAAC;AAQD,8BAA8B;AAC9B,OAAO,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAsBjF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,kBAAkB,GAClB,MAAM,uBAAuB,CAAA;AAE9B,yCAAyC;AACzC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
|
package/dist/options.d.ts
CHANGED
|
@@ -173,4 +173,93 @@ export declare const mailerOptionsSchema: z.ZodObject<{
|
|
|
173
173
|
}>;
|
|
174
174
|
export type MailerOptions = z.input<typeof mailerOptionsSchema>;
|
|
175
175
|
export type ResolvedMailerOptions = z.output<typeof mailerOptionsSchema>;
|
|
176
|
+
export declare const mailerComponentsOptionsSchema: z.ZodObject<Pick<{
|
|
177
|
+
siteId: z.ZodString;
|
|
178
|
+
senderName: z.ZodString;
|
|
179
|
+
fromAddress: z.ZodString;
|
|
180
|
+
replyTo: z.ZodOptional<z.ZodString>;
|
|
181
|
+
d1Binding: z.ZodDefault<z.ZodString>;
|
|
182
|
+
sendsD1Binding: z.ZodOptional<z.ZodString>;
|
|
183
|
+
queueBinding: z.ZodDefault<z.ZodString>;
|
|
184
|
+
senderBinding: z.ZodDefault<z.ZodString>;
|
|
185
|
+
siteConfigLookup: z.ZodOptional<z.ZodType<SiteConfigLookup, z.ZodTypeDef, SiteConfigLookup>>;
|
|
186
|
+
turnstileSiteKey: z.ZodString;
|
|
187
|
+
turnstileSecretBinding: z.ZodDefault<z.ZodString>;
|
|
188
|
+
turnstileSecretKey: z.ZodOptional<z.ZodString>;
|
|
189
|
+
doubleOptIn: z.ZodDefault<z.ZodBoolean>;
|
|
190
|
+
topics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
191
|
+
signingSecretBinding: z.ZodDefault<z.ZodString>;
|
|
192
|
+
signingSecret: z.ZodOptional<z.ZodString>;
|
|
193
|
+
subscribePath: z.ZodDefault<z.ZodString>;
|
|
194
|
+
confirmPath: z.ZodDefault<z.ZodString>;
|
|
195
|
+
unsubscribePath: z.ZodDefault<z.ZodString>;
|
|
196
|
+
preferencesPath: z.ZodDefault<z.ZodString>;
|
|
197
|
+
webhookPath: z.ZodDefault<z.ZodString>;
|
|
198
|
+
webhookSignature: z.ZodDefault<z.ZodDiscriminatedUnion<"enabled", [z.ZodObject<{
|
|
199
|
+
enabled: z.ZodLiteral<false>;
|
|
200
|
+
header: z.ZodDefault<z.ZodString>;
|
|
201
|
+
timestampHeader: z.ZodDefault<z.ZodString>;
|
|
202
|
+
toleranceSeconds: z.ZodDefault<z.ZodNumber>;
|
|
203
|
+
}, "strip", z.ZodTypeAny, {
|
|
204
|
+
enabled: false;
|
|
205
|
+
header: string;
|
|
206
|
+
timestampHeader: string;
|
|
207
|
+
toleranceSeconds: number;
|
|
208
|
+
}, {
|
|
209
|
+
enabled: false;
|
|
210
|
+
header?: string | undefined;
|
|
211
|
+
timestampHeader?: string | undefined;
|
|
212
|
+
toleranceSeconds?: number | undefined;
|
|
213
|
+
}>, z.ZodObject<{
|
|
214
|
+
enabled: z.ZodLiteral<true>;
|
|
215
|
+
secret: z.ZodString;
|
|
216
|
+
header: z.ZodDefault<z.ZodString>;
|
|
217
|
+
timestampHeader: z.ZodDefault<z.ZodString>;
|
|
218
|
+
toleranceSeconds: z.ZodDefault<z.ZodNumber>;
|
|
219
|
+
}, "strip", z.ZodTypeAny, {
|
|
220
|
+
enabled: true;
|
|
221
|
+
header: string;
|
|
222
|
+
timestampHeader: string;
|
|
223
|
+
toleranceSeconds: number;
|
|
224
|
+
secret: string;
|
|
225
|
+
}, {
|
|
226
|
+
enabled: true;
|
|
227
|
+
secret: string;
|
|
228
|
+
header?: string | undefined;
|
|
229
|
+
timestampHeader?: string | undefined;
|
|
230
|
+
toleranceSeconds?: number | undefined;
|
|
231
|
+
}>]>>;
|
|
232
|
+
trackOpenPath: z.ZodDefault<z.ZodString>;
|
|
233
|
+
trackClickPath: z.ZodDefault<z.ZodString>;
|
|
234
|
+
siteUrl: z.ZodString;
|
|
235
|
+
brand: z.ZodDefault<z.ZodObject<{
|
|
236
|
+
logoUrl: z.ZodOptional<z.ZodString>;
|
|
237
|
+
primaryColor: z.ZodDefault<z.ZodString>;
|
|
238
|
+
accentColor: z.ZodDefault<z.ZodString>;
|
|
239
|
+
footerText: z.ZodOptional<z.ZodString>;
|
|
240
|
+
}, "strip", z.ZodTypeAny, {
|
|
241
|
+
primaryColor: string;
|
|
242
|
+
accentColor: string;
|
|
243
|
+
logoUrl?: string | undefined;
|
|
244
|
+
footerText?: string | undefined;
|
|
245
|
+
}, {
|
|
246
|
+
logoUrl?: string | undefined;
|
|
247
|
+
primaryColor?: string | undefined;
|
|
248
|
+
accentColor?: string | undefined;
|
|
249
|
+
footerText?: string | undefined;
|
|
250
|
+
}>>;
|
|
251
|
+
batchSize: z.ZodDefault<z.ZodNumber>;
|
|
252
|
+
analyticsEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
253
|
+
analyticsBinding: z.ZodDefault<z.ZodString>;
|
|
254
|
+
}, "turnstileSiteKey" | "topics" | "subscribePath">, "strict", z.ZodTypeAny, {
|
|
255
|
+
turnstileSiteKey: string;
|
|
256
|
+
subscribePath: string;
|
|
257
|
+
topics?: string[] | undefined;
|
|
258
|
+
}, {
|
|
259
|
+
turnstileSiteKey: string;
|
|
260
|
+
topics?: string[] | undefined;
|
|
261
|
+
subscribePath?: string | undefined;
|
|
262
|
+
}>;
|
|
263
|
+
export type MailerComponentsOptions = z.input<typeof mailerComponentsOptionsSchema>;
|
|
264
|
+
export type ResolvedMailerComponentsOptions = z.output<typeof mailerComponentsOptionsSchema>;
|
|
176
265
|
//# sourceMappingURL=options.d.ts.map
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqF9B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqF9B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAIxE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEhC,CAAA;AAEV,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACnF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,6BAA6B,CAAC,CAAA"}
|
package/dist/options.js
CHANGED
|
@@ -74,4 +74,9 @@ export const mailerOptionsSchema = z.object({
|
|
|
74
74
|
analyticsEnabled: z.boolean().default(false),
|
|
75
75
|
analyticsBinding: z.string().default('ANALYTICS'),
|
|
76
76
|
});
|
|
77
|
+
// Only the public configuration read by SubscribeForm. No delivery credentials
|
|
78
|
+
// or Worker bindings are needed when a consumer supplies its own endpoint.
|
|
79
|
+
export const mailerComponentsOptionsSchema = mailerOptionsSchema
|
|
80
|
+
.pick({ turnstileSiteKey: true, topics: true, subscribePath: true })
|
|
81
|
+
.strict();
|
|
77
82
|
//# sourceMappingURL=options.js.map
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
package/dist/vite-plugin.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Plugin } from 'vite';
|
|
2
|
-
import type { ResolvedMailerOptions } from './options.js';
|
|
3
|
-
|
|
4
|
-
export declare function
|
|
2
|
+
import type { ResolvedMailerComponentsOptions, ResolvedMailerOptions } from './options.js';
|
|
3
|
+
type MailerConfig = ResolvedMailerOptions | ResolvedMailerComponentsOptions;
|
|
4
|
+
export declare function renderMailerConfigModule(config: MailerConfig, command: 'build' | 'serve'): string;
|
|
5
|
+
export declare function growthLabsMailerPlugin(config: MailerConfig): Plugin;
|
|
6
|
+
export {};
|
|
5
7
|
//# sourceMappingURL=vite-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,KAAK,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAE1F,KAAK,YAAY,GAAG,qBAAqB,GAAG,+BAA+B,CAAA;AAK3E,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAOjG;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAmBnE"}
|
package/dist/vite-plugin.js
CHANGED
|
@@ -3,8 +3,10 @@ const RESOLVED_VIRTUAL_MODULE_ID = `\0${VIRTUAL_MODULE_ID}`;
|
|
|
3
3
|
export function renderMailerConfigModule(config, command) {
|
|
4
4
|
const serializableConfig = { ...config };
|
|
5
5
|
if (command !== 'serve') {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
if ('turnstileSecretKey' in serializableConfig)
|
|
7
|
+
delete serializableConfig.turnstileSecretKey;
|
|
8
|
+
if ('signingSecret' in serializableConfig)
|
|
9
|
+
delete serializableConfig.signingSecret;
|
|
8
10
|
}
|
|
9
11
|
return `export const config = ${JSON.stringify(serializableConfig)};`;
|
|
10
12
|
}
|
package/dist/vite-plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAKA,MAAM,iBAAiB,GAAG,mCAAmC,CAAA;AAC7D,MAAM,0BAA0B,GAAG,KAAK,iBAAiB,EAAE,CAAA;AAE3D,MAAM,UAAU,wBAAwB,CAAC,MAAoB,EAAE,OAA0B;IACxF,MAAM,kBAAkB,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;IACxC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,oBAAoB,IAAI,kBAAkB;YAAE,OAAO,kBAAkB,CAAC,kBAAkB,CAAA;QAC5F,IAAI,eAAe,IAAI,kBAAkB;YAAE,OAAO,kBAAkB,CAAC,aAAa,CAAA;IACnF,CAAC;IACD,OAAO,yBAAyB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAoB;IAC1D,IAAI,OAAO,GAAsB,OAAO,CAAA;IAExC,OAAO;QACN,IAAI,EAAE,2BAA2B;QACjC,cAAc,CAAC,cAAc;YAC5B,OAAO,GAAG,cAAc,CAAC,OAAO,CAAA;QACjC,CAAC;QACD,SAAS,CAAC,EAAE;YACX,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;gBAC9B,OAAO,0BAA0B,CAAA;YAClC,CAAC;QACF,CAAC;QACD,IAAI,CAAC,EAAE;YACN,IAAI,EAAE,KAAK,0BAA0B,EAAE,CAAC;gBACvC,OAAO,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YACjD,CAAC;QACF,CAAC;KACD,CAAA;AACF,CAAC"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { fileURLToPath } from 'node:url'
|
|
2
2
|
import type { AstroIntegration } from 'astro'
|
|
3
|
-
import type { MailerOptions, ResolvedMailerOptions } from './options.js'
|
|
4
|
-
import { mailerOptionsSchema } from './options.js'
|
|
3
|
+
import type { MailerComponentsOptions, MailerOptions, ResolvedMailerOptions } from './options.js'
|
|
4
|
+
import { mailerComponentsOptionsSchema, mailerOptionsSchema } from './options.js'
|
|
5
5
|
import { growthLabsMailerPlugin } from './vite-plugin.js'
|
|
6
6
|
|
|
7
7
|
function isSourceEntrypoint(): boolean {
|
|
@@ -86,9 +86,27 @@ export default function mailer(userOptions: MailerOptions): AstroIntegration {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
/** Render package components without installing delivery routes or tracking. */
|
|
90
|
+
export function mailerComponents(userOptions: MailerComponentsOptions): AstroIntegration {
|
|
91
|
+
const options = mailerComponentsOptionsSchema.parse(userOptions)
|
|
92
|
+
return {
|
|
93
|
+
name: '@growth-labs/mailer/components',
|
|
94
|
+
hooks: {
|
|
95
|
+
'astro:config:setup': ({ updateConfig }) => {
|
|
96
|
+
updateConfig({ vite: { plugins: [growthLabsMailerPlugin(options)] } })
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export type {
|
|
103
|
+
MailerComponentsOptions,
|
|
104
|
+
MailerOptions,
|
|
105
|
+
ResolvedMailerComponentsOptions,
|
|
106
|
+
ResolvedMailerOptions,
|
|
107
|
+
} from './options.js'
|
|
90
108
|
// Re-export options and types
|
|
91
|
-
export { mailerOptionsSchema } from './options.js'
|
|
109
|
+
export { mailerComponentsOptionsSchema, mailerOptionsSchema } from './options.js'
|
|
92
110
|
export type {
|
|
93
111
|
DigestItem,
|
|
94
112
|
EmailProvider,
|
package/src/options.ts
CHANGED
|
@@ -90,3 +90,12 @@ export const mailerOptionsSchema = z.object({
|
|
|
90
90
|
|
|
91
91
|
export type MailerOptions = z.input<typeof mailerOptionsSchema>
|
|
92
92
|
export type ResolvedMailerOptions = z.output<typeof mailerOptionsSchema>
|
|
93
|
+
|
|
94
|
+
// Only the public configuration read by SubscribeForm. No delivery credentials
|
|
95
|
+
// or Worker bindings are needed when a consumer supplies its own endpoint.
|
|
96
|
+
export const mailerComponentsOptionsSchema = mailerOptionsSchema
|
|
97
|
+
.pick({ turnstileSiteKey: true, topics: true, subscribePath: true })
|
|
98
|
+
.strict()
|
|
99
|
+
|
|
100
|
+
export type MailerComponentsOptions = z.input<typeof mailerComponentsOptionsSchema>
|
|
101
|
+
export type ResolvedMailerComponentsOptions = z.output<typeof mailerComponentsOptionsSchema>
|
package/src/vite-plugin.ts
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import type { Plugin } from 'vite'
|
|
2
|
-
import type { ResolvedMailerOptions } from './options.js'
|
|
2
|
+
import type { ResolvedMailerComponentsOptions, ResolvedMailerOptions } from './options.js'
|
|
3
|
+
|
|
4
|
+
type MailerConfig = ResolvedMailerOptions | ResolvedMailerComponentsOptions
|
|
3
5
|
|
|
4
6
|
const VIRTUAL_MODULE_ID = 'virtual:growth-labs/mailer/config'
|
|
5
7
|
const RESOLVED_VIRTUAL_MODULE_ID = `\0${VIRTUAL_MODULE_ID}`
|
|
6
8
|
|
|
7
|
-
export function renderMailerConfigModule(
|
|
8
|
-
config: ResolvedMailerOptions,
|
|
9
|
-
command: 'build' | 'serve',
|
|
10
|
-
): string {
|
|
9
|
+
export function renderMailerConfigModule(config: MailerConfig, command: 'build' | 'serve'): string {
|
|
11
10
|
const serializableConfig = { ...config }
|
|
12
11
|
if (command !== 'serve') {
|
|
13
|
-
delete serializableConfig.turnstileSecretKey
|
|
14
|
-
delete serializableConfig.signingSecret
|
|
12
|
+
if ('turnstileSecretKey' in serializableConfig) delete serializableConfig.turnstileSecretKey
|
|
13
|
+
if ('signingSecret' in serializableConfig) delete serializableConfig.signingSecret
|
|
15
14
|
}
|
|
16
15
|
return `export const config = ${JSON.stringify(serializableConfig)};`
|
|
17
16
|
}
|
|
18
17
|
|
|
19
|
-
export function growthLabsMailerPlugin(config:
|
|
18
|
+
export function growthLabsMailerPlugin(config: MailerConfig): Plugin {
|
|
20
19
|
let command: 'build' | 'serve' = 'build'
|
|
21
20
|
|
|
22
21
|
return {
|