@memberjunction/integration-engine 5.41.0 → 5.43.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 +51 -0
- package/dist/BaseIntegrationConnector.d.ts +109 -0
- package/dist/BaseIntegrationConnector.d.ts.map +1 -1
- package/dist/BaseIntegrationConnector.js +308 -93
- package/dist/BaseIntegrationConnector.js.map +1 -1
- package/dist/BaseRESTIntegrationConnector.d.ts +36 -0
- package/dist/BaseRESTIntegrationConnector.d.ts.map +1 -1
- package/dist/BaseRESTIntegrationConnector.js +228 -28
- package/dist/BaseRESTIntegrationConnector.js.map +1 -1
- package/dist/ContentHash.d.ts +22 -0
- package/dist/ContentHash.d.ts.map +1 -1
- package/dist/ContentHash.js +35 -0
- package/dist/ContentHash.js.map +1 -1
- package/dist/CustomColumnPromotion.d.ts +108 -0
- package/dist/CustomColumnPromotion.d.ts.map +1 -0
- package/dist/CustomColumnPromotion.js +202 -0
- package/dist/CustomColumnPromotion.js.map +1 -0
- package/dist/CustomOverflow.d.ts +64 -0
- package/dist/CustomOverflow.d.ts.map +1 -0
- package/dist/CustomOverflow.js +74 -0
- package/dist/CustomOverflow.js.map +1 -0
- package/dist/FieldMappingEngine.d.ts +16 -90
- package/dist/FieldMappingEngine.d.ts.map +1 -1
- package/dist/FieldMappingEngine.js +42 -257
- package/dist/FieldMappingEngine.js.map +1 -1
- package/dist/IntegrationConnectorCreationPipeline.d.ts +33 -0
- package/dist/IntegrationConnectorCreationPipeline.d.ts.map +1 -1
- package/dist/IntegrationConnectorCreationPipeline.js +157 -0
- package/dist/IntegrationConnectorCreationPipeline.js.map +1 -1
- package/dist/IntegrationEngine.d.ts +120 -6
- package/dist/IntegrationEngine.d.ts.map +1 -1
- package/dist/IntegrationEngine.js +890 -168
- package/dist/IntegrationEngine.js.map +1 -1
- package/dist/IntegrationSchemaSync.d.ts +84 -13
- package/dist/IntegrationSchemaSync.d.ts.map +1 -1
- package/dist/IntegrationSchemaSync.js +198 -36
- package/dist/IntegrationSchemaSync.js.map +1 -1
- package/dist/KeySerialization.d.ts +21 -0
- package/dist/KeySerialization.d.ts.map +1 -0
- package/dist/KeySerialization.js +29 -0
- package/dist/KeySerialization.js.map +1 -0
- package/dist/MatchEngine.d.ts.map +1 -1
- package/dist/MatchEngine.js +12 -4
- package/dist/MatchEngine.js.map +1 -1
- package/dist/RecordFlatten.d.ts +49 -0
- package/dist/RecordFlatten.d.ts.map +1 -0
- package/dist/RecordFlatten.js +50 -0
- package/dist/RecordFlatten.js.map +1 -0
- package/dist/StreamingDiscovery.d.ts +145 -0
- package/dist/StreamingDiscovery.d.ts.map +1 -0
- package/dist/StreamingDiscovery.js +306 -0
- package/dist/StreamingDiscovery.js.map +1 -0
- package/dist/SyncLogger.d.ts +1 -1
- package/dist/SyncLogger.d.ts.map +1 -1
- package/dist/SyncLogger.js +19 -1
- package/dist/SyncLogger.js.map +1 -1
- package/dist/auth-helpers/BasicAuthHeaderBuilder.d.ts +36 -0
- package/dist/auth-helpers/BasicAuthHeaderBuilder.d.ts.map +1 -0
- package/dist/auth-helpers/BasicAuthHeaderBuilder.js +38 -0
- package/dist/auth-helpers/BasicAuthHeaderBuilder.js.map +1 -0
- package/dist/auth-helpers/OAuth1aSigner.d.ts +56 -0
- package/dist/auth-helpers/OAuth1aSigner.d.ts.map +1 -0
- package/dist/auth-helpers/OAuth1aSigner.js +91 -0
- package/dist/auth-helpers/OAuth1aSigner.js.map +1 -0
- package/dist/auth-helpers/OAuth2TokenManager.d.ts +103 -0
- package/dist/auth-helpers/OAuth2TokenManager.d.ts.map +1 -0
- package/dist/auth-helpers/OAuth2TokenManager.js +143 -0
- package/dist/auth-helpers/OAuth2TokenManager.js.map +1 -0
- package/dist/auth-helpers/index.d.ts +11 -0
- package/dist/auth-helpers/index.d.ts.map +1 -0
- package/dist/auth-helpers/index.js +8 -0
- package/dist/auth-helpers/index.js.map +1 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +73 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { discoverFromStream, pickKeyFromStats, pickPrimaryKeyFromStats, } from './StreamingDiscovery.js';
|
|
2
|
+
import { AdaptiveConcurrencyController, RunAdaptive } from './AdaptiveConcurrency.js';
|
|
3
|
+
import { flattenRecord, hasNestedObject } from './RecordFlatten.js';
|
|
1
4
|
/** Default timeout values for connector operations */
|
|
2
5
|
export const DEFAULT_OPERATION_TIMEOUTS = {
|
|
3
6
|
TestConnectionMs: 5000,
|
|
@@ -141,6 +144,20 @@ export class BaseIntegrationConnector {
|
|
|
141
144
|
* Override to push to the source's real limits.
|
|
142
145
|
*/
|
|
143
146
|
get RateLimitPolicy() { return null; }
|
|
147
|
+
/**
|
|
148
|
+
* Whether the watermark this connector returns (`FetchBatchResult.NewWatermarkValue`) is a
|
|
149
|
+
* RELIABLE, monotonically-increasing global maximum — i.e. the connector fetches in watermark
|
|
150
|
+
* order so the last batch's value IS the true high-water mark, and an updated record always
|
|
151
|
+
* re-surfaces at a NEW (higher) watermark. When `true`, the engine uses that watermark to NARROW
|
|
152
|
+
* the next incremental (instead of advancing a full sync to wall-clock "now", and instead of the
|
|
153
|
+
* keyset clear-and-re-scan), so incrementals fetch only what's new.
|
|
154
|
+
*
|
|
155
|
+
* Default `false` — the safe, backwards-compatible choice: a connector whose source returns
|
|
156
|
+
* records out of watermark order (e.g. HubSpot's creation-ordered list API, where the last batch
|
|
157
|
+
* can carry old modstamps) MUST stay false so the engine keeps advancing to "now" and never saves
|
|
158
|
+
* a stale watermark. Override to `true` ONLY when the source guarantees monotonic ordering.
|
|
159
|
+
*/
|
|
160
|
+
get MonotonicWatermark() { return false; }
|
|
144
161
|
/**
|
|
145
162
|
* Parse a Retry-After / rate-limit signal out of a failed response or thrown error into
|
|
146
163
|
* milliseconds so the engine can back off precisely. Return `undefined` when the error is not a
|
|
@@ -185,6 +202,197 @@ export class BaseIntegrationConnector {
|
|
|
185
202
|
* applies target-type constraint enforcement; this is the connector-side complement.
|
|
186
203
|
*/
|
|
187
204
|
PostProcessRecord(record) { return record; }
|
|
205
|
+
/**
|
|
206
|
+
* Stage-2 field discovery for sources WITHOUT a describe/introspection endpoint (file feeds,
|
|
207
|
+
* undocumented JSON list endpoints): stream the source's actual records — READ-ONLY, no save,
|
|
208
|
+
* no ack — and derive the full field set + data-informed PK/uniqueness/nullability from the
|
|
209
|
+
* gathered statistics. The connector supplies whatever read-only fetch yields the records; this
|
|
210
|
+
* helper turns that stream into `ExternalFieldSchema[]`.
|
|
211
|
+
*
|
|
212
|
+
* Why data-informed: streaming the real values lets `pickPrimaryKeyFromStats` pick the PK from
|
|
213
|
+
* evidence (uniqueness/non-null statistics) COMBINED with the naming convention, rather than a
|
|
214
|
+
* name guess alone. The PK is a SOFT key, so the pick is best-available, not strict-significance:
|
|
215
|
+
* a confident unique+non-null column wins outright; otherwise a near-unique / convention-named
|
|
216
|
+
* column is taken as a soft key (a PK-less object would stall CodeGen). The scan is time-bounded —
|
|
217
|
+
* it stops on exhaustion OR `opts.Discovery.TimeBudgetMs`; more rows simply mean stronger claims.
|
|
218
|
+
*
|
|
219
|
+
* Provable-only encoding into the standard flags:
|
|
220
|
+
* - `IsPrimaryKey` — set ONLY on the single statistics-first pick. Multiple equally-ranked unique
|
|
221
|
+
* columns leave PK unset here (ambiguous → the pipeline's `SoftPKClassifier` LLM tiebreaker
|
|
222
|
+
* decides, fed these same stats). Zero unique columns → no PK is fabricated.
|
|
223
|
+
* - `IsUniqueKey` — set when the column was all-distinct over the scan AND uniqueness was provable
|
|
224
|
+
* (the distinct-cap wasn't hit).
|
|
225
|
+
* - `AllowsNull` — asserted `true` ONLY when a null/absent value was actually observed; otherwise
|
|
226
|
+
* left undefined (permissive default). Never fabricates NOT NULL — critical under a time-capped
|
|
227
|
+
* partial scan where unseen rows could still be null.
|
|
228
|
+
*
|
|
229
|
+
* The PK emitted here is SOFT (it rides additionalSchemaInfo via the persist + DDL path; it is
|
|
230
|
+
* NEVER a hard DB key), so a wrong inference can never reject a valid row — the engine dedupes via
|
|
231
|
+
* the record-map. `IsReadOnly` defaults to true (stream discovery targets read feeds); a writable
|
|
232
|
+
* source overrides via `opts.ReadOnly`.
|
|
233
|
+
*
|
|
234
|
+
* @param records - A read-only sync/async iterable of source records (the caller's fetch yields them).
|
|
235
|
+
* @param opts.Discovery - Time budget / sample caps for the scan (see {@link StreamDiscoveryOptions}).
|
|
236
|
+
* @param opts.Pk - Significance threshold + naming-rank tiebreaker (see {@link PkPickOptions}).
|
|
237
|
+
* @param opts.ReadOnly - Whether discovered fields are read-only. Default true.
|
|
238
|
+
*/
|
|
239
|
+
async DiscoverFieldsViaStream(records, opts = {}) {
|
|
240
|
+
// Flatten nested objects so the column corpus + PK pick see SCALAR fields (e.g.
|
|
241
|
+
// checkin_question.id → checkin_question_id) instead of an object-valued blob being chosen
|
|
242
|
+
// as the key. Mirrors the sync-intake flatten (FieldMappingEngine) EXACTLY, so the field
|
|
243
|
+
// names discovered here match what sync produces. A flat record passes through unchanged.
|
|
244
|
+
async function* flattenRecords() {
|
|
245
|
+
for await (const r of records)
|
|
246
|
+
yield hasNestedObject(r) ? flattenRecord(r) : r;
|
|
247
|
+
}
|
|
248
|
+
const scan = await discoverFromStream(flattenRecords(), opts.Discovery);
|
|
249
|
+
// Provable-only identity in ONE pass: best contender per subset size (1,2,3…) → the SMALLEST
|
|
250
|
+
// size whose best contender is a provable key (single OR composite), decided by the Chao1
|
|
251
|
+
// domain-saturation test on the streamed sample. No fabricated keys; a genuinely-keyless object
|
|
252
|
+
// simply gets no PK and is honestly not added downstream.
|
|
253
|
+
const key = pickKeyFromStats(scan.Columns, scan.RowSamples, opts.Pk);
|
|
254
|
+
let pkFieldNames = key.Fields ?? [];
|
|
255
|
+
let pkReason = key.Reason;
|
|
256
|
+
if (pkFieldNames.length === 0) {
|
|
257
|
+
// No PROVABLE key (Chao1 saturated, or sub-significance sample). Fall back to a SOFT
|
|
258
|
+
// best-available SINGLE-column pick: a convention-named column ('id'-like) carrying an
|
|
259
|
+
// identity signal (non-null on every row + near-unique/distinct-capped). Rationale: a
|
|
260
|
+
// PK-less entity STALLS CodeGen — it skips spCreate/Update/Delete + views for that table,
|
|
261
|
+
// exits non-zero, and aborts ApplyAll. A soft key is dedup-only (can NEVER reject a row),
|
|
262
|
+
// so "all keys are soft, best-available" keeps the table syncable. Genuinely-signal-less
|
|
263
|
+
// objects still get no PK (content-hash identity handles dedup).
|
|
264
|
+
// #A4 — tell the PK picker whether the scan saw the WHOLE stream; a time-budget-truncated scan
|
|
265
|
+
// must not yield a confident soft key from a partial prefix.
|
|
266
|
+
const soft = pickPrimaryKeyFromStats(scan.Columns, { ...opts.Pk, ScanComplete: scan.StoppedReason !== 'time-budget' });
|
|
267
|
+
if (soft.Field) {
|
|
268
|
+
pkFieldNames = [soft.Field];
|
|
269
|
+
pkReason = `[soft-fallback] ${soft.Reason}`;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
const pkFields = new Set(pkFieldNames);
|
|
273
|
+
// Diagnostic: the verdict + per-column stats, so a keyless object is an explained decision.
|
|
274
|
+
const stats = scan.Columns.map(c => `${c.Key}(occ=${c.Occurrences}/${c.TotalRows},distinct=${c.DistinctNonNull}${c.DistinctCapped ? ',capped' : ''})`).join(', ');
|
|
275
|
+
console.log(`[DiscoverFieldsViaStream] key pick — rows=${scan.RowSamples.length} | ${pkReason} | cols: [${stats}]`);
|
|
276
|
+
const readOnly = opts.ReadOnly ?? true;
|
|
277
|
+
return scan.Columns.map(c => {
|
|
278
|
+
const provablyUnique = !c.DistinctCapped && c.Occurrences > 0 && c.DistinctNonNull === c.Occurrences;
|
|
279
|
+
const isKey = pkFields.has(c.Key);
|
|
280
|
+
const field = {
|
|
281
|
+
Name: c.Key,
|
|
282
|
+
Label: c.Key,
|
|
283
|
+
DataType: c.Inferred.SchemaFieldType,
|
|
284
|
+
IsRequired: false,
|
|
285
|
+
IsUniqueKey: provablyUnique,
|
|
286
|
+
IsReadOnly: readOnly,
|
|
287
|
+
};
|
|
288
|
+
// §10 — discovered columns default NULLABLE. A sample can prove a value CAN be null but can
|
|
289
|
+
// NEVER prove NOT NULL, and a wrong NOT NULL rejects real rows. So always permit null here;
|
|
290
|
+
// a genuine NOT NULL only ever comes from an explicit source-declared "required".
|
|
291
|
+
field.AllowsNull = true;
|
|
292
|
+
// Statistics-first PK: mark each component of the chosen identity (single column or the
|
|
293
|
+
// greedy composite set). Empty set = genuinely keyless → content-hash identity handles dedup.
|
|
294
|
+
if (isKey)
|
|
295
|
+
field.IsPrimaryKey = true;
|
|
296
|
+
// §11 — ALWAYS size with generous headroom: a streamed-sample max is NOT the true max, so pad
|
|
297
|
+
// well above it (≥2×, rounded up to a standard bucket) so the next-larger record never
|
|
298
|
+
// truncates. Key columns stay capped at the 450-byte index-key limit so they remain
|
|
299
|
+
// PK-eligible (and never NVARCHAR(MAX), which can't be a key); unproven length uses that cap.
|
|
300
|
+
field.MaxLength = (() => {
|
|
301
|
+
const m = c.Inferred.MaxLength;
|
|
302
|
+
if (m == null || m <= 0) {
|
|
303
|
+
// Unknown length (#A5): a KEY must stay within the index-key limit (≤450, never MAX) so it
|
|
304
|
+
// remains PK-eligible. But a NON-key field of unknown length must size GENEROUSLY — defaulting
|
|
305
|
+
// it to 450 too silently TRUNCATED long descriptions / URLs / blobs. Err large + bounded.
|
|
306
|
+
return isKey ? 450 : 4000;
|
|
307
|
+
}
|
|
308
|
+
const padded = [32, 64, 128, 256, 512, 1024, 2048, 4000].find(b => b >= m * 2) ?? 4000;
|
|
309
|
+
return isKey ? Math.min(padded, 450) : padded;
|
|
310
|
+
})();
|
|
311
|
+
return field;
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Discovery via the connector's READ PATH ({@link FetchChanges}), TIME-BOUNDED — the way to gather
|
|
316
|
+
* a statistically-significant sample when a single {@link DiscoverFields} sample is too small to
|
|
317
|
+
* PROVE a key. "Discovery is the sync read path with the save removed."
|
|
318
|
+
*
|
|
319
|
+
* Loops FetchChanges as a read-only FULL fetch (WatermarkValue=null, nothing persisted), threading
|
|
320
|
+
* pagination/keyset cursors across batches, and streams every record through the data-informed
|
|
321
|
+
* field + provable-PK inference. It stops at the discovery TIME BUDGET (default 5 min), or a record
|
|
322
|
+
* cap, or source exhaustion — whichever comes first — so the provable-PK decision is made on as much
|
|
323
|
+
* real data as the budget allows. It NEVER fabricates a key: if even this larger sample yields no
|
|
324
|
+
* provable single/composite PK, the field set comes back PK-less and the object is honestly not added.
|
|
325
|
+
*
|
|
326
|
+
* Falls back to the single-sample {@link DiscoverFields} if the read path can't run for this object
|
|
327
|
+
* (e.g. a connector whose FetchChanges needs an already-persisted IO row that doesn't exist yet).
|
|
328
|
+
*/
|
|
329
|
+
async DiscoverFieldsViaFetch(companyIntegration, objectName, contextUser, opts = {}) {
|
|
330
|
+
// Discovery budgets are operator-tunable via env (time- or record-count-based — either bounds it);
|
|
331
|
+
// explicit opts win, then env, then the sensible defaults. The record cap usually hits before time.
|
|
332
|
+
const envInt = (name, fb) => {
|
|
333
|
+
const v = parseInt(process.env[name] ?? '', 10);
|
|
334
|
+
return Number.isFinite(v) && v > 0 ? v : fb;
|
|
335
|
+
};
|
|
336
|
+
// §A — per-connection overrides via Configuration (set over GraphQL through IntegrationSetSyncConfig).
|
|
337
|
+
// Precedence: explicit opts > per-connection Configuration > operator env > default.
|
|
338
|
+
let cfg = {};
|
|
339
|
+
try {
|
|
340
|
+
if (companyIntegration.Configuration)
|
|
341
|
+
cfg = JSON.parse(companyIntegration.Configuration);
|
|
342
|
+
}
|
|
343
|
+
catch { /* malformed → defaults */ }
|
|
344
|
+
const cfgInt = (v) => (typeof v === 'number' && Number.isFinite(v) && v > 0 ? Math.floor(v) : undefined);
|
|
345
|
+
const timeBudgetMs = opts.TimeBudgetMs ?? cfgInt(cfg.discoveryTimeBudgetMs) ?? envInt('MJ_INTEGRATION_DISCOVERY_TIME_BUDGET_MS', 5 * 60 * 1000);
|
|
346
|
+
const batchSize = opts.BatchSize ?? cfgInt(cfg.discoveryBatchSize) ?? envInt('MJ_INTEGRATION_DISCOVERY_BATCH_SIZE', 500);
|
|
347
|
+
// §C — default sample is SMALL (one batch). Discovery only needs a column corpus + a lightweight
|
|
348
|
+
// PK guess + type inference — NOT a full scan. The old 5000 default caused a 100-objects × 5000-rows
|
|
349
|
+
// read storm on no-describe (file-feed) sources for zero added schema fidelity (the runtime soft-PK
|
|
350
|
+
// classifier judges uniqueness on the live data, not this sample; custom-column overflow captures any
|
|
351
|
+
// late-appearing field). Operator-tunable via env or, per-connection, the IntegrationSetSyncConfig
|
|
352
|
+
// `discoveryMaxRecords` knob. Sampling itself is the FALLBACK path — used only when the source lacks a
|
|
353
|
+
// describe endpoint that yields pk+type+columns; a describe-capable connector returns here-unused.
|
|
354
|
+
const maxRecords = opts.MaxRecords ?? envInt('MJ_INTEGRATION_DISCOVERY_MAX_RECORDS', 500);
|
|
355
|
+
const self = this;
|
|
356
|
+
async function* readPathStream() {
|
|
357
|
+
let ctx = {
|
|
358
|
+
CompanyIntegration: companyIntegration,
|
|
359
|
+
ObjectName: objectName,
|
|
360
|
+
WatermarkValue: null, // FULL fetch — discovery wants breadth, not the incremental delta
|
|
361
|
+
BatchSize: batchSize,
|
|
362
|
+
ContextUser: contextUser,
|
|
363
|
+
};
|
|
364
|
+
let yielded = 0;
|
|
365
|
+
for (;;) {
|
|
366
|
+
const batch = await self.FetchChanges(ctx);
|
|
367
|
+
for (const rec of batch.Records) {
|
|
368
|
+
yield rec.Fields;
|
|
369
|
+
if (++yielded >= maxRecords)
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
if (!batch.HasMore)
|
|
373
|
+
break;
|
|
374
|
+
ctx = {
|
|
375
|
+
...ctx,
|
|
376
|
+
WatermarkValue: null,
|
|
377
|
+
CurrentPage: batch.NextPage,
|
|
378
|
+
CurrentOffset: batch.NextOffset,
|
|
379
|
+
CurrentCursor: batch.NextCursor,
|
|
380
|
+
AfterKeyValue: batch.NextAfterKeyValue ?? ctx.AfterKeyValue,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
try {
|
|
385
|
+
return await this.DiscoverFieldsViaStream(readPathStream(), {
|
|
386
|
+
Discovery: { TimeBudgetMs: timeBudgetMs },
|
|
387
|
+
ReadOnly: true,
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
catch (err) {
|
|
391
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
392
|
+
console.warn(`[DiscoverFieldsViaFetch] read-path discovery failed for "${objectName}" (${msg}); falling back to single-sample DiscoverFields.`);
|
|
393
|
+
return this.DiscoverFields(companyIntegration, objectName, contextUser);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
188
396
|
/**
|
|
189
397
|
* Returns suggested default field mappings for an external object to MJ entity.
|
|
190
398
|
* Override in subclasses to provide intelligent defaults.
|
|
@@ -264,113 +472,120 @@ export class BaseIntegrationConnector {
|
|
|
264
472
|
* @param options - Optional filter to restrict introspection to a subset of objects
|
|
265
473
|
* @returns Full schema info for all (or the requested subset of) source objects
|
|
266
474
|
*/
|
|
475
|
+
/**
|
|
476
|
+
* §7 — does this connector's discovery (DiscoverObjects/DiscoverFields → IntrospectSchema) return the
|
|
477
|
+
* AUTHORITATIVE, COMPLETE gamut of objects/fields the credentials expose? Default **false** (safe):
|
|
478
|
+
* a connector must explicitly affirm this. Override to `true` ONLY when DiscoverObjects hits a real
|
|
479
|
+
* list/describe endpoint that returns EVERYTHING accessible — so an object/field absent from a refresh
|
|
480
|
+
* genuinely means the source dropped it (and may be deactivated). Leave false for stubbed discovery
|
|
481
|
+
* (returns nothing → static metadata is all we have), a cache-driven IntrospectSchema, or any
|
|
482
|
+
* partial/scoped enumeration — there, absence proves nothing and MUST NOT deactivate.
|
|
483
|
+
*/
|
|
484
|
+
get DiscoveryIsAuthoritative() {
|
|
485
|
+
return false;
|
|
486
|
+
}
|
|
267
487
|
async IntrospectSchema(companyIntegration, contextUser, options) {
|
|
268
488
|
const allObjects = await this.DiscoverObjects(companyIntegration, contextUser);
|
|
269
489
|
const wanted = options?.ObjectNames && options.ObjectNames.length > 0
|
|
270
490
|
? new Set(options.ObjectNames)
|
|
271
491
|
: null;
|
|
272
492
|
const objects = wanted ? allObjects.filter(o => wanted.has(o.Name)) : allObjects;
|
|
273
|
-
|
|
274
|
-
//
|
|
275
|
-
|
|
276
|
-
//
|
|
277
|
-
//
|
|
278
|
-
|
|
493
|
+
// §7 — a SCOPED introspection (ObjectNames filter) is never authoritative over the whole surface,
|
|
494
|
+
// so it can never drive deactivation even if the connector affirms authoritative discovery.
|
|
495
|
+
const result = { Objects: [], IsAuthoritative: this.DiscoveryIsAuthoritative && !wanted };
|
|
496
|
+
// Parallel describe via the SAME control law the sync engine uses for its layers —
|
|
497
|
+
// `RunAdaptive` + `AdaptiveConcurrencyController` (AIMD). Discovery IS the sync read path with
|
|
498
|
+
// the save removed, so it shares the concurrency machinery rather than a separate fixed pool:
|
|
499
|
+
// it ramps UP on clean describes and CUTS on a throttle (detected via the connector's
|
|
500
|
+
// `ExtractRetryAfterMs`). The cap honors the connector's `MaxConcurrencyHint` + a per-connection
|
|
501
|
+
// `Configuration.maxConcurrency` override (the same `IntegrationSetSyncConfig` knob that tunes
|
|
502
|
+
// sync). Default start is 8 — a read-only introspection sweep tolerates more parallelism than
|
|
503
|
+
// the write path's default of 1; sequential introspection is brutal (Sage Intacct ~30 min).
|
|
279
504
|
const total = objects.length;
|
|
280
505
|
const startMs = Date.now();
|
|
281
|
-
let nextIdx = 0;
|
|
282
506
|
let succeeded = 0;
|
|
283
507
|
let skipped = 0;
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
const
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
durationMs: Date.now() - objStart,
|
|
313
|
-
}));
|
|
314
|
-
skipped++;
|
|
315
|
-
continue;
|
|
316
|
-
}
|
|
508
|
+
const DEFAULT_DISCOVERY_CONCURRENCY = 8;
|
|
509
|
+
let maxConcurrency = Math.max(DEFAULT_DISCOVERY_CONCURRENCY, this.MaxConcurrencyHint ?? 0);
|
|
510
|
+
try {
|
|
511
|
+
const raw = companyIntegration.Configuration;
|
|
512
|
+
if (raw) {
|
|
513
|
+
const m = JSON.parse(raw).maxConcurrency;
|
|
514
|
+
if (typeof m === 'number' && Number.isFinite(m) && m >= 1)
|
|
515
|
+
maxConcurrency = Math.floor(m);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
catch { /* malformed Configuration → defaults */ }
|
|
519
|
+
const controller = new AdaptiveConcurrencyController({
|
|
520
|
+
start: Math.min(DEFAULT_DISCOVERY_CONCURRENCY, Math.max(1, maxConcurrency)),
|
|
521
|
+
min: 1,
|
|
522
|
+
max: Math.max(1, maxConcurrency),
|
|
523
|
+
});
|
|
524
|
+
const introspectOne = async (obj) => {
|
|
525
|
+
const objStart = Date.now();
|
|
526
|
+
console.log(JSON.stringify({
|
|
527
|
+
ts: new Date().toISOString(), event: 'introspect.object.start', objectName: obj.Name, total,
|
|
528
|
+
}));
|
|
529
|
+
let fields;
|
|
530
|
+
try {
|
|
531
|
+
fields = await this.DiscoverFields(companyIntegration, obj.Name, contextUser);
|
|
532
|
+
}
|
|
533
|
+
catch (err) {
|
|
534
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
535
|
+
console.warn(`WARNING: Skipping object "${obj.Name}" — DiscoverFields failed: ${msg}`);
|
|
317
536
|
console.log(JSON.stringify({
|
|
318
|
-
ts: new Date().toISOString(),
|
|
319
|
-
|
|
320
|
-
objectIndex: myIdx + 1,
|
|
321
|
-
total,
|
|
322
|
-
objectName: obj.Name,
|
|
323
|
-
fieldsDiscovered: fields.length,
|
|
324
|
-
primaryKeyFields: fields.filter(f => f.IsPrimaryKey).map(f => f.Name),
|
|
325
|
-
foreignKeyFields: fields.filter(f => f.IsForeignKey).length,
|
|
326
|
-
durationMs: Date.now() - objStart,
|
|
537
|
+
ts: new Date().toISOString(), event: 'introspect.object.skipped',
|
|
538
|
+
objectName: obj.Name, total, error: msg, durationMs: Date.now() - objStart,
|
|
327
539
|
}));
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
540
|
+
skipped++;
|
|
541
|
+
// A real rate-limit failure cuts the in-flight cap (AIMD); a plain describe error does not.
|
|
542
|
+
return { ok: false, throttled: this.ExtractRetryAfterMs(err) !== undefined };
|
|
543
|
+
}
|
|
544
|
+
console.log(JSON.stringify({
|
|
545
|
+
ts: new Date().toISOString(), event: 'introspect.object.complete',
|
|
546
|
+
objectName: obj.Name, total, fieldsDiscovered: fields.length,
|
|
547
|
+
primaryKeyFields: fields.filter(f => f.IsPrimaryKey).map(f => f.Name),
|
|
548
|
+
foreignKeyFields: fields.filter(f => f.IsForeignKey).length, durationMs: Date.now() - objStart,
|
|
549
|
+
}));
|
|
550
|
+
// Single-threaded async → these mutations are atomic across concurrent introspectOne calls
|
|
551
|
+
// (same safety the sync engine's per-map aggregate mutations rely on).
|
|
552
|
+
result.Objects.push({
|
|
553
|
+
ExternalName: obj.Name,
|
|
554
|
+
ExternalLabel: obj.Label,
|
|
555
|
+
Description: obj.Description,
|
|
556
|
+
Fields: fields.map(f => ({
|
|
557
|
+
Name: f.Name,
|
|
558
|
+
Label: f.Label,
|
|
559
|
+
Description: f.Description,
|
|
560
|
+
SourceType: f.DataType,
|
|
561
|
+
IsRequired: f.IsRequired,
|
|
562
|
+
AllowsNull: f.AllowsNull,
|
|
563
|
+
MaxLength: f.MaxLength ?? null,
|
|
564
|
+
Precision: f.Precision ?? null,
|
|
565
|
+
Scale: f.Scale ?? null,
|
|
566
|
+
DefaultValue: f.DefaultValue ?? null,
|
|
567
|
+
IsPrimaryKey: f.IsPrimaryKey ?? false,
|
|
568
|
+
IsUniqueKey: f.IsUniqueKey,
|
|
569
|
+
IsReadOnly: f.IsReadOnly,
|
|
570
|
+
IsForeignKey: f.IsForeignKey ?? false,
|
|
571
|
+
ForeignKeyTarget: f.ForeignKeyTarget ?? null,
|
|
572
|
+
})),
|
|
573
|
+
// Honest PK selection: only IsPrimaryKey=true fields qualify (an object can have several
|
|
574
|
+
// unique fields of which only one is the PK). Connectors that don't set IsPrimaryKey
|
|
575
|
+
// return an empty PrimaryKeyFields; the runtime PK classifier (D2/D4) handles the residual.
|
|
576
|
+
PrimaryKeyFields: fields.filter(f => f.IsPrimaryKey).map(f => f.Name),
|
|
577
|
+
Relationships: fields
|
|
578
|
+
.filter(f => (f.IsForeignKey ?? false) && f.ForeignKeyTarget)
|
|
579
|
+
.map(f => ({ FieldName: f.Name, TargetObject: f.ForeignKeyTarget, TargetField: 'ID' })),
|
|
580
|
+
});
|
|
581
|
+
succeeded++;
|
|
582
|
+
const done = succeeded + skipped;
|
|
583
|
+
if (done % 100 === 0 || done === total) {
|
|
584
|
+
console.log(`[IntrospectSchema] progress: ${done}/${total} (ok=${succeeded}, skipped=${skipped}) — ${((Date.now() - startMs) / 1000).toFixed(1)}s elapsed`);
|
|
370
585
|
}
|
|
586
|
+
return { ok: true, throttled: false };
|
|
371
587
|
};
|
|
372
|
-
|
|
373
|
-
await Promise.all(Array.from({ length: workerCount }, () => worker()));
|
|
588
|
+
await RunAdaptive(objects, introspectOne, controller);
|
|
374
589
|
return result;
|
|
375
590
|
}
|
|
376
591
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseIntegrationConnector.js","sourceRoot":"","sources":["../src/BaseIntegrationConnector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseIntegrationConnector.js","sourceRoot":"","sources":["../src/BaseIntegrationConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,6 +102,23 @@ export declare abstract class BaseRESTIntegrationConnector extends BaseIntegrati
|
|
|
102
102
|
* needs vendor-specific shape changes.
|
|
103
103
|
*/
|
|
104
104
|
protected TransformRecord(raw: Record<string, unknown>, _obj: MJIntegrationObjectEntity, _fields: MJIntegrationObjectFieldEntity[]): Record<string, unknown>;
|
|
105
|
+
/**
|
|
106
|
+
* Source keys a connector DELIBERATELY removes in its {@link TransformRecord} override
|
|
107
|
+
* (vendor noise, a flattened parent blob, a nested child collection emitted as its own object).
|
|
108
|
+
* These are the only sanctioned drops — excluded from the {@link applyTransformPreservingKeys}
|
|
109
|
+
* re-add. Default: none. Override per-object to declare intentional removals.
|
|
110
|
+
*/
|
|
111
|
+
protected ExcludedSourceKeys(_objectName: string): string[];
|
|
112
|
+
/**
|
|
113
|
+
* Runs {@link TransformRecord}, then RE-ADDS any source key the transform dropped (present in
|
|
114
|
+
* `raw`, absent from the output) unless declared in {@link ExcludedSourceKeys}. This makes the
|
|
115
|
+
* base-fetch path structurally full-record (§0 forward-compat contract): a TransformRecord
|
|
116
|
+
* override may reshape/coerce but cannot SILENTLY drop a source key from `ExternalRecord.Fields`,
|
|
117
|
+
* so the framework's custom-column capture sees everything the source returned. The default
|
|
118
|
+
* identity transform returns `raw` unchanged → fast-path no-op (zero overhead, zero behavior
|
|
119
|
+
* change for connectors that don't override TransformRecord).
|
|
120
|
+
*/
|
|
121
|
+
protected applyTransformPreservingKeys(raw: Record<string, unknown>, obj: MJIntegrationObjectEntity, fields: MJIntegrationObjectFieldEntity[]): Record<string, unknown>;
|
|
105
122
|
/**
|
|
106
123
|
* Discovers available objects from the IntegrationEngineBase cache.
|
|
107
124
|
*/
|
|
@@ -168,6 +185,19 @@ export declare abstract class BaseRESTIntegrationConnector extends BaseIntegrati
|
|
|
168
185
|
* already uses for sync ORDER. A single-var path behaves exactly as before.
|
|
169
186
|
*/
|
|
170
187
|
private FetchWithTemplateVars;
|
|
188
|
+
/**
|
|
189
|
+
* Per-call cap on how many PARENTS a parent-iterated object processes before yielding a resumable
|
|
190
|
+
* batch (the engine loops on HasMore). Kept conservative so a single FetchChanges call fits the
|
|
191
|
+
* engine's op-timeout even at a slow initial adaptive rate; the AIMD bucket ramps up over batches.
|
|
192
|
+
* Override in a concrete connector if a vendor tolerates larger per-call parent runs.
|
|
193
|
+
*/
|
|
194
|
+
protected TemplateVarParentBatchSize(): number;
|
|
195
|
+
/** Stable total order over ID strings — numeric when ALL are integer-like, else lexical. */
|
|
196
|
+
private SortIdsStable;
|
|
197
|
+
/** Total-order comparator matching SortIdsStable, used for keyset resume (id > AfterKeyValue). */
|
|
198
|
+
private CompareIds;
|
|
199
|
+
/** Runs `worker` over `items` with at most `concurrency` in flight. Rejects on the first worker error. */
|
|
200
|
+
private RunBounded;
|
|
171
201
|
/**
|
|
172
202
|
* Recursive descent over the ordered template-var resolutions, one layer per level.
|
|
173
203
|
*
|
|
@@ -192,6 +222,12 @@ export declare abstract class BaseRESTIntegrationConnector extends BaseIntegrati
|
|
|
192
222
|
*
|
|
193
223
|
* Returns null when neither strategy matches.
|
|
194
224
|
*/
|
|
225
|
+
/** Reads a trimmed string value from an IntegrationObject's Configuration JSON (tolerant of absent/invalid). */
|
|
226
|
+
private ReadObjectConfigString;
|
|
227
|
+
/** Reads an OBJECT-valued key from an IntegrationObject's Configuration JSON as a string→string map
|
|
228
|
+
* with lowercased keys (tolerant of absent/invalid). Used for the per-var parent maps that let a
|
|
229
|
+
* MULTI-LEVEL template-var path resolve each variable to its own parent. */
|
|
230
|
+
private ReadObjectConfigStringMap;
|
|
195
231
|
private ResolveParentForVar;
|
|
196
232
|
/**
|
|
197
233
|
* Finds the FK column on `innerObjectID` that points at `outerObjectID` — used to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseRESTIntegrationConnector.d.ts","sourceRoot":"","sources":["../src/BaseRESTIntegrationConnector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseRESTIntegrationConnector.d.ts","sourceRoot":"","sources":["../src/BaseRESTIntegrationConnector.ts"],"names":[],"mappings":"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"}
|