@memberjunction/entity-communications-server 1.8.1 → 2.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.
|
@@ -1,21 +1,37 @@
|
|
|
1
|
-
import { Message } from "@memberjunction/communication-types";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { Message, MessageRecipient } from "@memberjunction/communication-types";
|
|
2
|
+
import { EntityInfo } from "@memberjunction/core";
|
|
3
|
+
import { TemplateParamEntity } from "@memberjunction/core-entities";
|
|
4
|
+
import { EntityCommunicationMessageTypeExtended, EntityCommunicationParams, EntityCommunicationResult, EntityCommunicationsEngineBase } from "@memberjunction/entity-communications-base";
|
|
4
5
|
/**
|
|
5
6
|
* Server-side implementation of the entity communications engine
|
|
6
7
|
*/
|
|
7
8
|
export declare class EntityCommunicationsEngine extends EntityCommunicationsEngineBase {
|
|
8
9
|
/**
|
|
9
10
|
* Executes a given message request against a view of records for a given entity
|
|
10
|
-
* @param entityID
|
|
11
|
-
* @param runViewParams
|
|
12
|
-
* @param providerName
|
|
13
|
-
* @param providerMessageTypeName
|
|
14
|
-
* @param message
|
|
15
11
|
*/
|
|
16
|
-
RunEntityCommunication(
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
RunEntityCommunication(params: EntityCommunicationParams): Promise<EntityCommunicationResult>;
|
|
13
|
+
protected PopulateRecipientContextData(entityInfo: EntityInfo, entityMessageType: EntityCommunicationMessageTypeExtended, message: Message, records: any[]): Promise<MessageRecipient[]>;
|
|
14
|
+
protected PopulateSingleRecipientContextData(record: any, relatedData: {
|
|
15
|
+
paramName: string;
|
|
16
|
+
data: any[];
|
|
17
|
+
}[], pkey: any, params: TemplateParamEntity[]): Promise<{
|
|
18
|
+
[key: string]: any;
|
|
19
19
|
}>;
|
|
20
|
+
/**
|
|
21
|
+
* Returns an array of objects that have the distinct param names across all templates in use, and the complete data for
|
|
22
|
+
* those relationships for all of the recipient records provided to the method.
|
|
23
|
+
* @param message
|
|
24
|
+
* @param records
|
|
25
|
+
*/
|
|
26
|
+
protected GetRelatedData(message: Message, recipients: any[], recipientPrimaryKeyFieldName: string, recipientPrimaryKeyNeedsQuotes: boolean): Promise<{
|
|
27
|
+
paramName: string;
|
|
28
|
+
data: any[];
|
|
29
|
+
}[]>;
|
|
30
|
+
/**
|
|
31
|
+
* This method is resposnible for determining if the template(s) used in the message have aligned parameters, meaning they don't have overlapping parameter names that have
|
|
32
|
+
* different meanings. It is okay for scenarios where there are > 1 template in use for a message to have different parameter names, but if they have the SAME parameter names
|
|
33
|
+
* they must not have different settings.
|
|
34
|
+
*/
|
|
35
|
+
protected ValidateTemplateContextParamAlignment(message: Message): boolean;
|
|
20
36
|
}
|
|
21
37
|
//# sourceMappingURL=entity-communications.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-communications.d.ts","sourceRoot":"","sources":["../src/entity-communications.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-communications.d.ts","sourceRoot":"","sources":["../src/entity-communications.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAoC,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,sCAAsC,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAI1L;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,8BAA8B;IAC1E;;OAEG;IACU,sBAAsB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;cAwE1F,4BAA4B,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,sCAAsC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;cAoD9K,kCAAkC,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAiCzL;;;;;OAKG;cACa,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,4BAA4B,EAAE,MAAM,EAAE,8BAA8B,EAAE,OAAO,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAC,EAAE,CAAC;IAgD/L;;;;OAIG;IACH,SAAS,CAAC,qCAAqC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;CAgC7E"}
|
|
@@ -10,42 +10,31 @@ const entity_communications_base_1 = require("@memberjunction/entity-communicati
|
|
|
10
10
|
class EntityCommunicationsEngine extends entity_communications_base_1.EntityCommunicationsEngineBase {
|
|
11
11
|
/**
|
|
12
12
|
* Executes a given message request against a view of records for a given entity
|
|
13
|
-
* @param entityID
|
|
14
|
-
* @param runViewParams
|
|
15
|
-
* @param providerName
|
|
16
|
-
* @param providerMessageTypeName
|
|
17
|
-
* @param message
|
|
18
13
|
*/
|
|
19
|
-
async RunEntityCommunication(
|
|
14
|
+
async RunEntityCommunication(params) {
|
|
20
15
|
try {
|
|
21
16
|
this.TryThrowIfNotLoaded();
|
|
22
17
|
const md = new core_1.Metadata();
|
|
23
|
-
const entityInfo = md.Entities.find(e => e.ID ===
|
|
18
|
+
const entityInfo = md.Entities.find(e => e.ID === params.EntityID);
|
|
24
19
|
if (!entityInfo)
|
|
25
|
-
throw new Error(`Entity ${
|
|
26
|
-
if (!this.EntitySupportsCommunication(
|
|
27
|
-
throw new Error(`Entity ${
|
|
20
|
+
throw new Error(`Entity ${params.EntityID} not found`);
|
|
21
|
+
if (!this.EntitySupportsCommunication(params.EntityID)) {
|
|
22
|
+
throw new Error(`Entity ${params.EntityID} does not support communication`);
|
|
28
23
|
}
|
|
29
24
|
await communication_engine_1.CommunicationEngine.Instance.Config(false, this.ContextUser);
|
|
30
|
-
const provider = communication_engine_1.CommunicationEngine.Instance.Providers.find(p => p.Name.trim().toLowerCase() ===
|
|
25
|
+
const provider = communication_engine_1.CommunicationEngine.Instance.Providers.find(p => p.Name.trim().toLowerCase() === params.ProviderName.trim().toLowerCase());
|
|
31
26
|
if (!provider)
|
|
32
|
-
throw new Error(`Provider ${
|
|
33
|
-
const providerMessageType = provider.MessageTypes.find(mt => mt.Name.trim().toLowerCase() ===
|
|
34
|
-
const entityMessageTypes = this.GetEntityCommunicationMessageTypes(
|
|
27
|
+
throw new Error(`Provider ${params.ProviderName} not found`);
|
|
28
|
+
const providerMessageType = provider.MessageTypes.find(mt => mt.Name.trim().toLowerCase() === params.ProviderMessageTypeName.trim().toLowerCase());
|
|
29
|
+
const entityMessageTypes = this.GetEntityCommunicationMessageTypes(params.EntityID);
|
|
35
30
|
const entityMessageType = entityMessageTypes.find(m => m.BaseMessageTypeID === providerMessageType.CommunicationBaseMessageTypeID);
|
|
36
31
|
if (!entityMessageType) {
|
|
37
|
-
throw new Error(`Entity ${
|
|
32
|
+
throw new Error(`Entity ${params.EntityID} does not support message type ${providerMessageType.CommunicationBaseMessageType}`);
|
|
38
33
|
}
|
|
39
|
-
// we have now validated we are good on the message type requested...
|
|
40
|
-
// next up we will figure out which field to use for the entity, starting at the entity level and then going to the record level, IF the entity has
|
|
41
|
-
// a PreferredCommunicationField we will flag that here as recordLevelPref = true
|
|
42
|
-
const recordLevelPref = entityInfo.PreferredCommunicationField?.length > 0;
|
|
43
|
-
// get the highest priority field within the entityMessageType.communicationFields property
|
|
44
|
-
const entityLevelPrefField = entityMessageType.CommunicationFields.sort((a, b) => a.Priority - b.Priority)[0];
|
|
45
34
|
// next our main job here is to run the view, get all the records, and then call the communication engine
|
|
46
35
|
const rv = new core_1.RunView();
|
|
47
36
|
const rvParams2 = {
|
|
48
|
-
...
|
|
37
|
+
...params.RunViewParams
|
|
49
38
|
};
|
|
50
39
|
// now change rvParams2.Fields to have ALL entity fields to make sure we get them all
|
|
51
40
|
rvParams2.Fields = entityInfo.Fields.map(f => f.Name);
|
|
@@ -53,40 +42,24 @@ class EntityCommunicationsEngine extends entity_communications_base_1.EntityComm
|
|
|
53
42
|
if (result && result.Success) {
|
|
54
43
|
// have the results, now we can map the results to the types the comm engine needs and call SendMessages() in the comm engine
|
|
55
44
|
await communication_engine_1.CommunicationEngine.Instance.Config(false, this.ContextUser);
|
|
56
|
-
const recipients =
|
|
57
|
-
|
|
58
|
-
const ToValue = !recordLevelPref ? r[entityLevelPrefField.FieldName] : r[r[entityInfo.PreferredCommunicationField]];
|
|
59
|
-
return {
|
|
60
|
-
To: ToValue,
|
|
61
|
-
ContextData: { ...r,
|
|
62
|
-
recommendedArticles: [
|
|
63
|
-
{
|
|
64
|
-
title: 'Exemplifying the Importance of Code Reviews',
|
|
65
|
-
url: 'https://example.com/article1'
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
title: 'AI and Software Development: A New Frontier',
|
|
69
|
-
url: 'https://example.com/article2'
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
title: 'Gardening Tips for Fun Loving Software Developers',
|
|
73
|
-
url: 'https://example.com/article3'
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
});
|
|
79
|
-
const sendResult = await communication_engine_1.CommunicationEngine.Instance.SendMessages(providerName, providerMessageTypeName, message, recipients);
|
|
45
|
+
const recipients = await this.PopulateRecipientContextData(entityInfo, entityMessageType, params.Message, result.Results);
|
|
46
|
+
const sendResult = await communication_engine_1.CommunicationEngine.Instance.SendMessages(params.ProviderName, params.ProviderMessageTypeName, params.Message, recipients, params.PreviewOnly);
|
|
80
47
|
if (sendResult && sendResult.length === recipients.length) {
|
|
81
48
|
// make sure none of the messages failed
|
|
82
49
|
return {
|
|
83
50
|
Success: !sendResult.some(r => !r.Success),
|
|
84
|
-
ErrorMessage: sendResult.filter(r => !r.Success).map(r => r.Error).join('; ')
|
|
51
|
+
ErrorMessage: sendResult.filter(r => !r.Success).map(r => r.Error).join('; '),
|
|
52
|
+
Results: sendResult.map((r, i) => {
|
|
53
|
+
return {
|
|
54
|
+
RecipientData: recipients[i],
|
|
55
|
+
Message: r.Message
|
|
56
|
+
};
|
|
57
|
+
})
|
|
85
58
|
};
|
|
86
59
|
}
|
|
87
60
|
}
|
|
88
61
|
else {
|
|
89
|
-
throw new Error(`Failed to run view ${
|
|
62
|
+
throw new Error(`Failed to run view ${params.RunViewParams.ViewName}: ${result.ErrorMessage}`);
|
|
90
63
|
}
|
|
91
64
|
return {
|
|
92
65
|
Success: false,
|
|
@@ -100,6 +73,175 @@ class EntityCommunicationsEngine extends entity_communications_base_1.EntityComm
|
|
|
100
73
|
};
|
|
101
74
|
}
|
|
102
75
|
}
|
|
76
|
+
async PopulateRecipientContextData(entityInfo, entityMessageType, message, records) {
|
|
77
|
+
// we have now validated we are good on the message type requested...
|
|
78
|
+
// next up we will figure out which field to use for the entity, starting at the entity level and then going to the record level, IF the entity has
|
|
79
|
+
// a PreferredCommunicationField we will flag that here as recordLevelPref = true
|
|
80
|
+
const recordLevelPref = entityInfo.PreferredCommunicationField?.length > 0;
|
|
81
|
+
// get the highest priority field within the entityMessageType.communicationFields property
|
|
82
|
+
const entityLevelPrefField = entityMessageType.CommunicationFields.sort((a, b) => a.Priority - b.Priority)[0];
|
|
83
|
+
const hasTemplates = message.BodyTemplate || message.HTMLBodyTemplate || message.SubjectTemplate;
|
|
84
|
+
if (hasTemplates) {
|
|
85
|
+
this.ValidateTemplateContextParamAlignment(message);
|
|
86
|
+
}
|
|
87
|
+
const relatedData = await this.GetRelatedData(message, records, entityInfo.FirstPrimaryKey.Name, entityInfo.FirstPrimaryKey.NeedsQuotes);
|
|
88
|
+
// assume that the template(s) if there are multiple, ALL use the same parameters for their contexts, that is validated above
|
|
89
|
+
const templates = [];
|
|
90
|
+
if (message.BodyTemplate) {
|
|
91
|
+
templates.push(message.BodyTemplate);
|
|
92
|
+
}
|
|
93
|
+
if (message.HTMLBodyTemplate) {
|
|
94
|
+
templates.push(message.HTMLBodyTemplate);
|
|
95
|
+
}
|
|
96
|
+
if (message.SubjectTemplate) {
|
|
97
|
+
templates.push(message.SubjectTemplate);
|
|
98
|
+
}
|
|
99
|
+
const params = [];
|
|
100
|
+
templates.forEach(t => {
|
|
101
|
+
t.Params.forEach(p => {
|
|
102
|
+
if (!params.includes(p)) {
|
|
103
|
+
params.push(p);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
const recipients = [];
|
|
108
|
+
for (const r of records) {
|
|
109
|
+
// in the below we get the VALUE of the record level preferred field if it exists, otherwise we get the value of the entity level preferred field
|
|
110
|
+
const ToValue = !recordLevelPref ? r[entityLevelPrefField.FieldName] : r[r[entityInfo.PreferredCommunicationField]];
|
|
111
|
+
// we have mapped the ToValue based on preferences, next up, we need to populate the context data, if there are any templates
|
|
112
|
+
// if there are no templates, we skip this step to save time
|
|
113
|
+
const pkey = r[entityInfo.FirstPrimaryKey.Name];
|
|
114
|
+
const retVal = {
|
|
115
|
+
To: ToValue,
|
|
116
|
+
ContextData: {}
|
|
117
|
+
};
|
|
118
|
+
if (hasTemplates) {
|
|
119
|
+
retVal.ContextData = await this.PopulateSingleRecipientContextData(r, relatedData, pkey, params);
|
|
120
|
+
}
|
|
121
|
+
recipients.push(retVal);
|
|
122
|
+
}
|
|
123
|
+
return recipients;
|
|
124
|
+
}
|
|
125
|
+
async PopulateSingleRecipientContextData(record, relatedData, pkey, params) {
|
|
126
|
+
// now, go through each template, and populate the context data for that param, but only do if we've not already processed that parameter since templates across Body/BodyHTML/Subject can share parameters
|
|
127
|
+
const contextData = {};
|
|
128
|
+
for (const p of params) {
|
|
129
|
+
if (!contextData[p.Name]) {
|
|
130
|
+
// we have not processed this parameter yet, so we will do so now.
|
|
131
|
+
// Params have various types, so we will switch on that here
|
|
132
|
+
switch (p.Type) {
|
|
133
|
+
case "Record":
|
|
134
|
+
// this one is simple, we create a property by the provided name, and set the value to the record we are currently processing
|
|
135
|
+
contextData[p.Name] = record;
|
|
136
|
+
break;
|
|
137
|
+
case "Entity":
|
|
138
|
+
// here we need to grab the related data from another entity and filter it down for the record we are current processing so it only shows the related data
|
|
139
|
+
// the metadata in the param tells us what we need to know
|
|
140
|
+
const d = relatedData.find(rd => rd.paramName === p.Name);
|
|
141
|
+
// now filter down the data in d to just this record
|
|
142
|
+
const relatedDataForRecord = d.data.filter(rdfr => rdfr[p.LinkedParameterField] === pkey);
|
|
143
|
+
// and set the value of the context data to the filtered data
|
|
144
|
+
contextData[p.Name] = relatedDataForRecord;
|
|
145
|
+
break;
|
|
146
|
+
case "Array":
|
|
147
|
+
case "Scalar":
|
|
148
|
+
case "Object":
|
|
149
|
+
// do nothing here, we don't directly support these param types from messaging. These param types are used
|
|
150
|
+
// when programs directly invoke the templating engine, but are not used by the Communication Engine
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return contextData;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Returns an array of objects that have the distinct param names across all templates in use, and the complete data for
|
|
159
|
+
* those relationships for all of the recipient records provided to the method.
|
|
160
|
+
* @param message
|
|
161
|
+
* @param records
|
|
162
|
+
*/
|
|
163
|
+
async GetRelatedData(message, recipients, recipientPrimaryKeyFieldName, recipientPrimaryKeyNeedsQuotes) {
|
|
164
|
+
// First, get a distinct list of params of type Entity
|
|
165
|
+
const templates = [];
|
|
166
|
+
if (message.BodyTemplate) {
|
|
167
|
+
templates.push(message.BodyTemplate);
|
|
168
|
+
}
|
|
169
|
+
if (message.HTMLBodyTemplate) {
|
|
170
|
+
templates.push(message.HTMLBodyTemplate);
|
|
171
|
+
}
|
|
172
|
+
if (message.SubjectTemplate) {
|
|
173
|
+
templates.push(message.SubjectTemplate);
|
|
174
|
+
}
|
|
175
|
+
const entityParams = [];
|
|
176
|
+
templates.forEach(t => {
|
|
177
|
+
t.Params.forEach(p => {
|
|
178
|
+
if (p.Type === "Entity" && !entityParams.includes(p)) {
|
|
179
|
+
entityParams.push(p);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
const data = [];
|
|
184
|
+
// now we have a distinct list of params that are of type Entity, we need to get the related data for each of these params
|
|
185
|
+
for (const p of entityParams) {
|
|
186
|
+
// we need to get the related data for this param, and filter it down to just the records we are currently processing
|
|
187
|
+
// the metadata in the param tells us what we need to know
|
|
188
|
+
const relatedEntity = p.Entity;
|
|
189
|
+
const relatedField = p.LinkedParameterField;
|
|
190
|
+
// construct a filter for the related field so that we constrain the results to just the set of records linked to our recipients
|
|
191
|
+
const quotes = recipientPrimaryKeyNeedsQuotes ? "'" : "";
|
|
192
|
+
const filter = `${relatedField} in (${recipients.map(r => `${quotes}${r[recipientPrimaryKeyFieldName]}${quotes}`).join(',')})`;
|
|
193
|
+
const finalFilter = p.ExtraFilter ? `(${filter}) AND (${p.ExtraFilter})` : filter;
|
|
194
|
+
const rv = new core_1.RunView();
|
|
195
|
+
const result = await rv.RunView({
|
|
196
|
+
EntityName: relatedEntity,
|
|
197
|
+
ExtraFilter: finalFilter,
|
|
198
|
+
}, this.ContextUser);
|
|
199
|
+
if (result && result.Success) {
|
|
200
|
+
data.push({
|
|
201
|
+
paramName: p.Name,
|
|
202
|
+
data: result.Results
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return data;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* This method is resposnible for determining if the template(s) used in the message have aligned parameters, meaning they don't have overlapping parameter names that have
|
|
210
|
+
* different meanings. It is okay for scenarios where there are > 1 template in use for a message to have different parameter names, but if they have the SAME parameter names
|
|
211
|
+
* they must not have different settings.
|
|
212
|
+
*/
|
|
213
|
+
ValidateTemplateContextParamAlignment(message) {
|
|
214
|
+
// go through each template, and compare it's parameters to look for OVERLAP on param names with the other templates. If there is overlap
|
|
215
|
+
// make sure the definitions are the same, if they are not, throw an error.
|
|
216
|
+
const templates = [];
|
|
217
|
+
if (message.BodyTemplate) {
|
|
218
|
+
templates.push(message.BodyTemplate);
|
|
219
|
+
}
|
|
220
|
+
if (message.HTMLBodyTemplate) {
|
|
221
|
+
templates.push(message.HTMLBodyTemplate);
|
|
222
|
+
}
|
|
223
|
+
if (message.SubjectTemplate) {
|
|
224
|
+
templates.push(message.SubjectTemplate);
|
|
225
|
+
}
|
|
226
|
+
// the params are defined in each template they will be in the Params property of the template
|
|
227
|
+
const paramNames = [];
|
|
228
|
+
for (const t of templates) {
|
|
229
|
+
for (const p of t.Params) {
|
|
230
|
+
if (paramNames.includes(p.Name)) {
|
|
231
|
+
// we have a duplicate parameter name, now we need to check if the definitions are the same
|
|
232
|
+
const otherParam = paramNames.find(p2 => p2.Name === p.Name);
|
|
233
|
+
if (otherParam.Type !== p.Type) {
|
|
234
|
+
throw new Error(`Parameter ${p.Name} has different types in different templates`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
paramNames.push(p);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// if we get here, we are good, otherwise we will have thrown an exception
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
103
245
|
}
|
|
104
246
|
exports.EntityCommunicationsEngine = EntityCommunicationsEngine;
|
|
105
247
|
//# sourceMappingURL=entity-communications.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-communications.js","sourceRoot":"","sources":["../src/entity-communications.ts"],"names":[],"mappings":";;;AAAA,+EAA2E;AAE3E,+
|
|
1
|
+
{"version":3,"file":"entity-communications.js","sourceRoot":"","sources":["../src/entity-communications.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/entity-communications-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "MemberJunction: Library that connects the MJ entities framework to the communication framework",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"typescript": "^5.4.5"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@memberjunction/global": "1.
|
|
23
|
-
"@memberjunction/core": "1.
|
|
24
|
-
"@memberjunction/core-entities": "1.
|
|
25
|
-
"@memberjunction/communication-engine": "1.
|
|
26
|
-
"@memberjunction/entity-communications-base": "1.
|
|
22
|
+
"@memberjunction/global": "2.1.1",
|
|
23
|
+
"@memberjunction/core": "2.1.1",
|
|
24
|
+
"@memberjunction/core-entities": "2.1.1",
|
|
25
|
+
"@memberjunction/communication-engine": "2.1.1",
|
|
26
|
+
"@memberjunction/entity-communications-base": "2.1.1"
|
|
27
27
|
}
|
|
28
28
|
}
|