payload-plugin-newsletter 0.25.7 → 0.25.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.
- package/CHANGELOG.md +24 -0
- package/dist/{broadcast-KSKQRQB6.js → broadcast-TKESOAJN.js} +1 -1
- package/dist/{chunk-KZDNTLVF.js → chunk-KETHRCG7.js} +1 -0
- package/dist/collections.cjs +40 -71
- package/dist/collections.cjs.map +1 -1
- package/dist/collections.js +40 -71
- package/dist/collections.js.map +1 -1
- package/dist/server.js +45 -77
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
BroadcastApiProvider,
|
|
4
4
|
BroadcastProviderError,
|
|
5
5
|
NewsletterProviderError
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KETHRCG7.js";
|
|
7
7
|
|
|
8
8
|
// src/utils/access.ts
|
|
9
9
|
var isAdmin = (user, config) => {
|
|
@@ -4102,7 +4102,7 @@ var createSendBroadcastEndpoint = (config, collectionSlug) => {
|
|
|
4102
4102
|
error: "Broadcast provider not configured in Newsletter Settings or environment variables"
|
|
4103
4103
|
}, { status: 500 });
|
|
4104
4104
|
}
|
|
4105
|
-
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-
|
|
4105
|
+
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-TKESOAJN.js");
|
|
4106
4106
|
const provider = new BroadcastApiProvider2(providerConfig);
|
|
4107
4107
|
const broadcast = await provider.send(broadcastDoc.providerId, data);
|
|
4108
4108
|
await req.payload.update({
|
|
@@ -4205,7 +4205,7 @@ var createScheduleBroadcastEndpoint = (config, collectionSlug) => {
|
|
|
4205
4205
|
error: "Broadcast provider not configured"
|
|
4206
4206
|
}, { status: 500 });
|
|
4207
4207
|
}
|
|
4208
|
-
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-
|
|
4208
|
+
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-TKESOAJN.js");
|
|
4209
4209
|
const provider = new BroadcastApiProvider2(providerConfig);
|
|
4210
4210
|
const broadcast = await provider.schedule(broadcastDoc.providerId, scheduledDate);
|
|
4211
4211
|
await req.payload.update({
|
|
@@ -4837,82 +4837,18 @@ var createBroadcastsCollection = (pluginConfig) => {
|
|
|
4837
4837
|
async ({ doc, operation, req, previousDoc }) => {
|
|
4838
4838
|
if (!hasProviders) return doc;
|
|
4839
4839
|
if (operation === "create") {
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
docId: doc.id,
|
|
4843
|
-
docIdType: typeof doc.id,
|
|
4844
|
-
hasDoc: !!doc,
|
|
4845
|
-
operation
|
|
4846
|
-
});
|
|
4847
|
-
const providerConfig = await getBroadcastConfig(req, pluginConfig);
|
|
4848
|
-
if (!providerConfig || !providerConfig.token) {
|
|
4849
|
-
req.payload.logger.error("Broadcast provider not configured in Newsletter Settings or environment variables");
|
|
4850
|
-
return doc;
|
|
4851
|
-
}
|
|
4852
|
-
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-KSKQRQB6.js");
|
|
4853
|
-
const provider = new BroadcastApiProvider2(providerConfig);
|
|
4854
|
-
const subject = doc.subject || `Draft Broadcast ${(/* @__PURE__ */ new Date()).toISOString()}`;
|
|
4855
|
-
const htmlContent = doc.contentSection?.content ? await convertToEmailSafeHtml(
|
|
4856
|
-
await populateMediaFields(doc.contentSection.content, req.payload, pluginConfig),
|
|
4857
|
-
{
|
|
4858
|
-
wrapInTemplate: pluginConfig.customizations?.broadcasts?.emailPreview?.wrapInTemplate ?? true,
|
|
4859
|
-
customWrapper: pluginConfig.customizations?.broadcasts?.emailPreview?.customWrapper,
|
|
4860
|
-
preheader: doc.contentSection?.preheader,
|
|
4861
|
-
subject,
|
|
4862
|
-
documentData: doc,
|
|
4863
|
-
customBlockConverter: pluginConfig.customizations?.broadcasts?.customBlockConverter
|
|
4864
|
-
}
|
|
4865
|
-
) : "<p>Draft content - to be updated</p>";
|
|
4866
|
-
const createData = {
|
|
4867
|
-
name: subject,
|
|
4868
|
-
// Use subject as name
|
|
4869
|
-
subject,
|
|
4870
|
-
preheader: doc.contentSection?.preheader || "",
|
|
4871
|
-
content: htmlContent,
|
|
4872
|
-
trackOpens: doc.settings?.trackOpens ?? true,
|
|
4873
|
-
trackClicks: doc.settings?.trackClicks ?? true,
|
|
4874
|
-
replyTo: doc.settings?.replyTo || providerConfig.replyTo,
|
|
4875
|
-
audienceIds: doc.audienceIds?.map((a) => a.audienceId) || []
|
|
4876
|
-
};
|
|
4877
|
-
req.payload.logger.info("Creating broadcast in provider with minimal data to establish association", {
|
|
4878
|
-
subject: createData.subject,
|
|
4879
|
-
hasActualContent: !!doc.contentSection?.content
|
|
4880
|
-
});
|
|
4881
|
-
const providerBroadcast = await provider.create(createData);
|
|
4882
|
-
req.payload.logger.info("Provider broadcast created:", {
|
|
4883
|
-
providerBroadcastId: providerBroadcast.id,
|
|
4884
|
-
providerBroadcastIdType: typeof providerBroadcast.id,
|
|
4885
|
-
docId: doc.id,
|
|
4886
|
-
docIdType: typeof doc.id
|
|
4887
|
-
});
|
|
4888
|
-
req.payload.logger.info(`Broadcast ${doc.id} created in provider with ID ${providerBroadcast.id}`);
|
|
4889
|
-
return {
|
|
4890
|
-
...doc,
|
|
4891
|
-
providerId: providerBroadcast.id,
|
|
4892
|
-
externalId: providerBroadcast.id,
|
|
4893
|
-
// Include externalId in return value
|
|
4894
|
-
providerData: providerBroadcast.providerData
|
|
4895
|
-
};
|
|
4896
|
-
} catch (error) {
|
|
4897
|
-
req.payload.logger.error("Failed to create broadcast in provider during initial creation:");
|
|
4898
|
-
if (error instanceof Error) {
|
|
4899
|
-
req.payload.logger.error("Error details:", {
|
|
4900
|
-
message: error.message,
|
|
4901
|
-
stack: error.stack,
|
|
4902
|
-
name: error.name
|
|
4903
|
-
});
|
|
4904
|
-
} else {
|
|
4905
|
-
req.payload.logger.error("Raw error:", error);
|
|
4906
|
-
}
|
|
4907
|
-
return doc;
|
|
4908
|
-
}
|
|
4840
|
+
req.payload.logger.info("Broadcast created in Payload, provider sync will happen on first update with content");
|
|
4841
|
+
return doc;
|
|
4909
4842
|
}
|
|
4910
4843
|
if (operation === "update") {
|
|
4911
4844
|
req.payload.logger.info("Broadcast afterChange update hook triggered", {
|
|
4912
4845
|
operation,
|
|
4913
4846
|
hasProviderId: !!doc.providerId,
|
|
4847
|
+
hasExternalId: !!doc.externalId,
|
|
4914
4848
|
sendStatus: doc.sendStatus,
|
|
4915
|
-
publishStatus: doc._status
|
|
4849
|
+
publishStatus: doc._status,
|
|
4850
|
+
hasSubject: !!doc.subject,
|
|
4851
|
+
hasContent: !!doc.contentSection?.content
|
|
4916
4852
|
});
|
|
4917
4853
|
try {
|
|
4918
4854
|
const providerConfig = await getBroadcastConfig(req, pluginConfig);
|
|
@@ -4920,10 +4856,42 @@ var createBroadcastsCollection = (pluginConfig) => {
|
|
|
4920
4856
|
req.payload.logger.error("Broadcast provider not configured in Newsletter Settings or environment variables");
|
|
4921
4857
|
return doc;
|
|
4922
4858
|
}
|
|
4923
|
-
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-
|
|
4859
|
+
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-TKESOAJN.js");
|
|
4924
4860
|
const provider = new BroadcastApiProvider2(providerConfig);
|
|
4861
|
+
if (!doc.providerId && !doc.externalId && doc.subject && doc.contentSection?.content) {
|
|
4862
|
+
req.payload.logger.info("Creating broadcast in provider on first update with content");
|
|
4863
|
+
const htmlContent = await convertToEmailSafeHtml(
|
|
4864
|
+
await populateMediaFields(doc.contentSection.content, req.payload, pluginConfig),
|
|
4865
|
+
{
|
|
4866
|
+
wrapInTemplate: pluginConfig.customizations?.broadcasts?.emailPreview?.wrapInTemplate ?? true,
|
|
4867
|
+
customWrapper: pluginConfig.customizations?.broadcasts?.emailPreview?.customWrapper,
|
|
4868
|
+
preheader: doc.contentSection?.preheader,
|
|
4869
|
+
subject: doc.subject,
|
|
4870
|
+
documentData: doc,
|
|
4871
|
+
customBlockConverter: pluginConfig.customizations?.broadcasts?.customBlockConverter
|
|
4872
|
+
}
|
|
4873
|
+
);
|
|
4874
|
+
const createData = {
|
|
4875
|
+
name: doc.subject,
|
|
4876
|
+
subject: doc.subject,
|
|
4877
|
+
preheader: doc.contentSection?.preheader || "",
|
|
4878
|
+
content: htmlContent,
|
|
4879
|
+
trackOpens: doc.settings?.trackOpens ?? true,
|
|
4880
|
+
trackClicks: doc.settings?.trackClicks ?? true,
|
|
4881
|
+
replyTo: doc.settings?.replyTo || providerConfig.replyTo,
|
|
4882
|
+
audienceIds: doc.audienceIds?.map((a) => a.audienceId) || []
|
|
4883
|
+
};
|
|
4884
|
+
const providerBroadcast = await provider.create(createData);
|
|
4885
|
+
req.payload.logger.info(`Broadcast ${doc.id} created in provider with ID ${providerBroadcast.id}`);
|
|
4886
|
+
return {
|
|
4887
|
+
...doc,
|
|
4888
|
+
providerId: providerBroadcast.id,
|
|
4889
|
+
externalId: providerBroadcast.id,
|
|
4890
|
+
providerData: providerBroadcast.providerData
|
|
4891
|
+
};
|
|
4892
|
+
}
|
|
4925
4893
|
if (!doc.providerId) {
|
|
4926
|
-
req.payload.logger.
|
|
4894
|
+
req.payload.logger.info(`Broadcast ${doc.id} has no providerId and insufficient content for creation - skipping sync`);
|
|
4927
4895
|
return doc;
|
|
4928
4896
|
}
|
|
4929
4897
|
if (doc.providerId) {
|
|
@@ -5026,7 +4994,7 @@ var createBroadcastsCollection = (pluginConfig) => {
|
|
|
5026
4994
|
return doc;
|
|
5027
4995
|
}
|
|
5028
4996
|
if (broadcastConfig && broadcastConfig.token) {
|
|
5029
|
-
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-
|
|
4997
|
+
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-TKESOAJN.js");
|
|
5030
4998
|
const provider = new BroadcastApiProvider2(broadcastConfig);
|
|
5031
4999
|
await provider.send(doc.providerId);
|
|
5032
5000
|
}
|
|
@@ -5077,7 +5045,7 @@ var createBroadcastsCollection = (pluginConfig) => {
|
|
|
5077
5045
|
req.payload.logger.error("Broadcast provider not configured in Newsletter Settings or environment variables");
|
|
5078
5046
|
return doc;
|
|
5079
5047
|
}
|
|
5080
|
-
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-
|
|
5048
|
+
const { BroadcastApiProvider: BroadcastApiProvider2 } = await import("./broadcast-TKESOAJN.js");
|
|
5081
5049
|
const provider = new BroadcastApiProvider2(providerConfig);
|
|
5082
5050
|
const capabilities = provider.getCapabilities();
|
|
5083
5051
|
if (capabilities.editableStatuses.includes(doc.sendStatus)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload-plugin-newsletter",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.9",
|
|
4
4
|
"description": "Complete newsletter management plugin for Payload CMS with subscriber management, magic link authentication, and email service integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|