@memberjunction/integration-engine 6.1.0-edge.3 → 6.1.0-edge.5
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/BaseIntegrationConnector.d.ts +26 -2
- package/dist/BaseIntegrationConnector.d.ts.map +1 -1
- package/dist/BaseIntegrationConnector.js +145 -23
- package/dist/BaseIntegrationConnector.js.map +1 -1
- package/dist/BaseRESTIntegrationConnector.d.ts +62 -8
- package/dist/BaseRESTIntegrationConnector.d.ts.map +1 -1
- package/dist/BaseRESTIntegrationConnector.js +200 -20
- package/dist/BaseRESTIntegrationConnector.js.map +1 -1
- package/dist/BatchIdentity.d.ts +47 -0
- package/dist/BatchIdentity.d.ts.map +1 -0
- package/dist/BatchIdentity.js +78 -0
- package/dist/BatchIdentity.js.map +1 -0
- package/dist/DeclaredSampleMerge.d.ts +74 -0
- package/dist/DeclaredSampleMerge.d.ts.map +1 -0
- package/dist/DeclaredSampleMerge.js +104 -0
- package/dist/DeclaredSampleMerge.js.map +1 -0
- package/dist/DiscoveryWatchdog.d.ts +103 -0
- package/dist/DiscoveryWatchdog.d.ts.map +1 -0
- package/dist/DiscoveryWatchdog.js +166 -0
- package/dist/DiscoveryWatchdog.js.map +1 -0
- package/dist/FieldMapValidation.d.ts +40 -0
- package/dist/FieldMapValidation.d.ts.map +1 -0
- package/dist/FieldMapValidation.js +58 -0
- package/dist/FieldMapValidation.js.map +1 -0
- package/dist/FieldMappingEngine.d.ts +1 -13
- package/dist/FieldMappingEngine.d.ts.map +1 -1
- package/dist/FieldMappingEngine.js +18 -3
- package/dist/FieldMappingEngine.js.map +1 -1
- package/dist/IntegrationConnectorCreationPipeline.d.ts +20 -0
- package/dist/IntegrationConnectorCreationPipeline.d.ts.map +1 -1
- package/dist/IntegrationConnectorCreationPipeline.js +203 -30
- package/dist/IntegrationConnectorCreationPipeline.js.map +1 -1
- package/dist/IntegrationEngine.d.ts +204 -1
- package/dist/IntegrationEngine.d.ts.map +1 -1
- package/dist/IntegrationEngine.js +1224 -262
- package/dist/IntegrationEngine.js.map +1 -1
- package/dist/IntegrationSchemaSync.d.ts +54 -2
- package/dist/IntegrationSchemaSync.d.ts.map +1 -1
- package/dist/IntegrationSchemaSync.js +122 -16
- package/dist/IntegrationSchemaSync.js.map +1 -1
- package/dist/KeylessRecordGuard.d.ts +56 -0
- package/dist/KeylessRecordGuard.d.ts.map +1 -0
- package/dist/KeylessRecordGuard.js +80 -0
- package/dist/KeylessRecordGuard.js.map +1 -0
- package/dist/ResumeConcurrency.d.ts +46 -0
- package/dist/ResumeConcurrency.d.ts.map +1 -0
- package/dist/ResumeConcurrency.js +74 -0
- package/dist/ResumeConcurrency.js.map +1 -0
- package/dist/RetryAfter.d.ts +50 -0
- package/dist/RetryAfter.d.ts.map +1 -0
- package/dist/RetryAfter.js +127 -0
- package/dist/RetryAfter.js.map +1 -0
- package/dist/RetryRunner.d.ts +26 -2
- package/dist/RetryRunner.d.ts.map +1 -1
- package/dist/RetryRunner.js +11 -3
- package/dist/RetryRunner.js.map +1 -1
- package/dist/StreamingDiscovery.d.ts +11 -0
- package/dist/StreamingDiscovery.d.ts.map +1 -1
- package/dist/StreamingDiscovery.js +13 -3
- package/dist/StreamingDiscovery.js.map +1 -1
- package/dist/SyncDirectives.d.ts +66 -0
- package/dist/SyncDirectives.d.ts.map +1 -0
- package/dist/SyncDirectives.js +123 -0
- package/dist/SyncDirectives.js.map +1 -0
- package/dist/SyncLogger.d.ts +2 -1
- package/dist/SyncLogger.d.ts.map +1 -1
- package/dist/SyncLogger.js +1 -0
- package/dist/SyncLogger.js.map +1 -1
- package/dist/WatermarkService.d.ts +15 -0
- package/dist/WatermarkService.d.ts.map +1 -1
- package/dist/WatermarkService.js +26 -0
- package/dist/WatermarkService.js.map +1 -1
- package/dist/WriteSerializer.d.ts +44 -0
- package/dist/WriteSerializer.d.ts.map +1 -0
- package/dist/WriteSerializer.js +70 -0
- package/dist/WriteSerializer.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +45 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +66 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Start-of-run validation for the MJ side of a field map.
|
|
3
|
+
*
|
|
4
|
+
* A field map's `DestinationFieldName` is the MJ column, in BOTH directions — pull writes it,
|
|
5
|
+
* push reads it back out to build the external payload. Nothing checks that the column exists.
|
|
6
|
+
* `BaseEntity.Set` looks the field up and, when it finds nothing, returns without doing anything
|
|
7
|
+
* and without saying anything: the value is dropped for every record, the entity is never dirtied
|
|
8
|
+
* by it, the save succeeds, and the run reports the rows as written. The observable result is a
|
|
9
|
+
* column's worth of data that never arrives, on a sync that reports success — and if that field is
|
|
10
|
+
* a key field, every record is re-created on the next run because it can never be matched again.
|
|
11
|
+
*
|
|
12
|
+
* This is the cheap check that turns that into one warning per map per run: the map is metadata,
|
|
13
|
+
* so it is verifiable the moment the run knows its entity, long before the first record is fetched.
|
|
14
|
+
* The decision is kept pure so it is tested without a provider or an entity.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Returns the ACTIVE field maps whose destination column does not exist on the target entity.
|
|
18
|
+
*
|
|
19
|
+
* Matching is case-insensitive, because `BaseEntity` resolves field names case-insensitively — a
|
|
20
|
+
* map that differs only in casing binds fine and is not a finding. An empty `entityFieldNames`
|
|
21
|
+
* means the caller could not resolve the entity at all; that is a different (already reported)
|
|
22
|
+
* condition, so nothing is returned rather than flagging every map.
|
|
23
|
+
*/
|
|
24
|
+
export function FindUnbindableFieldMaps(fieldMaps, entityFieldNames) {
|
|
25
|
+
if (entityFieldNames.length === 0)
|
|
26
|
+
return [];
|
|
27
|
+
const known = new Set(entityFieldNames.map(n => n.toLowerCase()));
|
|
28
|
+
const unbindable = [];
|
|
29
|
+
for (const fm of fieldMaps) {
|
|
30
|
+
if (fm.Status !== 'Active')
|
|
31
|
+
continue; // an inactive map is never applied
|
|
32
|
+
const dest = fm.DestinationFieldName;
|
|
33
|
+
if (!dest)
|
|
34
|
+
continue; // no destination is a different defect
|
|
35
|
+
if (known.has(dest.toLowerCase()))
|
|
36
|
+
continue;
|
|
37
|
+
unbindable.push({
|
|
38
|
+
SourceFieldName: fm.SourceFieldName,
|
|
39
|
+
DestinationFieldName: dest,
|
|
40
|
+
IsKeyField: fm.IsKeyField === true,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return unbindable;
|
|
44
|
+
}
|
|
45
|
+
/** The operator-facing sentence for a set of unbindable maps on one entity map. */
|
|
46
|
+
export function DescribeUnbindableFieldMaps(unbindable, externalObjectName, entityName) {
|
|
47
|
+
const pairs = unbindable.map(u => `${u.SourceFieldName} -> ${u.DestinationFieldName}${u.IsKeyField ? ' (KEY)' : ''}`);
|
|
48
|
+
const keyCount = unbindable.filter(u => u.IsKeyField).length;
|
|
49
|
+
return (`${unbindable.length} active field map(s) for '${externalObjectName}' target a column that does not exist ` +
|
|
50
|
+
`on '${entityName}': ${pairs.join(', ')}. Those values are silently dropped for every record — the write ` +
|
|
51
|
+
`succeeds without them` +
|
|
52
|
+
(keyCount > 0
|
|
53
|
+
? `, and because ${keyCount === 1 ? 'one of them is a KEY field' : `${keyCount} of them are KEY fields`}, ` +
|
|
54
|
+
`records cannot be matched on a later run and will be re-created.`
|
|
55
|
+
: `.`) +
|
|
56
|
+
` Apply the schema so the column exists, or point the map at a column that does.`);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=FieldMapValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldMapValidation.js","sourceRoot":"","sources":["../src/FieldMapValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiBH;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACnC,SAAyC,EACzC,gBAAmC;IAEnC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAyB,EAAE,CAAC;IAC5C,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QACzB,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS,CAAa,mCAAmC;QACrF,MAAM,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,SAAS,CAA8B,uCAAuC;QACzF,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAAE,SAAS;QAC5C,UAAU,CAAC,IAAI,CAAC;YACZ,eAAe,EAAE,EAAE,CAAC,eAAe;YACnC,oBAAoB,EAAE,IAAI;YAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,IAAI;SACrC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,2BAA2B,CACvC,UAAyC,EACzC,kBAA0B,EAC1B,UAAkB;IAElB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,eAAe,OAAO,CAAC,CAAC,oBAAoB,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtH,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAC7D,OAAO,CACH,GAAG,UAAU,CAAC,MAAM,6BAA6B,kBAAkB,wCAAwC;QAC3G,OAAO,UAAU,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mEAAmE;QAC1G,uBAAuB;QACvB,CAAC,QAAQ,GAAG,CAAC;YACT,CAAC,CAAC,iBAAiB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,GAAG,QAAQ,yBAAyB,IAAI;gBACzG,kEAAkE;YACpE,CAAC,CAAC,GAAG,CAAC;QACV,iFAAiF,CACpF,CAAC;AACN,CAAC"}
|
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
import type { ICompanyIntegrationFieldMap } from './entity-types.js';
|
|
2
2
|
import type { ExternalRecord, MappedRecord } from './types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Engine responsible for applying field-level mappings and transformations from external records to
|
|
5
|
-
* MJ entity fields.
|
|
6
|
-
*
|
|
7
|
-
* The per-value transform pipeline (direct / regex / split / combine / lookup / format / coerce /
|
|
8
|
-
* substring / custom) is owned by the shared {@link FieldTransformEngine} in `@memberjunction/global`
|
|
9
|
-
* and reused here, so integration sync and the rules-based bulk-update processor run the *exact same*
|
|
10
|
-
* transform implementation — one place to fix, one place to extend. This engine keeps only the
|
|
11
|
-
* integration-specific concerns: source flattening, field-map iteration, and unmapped-field overflow
|
|
12
|
-
* capture. See the Field Rules guide in `@memberjunction/global` for the shared engine, and
|
|
13
|
-
* `EntityFieldRules` in `@memberjunction/core` for the metadata-aware entity-update sibling.
|
|
14
|
-
*/
|
|
15
3
|
export declare class FieldMappingEngine {
|
|
16
4
|
/** The shared transform pipeline. Holds its own LRU cache of compiled custom expressions. */
|
|
17
5
|
private readonly transformEngine;
|
|
@@ -24,7 +12,7 @@ export declare class FieldMappingEngine {
|
|
|
24
12
|
* @param entityName - Target MJ entity name
|
|
25
13
|
* @returns Array of mapped records with transformed field values
|
|
26
14
|
*/
|
|
27
|
-
Apply(records: ExternalRecord[], fieldMaps: ICompanyIntegrationFieldMap[], entityName: string): MappedRecord[];
|
|
15
|
+
Apply(records: ExternalRecord[], fieldMaps: ICompanyIntegrationFieldMap[], entityName: string, excludedSourceNames?: ReadonlySet<string>): MappedRecord[];
|
|
28
16
|
/**
|
|
29
17
|
* Maps a single external record through all active field mappings.
|
|
30
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldMappingEngine.d.ts","sourceRoot":"","sources":["../src/FieldMappingEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FieldMappingEngine.d.ts","sourceRoot":"","sources":["../src/FieldMappingEngine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAkB/D,qBAAa,kBAAkB;IAC3B,6FAA6F;IAC7F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAE9D;;;;;;;;OAQG;IACI,KAAK,CACR,OAAO,EAAE,cAAc,EAAE,EACzB,SAAS,EAAE,2BAA2B,EAAE,EACxC,UAAU,EAAE,MAAM,EAClB,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAC1C,YAAY,EAAE;IAMjB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqDvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAWjC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FieldTransformEngine } from '@memberjunction/global';
|
|
2
2
|
import { computeUnmappedFields } from './CustomOverflow.js';
|
|
3
|
+
import { StripExcludedFields } from './SyncDirectives.js';
|
|
3
4
|
import { flattenRecord, hasNestedObject } from './RecordFlatten.js';
|
|
4
5
|
/**
|
|
5
6
|
* Engine responsible for applying field-level mappings and transformations from external records to
|
|
@@ -13,6 +14,8 @@ import { flattenRecord, hasNestedObject } from './RecordFlatten.js';
|
|
|
13
14
|
* capture. See the Field Rules guide in `@memberjunction/global` for the shared engine, and
|
|
14
15
|
* `EntityFieldRules` in `@memberjunction/core` for the metadata-aware entity-update sibling.
|
|
15
16
|
*/
|
|
17
|
+
/** Shared empty set for the common no-exclusions call. */
|
|
18
|
+
const EMPTY_EXCLUSIONS = new Set();
|
|
16
19
|
export class FieldMappingEngine {
|
|
17
20
|
constructor() {
|
|
18
21
|
/** The shared transform pipeline. Holds its own LRU cache of compiled custom expressions. */
|
|
@@ -27,14 +30,26 @@ export class FieldMappingEngine {
|
|
|
27
30
|
* @param entityName - Target MJ entity name
|
|
28
31
|
* @returns Array of mapped records with transformed field values
|
|
29
32
|
*/
|
|
30
|
-
Apply(records, fieldMaps, entityName) {
|
|
33
|
+
Apply(records, fieldMaps, entityName, excludedSourceNames) {
|
|
31
34
|
const activeMaps = fieldMaps.filter(fm => fm.Status === 'Active');
|
|
32
|
-
|
|
35
|
+
const excluded = excludedSourceNames ?? EMPTY_EXCLUSIONS;
|
|
36
|
+
return records.map(record => this.MapSingleRecord(record, activeMaps, entityName, excluded));
|
|
33
37
|
}
|
|
34
38
|
/**
|
|
35
39
|
* Maps a single external record through all active field mappings.
|
|
36
40
|
*/
|
|
37
|
-
MapSingleRecord(record, fieldMaps, entityName) {
|
|
41
|
+
MapSingleRecord(record, fieldMaps, entityName, excludedSourceNames) {
|
|
42
|
+
// Field-level exclusions strip BEFORE flatten and BEFORE mapping, so an excluded
|
|
43
|
+
// key reaches neither MappedFields, nor computeUnmappedFields (-> CustomOverflow),
|
|
44
|
+
// nor the content hash (whose basis is MappedFields). Deactivating a field map
|
|
45
|
+
// does NOT do this - the unmapped key would flow into overflow instead.
|
|
46
|
+
// No-exclusions and no-match paths return the original object: zero allocation.
|
|
47
|
+
if (excludedSourceNames.size > 0) {
|
|
48
|
+
const stripped = StripExcludedFields(record.Fields, excludedSourceNames);
|
|
49
|
+
if (stripped !== record.Fields) {
|
|
50
|
+
record = { ...record, Fields: stripped };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
38
53
|
// Flatten nested source objects to scalar columns (e.g. checkin_question.id →
|
|
39
54
|
// checkin_question_id) BEFORE mapping. The match keys on the mapped PK VALUE
|
|
40
55
|
// (MatchEngine.FindByKeyFields), so an object-valued source field would produce a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldMappingEngine.js","sourceRoot":"","sources":["../src/FieldMappingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKpE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACI,6FAA6F;QAC5E,oBAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"FieldMappingEngine.js","sourceRoot":"","sources":["../src/FieldMappingEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -204,6 +204,26 @@ export declare class IntegrationConnectorCreationPipeline {
|
|
|
204
204
|
private runInternal;
|
|
205
205
|
private StageConnectionTest;
|
|
206
206
|
private StageIntrospect;
|
|
207
|
+
/**
|
|
208
|
+
* Samples a DECLARED object over the read path and merges the result into it IN PLACE.
|
|
209
|
+
*
|
|
210
|
+
* Sampling is UNCONDITIONAL — it used to run only for a declared object with no fields, a gate
|
|
211
|
+
* on the wrong question, because streaming answers three things and a declaration can only
|
|
212
|
+
* pre-answer one of them. A declared key IS authoritative; which fields the source actually
|
|
213
|
+
* sends, and how wide their values are, only the data knows.
|
|
214
|
+
*
|
|
215
|
+
* The merge is one-directional (see DeclaredSampleMerge): sampling fills gaps and widens, never
|
|
216
|
+
* overrides. A fetch failure leaves the declaration exactly as it was, so the worst case is the
|
|
217
|
+
* behaviour that shipped before sampling existed.
|
|
218
|
+
*/
|
|
219
|
+
/**
|
|
220
|
+
* Surfaces a silent degradation: streaming failed, so the fields came from the catalog's own
|
|
221
|
+
* description instead of from records. That distinction is the whole value of sampling — the
|
|
222
|
+
* catalog states no observed widths — but from the outside the two are indistinguishable, so
|
|
223
|
+
* without this an object quietly keeps a guessed width and drops every longer value at sync.
|
|
224
|
+
*/
|
|
225
|
+
private ReportSampleFallback;
|
|
226
|
+
private SampleDeclaredObjectInPlace;
|
|
207
227
|
private StagePersist;
|
|
208
228
|
private StagePKClassify;
|
|
209
229
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationConnectorCreationPipeline.d.ts","sourceRoot":"","sources":["../src/IntegrationConnectorCreationPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,KAAK,EACR,0BAA0B,EAG7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEH,KAAK,sBAAsB,EAC9B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAEH,KAAK,kBAAkB,EAC1B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAuD,MAAM,+BAA+B,CAAC;AAE9H,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,KAAK,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"IntegrationConnectorCreationPipeline.d.ts","sourceRoot":"","sources":["../src/IntegrationConnectorCreationPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,KAAK,EACR,0BAA0B,EAG7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEH,KAAK,sBAAsB,EAC9B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAEH,KAAK,kBAAkB,EAC1B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAuD,MAAM,+BAA+B,CAAC;AAE9H,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,KAAK,EAAE,uBAAuB,EAAoB,MAAM,YAAY,CAAC;AAG5E,qDAAqD;AACrD,MAAM,WAAW,gCAAgC;IAC7C,uEAAuE;IACvE,SAAS,EAAE,wBAAwB,CAAC;IACpC,mDAAmD;IACnD,kBAAkB,EAAE,0BAA0B,CAAC;IAC/C,8CAA8C;IAC9C,WAAW,EAAE,QAAQ,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpE;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,WAAW,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1E;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,+CAA+C;AAC/C,MAAM,WAAW,+BAA+B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,UAAU,EAAE,KAAK,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,+EAA+E;IAC/E,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,EAAE,sBAAsB,CAAC;IACjC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,oCAAoC;IAC7C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAwF;IAC5H;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAe;IAC3D;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAe;IAC9D,0GAA0G;IAC1G,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAA8E;IAChH,2EAA2E;IAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAQ;IAE1D;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,KAAK,kBAAkB,GAGpC;IAED;;;;;;;;;;;;;;;;OAgBG;IACU,GAAG,CAAC,IAAI,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC;IA+ClG;;;;;;;;;;;;;;;;;OAiBG;YACW,oBAAoB;IAUlC;;;;;OAKG;YACW,qBAAqB;IAgDnC,wFAAwF;IACxF,OAAO,CAAC,MAAM,CAAC,eAAe;YAShB,WAAW;YA+FX,mBAAmB;YAiBnB,eAAe;IA6N7B;;;;;;;;;;;OAWG;IACH;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;YAWd,2BAA2B;YA2D3B,YAAY;YA2DZ,eAAe;CAoFhC"}
|
|
@@ -3,6 +3,7 @@ import { IntegrationProgressEmitter, } from '@memberjunction/integration-progres
|
|
|
3
3
|
import { SoftPKClassifier, } from '@memberjunction/integration-pk-classifier';
|
|
4
4
|
import { IntegrationEngineBase } from '@memberjunction/integration-engine-base';
|
|
5
5
|
import { IntegrationSchemaSync } from './IntegrationSchemaSync.js';
|
|
6
|
+
import { MergeDeclaredWithSample } from './DeclaredSampleMerge.js';
|
|
6
7
|
/**
|
|
7
8
|
* The unified pipeline that drives connector creation / refresh end-to-end:
|
|
8
9
|
*
|
|
@@ -313,6 +314,18 @@ export class IntegrationConnectorCreationPipeline {
|
|
|
313
314
|
async StageIntrospect(emitter, opts) {
|
|
314
315
|
emitter.stageStart('Introspect', 'Discovering objects and fields via connector');
|
|
315
316
|
const startMs = Date.now();
|
|
317
|
+
// Sampling is now per OBJECT, so this stage's cost scales with the catalog — and on a large
|
|
318
|
+
// one it is the run's whole cost. Execute races the stage against the run deadline, but
|
|
319
|
+
// `Promise.race` does not CANCEL the loser: without a check the sampling loops below keep
|
|
320
|
+
// issuing vendor requests, for hours, on behalf of a run that has already been failed and
|
|
321
|
+
// whose results nobody will read. So stop at the same wall the race enforces.
|
|
322
|
+
//
|
|
323
|
+
// Approximated from THIS stage's start rather than the run's: only ConnectionTest precedes
|
|
324
|
+
// it, so the two differ by one connectivity probe. The approximation can only ever stop
|
|
325
|
+
// work LATER than the race — never earlier — so it cannot truncate a run that would
|
|
326
|
+
// otherwise have completed.
|
|
327
|
+
const budgetMs = opts.RunDeadlineMs ?? IntegrationConnectorCreationPipeline.DEFAULT_RUN_DEADLINE_MS;
|
|
328
|
+
const outOfTime = () => budgetMs > 0 && Date.now() - startMs >= budgetMs;
|
|
316
329
|
try {
|
|
317
330
|
// U11 — determinate discovery progress: surface scanned/total on the structured
|
|
318
331
|
// stream (IntegrationTailRunEvents carries counts) so a client can render a real
|
|
@@ -335,49 +348,82 @@ export class IntegrationConnectorCreationPipeline {
|
|
|
335
348
|
// can't silently lose runtime discovery). PersistDiscoveredSchema is additive, so
|
|
336
349
|
// declared objects are preserved and runtime-only objects (e.g. an auth-gated file
|
|
337
350
|
// feed's streams) get created as Discovered. Errors are SURFACED, never swallowed.
|
|
338
|
-
const
|
|
351
|
+
const declaredNames = schema.Objects.map(o => o.ExternalName);
|
|
352
|
+
const seen = new Set(declaredNames.map(n => n.toLowerCase()));
|
|
339
353
|
let runtimeObjects = [];
|
|
354
|
+
// A DiscoverObjects failure used to end sampling for the ENTIRE run: the loop below was
|
|
355
|
+
// the only thing that sampled, and it iterated this (now empty) list. The declared
|
|
356
|
+
// catalog is still in hand — IntrospectSchema already returned it — so the union pass
|
|
357
|
+
// still samples every declared object. The failure is recorded on the checkpoint so a
|
|
358
|
+
// consumer can tell "the source has no other objects" from "we never got to ask".
|
|
359
|
+
let discoverObjectsFailed = false;
|
|
340
360
|
try {
|
|
341
361
|
runtimeObjects = await opts.Connector.DiscoverObjects(opts.CompanyIntegration, opts.ContextUser);
|
|
342
362
|
}
|
|
343
363
|
catch (err) {
|
|
344
364
|
const msg = err instanceof Error ? err.message : String(err);
|
|
365
|
+
discoverObjectsFailed = true;
|
|
345
366
|
emitter.stageError('Introspect', `DiscoverObjects failed: ${msg}`, { code: 'discover-objects-failed' });
|
|
346
367
|
console.error(`[IntrospectPipeline] DiscoverObjects failed: ${msg}`);
|
|
347
368
|
}
|
|
369
|
+
// §7 — a SCOPED introspection asked about a named subset. IntrospectSchema already
|
|
370
|
+
// honours the filter; DiscoverObjects does not take it, so without this the scoped run
|
|
371
|
+
// pulled and sampled the whole runtime catalog anyway.
|
|
372
|
+
const wantedNames = opts.IntrospectOptions?.ObjectNames;
|
|
373
|
+
const wanted = wantedNames && wantedNames.length > 0
|
|
374
|
+
? new Set(wantedNames.map(n => n.toLowerCase()))
|
|
375
|
+
: null;
|
|
376
|
+
const inScope = (name) => !wanted || wanted.has(name.toLowerCase());
|
|
377
|
+
const sampledDeclared = new Set();
|
|
348
378
|
let runtimeAdded = 0;
|
|
379
|
+
let unsampledForTime = 0;
|
|
380
|
+
// Per-object progress. Everything below this point is the expensive half of discovery —
|
|
381
|
+
// one read-path sample per object — and it emitted nothing, so a consumer watching a
|
|
382
|
+
// 23-object source saw the same silence as a 5-object one for however long it ran.
|
|
383
|
+
// The denominator is the union BOTH passes will sample (in-scope runtime objects plus
|
|
384
|
+
// in-scope declared ones) rather than either loop's own length, so the total is fixed
|
|
385
|
+
// before the first sample instead of revising upward when the second pass starts.
|
|
386
|
+
const sampleUniverse = new Set();
|
|
387
|
+
for (const d of runtimeObjects)
|
|
388
|
+
if (inScope(d.Name))
|
|
389
|
+
sampleUniverse.add(d.Name.toLowerCase());
|
|
390
|
+
for (const n of declaredNames)
|
|
391
|
+
if (inScope(n))
|
|
392
|
+
sampleUniverse.add(n.toLowerCase());
|
|
393
|
+
const sampleTotal = sampleUniverse.size;
|
|
394
|
+
// Keyed, not counted: a name the connector surfaces twice is sampled twice by the loop
|
|
395
|
+
// below, and a bare counter would then report "24 of 23".
|
|
396
|
+
const announced = new Set();
|
|
397
|
+
const announceSample = (name) => {
|
|
398
|
+
const k = name.toLowerCase();
|
|
399
|
+
if (announced.has(k))
|
|
400
|
+
return;
|
|
401
|
+
announced.add(k);
|
|
402
|
+
emitter.heartbeat('Introspect', `Sampling "${name}" (${announced.size} of ${sampleTotal})`, {
|
|
403
|
+
processed: announced.size,
|
|
404
|
+
totalKnown: sampleTotal,
|
|
405
|
+
skipped: unsampledForTime,
|
|
406
|
+
});
|
|
407
|
+
};
|
|
349
408
|
for (const d of runtimeObjects) {
|
|
350
409
|
const key = d.Name.toLowerCase();
|
|
410
|
+
if (!inScope(d.Name))
|
|
411
|
+
continue;
|
|
412
|
+
// Announced BEFORE the budget check so an exhausted budget reads as a run that
|
|
413
|
+
// reached the end of its object list, not one that stalled partway through it.
|
|
414
|
+
announceSample(d.Name);
|
|
415
|
+
if (outOfTime()) {
|
|
416
|
+
unsampledForTime++;
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
351
419
|
if (seen.has(key)) {
|
|
352
420
|
// §case-3 (data-only-discoverable): a DECLARED object the connector ALSO surfaces at
|
|
353
|
-
// runtime
|
|
354
|
-
//
|
|
355
|
-
// skipped it, it stayed field-less + PK-less, and ApplyAll dropped it — so the user's data
|
|
356
|
-
// for that object never landed. Discover its fields over the read path and populate the
|
|
357
|
-
// existing declared object IN PLACE so it becomes syncable.
|
|
421
|
+
// runtime. Sampling populates it IN PLACE so a name-only declaration becomes syncable
|
|
422
|
+
// and a fully-declared one gets its true widths and undeclared columns.
|
|
358
423
|
const existing = schema.Objects.find(o => o.ExternalName.toLowerCase() === key);
|
|
359
|
-
if (existing
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
existing.Fields = dfields.map(f => ({
|
|
363
|
-
Name: f.Name, Label: f.Label, Description: f.Description, SourceType: f.DataType,
|
|
364
|
-
IsRequired: f.IsRequired, AllowsNull: f.AllowsNull, MaxLength: f.MaxLength ?? null,
|
|
365
|
-
Precision: f.Precision ?? null, Scale: f.Scale ?? null, DefaultValue: f.DefaultValue ?? null,
|
|
366
|
-
// U1 — preserve `undefined` (no opinion); `?? false` fabricated a "not a PK/FK" opinion
|
|
367
|
-
IsPrimaryKey: f.IsPrimaryKey, IsUniqueKey: f.IsUniqueKey, IsReadOnly: f.IsReadOnly,
|
|
368
|
-
IsForeignKey: f.IsForeignKey, ForeignKeyTarget: f.ForeignKeyTarget ?? null,
|
|
369
|
-
}));
|
|
370
|
-
existing.PrimaryKeyFields = dfields.filter(f => f.IsPrimaryKey).map(f => f.Name);
|
|
371
|
-
existing.Relationships = dfields
|
|
372
|
-
.filter(f => (f.IsForeignKey ?? false) && f.ForeignKeyTarget)
|
|
373
|
-
.map(f => ({ FieldName: f.Name, TargetObject: f.ForeignKeyTarget, TargetField: 'ID' }));
|
|
374
|
-
console.log(`[IntrospectPipeline] declared field-less object "${d.Name}" → discovered ${dfields.length} fields via read path`);
|
|
375
|
-
}
|
|
376
|
-
catch (err) {
|
|
377
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
378
|
-
emitter.stageError('Introspect', `DiscoverFieldsViaFetch failed for declared field-less "${d.Name}": ${msg}`, { code: 'discover-fields-failed' });
|
|
379
|
-
console.error(`[IntrospectPipeline] DiscoverFieldsViaFetch failed for declared "${d.Name}": ${msg}`);
|
|
380
|
-
}
|
|
424
|
+
if (existing) {
|
|
425
|
+
await this.SampleDeclaredObjectInPlace(existing, d.Name, opts, emitter);
|
|
426
|
+
sampledDeclared.add(key);
|
|
381
427
|
}
|
|
382
428
|
continue;
|
|
383
429
|
}
|
|
@@ -388,7 +434,7 @@ export class IntegrationConnectorCreationPipeline {
|
|
|
388
434
|
// SAVE-LESS — stream as much of the feed as the budget allows so the PK decision is
|
|
389
435
|
// made on a statistically-significant sample, not a single (possibly tiny) file. No
|
|
390
436
|
// DB write happens here; the real save is the later ApplyAll → StartSync.
|
|
391
|
-
fields = await opts.Connector.DiscoverFieldsViaFetch(opts.CompanyIntegration, d.Name, opts.ContextUser);
|
|
437
|
+
fields = await opts.Connector.DiscoverFieldsViaFetch(opts.CompanyIntegration, d.Name, opts.ContextUser, { OnFallback: (err) => this.ReportSampleFallback(d.Name, err, emitter) });
|
|
392
438
|
}
|
|
393
439
|
catch (err) {
|
|
394
440
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -424,7 +470,43 @@ export class IntegrationConnectorCreationPipeline {
|
|
|
424
470
|
});
|
|
425
471
|
runtimeAdded++;
|
|
426
472
|
}
|
|
427
|
-
|
|
473
|
+
// The union's second half: DECLARED objects the runtime pass never reached. Sampling used
|
|
474
|
+
// to be reachable only through a DiscoverObjects hit, so an object the connector declares
|
|
475
|
+
// but does not re-surface at runtime — the normal shape for a catalog-driven connector, and
|
|
476
|
+
// for every object when DiscoverObjects fails — was never sampled at all. It kept whatever
|
|
477
|
+
// widths the catalog guessed (a truncation waiting to happen) and could only ever gain its
|
|
478
|
+
// undeclared columns later, one sync at a time, through the overflow path.
|
|
479
|
+
let declaredOnlySampled = 0;
|
|
480
|
+
for (const name of declaredNames) {
|
|
481
|
+
const key = name.toLowerCase();
|
|
482
|
+
if (sampledDeclared.has(key) || !inScope(name))
|
|
483
|
+
continue;
|
|
484
|
+
announceSample(name);
|
|
485
|
+
if (outOfTime()) {
|
|
486
|
+
unsampledForTime++;
|
|
487
|
+
continue;
|
|
488
|
+
}
|
|
489
|
+
const existing = schema.Objects.find(o => o.ExternalName.toLowerCase() === key);
|
|
490
|
+
if (!existing)
|
|
491
|
+
continue;
|
|
492
|
+
// Record it here too: two declared entries that differ only by case resolve to the
|
|
493
|
+
// SAME object, and sampling it twice doubles the most expensive part of discovery.
|
|
494
|
+
sampledDeclared.add(key);
|
|
495
|
+
await this.SampleDeclaredObjectInPlace(existing, name, opts, emitter);
|
|
496
|
+
declaredOnlySampled++;
|
|
497
|
+
}
|
|
498
|
+
if (unsampledForTime > 0) {
|
|
499
|
+
// NOT a failure: every unsampled object keeps its declaration, which is exactly the
|
|
500
|
+
// behaviour that shipped before sampling existed. But it is not the complete sample
|
|
501
|
+
// the run appears to have done, and the difference is real — unsampled objects keep
|
|
502
|
+
// catalog-guessed widths and gain undeclared columns only via the overflow path.
|
|
503
|
+
const msg = `Ran out of time after ${Math.round((Date.now() - startMs) / 1000)}s: ` +
|
|
504
|
+
`${unsampledForTime} object(s) were not sampled and keep their declared fields ` +
|
|
505
|
+
`and catalog widths. Raise RunDeadlineMs or introspect a named subset.`;
|
|
506
|
+
emitter.stageError('Introspect', msg, { code: 'sample-budget-exhausted' });
|
|
507
|
+
console.warn(`[IntrospectPipeline] ${msg}`);
|
|
508
|
+
}
|
|
509
|
+
console.log(`[IntrospectPipeline] declared=${declaredNames.length} runtime-added=${runtimeAdded} declared-only-sampled=${declaredOnlySampled} unsampled-for-time=${unsampledForTime} total=${schema.Objects.length}`);
|
|
428
510
|
const fieldCount = schema.Objects.reduce((acc, o) => acc + o.Fields.length, 0);
|
|
429
511
|
emitter.stageComplete('Introspect', {
|
|
430
512
|
processed: schema.Objects.length,
|
|
@@ -435,6 +517,8 @@ export class IntegrationConnectorCreationPipeline {
|
|
|
435
517
|
objectsDiscovered: schema.Objects.length,
|
|
436
518
|
fieldsDiscovered: fieldCount,
|
|
437
519
|
durationMs: Date.now() - startMs,
|
|
520
|
+
discoverObjectsFailed,
|
|
521
|
+
unsampledForTime,
|
|
438
522
|
});
|
|
439
523
|
return schema;
|
|
440
524
|
}
|
|
@@ -445,6 +529,82 @@ export class IntegrationConnectorCreationPipeline {
|
|
|
445
529
|
}
|
|
446
530
|
}
|
|
447
531
|
// ── Stage 3: persist ─────────────────────────────────────────────────
|
|
532
|
+
/**
|
|
533
|
+
* Samples a DECLARED object over the read path and merges the result into it IN PLACE.
|
|
534
|
+
*
|
|
535
|
+
* Sampling is UNCONDITIONAL — it used to run only for a declared object with no fields, a gate
|
|
536
|
+
* on the wrong question, because streaming answers three things and a declaration can only
|
|
537
|
+
* pre-answer one of them. A declared key IS authoritative; which fields the source actually
|
|
538
|
+
* sends, and how wide their values are, only the data knows.
|
|
539
|
+
*
|
|
540
|
+
* The merge is one-directional (see DeclaredSampleMerge): sampling fills gaps and widens, never
|
|
541
|
+
* overrides. A fetch failure leaves the declaration exactly as it was, so the worst case is the
|
|
542
|
+
* behaviour that shipped before sampling existed.
|
|
543
|
+
*/
|
|
544
|
+
/**
|
|
545
|
+
* Surfaces a silent degradation: streaming failed, so the fields came from the catalog's own
|
|
546
|
+
* description instead of from records. That distinction is the whole value of sampling — the
|
|
547
|
+
* catalog states no observed widths — but from the outside the two are indistinguishable, so
|
|
548
|
+
* without this an object quietly keeps a guessed width and drops every longer value at sync.
|
|
549
|
+
*/
|
|
550
|
+
ReportSampleFallback(objectName, err, emitter) {
|
|
551
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
552
|
+
emitter.stageError('Introspect', `Sampling fell back to the catalog description for "${objectName}" — real widths and ` +
|
|
553
|
+
`undeclared columns are unknown for this run: ${msg}`, { code: 'discover-fields-fallback' });
|
|
554
|
+
console.warn(`[IntrospectPipeline] sample fallback for "${objectName}": ${msg}`);
|
|
555
|
+
}
|
|
556
|
+
async SampleDeclaredObjectInPlace(existing, objectName, opts, emitter) {
|
|
557
|
+
try {
|
|
558
|
+
const dfields = await opts.Connector.DiscoverFieldsViaFetch(opts.CompanyIntegration, objectName, opts.ContextUser, { OnFallback: (err) => this.ReportSampleFallback(objectName, err, emitter) });
|
|
559
|
+
const sampled = dfields.map(f => ({
|
|
560
|
+
Name: f.Name, Label: f.Label, Description: f.Description, SourceType: f.DataType,
|
|
561
|
+
IsRequired: f.IsRequired, AllowsNull: f.AllowsNull, MaxLength: f.MaxLength ?? null,
|
|
562
|
+
Precision: f.Precision ?? null, Scale: f.Scale ?? null, DefaultValue: f.DefaultValue ?? null,
|
|
563
|
+
// U1 — preserve `undefined` (no opinion); `?? false` fabricated a "not a PK/FK" opinion
|
|
564
|
+
IsPrimaryKey: f.IsPrimaryKey, IsUniqueKey: f.IsUniqueKey, IsReadOnly: f.IsReadOnly,
|
|
565
|
+
IsForeignKey: f.IsForeignKey, ForeignKeyTarget: f.ForeignKeyTarget ?? null,
|
|
566
|
+
}));
|
|
567
|
+
if (existing.Fields.length === 0) {
|
|
568
|
+
// Nothing was declared, so there is nothing to defer to — the
|
|
569
|
+
// sample is the whole truth, exactly as before this change.
|
|
570
|
+
existing.Fields = sampled;
|
|
571
|
+
existing.PrimaryKeyFields = dfields.filter(f => f.IsPrimaryKey).map(f => f.Name);
|
|
572
|
+
existing.Relationships = dfields
|
|
573
|
+
.filter(f => (f.IsForeignKey ?? false) && f.ForeignKeyTarget)
|
|
574
|
+
.map(f => ({ FieldName: f.Name, TargetObject: f.ForeignKeyTarget, TargetField: 'ID' }));
|
|
575
|
+
console.log(`[IntrospectPipeline] declared field-less object "${objectName}" → discovered ${dfields.length} field(s) via read path`);
|
|
576
|
+
}
|
|
577
|
+
else {
|
|
578
|
+
const merged = MergeDeclaredWithSample(existing.Fields, sampled);
|
|
579
|
+
existing.Fields = merged.Fields;
|
|
580
|
+
// Only when the declaration named no key at all — a declared key
|
|
581
|
+
// stays authoritative even if the sample nominates another column,
|
|
582
|
+
// which is how a child table ends up keyed on its parent's FK.
|
|
583
|
+
if (merged.AdoptedKeyNames.length > 0) {
|
|
584
|
+
existing.PrimaryKeyFields = merged.AdoptedKeyNames;
|
|
585
|
+
}
|
|
586
|
+
// Relationships come from the declaration when there is one; a
|
|
587
|
+
// sampled FK target is a guess and must not rewrite a stated graph.
|
|
588
|
+
const parts = [
|
|
589
|
+
merged.AddedFieldNames.length ? `added ${merged.AddedFieldNames.length} undeclared field(s): ${merged.AddedFieldNames.join(', ')}` : null,
|
|
590
|
+
merged.WidenedFieldNames.length ? `widened ${merged.WidenedFieldNames.length}: ${merged.WidenedFieldNames.join(', ')}` : null,
|
|
591
|
+
merged.AdoptedKeyNames.length ? `adopted key [${merged.AdoptedKeyNames.join(', ')}]` : null,
|
|
592
|
+
].filter(Boolean);
|
|
593
|
+
console.log(`[IntrospectPipeline] declared object "${objectName}" sampled ${dfields.length} field(s) — ${parts.length ? parts.join('; ') : 'declaration already matched the data'}`);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
catch (err) {
|
|
597
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
598
|
+
// The declaration stands exactly as it was — the worst case of sampling
|
|
599
|
+
// failing is the behaviour that shipped before it. Say which was lost so
|
|
600
|
+
// an operator can tell "no columns at all" from "possibly narrow ones".
|
|
601
|
+
const lost = existing.Fields.length === 0
|
|
602
|
+
? 'object has NO fields and cannot be synced until this succeeds'
|
|
603
|
+
: 'keeping the declared fields; undeclared columns and true widths are unknown for this run';
|
|
604
|
+
emitter.stageError('Introspect', `DiscoverFieldsViaFetch failed for declared "${objectName}" — ${lost}: ${msg}`, { code: 'discover-fields-failed' });
|
|
605
|
+
console.error(`[IntrospectPipeline] DiscoverFieldsViaFetch failed for declared "${objectName}" — ${lost}: ${msg}`);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
448
608
|
async StagePersist(emitter, opts, sourceSchema) {
|
|
449
609
|
emitter.stageStart('Persist', 'Upserting IntegrationObject/Field rows with overlay precedence');
|
|
450
610
|
const startMs = Date.now();
|
|
@@ -465,6 +625,19 @@ export class IntegrationConnectorCreationPipeline {
|
|
|
465
625
|
for (const fieldLog of persistResult.FieldMergeLog) {
|
|
466
626
|
emitter.fieldAdded(fieldLog.ObjectName, fieldLog.FieldName, fieldLog.EffectiveSource);
|
|
467
627
|
}
|
|
628
|
+
// A comprehensive refresh deactivates declared objects/fields it did not observe. That is
|
|
629
|
+
// the intended behaviour, but it is also the point where a connector's declared field stops
|
|
630
|
+
// being materialized by every later apply — so say which ones, on the progress stream the
|
|
631
|
+
// caller is already reading, instead of only in a server console line.
|
|
632
|
+
if (persistResult.ObjectsDeactivated.length > 0 || persistResult.FieldsDeactivated.length > 0) {
|
|
633
|
+
emitter.warning('Persist', 'DECLARED_ROWS_DEACTIVATED', `${persistResult.ObjectsDeactivated.length} object(s) and ${persistResult.FieldsDeactivated.length} ` +
|
|
634
|
+
`field(s) were declared but not observed by this authoritative discovery, so they were deactivated ` +
|
|
635
|
+
`(never deleted) and will not be materialized by a later apply until they are observed again or ` +
|
|
636
|
+
`re-enabled.`, {
|
|
637
|
+
objects: persistResult.ObjectsDeactivated,
|
|
638
|
+
fields: persistResult.FieldsDeactivated,
|
|
639
|
+
});
|
|
640
|
+
}
|
|
468
641
|
emitter.stageComplete('Persist', {
|
|
469
642
|
processed: persistResult.ObjectsCreated + persistResult.ObjectsUpdated,
|
|
470
643
|
succeeded: persistResult.ObjectsCreated + persistResult.ObjectsUpdated,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationConnectorCreationPipeline.js","sourceRoot":"","sources":["../src/IntegrationConnectorCreationPipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IntegrationConnectorCreationPipeline.js","sourceRoot":"","sources":["../src/IntegrationConnectorCreationPipeline.ts"],"names":[],"mappings":"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"}
|