@skedulo/integration-sdk 0.2.4 → 0.3.1

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 (409) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/README.md +9 -0
  3. package/dist/adapters/adapter-registry.d.ts +9 -0
  4. package/dist/adapters/adapter-registry.d.ts.map +1 -0
  5. package/dist/adapters/adapter-registry.js +34 -0
  6. package/dist/adapters/adapter-registry.js.map +1 -0
  7. package/dist/adapters/base-adapter-handler.d.ts +105 -0
  8. package/dist/adapters/base-adapter-handler.d.ts.map +1 -0
  9. package/dist/adapters/base-adapter-handler.js +379 -0
  10. package/dist/adapters/base-adapter-handler.js.map +1 -0
  11. package/dist/adapters/base.adapter.d.ts +38 -17
  12. package/dist/adapters/base.adapter.d.ts.map +1 -1
  13. package/dist/adapters/base.adapter.js +80 -22
  14. package/dist/adapters/base.adapter.js.map +1 -1
  15. package/dist/adapters/helpers.d.ts +15 -0
  16. package/dist/adapters/helpers.d.ts.map +1 -0
  17. package/dist/adapters/helpers.js +55 -0
  18. package/dist/adapters/helpers.js.map +1 -0
  19. package/dist/adapters/skedulo-metadata-adapter.d.ts +3 -0
  20. package/dist/adapters/skedulo-metadata-adapter.d.ts.map +1 -0
  21. package/dist/adapters/skedulo-metadata-adapter.js +57 -0
  22. package/dist/adapters/skedulo-metadata-adapter.js.map +1 -0
  23. package/dist/adapters/skedulo-metadata.adapter.d.ts +3 -0
  24. package/dist/adapters/skedulo-metadata.adapter.d.ts.map +1 -0
  25. package/dist/adapters/skedulo-metadata.adapter.js +57 -0
  26. package/dist/adapters/skedulo-metadata.adapter.js.map +1 -0
  27. package/dist/adapters/skedulo.adapter.d.ts +11 -0
  28. package/dist/adapters/skedulo.adapter.d.ts.map +1 -1
  29. package/dist/adapters/skedulo.adapter.js +31 -7
  30. package/dist/adapters/skedulo.adapter.js.map +1 -1
  31. package/dist/adapters/upsert-harness.d.ts +15 -0
  32. package/dist/adapters/upsert-harness.d.ts.map +1 -0
  33. package/dist/adapters/upsert-harness.js +55 -0
  34. package/dist/adapters/upsert-harness.js.map +1 -0
  35. package/dist/clients/dataflow-client.d.ts +18 -0
  36. package/dist/clients/dataflow-client.d.ts.map +1 -0
  37. package/dist/clients/dataflow-client.js +43 -0
  38. package/dist/clients/dataflow-client.js.map +1 -0
  39. package/dist/clients/dataflow.client.js +2 -2
  40. package/dist/clients/dataflow.client.js.map +1 -1
  41. package/dist/clients/proxy-client.d.ts +13 -0
  42. package/dist/clients/proxy-client.d.ts.map +1 -0
  43. package/dist/clients/proxy-client.js +20 -0
  44. package/dist/clients/proxy-client.js.map +1 -0
  45. package/dist/clients/proxy.client.d.ts +11 -1
  46. package/dist/clients/proxy.client.d.ts.map +1 -1
  47. package/dist/clients/proxy.client.js.map +1 -1
  48. package/dist/constants.d.ts +7 -0
  49. package/dist/constants.d.ts.map +1 -1
  50. package/dist/constants.js +7 -1
  51. package/dist/constants.js.map +1 -1
  52. package/dist/context.d.ts +5 -0
  53. package/dist/context.d.ts.map +1 -1
  54. package/dist/context.js +9 -0
  55. package/dist/context.js.map +1 -1
  56. package/dist/dist/adapters/skedulo-metadata-adapter.d.ts +3 -0
  57. package/dist/dist/adapters/skedulo-metadata-adapter.d.ts.map +1 -0
  58. package/dist/dist/adapters/skedulo-metadata-adapter.js +57 -0
  59. package/dist/dist/adapters/skedulo-metadata-adapter.js.map +1 -0
  60. package/dist/dist/adapters/skedulo-metadata.adapter.d.ts +3 -0
  61. package/dist/dist/adapters/skedulo-metadata.adapter.d.ts.map +1 -0
  62. package/dist/dist/adapters/skedulo-metadata.adapter.js +57 -0
  63. package/dist/dist/adapters/skedulo-metadata.adapter.js.map +1 -0
  64. package/dist/dist/adapters/skedulo.adapter.d.ts +15 -0
  65. package/dist/dist/adapters/skedulo.adapter.d.ts.map +1 -0
  66. package/dist/dist/adapters/skedulo.adapter.js +213 -0
  67. package/dist/dist/adapters/skedulo.adapter.js.map +1 -0
  68. package/dist/dist/browser.d.ts +12 -0
  69. package/dist/dist/browser.d.ts.map +1 -0
  70. package/dist/dist/browser.js +9 -0
  71. package/dist/dist/browser.js.map +1 -0
  72. package/dist/dist/clients/dataflow-client.d.ts +18 -0
  73. package/dist/dist/clients/dataflow-client.d.ts.map +1 -0
  74. package/dist/dist/clients/dataflow-client.js +43 -0
  75. package/dist/dist/clients/dataflow-client.js.map +1 -0
  76. package/dist/dist/clients/dataflow.client.d.ts +19 -0
  77. package/dist/dist/clients/dataflow.client.d.ts.map +1 -0
  78. package/dist/dist/clients/dataflow.client.js +28 -0
  79. package/dist/dist/clients/dataflow.client.js.map +1 -0
  80. package/dist/dist/clients/proxy-client.d.ts +13 -0
  81. package/dist/dist/clients/proxy-client.d.ts.map +1 -0
  82. package/dist/dist/clients/proxy-client.js +20 -0
  83. package/dist/dist/clients/proxy-client.js.map +1 -0
  84. package/dist/dist/clients/proxy.client.d.ts +13 -0
  85. package/dist/dist/clients/proxy.client.d.ts.map +1 -0
  86. package/dist/dist/clients/proxy.client.js +21 -0
  87. package/dist/dist/clients/proxy.client.js.map +1 -0
  88. package/dist/dist/constants.d.ts +17 -0
  89. package/dist/dist/constants.d.ts.map +1 -0
  90. package/dist/dist/constants.js +20 -0
  91. package/dist/dist/constants.js.map +1 -0
  92. package/dist/dist/context.d.ts +19 -0
  93. package/dist/dist/context.d.ts.map +1 -0
  94. package/dist/dist/context.js +40 -0
  95. package/dist/dist/context.js.map +1 -0
  96. package/dist/dist/handlers/metadata.handler.d.ts +17 -0
  97. package/dist/dist/handlers/metadata.handler.d.ts.map +1 -0
  98. package/dist/dist/handlers/metadata.handler.js +50 -0
  99. package/dist/dist/handlers/metadata.handler.js.map +1 -0
  100. package/dist/dist/index.d.ts +18 -0
  101. package/dist/dist/index.d.ts.map +1 -0
  102. package/dist/dist/index.js +48 -0
  103. package/dist/dist/index.js.map +1 -0
  104. package/dist/dist/interfaces/adapter.interface.d.ts +122 -0
  105. package/dist/dist/interfaces/adapter.interface.d.ts.map +1 -0
  106. package/dist/dist/interfaces/adapter.interface.js +3 -0
  107. package/dist/dist/interfaces/adapter.interface.js.map +1 -0
  108. package/dist/dist/interfaces/data-flow-spec.interface.d.ts +22 -0
  109. package/dist/dist/interfaces/data-flow-spec.interface.d.ts.map +1 -0
  110. package/dist/dist/interfaces/data-flow-spec.interface.js +3 -0
  111. package/dist/dist/interfaces/data-flow-spec.interface.js.map +1 -0
  112. package/dist/dist/interfaces/field-mapping.interface.d.ts +26 -0
  113. package/dist/dist/interfaces/field-mapping.interface.d.ts.map +1 -0
  114. package/dist/dist/interfaces/field-mapping.interface.js +3 -0
  115. package/dist/dist/interfaces/field-mapping.interface.js.map +1 -0
  116. package/dist/dist/interfaces/filter.interface.d.ts +19 -0
  117. package/dist/dist/interfaces/filter.interface.d.ts.map +1 -0
  118. package/dist/dist/interfaces/filter.interface.js +20 -0
  119. package/dist/dist/interfaces/filter.interface.js.map +1 -0
  120. package/dist/dist/interfaces/integration-capabilities.interface.d.ts +13 -0
  121. package/dist/dist/interfaces/integration-capabilities.interface.d.ts.map +1 -0
  122. package/dist/dist/interfaces/integration-capabilities.interface.js +3 -0
  123. package/dist/dist/interfaces/integration-capabilities.interface.js.map +1 -0
  124. package/dist/dist/interfaces/lookup-rule.interface.d.ts +14 -0
  125. package/dist/dist/interfaces/lookup-rule.interface.d.ts.map +1 -0
  126. package/dist/dist/interfaces/lookup-rule.interface.js +3 -0
  127. package/dist/dist/interfaces/lookup-rule.interface.js.map +1 -0
  128. package/dist/dist/interfaces/mapped-event.interface.d.ts +9 -0
  129. package/dist/dist/interfaces/mapped-event.interface.d.ts.map +1 -0
  130. package/dist/dist/interfaces/mapped-event.interface.js +3 -0
  131. package/dist/dist/interfaces/mapped-event.interface.js.map +1 -0
  132. package/dist/dist/interfaces/mapping-config.interface.d.ts +26 -0
  133. package/dist/dist/interfaces/mapping-config.interface.d.ts.map +1 -0
  134. package/dist/dist/interfaces/mapping-config.interface.js +3 -0
  135. package/dist/dist/interfaces/mapping-config.interface.js.map +1 -0
  136. package/dist/dist/interfaces/metadata-adapter.interface.d.ts +26 -0
  137. package/dist/dist/interfaces/metadata-adapter.interface.d.ts.map +1 -0
  138. package/dist/dist/interfaces/metadata-adapter.interface.js +3 -0
  139. package/dist/dist/interfaces/metadata-adapter.interface.js.map +1 -0
  140. package/dist/dist/interfaces/pull-adapter.interface.d.ts +50 -0
  141. package/dist/dist/interfaces/pull-adapter.interface.d.ts.map +1 -0
  142. package/dist/dist/interfaces/pull-adapter.interface.js +3 -0
  143. package/dist/dist/interfaces/pull-adapter.interface.js.map +1 -0
  144. package/dist/dist/interfaces/push-adapter.interface.d.ts +28 -0
  145. package/dist/dist/interfaces/push-adapter.interface.d.ts.map +1 -0
  146. package/dist/dist/interfaces/push-adapter.interface.js +3 -0
  147. package/dist/dist/interfaces/push-adapter.interface.js.map +1 -0
  148. package/dist/dist/interfaces/sample-fetcher.interface.d.ts +4 -0
  149. package/dist/dist/interfaces/sample-fetcher.interface.d.ts.map +1 -0
  150. package/dist/dist/interfaces/sample-fetcher.interface.js +3 -0
  151. package/dist/dist/interfaces/sample-fetcher.interface.js.map +1 -0
  152. package/dist/dist/interfaces/sync-result.interface.d.ts +19 -0
  153. package/dist/dist/interfaces/sync-result.interface.d.ts.map +1 -0
  154. package/dist/dist/interfaces/sync-result.interface.js +3 -0
  155. package/dist/dist/interfaces/sync-result.interface.js.map +1 -0
  156. package/dist/dist/interfaces/target-adapter.interface.d.ts +10 -0
  157. package/dist/dist/interfaces/target-adapter.interface.d.ts.map +1 -0
  158. package/dist/dist/interfaces/target-adapter.interface.js +3 -0
  159. package/dist/dist/interfaces/target-adapter.interface.js.map +1 -0
  160. package/dist/dist/mocks/hubspot.d.ts +4 -0
  161. package/dist/dist/mocks/hubspot.d.ts.map +1 -0
  162. package/dist/dist/mocks/hubspot.js +61 -0
  163. package/dist/dist/mocks/hubspot.js.map +1 -0
  164. package/dist/dist/provenance.d.ts +3 -0
  165. package/dist/dist/provenance.d.ts.map +1 -0
  166. package/dist/dist/provenance.js +12 -0
  167. package/dist/dist/provenance.js.map +1 -0
  168. package/dist/dist/services/dataflow-service.d.ts +21 -0
  169. package/dist/dist/services/dataflow-service.d.ts.map +1 -0
  170. package/dist/dist/services/dataflow-service.js +47 -0
  171. package/dist/dist/services/dataflow-service.js.map +1 -0
  172. package/dist/dist/services/dataflow.service.d.ts +20 -0
  173. package/dist/dist/services/dataflow.service.d.ts.map +1 -0
  174. package/dist/dist/services/dataflow.service.js +52 -0
  175. package/dist/dist/services/dataflow.service.js.map +1 -0
  176. package/dist/dist/services/eql.d.ts +2 -0
  177. package/dist/dist/services/eql.d.ts.map +1 -0
  178. package/dist/dist/services/eql.js +10 -0
  179. package/dist/dist/services/eql.js.map +1 -0
  180. package/dist/dist/services/mapping-service.d.ts +14 -0
  181. package/dist/dist/services/mapping-service.d.ts.map +1 -0
  182. package/dist/dist/services/mapping-service.js +88 -0
  183. package/dist/dist/services/mapping-service.js.map +1 -0
  184. package/dist/dist/services/mapping.service.d.ts +14 -0
  185. package/dist/dist/services/mapping.service.d.ts.map +1 -0
  186. package/dist/dist/services/mapping.service.js +89 -0
  187. package/dist/dist/services/mapping.service.js.map +1 -0
  188. package/dist/dist/services/outbound-service.d.ts +14 -0
  189. package/dist/dist/services/outbound-service.d.ts.map +1 -0
  190. package/dist/dist/services/outbound-service.js +65 -0
  191. package/dist/dist/services/outbound-service.js.map +1 -0
  192. package/dist/dist/services/paragon-workflow-service.d.ts +7 -0
  193. package/dist/dist/services/paragon-workflow-service.d.ts.map +1 -0
  194. package/dist/dist/services/paragon-workflow-service.js +68 -0
  195. package/dist/dist/services/paragon-workflow-service.js.map +1 -0
  196. package/dist/dist/services/paragon-workflow.service.d.ts +8 -0
  197. package/dist/dist/services/paragon-workflow.service.d.ts.map +1 -0
  198. package/dist/dist/services/paragon-workflow.service.js +31 -0
  199. package/dist/dist/services/paragon-workflow.service.js.map +1 -0
  200. package/dist/dist/services/preview-service.d.ts +11 -0
  201. package/dist/dist/services/preview-service.d.ts.map +1 -0
  202. package/dist/dist/services/preview-service.js +66 -0
  203. package/dist/dist/services/preview-service.js.map +1 -0
  204. package/dist/dist/services/preview.service.d.ts +11 -0
  205. package/dist/dist/services/preview.service.d.ts.map +1 -0
  206. package/dist/dist/services/preview.service.js +74 -0
  207. package/dist/dist/services/preview.service.js.map +1 -0
  208. package/dist/dist/services/pull-service.d.ts +9 -0
  209. package/dist/dist/services/pull-service.d.ts.map +1 -0
  210. package/dist/dist/services/pull-service.js +207 -0
  211. package/dist/dist/services/pull-service.js.map +1 -0
  212. package/dist/dist/services/pull.service.d.ts +11 -0
  213. package/dist/dist/services/pull.service.d.ts.map +1 -0
  214. package/dist/dist/services/pull.service.js +200 -0
  215. package/dist/dist/services/pull.service.js.map +1 -0
  216. package/dist/dist/services/push-service.d.ts +16 -0
  217. package/dist/dist/services/push-service.d.ts.map +1 -0
  218. package/dist/dist/services/push-service.js +76 -0
  219. package/dist/dist/services/push-service.js.map +1 -0
  220. package/dist/dist/services/push.service.d.ts +19 -0
  221. package/dist/dist/services/push.service.d.ts.map +1 -0
  222. package/dist/dist/services/push.service.js +186 -0
  223. package/dist/dist/services/push.service.js.map +1 -0
  224. package/dist/dist/services/scheduled-pull-service.d.ts +7 -0
  225. package/dist/dist/services/scheduled-pull-service.d.ts.map +1 -0
  226. package/dist/dist/services/scheduled-pull-service.js +58 -0
  227. package/dist/dist/services/scheduled-pull-service.js.map +1 -0
  228. package/dist/dist/services/split-filter.d.ts +3 -0
  229. package/dist/dist/services/split-filter.d.ts.map +1 -0
  230. package/dist/dist/services/split-filter.js +50 -0
  231. package/dist/dist/services/split-filter.js.map +1 -0
  232. package/dist/dist/services/sync-runner.d.ts +22 -0
  233. package/dist/dist/services/sync-runner.d.ts.map +1 -0
  234. package/dist/dist/services/sync-runner.js +110 -0
  235. package/dist/dist/services/sync-runner.js.map +1 -0
  236. package/dist/dist/services/sync.service.d.ts +21 -0
  237. package/dist/dist/services/sync.service.d.ts.map +1 -0
  238. package/dist/dist/services/sync.service.js +166 -0
  239. package/dist/dist/services/sync.service.js.map +1 -0
  240. package/dist/dist/types.d.ts +11 -0
  241. package/dist/dist/types.d.ts.map +1 -0
  242. package/dist/dist/types.js +6 -0
  243. package/dist/dist/types.js.map +1 -0
  244. package/dist/dist/utils/compileFilter.d.ts +3 -0
  245. package/dist/dist/utils/compileFilter.d.ts.map +1 -0
  246. package/dist/dist/utils/compileFilter.js +73 -0
  247. package/dist/dist/utils/compileFilter.js.map +1 -0
  248. package/dist/dist/utils/normalizeDataFlow.d.ts +3 -0
  249. package/dist/dist/utils/normalizeDataFlow.d.ts.map +1 -0
  250. package/dist/dist/utils/normalizeDataFlow.js +30 -0
  251. package/dist/dist/utils/normalizeDataFlow.js.map +1 -0
  252. package/dist/dist/utils.d.ts +2 -0
  253. package/dist/dist/utils.d.ts.map +1 -0
  254. package/dist/dist/utils.js +10 -0
  255. package/dist/dist/utils.js.map +1 -0
  256. package/dist/handlers/metadata.handler.d.ts +0 -4
  257. package/dist/handlers/metadata.handler.d.ts.map +1 -1
  258. package/dist/handlers/metadata.handler.js +8 -12
  259. package/dist/handlers/metadata.handler.js.map +1 -1
  260. package/dist/index.d.ts +15 -7
  261. package/dist/index.d.ts.map +1 -1
  262. package/dist/index.js +22 -4
  263. package/dist/index.js.map +1 -1
  264. package/dist/interfaces/adapter.interface.d.ts +62 -0
  265. package/dist/interfaces/adapter.interface.d.ts.map +1 -1
  266. package/dist/interfaces/integration-capabilities.interface.d.ts +4 -9
  267. package/dist/interfaces/integration-capabilities.interface.d.ts.map +1 -1
  268. package/dist/interfaces/mapping-config.interface.d.ts +26 -0
  269. package/dist/interfaces/mapping-config.interface.d.ts.map +1 -0
  270. package/dist/interfaces/mapping-config.interface.js +3 -0
  271. package/dist/interfaces/mapping-config.interface.js.map +1 -0
  272. package/dist/interfaces/metadata-adapter.interface.d.ts +26 -0
  273. package/dist/interfaces/metadata-adapter.interface.d.ts.map +1 -0
  274. package/dist/interfaces/metadata-adapter.interface.js +3 -0
  275. package/dist/interfaces/metadata-adapter.interface.js.map +1 -0
  276. package/dist/interfaces/pull-adapter.interface.d.ts +50 -0
  277. package/dist/interfaces/pull-adapter.interface.d.ts.map +1 -0
  278. package/dist/interfaces/pull-adapter.interface.js +3 -0
  279. package/dist/interfaces/pull-adapter.interface.js.map +1 -0
  280. package/dist/interfaces/push-adapter.interface.d.ts +28 -0
  281. package/dist/interfaces/push-adapter.interface.d.ts.map +1 -0
  282. package/dist/interfaces/push-adapter.interface.js +3 -0
  283. package/dist/interfaces/push-adapter.interface.js.map +1 -0
  284. package/dist/interfaces/sync-flow-strategy.interface.d.ts +2 -1
  285. package/dist/interfaces/sync-flow-strategy.interface.d.ts.map +1 -1
  286. package/dist/interfaces/target-adapter.interface.d.ts +10 -0
  287. package/dist/interfaces/target-adapter.interface.d.ts.map +1 -0
  288. package/dist/interfaces/target-adapter.interface.js +3 -0
  289. package/dist/interfaces/target-adapter.interface.js.map +1 -0
  290. package/dist/mocks/hubspot.d.ts +4 -0
  291. package/dist/mocks/hubspot.d.ts.map +1 -0
  292. package/dist/mocks/hubspot.js +61 -0
  293. package/dist/mocks/hubspot.js.map +1 -0
  294. package/dist/provenance.d.ts +3 -0
  295. package/dist/provenance.d.ts.map +1 -0
  296. package/dist/provenance.js +12 -0
  297. package/dist/provenance.js.map +1 -0
  298. package/dist/services/dataflow-service.d.ts +21 -0
  299. package/dist/services/dataflow-service.d.ts.map +1 -0
  300. package/dist/services/dataflow-service.js +47 -0
  301. package/dist/services/dataflow-service.js.map +1 -0
  302. package/dist/services/eql.d.ts +2 -0
  303. package/dist/services/eql.d.ts.map +1 -0
  304. package/dist/services/eql.js +10 -0
  305. package/dist/services/eql.js.map +1 -0
  306. package/dist/services/external-id-sync.strategy.d.ts +1 -1
  307. package/dist/services/external-id-sync.strategy.d.ts.map +1 -1
  308. package/dist/services/external-id-sync.strategy.js +18 -9
  309. package/dist/services/external-id-sync.strategy.js.map +1 -1
  310. package/dist/services/id-mapping-sync.strategy.d.ts.map +1 -1
  311. package/dist/services/id-mapping-sync.strategy.js +86 -22
  312. package/dist/services/id-mapping-sync.strategy.js.map +1 -1
  313. package/dist/services/id-mapping.service.js +11 -11
  314. package/dist/services/id-mapping.service.js.map +1 -1
  315. package/dist/services/mapping-service.d.ts +14 -0
  316. package/dist/services/mapping-service.d.ts.map +1 -0
  317. package/dist/services/mapping-service.js +88 -0
  318. package/dist/services/mapping-service.js.map +1 -0
  319. package/dist/services/mapping.service.d.ts +14 -0
  320. package/dist/services/mapping.service.d.ts.map +1 -0
  321. package/dist/services/mapping.service.js +89 -0
  322. package/dist/services/mapping.service.js.map +1 -0
  323. package/dist/services/outbound-service.d.ts +14 -0
  324. package/dist/services/outbound-service.d.ts.map +1 -0
  325. package/dist/services/outbound-service.js +65 -0
  326. package/dist/services/outbound-service.js.map +1 -0
  327. package/dist/services/paragon-workflow-service.d.ts +7 -0
  328. package/dist/services/paragon-workflow-service.d.ts.map +1 -0
  329. package/dist/services/paragon-workflow-service.js +68 -0
  330. package/dist/services/paragon-workflow-service.js.map +1 -0
  331. package/dist/services/paragon-workflow.service.d.ts +8 -0
  332. package/dist/services/paragon-workflow.service.d.ts.map +1 -0
  333. package/dist/services/paragon-workflow.service.js +31 -0
  334. package/dist/services/paragon-workflow.service.js.map +1 -0
  335. package/dist/services/preview-service.d.ts +11 -0
  336. package/dist/services/preview-service.d.ts.map +1 -0
  337. package/dist/services/preview-service.js +66 -0
  338. package/dist/services/preview-service.js.map +1 -0
  339. package/dist/services/pull-service.d.ts +9 -0
  340. package/dist/services/pull-service.d.ts.map +1 -0
  341. package/dist/services/pull-service.js +207 -0
  342. package/dist/services/pull-service.js.map +1 -0
  343. package/dist/services/pull.service.d.ts +11 -0
  344. package/dist/services/pull.service.d.ts.map +1 -0
  345. package/dist/services/pull.service.js +200 -0
  346. package/dist/services/pull.service.js.map +1 -0
  347. package/dist/services/push-service.d.ts +16 -0
  348. package/dist/services/push-service.d.ts.map +1 -0
  349. package/dist/services/push-service.js +76 -0
  350. package/dist/services/push-service.js.map +1 -0
  351. package/dist/services/push.service.d.ts +19 -0
  352. package/dist/services/push.service.d.ts.map +1 -0
  353. package/dist/services/push.service.js +186 -0
  354. package/dist/services/push.service.js.map +1 -0
  355. package/dist/services/routes.factory.d.ts +19 -0
  356. package/dist/services/routes.factory.d.ts.map +1 -0
  357. package/dist/services/routes.factory.js +352 -0
  358. package/dist/services/routes.factory.js.map +1 -0
  359. package/dist/services/scheduled-pull-service.d.ts +7 -0
  360. package/dist/services/scheduled-pull-service.d.ts.map +1 -0
  361. package/dist/services/scheduled-pull-service.js +58 -0
  362. package/dist/services/scheduled-pull-service.js.map +1 -0
  363. package/dist/services/split-filter.d.ts +3 -0
  364. package/dist/services/split-filter.d.ts.map +1 -0
  365. package/dist/services/split-filter.js +50 -0
  366. package/dist/services/split-filter.js.map +1 -0
  367. package/dist/services/sync-runner.d.ts +6 -0
  368. package/dist/services/sync-runner.d.ts.map +1 -1
  369. package/dist/services/sync-runner.js +46 -20
  370. package/dist/services/sync-runner.js.map +1 -1
  371. package/dist/testing/adapter-contract.d.ts +24 -0
  372. package/dist/testing/adapter-contract.d.ts.map +1 -0
  373. package/dist/testing/adapter-contract.js +82 -0
  374. package/dist/testing/adapter-contract.js.map +1 -0
  375. package/dist/utils/auth.d.ts +6 -0
  376. package/dist/utils/auth.d.ts.map +1 -0
  377. package/dist/utils/auth.js +18 -0
  378. package/dist/utils/auth.js.map +1 -0
  379. package/dist/utils/helpers.d.ts +23 -0
  380. package/dist/utils/helpers.d.ts.map +1 -0
  381. package/dist/utils/helpers.js +118 -0
  382. package/dist/utils/helpers.js.map +1 -0
  383. package/dist/utils/http-response.d.ts +16 -0
  384. package/dist/utils/http-response.d.ts.map +1 -0
  385. package/dist/utils/http-response.js +36 -0
  386. package/dist/utils/http-response.js.map +1 -0
  387. package/dist/utils/query-string.d.ts +2 -0
  388. package/dist/utils/query-string.d.ts.map +1 -0
  389. package/dist/utils/query-string.js +13 -0
  390. package/dist/utils/query-string.js.map +1 -0
  391. package/dist/utils/sked-handler.d.ts +22 -0
  392. package/dist/utils/sked-handler.d.ts.map +1 -0
  393. package/dist/utils/sked-handler.js +41 -0
  394. package/dist/utils/sked-handler.js.map +1 -0
  395. package/dist/utils/strings.d.ts +2 -0
  396. package/dist/utils/strings.d.ts.map +1 -0
  397. package/dist/utils/strings.js +14 -0
  398. package/dist/utils/strings.js.map +1 -0
  399. package/dist/utils/unwrap-proxy.d.ts +2 -0
  400. package/dist/utils/unwrap-proxy.d.ts.map +1 -0
  401. package/dist/utils/unwrap-proxy.js +12 -0
  402. package/dist/utils/unwrap-proxy.js.map +1 -0
  403. package/package.json +1 -1
  404. package/yarn.lock +5 -0
  405. package/.claude/worktrees/agent-a16acadaf5412dffd/jest.config.js +0 -12
  406. package/.claude/worktrees/agent-a33c3e4636d488e49/jest.config.js +0 -12
  407. package/.claude/worktrees/agent-a5b1d2ffa4ceef4a6/jest.config.js +0 -12
  408. package/.claude/worktrees/agent-aa1db4c22eabbde8e/jest.config.js +0 -12
  409. package/.claude/worktrees/agent-ac197ae8c69d7061c/jest.config.js +0 -12
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SyncRunner = exports.AdapterNotRegisteredError = void 0;
3
+ exports.SyncRunner = exports.AdapterNotRegisteredError = exports.AdapterRoleError = void 0;
4
+ const constants_1 = require("../constants");
5
+ const adapter_registry_1 = require("../adapters/adapter-registry");
4
6
  const external_id_sync_strategy_1 = require("./external-id-sync.strategy");
5
7
  const id_mapping_sync_strategy_1 = require("./id-mapping-sync.strategy");
6
8
  const id_mapping_service_1 = require("./id-mapping.service");
@@ -29,6 +31,13 @@ const sync_service_1 = require("./sync.service");
29
31
  //
30
32
  // // Event-driven:
31
33
  // await runner.handleEvent({ event, options: { lookupStrategy: 'idMapping' } }, ctx)
34
+ class AdapterRoleError extends Error {
35
+ constructor(systemName, requiredRole) {
36
+ super(`adapter "${systemName}" does not support role: "${requiredRole}"`);
37
+ this.name = 'AdapterRoleError';
38
+ }
39
+ }
40
+ exports.AdapterRoleError = AdapterRoleError;
32
41
  class AdapterNotRegisteredError extends Error {
33
42
  constructor(systemName) {
34
43
  super(`adapter not registered for system: "${systemName}"`);
@@ -37,11 +46,13 @@ class AdapterNotRegisteredError extends Error {
37
46
  }
38
47
  exports.AdapterNotRegisteredError = AdapterNotRegisteredError;
39
48
  class SyncRunner {
40
- constructor() {
41
- this.registry = new Map();
49
+ // Accept either an existing AdapterRegistry (shared with the consumer's
50
+ // metadata handler — single source of truth) or none (built up via register()).
51
+ constructor(registry) {
52
+ this.registry = registry !== null && registry !== void 0 ? registry : new adapter_registry_1.AdapterRegistry({});
42
53
  }
43
54
  register(systemName, adapter) {
44
- this.registry.set(systemName, adapter);
55
+ this.registry.register(systemName, adapter);
45
56
  }
46
57
  // Run a full batch sync for a known flow.
47
58
  // Fetches the flow by ID, resolves adapters, delegates to SyncService.run().
@@ -55,8 +66,8 @@ class SyncRunner {
55
66
  ctx.logger.warn(`sync_runner_run: flow ${args.flowId} not found`);
56
67
  return { succeeded: 0, filtered: 0, skipped: 0, failed: 0, dlqWrites: 0 };
57
68
  }
58
- const source = this._resolve((_b = (_a = flow.sourceSystem) !== null && _a !== void 0 ? _a : args.sourceSystem) !== null && _b !== void 0 ? _b : null);
59
- const target = this._resolve((_d = (_c = flow.targetSystem) !== null && _c !== void 0 ? _c : args.targetSystem) !== null && _d !== void 0 ? _d : null);
69
+ const source = this._resolve((_b = (_a = flow.sourceSystem) !== null && _a !== void 0 ? _a : args.sourceSystem) !== null && _b !== void 0 ? _b : null, constants_1.AdapterRole.SOURCE);
70
+ const target = this._resolve((_d = (_c = flow.targetSystem) !== null && _c !== void 0 ? _c : args.targetSystem) !== null && _d !== void 0 ? _d : null, constants_1.AdapterRole.TARGET);
60
71
  const strategy = createSyncStrategy((_e = args.options) !== null && _e !== void 0 ? _e : {}, ctx);
61
72
  // Cursor computation: prefer flow.lastRunAt over caller-supplied since.
62
73
  // When lastRunAt is set, args.since is ignored entirely.
@@ -65,19 +76,25 @@ class SyncRunner {
65
76
  const overlapMs = (_h = (_g = args.options) === null || _g === void 0 ? void 0 : _g.cursorOverlapMs) !== null && _h !== void 0 ? _h : 60000;
66
77
  const effectiveCursor = lastRunAt ? new Date(lastRunAt.getTime() - overlapMs) : null; // null = full sync (no prior run)
67
78
  const result = await new sync_service_1.SyncService(source, target, strategy).run({ flow, since: effectiveCursor }, ctx);
68
- // Cursor persistence: always advance, even when result has zero succeeded/skipped/filtered.
69
- // An empty run means "nothing in this window changed" — the window is still fully accounted for.
70
- // Swallow failures — sync succeeded, next run retries the same window.
71
- try {
72
- await ctx.dataFlowService.updateCursor(args.flowId, runStartedAt);
79
+ // Cursor persistence: only advance when no records failed in this run.
80
+ // Advancing on partial failure would skip the failed records on the next run,
81
+ // since the new cursor would be past their LastModifiedDate.
82
+ // Zero failures with zero succeeded is still success — the window had no changes.
83
+ if (result.failed === 0) {
84
+ try {
85
+ await ctx.dataFlowService.updateCursor(args.flowId, runStartedAt);
86
+ }
87
+ catch (err) {
88
+ ctx.logger.error(`update_cursor_failed: flowId=${args.flowId} error="${err instanceof Error ? err.message : String(err)}" — next run will re-process same window`);
89
+ }
73
90
  }
74
- catch (err) {
75
- ctx.logger.error(`update_cursor_failed: flowId=${args.flowId} error="${err instanceof Error ? err.message : String(err)}" — next run will re-process same window`);
91
+ else {
92
+ ctx.logger.warn(`cursor_not_advanced: flowId=${args.flowId} failed=${result.failed} — next run will re-process same window so failed records can retry`);
76
93
  }
77
94
  return result;
78
95
  }
79
96
  catch (err) {
80
- if (err instanceof AdapterNotRegisteredError) {
97
+ if (err instanceof AdapterNotRegisteredError || err instanceof AdapterRoleError) {
81
98
  ctx.logger.error(`sync_runner_run: ${err.message} flowId=${args.flowId}`);
82
99
  return { succeeded: 0, filtered: 0, skipped: 0, failed: 1, dlqWrites: 0 };
83
100
  }
@@ -103,13 +120,13 @@ class SyncRunner {
103
120
  const results = [];
104
121
  for (const flow of sorted) {
105
122
  try {
106
- const target = this._resolve((_a = flow.targetSystem) !== null && _a !== void 0 ? _a : null);
123
+ const target = this._resolve((_a = flow.targetSystem) !== null && _a !== void 0 ? _a : null, constants_1.AdapterRole.TARGET);
107
124
  const strategy = createSyncStrategy((_b = args.options) !== null && _b !== void 0 ? _b : {}, ctx);
108
125
  const result = await new sync_service_1.SyncService(null, target, strategy).handleEvent({ event, flow }, ctx);
109
126
  results.push(result);
110
127
  }
111
128
  catch (err) {
112
- if (err instanceof AdapterNotRegisteredError) {
129
+ if (err instanceof AdapterNotRegisteredError || err instanceof AdapterRoleError) {
113
130
  ctx.logger.error(`sync_runner_event: ${err.message} flowId=${flow.id}`);
114
131
  results.push({ status: 'failed', recordsProcessed: 0, error: err.message });
115
132
  }
@@ -122,18 +139,27 @@ class SyncRunner {
122
139
  }
123
140
  return results;
124
141
  }
125
- _resolve(systemName) {
142
+ _resolve(systemName, role) {
143
+ var _a, _b;
126
144
  if (!systemName)
127
145
  throw new AdapterNotRegisteredError(String(systemName));
128
- const adapter = this.registry.get(systemName);
129
- if (!adapter)
146
+ let adapter;
147
+ try {
148
+ adapter = this.registry.resolve(systemName);
149
+ }
150
+ catch (_c) {
130
151
  throw new AdapterNotRegisteredError(systemName);
152
+ }
153
+ const roles = (_b = (_a = adapter.capabilities) === null || _a === void 0 ? void 0 : _a.roles) !== null && _b !== void 0 ? _b : [constants_1.AdapterRole.SOURCE, constants_1.AdapterRole.TARGET];
154
+ if (!roles.includes(role)) {
155
+ throw new AdapterRoleError(systemName, role);
156
+ }
131
157
  return adapter;
132
158
  }
133
159
  }
134
160
  exports.SyncRunner = SyncRunner;
135
161
  function createSyncStrategy(options, _ctx) {
136
- if (options.lookupStrategy === 'idMapping') {
162
+ if (options.lookupStrategy === constants_1.LookupStrategy.IdMapping) {
137
163
  return new id_mapping_sync_strategy_1.IdMappingSyncStrategy(new id_mapping_service_1.IdMappingService());
138
164
  }
139
165
  return new external_id_sync_strategy_1.ExternalIdSyncStrategy();
@@ -1 +1 @@
1
- {"version":3,"file":"sync-runner.js","sourceRoot":"","sources":["../../src/services/sync-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-runner.js","sourceRoot":"","sources":["../../src/services/sync-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Adapter } from '../interfaces/adapter.interface';
2
+ import type { ProxyResult } from '../clients/proxy.client';
3
+ export interface AdapterContractConfig {
4
+ /** Factory producing a fresh adapter instance for each test. */
5
+ createAdapter: () => Adapter;
6
+ /**
7
+ * Override the expected default record ID field if your adapter
8
+ * customizes `getRecordIdField()`. Defaults to `'id'` — matches
9
+ * BaseAdapter's default.
10
+ */
11
+ expectedRecordIdField?: string;
12
+ }
13
+ export declare function runAdapterContractTests(config: AdapterContractConfig): void;
14
+ /**
15
+ * Build a `ProxyResult` envelope for use in test mocks. Every test ends up
16
+ * writing `{ status: 200, headers: {}, output: ... }` by hand; this helper
17
+ * makes the intent obvious and lets you override status/headers when
18
+ * exercising stale-mapping or 503-retry paths.
19
+ */
20
+ export declare function mockProxyResult<T>(output: T, overrides?: {
21
+ status?: number;
22
+ headers?: Record<string, string>;
23
+ }): ProxyResult<T>;
24
+ //# sourceMappingURL=adapter-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-contract.d.ts","sourceRoot":"","sources":["../../src/testing/adapter-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsB3D,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAoE3E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,CAAC,EACT,SAAS,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GACpE,WAAW,CAAC,CAAC,CAAC,CAMhB"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runAdapterContractTests = runAdapterContractTests;
4
+ exports.mockProxyResult = mockProxyResult;
5
+ const constants_1 = require("../constants");
6
+ function runAdapterContractTests(config) {
7
+ const { createAdapter, expectedRecordIdField = 'id' } = config;
8
+ describe('Adapter SDK contract', () => {
9
+ it('declares a non-empty integrationType', () => {
10
+ const adapter = createAdapter();
11
+ expect(typeof adapter.integrationType).toBe('string');
12
+ expect(adapter.integrationType.length).toBeGreaterThan(0);
13
+ });
14
+ it('declares capabilities.roles with at least one valid role', () => {
15
+ var _a;
16
+ const adapter = createAdapter();
17
+ const roles = (_a = adapter.capabilities) === null || _a === void 0 ? void 0 : _a.roles;
18
+ expect(Array.isArray(roles)).toBe(true);
19
+ expect(roles.length).toBeGreaterThan(0);
20
+ for (const role of roles) {
21
+ expect(Object.values(constants_1.AdapterRole)).toContain(role);
22
+ }
23
+ });
24
+ it('declares a valid lookupStrategy when capabilities.lookupStrategy is set', () => {
25
+ var _a;
26
+ const adapter = createAdapter();
27
+ const ls = (_a = adapter.capabilities) === null || _a === void 0 ? void 0 : _a.lookupStrategy;
28
+ if (ls !== undefined) {
29
+ expect(Object.values(constants_1.LookupStrategy)).toContain(ls);
30
+ }
31
+ });
32
+ it('getRecordIdField returns the expected field', () => {
33
+ var _a;
34
+ const adapter = createAdapter();
35
+ expect((_a = adapter.getRecordIdField) === null || _a === void 0 ? void 0 : _a.call(adapter)).toBe(expectedRecordIdField);
36
+ });
37
+ describe('buildMappingEntries default behaviour', () => {
38
+ it('returns [] for empty inputs', () => {
39
+ var _a;
40
+ const adapter = createAdapter();
41
+ expect((_a = adapter.buildMappingEntries) === null || _a === void 0 ? void 0 : _a.call(adapter, [], [])).toEqual([]);
42
+ });
43
+ it('zips sourceIds with outcome results in order', () => {
44
+ var _a;
45
+ const adapter = createAdapter();
46
+ const result = (_a = adapter.buildMappingEntries) === null || _a === void 0 ? void 0 : _a.call(adapter, ['s1', 's2'], [
47
+ { status: 'ok', result: 't1' },
48
+ { status: 'ok', result: 't2' },
49
+ ]);
50
+ expect(result).toEqual([
51
+ { sourceId: 's1', targetId: 't1' },
52
+ { sourceId: 's2', targetId: 't2' },
53
+ ]);
54
+ });
55
+ it('drops entries whose target result is empty or missing', () => {
56
+ var _a;
57
+ const adapter = createAdapter();
58
+ const result = (_a = adapter.buildMappingEntries) === null || _a === void 0 ? void 0 : _a.call(adapter, ['s1', 's2', 's3'], [
59
+ { status: 'ok', result: 't1' },
60
+ { status: 'ok', result: '' },
61
+ { status: 'permanent', error: 'x' },
62
+ ]);
63
+ expect(result).toEqual([{ sourceId: 's1', targetId: 't1' }]);
64
+ });
65
+ });
66
+ });
67
+ }
68
+ /**
69
+ * Build a `ProxyResult` envelope for use in test mocks. Every test ends up
70
+ * writing `{ status: 200, headers: {}, output: ... }` by hand; this helper
71
+ * makes the intent obvious and lets you override status/headers when
72
+ * exercising stale-mapping or 503-retry paths.
73
+ */
74
+ function mockProxyResult(output, overrides = {}) {
75
+ var _a, _b;
76
+ return {
77
+ status: (_a = overrides.status) !== null && _a !== void 0 ? _a : 200,
78
+ headers: (_b = overrides.headers) !== null && _b !== void 0 ? _b : {},
79
+ output,
80
+ };
81
+ }
82
+ //# sourceMappingURL=adapter-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-contract.js","sourceRoot":"","sources":["../../src/testing/adapter-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { SkedResponse } from './http-response';
2
+ export declare function isAdminRequest(skedContext: unknown): boolean;
3
+ export declare function requireAdmin(skedContext: unknown, operation: string): SkedResponse<{
4
+ message: string;
5
+ }> | null;
6
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAG5D;AAED,wBAAgB,YAAY,CAC1B,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,MAAM,GAChB,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAM1C"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAdminRequest = isAdminRequest;
4
+ exports.requireAdmin = requireAdmin;
5
+ function isAdminRequest(skedContext) {
6
+ var _a, _b;
7
+ const ctx = skedContext;
8
+ return ((_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.userContext) === null || _a === void 0 ? void 0 : _a.userRoles) === null || _b === void 0 ? void 0 : _b.includes('administrator')) === true;
9
+ }
10
+ function requireAdmin(skedContext, operation) {
11
+ if (isAdminRequest(skedContext))
12
+ return null;
13
+ return {
14
+ status: 403,
15
+ body: { message: `${operation} requires admin privileges` },
16
+ };
17
+ }
18
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":";;AAEA,wCAGC;AAED,oCASC;AAdD,SAAgB,cAAc,CAAC,WAAoB;;IACjD,MAAM,GAAG,GAAG,WAA4E,CAAC;IACzF,OAAO,CAAA,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,0CAAE,SAAS,0CAAE,QAAQ,CAAC,eAAe,CAAC,MAAK,IAAI,CAAC;AACzE,CAAC;AAED,SAAgB,YAAY,CAC1B,WAAoB,EACpB,SAAiB;IAEjB,IAAI,cAAc,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,SAAS,4BAA4B,EAAE;KAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { DataFlow } from '../interfaces/data-flow-spec.interface';
2
+ export declare function escapeEqlString(value: string): string;
3
+ export declare function unwrapProxy<T = unknown>(raw: unknown): T;
4
+ export declare function getQueryParam(querystring: string | Record<string, string> | null | undefined, key: string): string | undefined;
5
+ export declare function humanizeFieldName(name: string): string;
6
+ export interface SkedResponse<T = unknown> {
7
+ status: number;
8
+ body: T;
9
+ }
10
+ export declare function okResponse<T extends object = Record<string, unknown>>(message: string, data?: T): SkedResponse<{
11
+ message: string;
12
+ } & T>;
13
+ export declare function errorResponse(error: unknown): SkedResponse<{
14
+ requestId: string;
15
+ status: number;
16
+ message: string;
17
+ }>;
18
+ export declare function isAdminRequest(skedContext: unknown): boolean;
19
+ export declare function requireAdmin(skedContext: unknown, operation: string): SkedResponse<{
20
+ message: string;
21
+ }> | null;
22
+ export declare function normalizeDataFlow(flow: DataFlow): DataFlow;
23
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAMvE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAID,wBAAgB,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAKxD;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/D,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAMpB;AAID,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;CACT;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,CAAC,GACP,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,CAAC,CAKvC;AAKD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAuBD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAG5D;AAED,wBAAgB,YAAY,CAC1B,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,MAAM,GAChB,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAM1C;AAoBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAW1D"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.escapeEqlString = escapeEqlString;
15
+ exports.unwrapProxy = unwrapProxy;
16
+ exports.getQueryParam = getQueryParam;
17
+ exports.humanizeFieldName = humanizeFieldName;
18
+ exports.okResponse = okResponse;
19
+ exports.errorResponse = errorResponse;
20
+ exports.isAdminRequest = isAdminRequest;
21
+ exports.requireAdmin = requireAdmin;
22
+ exports.normalizeDataFlow = normalizeDataFlow;
23
+ const crypto_1 = require("crypto");
24
+ // EQL string literals use single quotes; the resulting filter is embedded in a
25
+ // GraphQL string literal that uses double quotes. Escape backslashes and single
26
+ // quotes only.
27
+ function escapeEqlString(value) {
28
+ return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
29
+ }
30
+ // The Skedulo integration proxy wraps responses in { status, headers, output }.
31
+ // Returns .output when present, otherwise the raw value.
32
+ function unwrapProxy(raw) {
33
+ if (raw != null && typeof raw === 'object' && 'output' in raw) {
34
+ return raw.output;
35
+ }
36
+ return raw;
37
+ }
38
+ function getQueryParam(querystring, key) {
39
+ var _a;
40
+ if (!querystring)
41
+ return undefined;
42
+ if (typeof querystring === 'string') {
43
+ return (_a = new URLSearchParams(querystring).get(key)) !== null && _a !== void 0 ? _a : undefined;
44
+ }
45
+ return querystring[key];
46
+ }
47
+ // Convert camelCase / PascalCase identifier to a human-readable Title Case label.
48
+ // "firstName" -> "First Name", "AccountId" -> "Account Id", "email" -> "Email".
49
+ function humanizeFieldName(name) {
50
+ if (!name)
51
+ return '';
52
+ return name
53
+ .replace(/([A-Z])/g, ' $1')
54
+ .replace(/^./, (c) => c.toUpperCase())
55
+ .trim();
56
+ }
57
+ function okResponse(message, data) {
58
+ return {
59
+ status: 200,
60
+ body: Object.assign({ message }, (data !== null && data !== void 0 ? data : {})),
61
+ };
62
+ }
63
+ // Build the Skedulo-integration-convention error envelope from any thrown value.
64
+ // Status precedence: Axios-style err.response.status → top-level err.status (if 4xx/5xx) → 500.
65
+ // Generates a requestId UUID and logs via console.error so support can correlate.
66
+ function errorResponse(error) {
67
+ var _a, _b, _c, _d;
68
+ const requestId = (0, crypto_1.randomUUID)();
69
+ const err = error;
70
+ const upstreamStatus = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.status;
71
+ const carriedStatus = typeof (err === null || err === void 0 ? void 0 : err.status) === 'number' && err.status >= 400 && err.status <= 599
72
+ ? err.status
73
+ : undefined;
74
+ const status = (_b = upstreamStatus !== null && upstreamStatus !== void 0 ? upstreamStatus : carriedStatus) !== null && _b !== void 0 ? _b : 500;
75
+ const message = (_c = err === null || err === void 0 ? void 0 : err.message) !== null && _c !== void 0 ? _c : String(error);
76
+ console.error(`[${requestId}] Error details:`, {
77
+ message,
78
+ status,
79
+ hasData: ((_d = err === null || err === void 0 ? void 0 : err.response) === null || _d === void 0 ? void 0 : _d.data) != null,
80
+ });
81
+ return { status, body: { requestId, status, message } };
82
+ }
83
+ function isAdminRequest(skedContext) {
84
+ var _a, _b;
85
+ const ctx = skedContext;
86
+ return ((_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.userContext) === null || _a === void 0 ? void 0 : _a.userRoles) === null || _b === void 0 ? void 0 : _b.includes('administrator')) === true;
87
+ }
88
+ function requireAdmin(skedContext, operation) {
89
+ if (isAdminRequest(skedContext))
90
+ return null;
91
+ return {
92
+ status: 403,
93
+ body: { message: `${operation} requires admin privileges` },
94
+ };
95
+ }
96
+ // Older stored flows may have `property` instead of `field` in filter rules.
97
+ // Normalize to `field` so the integration service API accepts them on re-save.
98
+ function normalizeFilterRule(rule) {
99
+ var _a;
100
+ const _b = rule, { property, field } = _b, rest = __rest(_b, ["property", "field"]);
101
+ return Object.assign({ field: (_a = field !== null && field !== void 0 ? field : property) !== null && _a !== void 0 ? _a : '' }, rest);
102
+ }
103
+ function normalizeFilter(filter) {
104
+ if (!filter)
105
+ return filter;
106
+ return Object.assign(Object.assign({}, filter), { rules: filter.rules.map((r) => normalizeFilterRule(r)) });
107
+ }
108
+ function normalizeDataFlow(flow) {
109
+ return Object.assign(Object.assign({}, flow), { filter: normalizeFilter(flow.filter), lastRunAt: (() => {
110
+ if (!flow.lastRunAt)
111
+ return null;
112
+ if (flow.lastRunAt instanceof Date)
113
+ return flow.lastRunAt;
114
+ const d = new Date(flow.lastRunAt);
115
+ return isNaN(d.getTime()) ? null : d;
116
+ })() });
117
+ }
118
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface SkedResponse<T = unknown> {
2
+ status: number;
3
+ body: T;
4
+ }
5
+ export declare function createSuccessResponse<T extends object = Record<string, unknown>>(message: string, data?: T): SkedResponse<{
6
+ message: string;
7
+ } & T>;
8
+ export declare function handleError(error: unknown): SkedResponse<{
9
+ requestId: string;
10
+ status: number | null;
11
+ message: string;
12
+ }>;
13
+ export declare function handleMetadataError(err: unknown): SkedResponse<{
14
+ message: string;
15
+ } | unknown>;
16
+ //# sourceMappingURL=http-response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-response.d.ts","sourceRoot":"","sources":["../../src/utils/http-response.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;CACT;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9E,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,CAAC,GACP,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,CAAC,CAKvC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAgBD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,CAK7F"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSuccessResponse = createSuccessResponse;
4
+ exports.handleError = handleError;
5
+ exports.handleMetadataError = handleMetadataError;
6
+ const crypto_1 = require("crypto");
7
+ const metadata_handler_1 = require("../handlers/metadata.handler");
8
+ function createSuccessResponse(message, data) {
9
+ return {
10
+ status: 200,
11
+ body: Object.assign({ message }, (data !== null && data !== void 0 ? data : {})),
12
+ };
13
+ }
14
+ function handleError(error) {
15
+ var _a, _b, _c;
16
+ const requestId = (0, crypto_1.randomUUID)();
17
+ const err = error;
18
+ const upstreamStatus = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.status;
19
+ const message = (_b = err === null || err === void 0 ? void 0 : err.message) !== null && _b !== void 0 ? _b : String(error);
20
+ console.error(`[${requestId}] Error details:`, {
21
+ message,
22
+ status: upstreamStatus,
23
+ data: (_c = err === null || err === void 0 ? void 0 : err.response) === null || _c === void 0 ? void 0 : _c.data,
24
+ });
25
+ return {
26
+ status: upstreamStatus !== null && upstreamStatus !== void 0 ? upstreamStatus : 500,
27
+ body: { requestId, status: upstreamStatus !== null && upstreamStatus !== void 0 ? upstreamStatus : null, message },
28
+ };
29
+ }
30
+ function handleMetadataError(err) {
31
+ if (err instanceof metadata_handler_1.MetadataHandlerError) {
32
+ return { status: err.status, body: { message: err.message } };
33
+ }
34
+ return handleError(err);
35
+ }
36
+ //# sourceMappingURL=http-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-response.js","sourceRoot":"","sources":["../../src/utils/http-response.ts"],"names":[],"mappings":";;AAQA,sDAQC;AAED,kCAoBC;AAED,kDAKC;AA7CD,mCAAoC;AACpC,mEAAoE;AAOpE,SAAgB,qBAAqB,CACnC,OAAe,EACf,IAAQ;IAER,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,gBAAE,OAAO,IAAK,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAK,EAAQ,CAAC,CAA6B;KACrE,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CAAC,KAAc;;IAKxC,MAAM,SAAS,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,KAAoF,CAAC;IACjG,MAAM,cAAc,GAAG,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,MAAM,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,mCAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,kBAAkB,EAAE;QAC7C,OAAO;QACP,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,IAAI;KAC1B,CAAC,CAAC;IAEH,OAAO;QACL,MAAM,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,GAAG;QAC7B,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,IAAI,EAAE,OAAO,EAAE;KAC7D,CAAC;AACJ,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAY;IAC9C,IAAI,GAAG,YAAY,uCAAoB,EAAE,CAAC;QACxC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function getQueryParam(querystring: string | Record<string, string> | null | undefined, key: string): string | undefined;
2
+ //# sourceMappingURL=query-string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-string.d.ts","sourceRoot":"","sources":["../../src/utils/query-string.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/D,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAMpB"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getQueryParam = getQueryParam;
4
+ function getQueryParam(querystring, key) {
5
+ var _a;
6
+ if (!querystring)
7
+ return undefined;
8
+ if (typeof querystring === 'string') {
9
+ return (_a = new URLSearchParams(querystring).get(key)) !== null && _a !== void 0 ? _a : undefined;
10
+ }
11
+ return querystring[key];
12
+ }
13
+ //# sourceMappingURL=query-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-string.js","sourceRoot":"","sources":["../../src/utils/query-string.ts"],"names":[],"mappings":";;AAAA,sCASC;AATD,SAAgB,aAAa,CAC3B,WAA+D,EAC/D,GAAW;;IAEX,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,MAAA,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,SAAS,CAAC;IAChE,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,22 @@
1
+ export type HttpVerb = 'get' | 'post' | 'put' | 'patch' | 'delete';
2
+ export interface SkedRoute {
3
+ method: HttpVerb;
4
+ path: string;
5
+ handler: (body: Record<string, unknown>, headers: Record<string, string>, method: string, path: string, skedContext: unknown, querystring?: string | Record<string, string> | null) => Promise<{
6
+ status: number;
7
+ body?: unknown;
8
+ }>;
9
+ }
10
+ export interface SkedHandlerPayload {
11
+ method: string;
12
+ path: string;
13
+ headers: Record<string, string>;
14
+ body: Record<string, unknown>;
15
+ querystring?: string | Record<string, string> | null;
16
+ }
17
+ export interface SkedHandlerResponse {
18
+ status: number;
19
+ body?: unknown;
20
+ }
21
+ export declare function createSkedHandler(routes: SkedRoute[]): (payload: SkedHandlerPayload) => Promise<SkedHandlerResponse>;
22
+ //# sourceMappingURL=sked-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sked-handler.d.ts","sourceRoot":"","sources":["../../src/utils/sked-handler.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CACP,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,KACjD,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAClD;AAQD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAKD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EAAE,GAClB,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CA+B/D"}