@memberjunction/integration-connectors 0.0.1 → 5.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.
@@ -0,0 +1,462 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { RegisterClass } from '@memberjunction/global';
8
+ import { BaseIntegrationConnector, } from '@memberjunction/integration-engine';
9
+ /** YM REST API base URL */
10
+ const YM_API_BASE = 'https://ws.yourmembership.com';
11
+ /** Sessions expire after 14 minutes (YM sessions last ~15 min) */
12
+ const SESSION_TTL_MS = 14 * 60 * 1000;
13
+ /** All supported YM objects */
14
+ const YM_OBJECTS = {
15
+ Members: {
16
+ Path: 'MemberList',
17
+ Label: 'Members',
18
+ ResponseDataKey: 'Members',
19
+ PKFields: ['ProfileID'],
20
+ SupportsPagination: true,
21
+ DefaultPageSize: 200,
22
+ DefaultQueryParams: {
23
+ FieldSelection: [
24
+ 'ProfileID', 'FirstName', 'LastName', 'EmailAddr', 'MemberTypeCode',
25
+ 'Status', 'Organization', 'Phone', 'Address1', 'Address2', 'City',
26
+ 'State', 'PostalCode', 'Country', 'JoinDate', 'RenewalDate',
27
+ 'ExpirationDate', 'MemberSinceDate', 'Title', 'WebsiteUrl',
28
+ ].join(','),
29
+ },
30
+ SupportsIncrementalSync: false,
31
+ },
32
+ Events: {
33
+ Path: 'Events',
34
+ Label: 'Events',
35
+ ResponseDataKey: 'EventsList',
36
+ PKFields: ['EventId'],
37
+ SupportsPagination: true,
38
+ DefaultPageSize: 100,
39
+ DefaultQueryParams: { Active: 'true' },
40
+ SupportsIncrementalSync: false,
41
+ },
42
+ MemberTypes: {
43
+ Path: 'MemberTypes',
44
+ Label: 'Member Types',
45
+ ResponseDataKey: 'MemberTypes',
46
+ PKFields: ['ID'],
47
+ SupportsPagination: false,
48
+ DefaultPageSize: 500,
49
+ SupportsIncrementalSync: false,
50
+ },
51
+ Memberships: {
52
+ Path: 'Memberships',
53
+ Label: 'Memberships',
54
+ ResponseDataKey: 'membershipList',
55
+ PKFields: ['Id'],
56
+ SupportsPagination: false,
57
+ DefaultPageSize: 500,
58
+ SupportsIncrementalSync: false,
59
+ },
60
+ Groups: {
61
+ Path: 'Groups',
62
+ Label: 'Groups',
63
+ ResponseDataKey: 'GroupTypeList',
64
+ PKFields: ['Id'],
65
+ SupportsPagination: false,
66
+ DefaultPageSize: 500,
67
+ SupportsIncrementalSync: false,
68
+ },
69
+ Products: {
70
+ Path: 'Products',
71
+ Label: 'Products',
72
+ ResponseDataKey: null,
73
+ PKFields: ['id'],
74
+ SupportsPagination: false,
75
+ DefaultPageSize: 500,
76
+ SupportsIncrementalSync: false,
77
+ },
78
+ DonationFunds: {
79
+ Path: 'DonationFunds',
80
+ Label: 'Donation Funds',
81
+ ResponseDataKey: 'fundList',
82
+ PKFields: ['fundId'],
83
+ SupportsPagination: false,
84
+ DefaultPageSize: 500,
85
+ SupportsIncrementalSync: false,
86
+ },
87
+ Certifications: {
88
+ Path: 'Certifications',
89
+ Label: 'Certifications',
90
+ ResponseDataKey: 'CertificationList',
91
+ PKFields: ['CertificationID'],
92
+ SupportsPagination: true,
93
+ DefaultPageSize: 100,
94
+ SupportsIncrementalSync: false,
95
+ },
96
+ };
97
+ /** Field definitions for known YM objects. Used by DiscoverFields. */
98
+ const YM_FIELD_SCHEMAS = {
99
+ Members: [
100
+ { Name: 'ProfileID', Label: 'Profile ID', DataType: 'integer', IsRequired: true, IsUniqueKey: true, IsReadOnly: true },
101
+ { Name: 'FirstName', Label: 'First Name', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
102
+ { Name: 'LastName', Label: 'Last Name', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
103
+ { Name: 'EmailAddr', Label: 'Email', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
104
+ { Name: 'MemberTypeCode', Label: 'Member Type Code', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
105
+ { Name: 'Status', Label: 'Status', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
106
+ { Name: 'Organization', Label: 'Organization', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
107
+ { Name: 'Phone', Label: 'Phone', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
108
+ { Name: 'Address1', Label: 'Address 1', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
109
+ { Name: 'Address2', Label: 'Address 2', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
110
+ { Name: 'City', Label: 'City', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
111
+ { Name: 'State', Label: 'State', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
112
+ { Name: 'PostalCode', Label: 'Postal Code', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
113
+ { Name: 'Country', Label: 'Country', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
114
+ { Name: 'Title', Label: 'Title', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
115
+ { Name: 'JoinDate', Label: 'Join Date', DataType: 'datetime', IsRequired: false, IsUniqueKey: false, IsReadOnly: true },
116
+ { Name: 'RenewalDate', Label: 'Renewal Date', DataType: 'datetime', IsRequired: false, IsUniqueKey: false, IsReadOnly: true },
117
+ { Name: 'ExpirationDate', Label: 'Expiration Date', DataType: 'datetime', IsRequired: false, IsUniqueKey: false, IsReadOnly: true },
118
+ { Name: 'MemberSinceDate', Label: 'Member Since', DataType: 'datetime', IsRequired: false, IsUniqueKey: false, IsReadOnly: true },
119
+ { Name: 'WebsiteUrl', Label: 'Website URL', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
120
+ ],
121
+ Events: [
122
+ { Name: 'EventId', Label: 'Event ID', DataType: 'integer', IsRequired: true, IsUniqueKey: true, IsReadOnly: true },
123
+ { Name: 'Name', Label: 'Event Name', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
124
+ { Name: 'Active', Label: 'Active', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
125
+ { Name: 'StartDate', Label: 'Start Date', DataType: 'datetime', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
126
+ { Name: 'EndDate', Label: 'End Date', DataType: 'datetime', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
127
+ { Name: 'StartTime', Label: 'Start Time', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
128
+ { Name: 'EndTime', Label: 'End Time', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
129
+ { Name: 'IsVirtual', Label: 'Is Virtual', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
130
+ { Name: 'VirtualMeetingType', Label: 'Virtual Meeting Type', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
131
+ ],
132
+ MemberTypes: [
133
+ { Name: 'ID', Label: 'Type ID', DataType: 'integer', IsRequired: true, IsUniqueKey: true, IsReadOnly: true },
134
+ { Name: 'TypeCode', Label: 'Type Code', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
135
+ { Name: 'Name', Label: 'Name', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
136
+ { Name: 'IsDefault', Label: 'Is Default', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
137
+ { Name: 'PresetType', Label: 'Preset Type', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
138
+ { Name: 'SortOrder', Label: 'Sort Order', DataType: 'integer', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
139
+ ],
140
+ Memberships: [
141
+ { Name: 'Id', Label: 'Membership ID', DataType: 'integer', IsRequired: true, IsUniqueKey: true, IsReadOnly: true },
142
+ { Name: 'Code', Label: 'Code', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
143
+ { Name: 'Name', Label: 'Name', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
144
+ { Name: 'DuesAmount', Label: 'Dues Amount', DataType: 'decimal', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
145
+ { Name: 'ProRatedDues', Label: 'Pro-Rated Dues', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
146
+ { Name: 'AllowMultipleOpenInvoices', Label: 'Allow Multiple Invoices', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
147
+ ],
148
+ Groups: [
149
+ { Name: 'Id', Label: 'Group ID', DataType: 'integer', IsRequired: true, IsUniqueKey: true, IsReadOnly: true },
150
+ { Name: 'Name', Label: 'Group Name', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
151
+ { Name: 'GroupTypeName', Label: 'Group Type', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: true },
152
+ { Name: 'GroupTypeId', Label: 'Group Type ID', DataType: 'integer', IsRequired: false, IsUniqueKey: false, IsReadOnly: true },
153
+ ],
154
+ Products: [
155
+ { Name: 'id', Label: 'Product ID', DataType: 'integer', IsRequired: true, IsUniqueKey: true, IsReadOnly: true },
156
+ { Name: 'description', Label: 'Description', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
157
+ { Name: 'amount', Label: 'Amount', DataType: 'decimal', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
158
+ { Name: 'weight', Label: 'Weight', DataType: 'decimal', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
159
+ { Name: 'taxRate', Label: 'Tax Rate', DataType: 'decimal', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
160
+ { Name: 'quantity', Label: 'Quantity', DataType: 'integer', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
161
+ { Name: 'ProductActive', Label: 'Active', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
162
+ { Name: 'IsFeatured', Label: 'Is Featured', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
163
+ { Name: 'ListInStore', Label: 'List In Store', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
164
+ { Name: 'taxable', Label: 'Taxable', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
165
+ ],
166
+ DonationFunds: [
167
+ { Name: 'fundId', Label: 'Fund ID', DataType: 'integer', IsRequired: true, IsUniqueKey: true, IsReadOnly: true },
168
+ { Name: 'fundName', Label: 'Fund Name', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
169
+ { Name: 'fundOptionsCount', Label: 'Options Count', DataType: 'integer', IsRequired: false, IsUniqueKey: false, IsReadOnly: true },
170
+ ],
171
+ Certifications: [
172
+ { Name: 'CertificationID', Label: 'Certification ID', DataType: 'string', IsRequired: true, IsUniqueKey: true, IsReadOnly: true },
173
+ { Name: 'ID', Label: 'ID', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: true },
174
+ { Name: 'Name', Label: 'Name', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
175
+ { Name: 'IsActive', Label: 'Is Active', DataType: 'boolean', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
176
+ { Name: 'CEUsRequired', Label: 'CEUs Required', DataType: 'integer', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
177
+ { Name: 'Code', Label: 'Code', DataType: 'string', IsRequired: false, IsUniqueKey: false, IsReadOnly: false },
178
+ ],
179
+ };
180
+ // ─── Connector Implementation ───────────────────────────────────
181
+ /**
182
+ * Connector for the YourMembership (YM) AMS REST API.
183
+ *
184
+ * Auth flow:
185
+ * 1. POST /Ams/Authenticate with credentials + ClientID
186
+ * 2. Receive SessionId
187
+ * 3. Pass SessionId as X-SS-ID header on all data requests
188
+ *
189
+ * Configuration JSON: { "ClientID": "25363", "APIKey": "...", "APIPassword": "..." }
190
+ */
191
+ let YourMembershipConnector = class YourMembershipConnector extends BaseIntegrationConnector {
192
+ constructor() {
193
+ super(...arguments);
194
+ /** Session cache keyed by ClientID */
195
+ this.sessionCache = new Map();
196
+ }
197
+ // ─── Configuration parsing ───────────────────────────────────
198
+ /**
199
+ * Parses the Configuration JSON from a CompanyIntegration entity.
200
+ */
201
+ ParseConfig(companyIntegration) {
202
+ const configJson = companyIntegration.Get('Configuration');
203
+ if (!configJson) {
204
+ throw new Error('CompanyIntegration.Configuration is null or empty');
205
+ }
206
+ const parsed = JSON.parse(configJson);
207
+ const clientId = parsed['ClientID'];
208
+ const apiKey = parsed['APIKey'];
209
+ const apiPassword = parsed['APIPassword'];
210
+ if (!clientId || !apiKey || !apiPassword) {
211
+ throw new Error('Configuration JSON must contain ClientID, APIKey, and APIPassword');
212
+ }
213
+ return { ClientID: clientId, APIKey: apiKey, APIPassword: apiPassword };
214
+ }
215
+ // ─── Session management ──────────────────────────────────────
216
+ /** Obtains or reuses a YM session for the given credentials. */
217
+ async GetSession(config) {
218
+ const cached = this.sessionCache.get(config.ClientID);
219
+ if (cached && (Date.now() - cached.CreatedAt) < SESSION_TTL_MS) {
220
+ return cached.SessionId;
221
+ }
222
+ return this.CreateSession(config);
223
+ }
224
+ /** Creates a new YM session via the Authenticate endpoint. */
225
+ async CreateSession(config) {
226
+ const response = await fetch(`${YM_API_BASE}/Ams/Authenticate`, {
227
+ method: 'POST',
228
+ headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
229
+ body: JSON.stringify({
230
+ provider: 'credentials',
231
+ UserName: config.APIKey,
232
+ Password: config.APIPassword,
233
+ UserType: 'Admin',
234
+ ClientID: Number(config.ClientID),
235
+ }),
236
+ });
237
+ if (!response.ok) {
238
+ throw new Error(`YM authentication failed: ${response.status} ${response.statusText}`);
239
+ }
240
+ const json = await response.json();
241
+ if (json.ResponseStatus?.ErrorCode && json.ResponseStatus.ErrorCode !== 'None') {
242
+ throw new Error(`YM auth error: ${json.ResponseStatus.Message ?? json.ResponseStatus.ErrorCode}`);
243
+ }
244
+ if (!json.SessionId) {
245
+ throw new Error('YM auth: No SessionId returned');
246
+ }
247
+ this.sessionCache.set(config.ClientID, {
248
+ SessionId: json.SessionId,
249
+ CreatedAt: Date.now(),
250
+ });
251
+ return json.SessionId;
252
+ }
253
+ /** Invalidates a cached session so the next request re-authenticates. */
254
+ InvalidateSession(clientId) {
255
+ this.sessionCache.delete(clientId);
256
+ }
257
+ // ─── HTTP helper ─────────────────────────────────────────────
258
+ /**
259
+ * Makes a GET request to a YM API endpoint using session auth.
260
+ * Retries once on 401 (session expiry).
261
+ */
262
+ async MakeRequest(config, endpoint, queryParams) {
263
+ const sessionId = await this.GetSession(config);
264
+ const url = this.BuildUrl(config.ClientID, endpoint, queryParams);
265
+ let response = await this.FetchWithSession(url, sessionId);
266
+ if (response.status === 401) {
267
+ this.InvalidateSession(config.ClientID);
268
+ const newSessionId = await this.GetSession(config);
269
+ response = await this.FetchWithSession(url, newSessionId);
270
+ }
271
+ if (!response.ok) {
272
+ throw new Error(`YM API error for ${endpoint}: ${response.status} ${response.statusText}`);
273
+ }
274
+ const json = await response.json();
275
+ this.CheckResponseError(json, endpoint);
276
+ return json;
277
+ }
278
+ async FetchWithSession(url, sessionId) {
279
+ return fetch(url, {
280
+ method: 'GET',
281
+ headers: { 'X-SS-ID': sessionId, 'Accept': 'application/json' },
282
+ });
283
+ }
284
+ BuildUrl(clientId, endpoint, queryParams) {
285
+ const base = `${YM_API_BASE}/Ams/${clientId}/${endpoint}`;
286
+ if (!queryParams || Object.keys(queryParams).length === 0) {
287
+ return base;
288
+ }
289
+ const qs = new URLSearchParams(queryParams).toString();
290
+ return `${base}?${qs}`;
291
+ }
292
+ CheckResponseError(json, endpoint) {
293
+ const rs = json['ResponseStatus'];
294
+ if (rs?.ErrorCode && rs.ErrorCode !== 'None' && rs.ErrorCode !== '') {
295
+ throw new Error(`YM API error for ${endpoint}: ${rs.Message ?? rs.ErrorCode}`);
296
+ }
297
+ }
298
+ // ─── BaseIntegrationConnector implementation ─────────────────
299
+ /** Tests connectivity by authenticating and fetching ClientConfig. */
300
+ async TestConnection(companyIntegration, _contextUser) {
301
+ try {
302
+ const config = this.ParseConfig(companyIntegration);
303
+ await this.GetSession(config);
304
+ const clientConfig = await this.MakeRequest(config, 'ClientConfig');
305
+ const siteUrl = clientConfig['SiteUrl'] ?? 'Unknown';
306
+ return {
307
+ Success: true,
308
+ Message: `Connected to YourMembership site: ${siteUrl}`,
309
+ ServerVersion: `ClientID ${config.ClientID}`,
310
+ };
311
+ }
312
+ catch (err) {
313
+ const message = err instanceof Error ? err.message : String(err);
314
+ return { Success: false, Message: `Connection failed: ${message}` };
315
+ }
316
+ }
317
+ /** Returns all known YM object types available for integration. */
318
+ async DiscoverObjects(_companyIntegration, _contextUser) {
319
+ return Object.entries(YM_OBJECTS).map(([name, cfg]) => ({
320
+ Name: name,
321
+ Label: cfg.Label,
322
+ SupportsIncrementalSync: cfg.SupportsIncrementalSync,
323
+ SupportsWrite: false,
324
+ }));
325
+ }
326
+ /** Returns the known field schema for a YM object. */
327
+ async DiscoverFields(_companyIntegration, objectName, _contextUser) {
328
+ return YM_FIELD_SCHEMAS[objectName] ?? [];
329
+ }
330
+ /**
331
+ * Fetches a batch of records from a YM API endpoint.
332
+ *
333
+ * For paginated endpoints (Members, Events, Certifications), uses
334
+ * PageSize/PageNumber. The watermark tracks the current page number
335
+ * for resuming large fetches across batches.
336
+ *
337
+ * For non-paginated endpoints (MemberTypes, Memberships, Groups, Products),
338
+ * fetches all data in one call.
339
+ */
340
+ async FetchChanges(ctx) {
341
+ const config = this.ParseConfig(ctx.CompanyIntegration);
342
+ const objectConfig = YM_OBJECTS[ctx.ObjectName];
343
+ if (!objectConfig) {
344
+ throw new Error(`Unknown YourMembership object: ${ctx.ObjectName}`);
345
+ }
346
+ if (ctx.ObjectName === 'Groups') {
347
+ return this.FetchGroups(config, ctx);
348
+ }
349
+ if (objectConfig.ResponseDataKey === null) {
350
+ return this.FetchRawArray(config, ctx, objectConfig);
351
+ }
352
+ if (objectConfig.SupportsPagination) {
353
+ return this.FetchPaginated(config, ctx, objectConfig);
354
+ }
355
+ return this.FetchAll(config, ctx, objectConfig);
356
+ }
357
+ /** Fetches data from a paginated YM endpoint. Watermark = page number. */
358
+ async FetchPaginated(config, ctx, objectConfig) {
359
+ const pageNumber = ctx.WatermarkValue ? Number(ctx.WatermarkValue) : 1;
360
+ const pageSize = Math.min(ctx.BatchSize, objectConfig.DefaultPageSize);
361
+ const queryParams = {
362
+ PageSize: String(pageSize),
363
+ PageNumber: String(pageNumber),
364
+ ...(objectConfig.DefaultQueryParams ?? {}),
365
+ };
366
+ const json = await this.MakeRequest(config, objectConfig.Path, queryParams);
367
+ const dataArray = json[objectConfig.ResponseDataKey];
368
+ if (!dataArray || !Array.isArray(dataArray)) {
369
+ return { Records: [], HasMore: false };
370
+ }
371
+ const records = dataArray.map((item) => this.BuildRecord(item, objectConfig.PKFields, ctx.ObjectName));
372
+ const hasMore = records.length >= pageSize;
373
+ const newWatermark = hasMore ? String(pageNumber + 1) : undefined;
374
+ return { Records: records, HasMore: hasMore, NewWatermarkValue: newWatermark };
375
+ }
376
+ /** Fetches all data from a non-paginated endpoint in a single request. */
377
+ async FetchAll(config, ctx, objectConfig) {
378
+ const json = await this.MakeRequest(config, objectConfig.Path, objectConfig.DefaultQueryParams);
379
+ const dataArray = json[objectConfig.ResponseDataKey];
380
+ if (!dataArray || !Array.isArray(dataArray)) {
381
+ return { Records: [], HasMore: false };
382
+ }
383
+ const records = dataArray.map((item) => this.BuildRecord(item, objectConfig.PKFields, ctx.ObjectName));
384
+ return { Records: records, HasMore: false };
385
+ }
386
+ /** Fetches endpoints that return a raw JSON array (e.g., Products). */
387
+ async FetchRawArray(config, ctx, objectConfig) {
388
+ const sessionId = await this.GetSession(config);
389
+ const url = this.BuildUrl(config.ClientID, objectConfig.Path, objectConfig.DefaultQueryParams);
390
+ const response = await this.FetchWithSession(url, sessionId);
391
+ if (!response.ok) {
392
+ throw new Error(`YM API error for ${objectConfig.Path}: ${response.status}`);
393
+ }
394
+ const data = await response.json();
395
+ if (!Array.isArray(data)) {
396
+ return { Records: [], HasMore: false };
397
+ }
398
+ const records = data.map((item) => this.BuildRecord(item, objectConfig.PKFields, ctx.ObjectName));
399
+ return { Records: records, HasMore: false };
400
+ }
401
+ /**
402
+ * Fetches Groups, which have a nested structure: GroupTypeList → Groups.
403
+ * Flattens into individual group records with the GroupType name attached.
404
+ */
405
+ async FetchGroups(config, ctx) {
406
+ const json = await this.MakeRequest(config, 'Groups');
407
+ const typeList = json['GroupTypeList'];
408
+ if (!typeList || !Array.isArray(typeList)) {
409
+ return { Records: [], HasMore: false };
410
+ }
411
+ const records = [];
412
+ for (const groupType of typeList) {
413
+ const typeName = groupType.TypeName ?? '';
414
+ for (const group of groupType.Groups ?? []) {
415
+ records.push({
416
+ ExternalID: String(group.Id),
417
+ ObjectType: ctx.ObjectName,
418
+ Fields: { ...group, GroupTypeName: typeName, GroupTypeId: groupType.Id },
419
+ });
420
+ }
421
+ }
422
+ return { Records: records, HasMore: false };
423
+ }
424
+ // ─── Default field mappings ──────────────────────────────────
425
+ /** Returns suggested default field mappings for YM objects to MJ entities. */
426
+ GetDefaultFieldMappings(objectName, _entityName) {
427
+ switch (objectName) {
428
+ case 'Members':
429
+ return [
430
+ { SourceFieldName: 'EmailAddr', DestinationFieldName: 'Email', IsKeyField: true },
431
+ { SourceFieldName: 'FirstName', DestinationFieldName: 'FirstName' },
432
+ { SourceFieldName: 'LastName', DestinationFieldName: 'LastName' },
433
+ { SourceFieldName: 'Phone', DestinationFieldName: 'Phone' },
434
+ { SourceFieldName: 'Organization', DestinationFieldName: 'CompanyName' },
435
+ { SourceFieldName: 'MemberTypeCode', DestinationFieldName: 'Status' },
436
+ ];
437
+ case 'Events':
438
+ return [
439
+ { SourceFieldName: 'EventId', DestinationFieldName: 'ID', IsKeyField: true },
440
+ { SourceFieldName: 'Name', DestinationFieldName: 'Name' },
441
+ { SourceFieldName: 'StartDate', DestinationFieldName: 'StartDate' },
442
+ { SourceFieldName: 'EndDate', DestinationFieldName: 'EndDate' },
443
+ ];
444
+ default:
445
+ return [];
446
+ }
447
+ }
448
+ // ─── Record building ─────────────────────────────────────────
449
+ BuildRecord(item, pkFields, objectType) {
450
+ const externalId = pkFields.map(pk => String(item[pk] ?? '')).join('|');
451
+ return {
452
+ ExternalID: externalId,
453
+ ObjectType: objectType,
454
+ Fields: { ...item },
455
+ };
456
+ }
457
+ };
458
+ YourMembershipConnector = __decorate([
459
+ RegisterClass(BaseIntegrationConnector, 'YourMembershipConnector')
460
+ ], YourMembershipConnector);
461
+ export { YourMembershipConnector };
462
+ //# sourceMappingURL=YourMembershipConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YourMembershipConnector.js","sourceRoot":"","sources":["../src/YourMembershipConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { RelationalDBConnector, type ConnectionConfig } from './RelationalDBConnector.js';
2
+ export { HubSpotConnector } from './HubSpotConnector.js';
3
+ export { SalesforceConnector } from './SalesforceConnector.js';
4
+ export { YourMembershipConnector, type YMConnectionConfig } from './YourMembershipConnector.js';
5
+ export { FileFeedConnector, parseCsvLine } from './FileFeedConnector.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { RelationalDBConnector } from './RelationalDBConnector.js';
2
+ export { HubSpotConnector } from './HubSpotConnector.js';
3
+ export { SalesforceConnector } from './SalesforceConnector.js';
4
+ export { YourMembershipConnector } from './YourMembershipConnector.js';
5
+ export { FileFeedConnector, parseCsvLine } from './FileFeedConnector.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAA2B,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,34 @@
1
1
  {
2
2
  "name": "@memberjunction/integration-connectors",
3
- "version": "0.0.1",
4
- "description": "OIDC trusted publishing setup package for @memberjunction/integration-connectors",
5
- "keywords": [
6
- "oidc",
7
- "trusted-publishing",
8
- "setup"
9
- ]
3
+ "type": "module",
4
+ "version": "5.8.0",
5
+ "description": "MemberJunction Integration Connectors - HubSpot, Salesforce, YourMembership, and FileFeed connectors",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "/dist"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc && tsc-alias -f",
13
+ "test": "vitest run",
14
+ "test:watch": "vitest"
15
+ },
16
+ "dependencies": {
17
+ "@memberjunction/core": "5.8.0",
18
+ "@memberjunction/core-entities": "5.8.0",
19
+ "@memberjunction/global": "5.8.0",
20
+ "@memberjunction/integration-engine": "5.8.0",
21
+ "mssql": "^12.2.0"
22
+ },
23
+ "devDependencies": {
24
+ "typescript": "^5.9.3",
25
+ "tsc-alias": "^1.8.16",
26
+ "vitest": "^4.0.18"
27
+ },
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/MemberJunction/MJ"
31
+ },
32
+ "author": "MemberJunction.com",
33
+ "license": "ISC"
10
34
  }