@openfn/language-mailchimp 0.4.1 → 0.5.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/README.md +0 -30
- package/dist/index.cjs +161 -65
- package/dist/index.js +133 -49
- package/package.json +1 -1
- package/types/Adaptor.d.ts +101 -7
- package/types/Utils.d.ts +1 -0
package/README.md
CHANGED
|
@@ -12,36 +12,6 @@ official
|
|
|
12
12
|
[configuration-schema](https://docs.openfn.org/adaptors/packages/mailchimp-configuration-schema/)
|
|
13
13
|
definition.
|
|
14
14
|
|
|
15
|
-
#### sample expression with multiple operations
|
|
16
|
-
|
|
17
|
-
```js
|
|
18
|
-
upsertMembers({
|
|
19
|
-
listId: 'someId',
|
|
20
|
-
users: state =>
|
|
21
|
-
state.response.body.rows.map(u => ({
|
|
22
|
-
email: u.email,
|
|
23
|
-
status: u.allow_other_emails ? 'subscribed' : 'unsubscribed',
|
|
24
|
-
mergeFields: { FNAME: u.first_name, LNAME: u.last_name },
|
|
25
|
-
})),
|
|
26
|
-
options: {},
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
tagMembers({
|
|
30
|
-
listId: 'someId', // All Subscribers
|
|
31
|
-
tagId: 'someTag', // User
|
|
32
|
-
members: state => state.response.body.rows.map(u => u.email),
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
tagMembers({
|
|
36
|
-
listId: 'someId', // All Subscribers
|
|
37
|
-
tagId: 'someTag', // Other Emails Allowed
|
|
38
|
-
members: state =>
|
|
39
|
-
state.response.body.rows
|
|
40
|
-
.filter(u => u.allow_other_emails)
|
|
41
|
-
.map(u => u.email),
|
|
42
|
-
});
|
|
43
|
-
```
|
|
44
|
-
|
|
45
15
|
## Development
|
|
46
16
|
|
|
47
17
|
Clone the [adaptors monorepo](https://github.com/OpenFn/adaptors). Follow the
|
package/dist/index.cjs
CHANGED
|
@@ -25,23 +25,31 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
25
25
|
// src/index.js
|
|
26
26
|
var src_exports = {};
|
|
27
27
|
__export(src_exports, {
|
|
28
|
-
|
|
28
|
+
addMember: () => addMember,
|
|
29
|
+
alterState: () => import_language_common3.alterState,
|
|
30
|
+
archiveMember: () => archiveMember,
|
|
29
31
|
axios: () => import_axios.default,
|
|
30
|
-
dataPath: () =>
|
|
31
|
-
dataValue: () =>
|
|
32
|
+
dataPath: () => import_language_common3.dataPath,
|
|
33
|
+
dataValue: () => import_language_common3.dataValue,
|
|
32
34
|
default: () => src_default,
|
|
33
|
-
|
|
35
|
+
deleteMember: () => deleteMember,
|
|
36
|
+
each: () => import_language_common3.each,
|
|
34
37
|
execute: () => execute,
|
|
35
|
-
field: () =>
|
|
36
|
-
fields: () =>
|
|
37
|
-
fn: () =>
|
|
38
|
-
lastReferenceValue: () =>
|
|
38
|
+
field: () => import_language_common3.field,
|
|
39
|
+
fields: () => import_language_common3.fields,
|
|
40
|
+
fn: () => import_language_common3.fn,
|
|
41
|
+
lastReferenceValue: () => import_language_common3.lastReferenceValue,
|
|
42
|
+
listAudienceInfo: () => listAudienceInfo,
|
|
43
|
+
listAudiences: () => listAudiences,
|
|
39
44
|
listBatches: () => listBatches,
|
|
45
|
+
listMembers: () => listMembers,
|
|
40
46
|
md5: () => import_md5.default,
|
|
41
|
-
merge: () =>
|
|
42
|
-
sourceValue: () =>
|
|
47
|
+
merge: () => import_language_common3.merge,
|
|
48
|
+
sourceValue: () => import_language_common3.sourceValue,
|
|
43
49
|
startBatch: () => startBatch,
|
|
44
50
|
tagMembers: () => tagMembers,
|
|
51
|
+
updateMember: () => updateMember,
|
|
52
|
+
updateMemberTags: () => updateMemberTags,
|
|
45
53
|
upsertMembers: () => upsertMembers
|
|
46
54
|
});
|
|
47
55
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -49,93 +57,173 @@ module.exports = __toCommonJS(src_exports);
|
|
|
49
57
|
// src/Adaptor.js
|
|
50
58
|
var Adaptor_exports = {};
|
|
51
59
|
__export(Adaptor_exports, {
|
|
52
|
-
|
|
60
|
+
addMember: () => addMember,
|
|
61
|
+
alterState: () => import_language_common3.alterState,
|
|
62
|
+
archiveMember: () => archiveMember,
|
|
53
63
|
axios: () => import_axios.default,
|
|
54
|
-
dataPath: () =>
|
|
55
|
-
dataValue: () =>
|
|
56
|
-
|
|
64
|
+
dataPath: () => import_language_common3.dataPath,
|
|
65
|
+
dataValue: () => import_language_common3.dataValue,
|
|
66
|
+
deleteMember: () => deleteMember,
|
|
67
|
+
each: () => import_language_common3.each,
|
|
57
68
|
execute: () => execute,
|
|
58
|
-
field: () =>
|
|
59
|
-
fields: () =>
|
|
60
|
-
fn: () =>
|
|
61
|
-
lastReferenceValue: () =>
|
|
69
|
+
field: () => import_language_common3.field,
|
|
70
|
+
fields: () => import_language_common3.fields,
|
|
71
|
+
fn: () => import_language_common3.fn,
|
|
72
|
+
lastReferenceValue: () => import_language_common3.lastReferenceValue,
|
|
73
|
+
listAudienceInfo: () => listAudienceInfo,
|
|
74
|
+
listAudiences: () => listAudiences,
|
|
62
75
|
listBatches: () => listBatches,
|
|
76
|
+
listMembers: () => listMembers,
|
|
63
77
|
md5: () => import_md5.default,
|
|
64
|
-
merge: () =>
|
|
65
|
-
sourceValue: () =>
|
|
78
|
+
merge: () => import_language_common3.merge,
|
|
79
|
+
sourceValue: () => import_language_common3.sourceValue,
|
|
66
80
|
startBatch: () => startBatch,
|
|
67
81
|
tagMembers: () => tagMembers,
|
|
82
|
+
updateMember: () => updateMember,
|
|
83
|
+
updateMemberTags: () => updateMemberTags,
|
|
68
84
|
upsertMembers: () => upsertMembers
|
|
69
85
|
});
|
|
70
|
-
var
|
|
86
|
+
var import_md5 = __toESM(require("md5"), 1);
|
|
71
87
|
var import_axios = __toESM(require("axios"), 1);
|
|
72
88
|
var import_mailchimp_marketing = __toESM(require("@mailchimp/mailchimp_marketing"), 1);
|
|
73
|
-
var
|
|
89
|
+
var import_util = require("@openfn/language-common/util");
|
|
74
90
|
var import_language_common2 = require("@openfn/language-common");
|
|
91
|
+
|
|
92
|
+
// src/Utils.js
|
|
93
|
+
var import_language_common = require("@openfn/language-common");
|
|
94
|
+
function handleResponse(response, state, callback) {
|
|
95
|
+
const nextState = {
|
|
96
|
+
...(0, import_language_common.composeNextState)(state, response),
|
|
97
|
+
response
|
|
98
|
+
};
|
|
99
|
+
if (callback)
|
|
100
|
+
return callback(nextState);
|
|
101
|
+
return nextState;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// src/Adaptor.js
|
|
105
|
+
var import_language_common3 = require("@openfn/language-common");
|
|
75
106
|
function execute(...operations) {
|
|
76
107
|
const initialState = {
|
|
77
108
|
references: [],
|
|
78
109
|
data: null
|
|
79
110
|
};
|
|
80
111
|
return (state) => {
|
|
81
|
-
return (0,
|
|
112
|
+
return (0, import_language_common2.execute)(
|
|
113
|
+
createClient,
|
|
114
|
+
...operations,
|
|
115
|
+
cleanupState
|
|
116
|
+
)({
|
|
82
117
|
...initialState,
|
|
83
118
|
...state
|
|
84
119
|
});
|
|
85
120
|
};
|
|
86
121
|
}
|
|
87
|
-
function
|
|
122
|
+
function createClient(state) {
|
|
123
|
+
const { apiKey, server } = state.configuration;
|
|
124
|
+
import_mailchimp_marketing.default.setConfig({ apiKey, server });
|
|
125
|
+
return { ...state, client: import_mailchimp_marketing.default };
|
|
126
|
+
}
|
|
127
|
+
function cleanupState(state) {
|
|
128
|
+
delete state.client;
|
|
129
|
+
return state;
|
|
130
|
+
}
|
|
131
|
+
function upsertMembers(params, callback = (s) => s) {
|
|
132
|
+
return (state) => {
|
|
133
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
134
|
+
const defaultOptions = {
|
|
135
|
+
update_existing: true,
|
|
136
|
+
sync_tags: false
|
|
137
|
+
};
|
|
138
|
+
const { listId: listId2, users, options } = resolvedParams;
|
|
139
|
+
const opts = { ...defaultOptions, ...options };
|
|
140
|
+
const membersList = users.map((member2) => ({
|
|
141
|
+
email_address: member2.email,
|
|
142
|
+
status: member2.status,
|
|
143
|
+
merge_fields: member2.mergeFields,
|
|
144
|
+
tags: member2.tags
|
|
145
|
+
}));
|
|
146
|
+
return state.client.lists.batchListMembers(listId2, {
|
|
147
|
+
...opts,
|
|
148
|
+
members: membersList
|
|
149
|
+
}).then((response) => handleResponse(response, state, callback));
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function tagMembers(params, callback = (s) => s) {
|
|
88
153
|
return (state) => {
|
|
89
|
-
const
|
|
90
|
-
const { listId,
|
|
91
|
-
|
|
92
|
-
return Promise.all(
|
|
93
|
-
users.map(
|
|
94
|
-
(user) => import_mailchimp_marketing.default.lists.setListMember(listId, (0, import_md5.default)(user.email), {
|
|
95
|
-
email_address: user.email,
|
|
96
|
-
status_if_new: user.status,
|
|
97
|
-
merge_fields: user.mergeFields
|
|
98
|
-
}).then((response) => {
|
|
99
|
-
state.references.push(response);
|
|
100
|
-
})
|
|
101
|
-
)
|
|
102
|
-
).then(() => {
|
|
103
|
-
return state;
|
|
104
|
-
});
|
|
154
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
155
|
+
const { listId: listId2, tagId, members } = resolvedParams;
|
|
156
|
+
return state.client.lists.batchSegmentMembers({ members_to_add: members }, listId2, tagId).then((response) => handleResponse(response, state, callback));
|
|
105
157
|
};
|
|
106
158
|
}
|
|
107
|
-
function
|
|
159
|
+
function startBatch(params, callback = (s) => s) {
|
|
108
160
|
return (state) => {
|
|
109
|
-
const
|
|
110
|
-
const {
|
|
111
|
-
|
|
112
|
-
return import_mailchimp_marketing.default.lists.batchSegmentMembers({ members_to_add: members }, listId, tagId).then((response) => {
|
|
113
|
-
const nextState = (0, import_language_common.composeNextState)(state, response);
|
|
114
|
-
return nextState;
|
|
115
|
-
});
|
|
161
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
162
|
+
const { operations } = resolvedParams;
|
|
163
|
+
return state.client.batches.start({ operations: [...operations] }).then((response) => handleResponse(response, state, callback));
|
|
116
164
|
};
|
|
117
165
|
}
|
|
118
|
-
function
|
|
166
|
+
function listBatches(params, callback = (s) => s) {
|
|
119
167
|
return (state) => {
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
import_mailchimp_marketing.default.setConfig({ apiKey, server });
|
|
123
|
-
return import_mailchimp_marketing.default.batches.start({ operations: [...operations] }).then((response) => {
|
|
124
|
-
console.log(response);
|
|
125
|
-
const nextState = (0, import_language_common.composeNextState)(state, response);
|
|
126
|
-
return nextState;
|
|
127
|
-
});
|
|
168
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
169
|
+
return state.client.batches.list(resolvedParams).then((response) => handleResponse(response, state, callback));
|
|
128
170
|
};
|
|
129
171
|
}
|
|
130
|
-
function
|
|
172
|
+
function listMembers(params, callback = (s) => s) {
|
|
131
173
|
return (state) => {
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
return
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
174
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
175
|
+
const { listId: listId2, ...otherParams } = resolvedParams;
|
|
176
|
+
return state.client.lists.getListMembersInfo(listId2, otherParams).then((response) => handleResponse(response, state, callback));
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
function addMember(params, callback = (s) => s) {
|
|
180
|
+
return (state) => {
|
|
181
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
182
|
+
const { listId: listId2, member: member2 } = resolvedParams;
|
|
183
|
+
return state.client.lists.addListMember(listId2, ...member2).then((response) => handleResponse(response, state, callback));
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function updateMember(params = { listId, subscriberHash, member }, callback = (s) => s) {
|
|
187
|
+
return (state) => {
|
|
188
|
+
const requiredParams = ["listId", "subscriberHash"];
|
|
189
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
190
|
+
assertKeys(resolvedParams, requiredParams);
|
|
191
|
+
const { listId: listId2, subscriberHash: subscriberHash2, member: member2 } = resolvedParams;
|
|
192
|
+
return state.client.lists.updateListMember(listId2, subscriberHash2, member2).then((response) => handleResponse(response, state, callback));
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function updateMemberTags(params, callback = (s) => s) {
|
|
196
|
+
return (state) => {
|
|
197
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
198
|
+
const { listId: listId2, subscriberHash: subscriberHash2, tags } = resolvedParams;
|
|
199
|
+
return state.client.lists.updateListMemberTags(listId2, subscriberHash2, { tags }).then((response) => handleResponse(response, state, callback));
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function archiveMember(params, callback = (s) => s) {
|
|
203
|
+
return (state) => {
|
|
204
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
205
|
+
const { listId: listId2, subscriberHash: subscriberHash2 } = resolvedParams;
|
|
206
|
+
return state.client.lists.deleteListMember(listId2, subscriberHash2).then((response) => handleResponse(response, state, callback));
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
function deleteMember(params, callback = (s) => s) {
|
|
210
|
+
return (state) => {
|
|
211
|
+
const [resolvedParams] = (0, import_util.expandReferences)(state, params);
|
|
212
|
+
const { listId: listId2, subscriberHash: subscriberHash2 } = resolvedParams;
|
|
213
|
+
return state.client.lists.deleteListMemberPermanent(listId2, subscriberHash2).then((response) => handleResponse(response, state, callback));
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
function listAudiences(query, callback = (s) => s) {
|
|
217
|
+
return (state) => {
|
|
218
|
+
const [resolvedQuery] = (0, import_util.expandReferences)(state, query);
|
|
219
|
+
return state.client.lists.getAllLists(resolvedQuery).then((response) => handleResponse(response, state, callback));
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function listAudienceInfo(query, callback = (s) => s) {
|
|
223
|
+
return (state) => {
|
|
224
|
+
const [resolvedQuery] = (0, import_util.expandReferences)(state, query);
|
|
225
|
+
const { listId: listId2, ...queries } = resolvedQuery;
|
|
226
|
+
return state.client.lists.getList(listId2, queries).then((response) => handleResponse(response, state, callback));
|
|
139
227
|
};
|
|
140
228
|
}
|
|
141
229
|
|
|
@@ -143,21 +231,29 @@ function listBatches(params) {
|
|
|
143
231
|
var src_default = Adaptor_exports;
|
|
144
232
|
// Annotate the CommonJS export names for ESM import in node:
|
|
145
233
|
0 && (module.exports = {
|
|
234
|
+
addMember,
|
|
146
235
|
alterState,
|
|
236
|
+
archiveMember,
|
|
147
237
|
axios,
|
|
148
238
|
dataPath,
|
|
149
239
|
dataValue,
|
|
240
|
+
deleteMember,
|
|
150
241
|
each,
|
|
151
242
|
execute,
|
|
152
243
|
field,
|
|
153
244
|
fields,
|
|
154
245
|
fn,
|
|
155
246
|
lastReferenceValue,
|
|
247
|
+
listAudienceInfo,
|
|
248
|
+
listAudiences,
|
|
156
249
|
listBatches,
|
|
250
|
+
listMembers,
|
|
157
251
|
md5,
|
|
158
252
|
merge,
|
|
159
253
|
sourceValue,
|
|
160
254
|
startBatch,
|
|
161
255
|
tagMembers,
|
|
256
|
+
updateMember,
|
|
257
|
+
updateMemberTags,
|
|
162
258
|
upsertMembers
|
|
163
259
|
});
|
package/dist/index.js
CHANGED
|
@@ -7,32 +7,51 @@ var __export = (target, all) => {
|
|
|
7
7
|
// src/Adaptor.js
|
|
8
8
|
var Adaptor_exports = {};
|
|
9
9
|
__export(Adaptor_exports, {
|
|
10
|
+
addMember: () => addMember,
|
|
10
11
|
alterState: () => alterState,
|
|
12
|
+
archiveMember: () => archiveMember,
|
|
11
13
|
axios: () => axios,
|
|
12
14
|
dataPath: () => dataPath,
|
|
13
15
|
dataValue: () => dataValue,
|
|
16
|
+
deleteMember: () => deleteMember,
|
|
14
17
|
each: () => each,
|
|
15
18
|
execute: () => execute,
|
|
16
19
|
field: () => field,
|
|
17
20
|
fields: () => fields,
|
|
18
21
|
fn: () => fn,
|
|
19
22
|
lastReferenceValue: () => lastReferenceValue,
|
|
23
|
+
listAudienceInfo: () => listAudienceInfo,
|
|
24
|
+
listAudiences: () => listAudiences,
|
|
20
25
|
listBatches: () => listBatches,
|
|
26
|
+
listMembers: () => listMembers,
|
|
21
27
|
md5: () => md5,
|
|
22
28
|
merge: () => merge,
|
|
23
29
|
sourceValue: () => sourceValue,
|
|
24
30
|
startBatch: () => startBatch,
|
|
25
31
|
tagMembers: () => tagMembers,
|
|
32
|
+
updateMember: () => updateMember,
|
|
33
|
+
updateMemberTags: () => updateMemberTags,
|
|
26
34
|
upsertMembers: () => upsertMembers
|
|
27
35
|
});
|
|
28
|
-
import
|
|
29
|
-
execute as commonExecute,
|
|
30
|
-
composeNextState,
|
|
31
|
-
expandReferences
|
|
32
|
-
} from "@openfn/language-common";
|
|
36
|
+
import md5 from "md5";
|
|
33
37
|
import axios from "axios";
|
|
34
38
|
import client from "@mailchimp/mailchimp_marketing";
|
|
35
|
-
import
|
|
39
|
+
import { expandReferences } from "@openfn/language-common/util";
|
|
40
|
+
import { execute as commonExecute } from "@openfn/language-common";
|
|
41
|
+
|
|
42
|
+
// src/Utils.js
|
|
43
|
+
import { composeNextState } from "@openfn/language-common";
|
|
44
|
+
function handleResponse(response, state, callback) {
|
|
45
|
+
const nextState = {
|
|
46
|
+
...composeNextState(state, response),
|
|
47
|
+
response
|
|
48
|
+
};
|
|
49
|
+
if (callback)
|
|
50
|
+
return callback(nextState);
|
|
51
|
+
return nextState;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// src/Adaptor.js
|
|
36
55
|
import {
|
|
37
56
|
fn,
|
|
38
57
|
alterState,
|
|
@@ -51,86 +70,151 @@ function execute(...operations) {
|
|
|
51
70
|
data: null
|
|
52
71
|
};
|
|
53
72
|
return (state) => {
|
|
54
|
-
return commonExecute(
|
|
73
|
+
return commonExecute(
|
|
74
|
+
createClient,
|
|
75
|
+
...operations,
|
|
76
|
+
cleanupState
|
|
77
|
+
)({
|
|
55
78
|
...initialState,
|
|
56
79
|
...state
|
|
57
80
|
});
|
|
58
81
|
};
|
|
59
82
|
}
|
|
60
|
-
function
|
|
83
|
+
function createClient(state) {
|
|
84
|
+
const { apiKey, server } = state.configuration;
|
|
85
|
+
client.setConfig({ apiKey, server });
|
|
86
|
+
return { ...state, client };
|
|
87
|
+
}
|
|
88
|
+
function cleanupState(state) {
|
|
89
|
+
delete state.client;
|
|
90
|
+
return state;
|
|
91
|
+
}
|
|
92
|
+
function upsertMembers(params, callback = (s) => s) {
|
|
93
|
+
return (state) => {
|
|
94
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
95
|
+
const defaultOptions = {
|
|
96
|
+
update_existing: true,
|
|
97
|
+
sync_tags: false
|
|
98
|
+
};
|
|
99
|
+
const { listId: listId2, users, options } = resolvedParams;
|
|
100
|
+
const opts = { ...defaultOptions, ...options };
|
|
101
|
+
const membersList = users.map((member2) => ({
|
|
102
|
+
email_address: member2.email,
|
|
103
|
+
status: member2.status,
|
|
104
|
+
merge_fields: member2.mergeFields,
|
|
105
|
+
tags: member2.tags
|
|
106
|
+
}));
|
|
107
|
+
return state.client.lists.batchListMembers(listId2, {
|
|
108
|
+
...opts,
|
|
109
|
+
members: membersList
|
|
110
|
+
}).then((response) => handleResponse(response, state, callback));
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function tagMembers(params, callback = (s) => s) {
|
|
61
114
|
return (state) => {
|
|
62
|
-
const
|
|
63
|
-
const { listId,
|
|
64
|
-
client.
|
|
65
|
-
return Promise.all(
|
|
66
|
-
users.map(
|
|
67
|
-
(user) => client.lists.setListMember(listId, md5(user.email), {
|
|
68
|
-
email_address: user.email,
|
|
69
|
-
status_if_new: user.status,
|
|
70
|
-
merge_fields: user.mergeFields
|
|
71
|
-
}).then((response) => {
|
|
72
|
-
state.references.push(response);
|
|
73
|
-
})
|
|
74
|
-
)
|
|
75
|
-
).then(() => {
|
|
76
|
-
return state;
|
|
77
|
-
});
|
|
115
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
116
|
+
const { listId: listId2, tagId, members } = resolvedParams;
|
|
117
|
+
return state.client.lists.batchSegmentMembers({ members_to_add: members }, listId2, tagId).then((response) => handleResponse(response, state, callback));
|
|
78
118
|
};
|
|
79
119
|
}
|
|
80
|
-
function
|
|
120
|
+
function startBatch(params, callback = (s) => s) {
|
|
81
121
|
return (state) => {
|
|
82
|
-
const
|
|
83
|
-
const {
|
|
84
|
-
client.
|
|
85
|
-
return client.lists.batchSegmentMembers({ members_to_add: members }, listId, tagId).then((response) => {
|
|
86
|
-
const nextState = composeNextState(state, response);
|
|
87
|
-
return nextState;
|
|
88
|
-
});
|
|
122
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
123
|
+
const { operations } = resolvedParams;
|
|
124
|
+
return state.client.batches.start({ operations: [...operations] }).then((response) => handleResponse(response, state, callback));
|
|
89
125
|
};
|
|
90
126
|
}
|
|
91
|
-
function
|
|
127
|
+
function listBatches(params, callback = (s) => s) {
|
|
92
128
|
return (state) => {
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
client.setConfig({ apiKey, server });
|
|
96
|
-
return client.batches.start({ operations: [...operations] }).then((response) => {
|
|
97
|
-
console.log(response);
|
|
98
|
-
const nextState = composeNextState(state, response);
|
|
99
|
-
return nextState;
|
|
100
|
-
});
|
|
129
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
130
|
+
return state.client.batches.list(resolvedParams).then((response) => handleResponse(response, state, callback));
|
|
101
131
|
};
|
|
102
132
|
}
|
|
103
|
-
function
|
|
133
|
+
function listMembers(params, callback = (s) => s) {
|
|
104
134
|
return (state) => {
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
return client.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
135
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
136
|
+
const { listId: listId2, ...otherParams } = resolvedParams;
|
|
137
|
+
return state.client.lists.getListMembersInfo(listId2, otherParams).then((response) => handleResponse(response, state, callback));
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function addMember(params, callback = (s) => s) {
|
|
141
|
+
return (state) => {
|
|
142
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
143
|
+
const { listId: listId2, member: member2 } = resolvedParams;
|
|
144
|
+
return state.client.lists.addListMember(listId2, ...member2).then((response) => handleResponse(response, state, callback));
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function updateMember(params = { listId, subscriberHash, member }, callback = (s) => s) {
|
|
148
|
+
return (state) => {
|
|
149
|
+
const requiredParams = ["listId", "subscriberHash"];
|
|
150
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
151
|
+
assertKeys(resolvedParams, requiredParams);
|
|
152
|
+
const { listId: listId2, subscriberHash: subscriberHash2, member: member2 } = resolvedParams;
|
|
153
|
+
return state.client.lists.updateListMember(listId2, subscriberHash2, member2).then((response) => handleResponse(response, state, callback));
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function updateMemberTags(params, callback = (s) => s) {
|
|
157
|
+
return (state) => {
|
|
158
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
159
|
+
const { listId: listId2, subscriberHash: subscriberHash2, tags } = resolvedParams;
|
|
160
|
+
return state.client.lists.updateListMemberTags(listId2, subscriberHash2, { tags }).then((response) => handleResponse(response, state, callback));
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function archiveMember(params, callback = (s) => s) {
|
|
164
|
+
return (state) => {
|
|
165
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
166
|
+
const { listId: listId2, subscriberHash: subscriberHash2 } = resolvedParams;
|
|
167
|
+
return state.client.lists.deleteListMember(listId2, subscriberHash2).then((response) => handleResponse(response, state, callback));
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function deleteMember(params, callback = (s) => s) {
|
|
171
|
+
return (state) => {
|
|
172
|
+
const [resolvedParams] = expandReferences(state, params);
|
|
173
|
+
const { listId: listId2, subscriberHash: subscriberHash2 } = resolvedParams;
|
|
174
|
+
return state.client.lists.deleteListMemberPermanent(listId2, subscriberHash2).then((response) => handleResponse(response, state, callback));
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function listAudiences(query, callback = (s) => s) {
|
|
178
|
+
return (state) => {
|
|
179
|
+
const [resolvedQuery] = expandReferences(state, query);
|
|
180
|
+
return state.client.lists.getAllLists(resolvedQuery).then((response) => handleResponse(response, state, callback));
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
function listAudienceInfo(query, callback = (s) => s) {
|
|
184
|
+
return (state) => {
|
|
185
|
+
const [resolvedQuery] = expandReferences(state, query);
|
|
186
|
+
const { listId: listId2, ...queries } = resolvedQuery;
|
|
187
|
+
return state.client.lists.getList(listId2, queries).then((response) => handleResponse(response, state, callback));
|
|
112
188
|
};
|
|
113
189
|
}
|
|
114
190
|
|
|
115
191
|
// src/index.js
|
|
116
192
|
var src_default = Adaptor_exports;
|
|
117
193
|
export {
|
|
194
|
+
addMember,
|
|
118
195
|
alterState,
|
|
196
|
+
archiveMember,
|
|
119
197
|
axios,
|
|
120
198
|
dataPath,
|
|
121
199
|
dataValue,
|
|
122
200
|
src_default as default,
|
|
201
|
+
deleteMember,
|
|
123
202
|
each,
|
|
124
203
|
execute,
|
|
125
204
|
field,
|
|
126
205
|
fields,
|
|
127
206
|
fn,
|
|
128
207
|
lastReferenceValue,
|
|
208
|
+
listAudienceInfo,
|
|
209
|
+
listAudiences,
|
|
129
210
|
listBatches,
|
|
211
|
+
listMembers,
|
|
130
212
|
md5,
|
|
131
213
|
merge,
|
|
132
214
|
sourceValue,
|
|
133
215
|
startBatch,
|
|
134
216
|
tagMembers,
|
|
217
|
+
updateMember,
|
|
218
|
+
updateMemberTags,
|
|
135
219
|
upsertMembers
|
|
136
220
|
};
|
package/package.json
CHANGED
package/types/Adaptor.d.ts
CHANGED
|
@@ -12,33 +12,127 @@
|
|
|
12
12
|
*/
|
|
13
13
|
export function execute(...operations: Operations): Operation;
|
|
14
14
|
/**
|
|
15
|
-
* Add
|
|
15
|
+
* Add or update a list members
|
|
16
16
|
* @example
|
|
17
|
-
* upsertMembers(
|
|
17
|
+
* upsertMembers((state) => ({
|
|
18
|
+
* listId: "someId",
|
|
19
|
+
* users: state.response.body.rows.map((u) => ({
|
|
20
|
+
* email: u.email,
|
|
21
|
+
* status: u.allow_other_emails ? "subscribed" : "unsubscribed",
|
|
22
|
+
* mergeFields: { FNAME: u.first_name, LNAME: u.last_name },
|
|
23
|
+
* })),
|
|
24
|
+
* }));
|
|
18
25
|
* @function
|
|
19
26
|
* @param {object} params - a listId, users, and options
|
|
27
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
20
28
|
* @returns {Operation}
|
|
21
29
|
*/
|
|
22
|
-
export function upsertMembers(params: object): Operation;
|
|
30
|
+
export function upsertMembers(params: object, callback?: Function): Operation;
|
|
23
31
|
/**
|
|
24
32
|
* Tag members with a particular tag
|
|
25
33
|
* @example
|
|
26
|
-
* tagMembers(
|
|
34
|
+
* tagMembers((state) => ({
|
|
35
|
+
* listId: "someId", // All Subscribers list
|
|
36
|
+
* tagId: "someTag", // User tag
|
|
37
|
+
* members: state.response.body.rows.map((u) => u.email),
|
|
38
|
+
* }));
|
|
39
|
+
* @example
|
|
40
|
+
* tagMembers((state) => ({
|
|
41
|
+
* listId: "someId",
|
|
42
|
+
* tagId: "someTag",
|
|
43
|
+
* members: state.response.body.rows
|
|
44
|
+
* .filter((u) => u.allow_other_emails)
|
|
45
|
+
* .map((u) => u.email),
|
|
46
|
+
* }));
|
|
27
47
|
* @function
|
|
28
48
|
* @param {object} params - a tagId, members, and a list
|
|
49
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
29
50
|
* @returns {Operation}
|
|
30
51
|
*/
|
|
31
|
-
export function tagMembers(params: object): Operation;
|
|
52
|
+
export function tagMembers(params: object, callback?: Function): Operation;
|
|
32
53
|
/**
|
|
33
54
|
* Start a batch with a list of operations.
|
|
34
55
|
* @example
|
|
35
56
|
* startBatch(params)
|
|
36
57
|
* @function
|
|
37
58
|
* @param {object} params - operations batch job
|
|
59
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
60
|
+
* @returns {Operation}
|
|
61
|
+
*/
|
|
62
|
+
export function startBatch(params: object, callback?: Function): Operation;
|
|
63
|
+
/**
|
|
64
|
+
* listBatches
|
|
65
|
+
* @function
|
|
66
|
+
* @param {object} params - a listId, and options
|
|
67
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
68
|
+
* @returns {Operation}
|
|
69
|
+
*/
|
|
70
|
+
export function listBatches(params: object, callback?: Function): Operation;
|
|
71
|
+
/**
|
|
72
|
+
* listMembers
|
|
73
|
+
* @function
|
|
74
|
+
* @param {object} params - a listId, and options
|
|
75
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
76
|
+
* @returns {Operation}
|
|
77
|
+
*/
|
|
78
|
+
export function listMembers(params: object, callback?: Function): Operation;
|
|
79
|
+
/**
|
|
80
|
+
* addMember to a list
|
|
81
|
+
* @function
|
|
82
|
+
* @param {object} params - a listId, and options
|
|
83
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
84
|
+
* @returns {Operation}
|
|
85
|
+
*/
|
|
86
|
+
export function addMember(params: object, callback?: Function): Operation;
|
|
87
|
+
/**
|
|
88
|
+
* updateMember
|
|
89
|
+
* @function
|
|
90
|
+
* @param {object} params - a listId,subscriberHash and member
|
|
91
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
92
|
+
* @returns {Operation}
|
|
93
|
+
*/
|
|
94
|
+
export function updateMember(params?: object, callback?: Function): Operation;
|
|
95
|
+
/**
|
|
96
|
+
* updateMemberTags
|
|
97
|
+
* @function
|
|
98
|
+
* @param {object} params - a listId, and options
|
|
99
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
100
|
+
* @returns {Operation}
|
|
101
|
+
*/
|
|
102
|
+
export function updateMemberTags(params: object, callback?: Function): Operation;
|
|
103
|
+
/**
|
|
104
|
+
* archiveMember in a list
|
|
105
|
+
* @function
|
|
106
|
+
* @param {object} params - a listId, and options
|
|
107
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
108
|
+
* @returns {Operation}
|
|
109
|
+
*/
|
|
110
|
+
export function archiveMember(params: object, callback?: Function): Operation;
|
|
111
|
+
/**
|
|
112
|
+
* Permanently delete a member from a list
|
|
113
|
+
* @function
|
|
114
|
+
* @param {object} params - a listId, and options
|
|
115
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
116
|
+
* @returns {Operation}
|
|
117
|
+
*/
|
|
118
|
+
export function deleteMember(params: object, callback?: Function): Operation;
|
|
119
|
+
/**
|
|
120
|
+
* Get information about all lists in the account.
|
|
121
|
+
* @function
|
|
122
|
+
* @param {object} query - Query parameters
|
|
123
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
124
|
+
* @returns {Operation}
|
|
125
|
+
*/
|
|
126
|
+
export function listAudiences(query: object, callback?: Function): Operation;
|
|
127
|
+
/**
|
|
128
|
+
* Get information about a specific list in your Mailchimp account.
|
|
129
|
+
* Results include list members who have signed up but haven't confirmed their subscription yet and unsubscribed or cleaned.
|
|
130
|
+
* @function
|
|
131
|
+
* @param {object} query - listId and query parameters
|
|
132
|
+
* @param {function} [callback] - Optional callback to handle the response
|
|
38
133
|
* @returns {Operation}
|
|
39
134
|
*/
|
|
40
|
-
export function
|
|
41
|
-
export function listBatches(params: any): (state: any) => any;
|
|
135
|
+
export function listAudienceInfo(query: object, callback?: Function): Operation;
|
|
42
136
|
import axios from "axios";
|
|
43
137
|
export { axios, md5 };
|
|
44
138
|
export { fn, alterState, dataPath, dataValue, each, field, fields, lastReferenceValue, merge, sourceValue } from "@openfn/language-common";
|
package/types/Utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function handleResponse(response: any, state: any, callback: any): any;
|