@memberjunction/integration-connectors 5.11.0 → 5.13.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 @@
1
+ {"version":3,"file":"WicketConnector.js","sourceRoot":"","sources":["../src/WicketConnector.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,18 @@ export interface YMConnectionConfig {
10
10
  APIKey: string;
11
11
  /** YM API password (used as Password for session auth) */
12
12
  APIPassword: string;
13
+ /** Maximum retries for rate-limited or failed requests. Default: 5 */
14
+ MaxRetries?: number;
15
+ /** HTTP request timeout in milliseconds. Default: 30000 */
16
+ RequestTimeoutMs?: number;
17
+ /** Minimum milliseconds between API requests to avoid rate limiting. Default: 600 */
18
+ MinRequestIntervalMs?: number;
19
+ /** Number of members to enrich per batch before writing to DB. Default: 500 */
20
+ EnrichBatchSize?: number;
21
+ /** JSON parsing timeout in milliseconds. Default: 30000 */
22
+ JsonTimeoutMs?: number;
23
+ /** Detail enrichment timeout per record in milliseconds. Default: 45000 */
24
+ EnrichTimeoutMs?: number;
13
25
  }
14
26
  /**
15
27
  * Connector for the YourMembership (YM) AMS REST API.
@@ -22,19 +34,42 @@ export interface YMConnectionConfig {
22
34
  * 2. Receive SessionId
23
35
  * 3. Pass SessionId as X-SS-ID header on all data requests
24
36
  *
25
- * Configuration JSON: { "ClientID": "25363", "APIKey": "...", "APIPassword": "..." }
37
+ * Configuration JSON (required + optional overrides):
38
+ * {
39
+ * "ClientID": "25363",
40
+ * "APIKey": "...",
41
+ * "APIPassword": "...",
42
+ * "MaxRetries": 5, // optional, default: 5
43
+ * "RequestTimeoutMs": 30000, // optional, default: 30000
44
+ * "MinRequestIntervalMs": 600, // optional, default: 600
45
+ * "EnrichBatchSize": 500, // optional, default: 500
46
+ * "JsonTimeoutMs": 30000, // optional, default: 30000
47
+ * "EnrichTimeoutMs": 45000 // optional, default: 45000
48
+ * }
26
49
  */
27
50
  export declare class YourMembershipConnector extends BaseRESTIntegrationConnector {
28
51
  /** Session cache keyed by ClientID */
29
52
  private sessionCache;
30
53
  /** Timestamp of the last API request, used for throttling */
31
54
  private lastRequestTime;
32
- protected Authenticate(companyIntegration: MJCompanyIntegrationEntity): Promise<RESTAuthContext>;
55
+ /** Resolved config (populated after first Authenticate call) */
56
+ private _config;
57
+ /** Current adaptive request interval — increases on 429, recovers toward resolved MIN */
58
+ private currentRequestIntervalMs;
59
+ private get effectiveMaxRetries();
60
+ private get effectiveRequestTimeoutMs();
61
+ private get effectiveMinRequestIntervalMs();
62
+ private get effectiveEnrichBatchSize();
63
+ private get effectiveJsonTimeoutMs();
64
+ private get effectiveEnrichTimeoutMs();
65
+ /** Cache of the filtered member list pending enrichment, shared across batch calls */
66
+ private memberFetchCache;
67
+ protected Authenticate(companyIntegration: MJCompanyIntegrationEntity, contextUser: UserInfo): Promise<RESTAuthContext>;
33
68
  protected BuildHeaders(auth: RESTAuthContext): Record<string, string>;
34
69
  protected MakeHTTPRequest(auth: RESTAuthContext, url: string, method: string, headers: Record<string, string>, _body?: unknown): Promise<RESTResponse>;
35
70
  protected NormalizeResponse(rawBody: unknown, responseDataKey: string | null): Record<string, unknown>[];
36
71
  protected ExtractPaginationInfo(rawBody: unknown, paginationType: PaginationType, currentPage: number, currentOffset: number, pageSize: number): PaginationState;
37
- protected GetBaseURL(companyIntegration: MJCompanyIntegrationEntity): string;
72
+ protected GetBaseURL(companyIntegration: MJCompanyIntegrationEntity, auth: RESTAuthContext): string;
38
73
  /**
39
74
  * Overrides base pagination URL building to use YM's expected parameter names:
40
75
  * - PageNumber type: `PageNumber` / `PageSize` (not `page` / `pageSize`)
@@ -45,20 +80,26 @@ export declare class YourMembershipConnector extends BaseRESTIntegrationConnecto
45
80
  /**
46
81
  * Overrides base FetchChanges to handle YM-specific edge cases:
47
82
  * - Groups/GroupTypes: nested GroupTypeList response needs custom flattening
48
- * - Members: client-side watermark filtering + selective detail enrichment
83
+ * - Members: client-side watermark filtering + batched detail enrichment
49
84
  *
50
85
  * The MemberList API returns all members every time (no server-side date filter),
51
- * but each record includes a `LastUpdated` field. We pull the full list, filter
52
- * to only records changed since the watermark, and only call the expensive
53
- * per-member detail endpoint for those changed records.
86
+ * but each record includes a `LastUpdated` field. We pull the full list once,
87
+ * filter to only records changed since the watermark, cache that filtered list,
88
+ * and enrich + return ENRICH_BATCH_SIZE records per FetchChanges call so the
89
+ * engine writes each batch to the database before moving to the next.
54
90
  */
55
91
  FetchChanges(ctx: FetchContext): Promise<FetchBatchResult>;
56
92
  /**
57
- * Filters the full member list to only records changed since the watermark,
58
- * then enriches only those changed records via the detail endpoint.
59
- * Returns a new watermark based on the latest LastUpdated value seen.
93
+ * Fetches and enriches members in batches of ENRICH_BATCH_SIZE.
94
+ *
95
+ * On the first call (CurrentOffset = 0 or undefined), fetches the full member
96
+ * list via the base class, filters by watermark, and caches the result.
97
+ * On subsequent calls, uses the cached list and enriches the next slice.
98
+ * Returns HasMore=true until all records are enriched.
99
+ * Only sets NewWatermarkValue on the final batch so the watermark is only
100
+ * updated once all records have been written to the database.
60
101
  */
61
- private FetchMembersWithWatermark;
102
+ private FetchMemberBatch;
62
103
  /**
63
104
  * Filters records by comparing a date field against a watermark timestamp.
64
105
  * Returns only records where the date field is newer than the watermark,
@@ -82,9 +123,14 @@ export declare class YourMembershipConnector extends BaseRESTIntegrationConnecto
82
123
  /** Flattens nested GroupTypeList → Groups into flat group records. */
83
124
  private FlattenGroupRecords;
84
125
  /**
85
- * Enriches Members records with full profile data from the detail endpoint.
126
+ * Enriches a slice of member records with full profile data from the detail endpoint.
86
127
  * The list endpoint returns sparse data (name, email); the detail endpoint
87
128
  * returns full address, phone, custom fields, etc.
129
+ *
130
+ * @param ctx - Fetch context for auth
131
+ * @param records - The slice of records to enrich
132
+ * @param batchOffset - Starting index of this slice within the overall set (for progress logging)
133
+ * @param overallTotal - Total number of records being enriched across all batches (for progress logging)
88
134
  */
89
135
  private EnrichMembersWithDetails;
90
136
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"YourMembershipConnector.d.ts","sourceRoot":"","sources":["../src/YourMembershipConnector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"YourMembershipConnector.d.ts","sourceRoot":"","sources":["../src/YourMembershipConnector.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,9 @@ const MAX_RETRIES = 5;
16
16
  /** HTTP request timeout in milliseconds */
17
17
  const REQUEST_TIMEOUT_MS = 30000;
18
18
  /** Minimum milliseconds between API requests to avoid rate limiting */
19
- const MIN_REQUEST_INTERVAL_MS = 350;
19
+ const MIN_REQUEST_INTERVAL_MS = 600;
20
+ /** Number of members to enrich per batch before writing to DB */
21
+ const ENRICH_BATCH_SIZE = 500;
20
22
  /** JSON parsing timeout in milliseconds */
21
23
  const JSON_TIMEOUT_MS = 30000;
22
24
  /** Detail enrichment timeout per record in milliseconds */
@@ -38,7 +40,18 @@ const METADATA_KEYS = new Set([
38
40
  * 2. Receive SessionId
39
41
  * 3. Pass SessionId as X-SS-ID header on all data requests
40
42
  *
41
- * Configuration JSON: { "ClientID": "25363", "APIKey": "...", "APIPassword": "..." }
43
+ * Configuration JSON (required + optional overrides):
44
+ * {
45
+ * "ClientID": "25363",
46
+ * "APIKey": "...",
47
+ * "APIPassword": "...",
48
+ * "MaxRetries": 5, // optional, default: 5
49
+ * "RequestTimeoutMs": 30000, // optional, default: 30000
50
+ * "MinRequestIntervalMs": 600, // optional, default: 600
51
+ * "EnrichBatchSize": 500, // optional, default: 500
52
+ * "JsonTimeoutMs": 30000, // optional, default: 30000
53
+ * "EnrichTimeoutMs": 45000 // optional, default: 45000
54
+ * }
42
55
  */
43
56
  let YourMembershipConnector = class YourMembershipConnector extends BaseRESTIntegrationConnector {
44
57
  constructor() {
@@ -47,11 +60,28 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
47
60
  this.sessionCache = new Map();
48
61
  /** Timestamp of the last API request, used for throttling */
49
62
  this.lastRequestTime = 0;
50
- }
63
+ /** Resolved config (populated after first Authenticate call) */
64
+ this._config = null;
65
+ /** Current adaptive request interval — increases on 429, recovers toward resolved MIN */
66
+ this.currentRequestIntervalMs = MIN_REQUEST_INTERVAL_MS;
67
+ /** Cache of the filtered member list pending enrichment, shared across batch calls */
68
+ this.memberFetchCache = null;
69
+ }
70
+ // ── Per-instance config accessors (fall back to module-level defaults) ──
71
+ get effectiveMaxRetries() { return this._config?.MaxRetries ?? MAX_RETRIES; }
72
+ get effectiveRequestTimeoutMs() { return this._config?.RequestTimeoutMs ?? REQUEST_TIMEOUT_MS; }
73
+ get effectiveMinRequestIntervalMs() { return this._config?.MinRequestIntervalMs ?? MIN_REQUEST_INTERVAL_MS; }
74
+ get effectiveEnrichBatchSize() { return this._config?.EnrichBatchSize ?? ENRICH_BATCH_SIZE; }
75
+ get effectiveJsonTimeoutMs() { return this._config?.JsonTimeoutMs ?? JSON_TIMEOUT_MS; }
76
+ get effectiveEnrichTimeoutMs() { return this._config?.EnrichTimeoutMs ?? ENRICH_TIMEOUT_MS; }
51
77
  // ─── Abstract method implementations (BaseRESTIntegrationConnector) ──
52
- async Authenticate(companyIntegration) {
53
- const config = await this.ParseConfig(companyIntegration);
78
+ async Authenticate(companyIntegration, contextUser) {
79
+ console.log(`[YM] Authenticating...`);
80
+ const config = await this.ParseConfig(companyIntegration, contextUser);
81
+ this._config = config;
82
+ this.currentRequestIntervalMs = this.effectiveMinRequestIntervalMs;
54
83
  const sessionId = await this.GetSession(config);
84
+ console.log(`[YM] Authenticated, sessionId length: ${sessionId.length}`);
55
85
  const auth = { SessionID: sessionId, Config: config };
56
86
  return auth;
57
87
  }
@@ -61,19 +91,20 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
61
91
  async MakeHTTPRequest(auth, url, method, headers, _body) {
62
92
  const ymAuth = auth;
63
93
  const currentHeaders = { ...headers };
64
- // Throttle: ensure minimum interval between requests
94
+ // Throttle: ensure adaptive minimum interval between requests
65
95
  const elapsed = Date.now() - this.lastRequestTime;
66
- if (elapsed < MIN_REQUEST_INTERVAL_MS) {
67
- await this.Sleep(MIN_REQUEST_INTERVAL_MS - elapsed);
96
+ if (elapsed < this.currentRequestIntervalMs) {
97
+ await this.Sleep(this.currentRequestIntervalMs - elapsed);
68
98
  }
69
- for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
99
+ const maxRetries = this.effectiveMaxRetries;
100
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
70
101
  let response;
71
102
  try {
72
103
  response = await this.FetchWithTimeout(url, method, currentHeaders);
73
104
  }
74
105
  catch (err) {
75
106
  if (this.IsTimeoutError(err)) {
76
- console.warn(`YM timeout on ${url}, re-authenticating (attempt ${attempt + 1}/${MAX_RETRIES})`);
107
+ console.warn(`YM timeout on ${url}, re-authenticating (attempt ${attempt + 1}/${maxRetries})`);
77
108
  await this.RefreshSession(ymAuth, currentHeaders);
78
109
  continue;
79
110
  }
@@ -85,15 +116,21 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
85
116
  }
86
117
  if (response.status === 429) {
87
118
  const delayMs = this.CalculateRetryDelay(response, attempt);
88
- console.warn(`YM rate limited (429), retrying in ${delayMs}ms (attempt ${attempt + 1}/${MAX_RETRIES})`);
119
+ this.currentRequestIntervalMs = Math.min(this.currentRequestIntervalMs * 2, 10000);
120
+ console.warn(`YM rate limited (429), retrying in ${delayMs}ms (attempt ${attempt + 1}/${maxRetries}). Interval adjusted to ${this.currentRequestIntervalMs}ms`);
89
121
  await this.Sleep(delayMs);
90
122
  continue;
91
123
  }
92
124
  this.lastRequestTime = Date.now();
93
- const body = await this.JsonWithTimeout(response, JSON_TIMEOUT_MS);
125
+ // Gradually recover interval toward configured minimum on successful requests
126
+ const minInterval = this.effectiveMinRequestIntervalMs;
127
+ if (this.currentRequestIntervalMs > minInterval) {
128
+ this.currentRequestIntervalMs = Math.max(this.currentRequestIntervalMs - 50, minInterval);
129
+ }
130
+ const body = await this.JsonWithTimeout(response, this.effectiveJsonTimeoutMs);
94
131
  return this.BuildRESTResponse(response, body);
95
132
  }
96
- throw new Error(`YM API request failed after ${MAX_RETRIES} retries: ${url}`);
133
+ throw new Error(`YM API request failed after ${maxRetries} retries: ${url}`);
97
134
  }
98
135
  NormalizeResponse(rawBody, responseDataKey) {
99
136
  // Check for YM API-level errors in the response envelope
@@ -127,7 +164,11 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
127
164
  NextOffset: paginationType === 'Offset' ? currentOffset + recordCount : undefined,
128
165
  };
129
166
  }
130
- GetBaseURL(companyIntegration) {
167
+ GetBaseURL(companyIntegration, auth) {
168
+ const ymAuth = auth;
169
+ if (ymAuth.Config?.ClientID) {
170
+ return `${YM_API_BASE}/Ams/${ymAuth.Config.ClientID}`;
171
+ }
131
172
  const configJson = companyIntegration.Get('Configuration');
132
173
  if (configJson) {
133
174
  const parsed = JSON.parse(configJson);
@@ -163,45 +204,51 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
163
204
  /**
164
205
  * Overrides base FetchChanges to handle YM-specific edge cases:
165
206
  * - Groups/GroupTypes: nested GroupTypeList response needs custom flattening
166
- * - Members: client-side watermark filtering + selective detail enrichment
207
+ * - Members: client-side watermark filtering + batched detail enrichment
167
208
  *
168
209
  * The MemberList API returns all members every time (no server-side date filter),
169
- * but each record includes a `LastUpdated` field. We pull the full list, filter
170
- * to only records changed since the watermark, and only call the expensive
171
- * per-member detail endpoint for those changed records.
210
+ * but each record includes a `LastUpdated` field. We pull the full list once,
211
+ * filter to only records changed since the watermark, cache that filtered list,
212
+ * and enrich + return ENRICH_BATCH_SIZE records per FetchChanges call so the
213
+ * engine writes each batch to the database before moving to the next.
172
214
  */
173
215
  async FetchChanges(ctx) {
216
+ console.log(`[YM] FetchChanges called for '${ctx.ObjectName}' (batchSize=${ctx.BatchSize}, watermark=${ctx.WatermarkValue ?? 'none'}, offset=${ctx.CurrentOffset ?? 'none'})`);
174
217
  if (ctx.ObjectName === 'Groups' || ctx.ObjectName === 'GroupTypes') {
175
218
  return this.FetchGroups(ctx);
176
219
  }
177
- const result = await super.FetchChanges(ctx);
178
- if (ctx.ObjectName === 'Members' && result.Records.length > 0) {
179
- return this.FetchMembersWithWatermark(ctx, result);
220
+ if (ctx.ObjectName === 'Members') {
221
+ return this.FetchMemberBatch(ctx);
180
222
  }
181
- return result;
223
+ return super.FetchChanges(ctx);
182
224
  }
183
225
  /**
184
- * Filters the full member list to only records changed since the watermark,
185
- * then enriches only those changed records via the detail endpoint.
186
- * Returns a new watermark based on the latest LastUpdated value seen.
226
+ * Fetches and enriches members in batches of ENRICH_BATCH_SIZE.
227
+ *
228
+ * On the first call (CurrentOffset = 0 or undefined), fetches the full member
229
+ * list via the base class, filters by watermark, and caches the result.
230
+ * On subsequent calls, uses the cached list and enriches the next slice.
231
+ * Returns HasMore=true until all records are enriched.
232
+ * Only sets NewWatermarkValue on the final batch so the watermark is only
233
+ * updated once all records have been written to the database.
187
234
  */
188
- async FetchMembersWithWatermark(ctx, fullResult) {
189
- const { changedRecords, newWatermark } = this.FilterByWatermark(fullResult.Records, ctx.WatermarkValue, 'LastUpdated');
190
- if (changedRecords.length === 0) {
191
- return {
192
- Records: [],
193
- HasMore: false,
194
- NewWatermarkValue: newWatermark ?? ctx.WatermarkValue ?? undefined,
195
- };
196
- }
197
- console.log(`[YM Members] ${changedRecords.length} of ${fullResult.Records.length} records changed since watermark`);
198
- const enriched = await this.EnrichMembersWithDetails(ctx, {
199
- Records: changedRecords,
200
- HasMore: false,
201
- });
235
+ async FetchMemberBatch(ctx) {
236
+ // Simple approach: fetch one page of member IDs, enrich them, return.
237
+ // The engine's outer loop handles pagination — it calls FetchChanges
238
+ // repeatedly with incrementing offsets until HasMore=false.
239
+ const pageResult = await super.FetchChanges(ctx);
240
+ if (pageResult.Records.length === 0) {
241
+ return pageResult;
242
+ }
243
+ console.log(`[YM Members] Fetched ${pageResult.Records.length} member IDs, enriching...`);
244
+ const enriched = await this.EnrichMembersWithDetails(ctx, pageResult.Records, ctx.CurrentOffset ?? 0, pageResult.Records.length);
202
245
  return {
203
- ...enriched,
204
- NewWatermarkValue: newWatermark ?? ctx.WatermarkValue ?? undefined,
246
+ Records: enriched,
247
+ HasMore: pageResult.HasMore,
248
+ NextOffset: pageResult.NextOffset,
249
+ NextPage: pageResult.NextPage,
250
+ NextCursor: pageResult.NextCursor,
251
+ NewWatermarkValue: !pageResult.HasMore ? pageResult.NewWatermarkValue : undefined,
205
252
  };
206
253
  }
207
254
  /**
@@ -361,7 +408,7 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
361
408
  * the type entries. When 'Groups', flattens into individual group records.
362
409
  */
363
410
  async FetchGroups(ctx) {
364
- const auth = await this.Authenticate(ctx.CompanyIntegration);
411
+ const auth = await this.Authenticate(ctx.CompanyIntegration, ctx.ContextUser);
365
412
  const json = await this.MakeYMRequest(auth, 'Groups');
366
413
  const typeList = json['GroupTypeList'];
367
414
  if (!typeList || !Array.isArray(typeList)) {
@@ -398,20 +445,32 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
398
445
  }
399
446
  // ─── Detail enrichment (Members) ─────────────────────────────────
400
447
  /**
401
- * Enriches Members records with full profile data from the detail endpoint.
448
+ * Enriches a slice of member records with full profile data from the detail endpoint.
402
449
  * The list endpoint returns sparse data (name, email); the detail endpoint
403
450
  * returns full address, phone, custom fields, etc.
451
+ *
452
+ * @param ctx - Fetch context for auth
453
+ * @param records - The slice of records to enrich
454
+ * @param batchOffset - Starting index of this slice within the overall set (for progress logging)
455
+ * @param overallTotal - Total number of records being enriched across all batches (for progress logging)
404
456
  */
405
- async EnrichMembersWithDetails(ctx, result) {
406
- const auth = await this.Authenticate(ctx.CompanyIntegration);
457
+ async EnrichMembersWithDetails(ctx, records, batchOffset, overallTotal) {
458
+ const auth = await this.Authenticate(ctx.CompanyIntegration, ctx.ContextUser);
407
459
  const concurrency = 3;
408
460
  const enriched = [];
409
- for (let i = 0; i < result.Records.length; i += concurrency) {
410
- const batch = result.Records.slice(i, i + concurrency);
411
- const results = await Promise.all(batch.map(record => this.EnrichSingleMember(auth, record)));
461
+ let lastLoggedPct = Math.floor((batchOffset / overallTotal) * 100);
462
+ for (let i = 0; i < records.length; i += concurrency) {
463
+ const chunk = records.slice(i, i + concurrency);
464
+ const results = await Promise.all(chunk.map(record => this.EnrichSingleMember(auth, record)));
412
465
  enriched.push(...results);
466
+ const doneOverall = batchOffset + enriched.length;
467
+ const pct = Math.floor((doneOverall / overallTotal) * 100);
468
+ if (pct >= lastLoggedPct + 1) {
469
+ lastLoggedPct = pct;
470
+ console.log(`[YM Members] Enriched ${doneOverall}/${overallTotal} (${pct}%)`);
471
+ }
413
472
  }
414
- return { ...result, Records: enriched };
473
+ return enriched;
415
474
  }
416
475
  /**
417
476
  * Fetches full detail data for a single member and merges it.
@@ -421,13 +480,14 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
421
480
  try {
422
481
  const detailPath = `Members/${record.ExternalID}`;
423
482
  const fetchPromise = this.MakeYMRequest(auth, detailPath);
424
- const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Detail fetch timed out for ${record.ExternalID}`)), ENRICH_TIMEOUT_MS));
483
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Detail fetch timed out for ${record.ExternalID}`)), this.effectiveEnrichTimeoutMs));
425
484
  const json = await Promise.race([fetchPromise, timeoutPromise]);
426
485
  const normalized = this.NormalizeMemberDetail(json);
427
486
  record.Fields = { ...record.Fields, ...normalized };
428
487
  }
429
- catch {
430
- // Keep list data if detail fetch fails
488
+ catch (err) {
489
+ const message = err instanceof Error ? err.message : String(err);
490
+ console.warn(`[YM Members] Failed to enrich member ${record.ExternalID}: ${message}`);
431
491
  }
432
492
  return record;
433
493
  }
@@ -513,7 +573,24 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
513
573
  if (!clientId || !apiKey || !apiPassword) {
514
574
  throw new Error('Configuration JSON must contain ClientID, APIKey, and APIPassword (any casing)');
515
575
  }
516
- return { ClientID: String(clientId), APIKey: apiKey, APIPassword: apiPassword };
576
+ const parseOptionalInt = (key) => {
577
+ const v = parsed[key];
578
+ if (v == null)
579
+ return undefined;
580
+ const n = Number(v);
581
+ return isNaN(n) ? undefined : Math.floor(n);
582
+ };
583
+ return {
584
+ ClientID: String(clientId),
585
+ APIKey: String(apiKey),
586
+ APIPassword: String(apiPassword),
587
+ MaxRetries: parseOptionalInt('MaxRetries'),
588
+ RequestTimeoutMs: parseOptionalInt('RequestTimeoutMs'),
589
+ MinRequestIntervalMs: parseOptionalInt('MinRequestIntervalMs'),
590
+ EnrichBatchSize: parseOptionalInt('EnrichBatchSize'),
591
+ JsonTimeoutMs: parseOptionalInt('JsonTimeoutMs'),
592
+ EnrichTimeoutMs: parseOptionalInt('EnrichTimeoutMs'),
593
+ };
517
594
  }
518
595
  // ─── Session management ──────────────────────────────────────────
519
596
  /** Obtains or reuses a YM session for the given credentials. */
@@ -531,8 +608,8 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
531
608
  headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
532
609
  body: JSON.stringify({
533
610
  provider: 'credentials',
534
- UserName: config.APIPassword,
535
- Password: config.APIKey,
611
+ UserName: config.APIKey,
612
+ Password: config.APIPassword,
536
613
  UserType: 'Admin',
537
614
  ClientID: Number(config.ClientID),
538
615
  }),
@@ -581,13 +658,14 @@ let YourMembershipConnector = class YourMembershipConnector extends BaseRESTInte
581
658
  /** Executes an HTTP request with a timeout. */
582
659
  async FetchWithTimeout(url, method, headers) {
583
660
  const controller = new AbortController();
584
- const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
661
+ const timeoutMs = this.effectiveRequestTimeoutMs;
662
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
585
663
  try {
586
664
  return await fetch(url, { method, headers, signal: controller.signal });
587
665
  }
588
666
  catch (err) {
589
667
  if (err instanceof Error && err.name === 'AbortError') {
590
- throw new Error(`YM API request timed out after ${REQUEST_TIMEOUT_MS / 1000}s: ${url}`);
668
+ throw new Error(`YM API request timed out after ${timeoutMs / 1000}s: ${url}`);
591
669
  }
592
670
  throw err;
593
671
  }