@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.
Files changed (77) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +59 -3
  3. package/dist/adapters/base.adapter.d.ts +61 -0
  4. package/dist/adapters/base.adapter.d.ts.map +1 -0
  5. package/dist/adapters/base.adapter.js +69 -0
  6. package/dist/adapters/base.adapter.js.map +1 -0
  7. package/dist/adapters/skedulo.adapter.d.ts +8 -0
  8. package/dist/adapters/skedulo.adapter.d.ts.map +1 -1
  9. package/dist/adapters/skedulo.adapter.js +77 -4
  10. package/dist/adapters/skedulo.adapter.js.map +1 -1
  11. package/dist/browser.d.ts +3 -2
  12. package/dist/browser.d.ts.map +1 -1
  13. package/dist/browser.js +3 -1
  14. package/dist/browser.js.map +1 -1
  15. package/dist/clients/dataflow.client.d.ts +1 -1
  16. package/dist/clients/dataflow.client.d.ts.map +1 -1
  17. package/dist/clients/dataflow.client.js +18 -4
  18. package/dist/clients/dataflow.client.js.map +1 -1
  19. package/dist/clients/proxy.client.d.ts +1 -0
  20. package/dist/clients/proxy.client.d.ts.map +1 -1
  21. package/dist/clients/proxy.client.js +5 -1
  22. package/dist/clients/proxy.client.js.map +1 -1
  23. package/dist/constants.d.ts +15 -0
  24. package/dist/constants.d.ts.map +1 -1
  25. package/dist/constants.js +14 -1
  26. package/dist/constants.js.map +1 -1
  27. package/dist/context.d.ts +7 -0
  28. package/dist/context.d.ts.map +1 -1
  29. package/dist/context.js.map +1 -1
  30. package/dist/index.d.ts +10 -4
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +13 -5
  33. package/dist/index.js.map +1 -1
  34. package/dist/interfaces/adapter.interface.d.ts +53 -19
  35. package/dist/interfaces/adapter.interface.d.ts.map +1 -1
  36. package/dist/interfaces/field-mapping.interface.d.ts +10 -5
  37. package/dist/interfaces/field-mapping.interface.d.ts.map +1 -1
  38. package/dist/interfaces/integration-capabilities.interface.d.ts +6 -0
  39. package/dist/interfaces/integration-capabilities.interface.d.ts.map +1 -1
  40. package/dist/interfaces/sync-flow-strategy.interface.d.ts +15 -0
  41. package/dist/interfaces/sync-flow-strategy.interface.d.ts.map +1 -0
  42. package/dist/interfaces/sync-flow-strategy.interface.js +3 -0
  43. package/dist/interfaces/sync-flow-strategy.interface.js.map +1 -0
  44. package/dist/interfaces/sync-pipeline.interface.d.ts +108 -0
  45. package/dist/interfaces/sync-pipeline.interface.d.ts.map +1 -0
  46. package/dist/interfaces/sync-pipeline.interface.js +12 -0
  47. package/dist/interfaces/sync-pipeline.interface.js.map +1 -0
  48. package/dist/services/external-id-sync.strategy.d.ts +13 -0
  49. package/dist/services/external-id-sync.strategy.d.ts.map +1 -0
  50. package/dist/services/external-id-sync.strategy.js +139 -0
  51. package/dist/services/external-id-sync.strategy.js.map +1 -0
  52. package/dist/services/field-mapping.service.d.ts +31 -0
  53. package/dist/services/field-mapping.service.d.ts.map +1 -0
  54. package/dist/services/field-mapping.service.js +131 -0
  55. package/dist/services/field-mapping.service.js.map +1 -0
  56. package/dist/services/id-mapping-sync.strategy.d.ts +19 -0
  57. package/dist/services/id-mapping-sync.strategy.d.ts.map +1 -0
  58. package/dist/services/id-mapping-sync.strategy.js +389 -0
  59. package/dist/services/id-mapping-sync.strategy.js.map +1 -0
  60. package/dist/services/id-mapping.service.d.ts +38 -0
  61. package/dist/services/id-mapping.service.d.ts.map +1 -0
  62. package/dist/services/id-mapping.service.js +207 -0
  63. package/dist/services/id-mapping.service.js.map +1 -0
  64. package/dist/services/preview.service.js +2 -2
  65. package/dist/services/preview.service.js.map +1 -1
  66. package/dist/services/sync-runner.d.ts +3 -0
  67. package/dist/services/sync-runner.d.ts.map +1 -1
  68. package/dist/services/sync-runner.js +22 -7
  69. package/dist/services/sync-runner.js.map +1 -1
  70. package/dist/services/sync.service.d.ts +3 -2
  71. package/dist/services/sync.service.d.ts.map +1 -1
  72. package/dist/services/sync.service.js +55 -104
  73. package/dist/services/sync.service.js.map +1 -1
  74. package/dist/utils/compileFilter.d.ts.map +1 -1
  75. package/dist/utils/compileFilter.js +16 -1
  76. package/dist/utils/compileFilter.js.map +1 -1
  77. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG;IACtB,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEE,QAAA,aAAa,GAAG;IAC3B,eAAe,EAAE,gBAAgB;IACjC,YAAY,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE;IAClD,qBAAqB,EAAE,6BAA6B;IACpD,cAAc,EAAE,uBAAuB;IACvC,IAAI,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE;IAClC,cAAc,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,iBAAiB,UAAU,EAAE;IACrE,UAAU,EAAE,WAAW;IACvB,OAAO,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE;CAChC,CAAC;AAEE,QAAA,iBAAiB,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG;IACtB,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEE,QAAA,aAAa,GAAG;IAC3B,eAAe,EAAE,gBAAgB;IACjC,YAAY,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE;IAClD,qBAAqB,EAAE,6BAA6B;IACpD,cAAc,EAAE,uBAAuB;IACvC,IAAI,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE;IAClC,cAAc,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,iBAAiB,UAAU,EAAE;IACrE,UAAU,EAAE,WAAW;IACvB,OAAO,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE;IACxC,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,iBAAiB;IACjC,qBAAqB,EAAE,uBAAuB;IAC9C,cAAc,EAAE,iBAAiB;IACjC,mBAAmB,EAAE,qBAAqB;CAClC,CAAC;AAEE,QAAA,iBAAiB,GAAG,GAAG,CAAC;AAExB,QAAA,WAAW,GAAG;IACzB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACR,CAAC;AAGE,QAAA,QAAQ,GAAG;IACtB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CACN,CAAC"}
package/dist/context.d.ts CHANGED
@@ -3,8 +3,15 @@ import type { ExecutionOptions } from '@skedulo/pulse-solution-services';
3
3
  import { ProxyClient } from './clients/proxy.client';
4
4
  import { DataFlowClient } from './clients/dataflow.client';
5
5
  import { DataFlowService } from './services/dataflow.service';
6
+ import type { SyncPipelineState } from './interfaces/sync-pipeline.interface';
6
7
  export declare class IntegrationContext extends ExecutionContext {
7
8
  private readonly _integrationType;
9
+ /**
10
+ * Live pipeline state for the current sync batch. Set by SyncService at the start of each
11
+ * batch and updated progressively as pipeline steps complete. Available in all lifecycle hooks.
12
+ * Undefined outside of an active sync pipeline (e.g. during metadata calls).
13
+ */
14
+ pipeline?: SyncPipelineState;
8
15
  private _proxyClient?;
9
16
  private _dataFlowClient?;
10
17
  private _dataFlowService?;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAc,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,qBAAa,kBAAmB,SAAQ,gBAAgB;IAEtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,gBAAgB,CAAC,CAAkB;gBAGzC,WAAW,EAAE,GAAG,EAChB,eAAe,EAAE,MAAM,EACvB,gBAAgB,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAMlD,MAAM,CAAC,aAAa,CAClB,WAAW,EAAE,GAAG,EAChB,eAAe,EAAE,MAAM,EACvB,gBAAgB,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAC/C,kBAAkB;IAIrB,OAAO,KAAK,WAAW,GAKtB;IAED,IAAI,WAAW,IAAI,WAAW,CAM7B;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;CACF;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,GAAG,EAChB,eAAe,EAAE,MAAM,EACvB,gBAAgB,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAC/C,kBAAkB,CAEpB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAc,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,gBAAgB,CAAC,CAAkB;gBAGzC,WAAW,EAAE,GAAG,EAChB,eAAe,EAAE,MAAM,EACvB,gBAAgB,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAMlD,MAAM,CAAC,aAAa,CAClB,WAAW,EAAE,GAAG,EAChB,eAAe,EAAE,MAAM,EACvB,gBAAgB,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAC/C,kBAAkB;IAIrB,OAAO,KAAK,WAAW,GAKtB;IAED,IAAI,WAAW,IAAI,WAAW,CAM7B;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;CACF;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,GAAG,EAChB,eAAe,EAAE,MAAM,EACvB,gBAAgB,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAC/C,kBAAkB,CAEpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AAsDA,4DAMC;AA5DD,8EAAoE;AAEpE,yDAAqD;AACrD,+DAA2D;AAC3D,kEAA8D;AAE9D,MAAa,kBAAmB,SAAQ,0CAAgB;IAOtD,YACE,WAAgB,EAChB,eAAuB,EACvB,mBAA8C,EAAE;QAEhD,KAAK,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,WAAgB,EAChB,eAAuB,EACvB,mBAA8C,EAAE;QAEhD,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAChF,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,eAAe;;QACjB,OAAO,OAAC,IAAI,CAAC,gBAAgB,oCAArB,IAAI,CAAC,gBAAgB,GAAK,IAAI,kCAAe,CAAC,IAAI,CAAC,cAAc,CAAC,EAAC,CAAC;IAC9E,CAAC;CACF;AA9CD,gDA8CC;AAED,SAAgB,wBAAwB,CACtC,WAAgB,EAChB,eAAuB,EACvB,mBAA8C,EAAE;IAEhD,OAAO,kBAAkB,CAAC,aAAa,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC1F,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AA6DA,4DAMC;AAnED,8EAAoE;AAEpE,yDAAqD;AACrD,+DAA2D;AAC3D,kEAA8D;AAG9D,MAAa,kBAAmB,SAAQ,0CAAgB;IAatD,YACE,WAAgB,EAChB,eAAuB,EACvB,mBAA8C,EAAE;QAEhD,KAAK,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,WAAgB,EAChB,eAAuB,EACvB,mBAA8C,EAAE;QAEhD,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAChF,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,eAAe;;QACjB,OAAO,OAAC,IAAI,CAAC,gBAAgB,oCAArB,IAAI,CAAC,gBAAgB,GAAK,IAAI,kCAAe,CAAC,IAAI,CAAC,cAAc,CAAC,EAAC,CAAC;IAC9E,CAAC;CACF;AApDD,gDAoDC;AAED,SAAgB,wBAAwB,CACtC,WAAgB,EAChB,eAAuB,EACvB,mBAA8C,EAAE;IAEhD,OAAO,kBAAkB,CAAC,aAAa,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC1F,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from './types';
2
- export { Strategy, OperationName, LOOKUP_CHUNK_SIZE } from './constants';
2
+ export { Strategy, OperationName, LOOKUP_CHUNK_SIZE, AdapterRole, SyncMode } from './constants';
3
3
  export { IntegrationContext, createIntegrationContext } from './context';
4
4
  export { ProxyClient } from './clients/proxy.client';
5
5
  export type { HttpMethod, ProxyRequestOptions } from './clients/proxy.client';
@@ -10,9 +10,15 @@ export { PreviewService } from './services/preview.service';
10
10
  export { SyncService } from './services/sync.service';
11
11
  export { SyncRunner, AdapterNotRegisteredError } from './services/sync-runner';
12
12
  export { SkeduloAdapter } from './adapters/skedulo.adapter';
13
- export { executeMapping, evaluateFilter, executeMappingDetailed } from './services/mapping.service';
14
- export type { MappingDetail } from './services/mapping.service';
13
+ export { BaseAdapter } from './adapters/base.adapter';
14
+ export { IdMappingService } from './services/id-mapping.service';
15
+ export type { MappingEntry } from './services/id-mapping.service';
16
+ export type { SyncRunOptions, SyncFlowStrategy } from './interfaces/sync-flow-strategy.interface';
17
+ export { executeMapping, evaluateFilter, executeMappingDetailed, } from './services/field-mapping.service';
18
+ export type { MappingDetail } from './services/field-mapping.service';
15
19
  export { MetadataHandler, MetadataHandlerError } from './handlers/metadata.handler';
16
- export type { MappingConfigMapping, MappingConfigDto, TranslationTable, ValidationAction, } from './interfaces/mapping-config.interface';
20
+ export type { MappingConfigMapping, MappingConfigDto, TranslationTable, ValidationAction, } from './interfaces/field-mapping.interface';
17
21
  export type { DataFlowTemplate, SampleAPI } from './interfaces/adapter.interface';
22
+ export { SyncStage } from './interfaces/sync-pipeline.interface';
23
+ export type { SyncPipelineState, SyncPipelineError } from './interfaces/sync-pipeline.interface';
18
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpG,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACpF,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,EACL,cAAc,EACd,cAAc,EACd,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACpF,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC"}
package/dist/index.js CHANGED
@@ -14,12 +14,14 @@ 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.MetadataHandlerError = exports.MetadataHandler = exports.executeMappingDetailed = exports.evaluateFilter = exports.executeMapping = exports.SkeduloAdapter = exports.AdapterNotRegisteredError = exports.SyncRunner = exports.SyncService = exports.PreviewService = exports.DataFlowService = exports.DataFlowClient = exports.ProxyClient = exports.createIntegrationContext = exports.IntegrationContext = exports.LOOKUP_CHUNK_SIZE = exports.OperationName = exports.Strategy = void 0;
17
+ exports.SyncStage = exports.MetadataHandlerError = exports.MetadataHandler = exports.executeMappingDetailed = exports.evaluateFilter = exports.executeMapping = exports.IdMappingService = exports.BaseAdapter = exports.SkeduloAdapter = exports.AdapterNotRegisteredError = exports.SyncRunner = exports.SyncService = exports.PreviewService = exports.DataFlowService = exports.DataFlowClient = exports.ProxyClient = exports.createIntegrationContext = exports.IntegrationContext = exports.SyncMode = exports.AdapterRole = exports.LOOKUP_CHUNK_SIZE = exports.OperationName = exports.Strategy = void 0;
18
18
  __exportStar(require("./types"), exports);
19
19
  var constants_1 = require("./constants");
20
20
  Object.defineProperty(exports, "Strategy", { enumerable: true, get: function () { return constants_1.Strategy; } });
21
21
  Object.defineProperty(exports, "OperationName", { enumerable: true, get: function () { return constants_1.OperationName; } });
22
22
  Object.defineProperty(exports, "LOOKUP_CHUNK_SIZE", { enumerable: true, get: function () { return constants_1.LOOKUP_CHUNK_SIZE; } });
23
+ Object.defineProperty(exports, "AdapterRole", { enumerable: true, get: function () { return constants_1.AdapterRole; } });
24
+ Object.defineProperty(exports, "SyncMode", { enumerable: true, get: function () { return constants_1.SyncMode; } });
23
25
  var context_1 = require("./context");
24
26
  Object.defineProperty(exports, "IntegrationContext", { enumerable: true, get: function () { return context_1.IntegrationContext; } });
25
27
  Object.defineProperty(exports, "createIntegrationContext", { enumerable: true, get: function () { return context_1.createIntegrationContext; } });
@@ -38,11 +40,17 @@ Object.defineProperty(exports, "SyncRunner", { enumerable: true, get: function (
38
40
  Object.defineProperty(exports, "AdapterNotRegisteredError", { enumerable: true, get: function () { return sync_runner_1.AdapterNotRegisteredError; } });
39
41
  var skedulo_adapter_1 = require("./adapters/skedulo.adapter");
40
42
  Object.defineProperty(exports, "SkeduloAdapter", { enumerable: true, get: function () { return skedulo_adapter_1.SkeduloAdapter; } });
41
- var mapping_service_1 = require("./services/mapping.service");
42
- Object.defineProperty(exports, "executeMapping", { enumerable: true, get: function () { return mapping_service_1.executeMapping; } });
43
- Object.defineProperty(exports, "evaluateFilter", { enumerable: true, get: function () { return mapping_service_1.evaluateFilter; } });
44
- Object.defineProperty(exports, "executeMappingDetailed", { enumerable: true, get: function () { return mapping_service_1.executeMappingDetailed; } });
43
+ var base_adapter_1 = require("./adapters/base.adapter");
44
+ Object.defineProperty(exports, "BaseAdapter", { enumerable: true, get: function () { return base_adapter_1.BaseAdapter; } });
45
+ var id_mapping_service_1 = require("./services/id-mapping.service");
46
+ Object.defineProperty(exports, "IdMappingService", { enumerable: true, get: function () { return id_mapping_service_1.IdMappingService; } });
47
+ var field_mapping_service_1 = require("./services/field-mapping.service");
48
+ Object.defineProperty(exports, "executeMapping", { enumerable: true, get: function () { return field_mapping_service_1.executeMapping; } });
49
+ Object.defineProperty(exports, "evaluateFilter", { enumerable: true, get: function () { return field_mapping_service_1.evaluateFilter; } });
50
+ Object.defineProperty(exports, "executeMappingDetailed", { enumerable: true, get: function () { return field_mapping_service_1.executeMappingDetailed; } });
45
51
  var metadata_handler_1 = require("./handlers/metadata.handler");
46
52
  Object.defineProperty(exports, "MetadataHandler", { enumerable: true, get: function () { return metadata_handler_1.MetadataHandler; } });
47
53
  Object.defineProperty(exports, "MetadataHandlerError", { enumerable: true, get: function () { return metadata_handler_1.MetadataHandlerError; } });
54
+ var sync_pipeline_interface_1 = require("./interfaces/sync-pipeline.interface");
55
+ Object.defineProperty(exports, "SyncStage", { enumerable: true, get: function () { return sync_pipeline_interface_1.SyncStage; } });
48
56
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAyE;AAAhE,qGAAA,QAAQ,OAAA;AAAE,0GAAA,aAAa,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AACnD,qCAAyE;AAAhE,6GAAA,kBAAkB,OAAA;AAAE,mHAAA,wBAAwB,OAAA;AACrD,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAEpB,6DAA2D;AAAlD,iHAAA,cAAc,OAAA;AAEvB,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AACxB,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,sDAA+E;AAAtE,yGAAA,UAAU,OAAA;AAAE,wHAAA,yBAAyB,OAAA;AAC9C,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,8DAAoG;AAA3F,iHAAA,cAAc,OAAA;AAAE,iHAAA,cAAc,OAAA;AAAE,yHAAA,sBAAsB,OAAA;AAE/D,gEAAoF;AAA3E,mHAAA,eAAe,OAAA;AAAE,wHAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAgG;AAAvF,qGAAA,QAAQ,OAAA;AAAE,0GAAA,aAAa,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAC1E,qCAAyE;AAAhE,6GAAA,kBAAkB,OAAA;AAAE,mHAAA,wBAAwB,OAAA;AACrD,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAEpB,6DAA2D;AAAlD,iHAAA,cAAc,OAAA;AAEvB,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AACxB,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,sDAA+E;AAAtE,yGAAA,UAAU,OAAA;AAAE,wHAAA,yBAAyB,OAAA;AAC9C,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA;AAGzB,0EAI0C;AAHxC,uHAAA,cAAc,OAAA;AACd,uHAAA,cAAc,OAAA;AACd,+HAAA,sBAAsB,OAAA;AAGxB,gEAAoF;AAA3E,mHAAA,eAAe,OAAA;AAAE,wHAAA,oBAAoB,OAAA;AAQ9C,gFAAiE;AAAxD,oHAAA,SAAS,OAAA"}
@@ -1,24 +1,33 @@
1
1
  import type { IntegrationContext } from '../context';
2
2
  import type { DataFlow } from './data-flow-spec.interface';
3
3
  import type { FilterSpec } from './filter.interface';
4
- import type { MappingConfigDto } from './mapping-config.interface';
4
+ import type { MappingConfigDto } from './field-mapping.interface';
5
5
  export interface UpsertOutcome {
6
6
  status: 'ok' | 'transient' | 'permanent';
7
- externalId?: string;
7
+ /** Adapter-specific result data (e.g. Skedulo UID, HubSpot ID). Shape is not assumed by the SDK. */
8
+ result?: unknown;
8
9
  error?: string;
10
+ /**
11
+ * True when the adapter fell back from an update to a create because the target record
12
+ * no longer exists (e.g. HubSpot 404 on batch/update). IdMappingSyncStrategy uses this
13
+ * to overwrite the stale mapping entry with the new target ID.
14
+ */
15
+ wasCreated?: boolean;
9
16
  }
10
17
  /**
11
18
  * (raw, mapped) pair threaded through the SyncService pipeline.
12
19
  *
13
- * raw — normalized vendor record (output of normalize(), or fetch() batch if normalize absent)
14
- * mapped — field-mapped target record with lookup IDs already resolved by resolveLookups()
20
+ * raw — vendor record from fetch(); adapters may mutate in beforeMap to add synthetic fields
21
+ * mapped — field-mapped target record; populated after afterMap, mutated through resolve steps
22
+ * meta — per-record adapter scratch space; use to carry computed data across hooks
15
23
  *
16
- * Passed to enrich() so adapters can post-process mapped records using the original vendor data.
17
- * Length and order must be preserved across every step.
24
+ * Length and order must be preserved across every pipeline step.
18
25
  */
19
26
  export interface EnrichmentPair {
20
27
  raw: Record<string, unknown>;
21
28
  mapped: Record<string, unknown>;
29
+ /** Per-record adapter scratch space. Not used by the SDK. */
30
+ meta?: Record<string, unknown>;
22
31
  }
23
32
  export interface ObjectInfo {
24
33
  name: string;
@@ -62,19 +71,22 @@ export interface Adapter<TRecord = Record<string, unknown>> {
62
71
  * SyncService applies spec.filter locally as a safety net after normalization.
63
72
  */
64
73
  fetch?(ctx: IntegrationContext, flow: DataFlow, since: Date | null, filter: FilterSpec | null): AsyncIterable<TRecord[]>;
65
- /**
66
- * Optional. Convert raw vendor records to a canonical flat shape before mapping.
67
- * Combines structural normalization (XML→JSON, flatten nested props) and
68
- * synthetic field injection. Must return one record per input, same order.
69
- * Output shape must match what fetchSampleRecords returns (UI consistency).
70
- */
71
- normalize?(ctx: IntegrationContext, flow: DataFlow, records: TRecord[]): Promise<Record<string, unknown>[]>;
72
- /**
73
- * Optional. Post-processing after lookup resolution, before upsert.
74
- * Receives (normalized vendor record, mapped target record with resolved IDs) pairs.
75
- * Must return one enriched record per input pair, same order.
76
- */
77
- enrich?(ctx: IntegrationContext, flow: DataFlow, pairs: EnrichmentPair[]): Promise<Record<string, unknown>[]>;
74
+ /** Before FME mapping. Add synthetic fields to ctx.pipeline.data[].raw. */
75
+ beforeMap?(ctx: IntegrationContext): Promise<void>;
76
+ /** After FME mapping. ctx.pipeline.data[].mapped is populated. */
77
+ afterMap?(ctx: IntegrationContext): Promise<void>;
78
+ /** Before identity/lookup resolution. */
79
+ beforeResolve?(ctx: IntegrationContext): Promise<void>;
80
+ /** After resolution. mapped.__targetUID and lookup UIDs are set. */
81
+ afterResolve?(ctx: IntegrationContext): Promise<void>;
82
+ /** Before write to target. Final chance to shape the payload. */
83
+ beforeUpsert?(ctx: IntegrationContext): Promise<void>;
84
+ /** After upsert. ctx.pipeline.outcomes populated. Use for write-back. */
85
+ afterUpsert?(ctx: IntegrationContext): Promise<void>;
86
+ /** Before delete. ctx.pipeline.deleteIds populated. */
87
+ beforeDelete?(ctx: IntegrationContext): Promise<void>;
88
+ /** After successful delete. */
89
+ afterDelete?(ctx: IntegrationContext): Promise<void>;
78
90
  /**
79
91
  * Optional. Translate raw mapped values to the target system's native IDs.
80
92
  * Called by SyncService before upsert when the method is defined.
@@ -115,5 +127,27 @@ export interface Adapter<TRecord = Record<string, unknown>> {
115
127
  getTemplates?(): Promise<DataFlowTemplate[]>;
116
128
  /** Optional. Return sample API calls shown in the Playground tab. */
117
129
  getSampleAPIs?(): SampleAPI[];
130
+ /**
131
+ * Optional. Returns the field name used to identify records in this adapter's native system.
132
+ * Used by IdMappingSyncStrategy to extract source IDs from raw records before mapping.
133
+ * e.g. 'UID' for Skedulo, 'id' for HubSpot (after normalize flattens properties).
134
+ * Defaults to 'id' when absent.
135
+ */
136
+ getRecordIdField?(): string;
137
+ /**
138
+ * Optional. Extracts (sourceId, targetId) pairs from upsert outcomes after a batch create.
139
+ * Called by IdMappingSyncStrategy to write mapping entries for newly created records.
140
+ * sourceIds and outcomes are in the same order; only called with create (not update) outcomes.
141
+ */
142
+ buildMappingEntries?(sourceIds: string[], outcomes: UpsertOutcome[]): Array<{
143
+ sourceId: string;
144
+ targetId: string;
145
+ }>;
146
+ /**
147
+ * Optional. Delete records directly by their native system ID without key-based lookup.
148
+ * Used by IdMappingSyncStrategy after resolving a target ID from the mapping table.
149
+ * Falls back to delete() if absent.
150
+ */
151
+ deleteById?(ctx: IntegrationContext, flow: DataFlow, ids: string[]): Promise<void>;
118
152
  }
119
153
  //# sourceMappingURL=adapter.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/adapter.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/adapter.interface.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,29 @@
1
1
  import type { LookupRule } from './lookup-rule.interface';
2
+ export type ValidationAction = 'SKIP' | 'ERROR' | 'WARN';
3
+ export interface TranslationTable {
4
+ name: string;
5
+ mappings: Record<string, string>;
6
+ }
2
7
  export interface FieldMapping {
3
8
  target: string;
4
9
  expression: string;
5
10
  label?: string;
11
+ /** When set, this field is a relationship — resolved via EQL (ExternalId) or mapping table (idMapping). */
6
12
  lookup?: LookupRule;
7
13
  }
14
+ /** @deprecated Use FieldMapping — identical shape, kept for backward compatibility. */
15
+ export type MappingConfigMapping = FieldMapping;
8
16
  export interface MappingConfigDto {
9
17
  mappings: FieldMapping[];
10
18
  version?: string;
11
- translations?: Array<{
12
- name: string;
13
- mappings: Record<string, string>;
14
- }>;
19
+ translations?: TranslationTable[];
15
20
  variables?: Array<{
16
21
  name: string;
17
22
  expression: string;
18
23
  }>;
19
24
  validations?: Array<{
20
25
  condition: string;
21
- action: 'SKIP' | 'ERROR' | 'WARN';
26
+ action: ValidationAction;
22
27
  label?: string;
23
28
  message?: string;
24
29
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"field-mapping.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/field-mapping.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IACzE,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QAClC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"field-mapping.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/field-mapping.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2GAA2G;IAC3G,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,uFAAuF;AACvF,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,gBAAgB,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ"}
@@ -9,5 +9,11 @@ export interface IntegrationCapabilities {
9
9
  * Set to false for read-only or tightly scoped integrations (e.g. Workday).
10
10
  */
11
11
  allowNewDataFlows: boolean;
12
+ /**
13
+ * Identity resolution strategy used by this integration.
14
+ * 'externalId' (default): requires ExternalId custom field on each synced Skedulo object.
15
+ * 'idMapping': uses IntegrationIdMapping custom object as a bi-directional identity store.
16
+ */
17
+ lookupStrategy?: 'externalId' | 'idMapping';
12
18
  }
13
19
  //# sourceMappingURL=integration-capabilities.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"integration-capabilities.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/integration-capabilities.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B"}
1
+ {"version":3,"file":"integration-capabilities.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/integration-capabilities.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;CAC7C"}
@@ -0,0 +1,15 @@
1
+ import type { IntegrationContext } from '../context';
2
+ import type { Adapter } from './adapter.interface';
3
+ import type { DataFlow } from './data-flow-spec.interface';
4
+ import type { FilterSpec } from './filter.interface';
5
+ import type { MappedEvent } from './mapped-event.interface';
6
+ import type { BatchResult, SyncResult } from './sync-result.interface';
7
+ export interface SyncRunOptions {
8
+ lookupStrategy?: 'externalId' | 'idMapping';
9
+ }
10
+ export interface SyncFlowStrategy {
11
+ processBatch(ctx: IntegrationContext, flow: DataFlow, source: Adapter | null, target: Adapter, records: Record<string, unknown>[], filter: FilterSpec | null): Promise<BatchResult>;
12
+ handleDeleteEvent(ctx: IntegrationContext, flow: DataFlow, target: Adapter, recordId: string): Promise<SyncResult>;
13
+ handleUpsertEvent(ctx: IntegrationContext, flow: DataFlow, source: Adapter | null, target: Adapter, event: MappedEvent): Promise<SyncResult>;
14
+ }
15
+ //# sourceMappingURL=sync-flow-strategy.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-flow-strategy.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/sync-flow-strategy.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CACV,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,MAAM,EAAE,UAAU,GAAG,IAAI,GACxB,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB,iBAAiB,CACf,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,iBAAiB,CACf,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,CAAC;CACxB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=sync-flow-strategy.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-flow-strategy.interface.js","sourceRoot":"","sources":["../../src/interfaces/sync-flow-strategy.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,108 @@
1
+ import type { SyncMode } from '../constants';
2
+ import type { DataFlow } from './data-flow-spec.interface';
3
+ import type { FilterSpec } from './filter.interface';
4
+ import type { BatchResult } from './sync-result.interface';
5
+ import type { EnrichmentPair, UpsertOutcome } from './adapter.interface';
6
+ export declare const SyncStage: {
7
+ readonly MAP: "map";
8
+ readonly RESOLVE: "resolve";
9
+ readonly UPSERT: "upsert";
10
+ readonly DELETE: "delete";
11
+ readonly MAPPING_WRITE: "mapping_write";
12
+ };
13
+ export type SyncStage = (typeof SyncStage)[keyof typeof SyncStage];
14
+ /**
15
+ * Structured error captured during sync pipeline execution.
16
+ * Both record-level (upsert outcome failure) and process-level (batch throw) errors
17
+ * are recorded here. Inspect ctx.pipeline.errors in afterUpsert / afterDelete hooks.
18
+ */
19
+ export interface SyncPipelineError {
20
+ /** Pipeline step where the failure occurred. */
21
+ stage: SyncStage;
22
+ /** Human-readable error message. */
23
+ message: string;
24
+ /** Present for record-level failures — index into ctx.pipeline.data. */
25
+ recordIndex?: number;
26
+ /**
27
+ * Raw source record at the time of failure.
28
+ * Included so the data that caused the error can be inspected or replayed.
29
+ */
30
+ data?: Record<string, unknown>;
31
+ }
32
+ /**
33
+ * Pipeline state for the current sync batch. Attached to ctx.pipeline by SyncService
34
+ * at the start of each batch and updated progressively as pipeline steps complete.
35
+ *
36
+ * Hook availability by step:
37
+ *
38
+ * Hook │ data[].raw │ data[].mapped │ outcomes │ deleteIds
39
+ * ────────────────┼───────────────┼───────────────────────────┼───────────┼──────────
40
+ * beforeMap │ raw records │ {} (not yet mapped) │ - │ -
41
+ * afterMap │ raw records │ FME output │ - │ -
42
+ * beforeResolve │ raw records │ FME output │ - │ -
43
+ * afterResolve │ raw records │ + __targetUID + UIDs │ - │ -
44
+ * beforeUpsert │ raw records │ final payload │ - │ -
45
+ * afterUpsert │ raw records │ final payload │ populated │ -
46
+ * beforeDelete │ - │ - │ - │ populated
47
+ * afterDelete │ - │ - │ - │ populated
48
+ */
49
+ export interface SyncPipelineState {
50
+ readonly flow: DataFlow;
51
+ readonly filter: FilterSpec | null;
52
+ /** Whether this run was triggered as a scheduled batch or a real-time event. */
53
+ readonly syncMode: SyncMode;
54
+ /**
55
+ * Timestamp of the last successful sync. null on a full (initial) sync.
56
+ * Only set in BATCH mode; always null in EVENT mode.
57
+ * Source adapters can read this in beforeMap to adjust prefetch behaviour.
58
+ */
59
+ readonly since: Date | null;
60
+ /**
61
+ * Live pipeline data. Length and order are preserved across steps.
62
+ * After beforeMap: raw = source record, mapped = {}
63
+ * After afterMap: raw = source record, mapped = FME output
64
+ * After afterResolve: mapped.__targetUID set, lookup fields resolved to target UIDs
65
+ */
66
+ data: EnrichmentPair[];
67
+ /**
68
+ * Upsert outcomes — one per data entry, same order.
69
+ * Populated immediately before afterUpsert fires. Empty at all earlier hooks.
70
+ */
71
+ outcomes: UpsertOutcome[];
72
+ /**
73
+ * IDs targeted for deletion. Populated before beforeDelete fires.
74
+ * Only present in delete flows.
75
+ */
76
+ deleteIds: string[];
77
+ /**
78
+ * Running batch counters. Updated by the strategy throughout the pipeline.
79
+ * Hooks may read these (e.g. in afterUpsert to check failure count).
80
+ * Do not mutate directly.
81
+ */
82
+ stats: BatchResult;
83
+ /**
84
+ * Structured errors captured during this pipeline run.
85
+ * Both record-level (individual upsert failures) and process-level (batch throws)
86
+ * are recorded here with stage, message, record index, and raw data.
87
+ * Populated as errors occur — readable in any hook after the failing step.
88
+ */
89
+ errors: SyncPipelineError[];
90
+ /**
91
+ * The pipeline step at which a fatal (whole-batch) error occurred.
92
+ * null when the pipeline completed without a fatal error.
93
+ * Set before the strategy returns early — readable in afterUpsert / afterDelete.
94
+ */
95
+ failedAtStage: SyncStage | null;
96
+ /**
97
+ * Adapter-owned scratch space for passing arbitrary data between hook invocations.
98
+ *
99
+ * Example: in beforeMap, prefetch related records and store them here so afterResolve
100
+ * can embed them into the mapped payload without a second API call.
101
+ *
102
+ * ctx.pipeline.meta['lineItemsByContactId'] = new Map([...]);
103
+ *
104
+ * Cleared between batches. The SDK imposes no schema.
105
+ */
106
+ meta: Record<string, unknown>;
107
+ }
108
+ //# sourceMappingURL=sync-pipeline.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-pipeline.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/sync-pipeline.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzE,eAAO,MAAM,SAAS;;;;;;CAMZ,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,KAAK,EAAE,SAAS,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAEnC,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IAE5B;;;;;OAKG;IACH,IAAI,EAAE,cAAc,EAAE,CAAC;IAEvB;;;OAGG;IACH,QAAQ,EAAE,aAAa,EAAE,CAAC;IAE1B;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB;;;;OAIG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;;;;OAKG;IACH,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAE5B;;;;OAIG;IACH,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;IAEhC;;;;;;;;;OASG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SyncStage = void 0;
4
+ // Pipeline step where an error originated. Used in SyncPipelineError.stage.
5
+ exports.SyncStage = {
6
+ MAP: 'map',
7
+ RESOLVE: 'resolve',
8
+ UPSERT: 'upsert',
9
+ DELETE: 'delete',
10
+ MAPPING_WRITE: 'mapping_write',
11
+ };
12
+ //# sourceMappingURL=sync-pipeline.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-pipeline.interface.js","sourceRoot":"","sources":["../../src/interfaces/sync-pipeline.interface.ts"],"names":[],"mappings":";;;AAMA,4EAA4E;AAC/D,QAAA,SAAS,GAAG;IACvB,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE,eAAe;CACtB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { IntegrationContext } from '../context';
2
+ import type { Adapter } from '../interfaces/adapter.interface';
3
+ import type { DataFlow } from '../interfaces/data-flow-spec.interface';
4
+ import type { FilterSpec } from '../interfaces/filter.interface';
5
+ import type { MappedEvent } from '../interfaces/mapped-event.interface';
6
+ import type { BatchResult, SyncResult } from '../interfaces/sync-result.interface';
7
+ import type { SyncFlowStrategy } from '../interfaces/sync-flow-strategy.interface';
8
+ export declare class ExternalIdSyncStrategy implements SyncFlowStrategy {
9
+ processBatch(ctx: IntegrationContext, flow: DataFlow, source: Adapter | null, target: Adapter, records: Record<string, unknown>[], localFilter: FilterSpec | null): Promise<BatchResult>;
10
+ handleDeleteEvent(ctx: IntegrationContext, flow: DataFlow, target: Adapter, recordId: string): Promise<SyncResult>;
11
+ handleUpsertEvent(ctx: IntegrationContext, flow: DataFlow, _source: Adapter | null, target: Adapter, event: MappedEvent): Promise<SyncResult>;
12
+ }
13
+ //# sourceMappingURL=external-id-sync.strategy.d.ts.map
@@ -0,0 +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,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;CA8BvB"}