@skedulo/integration-sdk 0.1.1 → 0.2.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/CHANGELOG.md +9 -0
- package/README.md +59 -3
- package/dist/adapters/base.adapter.d.ts +61 -0
- package/dist/adapters/base.adapter.d.ts.map +1 -0
- package/dist/adapters/base.adapter.js +69 -0
- package/dist/adapters/base.adapter.js.map +1 -0
- package/dist/adapters/skedulo.adapter.d.ts +8 -0
- package/dist/adapters/skedulo.adapter.d.ts.map +1 -1
- package/dist/adapters/skedulo.adapter.js +77 -4
- package/dist/adapters/skedulo.adapter.js.map +1 -1
- package/dist/browser.d.ts +3 -2
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +3 -1
- package/dist/browser.js.map +1 -1
- package/dist/clients/dataflow.client.d.ts +1 -1
- package/dist/clients/dataflow.client.d.ts.map +1 -1
- package/dist/clients/dataflow.client.js +18 -4
- package/dist/clients/dataflow.client.js.map +1 -1
- package/dist/clients/proxy.client.d.ts +1 -0
- package/dist/clients/proxy.client.d.ts.map +1 -1
- package/dist/clients/proxy.client.js +5 -1
- package/dist/clients/proxy.client.js.map +1 -1
- package/dist/constants.d.ts +15 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +14 -1
- package/dist/constants.js.map +1 -1
- package/dist/context.d.ts +7 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -5
- package/dist/index.js.map +1 -1
- package/dist/interfaces/adapter.interface.d.ts +53 -19
- package/dist/interfaces/adapter.interface.d.ts.map +1 -1
- package/dist/interfaces/field-mapping.interface.d.ts +10 -5
- package/dist/interfaces/field-mapping.interface.d.ts.map +1 -1
- package/dist/interfaces/integration-capabilities.interface.d.ts +6 -0
- package/dist/interfaces/integration-capabilities.interface.d.ts.map +1 -1
- package/dist/interfaces/sync-flow-strategy.interface.d.ts +15 -0
- package/dist/interfaces/sync-flow-strategy.interface.d.ts.map +1 -0
- package/dist/interfaces/sync-flow-strategy.interface.js +3 -0
- package/dist/interfaces/sync-flow-strategy.interface.js.map +1 -0
- package/dist/interfaces/sync-pipeline.interface.d.ts +108 -0
- package/dist/interfaces/sync-pipeline.interface.d.ts.map +1 -0
- package/dist/interfaces/sync-pipeline.interface.js +12 -0
- package/dist/interfaces/sync-pipeline.interface.js.map +1 -0
- package/dist/services/external-id-sync.strategy.d.ts +13 -0
- package/dist/services/external-id-sync.strategy.d.ts.map +1 -0
- package/dist/services/external-id-sync.strategy.js +139 -0
- package/dist/services/external-id-sync.strategy.js.map +1 -0
- package/dist/services/field-mapping.service.d.ts +31 -0
- package/dist/services/field-mapping.service.d.ts.map +1 -0
- package/dist/services/field-mapping.service.js +131 -0
- package/dist/services/field-mapping.service.js.map +1 -0
- package/dist/services/id-mapping-sync.strategy.d.ts +19 -0
- package/dist/services/id-mapping-sync.strategy.d.ts.map +1 -0
- package/dist/services/id-mapping-sync.strategy.js +389 -0
- package/dist/services/id-mapping-sync.strategy.js.map +1 -0
- package/dist/services/id-mapping.service.d.ts +38 -0
- package/dist/services/id-mapping.service.d.ts.map +1 -0
- package/dist/services/id-mapping.service.js +207 -0
- package/dist/services/id-mapping.service.js.map +1 -0
- package/dist/services/preview.service.js +2 -2
- package/dist/services/preview.service.js.map +1 -1
- package/dist/services/sync-runner.d.ts +3 -0
- package/dist/services/sync-runner.d.ts.map +1 -1
- package/dist/services/sync-runner.js +22 -7
- package/dist/services/sync-runner.js.map +1 -1
- package/dist/services/sync.service.d.ts +3 -2
- package/dist/services/sync.service.d.ts.map +1 -1
- package/dist/services/sync.service.js +55 -104
- package/dist/services/sync.service.js.map +1 -1
- package/dist/utils/compileFilter.d.ts.map +1 -1
- package/dist/utils/compileFilter.js +16 -1
- package/dist/utils/compileFilter.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.IdMappingSyncStrategy = void 0;
|
|
15
|
+
const field_mapping_service_1 = require("./field-mapping.service");
|
|
16
|
+
// IdMappingSyncStrategy resolves cross-system identity via the IntegrationIdMapping
|
|
17
|
+
// custom object rather than ExternalId custom fields.
|
|
18
|
+
//
|
|
19
|
+
// Full sync pipeline — step ownership:
|
|
20
|
+
//
|
|
21
|
+
// SyncService (strategy-agnostic):
|
|
22
|
+
// Step 1 │ fetch source.fetch() yield record batches from source
|
|
23
|
+
// Step 2 │ beforeMap source.beforeMap() transform raw records, add synthetic fields
|
|
24
|
+
//
|
|
25
|
+
// IdMappingSyncStrategy.processBatch():
|
|
26
|
+
// Step 3 │ filter + map filterAndMapBatch() evaluate filter, run FME → pairs
|
|
27
|
+
// Step 4 │ resolve _resolveRelationshipsBatch() primary UID + lookup fields via mapping table
|
|
28
|
+
// Step 5 │ upsert target.upsert() insert (new record) or update (existing)
|
|
29
|
+
// Step 6 │ write back _writeMappingEntries() persist new source→target ID pairs
|
|
30
|
+
//
|
|
31
|
+
// Key differences from ExternalIdSyncStrategy:
|
|
32
|
+
// - target.resolveLookups() is NOT called; the mapping table replaces EQL-based lookup
|
|
33
|
+
// - Records with a mapping hit have __targetUID set → adapter updates by UID
|
|
34
|
+
// - Records without a mapping hit are treated as creates → adapter inserts → mapping written
|
|
35
|
+
class IdMappingSyncStrategy {
|
|
36
|
+
constructor(idMappingService) {
|
|
37
|
+
this.idMappingService = idMappingService;
|
|
38
|
+
}
|
|
39
|
+
async processBatch(ctx, flow, source, target, records, localFilter) {
|
|
40
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
41
|
+
const sourceIdField = (_b = (_a = source === null || source === void 0 ? void 0 : source.getRecordIdField) === null || _a === void 0 ? void 0 : _a.call(source)) !== null && _b !== void 0 ? _b : 'id';
|
|
42
|
+
// Step 3b: evaluate filter and run FME field mappings.
|
|
43
|
+
const _s = await (0, field_mapping_service_1.filterAndMapBatch)(flow, records, localFilter, sourceIdField, (msg) => ctx.logger.error(`dlq_write: dataFlowId=${flow.id} error=${msg}`)), { pairs, sourceIds: activeSourceIds } = _s, filterStats = __rest(_s, ["pairs", "sourceIds"]);
|
|
44
|
+
const stats = Object.assign({}, filterStats);
|
|
45
|
+
// Sync pipeline state so hooks can read live data and stats.
|
|
46
|
+
if (ctx.pipeline) {
|
|
47
|
+
ctx.pipeline.data = pairs;
|
|
48
|
+
ctx.pipeline.stats = stats;
|
|
49
|
+
}
|
|
50
|
+
if (pairs.length === 0)
|
|
51
|
+
return stats;
|
|
52
|
+
// afterMap hook — ctx.pipeline.data[].mapped is now populated.
|
|
53
|
+
await ((_c = source === null || source === void 0 ? void 0 : source.afterMap) === null || _c === void 0 ? void 0 : _c.call(source, ctx));
|
|
54
|
+
await ((_d = target.afterMap) === null || _d === void 0 ? void 0 : _d.call(target, ctx));
|
|
55
|
+
// Step 4: resolve primary identity + relationship fields via mapping table.
|
|
56
|
+
await ((_e = source === null || source === void 0 ? void 0 : source.beforeResolve) === null || _e === void 0 ? void 0 : _e.call(source, ctx));
|
|
57
|
+
await ((_f = target.beforeResolve) === null || _f === void 0 ? void 0 : _f.call(target, ctx));
|
|
58
|
+
const skipSet = await this._resolveRelationshipsBatch(ctx, flow, pairs, activeSourceIds, stats);
|
|
59
|
+
if (skipSet === null)
|
|
60
|
+
return stats;
|
|
61
|
+
await ((_g = source === null || source === void 0 ? void 0 : source.afterResolve) === null || _g === void 0 ? void 0 : _g.call(source, ctx));
|
|
62
|
+
await ((_h = target.afterResolve) === null || _h === void 0 ? void 0 : _h.call(target, ctx));
|
|
63
|
+
const activePairs = pairs.filter((_, i) => !skipSet.has(i));
|
|
64
|
+
const activeSrcIds = activeSourceIds.filter((_, i) => !skipSet.has(i));
|
|
65
|
+
if (activePairs.length === 0)
|
|
66
|
+
return stats;
|
|
67
|
+
const isCreate = activePairs.map((p) => p.mapped['__targetUID'] == null);
|
|
68
|
+
// Step 5: write to target — adapter performs insert (new) or update (existing).
|
|
69
|
+
await ((_j = source === null || source === void 0 ? void 0 : source.beforeUpsert) === null || _j === void 0 ? void 0 : _j.call(source, ctx));
|
|
70
|
+
await ((_k = target.beforeUpsert) === null || _k === void 0 ? void 0 : _k.call(target, ctx));
|
|
71
|
+
let outcomes;
|
|
72
|
+
try {
|
|
73
|
+
outcomes = await target.upsert(ctx, flow, activePairs.map((p) => p.mapped));
|
|
74
|
+
if (ctx.pipeline)
|
|
75
|
+
ctx.pipeline.outcomes = outcomes;
|
|
76
|
+
for (let i = 0; i < outcomes.length; i++) {
|
|
77
|
+
if (outcomes[i].status !== 'ok') {
|
|
78
|
+
const message = (_l = outcomes[i].error) !== null && _l !== void 0 ? _l : outcomes[i].status;
|
|
79
|
+
captureRecordError(ctx, 'upsert', i, message, (_m = activePairs[i]) === null || _m === void 0 ? void 0 : _m.raw);
|
|
80
|
+
ctx.logger.error(`upsert_failed: dataFlowId=${flow.id} recordIndex=${i} status=${outcomes[i].status} error=${message} data=${JSON.stringify((_p = (_o = activePairs[i]) === null || _o === void 0 ? void 0 : _o.raw) !== null && _p !== void 0 ? _p : {})}`);
|
|
81
|
+
stats.succeeded--;
|
|
82
|
+
stats.failed++;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
await ((_q = source === null || source === void 0 ? void 0 : source.afterUpsert) === null || _q === void 0 ? void 0 : _q.call(source, ctx));
|
|
86
|
+
await ((_r = target.afterUpsert) === null || _r === void 0 ? void 0 : _r.call(target, ctx));
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
90
|
+
captureProcessError(ctx, 'upsert', message, activePairs.length);
|
|
91
|
+
stats.failed += activePairs.length;
|
|
92
|
+
stats.succeeded -= activePairs.length;
|
|
93
|
+
return stats;
|
|
94
|
+
}
|
|
95
|
+
// Step 6: write back — persist new source→target ID pairs for created records.
|
|
96
|
+
await this._writeMappingEntries(ctx, flow, target, activeSrcIds, outcomes, isCreate);
|
|
97
|
+
return stats;
|
|
98
|
+
}
|
|
99
|
+
async handleDeleteEvent(ctx, flow, target, recordId) {
|
|
100
|
+
var _a, _b, _c, _d;
|
|
101
|
+
const mappingTable = await this.idMappingService.resolve(ctx, [
|
|
102
|
+
{
|
|
103
|
+
sourceSystem: (_a = flow.sourceSystem) !== null && _a !== void 0 ? _a : '',
|
|
104
|
+
targetSystem: (_b = flow.targetSystem) !== null && _b !== void 0 ? _b : '',
|
|
105
|
+
objectType: flow.targetObject,
|
|
106
|
+
sourceIds: [recordId],
|
|
107
|
+
},
|
|
108
|
+
]);
|
|
109
|
+
const targetId = mappingTable.get(`${flow.targetObject}:${recordId}`);
|
|
110
|
+
if (!targetId) {
|
|
111
|
+
ctx.logger.info(`id_mapping_delete_skip: no mapping for sourceId=${recordId} objectType=${flow.targetObject} — nothing to delete`);
|
|
112
|
+
return { status: 'synced', recordsProcessed: 0 };
|
|
113
|
+
}
|
|
114
|
+
if (ctx.pipeline)
|
|
115
|
+
ctx.pipeline.deleteIds = [recordId];
|
|
116
|
+
await ((_c = target.beforeDelete) === null || _c === void 0 ? void 0 : _c.call(target, ctx));
|
|
117
|
+
try {
|
|
118
|
+
if (target.deleteById) {
|
|
119
|
+
await target.deleteById(ctx, flow, [targetId]);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
await target.delete(ctx, flow, [targetId]);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
127
|
+
captureProcessError(ctx, 'delete', msg, 1);
|
|
128
|
+
ctx.logger.error(`id_mapping_delete_failed: sourceId=${recordId} targetId=${targetId} error=${msg} — mapping entry kept`);
|
|
129
|
+
return { status: 'failed', recordsProcessed: 0, error: msg };
|
|
130
|
+
}
|
|
131
|
+
await retryOnce(() => {
|
|
132
|
+
var _a, _b;
|
|
133
|
+
return this.idMappingService.deleteMappings(ctx, {
|
|
134
|
+
sourceSystem: (_a = flow.sourceSystem) !== null && _a !== void 0 ? _a : '',
|
|
135
|
+
targetSystem: (_b = flow.targetSystem) !== null && _b !== void 0 ? _b : '',
|
|
136
|
+
objectType: flow.targetObject,
|
|
137
|
+
sourceIds: [recordId],
|
|
138
|
+
});
|
|
139
|
+
}).catch((err) => ctx.logger.error(`mapping_delete_failed: sourceId=${recordId} error=${err instanceof Error ? err.message : String(err)}`));
|
|
140
|
+
await ((_d = target.afterDelete) === null || _d === void 0 ? void 0 : _d.call(target, ctx));
|
|
141
|
+
return { status: 'synced', recordsProcessed: 1 };
|
|
142
|
+
}
|
|
143
|
+
async handleUpsertEvent(ctx, flow, source, target, event) {
|
|
144
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
145
|
+
// Step 3b: evaluate filter and run FME field mappings (single record).
|
|
146
|
+
const mapped = await (0, field_mapping_service_1.executeMapping)(flow, event.payload);
|
|
147
|
+
if (!mapped) {
|
|
148
|
+
return { status: 'filtered', recordsProcessed: 0 };
|
|
149
|
+
}
|
|
150
|
+
if (ctx.pipeline) {
|
|
151
|
+
ctx.pipeline.data = [{ raw: event.payload, mapped }];
|
|
152
|
+
}
|
|
153
|
+
await ((_a = source === null || source === void 0 ? void 0 : source.afterMap) === null || _a === void 0 ? void 0 : _a.call(source, ctx));
|
|
154
|
+
await ((_b = target.afterMap) === null || _b === void 0 ? void 0 : _b.call(target, ctx));
|
|
155
|
+
const sourceIdField = (_d = (_c = source === null || source === void 0 ? void 0 : source.getRecordIdField) === null || _c === void 0 ? void 0 : _c.call(source)) !== null && _d !== void 0 ? _d : 'id';
|
|
156
|
+
const sourceId = String((_e = event.payload[sourceIdField]) !== null && _e !== void 0 ? _e : event.recordId);
|
|
157
|
+
// Step 4: resolve primary identity + relationship fields via mapping table.
|
|
158
|
+
await ((_f = source === null || source === void 0 ? void 0 : source.beforeResolve) === null || _f === void 0 ? void 0 : _f.call(source, ctx));
|
|
159
|
+
await ((_g = target.beforeResolve) === null || _g === void 0 ? void 0 : _g.call(target, ctx));
|
|
160
|
+
const terminal = await this._resolveRelationshipsOne(ctx, flow, mapped, sourceId);
|
|
161
|
+
if (terminal)
|
|
162
|
+
return terminal;
|
|
163
|
+
await ((_h = source === null || source === void 0 ? void 0 : source.afterResolve) === null || _h === void 0 ? void 0 : _h.call(source, ctx));
|
|
164
|
+
await ((_j = target.afterResolve) === null || _j === void 0 ? void 0 : _j.call(target, ctx));
|
|
165
|
+
// Step 5: write to target — adapter performs insert (new) or update (existing).
|
|
166
|
+
await ((_k = source === null || source === void 0 ? void 0 : source.beforeUpsert) === null || _k === void 0 ? void 0 : _k.call(source, ctx));
|
|
167
|
+
await ((_l = target.beforeUpsert) === null || _l === void 0 ? void 0 : _l.call(target, ctx));
|
|
168
|
+
const isCreate = mapped['__targetUID'] == null;
|
|
169
|
+
const outcomes = await target.upsert(ctx, flow, [mapped]);
|
|
170
|
+
const outcome = outcomes[0];
|
|
171
|
+
if (ctx.pipeline)
|
|
172
|
+
ctx.pipeline.outcomes = outcomes;
|
|
173
|
+
await ((_m = source === null || source === void 0 ? void 0 : source.afterUpsert) === null || _m === void 0 ? void 0 : _m.call(source, ctx));
|
|
174
|
+
await ((_o = target.afterUpsert) === null || _o === void 0 ? void 0 : _o.call(target, ctx));
|
|
175
|
+
if (outcome.status !== 'ok') {
|
|
176
|
+
ctx.logger.error(`push_failed: dataFlowId=${flow.id} recordId=${event.recordId} ` +
|
|
177
|
+
`class=${outcome.status} error=${(_p = outcome.error) !== null && _p !== void 0 ? _p : 'unknown'}`);
|
|
178
|
+
return { status: 'failed', recordsProcessed: 0, error: (_q = outcome.error) !== null && _q !== void 0 ? _q : outcome.status };
|
|
179
|
+
}
|
|
180
|
+
// Step 7: persist new source→target ID pair for a created record.
|
|
181
|
+
if (isCreate) {
|
|
182
|
+
await this._writeMappingEntries(ctx, flow, target, [sourceId], outcomes, [true]);
|
|
183
|
+
}
|
|
184
|
+
return { status: 'synced', recordsProcessed: 1 };
|
|
185
|
+
}
|
|
186
|
+
// Resolves primary identity and all relationship fields for a batch of pairs.
|
|
187
|
+
// Mutates pairs[i].mapped in place (sets __targetUID, substitutes lookup UIDs).
|
|
188
|
+
// Mutates stats in place (filtered/failed counts for onMissing handling).
|
|
189
|
+
// Returns the set of pair indices to skip, or null if the mapping table query failed.
|
|
190
|
+
async _resolveRelationshipsBatch(ctx, flow, pairs, activeSourceIds, stats) {
|
|
191
|
+
var _a, _b, _c, _d, _e, _f;
|
|
192
|
+
const lookupMappings = ((_b = (_a = flow.mappingConfig) === null || _a === void 0 ? void 0 : _a.mappings) !== null && _b !== void 0 ? _b : []).filter((m) => m.lookup);
|
|
193
|
+
// Collect all lookup source IDs grouped by object type for a single batch query.
|
|
194
|
+
const lookupIdsByObject = new Map();
|
|
195
|
+
for (const mapping of lookupMappings) {
|
|
196
|
+
const rule = mapping.lookup;
|
|
197
|
+
const values = pairs
|
|
198
|
+
.map((p) => (p.mapped[mapping.target] != null ? String(p.mapped[mapping.target]) : ''))
|
|
199
|
+
.filter((v) => v.length > 0);
|
|
200
|
+
if (values.length === 0)
|
|
201
|
+
continue;
|
|
202
|
+
const existing = (_c = lookupIdsByObject.get(rule.object)) !== null && _c !== void 0 ? _c : new Set();
|
|
203
|
+
for (const v of values)
|
|
204
|
+
existing.add(v);
|
|
205
|
+
lookupIdsByObject.set(rule.object, existing);
|
|
206
|
+
}
|
|
207
|
+
// Single resolve call covers primary IDs + all relationship IDs.
|
|
208
|
+
const resolveQueries = [
|
|
209
|
+
{
|
|
210
|
+
sourceSystem: (_d = flow.sourceSystem) !== null && _d !== void 0 ? _d : '',
|
|
211
|
+
targetSystem: (_e = flow.targetSystem) !== null && _e !== void 0 ? _e : '',
|
|
212
|
+
objectType: flow.targetObject,
|
|
213
|
+
sourceIds: activeSourceIds,
|
|
214
|
+
},
|
|
215
|
+
...[...lookupIdsByObject.entries()].map(([objectType, ids]) => {
|
|
216
|
+
var _a, _b;
|
|
217
|
+
return ({
|
|
218
|
+
sourceSystem: (_a = flow.sourceSystem) !== null && _a !== void 0 ? _a : '',
|
|
219
|
+
targetSystem: (_b = flow.targetSystem) !== null && _b !== void 0 ? _b : '',
|
|
220
|
+
objectType,
|
|
221
|
+
sourceIds: [...ids],
|
|
222
|
+
});
|
|
223
|
+
}),
|
|
224
|
+
];
|
|
225
|
+
let mappingTable;
|
|
226
|
+
try {
|
|
227
|
+
mappingTable = await this.idMappingService.resolve(ctx, resolveQueries);
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
231
|
+
captureProcessError(ctx, 'resolve', message, stats.succeeded);
|
|
232
|
+
stats.failed += stats.succeeded;
|
|
233
|
+
stats.succeeded = 0;
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
// Apply primary identity: __targetUID null = create, string = update.
|
|
237
|
+
// SkeduloAdapter uses key presence to switch insert vs. upsert-by-UID.
|
|
238
|
+
for (let i = 0; i < pairs.length; i++) {
|
|
239
|
+
pairs[i].mapped['__targetUID'] =
|
|
240
|
+
(_f = mappingTable.get(`${flow.targetObject}:${activeSourceIds[i]}`)) !== null && _f !== void 0 ? _f : null;
|
|
241
|
+
}
|
|
242
|
+
// Apply lookup (relationship) field resolution with onMissing handling.
|
|
243
|
+
const skipSet = new Set();
|
|
244
|
+
for (const mapping of lookupMappings) {
|
|
245
|
+
const rule = mapping.lookup;
|
|
246
|
+
for (let i = 0; i < pairs.length; i++) {
|
|
247
|
+
if (skipSet.has(i))
|
|
248
|
+
continue;
|
|
249
|
+
const rawValue = pairs[i].mapped[mapping.target] != null
|
|
250
|
+
? String(pairs[i].mapped[mapping.target])
|
|
251
|
+
: undefined;
|
|
252
|
+
if (!rawValue)
|
|
253
|
+
continue;
|
|
254
|
+
const resolved = mappingTable.get(`${rule.object}:${rawValue}`);
|
|
255
|
+
if (resolved) {
|
|
256
|
+
pairs[i].mapped[mapping.target] = resolved;
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
ctx.logger.warn(`id_mapping_lookup_miss: target=${mapping.target} object=${rule.object} ` +
|
|
260
|
+
`value=${rawValue} onMissing=${rule.onMissing}`);
|
|
261
|
+
if (rule.onMissing === 'skip' || rule.onMissing === 'error') {
|
|
262
|
+
skipSet.add(i);
|
|
263
|
+
stats.filtered += rule.onMissing === 'skip' ? 1 : 0;
|
|
264
|
+
stats.failed += rule.onMissing === 'error' ? 1 : 0;
|
|
265
|
+
stats.succeeded--;
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
// 'warn': remove the unresolved field and continue
|
|
269
|
+
delete pairs[i].mapped[mapping.target];
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return skipSet;
|
|
275
|
+
}
|
|
276
|
+
// Resolves primary identity and all relationship fields for a single event record.
|
|
277
|
+
// Mutates mapped in place (sets __targetUID, substitutes lookup UIDs).
|
|
278
|
+
// Returns a terminal SyncResult if a lookup miss requires skip/error, or null to continue.
|
|
279
|
+
async _resolveRelationshipsOne(ctx, flow, mapped, sourceId) {
|
|
280
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
281
|
+
const lookupMappings = ((_b = (_a = flow.mappingConfig) === null || _a === void 0 ? void 0 : _a.mappings) !== null && _b !== void 0 ? _b : []).filter((m) => m.lookup);
|
|
282
|
+
const resolveQueries = [
|
|
283
|
+
{
|
|
284
|
+
sourceSystem: (_c = flow.sourceSystem) !== null && _c !== void 0 ? _c : '',
|
|
285
|
+
targetSystem: (_d = flow.targetSystem) !== null && _d !== void 0 ? _d : '',
|
|
286
|
+
objectType: flow.targetObject,
|
|
287
|
+
sourceIds: [sourceId],
|
|
288
|
+
},
|
|
289
|
+
];
|
|
290
|
+
for (const mapping of lookupMappings) {
|
|
291
|
+
const rule = mapping.lookup;
|
|
292
|
+
const rawValue = mapped[mapping.target] != null ? String(mapped[mapping.target]) : '';
|
|
293
|
+
if (!rawValue)
|
|
294
|
+
continue;
|
|
295
|
+
resolveQueries.push({
|
|
296
|
+
sourceSystem: (_e = flow.sourceSystem) !== null && _e !== void 0 ? _e : '',
|
|
297
|
+
targetSystem: (_f = flow.targetSystem) !== null && _f !== void 0 ? _f : '',
|
|
298
|
+
objectType: rule.object,
|
|
299
|
+
sourceIds: [rawValue],
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
const mappingTable = await this.idMappingService.resolve(ctx, resolveQueries);
|
|
303
|
+
mapped['__targetUID'] = (_g = mappingTable.get(`${flow.targetObject}:${sourceId}`)) !== null && _g !== void 0 ? _g : null;
|
|
304
|
+
for (const mapping of lookupMappings) {
|
|
305
|
+
const rule = mapping.lookup;
|
|
306
|
+
const rawValue = mapped[mapping.target] != null ? String(mapped[mapping.target]) : undefined;
|
|
307
|
+
if (!rawValue)
|
|
308
|
+
continue;
|
|
309
|
+
const resolved = mappingTable.get(`${rule.object}:${rawValue}`);
|
|
310
|
+
if (resolved) {
|
|
311
|
+
mapped[mapping.target] = resolved;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
ctx.logger.warn(`id_mapping_lookup_miss: target=${mapping.target} object=${rule.object} ` +
|
|
315
|
+
`value=${rawValue} onMissing=${rule.onMissing}`);
|
|
316
|
+
if (rule.onMissing === 'skip') {
|
|
317
|
+
return { status: 'filtered', recordsProcessed: 0 };
|
|
318
|
+
}
|
|
319
|
+
if (rule.onMissing === 'error') {
|
|
320
|
+
return {
|
|
321
|
+
status: 'failed',
|
|
322
|
+
recordsProcessed: 0,
|
|
323
|
+
error: `lookup_miss: ${mapping.target} object=${rule.object} value=${rawValue}`,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
// 'warn': remove the unresolved field and continue
|
|
327
|
+
delete mapped[mapping.target];
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return null;
|
|
331
|
+
}
|
|
332
|
+
async _writeMappingEntries(ctx, flow, target, sourceIds, outcomes, isCreate) {
|
|
333
|
+
var _a, _b;
|
|
334
|
+
if (!target.buildMappingEntries)
|
|
335
|
+
return;
|
|
336
|
+
const createSourceIds = [];
|
|
337
|
+
const createOutcomes = [];
|
|
338
|
+
for (let i = 0; i < sourceIds.length; i++) {
|
|
339
|
+
if ((isCreate[i] || ((_a = outcomes[i]) === null || _a === void 0 ? void 0 : _a.wasCreated)) && ((_b = outcomes[i]) === null || _b === void 0 ? void 0 : _b.status) === 'ok') {
|
|
340
|
+
createSourceIds.push(sourceIds[i]);
|
|
341
|
+
createOutcomes.push(outcomes[i]);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
if (createSourceIds.length === 0)
|
|
345
|
+
return;
|
|
346
|
+
const idPairs = target.buildMappingEntries(createSourceIds, createOutcomes);
|
|
347
|
+
const entries = idPairs
|
|
348
|
+
.filter((p) => p.sourceId && p.targetId)
|
|
349
|
+
.map((p) => {
|
|
350
|
+
var _a, _b;
|
|
351
|
+
return ({
|
|
352
|
+
sourceSystem: (_a = flow.sourceSystem) !== null && _a !== void 0 ? _a : '',
|
|
353
|
+
targetSystem: (_b = flow.targetSystem) !== null && _b !== void 0 ? _b : '',
|
|
354
|
+
objectType: flow.targetObject,
|
|
355
|
+
sourceId: p.sourceId,
|
|
356
|
+
targetId: p.targetId,
|
|
357
|
+
dataFlowId: String(flow.id),
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
if (entries.length === 0)
|
|
361
|
+
return;
|
|
362
|
+
await retryOnce(() => this.idMappingService.upsertMappings(ctx, entries)).catch((err) => {
|
|
363
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
364
|
+
captureProcessError(ctx, 'mapping_write', message, entries.length);
|
|
365
|
+
ctx.logger.error(`mapping_write_failed: dataFlowId=${flow.id} error=${message} entries=${JSON.stringify(entries)}`);
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
exports.IdMappingSyncStrategy = IdMappingSyncStrategy;
|
|
370
|
+
function captureRecordError(ctx, stage, recordIndex, message, data) {
|
|
371
|
+
var _a;
|
|
372
|
+
(_a = ctx.pipeline) === null || _a === void 0 ? void 0 : _a.errors.push({ stage, message, recordIndex, data });
|
|
373
|
+
}
|
|
374
|
+
function captureProcessError(ctx, stage, message, affectedCount) {
|
|
375
|
+
var _a;
|
|
376
|
+
if (ctx.pipeline)
|
|
377
|
+
ctx.pipeline.failedAtStage = stage;
|
|
378
|
+
(_a = ctx.pipeline) === null || _a === void 0 ? void 0 : _a.errors.push({ stage, message });
|
|
379
|
+
ctx.logger.error(`process_failed: stage=${stage} message=${message} affectedRecords=${affectedCount}`);
|
|
380
|
+
}
|
|
381
|
+
async function retryOnce(fn) {
|
|
382
|
+
try {
|
|
383
|
+
return await fn();
|
|
384
|
+
}
|
|
385
|
+
catch (_a) {
|
|
386
|
+
return await fn();
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=id-mapping-sync.strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-mapping-sync.strategy.js","sourceRoot":"","sources":["../../src/services/id-mapping-sync.strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { IntegrationContext } from '../context';
|
|
2
|
+
export interface MappingEntry {
|
|
3
|
+
sourceSystem: string;
|
|
4
|
+
targetSystem: string;
|
|
5
|
+
objectType: string;
|
|
6
|
+
sourceId: string;
|
|
7
|
+
targetId: string;
|
|
8
|
+
dataFlowId?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class IdMappingService {
|
|
11
|
+
/**
|
|
12
|
+
* Batch query: resolve source IDs to target IDs across multiple object types.
|
|
13
|
+
* Returns a map keyed by 'ObjectType:sourceId'.
|
|
14
|
+
*/
|
|
15
|
+
resolve(ctx: IntegrationContext, queries: Array<{
|
|
16
|
+
sourceSystem: string;
|
|
17
|
+
targetSystem: string;
|
|
18
|
+
objectType: string;
|
|
19
|
+
sourceIds: string[];
|
|
20
|
+
}>): Promise<Map<string, string>>;
|
|
21
|
+
/** Idempotent write — upserts on UniqueKey. */
|
|
22
|
+
upsertMappings(ctx: IntegrationContext, entries: MappingEntry[]): Promise<void>;
|
|
23
|
+
/** Delete mapping entries for a given set of source IDs. Called after a successful target delete. */
|
|
24
|
+
deleteMappings(ctx: IntegrationContext, params: {
|
|
25
|
+
sourceSystem: string;
|
|
26
|
+
targetSystem: string;
|
|
27
|
+
objectType: string;
|
|
28
|
+
sourceIds: string[];
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
/** Bulk cleanup when a flow is deleted. Paginated so large mapping tables don't OOM. */
|
|
31
|
+
deleteByDataFlowId(ctx: IntegrationContext, dataFlowId: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Idempotent schema bootstrap. Checks before creating — safe to call on every /setup request.
|
|
34
|
+
* Must be called from the integration's /setup endpoint before any idMapping flows run.
|
|
35
|
+
*/
|
|
36
|
+
static ensureSchema(ctx: IntegrationContext): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=id-mapping.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-mapping.service.d.ts","sourceRoot":"","sources":["../../src/services/id-mapping.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIrD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiDD,qBAAa,gBAAgB;IAC3B;;;OAGG;IACG,OAAO,CACX,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,KAAK,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC,GACD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA0C/B,+CAA+C;IACzC,cAAc,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBrF,qGAAqG;IAC/F,cAAc,CAClB,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,GACA,OAAO,CAAC,IAAI,CAAC;IAoChB,wFAAwF;IAClF,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCpF;;;OAGG;WACU,YAAY,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAgClE"}
|