@memberjunction/integration-engine 5.49.0 → 5.51.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/dist/IntegrationEngine.d.ts +77 -0
- package/dist/IntegrationEngine.d.ts.map +1 -1
- package/dist/IntegrationEngine.js +247 -51
- package/dist/IntegrationEngine.js.map +1 -1
- package/dist/MatchEngine.d.ts +156 -14
- package/dist/MatchEngine.d.ts.map +1 -1
- package/dist/MatchEngine.js +438 -68
- package/dist/MatchEngine.js.map +1 -1
- package/dist/RecordMapBatch.d.ts +162 -0
- package/dist/RecordMapBatch.d.ts.map +1 -0
- package/dist/RecordMapBatch.js +283 -0
- package/dist/RecordMapBatch.js.map +1 -0
- package/dist/prefetchFilter.d.ts +18 -0
- package/dist/prefetchFilter.d.ts.map +1 -1
- package/dist/prefetchFilter.js +15 -10
- package/dist/prefetchFilter.js.map +1 -1
- package/package.json +7 -7
|
@@ -81,6 +81,20 @@ export declare class IntegrationEngine extends BaseSingleton<IntegrationEngine>
|
|
|
81
81
|
readonly MaxColumnsPerTable: number;
|
|
82
82
|
/** Reads + clamps the column limit from env at startup; logs once when a configured value is clamped down. */
|
|
83
83
|
private static computeMaxColumnsPerTable;
|
|
84
|
+
/**
|
|
85
|
+
* Hard ceiling on the record-map keyset page size. Each page is one round trip that materializes
|
|
86
|
+
* this many rows in memory; past 50k the per-page cost stops amortizing and starts risking the
|
|
87
|
+
* response-size limits of the transport.
|
|
88
|
+
*/
|
|
89
|
+
static readonly RECORD_MAP_PAGE_SIZE_CEILING = 50000;
|
|
90
|
+
/**
|
|
91
|
+
* Page size for the keyset walk over MJ: Company Integration Record Maps (see LoadAllRecordMaps).
|
|
92
|
+
* Read from MJ_INTEGRATION_RECORD_MAP_PAGE_SIZE at class-init and clamped to
|
|
93
|
+
* [1, RECORD_MAP_PAGE_SIZE_CEILING]; defaults to 10,000.
|
|
94
|
+
*/
|
|
95
|
+
static readonly RecordMapPageSize: number;
|
|
96
|
+
/** Reads + clamps the record-map page size from env; logs once when a configured value is clamped. */
|
|
97
|
+
private static computeRecordMapPageSize;
|
|
84
98
|
private readonly fieldMappingEngine;
|
|
85
99
|
private readonly matchEngine;
|
|
86
100
|
private readonly watermarkService;
|
|
@@ -409,6 +423,15 @@ export declare class IntegrationEngine extends BaseSingleton<IntegrationEngine>
|
|
|
409
423
|
* Applies resolved records to MJ, handling each individually for error isolation.
|
|
410
424
|
*/
|
|
411
425
|
private ApplyRecords;
|
|
426
|
+
/**
|
|
427
|
+
* Flushes the queued record maps and reports any that failed, per external ID.
|
|
428
|
+
*
|
|
429
|
+
* Failures here are warnings, not record errors: the record itself saved. A missing mapping
|
|
430
|
+
* degrades orphan detection until the next sync re-establishes it by primary key, which is
|
|
431
|
+
* worth telling the operator about but is not a reason to mark the record — or the run —
|
|
432
|
+
* failed. Flushing itself never throws for the same reason.
|
|
433
|
+
*/
|
|
434
|
+
private FlushRecordMaps;
|
|
412
435
|
/**
|
|
413
436
|
* Refreshes __mj_integration_LastReconciledAt = now for a set of records that the content-hash
|
|
414
437
|
* fast path skipped (present + confirmed-unchanged on the source). Issues ONE set-based UPDATE
|
|
@@ -522,11 +545,65 @@ export declare class IntegrationEngine extends BaseSingleton<IntegrationEngine>
|
|
|
522
545
|
private isNumericSqlType;
|
|
523
546
|
private isBooleanSqlType;
|
|
524
547
|
private isDateSqlType;
|
|
548
|
+
/**
|
|
549
|
+
* True when a row whose BUSINESS fields are unchanged still has to be written because its
|
|
550
|
+
* integration sync state is stale — it is tombstoned (the record reappeared on the source),
|
|
551
|
+
* carries a prior error/conflict note, or is not marked Active.
|
|
552
|
+
*
|
|
553
|
+
* Without this, restoring UpdateRecord's dirty check would introduce a regression: before
|
|
554
|
+
* the fix, an unchanged row was rewritten every sync (expensively) and so its tombstone /
|
|
555
|
+
* error state was cleared as a side effect. Skipping the write must not freeze that state.
|
|
556
|
+
* The cost is nil — the entity is already loaded at every call site.
|
|
557
|
+
*
|
|
558
|
+
* `.Get` on the dynamic `__mj_integration_*` columns is the sanctioned access here: these
|
|
559
|
+
* runtime-created target tables have no generated entity type, which is why the engine
|
|
560
|
+
* already `.Set()`s the very same columns in SetStandardIntegrationFields.
|
|
561
|
+
*/
|
|
562
|
+
private needsSyncStateRepair;
|
|
525
563
|
/**
|
|
526
564
|
* Sets standard integration columns (__mj_integration_*) on target entities.
|
|
527
565
|
* Silently skips if the entity doesn't have these columns (e.g., __mj targets).
|
|
528
566
|
*/
|
|
529
567
|
private SetStandardIntegrationFields;
|
|
568
|
+
/**
|
|
569
|
+
* Reads EVERY record-map row for a (CompanyIntegration, Entity) pair, in pages.
|
|
570
|
+
*
|
|
571
|
+
* A plain `RunView` with no `MaxRows` is NOT unbounded: it falls back to the entity's
|
|
572
|
+
* `UserViewMaxRows`, which defaults to 1000. Both callers of this helper (full-push
|
|
573
|
+
* "what already exists externally" and full-sync orphan detection) treat the result as
|
|
574
|
+
* the complete picture, so a silent truncation at 1000 was a data bug in both directions —
|
|
575
|
+
* duplicate creates on push, and an orphan sweep that cleared only the first 1000 while
|
|
576
|
+
* reporting a clean run.
|
|
577
|
+
*
|
|
578
|
+
* `Complete` is the honest half: paging can still fail part-way, and callers must decide
|
|
579
|
+
* what a partial read means for them rather than acting on it as if it were whole.
|
|
580
|
+
*
|
|
581
|
+
* **Keyset, not OFFSET.** `AfterKey` is used rather than `StartRow` for two independent
|
|
582
|
+
* reasons, both of which bite precisely at the volumes this helper exists for:
|
|
583
|
+
*
|
|
584
|
+
* 1. `StartRow` + `MaxRows` sets the provider's `usingPagination` flag, which forces a
|
|
585
|
+
* `SELECT COUNT(*)` over the whole record-map view *for every page*. Paging 100k
|
|
586
|
+
* mappings would issue 20 full counts nobody reads — reintroducing, twenty-fold, the
|
|
587
|
+
* speculative-count cost removed elsewhere in this change. Keyset queries deliberately
|
|
588
|
+
* do not set that flag.
|
|
589
|
+
* 2. OFFSET paging assumes the row set does not shift underneath the cursor. This table is
|
|
590
|
+
* written by the same sync (`RecordMapBatch`), and on Postgres `ID` defaults to a RANDOM
|
|
591
|
+
* uuid, so a concurrent insert can land *before* the cursor and shift every later page —
|
|
592
|
+
* silently skipping rows while still reporting `Complete: true`. That is exactly the
|
|
593
|
+
* truncation this helper exists to prevent, and the orphan sweep would archive live
|
|
594
|
+
* records on the strength of it. Keyset seeks on the last ID seen and cannot shift.
|
|
595
|
+
*/
|
|
596
|
+
private LoadAllRecordMaps;
|
|
597
|
+
/**
|
|
598
|
+
* Records an external↔MJ mapping — batched when the apply pass supplied a writer, direct
|
|
599
|
+
* otherwise.
|
|
600
|
+
*
|
|
601
|
+
* The batched form exists because the per-record `SaveRecordMap`
|
|
602
|
+
* below costs three round trips, paid for every record the sync touches including the ones it
|
|
603
|
+
* decides not to change. The `recordMaps` parameter is optional so that callers outside the
|
|
604
|
+
* batched apply pass (and every existing test) keep the original immediate-write behaviour.
|
|
605
|
+
*/
|
|
606
|
+
private QueueRecordMap;
|
|
530
607
|
/**
|
|
531
608
|
* Creates or updates a CompanyIntegrationRecordMap entry to track the external↔MJ mapping.
|
|
532
609
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationEngine.d.ts","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,iBAAiB,EAAkC,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC5I,OAAO,EAAE,aAAa,EAAc,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,KAAK,EACR,0BAA0B,EAC1B,mCAAmC,EACnC,kCAAkC,EAIlC,uCAAuC,EACvC,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EACjC,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EACR,UAAU,EAGV,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EAGtB,sBAAsB,EAEtB,oBAAoB,EAEpB,+BAA+B,EAClC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"IntegrationEngine.d.ts","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"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"}
|