@contentgrowth/content-emailing 0.7.7 → 0.7.9

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.
@@ -33,7 +33,7 @@ interface EmailTemplate$1 {
33
33
  }
34
34
  interface TestEmailData {
35
35
  template_id: string;
36
- to_email: string;
36
+ to: string;
37
37
  variables: Record<string, string>;
38
38
  }
39
39
  interface TemplateTesterProps {
@@ -33,7 +33,7 @@ interface EmailTemplate$1 {
33
33
  }
34
34
  interface TestEmailData {
35
35
  template_id: string;
36
- to_email: string;
36
+ to: string;
37
37
  variables: Record<string, string>;
38
38
  }
39
39
  interface TemplateTesterProps {
@@ -35,7 +35,7 @@ __export(backend_exports, {
35
35
  createDOCacheProvider: () => createDOCacheProvider,
36
36
  createEmailLoggerCallback: () => createEmailLoggerCallback,
37
37
  createEmailRoutes: () => createEmailRoutes,
38
- createTemplateRoutes: () => createTemplateRoutes2,
38
+ createTemplateRoutes: () => createTemplateRoutes,
39
39
  createTrackingRoutes: () => createTrackingRoutes,
40
40
  encodeTrackingLinks: () => encodeTrackingLinks,
41
41
  extractVariables: () => extractVariables,
@@ -1466,12 +1466,42 @@ function createSettingsRoutes(config = {}) {
1466
1466
  return c.json({ error: error.message }, 500);
1467
1467
  }
1468
1468
  });
1469
+ app.post("/test", async (c) => {
1470
+ try {
1471
+ const settings = await c.req.json();
1472
+ const user = c.get("dbUser") || c.get("user");
1473
+ if (!user || !user.email) {
1474
+ return c.json({ error: "User email not found for testing" }, 400);
1475
+ }
1476
+ const emailService = new EmailService(c.env, {
1477
+ ...config,
1478
+ settingsLoader: async () => settings
1479
+ });
1480
+ const result = await emailService.sendEmail({
1481
+ to: user.email,
1482
+ subject: "Test Email Configuration",
1483
+ html: "<h1>It Works!</h1><p>Your email settings are configured correctly.</p>",
1484
+ text: "It Works! Your email settings are configured correctly.",
1485
+ profile: "system",
1486
+ // Use system defaults logic in service, but our loader overrides it
1487
+ userId: user.id
1488
+ });
1489
+ if (result.success) {
1490
+ return c.json({ success: true, message: `Test email sent to ${user.email}` });
1491
+ } else {
1492
+ return c.json({ success: false, error: result.error || "Failed to send test email" }, 400);
1493
+ }
1494
+ } catch (error) {
1495
+ console.error("Test settings failed:", error);
1496
+ return c.json({ error: error.message }, 500);
1497
+ }
1498
+ });
1469
1499
  return app;
1470
1500
  }
1471
1501
 
1472
1502
  // src/backend/routes/templates.js
1473
1503
  var import_hono2 = require("hono");
1474
- function createTemplateRoutes2(config = {}) {
1504
+ function createTemplateRoutes(config = {}) {
1475
1505
  const app = new import_hono2.Hono();
1476
1506
  app.get("/", async (c) => {
1477
1507
  const emailService = new EmailService(c.env, config);
@@ -1728,6 +1758,36 @@ function createTrackingRoutes(env, config = {}) {
1728
1758
 
1729
1759
  // src/backend/routes/logs.js
1730
1760
  var import_hono4 = require("hono");
1761
+ function createLogRoutes(config = {}) {
1762
+ const app = new import_hono4.Hono();
1763
+ app.get("/", async (c) => {
1764
+ const limit = Math.min(parseInt(c.req.query("limit") || "50"), 100);
1765
+ const offset = parseInt(c.req.query("offset") || "0");
1766
+ const env = c.env;
1767
+ try {
1768
+ const table = `${config.emailTablePrefix || "system_email_"}logs`;
1769
+ const { results } = await env.DB.prepare(`
1770
+ SELECT * FROM ${table}
1771
+ ORDER BY created_at DESC
1772
+ LIMIT ? OFFSET ?
1773
+ `).bind(limit, offset).all();
1774
+ const countResult = await env.DB.prepare(`SELECT COUNT(*) as exact_count FROM ${table}`).first();
1775
+ return c.json({
1776
+ logs: results.map((row) => ({
1777
+ ...row,
1778
+ metadata: row.metadata ? JSON.parse(row.metadata) : null
1779
+ })),
1780
+ total: countResult.exact_count,
1781
+ limit,
1782
+ offset
1783
+ });
1784
+ } catch (error) {
1785
+ console.error("Failed to fetch logs:", error);
1786
+ return c.json({ error: "Failed to fetch logs" }, 500);
1787
+ }
1788
+ });
1789
+ return app;
1790
+ }
1731
1791
 
1732
1792
  // src/backend/routes/index.js
1733
1793
  function createEmailRoutes(config = {}, cacheProvider = null) {