@contentgrowth/content-emailing 0.7.8 → 0.8.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/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { EmailService } from './backend/EmailService.cjs';
2
- export { a as TemplateEditor, T as TemplateManager } from './TemplateManager-Db41KyPN.cjs';
2
+ export { a as TemplateEditor, T as TemplateManager } from './TemplateManager-DX_McznX.cjs';
3
3
  export { EmailingCacheDO, createDOCacheProvider } from './backend/EmailingCacheDO.cjs';
4
4
  export { EmailLogger, createEmailLoggerCallback } from './backend/index.cjs';
5
5
  export { createEmailRoutes, createTemplateRoutes, createTrackingRoutes } from './backend/routes/index.cjs';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { EmailService } from './backend/EmailService.js';
2
- export { a as TemplateEditor, T as TemplateManager } from './TemplateManager-Db41KyPN.js';
2
+ export { a as TemplateEditor, T as TemplateManager } from './TemplateManager-DX_McznX.js';
3
3
  export { EmailingCacheDO, createDOCacheProvider } from './backend/EmailingCacheDO.js';
4
4
  export { EmailLogger, createEmailLoggerCallback } from './backend/index.js';
5
5
  export { createEmailRoutes, createTemplateRoutes, createTrackingRoutes } from './backend/routes/index.js';
package/dist/index.js CHANGED
@@ -1418,6 +1418,36 @@ function createSettingsRoutes(config = {}) {
1418
1418
  return c.json({ error: error.message }, 500);
1419
1419
  }
1420
1420
  });
1421
+ app.post("/test", async (c) => {
1422
+ try {
1423
+ const settings = await c.req.json();
1424
+ const user = c.get("dbUser") || c.get("user");
1425
+ if (!user || !user.email) {
1426
+ return c.json({ error: "User email not found for testing" }, 400);
1427
+ }
1428
+ const emailService = new EmailService(c.env, {
1429
+ ...config,
1430
+ settingsLoader: async () => settings
1431
+ });
1432
+ const result = await emailService.sendEmail({
1433
+ to: user.email,
1434
+ subject: "Test Email Configuration",
1435
+ html: "<h1>It Works!</h1><p>Your email settings are configured correctly.</p>",
1436
+ text: "It Works! Your email settings are configured correctly.",
1437
+ profile: "system",
1438
+ // Use system defaults logic in service, but our loader overrides it
1439
+ userId: user.id
1440
+ });
1441
+ if (result.success) {
1442
+ return c.json({ success: true, message: `Test email sent to ${user.email}` });
1443
+ } else {
1444
+ return c.json({ success: false, error: result.error || "Failed to send test email" }, 400);
1445
+ }
1446
+ } catch (error) {
1447
+ console.error("Test settings failed:", error);
1448
+ return c.json({ error: error.message }, 500);
1449
+ }
1450
+ });
1421
1451
  return app;
1422
1452
  }
1423
1453
 
@@ -1938,9 +1968,10 @@ var TemplateTester = ({
1938
1968
  template,
1939
1969
  onSendTest,
1940
1970
  onCancel,
1941
- sending = false
1971
+ sending = false,
1972
+ defaultValues = {}
1942
1973
  }) => {
1943
- const [toEmail, setToEmail] = useState2("");
1974
+ const [toEmail, setToEmail] = useState2(defaultValues.to || "");
1944
1975
  const [variables, setVariables] = useState2({});
1945
1976
  const [detectedVariables, setDetectedVariables] = useState2([]);
1946
1977
  const [error, setError] = useState2(null);
@@ -1952,11 +1983,18 @@ var TemplateTester = ({
1952
1983
  const uniqueVars = Array.from(/* @__PURE__ */ new Set([...subjectVars, ...bodyVars]));
1953
1984
  setDetectedVariables(uniqueVars);
1954
1985
  const initialValues = {};
1986
+ const defaults = defaultValues.variables || {};
1955
1987
  uniqueVars.forEach((v) => {
1956
- initialValues[v] = "";
1988
+ if (defaults[v]) {
1989
+ initialValues[v] = defaults[v];
1990
+ } else if (v === "email" && toEmail) {
1991
+ initialValues[v] = toEmail;
1992
+ } else {
1993
+ initialValues[v] = "";
1994
+ }
1957
1995
  });
1958
1996
  setVariables(initialValues);
1959
- }, [template]);
1997
+ }, [template, defaultValues]);
1960
1998
  const handleSubmit = async (e) => {
1961
1999
  e.preventDefault();
1962
2000
  setError(null);
@@ -1964,7 +2002,7 @@ var TemplateTester = ({
1964
2002
  try {
1965
2003
  await onSendTest({
1966
2004
  template_id: template.template_id,
1967
- to_email: toEmail,
2005
+ to: toEmail,
1968
2006
  variables
1969
2007
  });
1970
2008
  setSuccess("Test email sent successfully!");
@@ -1978,7 +2016,13 @@ var TemplateTester = ({
1978
2016
  type: "email",
1979
2017
  required: true,
1980
2018
  value: toEmail,
1981
- onChange: (e) => setToEmail(e.target.value),
2019
+ onChange: (e) => {
2020
+ const val = e.target.value;
2021
+ setToEmail(val);
2022
+ if (variables["email"] !== void 0) {
2023
+ setVariables((prev) => ({ ...prev, email: val }));
2024
+ }
2025
+ },
1982
2026
  className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
1983
2027
  placeholder: "recipient@example.com"
1984
2028
  }
@@ -2031,8 +2075,10 @@ var TemplateManager = ({
2031
2075
  onSendTestEmail,
2032
2076
  title = "Email Templates",
2033
2077
  description = "Manage system email templates",
2034
- templateTypes
2078
+ templateTypes,
2079
+ defaultTestValues
2035
2080
  }) => {
2081
+ const props = { defaultTestValues };
2036
2082
  const [templates, setTemplates] = useState3([]);
2037
2083
  const [loading, setLoading] = useState3(true);
2038
2084
  const [error, setError] = useState3(null);
@@ -2239,7 +2285,8 @@ var TemplateManager = ({
2239
2285
  template: testingTemplate,
2240
2286
  onSendTest: handleTest,
2241
2287
  onCancel: () => setShowTester(false),
2242
- sending: saving
2288
+ sending: saving,
2289
+ defaultValues: props.defaultTestValues
2243
2290
  }
2244
2291
  ), deleteConfirm && /* @__PURE__ */ React3.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4" }, /* @__PURE__ */ React3.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-sm w-full p-6" }, /* @__PURE__ */ React3.createElement("h3", { className: "text-lg font-semibold mb-2" }, "Delete Template?"), /* @__PURE__ */ React3.createElement("p", { className: "text-gray-600 mb-4" }, "This action cannot be undone."), /* @__PURE__ */ React3.createElement("div", { className: "flex justify-end gap-3" }, /* @__PURE__ */ React3.createElement(
2245
2292
  "button",