@skedulo/integration-sdk 0.5.4 → 0.5.6

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.
Files changed (70) hide show
  1. package/CHANGELOG.md +2 -1
  2. package/dist/actions/event/on-skedulo.action.d.ts.map +1 -1
  3. package/dist/actions/event/on-skedulo.action.js +12 -11
  4. package/dist/actions/event/on-skedulo.action.js.map +1 -1
  5. package/dist/actions/event/on-vendor.action.d.ts.map +1 -1
  6. package/dist/actions/event/on-vendor.action.js +3 -2
  7. package/dist/actions/event/on-vendor.action.js.map +1 -1
  8. package/dist/actions/sync/run-flow.action.js +24 -13
  9. package/dist/actions/sync/run-flow.action.js.map +1 -1
  10. package/dist/actions/sync/run-job.action.d.ts.map +1 -1
  11. package/dist/actions/sync/run-job.action.js +20 -3
  12. package/dist/actions/sync/run-job.action.js.map +1 -1
  13. package/dist/actions/sync/types.d.ts +3 -2
  14. package/dist/actions/sync/types.d.ts.map +1 -1
  15. package/dist/adapters/skedulo.adapter.d.ts.map +1 -1
  16. package/dist/adapters/skedulo.adapter.js +2 -1
  17. package/dist/adapters/skedulo.adapter.js.map +1 -1
  18. package/dist/browser.d.ts +2 -0
  19. package/dist/browser.d.ts.map +1 -1
  20. package/dist/browser.js +5 -1
  21. package/dist/browser.js.map +1 -1
  22. package/dist/clients/integration-log.client.d.ts +14 -0
  23. package/dist/clients/integration-log.client.d.ts.map +1 -0
  24. package/dist/clients/integration-log.client.js +24 -0
  25. package/dist/clients/integration-log.client.js.map +1 -0
  26. package/dist/constants.d.ts +1 -0
  27. package/dist/constants.d.ts.map +1 -1
  28. package/dist/constants.js +1 -0
  29. package/dist/constants.js.map +1 -1
  30. package/dist/context.d.ts +8 -0
  31. package/dist/context.d.ts.map +1 -1
  32. package/dist/context.js +5 -0
  33. package/dist/context.js.map +1 -1
  34. package/dist/index.d.ts +4 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +10 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/interfaces/integration-log.interface.d.ts +38 -0
  39. package/dist/interfaces/integration-log.interface.d.ts.map +1 -0
  40. package/dist/interfaces/integration-log.interface.js +14 -0
  41. package/dist/interfaces/integration-log.interface.js.map +1 -0
  42. package/dist/interfaces/sync-result.interface.d.ts +12 -0
  43. package/dist/interfaces/sync-result.interface.d.ts.map +1 -1
  44. package/dist/services/external-id-sync.strategy.d.ts.map +1 -1
  45. package/dist/services/external-id-sync.strategy.js +10 -6
  46. package/dist/services/external-id-sync.strategy.js.map +1 -1
  47. package/dist/services/id-mapping-sync.strategy.d.ts +2 -0
  48. package/dist/services/id-mapping-sync.strategy.d.ts.map +1 -1
  49. package/dist/services/id-mapping-sync.strategy.js +146 -32
  50. package/dist/services/id-mapping-sync.strategy.js.map +1 -1
  51. package/dist/services/id-mapping.service.d.ts +27 -0
  52. package/dist/services/id-mapping.service.d.ts.map +1 -1
  53. package/dist/services/id-mapping.service.js +70 -0
  54. package/dist/services/id-mapping.service.js.map +1 -1
  55. package/dist/services/run-log-builder.d.ts +35 -0
  56. package/dist/services/run-log-builder.d.ts.map +1 -0
  57. package/dist/services/run-log-builder.js +61 -0
  58. package/dist/services/run-log-builder.js.map +1 -0
  59. package/dist/services/sync-runner.d.ts +2 -5
  60. package/dist/services/sync-runner.d.ts.map +1 -1
  61. package/dist/services/sync-runner.js +159 -27
  62. package/dist/services/sync-runner.js.map +1 -1
  63. package/dist/services/sync.service.d.ts.map +1 -1
  64. package/dist/services/sync.service.js +22 -1
  65. package/dist/services/sync.service.js.map +1 -1
  66. package/dist/utils/helpers.d.ts +2 -0
  67. package/dist/utils/helpers.d.ts.map +1 -1
  68. package/dist/utils/helpers.js +8 -0
  69. package/dist/utils/helpers.js.map +1 -1
  70. package/package.json +1 -1
package/dist/context.js CHANGED
@@ -8,6 +8,7 @@ const pulse_solution_services_1 = require("@skedulo/pulse-solution-services");
8
8
  const proxy_client_1 = require("./clients/proxy.client");
9
9
  const dataflow_client_1 = require("./clients/dataflow.client");
10
10
  const integration_config_client_1 = require("./clients/integration-config.client");
11
+ const integration_log_client_1 = require("./clients/integration-log.client");
11
12
  const dataflow_service_1 = require("./services/dataflow.service");
12
13
  const metrics_1 = require("./actions/utils/metrics");
13
14
  class IntegrationContext extends pulse_solution_services_1.ExecutionContext {
@@ -48,6 +49,10 @@ class IntegrationContext extends pulse_solution_services_1.ExecutionContext {
48
49
  var _a;
49
50
  return ((_a = this._integrationConfigClient) !== null && _a !== void 0 ? _a : (this._integrationConfigClient = new integration_config_client_1.IntegrationConfigClient(this._baseConfig, this.executionOptions)));
50
51
  }
52
+ get integrationLogClient() {
53
+ var _a;
54
+ return ((_a = this._integrationLogClient) !== null && _a !== void 0 ? _a : (this._integrationLogClient = new integration_log_client_1.IntegrationLogClient(this._baseConfig, this.executionOptions)));
55
+ }
51
56
  get dataFlowService() {
52
57
  var _a;
53
58
  return ((_a = this._dataFlowService) !== null && _a !== void 0 ? _a : (this._dataFlowService = new dataflow_service_1.DataFlowService(this.dataFlowClient)));
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AAkGA,4DAOC;AASD,oDAQC;AA1HD,mCAAoC;AACpC,8EAAoE;AAEpE,yDAAqD;AACrD,+DAA2D;AAC3D,mFAA8E;AAC9E,kEAA8D;AAC9D,qDAAoE;AAWpE,MAAa,kBAAmB,SAAQ,0CAAgB;IAgBtD,YACE,WAAgB,EAChB,eAAuB,EACvB,mBAA8C,EAAE,EAChD,SAAmC,EAAE;;QAErC,KAAK,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,MAAA,MAAM,CAAC,SAAS,mCAAI,IAAA,mBAAU,GAAE,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,qBAAW,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,WAAgB,EAChB,eAAuB,EACvB,mBAA8C,EAAE,EAChD,SAAmC,EAAE;QAErC,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAY,WAAW;QACrB,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK;YACrC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO;SACzC,CAAC;IACJ,CAAC;IAED,IAAI,WAAW;;QACb,OAAO,OAAC,IAAI,CAAC,YAAY,oCAAjB,IAAI,CAAC,YAAY,GAAK,IAAI,0BAAW,CAC3C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,gBAAgB,CACtB,EAAC,CAAC;IACL,CAAC;IAED,IAAI,cAAc;;QAChB,OAAO,OAAC,IAAI,CAAC,eAAe,oCAApB,IAAI,CAAC,eAAe,GAAK,IAAI,gCAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAC,CAAC;IAChG,CAAC;IAED,IAAI,uBAAuB;;QACzB,OAAO,OAAC,IAAI,CAAC,wBAAwB,oCAA7B,IAAI,CAAC,wBAAwB,GAAK,IAAI,mDAAuB,CACnE,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,gBAAgB,CACtB,EAAC,CAAC;IACL,CAAC;IAED,IAAI,eAAe;;QACjB,OAAO,OAAC,IAAI,CAAC,gBAAgB,oCAArB,IAAI,CAAC,gBAAgB,GAAK,IAAI,kCAAe,CAAC,IAAI,CAAC,cAAc,CAAC,EAAC,CAAC;IAC9E,CAAC;CACF;AA9ED,gDA8EC;AAED,SAAgB,wBAAwB,CACtC,WAAgB,EAChB,eAAuB,EACvB,mBAA8C,EAAE,EAChD,SAAmC,EAAE;IAErC,OAAO,kBAAkB,CAAC,aAAa,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAClG,CAAC;AAOD,yEAAyE;AACzE,8DAA8D;AAC9D,SAAgB,oBAAoB,CAClC,OAA8B;IAE9B,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,CACpC,wBAAwB,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,EAAE;QAC7D,aAAa;QACb,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,10 @@ export type { HttpMethod, ProxyRequestOptions, ProxyResult } from './clients/pro
7
7
  export { DataFlowClient } from './clients/dataflow.client';
8
8
  export type { DataFlowListParams } from './clients/dataflow.client';
9
9
  export { IntegrationConfigClient } from './clients/integration-config.client';
10
+ export { IntegrationLogClient } from './clients/integration-log.client';
11
+ export { LogLevel, LogKind, LogSource } from './interfaces/integration-log.interface';
12
+ export type { IntegrationLogEntry } from './interfaces/integration-log.interface';
13
+ export { buildRunLogEntries } from './services/run-log-builder';
10
14
  export { DataFlowService } from './services/dataflow.service';
11
15
  export type { ScheduledJob, IntegrationConfig } from './interfaces/scheduled-job.interface';
12
16
  export { asIntegrationConfig, JobIntervalUnit } from './interfaces/scheduled-job.interface';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.withAudit = exports.requireAdminMiddleware = exports.compose = exports.defineAction = exports.categoryToStatus = exports.categoryRetryable = exports.UpstreamTransientError = exports.UpstreamPermanentError = exports.PreconditionFailedError = exports.NotImplementedError = exports.NotFoundError = exports.InvalidInputError = exports.ForbiddenError = exports.ConflictError = exports.ActionError = exports.SCHEDULED_JOB_NAME_HEADER = exports.ACTIONS = exports.ACTION_HEADER = exports.SyncStage = exports.BaseAdapterHandler = exports.AdapterRegistry = exports.executeMappingDetailed = exports.evaluateFilter = exports.executeMapping = exports.IdMappingService = exports.BaseAdapter = exports.skeduloAdapter = exports.SkeduloAdapter = exports.AdapterRoleError = exports.AdapterNotRegisteredError = exports.SyncRunner = exports.SyncService = exports.PreviewService = exports.JobIntervalUnit = exports.asIntegrationConfig = exports.DataFlowService = exports.IntegrationConfigClient = exports.DataFlowClient = exports.ProxyClient = exports.createContextFactory = exports.createIntegrationContext = exports.IntegrationContext = exports.SKEDULO_SYSTEM = exports.DataFlowStatus = exports.LookupStrategy = exports.SyncMode = exports.AdapterRole = exports.LOOKUP_CHUNK_SIZE = exports.OperationName = exports.Strategy = void 0;
18
- exports.humanizeFieldName = exports.requireAdmin = exports.isAdminRequest = exports.getQueryParam = exports.errorResponse = exports.okResponse = exports.unwrapProxy = exports.mockProxyResult = exports.runAdapterContractTests = exports.noopMetrics = exports.withMetrics = exports.withLogging = void 0;
17
+ exports.categoryRetryable = exports.UpstreamTransientError = exports.UpstreamPermanentError = exports.PreconditionFailedError = exports.NotImplementedError = exports.NotFoundError = exports.InvalidInputError = exports.ForbiddenError = exports.ConflictError = exports.ActionError = exports.SCHEDULED_JOB_NAME_HEADER = exports.ACTIONS = exports.ACTION_HEADER = exports.SyncStage = exports.BaseAdapterHandler = exports.AdapterRegistry = exports.executeMappingDetailed = exports.evaluateFilter = exports.executeMapping = exports.IdMappingService = exports.BaseAdapter = exports.skeduloAdapter = exports.SkeduloAdapter = exports.AdapterRoleError = exports.AdapterNotRegisteredError = exports.SyncRunner = exports.SyncService = exports.PreviewService = exports.JobIntervalUnit = exports.asIntegrationConfig = exports.DataFlowService = exports.buildRunLogEntries = exports.LogSource = exports.LogKind = exports.LogLevel = exports.IntegrationLogClient = exports.IntegrationConfigClient = exports.DataFlowClient = exports.ProxyClient = exports.createContextFactory = exports.createIntegrationContext = exports.IntegrationContext = exports.SKEDULO_SYSTEM = exports.DataFlowStatus = exports.LookupStrategy = exports.SyncMode = exports.AdapterRole = exports.LOOKUP_CHUNK_SIZE = exports.OperationName = exports.Strategy = void 0;
18
+ exports.humanizeFieldName = exports.requireAdmin = exports.isAdminRequest = exports.getQueryParam = exports.errorResponse = exports.okResponse = exports.unwrapProxy = exports.mockProxyResult = exports.runAdapterContractTests = exports.noopMetrics = exports.withMetrics = exports.withLogging = exports.withAudit = exports.requireAdminMiddleware = exports.compose = exports.defineAction = exports.categoryToStatus = void 0;
19
19
  __exportStar(require("./types"), exports);
20
20
  var constants_1 = require("./constants");
21
21
  Object.defineProperty(exports, "Strategy", { enumerable: true, get: function () { return constants_1.Strategy; } });
@@ -36,6 +36,14 @@ var dataflow_client_1 = require("./clients/dataflow.client");
36
36
  Object.defineProperty(exports, "DataFlowClient", { enumerable: true, get: function () { return dataflow_client_1.DataFlowClient; } });
37
37
  var integration_config_client_1 = require("./clients/integration-config.client");
38
38
  Object.defineProperty(exports, "IntegrationConfigClient", { enumerable: true, get: function () { return integration_config_client_1.IntegrationConfigClient; } });
39
+ var integration_log_client_1 = require("./clients/integration-log.client");
40
+ Object.defineProperty(exports, "IntegrationLogClient", { enumerable: true, get: function () { return integration_log_client_1.IntegrationLogClient; } });
41
+ var integration_log_interface_1 = require("./interfaces/integration-log.interface");
42
+ Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return integration_log_interface_1.LogLevel; } });
43
+ Object.defineProperty(exports, "LogKind", { enumerable: true, get: function () { return integration_log_interface_1.LogKind; } });
44
+ Object.defineProperty(exports, "LogSource", { enumerable: true, get: function () { return integration_log_interface_1.LogSource; } });
45
+ var run_log_builder_1 = require("./services/run-log-builder");
46
+ Object.defineProperty(exports, "buildRunLogEntries", { enumerable: true, get: function () { return run_log_builder_1.buildRunLogEntries; } });
39
47
  var dataflow_service_1 = require("./services/dataflow.service");
40
48
  Object.defineProperty(exports, "DataFlowService", { enumerable: true, get: function () { return dataflow_service_1.DataFlowService; } });
41
49
  var scheduled_job_interface_1 = require("./interfaces/scheduled-job.interface");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCASqB;AARnB,qGAAA,QAAQ,OAAA;AACR,0GAAA,aAAa,OAAA;AACb,8GAAA,iBAAiB,OAAA;AACjB,wGAAA,WAAW,OAAA;AACX,qGAAA,QAAQ,OAAA;AACR,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AAEhB,qCAA+F;AAAtF,6GAAA,kBAAkB,OAAA;AAAE,mHAAA,wBAAwB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AAE3E,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAEpB,6DAA2D;AAAlD,iHAAA,cAAc,OAAA;AAEvB,iFAA8E;AAArE,oIAAA,uBAAuB,OAAA;AAChC,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AAExB,gFAA4F;AAAnF,8HAAA,mBAAmB,OAAA;AAAE,0HAAA,eAAe,OAAA;AAC7C,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,sDAAiG;AAAxF,yGAAA,UAAU,OAAA;AAAE,wHAAA,yBAAyB,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AAChE,8DAA4E;AAAnE,iHAAA,cAAc,OAAA;AAAE,iHAAA,cAAc,OAAA;AACvC,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AAEpB,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA;AAGzB,0EAI0C;AAHxC,uHAAA,cAAc,OAAA;AACd,uHAAA,cAAc,OAAA;AACd,+HAAA,sBAAsB,OAAA;AAGxB,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AACxB,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAc3B,gFAAiE;AAAxD,oHAAA,SAAS,OAAA;AAGlB,gFAAgF;AAChF,6DAAiG;AAAxF,6GAAA,aAAa,OAAA;AAAE,uGAAA,OAAO,OAAA;AAAE,yHAAA,yBAAyB,OAAA;AAG1D,mEAAmE;AACnE,iDAYgC;AAX9B,qGAAA,WAAW,OAAA;AACX,uGAAA,aAAa,OAAA;AACb,wGAAA,cAAc,OAAA;AACd,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AACb,6GAAA,mBAAmB,OAAA;AACnB,iHAAA,uBAAuB,OAAA;AACvB,gHAAA,sBAAsB,OAAA;AACtB,gHAAA,sBAAsB,OAAA;AACtB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAGlB,+DAA6D;AAApD,6GAAA,YAAY,OAAA;AAErB,yDAMoC;AALlC,qGAAA,OAAO,OAAA;AACP,oHAAA,YAAY,OAA0B;AACtC,uGAAA,SAAS,OAAA;AACT,yGAAA,WAAW,OAAA;AACX,yGAAA,WAAW,OAAA;AAGb,mDAAsD;AAA7C,sGAAA,WAAW,OAAA;AAGpB,4DAA4D;AAC5D,+DAAsF;AAA7E,2HAAA,uBAAuB,OAAA;AAAE,mHAAA,eAAe,OAAA;AAGjD,YAAY;AACZ,2CAQyB;AAPvB,sGAAA,WAAW,OAAA;AACX,qGAAA,UAAU,OAAA;AACV,wGAAA,aAAa,OAAA;AACb,wGAAA,aAAa,OAAA;AACb,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,4GAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCASqB;AARnB,qGAAA,QAAQ,OAAA;AACR,0GAAA,aAAa,OAAA;AACb,8GAAA,iBAAiB,OAAA;AACjB,wGAAA,WAAW,OAAA;AACX,qGAAA,QAAQ,OAAA;AACR,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AAEhB,qCAA+F;AAAtF,6GAAA,kBAAkB,OAAA;AAAE,mHAAA,wBAAwB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AAE3E,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAEpB,6DAA2D;AAAlD,iHAAA,cAAc,OAAA;AAEvB,iFAA8E;AAArE,oIAAA,uBAAuB,OAAA;AAChC,2EAAwE;AAA/D,8HAAA,oBAAoB,OAAA;AAC7B,oFAAsF;AAA7E,qHAAA,QAAQ,OAAA;AAAE,oHAAA,OAAO,OAAA;AAAE,sHAAA,SAAS,OAAA;AAErC,8DAAgE;AAAvD,qHAAA,kBAAkB,OAAA;AAC3B,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AAExB,gFAA4F;AAAnF,8HAAA,mBAAmB,OAAA;AAAE,0HAAA,eAAe,OAAA;AAC7C,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,sDAAiG;AAAxF,yGAAA,UAAU,OAAA;AAAE,wHAAA,yBAAyB,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AAChE,8DAA4E;AAAnE,iHAAA,cAAc,OAAA;AAAE,iHAAA,cAAc,OAAA;AACvC,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AAEpB,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA;AAGzB,0EAI0C;AAHxC,uHAAA,cAAc,OAAA;AACd,uHAAA,cAAc,OAAA;AACd,+HAAA,sBAAsB,OAAA;AAGxB,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AACxB,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAc3B,gFAAiE;AAAxD,oHAAA,SAAS,OAAA;AAGlB,gFAAgF;AAChF,6DAAiG;AAAxF,6GAAA,aAAa,OAAA;AAAE,uGAAA,OAAO,OAAA;AAAE,yHAAA,yBAAyB,OAAA;AAG1D,mEAAmE;AACnE,iDAYgC;AAX9B,qGAAA,WAAW,OAAA;AACX,uGAAA,aAAa,OAAA;AACb,wGAAA,cAAc,OAAA;AACd,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AACb,6GAAA,mBAAmB,OAAA;AACnB,iHAAA,uBAAuB,OAAA;AACvB,gHAAA,sBAAsB,OAAA;AACtB,gHAAA,sBAAsB,OAAA;AACtB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAGlB,+DAA6D;AAApD,6GAAA,YAAY,OAAA;AAErB,yDAMoC;AALlC,qGAAA,OAAO,OAAA;AACP,oHAAA,YAAY,OAA0B;AACtC,uGAAA,SAAS,OAAA;AACT,yGAAA,WAAW,OAAA;AACX,yGAAA,WAAW,OAAA;AAGb,mDAAsD;AAA7C,sGAAA,WAAW,OAAA;AAGpB,4DAA4D;AAC5D,+DAAsF;AAA7E,2HAAA,uBAAuB,OAAA;AAAE,mHAAA,eAAe,OAAA;AAGjD,YAAY;AACZ,2CAQyB;AAPvB,sGAAA,WAAW,OAAA;AACX,qGAAA,UAAU,OAAA;AACV,wGAAA,aAAa,OAAA;AACb,wGAAA,aAAa,OAAA;AACb,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,4GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,38 @@
1
+ import type { SyncStage } from './sync-pipeline.interface';
2
+ export declare const LogLevel: {
3
+ readonly INFO: "info";
4
+ readonly WARNING: "warning";
5
+ readonly ERROR: "error";
6
+ };
7
+ export type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];
8
+ export declare const LogKind: {
9
+ readonly RUN_SUMMARY: "run_summary";
10
+ readonly RECORD_ERROR: "record_error";
11
+ };
12
+ export type LogKind = (typeof LogKind)[keyof typeof LogKind];
13
+ export declare const LogSource: {
14
+ readonly EVENT: "event";
15
+ readonly BATCH: "batch";
16
+ readonly SCHEDULED_JOB: "scheduled_job";
17
+ };
18
+ export type LogSource = (typeof LogSource)[keyof typeof LogSource];
19
+ /**
20
+ * One run-log row, written to integration-service `POST /logs`. Field set matches
21
+ * its CreateIntegrationLogDto; `tenantId` is stamped server-side from the token.
22
+ */
23
+ export interface IntegrationLogEntry {
24
+ integrationType: string;
25
+ dataFlowId?: number | null;
26
+ dataFlowName?: string | null;
27
+ /** One per SyncRunner.run(). */
28
+ executionId: string;
29
+ source: LogSource;
30
+ level: LogLevel;
31
+ kind: LogKind;
32
+ stage?: SyncStage | null;
33
+ operation?: 'INSERT' | 'UPDATE' | 'DELETE' | null;
34
+ recordId?: string | null;
35
+ message: string;
36
+ data?: Record<string, unknown>;
37
+ }
38
+ //# sourceMappingURL=integration-log.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-log.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/integration-log.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,eAAO,MAAM,QAAQ;;;;CAAgE,CAAC;AACtF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAGhE,eAAO,MAAM,OAAO;;;CAAwE,CAAC;AAC7F,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAG7D,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogSource = exports.LogKind = exports.LogLevel = void 0;
4
+ // Severity of a log entry. Mirrors integration-service's LogLevel.
5
+ exports.LogLevel = { INFO: 'info', WARNING: 'warning', ERROR: 'error' };
6
+ // Row shape: a per-run rollup or a per-record failure.
7
+ exports.LogKind = { RUN_SUMMARY: 'run_summary', RECORD_ERROR: 'record_error' };
8
+ // What drove the run.
9
+ exports.LogSource = {
10
+ EVENT: 'event',
11
+ BATCH: 'batch',
12
+ SCHEDULED_JOB: 'scheduled_job',
13
+ };
14
+ //# sourceMappingURL=integration-log.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-log.interface.js","sourceRoot":"","sources":["../../src/interfaces/integration-log.interface.ts"],"names":[],"mappings":";;;AAEA,mEAAmE;AACtD,QAAA,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAW,CAAC;AAGtF,uDAAuD;AAC1C,QAAA,OAAO,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAW,CAAC;AAG7F,sBAAsB;AACT,QAAA,SAAS,GAAG;IACvB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,eAAe;CACtB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { SyncPipelineError } from './sync-pipeline.interface';
1
2
  export interface SyncResult {
2
3
  status: 'synced' | 'filtered' | 'skipped' | 'failed' | 'precondition_failed';
3
4
  recordsProcessed: number;
@@ -10,6 +11,17 @@ export interface BatchResult {
10
11
  skipped: number;
11
12
  failed: number;
12
13
  dlqWrites: number;
14
+ /**
15
+ * Per-record errors accumulated across a run, capped at MAX_RECORD_ERRORS to
16
+ * bound memory. Populated by SyncService.run (snapshotted before each per-batch
17
+ * pipeline is cleared) so SyncRunner can emit record_error logs.
18
+ */
19
+ errors?: SyncPipelineError[];
20
+ /**
21
+ * True total of record errors seen this run (may exceed errors.length once the
22
+ * cap kicks in). Lets the run-log builder report an accurate truncation count.
23
+ */
24
+ errorCount?: number;
13
25
  }
14
26
  export interface PreviewResult {
15
27
  sourceRecord: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"sync-result.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/sync-result.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,qBAAqB,CAAC;IAC7E,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,wBAAwB,GAAG,iBAAiB,CAAC;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"sync-result.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/sync-result.interface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,qBAAqB,CAAC;IAC7E,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,wBAAwB,GAAG,iBAAiB,CAAC;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"external-id-sync.strategy.d.ts","sourceRoot":"","sources":["../../src/services/external-id-sync.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAQnF,qBAAa,sBAAuB,YAAW,gBAAgB;IACvD,YAAY,CAChB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAClC,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,OAAO,CAAC,WAAW,CAAC;IAkFjB,iBAAiB,CACrB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAiBhB,iBAAiB,CACrB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;CA0CvB"}
1
+ {"version":3,"file":"external-id-sync.strategy.d.ts","sourceRoot":"","sources":["../../src/services/external-id-sync.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AASnF,qBAAa,sBAAuB,YAAW,gBAAgB;IACvD,YAAY,CAChB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAClC,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,OAAO,CAAC,WAAW,CAAC;IAoFjB,iBAAiB,CACrB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAiBhB,iBAAiB,CACrB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;CA2CvB"}
@@ -13,15 +13,16 @@ var __rest = (this && this.__rest) || function (s, e) {
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.ExternalIdSyncStrategy = void 0;
15
15
  const field_mapping_service_1 = require("./field-mapping.service");
16
+ const helpers_1 = require("../utils/helpers");
16
17
  // ExternalIdSyncStrategy encapsulates the original SyncService batch and event logic.
17
18
  //
18
19
  // Identity resolution: target.resolveLookups() uses EQL to translate ExternalId → UID.
19
20
  // This is the default strategy — zero behaviour change from the pre-strategy SyncService.
20
21
  class ExternalIdSyncStrategy {
21
22
  async processBatch(ctx, flow, source, target, records, localFilter) {
22
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
23
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
23
24
  // Step 3b: filter records and apply FME field mappings.
24
- const _s = await (0, field_mapping_service_1.filterAndMapBatch)(flow, records, localFilter, (_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', (msg) => ctx.logger.error(`dlq_write: dataFlowId=${flow.id} error=${msg}`)), { pairs, sourceIds: _sourceIds } = _s, filterStats = __rest(_s, ["pairs", "sourceIds"]);
25
+ const _q = await (0, field_mapping_service_1.filterAndMapBatch)(flow, records, localFilter, (_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', (msg) => ctx.logger.error(`dlq_write: dataFlowId=${flow.id} error=${msg}`)), { pairs, sourceIds: _sourceIds } = _q, filterStats = __rest(_q, ["pairs", "sourceIds"]);
25
26
  const stats = Object.assign(Object.assign({}, filterStats), { skipped: 0 });
26
27
  // Sync pipeline stats so hooks can read them.
27
28
  if (ctx.pipeline) {
@@ -61,13 +62,15 @@ class ExternalIdSyncStrategy {
61
62
  if (outcomes[i].status !== 'ok') {
62
63
  const message = (_l = outcomes[i].error) !== null && _l !== void 0 ? _l : outcomes[i].status;
63
64
  captureRecordError(ctx, 'upsert', i, message, (_m = pairs[i]) === null || _m === void 0 ? void 0 : _m.raw);
64
- ctx.logger.error(`upsert_failed: dataFlowId=${flow.id} recordIndex=${i} status=${outcomes[i].status} error=${message} data=${JSON.stringify((_p = (_o = pairs[i]) === null || _o === void 0 ? void 0 : _o.raw) !== null && _p !== void 0 ? _p : {})}`);
65
+ // Identifiers + clamped message only — the raw record is captured into the
66
+ // pipeline error (persisted log), so dumping it here is redundant + leaks PII.
67
+ ctx.logger.error(`upsert_failed: dataFlowId=${flow.id} recordIndex=${i} status=${outcomes[i].status} error=${(0, helpers_1.truncate)(String(message))}`);
65
68
  stats.succeeded--;
66
69
  stats.failed++;
67
70
  }
68
71
  }
69
- await ((_q = source === null || source === void 0 ? void 0 : source.afterUpsert) === null || _q === void 0 ? void 0 : _q.call(source, ctx));
70
- await ((_r = target.afterUpsert) === null || _r === void 0 ? void 0 : _r.call(target, ctx));
72
+ await ((_o = source === null || source === void 0 ? void 0 : source.afterUpsert) === null || _o === void 0 ? void 0 : _o.call(source, ctx));
73
+ await ((_p = target.afterUpsert) === null || _p === void 0 ? void 0 : _p.call(target, ctx));
71
74
  }
72
75
  catch (err) {
73
76
  const message = err instanceof Error ? err.message : String(err);
@@ -125,7 +128,8 @@ class ExternalIdSyncStrategy {
125
128
  }
126
129
  const message = (_g = outcome.error) !== null && _g !== void 0 ? _g : outcome.status;
127
130
  captureRecordError(ctx, 'upsert', 0, message, raw);
128
- ctx.logger.error(`push_failed: dataFlowId=${flow.id} recordId=${event.recordId} status=${outcome.status} error=${message} data=${JSON.stringify(raw)}`);
131
+ // No raw record here — it's persisted via captureRecordError; console keeps identifiers only.
132
+ ctx.logger.error(`push_failed: dataFlowId=${flow.id} recordId=${event.recordId} status=${outcome.status} error=${(0, helpers_1.truncate)(String(message))}`);
129
133
  return { status: 'failed', recordsProcessed: 0, error: message };
130
134
  }
131
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"external-id-sync.strategy.js","sourceRoot":"","sources":["../../src/services/external-id-sync.strategy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAQA,mEAA4E;AAE5E,sFAAsF;AACtF,EAAE;AACF,uFAAuF;AACvF,0FAA0F;AAC1F,MAAa,sBAAsB;IACjC,KAAK,CAAC,YAAY,CAChB,GAAuB,EACvB,IAAc,EACd,MAAsB,EACtB,MAAe,EACf,OAAkC,EAClC,WAA8B;;QAE9B,wDAAwD;QACxD,MAAM,KAIF,MAAM,IAAA,yCAAiB,EACzB,IAAI,EACJ,OAAO,EACP,WAAW,EACX,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,sDAAI,mCAAI,IAAI,EACpC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,EAAE,UAAU,GAAG,EAAE,CAAC,CAC3E,EAVK,EACJ,KAAK,EACL,SAAS,EAAE,UAAU,OAQtB,EAPI,WAAW,cAHV,sBAIL,CAMA,CAAC;QACF,MAAM,KAAK,mCAAqB,WAAW,KAAE,OAAO,EAAE,CAAC,GAAE,CAAC;QAE1D,8CAA8C;QAC9C,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;YAC1B,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7B,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAErC,+DAA+D;QAC/D,MAAM,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,uDAAG,GAAG,CAAC,CAAA,CAAC;QAC9B,MAAM,CAAA,MAAA,MAAM,CAAC,QAAQ,uDAAG,GAAG,CAAC,CAAA,CAAC;QAE7B,+EAA+E;QAC/E,MAAM,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,uDAAG,GAAG,CAAC,CAAA,CAAC;QACnC,MAAM,CAAA,MAAA,MAAM,CAAC,aAAa,uDAAG,GAAG,CAAC,CAAA,CAAC;QAElC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9D,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;gBAChC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;gBACpB,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,uDAAG,GAAG,CAAC,CAAA,CAAC;QAClC,MAAM,CAAA,MAAA,MAAM,CAAC,YAAY,uDAAG,GAAG,CAAC,CAAA,CAAC;QAEjC,2BAA2B;QAC3B,MAAM,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,uDAAG,GAAG,CAAC,CAAA,CAAC;QAClC,MAAM,CAAA,MAAA,MAAM,CAAC,YAAY,uDAAG,GAAG,CAAC,CAAA,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAClC,GAAG,EACH,IAAI,EACJ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAC3B,CAAC;YACF,IAAI,GAAG,CAAC,QAAQ;gBAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAChC,MAAM,OAAO,GAAG,MAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,mCAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBACxD,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,GAAG,CAAC,CAAC;oBAC7D,GAAG,CAAC,MAAM,CAAC,KAAK,CACd,6BAA6B,IAAI,CAAC,EAAE,gBAAgB,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,UAAU,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC,MAAA,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,GAAG,mCAAI,EAAE,CAAC,EAAE,CAClJ,CAAC;oBACF,KAAK,CAAC,SAAS,EAAE,CAAC;oBAClB,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,MAAM,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,uDAAG,GAAG,CAAC,CAAA,CAAC;YACjC,MAAM,CAAA,MAAA,MAAM,CAAC,WAAW,uDAAG,GAAG,CAAC,CAAA,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7D,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;YAChC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,GAAuB,EACvB,IAAc,EACd,MAAe,EACf,QAAgB;;QAEhB,IAAI,GAAG,CAAC,QAAQ;YAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAA,MAAA,MAAM,CAAC,YAAY,uDAAG,GAAG,CAAC,CAAA,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,KAAK,CACd,6BAA6B,IAAI,CAAC,EAAE,aAAa,QAAQ,UAAU,OAAO,EAAE,CAC7E,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACnE,CAAC;QACD,MAAM,CAAA,MAAA,MAAM,CAAC,WAAW,uDAAG,GAAG,CAAC,CAAA,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,GAAuB,EACvB,IAAc,EACd,MAAsB,EACtB,MAAe,EACf,KAAkB;;QAElB,wDAAwD;QACxD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,wEAAwE;QACxE,uDAAuD;QACvD,MAAM,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,uDAAG,GAAG,CAAC,CAAA,CAAC;QAE/B,4DAA4D;QAC5D,MAAM,GAAG,GAAG,MAAA,MAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,0CAAE,GAAG,mCAAI,KAAK,CAAC,OAAO,CAAC;QAExD,iDAAiD;QACjD,MAAM,MAAM,GAAG,MAAM,IAAA,sCAAc,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,2BAA2B;QAC3B,MAAM,CAAA,MAAA,MAAM,CAAC,YAAY,uDAAG,GAAG,CAAC,CAAA,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,GAAG,CAAC,QAAQ;YAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACnD,MAAM,CAAA,MAAA,MAAM,CAAC,WAAW,uDAAG,GAAG,CAAC,CAAA,CAAC;QAEhC,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;QACnD,CAAC;QAED,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,OAAO,CAAC,MAAM,CAAC;QAChD,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACnD,GAAG,CAAC,MAAM,CAAC,KAAK,CACd,2BAA2B,IAAI,CAAC,EAAE,aAAa,KAAK,CAAC,QAAQ,WAAW,OAAO,CAAC,MAAM,UAAU,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CACtI,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACnE,CAAC;CACF;AAhKD,wDAgKC;AAED,qFAAqF;AACrF,4EAA4E;AAC5E,SAAS,kBAAkB,CACzB,GAAuB,EACvB,KAAgB,EAChB,WAAmB,EACnB,OAAe,EACf,IAA8B;;IAE9B,MAAA,GAAG,CAAC,QAAQ,0CAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,qEAAqE;AACrE,kEAAkE;AAClE,SAAS,mBAAmB,CAC1B,GAAuB,EACvB,KAAgB,EAChB,OAAe,EACf,aAAqB;;IAErB,IAAI,GAAG,CAAC,QAAQ;QAAE,GAAG,CAAC,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;IACrD,MAAA,GAAG,CAAC,QAAQ,0CAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,GAAG,CAAC,MAAM,CAAC,KAAK,CACd,yBAAyB,KAAK,YAAY,OAAO,oBAAoB,aAAa,EAAE,CACrF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"external-id-sync.strategy.js","sourceRoot":"","sources":["../../src/services/external-id-sync.strategy.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export declare class IdMappingSyncStrategy implements SyncFlowStrategy {
10
10
  private readonly idMappingService;
11
11
  constructor(idMappingService: IdMappingService);
12
12
  processBatch(ctx: IntegrationContext, flow: DataFlow, source: Adapter | null, target: Adapter, records: Record<string, unknown>[], localFilter: FilterSpec | null): Promise<BatchResult>;
13
+ private _claimCreatesForBatch;
14
+ private _releaseFailedClaims;
13
15
  handleDeleteEvent(ctx: IntegrationContext, flow: DataFlow, target: Adapter, recordId: string): Promise<SyncResult>;
14
16
  handleUpsertEvent(ctx: IntegrationContext, flow: DataFlow, source: Adapter | null, target: Adapter, event: MappedEvent): Promise<SyncResult>;
15
17
  private _buildLookupQueries;
@@ -1 +1 @@
1
- {"version":3,"file":"id-mapping-sync.strategy.d.ts","sourceRoot":"","sources":["../../src/services/id-mapping-sync.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAGnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA+CxD,qBAAa,qBAAsB,YAAW,gBAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAEzD,YAAY,CAChB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAClC,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,OAAO,CAAC,WAAW,CAAC;IA6HjB,iBAAiB,CACrB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAqDhB,iBAAiB,CACrB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;IAwFtB,OAAO,CAAC,mBAAmB;YAsCb,0BAA0B;YAmF1B,wBAAwB;YAkExB,oBAAoB;CA4CnC"}
1
+ {"version":3,"file":"id-mapping-sync.strategy.d.ts","sourceRoot":"","sources":["../../src/services/id-mapping-sync.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAGnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAgDxD,qBAAa,qBAAsB,YAAW,gBAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAEzD,YAAY,CAChB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAClC,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,OAAO,CAAC,WAAW,CAAC;YAqKT,qBAAqB;YAyBrB,oBAAoB;IAsB5B,iBAAiB,CACrB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAqDhB,iBAAiB,CACrB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;IAoItB,OAAO,CAAC,mBAAmB;YAsCb,0BAA0B;YAmF1B,wBAAwB;YAkExB,oBAAoB;CA4CnC"}
@@ -13,6 +13,7 @@ var __rest = (this && this.__rest) || function (s, e) {
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.IdMappingSyncStrategy = void 0;
15
15
  const field_mapping_service_1 = require("./field-mapping.service");
16
+ const helpers_1 = require("../utils/helpers");
16
17
  // IdMappingSyncStrategy resolves cross-system identity via the IntegrationIdMapping
17
18
  // custom object rather than ExternalId custom fields.
18
19
  //
@@ -56,10 +57,10 @@ class IdMappingSyncStrategy {
56
57
  this.idMappingService = idMappingService;
57
58
  }
58
59
  async processBatch(ctx, flow, source, target, records, localFilter) {
59
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
60
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
60
61
  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';
61
62
  // Step 3b: evaluate filter and run FME field mappings.
62
- 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"]);
63
+ const _q = 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 } = _q, filterStats = __rest(_q, ["pairs", "sourceIds"]);
63
64
  const stats = Object.assign(Object.assign({}, filterStats), { skipped: 0 });
64
65
  // Sync pipeline state so hooks can read live data and stats.
65
66
  if (ctx.pipeline) {
@@ -83,14 +84,37 @@ class IdMappingSyncStrategy {
83
84
  const activeSrcIds = activeSourceIds.filter((_, i) => !skipSet.has(i));
84
85
  if (activePairs.length === 0)
85
86
  return stats;
86
- const isCreate = activePairs.map((p) => p.mapped['__targetUID'] == null);
87
+ // Step 4b: claim creates. The mapping table has no idempotency key on the target write,
88
+ // so concurrent deliveries of the same new record (e.g. a Skedulo INSERT plus a near-instant
89
+ // UPDATE) can both resolve to "no mapping" and both insert — a duplicate. Reserving the
90
+ // UniqueKey before the write serializes them: the winner creates, a loser means another
91
+ // in-flight delivery already owns the create, so we skip it (its change reconciles on the
92
+ // next sync) rather than create a second record.
93
+ const wonUidBySourceId = await this._claimCreatesForBatch(ctx, flow, activePairs, activeSrcIds);
94
+ const keep = [];
95
+ for (let i = 0; i < activePairs.length; i++) {
96
+ const isCreateI = activePairs[i].mapped['__targetUID'] == null;
97
+ if (isCreateI && activeSrcIds[i] && !wonUidBySourceId.has(activeSrcIds[i])) {
98
+ stats.skipped++;
99
+ stats.succeeded--;
100
+ ctx.logger.warn(`id_mapping_create_lost_claim: dataFlowId=${flow.id} sourceId=${activeSrcIds[i]} ` +
101
+ `objectType=${flow.targetObject} — concurrent create won the claim; skipping to avoid a duplicate`);
102
+ continue;
103
+ }
104
+ keep.push(i);
105
+ }
106
+ const dispatchPairs = keep.map((i) => activePairs[i]);
107
+ const dispatchSrcIds = keep.map((i) => activeSrcIds[i]);
108
+ if (dispatchPairs.length === 0)
109
+ return stats;
110
+ const isCreate = dispatchPairs.map((p) => p.mapped['__targetUID'] == null);
87
111
  // Step 5: write to target — adapter performs insert (new) or update (existing).
88
112
  await ((_j = source === null || source === void 0 ? void 0 : source.beforeUpsert) === null || _j === void 0 ? void 0 : _j.call(source, ctx));
89
113
  await ((_k = target.beforeUpsert) === null || _k === void 0 ? void 0 : _k.call(target, ctx));
90
- let outcomes = new Array(activePairs.length);
114
+ let outcomes = new Array(dispatchPairs.length);
91
115
  try {
92
116
  if (typeof target.insert === 'function' || typeof target.update === 'function') {
93
- const { inserts, updates } = splitForDispatch(activePairs);
117
+ const { inserts, updates } = splitForDispatch(dispatchPairs);
94
118
  if (inserts.length > 0) {
95
119
  const insertOutcomes = typeof target.insert === 'function'
96
120
  ? await target.insert(ctx, flow, inserts.map((x) => x.mapped))
@@ -111,33 +135,87 @@ class IdMappingSyncStrategy {
111
135
  else {
112
136
  // Legacy adapters that only implement upsert(): pass the pairs through
113
137
  // verbatim — they read __targetUID themselves and branch internally.
114
- outcomes = await target.upsert(ctx, flow, activePairs.map((p) => p.mapped));
138
+ outcomes = await target.upsert(ctx, flow, dispatchPairs.map((p) => p.mapped));
115
139
  }
116
140
  if (ctx.pipeline)
117
141
  ctx.pipeline.outcomes = outcomes;
118
142
  for (let i = 0; i < outcomes.length; i++) {
119
143
  if (outcomes[i].status !== 'ok') {
120
144
  const message = (_l = outcomes[i].error) !== null && _l !== void 0 ? _l : outcomes[i].status;
121
- captureRecordError(ctx, 'upsert', i, message, (_m = activePairs[i]) === null || _m === void 0 ? void 0 : _m.raw);
122
- 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 : {})}`);
145
+ captureRecordError(ctx, 'upsert', i, message, (_m = dispatchPairs[i]) === null || _m === void 0 ? void 0 : _m.raw);
146
+ // Identifiers + clamped message only — the raw record is captured into the
147
+ // pipeline error (persisted log), so dumping it here is redundant + leaks PII.
148
+ ctx.logger.error(`upsert_failed: dataFlowId=${flow.id} recordIndex=${i} status=${outcomes[i].status} error=${(0, helpers_1.truncate)(String(message))}`);
123
149
  stats.succeeded--;
124
150
  stats.failed++;
125
151
  }
126
152
  }
127
- await ((_q = source === null || source === void 0 ? void 0 : source.afterUpsert) === null || _q === void 0 ? void 0 : _q.call(source, ctx));
128
- await ((_r = target.afterUpsert) === null || _r === void 0 ? void 0 : _r.call(target, ctx));
153
+ await ((_o = source === null || source === void 0 ? void 0 : source.afterUpsert) === null || _o === void 0 ? void 0 : _o.call(source, ctx));
154
+ await ((_p = target.afterUpsert) === null || _p === void 0 ? void 0 : _p.call(target, ctx));
129
155
  }
130
156
  catch (err) {
131
157
  const message = err instanceof Error ? err.message : String(err);
132
- captureProcessError(ctx, 'upsert', message, activePairs.length);
133
- stats.failed += activePairs.length;
134
- stats.succeeded -= activePairs.length;
158
+ captureProcessError(ctx, 'upsert', message, dispatchPairs.length);
159
+ stats.failed += dispatchPairs.length;
160
+ stats.succeeded -= dispatchPairs.length;
161
+ // Outcomes can be partial — one dispatch bucket may have landed before the other threw.
162
+ // Finalize any create that actually succeeded (so it isn't re-created as a duplicate next
163
+ // run) and release reservations only for creates with no successful outcome.
164
+ await this._writeMappingEntries(ctx, flow, target, dispatchSrcIds, outcomes, isCreate);
165
+ await this._releaseFailedClaims(ctx, dispatchSrcIds, isCreate, outcomes, wonUidBySourceId);
135
166
  return stats;
136
167
  }
137
- // Step 6: write back — persist new source→target ID pairs for created records.
138
- await this._writeMappingEntries(ctx, flow, target, activeSrcIds, outcomes, isCreate);
168
+ // Release reservations for creates whose target write failed (empty-TargetId rows would
169
+ // otherwise block the record from ever being created again).
170
+ await this._releaseFailedClaims(ctx, dispatchSrcIds, isCreate, outcomes, wonUidBySourceId);
171
+ // Step 6: write back — finalize each won reservation with the real TargetId (upsert on
172
+ // UniqueKey updates the placeholder row written at claim time).
173
+ await this._writeMappingEntries(ctx, flow, target, dispatchSrcIds, outcomes, isCreate);
139
174
  return stats;
140
175
  }
176
+ // Reserve the UniqueKey for every create-classified pair. Returns the reserved-row UID per
177
+ // won sourceId; absence from the map means the claim was lost to a concurrent delivery.
178
+ async _claimCreatesForBatch(ctx, flow, activePairs, activeSrcIds) {
179
+ const claims = activePairs
180
+ .map((p, i) => ({ create: p.mapped['__targetUID'] == null, sourceId: activeSrcIds[i] }))
181
+ .filter((c) => c.create && c.sourceId)
182
+ .map((c) => {
183
+ var _a, _b;
184
+ return ({
185
+ sourceSystem: (_a = flow.sourceSystem) !== null && _a !== void 0 ? _a : '',
186
+ targetSystem: (_b = flow.targetSystem) !== null && _b !== void 0 ? _b : '',
187
+ objectType: flow.targetObject,
188
+ sourceId: c.sourceId,
189
+ dataFlowId: String(flow.id),
190
+ });
191
+ });
192
+ if (claims.length === 0)
193
+ return new Map();
194
+ const { wonUidBySourceId } = await this.idMappingService.claimCreates(ctx, claims);
195
+ return wonUidBySourceId;
196
+ }
197
+ // Delete reserved claim rows for creates with no successful outcome, so a stale empty-TargetId
198
+ // row can't permanently block the record from ever being created. Retried once for symmetry
199
+ // with the mapping write — a transient failure here strands the reservation. (A crash between
200
+ // reserve and this release is still possible; such a row needs manual cleanup or reclaim.)
201
+ async _releaseFailedClaims(ctx, dispatchSrcIds, isCreate, outcomes, wonUidBySourceId) {
202
+ var _a;
203
+ const uids = [];
204
+ for (let i = 0; i < dispatchSrcIds.length; i++) {
205
+ if (!isCreate[i])
206
+ continue;
207
+ if (((_a = outcomes[i]) === null || _a === void 0 ? void 0 : _a.status) === 'ok')
208
+ continue;
209
+ const uid = wonUidBySourceId.get(dispatchSrcIds[i]);
210
+ if (uid)
211
+ uids.push(uid);
212
+ }
213
+ if (uids.length === 0)
214
+ return;
215
+ await retryOnce(() => this.idMappingService.deleteReservations(ctx, uids)).catch((err) => {
216
+ ctx.logger.error(`id_mapping_reservation_release_failed: ${err instanceof Error ? err.message : String(err)} uids=${uids.length}`);
217
+ });
218
+ }
141
219
  async handleDeleteEvent(ctx, flow, target, recordId) {
142
220
  var _a, _b, _c, _d;
143
221
  const mappingTable = await this.idMappingService.resolve(ctx, [
@@ -183,7 +261,7 @@ class IdMappingSyncStrategy {
183
261
  return { status: 'synced', recordsProcessed: 1 };
184
262
  }
185
263
  async handleUpsertEvent(ctx, flow, source, target, event) {
186
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
264
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
187
265
  // Initialise pipeline data so beforeMap can mutate raw.
188
266
  if (ctx.pipeline) {
189
267
  ctx.pipeline.data = [{ raw: event.payload, mapped: {} }];
@@ -215,35 +293,71 @@ class IdMappingSyncStrategy {
215
293
  await ((_q = target.beforeUpsert) === null || _q === void 0 ? void 0 : _q.call(target, ctx));
216
294
  // Dispatch insert vs update based on resolved __targetUID, mirroring processBatch.
217
295
  const isCreate = mapped['__targetUID'] == null;
218
- let outcomes;
219
- if (isCreate && typeof target.insert === 'function') {
220
- const _x = mapped, { __targetUID: _drop } = _x, payload = __rest(_x, ["__targetUID"]);
221
- outcomes = await target.insert(ctx, flow, [payload]);
296
+ // Claim the create before writing (see processBatch): serialize concurrent deliveries of the
297
+ // same new record via the UniqueKey constraint. A lost claim means another delivery already
298
+ // owns the create — skip rather than insert a duplicate.
299
+ let reservedUid;
300
+ if (isCreate) {
301
+ const { wonUidBySourceId, lostSourceIds } = await this.idMappingService.claimCreates(ctx, [
302
+ {
303
+ sourceSystem: (_r = flow.sourceSystem) !== null && _r !== void 0 ? _r : '',
304
+ targetSystem: (_s = flow.targetSystem) !== null && _s !== void 0 ? _s : '',
305
+ objectType: flow.targetObject,
306
+ sourceId,
307
+ dataFlowId: String(flow.id),
308
+ },
309
+ ]);
310
+ if (lostSourceIds.length > 0) {
311
+ ctx.logger.warn(`id_mapping_create_lost_claim: dataFlowId=${flow.id} sourceId=${sourceId} ` +
312
+ `objectType=${flow.targetObject} — concurrent create won the claim; skipping to avoid a duplicate`);
313
+ return { status: 'skipped', recordsProcessed: 0, reason: 'concurrent_create' };
314
+ }
315
+ reservedUid = wonUidBySourceId.get(sourceId);
222
316
  }
223
- else if (!isCreate && typeof target.update === 'function') {
224
- outcomes = await target.update(ctx, flow, [mapped]);
317
+ const releaseReservation = async () => {
318
+ if (isCreate && reservedUid) {
319
+ await retryOnce(() => this.idMappingService.deleteReservations(ctx, [reservedUid])).catch((err) => ctx.logger.error(`id_mapping_reservation_release_failed: sourceId=${sourceId} ` +
320
+ `uid=${reservedUid} error=${err instanceof Error ? err.message : String(err)}`));
321
+ }
322
+ };
323
+ let outcomes;
324
+ try {
325
+ if (isCreate && typeof target.insert === 'function') {
326
+ const _z = mapped, { __targetUID: _drop } = _z, payload = __rest(_z, ["__targetUID"]);
327
+ outcomes = await target.insert(ctx, flow, [payload]);
328
+ }
329
+ else if (!isCreate && typeof target.update === 'function') {
330
+ outcomes = await target.update(ctx, flow, [mapped]);
331
+ }
332
+ else {
333
+ // Legacy path
334
+ outcomes = await target.upsert(ctx, flow, [mapped]);
335
+ }
225
336
  }
226
- else {
227
- // Legacy path
228
- outcomes = await target.upsert(ctx, flow, [mapped]);
337
+ catch (err) {
338
+ // Release the reservation so a stale empty-TargetId row can't permanently block re-creation.
339
+ await releaseReservation();
340
+ throw err;
229
341
  }
230
342
  const outcome = outcomes[0];
231
343
  if (ctx.pipeline)
232
344
  ctx.pipeline.outcomes = outcomes;
233
- await ((_r = source === null || source === void 0 ? void 0 : source.afterUpsert) === null || _r === void 0 ? void 0 : _r.call(source, ctx));
234
- await ((_s = target.afterUpsert) === null || _s === void 0 ? void 0 : _s.call(target, ctx));
345
+ await ((_t = source === null || source === void 0 ? void 0 : source.afterUpsert) === null || _t === void 0 ? void 0 : _t.call(source, ctx));
346
+ await ((_u = target.afterUpsert) === null || _u === void 0 ? void 0 : _u.call(target, ctx));
235
347
  if (outcome.status === 'precondition') {
236
- ctx.logger.error(`push_precondition: dataFlowId=${flow.id} recordId=${event.recordId} error=${(_t = outcome.error) !== null && _t !== void 0 ? _t : 'unknown'}`);
348
+ await releaseReservation();
349
+ ctx.logger.error(`push_precondition: dataFlowId=${flow.id} recordId=${event.recordId} error=${(_v = outcome.error) !== null && _v !== void 0 ? _v : 'unknown'}`);
237
350
  return {
238
351
  status: 'precondition_failed',
239
352
  recordsProcessed: 0,
240
- error: (_u = outcome.error) !== null && _u !== void 0 ? _u : outcome.status,
353
+ error: (_w = outcome.error) !== null && _w !== void 0 ? _w : outcome.status,
241
354
  };
242
355
  }
243
356
  if (outcome.status !== 'ok') {
357
+ await releaseReservation();
244
358
  ctx.logger.error(`push_failed: dataFlowId=${flow.id} recordId=${event.recordId} ` +
245
- `class=${outcome.status} error=${(_v = outcome.error) !== null && _v !== void 0 ? _v : 'unknown'}`);
246
- return { status: 'failed', recordsProcessed: 0, error: (_w = outcome.error) !== null && _w !== void 0 ? _w : outcome.status };
359
+ `class=${outcome.status} error=${(_x = outcome.error) !== null && _x !== void 0 ? _x : 'unknown'}`);
360
+ return { status: 'failed', recordsProcessed: 0, error: (_y = outcome.error) !== null && _y !== void 0 ? _y : outcome.status };
247
361
  }
248
362
  // Step 7: persist new source→target ID pair for a created record.
249
363
  if (isCreate) {
@@ -442,7 +556,7 @@ class IdMappingSyncStrategy {
442
556
  await retryOnce(() => this.idMappingService.upsertMappings(ctx, entries)).catch((err) => {
443
557
  const message = err instanceof Error ? err.message : String(err);
444
558
  captureProcessError(ctx, 'mapping_write', message, entries.length);
445
- ctx.logger.error(`mapping_write_failed: dataFlowId=${flow.id} error=${message} entries=${JSON.stringify(entries)}`);
559
+ ctx.logger.error(`mapping_write_failed: dataFlowId=${flow.id} error=${(0, helpers_1.truncate)(message)} entries=${entries.length}`);
446
560
  });
447
561
  }
448
562
  }