@bernierllc/email 1.0.1 → 1.1.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/README.md +76 -217
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/simple-email-service.d.ts +58 -0
- package/dist/simple-email-service.d.ts.map +1 -0
- package/dist/simple-email-service.js +416 -0
- package/dist/simple-email-service.js.map +1 -0
- package/dist/types.d.ts +311 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +33 -0
- package/dist/types.js.map +1 -0
- package/package.json +57 -22
- package/.eslintrc.json +0 -112
- package/.flake8 +0 -18
- package/.github/workflows/ci.yml +0 -300
- package/EXTRACTION_SUMMARY.md +0 -265
- package/IMPLEMENTATION_STATUS.md +0 -159
- package/OPEN_SOURCE_SETUP.md +0 -420
- package/PACKAGE_USAGE.md +0 -471
- package/examples/fastapi-example/main.py +0 -257
- package/examples/nextjs-example/next-env.d.ts +0 -13
- package/examples/nextjs-example/package.json +0 -26
- package/examples/nextjs-example/pages/admin/templates.tsx +0 -157
- package/examples/nextjs-example/tsconfig.json +0 -28
- package/packages/core/package.json +0 -70
- package/packages/core/rollup.config.js +0 -37
- package/packages/core/specification.md +0 -416
- package/packages/core/src/adapters/supabase.ts +0 -291
- package/packages/core/src/core/scheduler.ts +0 -356
- package/packages/core/src/core/template-manager.ts +0 -388
- package/packages/core/src/index.ts +0 -30
- package/packages/core/src/providers/base.ts +0 -104
- package/packages/core/src/providers/sendgrid.ts +0 -368
- package/packages/core/src/types/provider.ts +0 -91
- package/packages/core/src/types/scheduled.ts +0 -78
- package/packages/core/src/types/template.ts +0 -97
- package/packages/core/tsconfig.json +0 -23
- package/packages/python/README.md +0 -106
- package/packages/python/email_template_manager/__init__.py +0 -66
- package/packages/python/email_template_manager/config.py +0 -98
- package/packages/python/email_template_manager/core/magic_links.py +0 -245
- package/packages/python/email_template_manager/core/manager.py +0 -344
- package/packages/python/email_template_manager/core/scheduler.py +0 -473
- package/packages/python/email_template_manager/exceptions.py +0 -67
- package/packages/python/email_template_manager/models/magic_link.py +0 -59
- package/packages/python/email_template_manager/models/scheduled.py +0 -78
- package/packages/python/email_template_manager/models/template.py +0 -90
- package/packages/python/email_template_manager/providers/aws_ses.py +0 -44
- package/packages/python/email_template_manager/providers/base.py +0 -94
- package/packages/python/email_template_manager/providers/sendgrid.py +0 -325
- package/packages/python/email_template_manager/providers/smtp.py +0 -44
- package/packages/python/pyproject.toml +0 -133
- package/packages/python/setup.py +0 -93
- package/packages/python/specification.md +0 -930
- package/packages/react/README.md +0 -13
- package/packages/react/package.json +0 -105
- package/packages/react/rollup.config.js +0 -37
- package/packages/react/specification.md +0 -569
- package/packages/react/src/index.ts +0 -20
- package/packages/react/tsconfig.json +0 -24
- package/plans/email-template-manager_app-admin.md +0 -590
- package/src/index.js +0 -1
- package/test_package.py +0 -125
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright (c) 2025 Bernier LLC
|
|
4
|
+
|
|
5
|
+
This file is licensed to the client under a limited-use license.
|
|
6
|
+
The client may use and modify this code *only within the scope of the project it was delivered for*.
|
|
7
|
+
Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.EmailService = void 0;
|
|
11
|
+
const retry_policy_1 = require("@bernierllc/retry-policy");
|
|
12
|
+
const retry_state_1 = require("@bernierllc/retry-state");
|
|
13
|
+
const types_1 = require("./types");
|
|
14
|
+
/**
|
|
15
|
+
* Simplified email service demonstrating service layer orchestration pattern
|
|
16
|
+
* This implementation focuses on the service architecture rather than full integration
|
|
17
|
+
*/
|
|
18
|
+
class EmailService {
|
|
19
|
+
config;
|
|
20
|
+
retryStorage;
|
|
21
|
+
constructor(config) {
|
|
22
|
+
this.config = this.normalizeConfig(config);
|
|
23
|
+
this.retryStorage = new retry_state_1.MemoryRetryStateStorage();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Send a single email with retry logic
|
|
27
|
+
*/
|
|
28
|
+
async send(message) {
|
|
29
|
+
const startTime = Date.now();
|
|
30
|
+
const messageId = this.generateMessageId();
|
|
31
|
+
try {
|
|
32
|
+
// Apply defaults and validate
|
|
33
|
+
const enrichedMessage = this.applyDefaults(message);
|
|
34
|
+
this.validateMessage(enrichedMessage);
|
|
35
|
+
// Attempt to send with retry logic
|
|
36
|
+
const result = await this.sendWithRetry(enrichedMessage, messageId);
|
|
37
|
+
return {
|
|
38
|
+
...result,
|
|
39
|
+
deliveryTime: Date.now() - startTime,
|
|
40
|
+
timestamp: new Date()
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
error: errorMessage,
|
|
48
|
+
messageId,
|
|
49
|
+
provider: this.config.provider.type,
|
|
50
|
+
timestamp: new Date(),
|
|
51
|
+
deliveryTime: Date.now() - startTime
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Send an email using a template
|
|
57
|
+
*/
|
|
58
|
+
async sendTemplate(message) {
|
|
59
|
+
try {
|
|
60
|
+
// Simple template rendering simulation
|
|
61
|
+
const rendered = this.renderTemplate(message.template, message.templateData);
|
|
62
|
+
const emailMessage = {
|
|
63
|
+
...message,
|
|
64
|
+
html: rendered.html,
|
|
65
|
+
text: rendered.text
|
|
66
|
+
};
|
|
67
|
+
return await this.send(emailMessage);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
return {
|
|
71
|
+
success: false,
|
|
72
|
+
error: error instanceof Error ? error.message : 'Template rendering failed',
|
|
73
|
+
timestamp: new Date()
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Send a magic link email
|
|
79
|
+
*/
|
|
80
|
+
async sendMagicLink(config) {
|
|
81
|
+
try {
|
|
82
|
+
// Simulate magic link generation
|
|
83
|
+
const magicLink = this.generateMagicLink(config);
|
|
84
|
+
const expiresAt = new Date(Date.now() + (this.config.magicLink?.expirationMinutes || 60) * 60 * 1000);
|
|
85
|
+
// Create email with magic link
|
|
86
|
+
const emailMessage = {
|
|
87
|
+
...config,
|
|
88
|
+
to: config.recipient,
|
|
89
|
+
html: this.createMagicLinkHtml(magicLink, config.purpose),
|
|
90
|
+
text: this.createMagicLinkText(magicLink, config.purpose)
|
|
91
|
+
};
|
|
92
|
+
const emailResult = await this.send(emailMessage);
|
|
93
|
+
return {
|
|
94
|
+
success: emailResult.success,
|
|
95
|
+
magicLink,
|
|
96
|
+
token: this.extractTokenFromLink(magicLink),
|
|
97
|
+
expiresAt,
|
|
98
|
+
error: emailResult.error,
|
|
99
|
+
emailResult
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return {
|
|
104
|
+
success: false,
|
|
105
|
+
error: error instanceof Error ? error.message : 'Magic link email failed'
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Send multiple emails
|
|
111
|
+
*/
|
|
112
|
+
async sendBulk(messages) {
|
|
113
|
+
const results = [];
|
|
114
|
+
const errors = [];
|
|
115
|
+
for (const message of messages) {
|
|
116
|
+
try {
|
|
117
|
+
const result = await this.send(message);
|
|
118
|
+
results.push(result);
|
|
119
|
+
if (!result.success && result.error) {
|
|
120
|
+
errors.push(result.error);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
125
|
+
errors.push(errorMessage);
|
|
126
|
+
results.push({
|
|
127
|
+
success: false,
|
|
128
|
+
error: errorMessage,
|
|
129
|
+
timestamp: new Date()
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const successful = results.filter(r => r.success).length;
|
|
134
|
+
const failed = results.length - successful;
|
|
135
|
+
const totalRetries = results.reduce((sum, r) => sum + (r.retryCount || 0), 0);
|
|
136
|
+
const avgDeliveryTime = results
|
|
137
|
+
.filter(r => r.deliveryTime)
|
|
138
|
+
.reduce((sum, r) => sum + (r.deliveryTime || 0), 0) / (successful || 1);
|
|
139
|
+
return {
|
|
140
|
+
totalEmails: messages.length,
|
|
141
|
+
successful,
|
|
142
|
+
failed,
|
|
143
|
+
results,
|
|
144
|
+
errors,
|
|
145
|
+
summary: {
|
|
146
|
+
successRate: (successful / messages.length) * 100,
|
|
147
|
+
averageDeliveryTime: avgDeliveryTime,
|
|
148
|
+
totalRetries
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Validate template syntax
|
|
154
|
+
*/
|
|
155
|
+
async validateTemplate(template) {
|
|
156
|
+
try {
|
|
157
|
+
// Simple template validation
|
|
158
|
+
const variables = this.extractTemplateVariables(template);
|
|
159
|
+
const hasErrors = template.includes('{{}}') || template.includes('{{ }}');
|
|
160
|
+
return {
|
|
161
|
+
isValid: !hasErrors,
|
|
162
|
+
errors: hasErrors ? ['Empty template variables found'] : [],
|
|
163
|
+
warnings: [],
|
|
164
|
+
requiredVariables: variables,
|
|
165
|
+
optionalVariables: []
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
return {
|
|
170
|
+
isValid: false,
|
|
171
|
+
errors: [error instanceof Error ? error.message : 'Template validation failed'],
|
|
172
|
+
warnings: [],
|
|
173
|
+
requiredVariables: [],
|
|
174
|
+
optionalVariables: []
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get email delivery metrics
|
|
180
|
+
*/
|
|
181
|
+
async getMetrics() {
|
|
182
|
+
// Simplified metrics - in real implementation would aggregate from storage
|
|
183
|
+
return {
|
|
184
|
+
totalSent: 0,
|
|
185
|
+
totalDelivered: 0,
|
|
186
|
+
totalFailed: 0,
|
|
187
|
+
successRate: 0,
|
|
188
|
+
averageDeliveryTime: 0,
|
|
189
|
+
retryRate: 0,
|
|
190
|
+
bounceRate: 0,
|
|
191
|
+
complaintRate: 0,
|
|
192
|
+
providerStats: {}
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get delivery status
|
|
197
|
+
*/
|
|
198
|
+
async getDeliveryStatus(messageId) {
|
|
199
|
+
try {
|
|
200
|
+
const retryState = await this.retryStorage.get(messageId);
|
|
201
|
+
if (!retryState) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
messageId,
|
|
206
|
+
status: retryState.status === 'completed' ? types_1.DeliveryStatus.SENT :
|
|
207
|
+
retryState.status === 'failed' ? types_1.DeliveryStatus.FAILED : types_1.DeliveryStatus.PENDING,
|
|
208
|
+
timestamp: retryState.lastAttempt || new Date(),
|
|
209
|
+
recipient: 'unknown',
|
|
210
|
+
subject: 'unknown',
|
|
211
|
+
provider: this.config.provider.type,
|
|
212
|
+
retryCount: retryState.attempt,
|
|
213
|
+
error: retryState.error?.message,
|
|
214
|
+
events: []
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Test configuration
|
|
223
|
+
*/
|
|
224
|
+
async testConfiguration() {
|
|
225
|
+
try {
|
|
226
|
+
// Simple configuration validation
|
|
227
|
+
if (!this.config.provider.type) {
|
|
228
|
+
return { success: false, error: 'Provider type not specified' };
|
|
229
|
+
}
|
|
230
|
+
if (!this.config.defaults.from) {
|
|
231
|
+
return { success: false, error: 'Default from address not specified' };
|
|
232
|
+
}
|
|
233
|
+
return { success: true };
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
return {
|
|
237
|
+
success: false,
|
|
238
|
+
error: error instanceof Error ? error.message : 'Configuration test failed'
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Private helper methods
|
|
243
|
+
normalizeConfig(config) {
|
|
244
|
+
return {
|
|
245
|
+
provider: config.provider,
|
|
246
|
+
defaults: {
|
|
247
|
+
from: config.defaults?.from || 'noreply@example.com',
|
|
248
|
+
replyTo: config.defaults?.replyTo || '',
|
|
249
|
+
subject: config.defaults?.subject || ''
|
|
250
|
+
},
|
|
251
|
+
templates: {
|
|
252
|
+
engine: config.templates?.engine || 'liquid',
|
|
253
|
+
templateDir: config.templates?.templateDir || './templates',
|
|
254
|
+
cache: config.templates?.cache ?? true
|
|
255
|
+
},
|
|
256
|
+
magicLink: {
|
|
257
|
+
secret: config.magicLink?.secret || 'default-secret',
|
|
258
|
+
expirationMinutes: config.magicLink?.expirationMinutes || 60,
|
|
259
|
+
issuer: config.magicLink?.issuer || 'EmailService'
|
|
260
|
+
},
|
|
261
|
+
retry: {
|
|
262
|
+
maxRetries: config.retry?.maxRetries || 3,
|
|
263
|
+
initialDelayMs: config.retry?.initialDelayMs || 1000,
|
|
264
|
+
maxDelayMs: config.retry?.maxDelayMs || 30000,
|
|
265
|
+
jitter: config.retry?.jitter ?? true,
|
|
266
|
+
enableMetrics: config.retry?.enableMetrics ?? true
|
|
267
|
+
},
|
|
268
|
+
rateLimit: {
|
|
269
|
+
maxEmailsPerMinute: config.rateLimit?.maxEmailsPerMinute || 60,
|
|
270
|
+
maxEmailsPerHour: config.rateLimit?.maxEmailsPerHour || 1000
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
applyDefaults(message) {
|
|
275
|
+
return {
|
|
276
|
+
...message,
|
|
277
|
+
from: message.from || this.config.defaults.from,
|
|
278
|
+
replyTo: message.replyTo || this.config.defaults.replyTo,
|
|
279
|
+
subject: message.subject || this.config.defaults?.subject || '',
|
|
280
|
+
priority: message.priority || types_1.EmailPriority.NORMAL
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
validateMessage(message) {
|
|
284
|
+
if (!message.to || (Array.isArray(message.to) && message.to.length === 0)) {
|
|
285
|
+
throw new Error('Email message must have at least one recipient');
|
|
286
|
+
}
|
|
287
|
+
if (!message.subject) {
|
|
288
|
+
throw new Error('Email message must have a subject');
|
|
289
|
+
}
|
|
290
|
+
if (!message.text && !message.html) {
|
|
291
|
+
throw new Error('Email message must have either text or HTML content');
|
|
292
|
+
}
|
|
293
|
+
if (!message.from) {
|
|
294
|
+
throw new Error('Email message must have a sender address');
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
async sendWithRetry(message, messageId) {
|
|
298
|
+
let attempt = 1;
|
|
299
|
+
let lastError = null;
|
|
300
|
+
// Create initial retry state
|
|
301
|
+
const retryState = (0, retry_state_1.createRetryState)({
|
|
302
|
+
id: messageId,
|
|
303
|
+
maxRetries: this.config.retry.maxRetries || 3,
|
|
304
|
+
initialDelayMs: this.config.retry.initialDelayMs || 1000
|
|
305
|
+
});
|
|
306
|
+
await this.retryStorage.set(messageId, retryState);
|
|
307
|
+
while (attempt <= (this.config.retry.maxRetries || 3)) {
|
|
308
|
+
try {
|
|
309
|
+
// Simulate email sending
|
|
310
|
+
const success = Math.random() > 0.2; // 80% success rate simulation
|
|
311
|
+
if (success) {
|
|
312
|
+
return {
|
|
313
|
+
success: true,
|
|
314
|
+
messageId,
|
|
315
|
+
provider: this.config.provider.type,
|
|
316
|
+
retryCount: attempt - 1,
|
|
317
|
+
timestamp: new Date()
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
throw new Error('Simulated email sending failure');
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
lastError = error instanceof Error ? error : new Error('Unknown error');
|
|
326
|
+
if ((0, retry_policy_1.shouldRetry)(attempt - 1, lastError, { maxRetries: this.config.retry.maxRetries || 3 })) {
|
|
327
|
+
const delay = (0, retry_policy_1.calculateRetryDelay)(attempt - 1, {
|
|
328
|
+
initialDelayMs: this.config.retry.initialDelayMs || 1000,
|
|
329
|
+
maxDelayMs: this.config.retry.maxDelayMs || 30000,
|
|
330
|
+
jitter: this.config.retry.jitter ?? true
|
|
331
|
+
});
|
|
332
|
+
await this.delay(delay);
|
|
333
|
+
attempt++;
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return {
|
|
341
|
+
success: false,
|
|
342
|
+
error: lastError?.message || 'Failed to send email after retries',
|
|
343
|
+
messageId,
|
|
344
|
+
provider: this.config.provider.type,
|
|
345
|
+
retryCount: attempt - 1,
|
|
346
|
+
timestamp: new Date()
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
renderTemplate(template, data) {
|
|
350
|
+
// Simple template rendering
|
|
351
|
+
let html = template;
|
|
352
|
+
let text = template;
|
|
353
|
+
// Replace variables in format {{ variable }}
|
|
354
|
+
Object.entries(data).forEach(([key, value]) => {
|
|
355
|
+
const placeholder = new RegExp(`{{\\s*${key}\\s*}}`, 'g');
|
|
356
|
+
const valueStr = String(value);
|
|
357
|
+
html = html.replace(placeholder, valueStr);
|
|
358
|
+
text = text.replace(placeholder, valueStr);
|
|
359
|
+
});
|
|
360
|
+
return { html, text };
|
|
361
|
+
}
|
|
362
|
+
generateMagicLink(config) {
|
|
363
|
+
const token = Buffer.from(JSON.stringify({
|
|
364
|
+
email: config.recipient,
|
|
365
|
+
purpose: config.purpose,
|
|
366
|
+
timestamp: Date.now(),
|
|
367
|
+
random: Math.random()
|
|
368
|
+
})).toString('base64url');
|
|
369
|
+
return `${config.redirectUrl}?token=${token}`;
|
|
370
|
+
}
|
|
371
|
+
extractTokenFromLink(link) {
|
|
372
|
+
const url = new URL(link);
|
|
373
|
+
return url.searchParams.get('token') || '';
|
|
374
|
+
}
|
|
375
|
+
createMagicLinkHtml(link, purpose) {
|
|
376
|
+
return `
|
|
377
|
+
<html>
|
|
378
|
+
<body style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
|
|
379
|
+
<h2>Your Magic Link</h2>
|
|
380
|
+
<p>Click the link below to ${purpose}:</p>
|
|
381
|
+
<p><a href="${link}" style="background-color: #007bff; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px;">Continue</a></p>
|
|
382
|
+
<p>If the button doesn't work, copy and paste this link:</p>
|
|
383
|
+
<p><code>${link}</code></p>
|
|
384
|
+
<p><small>This link will expire in ${this.config.magicLink.expirationMinutes} minutes.</small></p>
|
|
385
|
+
</body>
|
|
386
|
+
</html>
|
|
387
|
+
`;
|
|
388
|
+
}
|
|
389
|
+
createMagicLinkText(link, purpose) {
|
|
390
|
+
return `
|
|
391
|
+
Your Magic Link
|
|
392
|
+
|
|
393
|
+
Click the link below to ${purpose}:
|
|
394
|
+
${link}
|
|
395
|
+
|
|
396
|
+
This link will expire in ${this.config.magicLink.expirationMinutes} minutes.
|
|
397
|
+
`.trim();
|
|
398
|
+
}
|
|
399
|
+
extractTemplateVariables(template) {
|
|
400
|
+
const matches = template.match(/{{\\s*([^\\s}]+)\\s*}}/g);
|
|
401
|
+
if (!matches)
|
|
402
|
+
return [];
|
|
403
|
+
return matches.map(match => {
|
|
404
|
+
const variable = match.replace(/{{\\s*|\\s*}}/g, '');
|
|
405
|
+
return variable;
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
generateMessageId() {
|
|
409
|
+
return `email-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
410
|
+
}
|
|
411
|
+
async delay(ms) {
|
|
412
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
exports.EmailService = EmailService;
|
|
416
|
+
//# sourceMappingURL=simple-email-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-email-service.js","sourceRoot":"","sources":["../src/simple-email-service.ts"],"names":[],"mappings":"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"}
|