@oronts/vendure-data-hub-plugin 0.1.2 → 0.1.4

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 (534) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/README.md +36 -10
  3. package/dashboard/components/pipelines/PipelineEditor.tsx +159 -5
  4. package/dashboard/components/pipelines/ReactFlowPipelineEditor.tsx +3 -3
  5. package/dashboard/components/pipelines/shared/NodePropertiesPanel.tsx +42 -4
  6. package/dashboard/components/pipelines/shared/StepListItem.tsx +2 -2
  7. package/dashboard/components/shared/CodeEditor.tsx +289 -0
  8. package/dashboard/components/shared/schema-form/fields/TextareaField.tsx +19 -4
  9. package/dashboard/components/shared/step-config/AdapterSelector.tsx +2 -2
  10. package/dashboard/components/shared/step-config/OperatorFieldInput.tsx +19 -0
  11. package/dashboard/components/shared/step-config/RouteConfigComponent.tsx +218 -29
  12. package/dashboard/components/shared/step-config/StepConfigPanel.tsx +24 -10
  13. package/dashboard/constants/ui-dimensions.ts +2 -1
  14. package/dashboard/constants/ui-states.ts +1 -0
  15. package/dashboard/gql/gql.ts +6 -6
  16. package/dashboard/gql/graphql.ts +9 -4
  17. package/dashboard/hooks/api/use-pipeline-runs.ts +1 -0
  18. package/dashboard/hooks/api/use-queues.ts +1 -0
  19. package/dashboard/hooks/use-adapter-catalog.ts +4 -32
  20. package/dashboard/routes/connections/ConnectionDetail.tsx +7 -1
  21. package/dashboard/routes/pipelines/RunDetailsPanel.tsx +1 -1
  22. package/dashboard/routes/pipelines/components/PipelineActionButtons.tsx +3 -3
  23. package/dashboard/routes/pipelines/utils/pipeline-conversion.ts +3 -5
  24. package/dashboard/utils/formatters.ts +6 -4
  25. package/dist/dashboard/components/pipelines/PipelineEditor.tsx +159 -5
  26. package/dist/dashboard/components/pipelines/ReactFlowPipelineEditor.tsx +3 -3
  27. package/dist/dashboard/components/pipelines/shared/NodePropertiesPanel.tsx +42 -4
  28. package/dist/dashboard/components/pipelines/shared/StepListItem.tsx +2 -2
  29. package/dist/dashboard/components/shared/CodeEditor.tsx +289 -0
  30. package/dist/dashboard/components/shared/schema-form/fields/TextareaField.tsx +19 -4
  31. package/dist/dashboard/components/shared/step-config/AdapterSelector.tsx +2 -2
  32. package/dist/dashboard/components/shared/step-config/OperatorFieldInput.tsx +19 -0
  33. package/dist/dashboard/components/shared/step-config/RouteConfigComponent.tsx +218 -29
  34. package/dist/dashboard/components/shared/step-config/StepConfigPanel.tsx +24 -10
  35. package/dist/dashboard/constants/ui-dimensions.ts +2 -1
  36. package/dist/dashboard/constants/ui-states.ts +1 -0
  37. package/dist/dashboard/gql/gql.ts +6 -6
  38. package/dist/dashboard/gql/graphql.ts +9 -4
  39. package/dist/dashboard/hooks/api/use-pipeline-runs.ts +1 -0
  40. package/dist/dashboard/hooks/api/use-queues.ts +1 -0
  41. package/dist/dashboard/hooks/use-adapter-catalog.ts +4 -32
  42. package/dist/dashboard/routes/connections/ConnectionDetail.tsx +7 -1
  43. package/dist/dashboard/routes/pipelines/RunDetailsPanel.tsx +1 -1
  44. package/dist/dashboard/routes/pipelines/components/PipelineActionButtons.tsx +3 -3
  45. package/dist/dashboard/routes/pipelines/utils/pipeline-conversion.ts +3 -5
  46. package/dist/dashboard/utils/formatters.ts +6 -4
  47. package/dist/shared/types/adapter-config.types.d.ts +400 -13
  48. package/dist/shared/types/adapter-config.types.d.ts.map +1 -1
  49. package/dist/shared/types/index.d.ts +1 -1
  50. package/dist/shared/types/index.d.ts.map +1 -1
  51. package/dist/shared/types/index.js.map +1 -1
  52. package/dist/shared/types/loader.types.d.ts +4 -0
  53. package/dist/shared/types/loader.types.d.ts.map +1 -1
  54. package/dist/shared/types/step.types.d.ts +6 -0
  55. package/dist/shared/types/step.types.d.ts.map +1 -1
  56. package/dist/shared/utils/error.d.ts +5 -0
  57. package/dist/shared/utils/error.d.ts.map +1 -1
  58. package/dist/shared/utils/error.js +11 -0
  59. package/dist/shared/utils/error.js.map +1 -1
  60. package/dist/src/adapters/registry.d.ts.map +1 -1
  61. package/dist/src/adapters/registry.js +2 -1
  62. package/dist/src/adapters/registry.js.map +1 -1
  63. package/dist/src/api/controllers/webhook.controller.d.ts +10 -0
  64. package/dist/src/api/controllers/webhook.controller.d.ts.map +1 -1
  65. package/dist/src/api/controllers/webhook.controller.js +50 -10
  66. package/dist/src/api/controllers/webhook.controller.js.map +1 -1
  67. package/dist/src/api/resolvers/queue.resolver.d.ts +3 -1
  68. package/dist/src/api/resolvers/queue.resolver.d.ts.map +1 -1
  69. package/dist/src/api/resolvers/queue.resolver.js +6 -5
  70. package/dist/src/api/resolvers/queue.resolver.js.map +1 -1
  71. package/dist/src/api/schema/pipeline.schema.d.ts +1 -1
  72. package/dist/src/api/schema/pipeline.schema.d.ts.map +1 -1
  73. package/dist/src/api/schema/pipeline.schema.js +6 -0
  74. package/dist/src/api/schema/pipeline.schema.js.map +1 -1
  75. package/dist/src/api/schema/test.schema.d.ts +1 -1
  76. package/dist/src/api/schema/test.schema.d.ts.map +1 -1
  77. package/dist/src/api/schema/test.schema.js +5 -1
  78. package/dist/src/api/schema/test.schema.js.map +1 -1
  79. package/dist/src/bootstrap/initialization.d.ts.map +1 -1
  80. package/dist/src/bootstrap/initialization.js +6 -0
  81. package/dist/src/bootstrap/initialization.js.map +1 -1
  82. package/dist/src/constants/adapter-schema-options.d.ts +65 -0
  83. package/dist/src/constants/adapter-schema-options.d.ts.map +1 -1
  84. package/dist/src/constants/adapter-schema-options.js +79 -3
  85. package/dist/src/constants/adapter-schema-options.js.map +1 -1
  86. package/dist/src/constants/builtin-adapters.d.ts +1 -1
  87. package/dist/src/constants/builtin-adapters.d.ts.map +1 -1
  88. package/dist/src/constants/builtin-adapters.js +19 -1
  89. package/dist/src/constants/builtin-adapters.js.map +1 -1
  90. package/dist/src/constants/core.d.ts +10 -0
  91. package/dist/src/constants/core.d.ts.map +1 -1
  92. package/dist/src/constants/core.js +10 -0
  93. package/dist/src/constants/core.js.map +1 -1
  94. package/dist/src/constants/defaults/webhook-defaults.d.ts +2 -0
  95. package/dist/src/constants/defaults/webhook-defaults.d.ts.map +1 -1
  96. package/dist/src/constants/defaults/webhook-defaults.js +2 -0
  97. package/dist/src/constants/defaults/webhook-defaults.js.map +1 -1
  98. package/dist/src/constants/enum-metadata.d.ts.map +1 -1
  99. package/dist/src/constants/enum-metadata.js +3 -0
  100. package/dist/src/constants/enum-metadata.js.map +1 -1
  101. package/dist/src/constants/hook-stage-metadata.d.ts.map +1 -1
  102. package/dist/src/constants/hook-stage-metadata.js +42 -0
  103. package/dist/src/constants/hook-stage-metadata.js.map +1 -1
  104. package/dist/src/constants/services.d.ts.map +1 -1
  105. package/dist/src/constants/services.js +7 -0
  106. package/dist/src/constants/services.js.map +1 -1
  107. package/dist/src/constants/time.d.ts +2 -0
  108. package/dist/src/constants/time.d.ts.map +1 -1
  109. package/dist/src/constants/time.js +2 -0
  110. package/dist/src/constants/time.js.map +1 -1
  111. package/dist/src/entities/data/error-record.entity.d.ts +1 -0
  112. package/dist/src/entities/data/error-record.entity.d.ts.map +1 -1
  113. package/dist/src/entities/data/error-record.entity.js +4 -0
  114. package/dist/src/entities/data/error-record.entity.js.map +1 -1
  115. package/dist/src/entities/pipeline/pipeline-run.entity.d.ts +4 -0
  116. package/dist/src/entities/pipeline/pipeline-run.entity.d.ts.map +1 -1
  117. package/dist/src/entities/pipeline/pipeline-run.entity.js +8 -0
  118. package/dist/src/entities/pipeline/pipeline-run.entity.js.map +1 -1
  119. package/dist/src/extractors/cdc/cdc.extractor.d.ts.map +1 -1
  120. package/dist/src/extractors/cdc/cdc.extractor.js +7 -2
  121. package/dist/src/extractors/cdc/cdc.extractor.js.map +1 -1
  122. package/dist/src/extractors/cdc/types.d.ts +1 -1
  123. package/dist/src/extractors/cdc/types.d.ts.map +1 -1
  124. package/dist/src/extractors/extractor-handler-registry.d.ts.map +1 -1
  125. package/dist/src/extractors/extractor-handler-registry.js +3 -0
  126. package/dist/src/extractors/extractor-handler-registry.js.map +1 -1
  127. package/dist/src/extractors/vendure-query/helpers.d.ts +9 -4
  128. package/dist/src/extractors/vendure-query/helpers.d.ts.map +1 -1
  129. package/dist/src/extractors/vendure-query/helpers.js +98 -32
  130. package/dist/src/extractors/vendure-query/helpers.js.map +1 -1
  131. package/dist/src/extractors/vendure-query/schema.d.ts.map +1 -1
  132. package/dist/src/extractors/vendure-query/schema.js +13 -0
  133. package/dist/src/extractors/vendure-query/schema.js.map +1 -1
  134. package/dist/src/feeds/generators/csv-feed.generator.d.ts.map +1 -1
  135. package/dist/src/feeds/generators/csv-feed.generator.js +5 -4
  136. package/dist/src/feeds/generators/csv-feed.generator.js.map +1 -1
  137. package/dist/src/feeds/generators/facebook-catalog.generator.d.ts.map +1 -1
  138. package/dist/src/feeds/generators/facebook-catalog.generator.js +83 -114
  139. package/dist/src/feeds/generators/facebook-catalog.generator.js.map +1 -1
  140. package/dist/src/feeds/generators/feed-constants.d.ts +1 -0
  141. package/dist/src/feeds/generators/feed-constants.d.ts.map +1 -1
  142. package/dist/src/feeds/generators/feed-constants.js +1 -0
  143. package/dist/src/feeds/generators/feed-constants.js.map +1 -1
  144. package/dist/src/feeds/generators/feed-helpers.d.ts +10 -8
  145. package/dist/src/feeds/generators/feed-helpers.d.ts.map +1 -1
  146. package/dist/src/feeds/generators/feed-helpers.js +23 -3
  147. package/dist/src/feeds/generators/feed-helpers.js.map +1 -1
  148. package/dist/src/feeds/generators/feed-item-builder.d.ts +59 -0
  149. package/dist/src/feeds/generators/feed-item-builder.d.ts.map +1 -0
  150. package/dist/src/feeds/generators/feed-item-builder.js +93 -0
  151. package/dist/src/feeds/generators/feed-item-builder.js.map +1 -0
  152. package/dist/src/feeds/generators/google-shopping.generator.d.ts.map +1 -1
  153. package/dist/src/feeds/generators/google-shopping.generator.js +52 -64
  154. package/dist/src/feeds/generators/google-shopping.generator.js.map +1 -1
  155. package/dist/src/feeds/generators/json-feed.generator.d.ts.map +1 -1
  156. package/dist/src/feeds/generators/json-feed.generator.js +4 -3
  157. package/dist/src/feeds/generators/json-feed.generator.js.map +1 -1
  158. package/dist/src/feeds/generators/xml-feed.generator.d.ts.map +1 -1
  159. package/dist/src/feeds/generators/xml-feed.generator.js +6 -5
  160. package/dist/src/feeds/generators/xml-feed.generator.js.map +1 -1
  161. package/dist/src/gql/generated.d.ts +5 -0
  162. package/dist/src/gql/generated.d.ts.map +1 -1
  163. package/dist/src/gql/generated.js.map +1 -1
  164. package/dist/src/index.d.ts +3 -1
  165. package/dist/src/index.d.ts.map +1 -1
  166. package/dist/src/index.js +7 -4
  167. package/dist/src/index.js.map +1 -1
  168. package/dist/src/loaders/asset/asset.loader.d.ts.map +1 -1
  169. package/dist/src/loaders/asset/asset.loader.js +5 -1
  170. package/dist/src/loaders/asset/asset.loader.js.map +1 -1
  171. package/dist/src/loaders/base/validation-builder.d.ts +128 -3
  172. package/dist/src/loaders/base/validation-builder.d.ts.map +1 -1
  173. package/dist/src/loaders/base/validation-builder.js +177 -6
  174. package/dist/src/loaders/base/validation-builder.js.map +1 -1
  175. package/dist/src/loaders/collection/collection.loader.d.ts.map +1 -1
  176. package/dist/src/loaders/collection/collection.loader.js +22 -1
  177. package/dist/src/loaders/collection/collection.loader.js.map +1 -1
  178. package/dist/src/loaders/collection/helpers.d.ts +16 -1
  179. package/dist/src/loaders/collection/helpers.d.ts.map +1 -1
  180. package/dist/src/loaders/collection/helpers.js +37 -0
  181. package/dist/src/loaders/collection/helpers.js.map +1 -1
  182. package/dist/src/loaders/customer/customer.loader.d.ts.map +1 -1
  183. package/dist/src/loaders/customer/customer.loader.js +13 -1
  184. package/dist/src/loaders/customer/customer.loader.js.map +1 -1
  185. package/dist/src/loaders/customer/helpers.d.ts +15 -3
  186. package/dist/src/loaders/customer/helpers.d.ts.map +1 -1
  187. package/dist/src/loaders/customer/helpers.js +188 -7
  188. package/dist/src/loaders/customer/helpers.js.map +1 -1
  189. package/dist/src/loaders/facet-value/facet-value.loader.d.ts.map +1 -1
  190. package/dist/src/loaders/facet-value/facet-value.loader.js +18 -0
  191. package/dist/src/loaders/facet-value/facet-value.loader.js.map +1 -1
  192. package/dist/src/loaders/facet-value/types.d.ts +1 -1
  193. package/dist/src/loaders/facet-value/types.js +1 -1
  194. package/dist/src/loaders/facet-value/types.js.map +1 -1
  195. package/dist/src/loaders/inventory/inventory.loader.d.ts.map +1 -1
  196. package/dist/src/loaders/inventory/inventory.loader.js +1 -2
  197. package/dist/src/loaders/inventory/inventory.loader.js.map +1 -1
  198. package/dist/src/loaders/order/helpers.d.ts +16 -2
  199. package/dist/src/loaders/order/helpers.d.ts.map +1 -1
  200. package/dist/src/loaders/order/helpers.js +108 -0
  201. package/dist/src/loaders/order/helpers.js.map +1 -1
  202. package/dist/src/loaders/order/order.loader.d.ts +38 -0
  203. package/dist/src/loaders/order/order.loader.d.ts.map +1 -1
  204. package/dist/src/loaders/order/order.loader.js +238 -24
  205. package/dist/src/loaders/order/order.loader.js.map +1 -1
  206. package/dist/src/loaders/order/types.d.ts +10 -3
  207. package/dist/src/loaders/order/types.d.ts.map +1 -1
  208. package/dist/src/loaders/order/types.js +13 -2
  209. package/dist/src/loaders/order/types.js.map +1 -1
  210. package/dist/src/loaders/product/product.loader.d.ts.map +1 -1
  211. package/dist/src/loaders/product/product.loader.js +18 -2
  212. package/dist/src/loaders/product/product.loader.js.map +1 -1
  213. package/dist/src/loaders/product-variant/helpers.d.ts +20 -0
  214. package/dist/src/loaders/product-variant/helpers.d.ts.map +1 -0
  215. package/dist/src/loaders/product-variant/helpers.js +103 -0
  216. package/dist/src/loaders/product-variant/helpers.js.map +1 -0
  217. package/dist/src/loaders/product-variant/product-variant.loader.d.ts.map +1 -1
  218. package/dist/src/loaders/product-variant/product-variant.loader.js +76 -10
  219. package/dist/src/loaders/product-variant/product-variant.loader.js.map +1 -1
  220. package/dist/src/loaders/product-variant/types.d.ts +7 -0
  221. package/dist/src/loaders/product-variant/types.d.ts.map +1 -1
  222. package/dist/src/loaders/product-variant/types.js.map +1 -1
  223. package/dist/src/loaders/promotion/helpers.d.ts +29 -0
  224. package/dist/src/loaders/promotion/helpers.d.ts.map +1 -1
  225. package/dist/src/loaders/promotion/helpers.js +68 -0
  226. package/dist/src/loaders/promotion/helpers.js.map +1 -1
  227. package/dist/src/loaders/promotion/promotion.loader.d.ts.map +1 -1
  228. package/dist/src/loaders/promotion/promotion.loader.js +12 -2
  229. package/dist/src/loaders/promotion/promotion.loader.js.map +1 -1
  230. package/dist/src/loaders/shared-helpers.d.ts +42 -2
  231. package/dist/src/loaders/shared-helpers.d.ts.map +1 -1
  232. package/dist/src/loaders/shared-helpers.js +384 -5
  233. package/dist/src/loaders/shared-helpers.js.map +1 -1
  234. package/dist/src/operators/data/copy.operator.js +2 -2
  235. package/dist/src/operators/data/copy.operator.js.map +1 -1
  236. package/dist/src/operators/data/rename.operator.js +1 -1
  237. package/dist/src/operators/data/rename.operator.js.map +1 -1
  238. package/dist/src/operators/helpers.d.ts.map +1 -1
  239. package/dist/src/operators/helpers.js +11 -1
  240. package/dist/src/operators/helpers.js.map +1 -1
  241. package/dist/src/operators/operator-runtime-registry.d.ts +2 -2
  242. package/dist/src/operators/operator-runtime-registry.d.ts.map +1 -1
  243. package/dist/src/operators/operator-runtime-registry.js +1 -1
  244. package/dist/src/operators/operator-runtime-registry.js.map +1 -1
  245. package/dist/src/operators/script/script.operators.d.ts.map +1 -1
  246. package/dist/src/operators/script/script.operators.js +9 -3
  247. package/dist/src/operators/script/script.operators.js.map +1 -1
  248. package/dist/src/runtime/config-types.d.ts +6 -0
  249. package/dist/src/runtime/config-types.d.ts.map +1 -1
  250. package/dist/src/runtime/executor-helpers.d.ts +77 -0
  251. package/dist/src/runtime/executor-helpers.d.ts.map +1 -0
  252. package/dist/src/runtime/executor-helpers.js +143 -0
  253. package/dist/src/runtime/executor-helpers.js.map +1 -0
  254. package/dist/src/runtime/executor-types.d.ts +3 -2
  255. package/dist/src/runtime/executor-types.d.ts.map +1 -1
  256. package/dist/src/runtime/executors/export.executor.d.ts +3 -1
  257. package/dist/src/runtime/executors/export.executor.d.ts.map +1 -1
  258. package/dist/src/runtime/executors/export.executor.js +15 -3
  259. package/dist/src/runtime/executors/export.executor.js.map +1 -1
  260. package/dist/src/runtime/executors/exporters/export-handler-registry.d.ts.map +1 -1
  261. package/dist/src/runtime/executors/exporters/export-handler-registry.js +5 -0
  262. package/dist/src/runtime/executors/exporters/export-handler-registry.js.map +1 -1
  263. package/dist/src/runtime/executors/exporters/export-handler.types.d.ts +3 -0
  264. package/dist/src/runtime/executors/exporters/export-handler.types.d.ts.map +1 -1
  265. package/dist/src/runtime/executors/exporters/export-handler.types.js.map +1 -1
  266. package/dist/src/runtime/executors/exporters/export-helpers.d.ts +1 -0
  267. package/dist/src/runtime/executors/exporters/export-helpers.d.ts.map +1 -1
  268. package/dist/src/runtime/executors/exporters/export-helpers.js +33 -4
  269. package/dist/src/runtime/executors/exporters/export-helpers.js.map +1 -1
  270. package/dist/src/runtime/executors/exporters/http-export.handler.js +4 -4
  271. package/dist/src/runtime/executors/exporters/http-export.handler.js.map +1 -1
  272. package/dist/src/runtime/executors/extractors/file-extract.handler.d.ts.map +1 -1
  273. package/dist/src/runtime/executors/extractors/file-extract.handler.js +33 -13
  274. package/dist/src/runtime/executors/extractors/file-extract.handler.js.map +1 -1
  275. package/dist/src/runtime/executors/extractors/memory-extract.handler.d.ts.map +1 -1
  276. package/dist/src/runtime/executors/extractors/memory-extract.handler.js +17 -9
  277. package/dist/src/runtime/executors/extractors/memory-extract.handler.js.map +1 -1
  278. package/dist/src/runtime/executors/feed.executor.d.ts.map +1 -1
  279. package/dist/src/runtime/executors/feed.executor.js +11 -2
  280. package/dist/src/runtime/executors/feed.executor.js.map +1 -1
  281. package/dist/src/runtime/executors/feeds/feed-handler-registry.d.ts.map +1 -1
  282. package/dist/src/runtime/executors/feeds/feed-handler-registry.js +4 -0
  283. package/dist/src/runtime/executors/feeds/feed-handler-registry.js.map +1 -1
  284. package/dist/src/runtime/executors/gate.executor.d.ts +3 -1
  285. package/dist/src/runtime/executors/gate.executor.d.ts.map +1 -1
  286. package/dist/src/runtime/executors/gate.executor.js +47 -26
  287. package/dist/src/runtime/executors/gate.executor.js.map +1 -1
  288. package/dist/src/runtime/executors/loaders/asset-handler.js +1 -1
  289. package/dist/src/runtime/executors/loaders/asset-handler.js.map +1 -1
  290. package/dist/src/runtime/executors/loaders/asset-import-handler.js +1 -1
  291. package/dist/src/runtime/executors/loaders/asset-import-handler.js.map +1 -1
  292. package/dist/src/runtime/executors/loaders/channel-handler.d.ts +3 -1
  293. package/dist/src/runtime/executors/loaders/channel-handler.d.ts.map +1 -1
  294. package/dist/src/runtime/executors/loaders/channel-handler.js +28 -5
  295. package/dist/src/runtime/executors/loaders/channel-handler.js.map +1 -1
  296. package/dist/src/runtime/executors/loaders/collection-handler.d.ts +14 -2
  297. package/dist/src/runtime/executors/loaders/collection-handler.d.ts.map +1 -1
  298. package/dist/src/runtime/executors/loaders/collection-handler.js +113 -23
  299. package/dist/src/runtime/executors/loaders/collection-handler.js.map +1 -1
  300. package/dist/src/runtime/executors/loaders/customer-group-handler.d.ts.map +1 -1
  301. package/dist/src/runtime/executors/loaders/customer-group-handler.js +2 -20
  302. package/dist/src/runtime/executors/loaders/customer-group-handler.js.map +1 -1
  303. package/dist/src/runtime/executors/loaders/customer-handler.d.ts +6 -1
  304. package/dist/src/runtime/executors/loaders/customer-handler.d.ts.map +1 -1
  305. package/dist/src/runtime/executors/loaders/customer-handler.js +128 -15
  306. package/dist/src/runtime/executors/loaders/customer-handler.js.map +1 -1
  307. package/dist/src/runtime/executors/loaders/deletion-handler.d.ts +39 -0
  308. package/dist/src/runtime/executors/loaders/deletion-handler.d.ts.map +1 -0
  309. package/dist/src/runtime/executors/loaders/deletion-handler.js +414 -0
  310. package/dist/src/runtime/executors/loaders/deletion-handler.js.map +1 -0
  311. package/dist/src/runtime/executors/loaders/facet-handler.d.ts +18 -3
  312. package/dist/src/runtime/executors/loaders/facet-handler.d.ts.map +1 -1
  313. package/dist/src/runtime/executors/loaders/facet-handler.js +161 -28
  314. package/dist/src/runtime/executors/loaders/facet-handler.js.map +1 -1
  315. package/dist/src/runtime/executors/loaders/graphql-mutation-handler.js +1 -1
  316. package/dist/src/runtime/executors/loaders/graphql-mutation-handler.js.map +1 -1
  317. package/dist/src/runtime/executors/loaders/index.d.ts +2 -0
  318. package/dist/src/runtime/executors/loaders/index.d.ts.map +1 -1
  319. package/dist/src/runtime/executors/loaders/index.js +5 -1
  320. package/dist/src/runtime/executors/loaders/index.js.map +1 -1
  321. package/dist/src/runtime/executors/loaders/inventory-adjust-handler.d.ts.map +1 -1
  322. package/dist/src/runtime/executors/loaders/inventory-adjust-handler.js +2 -21
  323. package/dist/src/runtime/executors/loaders/inventory-adjust-handler.js.map +1 -1
  324. package/dist/src/runtime/executors/loaders/inventory-handler.d.ts +2 -1
  325. package/dist/src/runtime/executors/loaders/inventory-handler.d.ts.map +1 -1
  326. package/dist/src/runtime/executors/loaders/inventory-handler.js +11 -9
  327. package/dist/src/runtime/executors/loaders/inventory-handler.js.map +1 -1
  328. package/dist/src/runtime/executors/loaders/loader-handler-registry.d.ts.map +1 -1
  329. package/dist/src/runtime/executors/loaders/loader-handler-registry.js +150 -11
  330. package/dist/src/runtime/executors/loaders/loader-handler-registry.js.map +1 -1
  331. package/dist/src/runtime/executors/loaders/order-handler.d.ts +32 -4
  332. package/dist/src/runtime/executors/loaders/order-handler.d.ts.map +1 -1
  333. package/dist/src/runtime/executors/loaders/order-handler.js +201 -18
  334. package/dist/src/runtime/executors/loaders/order-handler.js.map +1 -1
  335. package/dist/src/runtime/executors/loaders/order-upsert-handler.d.ts +15 -0
  336. package/dist/src/runtime/executors/loaders/order-upsert-handler.d.ts.map +1 -0
  337. package/dist/src/runtime/executors/loaders/order-upsert-handler.js +89 -0
  338. package/dist/src/runtime/executors/loaders/order-upsert-handler.js.map +1 -0
  339. package/dist/src/runtime/executors/loaders/payment-method-handler.d.ts +11 -2
  340. package/dist/src/runtime/executors/loaders/payment-method-handler.d.ts.map +1 -1
  341. package/dist/src/runtime/executors/loaders/payment-method-handler.js +92 -34
  342. package/dist/src/runtime/executors/loaders/payment-method-handler.js.map +1 -1
  343. package/dist/src/runtime/executors/loaders/product-handler.d.ts +20 -0
  344. package/dist/src/runtime/executors/loaders/product-handler.d.ts.map +1 -1
  345. package/dist/src/runtime/executors/loaders/product-handler.js +121 -31
  346. package/dist/src/runtime/executors/loaders/product-handler.js.map +1 -1
  347. package/dist/src/runtime/executors/loaders/promotion-handler.d.ts +9 -2
  348. package/dist/src/runtime/executors/loaders/promotion-handler.d.ts.map +1 -1
  349. package/dist/src/runtime/executors/loaders/promotion-handler.js +134 -68
  350. package/dist/src/runtime/executors/loaders/promotion-handler.js.map +1 -1
  351. package/dist/src/runtime/executors/loaders/rest-handler.js +1 -1
  352. package/dist/src/runtime/executors/loaders/rest-handler.js.map +1 -1
  353. package/dist/src/runtime/executors/loaders/shared-lookups.d.ts +62 -1
  354. package/dist/src/runtime/executors/loaders/shared-lookups.d.ts.map +1 -1
  355. package/dist/src/runtime/executors/loaders/shared-lookups.js +238 -0
  356. package/dist/src/runtime/executors/loaders/shared-lookups.js.map +1 -1
  357. package/dist/src/runtime/executors/loaders/shipping-method-handler.d.ts +11 -6
  358. package/dist/src/runtime/executors/loaders/shipping-method-handler.d.ts.map +1 -1
  359. package/dist/src/runtime/executors/loaders/shipping-method-handler.js +168 -54
  360. package/dist/src/runtime/executors/loaders/shipping-method-handler.js.map +1 -1
  361. package/dist/src/runtime/executors/loaders/stock-location-handler.d.ts.map +1 -1
  362. package/dist/src/runtime/executors/loaders/stock-location-handler.js +2 -20
  363. package/dist/src/runtime/executors/loaders/stock-location-handler.js.map +1 -1
  364. package/dist/src/runtime/executors/loaders/tax-rate-handler.d.ts.map +1 -1
  365. package/dist/src/runtime/executors/loaders/tax-rate-handler.js +14 -1
  366. package/dist/src/runtime/executors/loaders/tax-rate-handler.js.map +1 -1
  367. package/dist/src/runtime/executors/loaders/types.d.ts +2 -0
  368. package/dist/src/runtime/executors/loaders/types.d.ts.map +1 -1
  369. package/dist/src/runtime/executors/loaders/variant-handler.d.ts +24 -2
  370. package/dist/src/runtime/executors/loaders/variant-handler.d.ts.map +1 -1
  371. package/dist/src/runtime/executors/loaders/variant-handler.js +266 -47
  372. package/dist/src/runtime/executors/loaders/variant-handler.js.map +1 -1
  373. package/dist/src/runtime/executors/sink-handler-registry.d.ts +7 -11
  374. package/dist/src/runtime/executors/sink-handler-registry.d.ts.map +1 -1
  375. package/dist/src/runtime/executors/sink-handler-registry.js +376 -10
  376. package/dist/src/runtime/executors/sink-handler-registry.js.map +1 -1
  377. package/dist/src/runtime/executors/sink.executor.d.ts +1 -0
  378. package/dist/src/runtime/executors/sink.executor.d.ts.map +1 -1
  379. package/dist/src/runtime/executors/sink.executor.js +82 -12
  380. package/dist/src/runtime/executors/sink.executor.js.map +1 -1
  381. package/dist/src/runtime/executors/transform.executor.d.ts.map +1 -1
  382. package/dist/src/runtime/executors/transform.executor.js +31 -2
  383. package/dist/src/runtime/executors/transform.executor.js.map +1 -1
  384. package/dist/src/runtime/orchestration/graph-executor.d.ts.map +1 -1
  385. package/dist/src/runtime/orchestration/graph-executor.js +3 -2
  386. package/dist/src/runtime/orchestration/graph-executor.js.map +1 -1
  387. package/dist/src/runtime/orchestration/helpers.d.ts +4 -1
  388. package/dist/src/runtime/orchestration/helpers.d.ts.map +1 -1
  389. package/dist/src/runtime/orchestration/helpers.js +7 -2
  390. package/dist/src/runtime/orchestration/helpers.js.map +1 -1
  391. package/dist/src/runtime/orchestration/linear-executor.d.ts.map +1 -1
  392. package/dist/src/runtime/orchestration/linear-executor.js +3 -2
  393. package/dist/src/runtime/orchestration/linear-executor.js.map +1 -1
  394. package/dist/src/runtime/orchestration/replay-executor.d.ts.map +1 -1
  395. package/dist/src/runtime/orchestration/replay-executor.js +3 -2
  396. package/dist/src/runtime/orchestration/replay-executor.js.map +1 -1
  397. package/dist/src/runtime/orchestration/step-strategies/export-step.strategy.d.ts.map +1 -1
  398. package/dist/src/runtime/orchestration/step-strategies/export-step.strategy.js +12 -12
  399. package/dist/src/runtime/orchestration/step-strategies/export-step.strategy.js.map +1 -1
  400. package/dist/src/runtime/orchestration/step-strategies/feed-step.strategy.d.ts.map +1 -1
  401. package/dist/src/runtime/orchestration/step-strategies/feed-step.strategy.js +12 -12
  402. package/dist/src/runtime/orchestration/step-strategies/feed-step.strategy.js.map +1 -1
  403. package/dist/src/runtime/orchestration/step-strategies/load-step.strategy.js +2 -2
  404. package/dist/src/runtime/orchestration/step-strategies/load-step.strategy.js.map +1 -1
  405. package/dist/src/runtime/orchestration/step-strategies/sink-step.strategy.d.ts.map +1 -1
  406. package/dist/src/runtime/orchestration/step-strategies/sink-step.strategy.js +12 -12
  407. package/dist/src/runtime/orchestration/step-strategies/sink-step.strategy.js.map +1 -1
  408. package/dist/src/runtime/orchestration/step-strategies/step-dispatcher.d.ts.map +1 -1
  409. package/dist/src/runtime/orchestration/step-strategies/step-dispatcher.js +4 -3
  410. package/dist/src/runtime/orchestration/step-strategies/step-dispatcher.js.map +1 -1
  411. package/dist/src/runtime/orchestration/step-strategies/transform-step.strategy.js +4 -4
  412. package/dist/src/runtime/orchestration/step-strategies/transform-step.strategy.js.map +1 -1
  413. package/dist/src/runtime/orchestration/types.d.ts +1 -0
  414. package/dist/src/runtime/orchestration/types.d.ts.map +1 -1
  415. package/dist/src/runtime/utils.d.ts.map +1 -1
  416. package/dist/src/runtime/utils.js +8 -1
  417. package/dist/src/runtime/utils.js.map +1 -1
  418. package/dist/src/sdk/adapters/queue/index.d.ts +1 -0
  419. package/dist/src/sdk/adapters/queue/index.d.ts.map +1 -1
  420. package/dist/src/sdk/adapters/queue/index.js +1 -0
  421. package/dist/src/sdk/adapters/queue/index.js.map +1 -1
  422. package/dist/src/sdk/adapters/queue/internal.adapter.d.ts +32 -0
  423. package/dist/src/sdk/adapters/queue/internal.adapter.d.ts.map +1 -0
  424. package/dist/src/sdk/adapters/queue/internal.adapter.js +68 -0
  425. package/dist/src/sdk/adapters/queue/internal.adapter.js.map +1 -0
  426. package/dist/src/sdk/adapters/queue/queue-adapter.registry.d.ts.map +1 -1
  427. package/dist/src/sdk/adapters/queue/queue-adapter.registry.js +3 -0
  428. package/dist/src/sdk/adapters/queue/queue-adapter.registry.js.map +1 -1
  429. package/dist/src/sdk/adapters/queue/rabbitmq.adapter.d.ts.map +1 -1
  430. package/dist/src/sdk/adapters/queue/rabbitmq.adapter.js +2 -1
  431. package/dist/src/sdk/adapters/queue/rabbitmq.adapter.js.map +1 -1
  432. package/dist/src/sdk/constants.d.ts +2 -2
  433. package/dist/src/sdk/constants.d.ts.map +1 -1
  434. package/dist/src/sdk/dsl/pipeline-builder.d.ts +8 -2
  435. package/dist/src/sdk/dsl/pipeline-builder.d.ts.map +1 -1
  436. package/dist/src/sdk/dsl/pipeline-builder.js +115 -19
  437. package/dist/src/sdk/dsl/pipeline-builder.js.map +1 -1
  438. package/dist/src/sdk/dsl/step-configs.d.ts +24 -0
  439. package/dist/src/sdk/dsl/step-configs.d.ts.map +1 -1
  440. package/dist/src/services/data/record-error.service.d.ts +1 -1
  441. package/dist/src/services/data/record-error.service.d.ts.map +1 -1
  442. package/dist/src/services/data/record-error.service.js +4 -1
  443. package/dist/src/services/data/record-error.service.js.map +1 -1
  444. package/dist/src/services/events/consumer-discovery.d.ts.map +1 -1
  445. package/dist/src/services/events/consumer-discovery.js +2 -1
  446. package/dist/src/services/events/consumer-discovery.js.map +1 -1
  447. package/dist/src/services/events/consumer-lifecycle.d.ts.map +1 -1
  448. package/dist/src/services/events/consumer-lifecycle.js +19 -15
  449. package/dist/src/services/events/consumer-lifecycle.js.map +1 -1
  450. package/dist/src/services/events/event-trigger.service.d.ts.map +1 -1
  451. package/dist/src/services/events/event-trigger.service.js +9 -3
  452. package/dist/src/services/events/event-trigger.service.js.map +1 -1
  453. package/dist/src/services/events/hook.service.d.ts.map +1 -1
  454. package/dist/src/services/events/hook.service.js +7 -3
  455. package/dist/src/services/events/hook.service.js.map +1 -1
  456. package/dist/src/services/events/message-processing.d.ts.map +1 -1
  457. package/dist/src/services/events/message-processing.js +13 -8
  458. package/dist/src/services/events/message-processing.js.map +1 -1
  459. package/dist/src/services/logger/datahub-logger.d.ts +7 -0
  460. package/dist/src/services/logger/datahub-logger.d.ts.map +1 -1
  461. package/dist/src/services/logger/datahub-logger.js +9 -0
  462. package/dist/src/services/logger/datahub-logger.js.map +1 -1
  463. package/dist/src/services/logger/execution-logger.d.ts +1 -1
  464. package/dist/src/services/logger/execution-logger.d.ts.map +1 -1
  465. package/dist/src/services/logger/execution-logger.js +8 -4
  466. package/dist/src/services/logger/execution-logger.js.map +1 -1
  467. package/dist/src/services/pipeline/pipeline-runner.service.d.ts +3 -1
  468. package/dist/src/services/pipeline/pipeline-runner.service.d.ts.map +1 -1
  469. package/dist/src/services/pipeline/pipeline-runner.service.js +17 -7
  470. package/dist/src/services/pipeline/pipeline-runner.service.js.map +1 -1
  471. package/dist/src/services/pipeline/pipeline.service.d.ts.map +1 -1
  472. package/dist/src/services/pipeline/pipeline.service.js +8 -2
  473. package/dist/src/services/pipeline/pipeline.service.js.map +1 -1
  474. package/dist/src/services/storage/retention.service.d.ts.map +1 -1
  475. package/dist/src/services/storage/retention.service.js +22 -0
  476. package/dist/src/services/storage/retention.service.js.map +1 -1
  477. package/dist/src/services/testing/step-test.service.d.ts.map +1 -1
  478. package/dist/src/services/testing/step-test.service.js +17 -1
  479. package/dist/src/services/testing/step-test.service.js.map +1 -1
  480. package/dist/src/services/validation/definition-validation.service.d.ts.map +1 -1
  481. package/dist/src/services/validation/definition-validation.service.js +4 -1
  482. package/dist/src/services/validation/definition-validation.service.js.map +1 -1
  483. package/dist/src/services/validation/trigger-validation.d.ts.map +1 -1
  484. package/dist/src/services/validation/trigger-validation.js +76 -2
  485. package/dist/src/services/validation/trigger-validation.js.map +1 -1
  486. package/dist/src/types/index.d.ts +1 -0
  487. package/dist/src/types/index.d.ts.map +1 -1
  488. package/dist/src/types/index.js.map +1 -1
  489. package/dist/src/types/loader-configs.d.ts +1071 -0
  490. package/dist/src/types/loader-configs.d.ts.map +1 -0
  491. package/dist/src/types/loader-configs.js +54 -0
  492. package/dist/src/types/loader-configs.js.map +1 -0
  493. package/dist/src/types/step-configs.d.ts +1 -0
  494. package/dist/src/types/step-configs.d.ts.map +1 -1
  495. package/dist/src/types/step-configs.js +3 -0
  496. package/dist/src/types/step-configs.js.map +1 -1
  497. package/dist/src/utils/code-security.utils.d.ts +18 -0
  498. package/dist/src/utils/code-security.utils.d.ts.map +1 -1
  499. package/dist/src/utils/code-security.utils.js +125 -9
  500. package/dist/src/utils/code-security.utils.js.map +1 -1
  501. package/dist/src/utils/error.utils.d.ts +1 -1
  502. package/dist/src/utils/error.utils.d.ts.map +1 -1
  503. package/dist/src/utils/error.utils.js +2 -1
  504. package/dist/src/utils/error.utils.js.map +1 -1
  505. package/dist/src/utils/url-security.utils.d.ts +5 -3
  506. package/dist/src/utils/url-security.utils.d.ts.map +1 -1
  507. package/dist/src/utils/url-security.utils.js +20 -4
  508. package/dist/src/utils/url-security.utils.js.map +1 -1
  509. package/dist/src/validation/pipeline-definition.validator.js +2 -1
  510. package/dist/src/validation/pipeline-definition.validator.js.map +1 -1
  511. package/docs/developer-guide/README.md +2 -0
  512. package/docs/developer-guide/dsl/pipeline-builder.md +12 -0
  513. package/docs/developer-guide/extending/README.md +230 -10
  514. package/docs/developer-guide/extending/custom-sinks.md +87 -0
  515. package/docs/developer-guide/extending/events.md +4 -1
  516. package/docs/examples/validation-error-messages.md +246 -0
  517. package/docs/guides/multi-channel.md +1190 -0
  518. package/docs/guides/multi-currency.md +881 -0
  519. package/docs/guides/multi-entity.md +597 -0
  520. package/docs/guides/multi-language.md +957 -0
  521. package/docs/reference/README.md +11 -4
  522. package/docs/reference/extractors.md +30 -0
  523. package/docs/reference/loaders.md +396 -21
  524. package/docs/reference/operators-complete.md +1251 -0
  525. package/docs/reference/operators.md +36 -2
  526. package/docs/reference/sinks.md +7 -6
  527. package/docs/reference/step-types.md +12 -5
  528. package/docs/user-guide/pipelines.md +82 -13
  529. package/package.json +1 -1
  530. package/shared/types/adapter-config.types.ts +439 -10
  531. package/shared/types/index.ts +25 -0
  532. package/shared/types/loader.types.ts +4 -0
  533. package/shared/types/step.types.ts +6 -0
  534. package/shared/utils/error.ts +11 -0
@@ -0,0 +1,1251 @@
1
+ # Complete Operator Reference
2
+
3
+ **Auto-generated from OPERATOR_REGISTRY**
4
+
5
+ Total operators: **61**
6
+
7
+ This is the definitive reference for all built-in transform operators in the Data Hub plugin.
8
+
9
+ ## Table of Contents
10
+
11
+ ### [Aggregation Operators](#aggregation)
12
+ - [aggregate](#aggregate) - Compute a simple aggregate over records and set a field on each record.
13
+ - [count](#count) - Count elements in an array or characters in a string.
14
+ - [unique](#unique) - Remove duplicate values from an array field.
15
+ - [flatten](#flatten) - Flatten a nested array into a single-level array.
16
+ - [first](#first) - Get the first element of an array.
17
+ - [last](#last) - Get the last element of an array.
18
+ - [expand](#expand) - Expand an array field into multiple records. Each array element becomes a separate record with optional parent field inheritance.
19
+ - [multiJoin](#multijoin) - Join two datasets by matching key fields. Supports INNER, LEFT, RIGHT, and FULL OUTER join types.
20
+
21
+ ### [File Operators](#file)
22
+ - [imageResize](#imageresize) - Resize images referenced in record fields (base64-encoded)
23
+ - [imageConvert](#imageconvert) - Convert image format (JPEG, PNG, WebP, AVIF, GIF)
24
+ - [pdfGenerate](#pdfgenerate) - Generate PDF from HTML template with record data
25
+
26
+ ### [Data Operators](#data)
27
+ - [map](#map) - Transform records via field mapping. Provide a JSON object of dst -> src dot-paths.
28
+ - [set](#set) - Set a static value at a specified path.
29
+ - [remove](#remove) - Remove a field at a specified path.
30
+ - [rename](#rename) - Rename a field from one path to another.
31
+ - [copy](#copy) - Copy a field value to another path.
32
+ - [template](#template) - Render a string template and set it at target path.
33
+ - [hash](#hash) - Generate a cryptographic hash (MD5, SHA1, SHA256, SHA512) of field value(s).
34
+ - [uuid](#uuid) - Generate a UUID for each record. Supports v4 (random) and v5 (namespace-based deterministic).
35
+ - [validateRequired](#validaterequired) - Mark records as invalid if required fields are missing.
36
+ - [validateFormat](#validateformat) - Validate field format using regex.
37
+
38
+ ### [Date Operators](#date)
39
+ - [dateFormat](#dateformat) - Format a date field to a string.
40
+ - [dateParse](#dateparse) - Parse a string to a date.
41
+ - [dateAdd](#dateadd) - Add or subtract time from a date.
42
+ - [dateDiff](#datediff) - Calculate the difference between two dates in a specified unit.
43
+ - [now](#now) - Set the current timestamp on a field. Useful for adding created/updated timestamps.
44
+
45
+ ### [Enrichment Operators](#enrichment)
46
+ - [lookup](#lookup) - Lookup value from a map and set to target field.
47
+ - [coalesce](#coalesce) - Return the first non-null value from a list of field paths.
48
+ - [enrich](#enrich) - Enrich or default fields on records.
49
+ - [default](#default) - Set a default value if field is null or undefined.
50
+ - [httpLookup](#httplookup) - Enrich records by fetching data from external HTTP endpoints with caching, authentication, and error handling.
51
+
52
+ ### [JSON Operators](#json)
53
+ - [parseJson](#parsejson) - Parse a JSON string field into an object.
54
+ - [stringifyJson](#stringifyjson) - Stringify an object field to a JSON string.
55
+ - [pick](#pick) - Pick specific fields from a record, discarding others.
56
+ - [omit](#omit) - Omit specific fields from a record.
57
+
58
+ ### [Logic Operators](#logic)
59
+ - [when](#when) - Filter records by conditions. Action: keep or drop.
60
+ - [ifThenElse](#ifthenelse) - Set a value based on a condition.
61
+ - [switch](#switch) - Set a value based on multiple conditions (like a switch statement).
62
+ - [deltaFilter](#deltafilter) - Filter out unchanged records using a stable hash stored in checkpoint. Keeps only changed/new based on idPath.
63
+
64
+ ### [Numeric Operators](#numeric)
65
+ - [math](#math) - Perform math operations on numeric fields.
66
+ - [currency](#currency) - Convert floats to minor units or re-map currency fields.
67
+ - [unit](#unit) - Convert units (e.g. g<->kg, cm<->m)
68
+ - [toNumber](#tonumber) - Convert a string field to a number.
69
+ - [toString](#tostring) - Convert a value to a string.
70
+ - [parseNumber](#parsenumber) - Parse a string to a number with locale-aware decimal/thousand separator handling.
71
+ - [formatNumber](#formatnumber) - Format a number as a localized string with optional currency or percent formatting.
72
+ - [toCents](#tocents) - Convert a decimal amount to cents (minor currency units). Multiplies by 100 and rounds.
73
+ - [round](#round) - Round a number to a specified number of decimal places.
74
+
75
+ ### [String Operators](#string)
76
+ - [split](#split) - Split a string field into an array by delimiter.
77
+ - [join](#join) - Join an array field into a string.
78
+ - [trim](#trim) - Trim whitespace from a string field.
79
+ - [lowercase](#lowercase) - Convert a string field to lowercase.
80
+ - [uppercase](#uppercase) - Convert a string field to uppercase.
81
+ - [slugify](#slugify) - Generate a URL-friendly slug from a string field.
82
+ - [concat](#concat) - Concatenate multiple string fields into one.
83
+ - [replace](#replace) - Replace text in a string field.
84
+ - [extractRegex](#extractregex) - Extract a value from a string field using a regular expression pattern with capture groups.
85
+ - [replaceRegex](#replaceregex) - Replace values in a string field using a regular expression pattern.
86
+ - [stripHtml](#striphtml) - Remove HTML tags from a string field, preserving text content.
87
+ - [truncate](#truncate) - Truncate a string to a maximum length, optionally adding a suffix.
88
+
89
+ ### [Scripting Operators](#scripting)
90
+ - [script](#script) - Execute inline JavaScript code to transform records. Use for complex logic that cannot be expressed with standard operators.
91
+
92
+ ---
93
+
94
+ ## Aggregation Operators
95
+
96
+ ### aggregate
97
+
98
+ Compute a simple aggregate over records and set a field on each record.
99
+
100
+ | Argument | Type | Required | Description |
101
+ |----------|------|----------|-------------|
102
+ | `op` | select | Yes | Operation |
103
+
104
+ **Example:**
105
+
106
+ ```typescript
107
+ { op: 'aggregate', args: {
108
+ "op": "value"
109
+ } }
110
+ ```
111
+
112
+ ### count
113
+
114
+ Count elements in an array or characters in a string.
115
+
116
+ | Argument | Type | Required | Description |
117
+ |----------|------|----------|-------------|
118
+ | `source` | string | Yes | Source field path |
119
+ | `target` | string | Yes | Target field path |
120
+
121
+ **Example:**
122
+
123
+ ```typescript
124
+ { op: 'count', args: {
125
+ "source": "sourceField",
126
+ "target": "targetField"
127
+ } }
128
+ ```
129
+
130
+ ### unique
131
+
132
+ Remove duplicate values from an array field.
133
+
134
+ | Argument | Type | Required | Description |
135
+ |----------|------|----------|-------------|
136
+ | `source` | string | Yes | Source field path |
137
+ | `target` | string | No | Target field path |
138
+ | `by` | string | No | Object key to use for uniqueness |
139
+
140
+ **Example:**
141
+
142
+ ```typescript
143
+ { op: 'unique', args: {
144
+ "source": "sourceField"
145
+ } }
146
+ ```
147
+
148
+ ### flatten
149
+
150
+ Flatten a nested array into a single-level array.
151
+
152
+ | Argument | Type | Required | Description |
153
+ |----------|------|----------|-------------|
154
+ | `source` | string | Yes | Source field path |
155
+ | `target` | string | No | Defaults to source path if not set |
156
+ | `depth` | number | No | How deep to flatten (default: 1) |
157
+
158
+ **Example:**
159
+
160
+ ```typescript
161
+ { op: 'flatten', args: {
162
+ "source": "sourceField"
163
+ } }
164
+ ```
165
+
166
+ ### first
167
+
168
+ Get the first element of an array.
169
+
170
+ | Argument | Type | Required | Description |
171
+ |----------|------|----------|-------------|
172
+ | `source` | string | Yes | Source array path |
173
+ | `target` | string | Yes | Target field path |
174
+
175
+ **Example:**
176
+
177
+ ```typescript
178
+ { op: 'first', args: {
179
+ "source": "sourceField",
180
+ "target": "targetField"
181
+ } }
182
+ ```
183
+
184
+ ### last
185
+
186
+ Get the last element of an array.
187
+
188
+ | Argument | Type | Required | Description |
189
+ |----------|------|----------|-------------|
190
+ | `source` | string | Yes | Source array path |
191
+ | `target` | string | Yes | Target field path |
192
+
193
+ **Example:**
194
+
195
+ ```typescript
196
+ { op: 'last', args: {
197
+ "source": "sourceField",
198
+ "target": "targetField"
199
+ } }
200
+ ```
201
+
202
+ ### expand
203
+
204
+ Expand an array field into multiple records. Each array element becomes a separate record with optional parent field inheritance.
205
+
206
+ | Argument | Type | Required | Description |
207
+ |----------|------|----------|-------------|
208
+ | `path` | string | Yes | Path to the array to expand (e.g., |
209
+ | `mergeParent` | boolean | No | Include all parent fields in expanded records |
210
+ | `parentFields` | json | No | Map of target field names to source paths (e.g., { |
211
+
212
+ **Example:**
213
+
214
+ ```typescript
215
+ { op: 'expand', args: {
216
+ "path": "sourceField"
217
+ } }
218
+ ```
219
+
220
+ ### multiJoin
221
+
222
+ Join two datasets by matching key fields. Supports INNER, LEFT, RIGHT, and FULL OUTER join types.
223
+
224
+ | Argument | Type | Required | Description |
225
+ |----------|------|----------|-------------|
226
+ | `leftKey` | string | Yes | Field path in left (primary) records to join on |
227
+ | `rightKey` | string | Yes | Field path in right records to join on |
228
+ | `type` | select | Yes | Join type |
229
+
230
+ **Example:**
231
+
232
+ ```typescript
233
+ { op: 'multiJoin', args: {
234
+ "leftKey": "value",
235
+ "rightKey": "value",
236
+ "type": "value"
237
+ } }
238
+ ```
239
+
240
+ ## File Operators
241
+
242
+ ### imageResize
243
+
244
+ Resize images referenced in record fields (base64-encoded)
245
+
246
+ **Example:**
247
+
248
+ ```typescript
249
+ { op: 'imageResize', args: {} }
250
+ ```
251
+
252
+ ### imageConvert
253
+
254
+ Convert image format (JPEG, PNG, WebP, AVIF, GIF)
255
+
256
+ **Example:**
257
+
258
+ ```typescript
259
+ { op: 'imageConvert', args: {} }
260
+ ```
261
+
262
+ ### pdfGenerate
263
+
264
+ Generate PDF from HTML template with record data
265
+
266
+ **Example:**
267
+
268
+ ```typescript
269
+ { op: 'pdfGenerate', args: {} }
270
+ ```
271
+
272
+ ## Data Operators
273
+
274
+ ### map
275
+
276
+ Transform records via field mapping. Provide a JSON object of dst -> src dot-paths.
277
+
278
+ | Argument | Type | Required | Description |
279
+ |----------|------|----------|-------------|
280
+ | `mapping` | json | Yes | JSON object defining field mapping (target: source) |
281
+ | `passthrough` | boolean | No | If true, include fields not in mapping |
282
+
283
+ **Example:**
284
+
285
+ ```typescript
286
+ { op: 'map', args: {
287
+ "mapping": "value"
288
+ } }
289
+ ```
290
+
291
+ ### set
292
+
293
+ Set a static value at a specified path.
294
+
295
+ | Argument | Type | Required | Description |
296
+ |----------|------|----------|-------------|
297
+ | `path` | string | Yes | Dot notation path where to set the value |
298
+ | `value` | json | Yes | The value to set (any valid JSON) |
299
+
300
+ **Example:**
301
+
302
+ ```typescript
303
+ { op: 'set', args: {
304
+ "path": "sourceField",
305
+ "value": "value"
306
+ } }
307
+ ```
308
+
309
+ ### remove
310
+
311
+ Remove a field at a specified path.
312
+
313
+ | Argument | Type | Required | Description |
314
+ |----------|------|----------|-------------|
315
+ | `path` | string | Yes | Dot notation path of the field to remove |
316
+
317
+ **Example:**
318
+
319
+ ```typescript
320
+ { op: 'remove', args: {
321
+ "path": "sourceField"
322
+ } }
323
+ ```
324
+
325
+ ### rename
326
+
327
+ Rename a field from one path to another.
328
+
329
+ | Argument | Type | Required | Description |
330
+ |----------|------|----------|-------------|
331
+ | `from` | string | Yes | Source field path |
332
+ | `to` | string | Yes | Target field path |
333
+
334
+ **Example:**
335
+
336
+ ```typescript
337
+ { op: 'rename', args: {
338
+ "from": "value",
339
+ "to": "value"
340
+ } }
341
+ ```
342
+
343
+ ### copy
344
+
345
+ Copy a field value to another path.
346
+
347
+ | Argument | Type | Required | Description |
348
+ |----------|------|----------|-------------|
349
+ | `source` | string | Yes | Source field path |
350
+ | `target` | string | Yes | Target field path |
351
+
352
+ **Example:**
353
+
354
+ ```typescript
355
+ { op: 'copy', args: {
356
+ "source": "sourceField",
357
+ "target": "targetField"
358
+ } }
359
+ ```
360
+
361
+ ### template
362
+
363
+ Render a string template and set it at target path.
364
+
365
+ | Argument | Type | Required | Description |
366
+ |----------|------|----------|-------------|
367
+ | `template` | string | Yes | Use ${path.to.field} to substitute values |
368
+ | `target` | string | Yes | Where to store the result |
369
+ | `missingAsEmpty` | boolean | No | Treat missing fields as empty strings |
370
+
371
+ **Example:**
372
+
373
+ ```typescript
374
+ { op: 'template', args: {
375
+ "template": "value",
376
+ "target": "targetField"
377
+ } }
378
+ ```
379
+
380
+ ### hash
381
+
382
+ Generate a cryptographic hash (MD5, SHA1, SHA256, SHA512) of field value(s).
383
+
384
+ | Argument | Type | Required | Description |
385
+ |----------|------|----------|-------------|
386
+ | `source` | json | Yes | Single path string or array of paths to hash together |
387
+ | `target` | string | Yes | Path where the hash will be stored |
388
+ | `algorithm` | select | No | Default: sha256 |
389
+ | `encoding` | select | No | Default: hex |
390
+
391
+ **Example:**
392
+
393
+ ```typescript
394
+ { op: 'hash', args: {
395
+ "source": "sourceField",
396
+ "target": "targetField"
397
+ } }
398
+ ```
399
+
400
+ ### uuid
401
+
402
+ Generate a UUID for each record. Supports v4 (random) and v5 (namespace-based deterministic).
403
+
404
+ | Argument | Type | Required | Description |
405
+ |----------|------|----------|-------------|
406
+ | `target` | string | Yes | Path where the UUID will be stored |
407
+ | `version` | select | No | UUID version |
408
+
409
+ **Example:**
410
+
411
+ ```typescript
412
+ { op: 'uuid', args: {
413
+ "target": "targetField"
414
+ } }
415
+ ```
416
+
417
+ ### validateRequired
418
+
419
+ Mark records as invalid if required fields are missing.
420
+
421
+ | Argument | Type | Required | Description |
422
+ |----------|------|----------|-------------|
423
+ | `fields` | json | Yes | Required fields (JSON array) |
424
+ | `errorField` | string | No | Field to store validation errors |
425
+
426
+ **Example:**
427
+
428
+ ```typescript
429
+ { op: 'validateRequired', args: {
430
+ "fields": "value"
431
+ } }
432
+ ```
433
+
434
+ ### validateFormat
435
+
436
+ Validate field format using regex.
437
+
438
+ | Argument | Type | Required | Description |
439
+ |----------|------|----------|-------------|
440
+ | `field` | string | Yes | Field path |
441
+ | `pattern` | string | Yes | Regex pattern |
442
+ | `errorField` | string | No | Error output field |
443
+ | `errorMessage` | string | No | Error message |
444
+
445
+ **Example:**
446
+
447
+ ```typescript
448
+ { op: 'validateFormat', args: {
449
+ "field": "value",
450
+ "pattern": "value"
451
+ } }
452
+ ```
453
+
454
+ ## Date Operators
455
+
456
+ ### dateFormat
457
+
458
+ Format a date field to a string.
459
+
460
+ | Argument | Type | Required | Description |
461
+ |----------|------|----------|-------------|
462
+ | `source` | string | Yes | Source field path |
463
+ | `target` | string | Yes | Target field path |
464
+ | `format` | string | Yes | e.g. YYYY-MM-DD, DD/MM/YYYY HH:mm |
465
+ | `inputFormat` | string | No | If source is string, specify its format |
466
+ | `timezone` | string | No | e.g. UTC, Europe/London |
467
+
468
+ **Example:**
469
+
470
+ ```typescript
471
+ { op: 'dateFormat', args: {
472
+ "source": "sourceField",
473
+ "target": "targetField",
474
+ "format": "value"
475
+ } }
476
+ ```
477
+
478
+ ### dateParse
479
+
480
+ Parse a string to a date.
481
+
482
+ | Argument | Type | Required | Description |
483
+ |----------|------|----------|-------------|
484
+ | `source` | string | Yes | Source field path |
485
+ | `target` | string | Yes | Target field path |
486
+ | `format` | string | Yes | Format of the source string |
487
+ | `timezone` | string | No | Timezone |
488
+
489
+ **Example:**
490
+
491
+ ```typescript
492
+ { op: 'dateParse', args: {
493
+ "source": "sourceField",
494
+ "target": "targetField",
495
+ "format": "value"
496
+ } }
497
+ ```
498
+
499
+ ### dateAdd
500
+
501
+ Add or subtract time from a date.
502
+
503
+ | Argument | Type | Required | Description |
504
+ |----------|------|----------|-------------|
505
+ | `source` | string | Yes | Source field path |
506
+ | `target` | string | Yes | Target field path |
507
+ | `amount` | number | Yes | Positive to add, negative to subtract |
508
+ | `unit` | select | Yes | Unit: `seconds`, `minutes`, `hours`, `days`, `weeks`, `months`, `years` |
509
+
510
+ > **Important:** Unit strings must be plural: `"days"`, `"hours"`, `"minutes"`, `"seconds"`, `"weeks"`, `"months"`, `"years"`. Singular forms like `"day"` are not supported.
511
+
512
+ **Example:**
513
+
514
+ ```typescript
515
+ { op: 'dateAdd', args: {
516
+ "source": "sourceField",
517
+ "target": "targetField",
518
+ "amount": 10,
519
+ "unit": "days"
520
+ } }
521
+ ```
522
+
523
+ ### dateDiff
524
+
525
+ Calculate the difference between two dates in a specified unit.
526
+
527
+ | Argument | Type | Required | Description |
528
+ |----------|------|----------|-------------|
529
+ | `startDate` | string | Yes | Start date field path |
530
+ | `endDate` | string | Yes | End date field path |
531
+ | `target` | string | Yes | Target field path |
532
+ | `unit` | select | Yes | Result unit: `seconds`, `minutes`, `hours`, `days`, `weeks`, `months`, `years` |
533
+
534
+ > **Important:** Unit strings must be plural: `"days"`, `"hours"`, `"minutes"`, `"seconds"`, `"weeks"`, `"months"`, `"years"`. Singular forms like `"day"` are not supported.
535
+
536
+ **Example:**
537
+
538
+ ```typescript
539
+ { op: 'dateDiff', args: {
540
+ "startDate": "startDateField",
541
+ "endDate": "endDateField",
542
+ "target": "targetField",
543
+ "unit": "days"
544
+ } }
545
+ ```
546
+
547
+ ### now
548
+
549
+ Set the current timestamp on a field. Useful for adding created/updated timestamps.
550
+
551
+ | Argument | Type | Required | Description |
552
+ |----------|------|----------|-------------|
553
+ | `target` | string | Yes | Target field path |
554
+ | `format` | select | No | Output format |
555
+
556
+ **Example:**
557
+
558
+ ```typescript
559
+ { op: 'now', args: {
560
+ "target": "targetField"
561
+ } }
562
+ ```
563
+
564
+ ## Enrichment Operators
565
+
566
+ ### lookup
567
+
568
+ Lookup value from a map and set to target field.
569
+
570
+ | Argument | Type | Required | Description |
571
+ |----------|------|----------|-------------|
572
+ | `source` | string | Yes | Source field path |
573
+ | `map` | json | Yes | Map (JSON object) |
574
+ | `target` | string | Yes | Target field path |
575
+ | `default` | string | No | Default value |
576
+
577
+ **Example:**
578
+
579
+ ```typescript
580
+ { op: 'lookup', args: {
581
+ "source": "sourceField",
582
+ "map": "value",
583
+ "target": "targetField"
584
+ } }
585
+ ```
586
+
587
+ ### coalesce
588
+
589
+ Return the first non-null value from a list of field paths.
590
+
591
+ | Argument | Type | Required | Description |
592
+ |----------|------|----------|-------------|
593
+ | `paths` | json | Yes | Array of paths to check in order |
594
+ | `target` | string | Yes | Target field path |
595
+ | `default` | json | No | Value if all paths are null |
596
+
597
+ **Example:**
598
+
599
+ ```typescript
600
+ { op: 'coalesce', args: {
601
+ "paths": "value",
602
+ "target": "targetField"
603
+ } }
604
+ ```
605
+
606
+ ### enrich
607
+
608
+ Enrich or default fields on records.
609
+
610
+ | Argument | Type | Required | Description |
611
+ |----------|------|----------|-------------|
612
+ | `set` | json | No | JSON object of fields to set (dot paths allowed) |
613
+ | `defaults` | json | No | JSON object of fields to set if currently missing (dot paths allowed) |
614
+
615
+ **Example:**
616
+
617
+ ```typescript
618
+ { op: 'enrich', args: {} }
619
+ ```
620
+
621
+ ### default
622
+
623
+ Set a default value if field is null or undefined.
624
+
625
+ | Argument | Type | Required | Description |
626
+ |----------|------|----------|-------------|
627
+ | `path` | string | Yes | Field path |
628
+ | `value` | json | Yes | Default value (JSON) |
629
+
630
+ **Example:**
631
+
632
+ ```typescript
633
+ { op: 'default', args: {
634
+ "path": "sourceField",
635
+ "value": "value"
636
+ } }
637
+ ```
638
+
639
+ ### httpLookup
640
+
641
+ Enrich records by fetching data from external HTTP endpoints with caching, authentication, and error handling.
642
+
643
+ | Argument | Type | Required | Description |
644
+ |----------|------|----------|-------------|
645
+ | `url` | string | Yes | HTTP endpoint URL. Use {{field}} for dynamic values. |
646
+ | `method` | select | No | HTTP Method |
647
+ | `target` | string | Yes | Field path to store the response data. |
648
+ | `responsePath` | string | No | JSON path to extract from response (optional). |
649
+ | `keyField` | string | No | Field to use as cache key. If not set, URL is used. |
650
+ | `default` | json | No | Value to use if lookup fails or returns 404. |
651
+ | `timeoutMs` | number | No | Request timeout in milliseconds. |
652
+ | `cacheTtlSec` | number | No | Cache time-to-live in seconds. Set to 0 to disable. |
653
+ | `headers` | json | No | Static HTTP headers as JSON object. |
654
+ | `bearerTokenSecretCode` | string | No | Secret code for Bearer token authentication. |
655
+ | `apiKeySecretCode` | string | No | Secret code for API key authentication. |
656
+ | `apiKeyHeader` | string | No | Header name for API key. |
657
+ | `basicAuthSecretCode` | string | No | Secret code for Basic auth (username:password). |
658
+ | `bodyField` | string | No | Field path for POST body (uses record value at this path). |
659
+ | `body` | json | No | Static POST body (JSON object). |
660
+ | `skipOn404` | boolean | No | Skip record if endpoint returns 404. |
661
+ | `failOnError` | boolean | No | Fail pipeline if HTTP request fails. |
662
+ | `maxRetries` | number | No | Maximum retry attempts on transient errors. |
663
+ | `batchSize` | number | No | Process this many records in parallel (default: 50). |
664
+ | `rateLimitPerSecond` | number | No | Max requests per second per domain (default: 100). |
665
+
666
+ **Example:**
667
+
668
+ ```typescript
669
+ { op: 'httpLookup', args: {
670
+ "url": "value",
671
+ "target": "targetField"
672
+ } }
673
+ ```
674
+
675
+ ## JSON Operators
676
+
677
+ ### parseJson
678
+
679
+ Parse a JSON string field into an object.
680
+
681
+ | Argument | Type | Required | Description |
682
+ |----------|------|----------|-------------|
683
+ | `source` | string | Yes | Source field path |
684
+ | `target` | string | No | Defaults to source if not set |
685
+
686
+ **Example:**
687
+
688
+ ```typescript
689
+ { op: 'parseJson', args: {
690
+ "source": "sourceField"
691
+ } }
692
+ ```
693
+
694
+ ### stringifyJson
695
+
696
+ Stringify an object field to a JSON string.
697
+
698
+ | Argument | Type | Required | Description |
699
+ |----------|------|----------|-------------|
700
+ | `source` | string | Yes | Source field path |
701
+ | `target` | string | No | Defaults to source if not set |
702
+ | `pretty` | boolean | No | Pretty print |
703
+
704
+ **Example:**
705
+
706
+ ```typescript
707
+ { op: 'stringifyJson', args: {
708
+ "source": "sourceField"
709
+ } }
710
+ ```
711
+
712
+ ### pick
713
+
714
+ Pick specific fields from a record, discarding others.
715
+
716
+ | Argument | Type | Required | Description |
717
+ |----------|------|----------|-------------|
718
+ | `fields` | json | Yes | Array of field paths to keep |
719
+
720
+ **Example:**
721
+
722
+ ```typescript
723
+ { op: 'pick', args: {
724
+ "fields": "value"
725
+ } }
726
+ ```
727
+
728
+ ### omit
729
+
730
+ Omit specific fields from a record.
731
+
732
+ | Argument | Type | Required | Description |
733
+ |----------|------|----------|-------------|
734
+ | `fields` | json | Yes | Array of field paths to remove |
735
+
736
+ **Example:**
737
+
738
+ ```typescript
739
+ { op: 'omit', args: {
740
+ "fields": "value"
741
+ } }
742
+ ```
743
+
744
+ ## Logic Operators
745
+
746
+ ### when
747
+
748
+ Filter records by conditions. Action: keep or drop.
749
+
750
+ | Argument | Type | Required | Description |
751
+ |----------|------|----------|-------------|
752
+ | `conditions` | json | Yes | e.g. [{ field: |
753
+
754
+ **Example:**
755
+
756
+ ```typescript
757
+ { op: 'when', args: {
758
+ "conditions": "value"
759
+ } }
760
+ ```
761
+
762
+ ### ifThenElse
763
+
764
+ Set a value based on a condition.
765
+
766
+ | Argument | Type | Required | Description |
767
+ |----------|------|----------|-------------|
768
+ | `condition` | json | Yes | e.g. { field: |
769
+ | `thenValue` | json | Yes | Then value (JSON) |
770
+ | `elseValue` | json | No | Else value (JSON) |
771
+ | `target` | string | Yes | Target field path |
772
+
773
+ **Example:**
774
+
775
+ ```typescript
776
+ { op: 'ifThenElse', args: {
777
+ "condition": "value",
778
+ "thenValue": "value",
779
+ "target": "targetField"
780
+ } }
781
+ ```
782
+
783
+ ### switch
784
+
785
+ Set a value based on multiple conditions (like a switch statement).
786
+
787
+ | Argument | Type | Required | Description |
788
+ |----------|------|----------|-------------|
789
+ | `source` | string | Yes | Source field path |
790
+ | `cases` | json | Yes | Array of { value, result } objects |
791
+ | `default` | json | No | Default value (JSON) |
792
+ | `target` | string | Yes | Target field path |
793
+
794
+ **Example:**
795
+
796
+ ```typescript
797
+ { op: 'switch', args: {
798
+ "source": "sourceField",
799
+ "cases": "value",
800
+ "target": "targetField"
801
+ } }
802
+ ```
803
+
804
+ ### deltaFilter
805
+
806
+ Filter out unchanged records using a stable hash stored in checkpoint. Keeps only changed/new based on idPath.
807
+
808
+ | Argument | Type | Required | Description |
809
+ |----------|------|----------|-------------|
810
+ | `idPath` | string | Yes | ID field path |
811
+ | `includePaths` | json | No | Subset of fields to hash; default is entire record |
812
+ | `excludePaths` | json | No | Fields to ignore when hashing |
813
+
814
+ **Example:**
815
+
816
+ ```typescript
817
+ { op: 'deltaFilter', args: {
818
+ "idPath": "value"
819
+ } }
820
+ ```
821
+
822
+ ## Numeric Operators
823
+
824
+ ### math
825
+
826
+ Perform math operations on numeric fields.
827
+
828
+ | Argument | Type | Required | Description |
829
+ |----------|------|----------|-------------|
830
+ | `operation` | select | Yes | Operation |
831
+
832
+ **Example:**
833
+
834
+ ```typescript
835
+ { op: 'math', args: {
836
+ "operation": "value"
837
+ } }
838
+ ```
839
+
840
+ ### currency
841
+
842
+ Convert floats to minor units or re-map currency fields.
843
+
844
+ | Argument | Type | Required | Description |
845
+ |----------|------|----------|-------------|
846
+ | `source` | string | Yes | Source field path |
847
+ | `target` | string | Yes | Target field path |
848
+ | `decimals` | number | Yes | Decimals (e.g. 2) |
849
+ | `round` | select | No | Rounding |
850
+
851
+ **Example:**
852
+
853
+ ```typescript
854
+ { op: 'currency', args: {
855
+ "source": "sourceField",
856
+ "target": "targetField",
857
+ "decimals": 10
858
+ } }
859
+ ```
860
+
861
+ ### unit
862
+
863
+ Convert units (e.g. g<->kg, cm<->m)
864
+
865
+ | Argument | Type | Required | Description |
866
+ |----------|------|----------|-------------|
867
+ | `source` | string | Yes | Source field path |
868
+ | `target` | string | Yes | Target field path |
869
+ | `from` | select | Yes | From unit |
870
+
871
+ **Example:**
872
+
873
+ ```typescript
874
+ { op: 'unit', args: {
875
+ "source": "sourceField",
876
+ "target": "targetField",
877
+ "from": "value"
878
+ } }
879
+ ```
880
+
881
+ ### toNumber
882
+
883
+ Convert a string field to a number.
884
+
885
+ | Argument | Type | Required | Description |
886
+ |----------|------|----------|-------------|
887
+ | `source` | string | Yes | Source field path |
888
+ | `target` | string | No | Target field path |
889
+ | `default` | number | No | Value if conversion fails |
890
+
891
+ **Example:**
892
+
893
+ ```typescript
894
+ { op: 'toNumber', args: {
895
+ "source": "sourceField"
896
+ } }
897
+ ```
898
+
899
+ ### toString
900
+
901
+ Convert a value to a string.
902
+
903
+ | Argument | Type | Required | Description |
904
+ |----------|------|----------|-------------|
905
+ | `source` | string | Yes | Source field path |
906
+ | `target` | string | No | Target field path |
907
+
908
+ **Example:**
909
+
910
+ ```typescript
911
+ { op: 'toString', args: {
912
+ "source": "sourceField"
913
+ } }
914
+ ```
915
+
916
+ ### parseNumber
917
+
918
+ Parse a string to a number with locale-aware decimal/thousand separator handling.
919
+
920
+ | Argument | Type | Required | Description |
921
+ |----------|------|----------|-------------|
922
+ | `source` | string | Yes | Source field path |
923
+ | `target` | string | No | Defaults to source path |
924
+ | `locale` | string | No | e.g., |
925
+ | `default` | number | No | Value if parsing fails |
926
+
927
+ **Example:**
928
+
929
+ ```typescript
930
+ { op: 'parseNumber', args: {
931
+ "source": "sourceField"
932
+ } }
933
+ ```
934
+
935
+ ### formatNumber
936
+
937
+ Format a number as a localized string with optional currency or percent formatting.
938
+
939
+ | Argument | Type | Required | Description |
940
+ |----------|------|----------|-------------|
941
+ | `source` | string | Yes | Source field path |
942
+ | `target` | string | Yes | Target field path |
943
+ | `locale` | string | No | e.g., |
944
+ | `decimals` | number | No | Decimal places |
945
+ | `style` | select | No | Format style |
946
+
947
+ **Example:**
948
+
949
+ ```typescript
950
+ { op: 'formatNumber', args: {
951
+ "source": "sourceField",
952
+ "target": "targetField"
953
+ } }
954
+ ```
955
+
956
+ ### toCents
957
+
958
+ Convert a decimal amount to cents (minor currency units). Multiplies by 100 and rounds.
959
+
960
+ | Argument | Type | Required | Description |
961
+ |----------|------|----------|-------------|
962
+ | `source` | string | Yes | Field containing decimal amount (e.g., 19.99) |
963
+ | `target` | string | Yes | Field for cents amount (e.g., 1999) |
964
+ | `round` | select | No | Rounding |
965
+
966
+ **Example:**
967
+
968
+ ```typescript
969
+ { op: 'toCents', args: {
970
+ "source": "sourceField",
971
+ "target": "targetField"
972
+ } }
973
+ ```
974
+
975
+ ### round
976
+
977
+ Round a number to a specified number of decimal places.
978
+
979
+ | Argument | Type | Required | Description |
980
+ |----------|------|----------|-------------|
981
+ | `source` | string | Yes | Source field path |
982
+ | `target` | string | No | Defaults to source if not set |
983
+ | `decimals` | number | No | Default: 0 (round to integer) |
984
+ | `mode` | select | No | Rounding mode |
985
+
986
+ **Example:**
987
+
988
+ ```typescript
989
+ { op: 'round', args: {
990
+ "source": "sourceField"
991
+ } }
992
+ ```
993
+
994
+ ## String Operators
995
+
996
+ ### split
997
+
998
+ Split a string field into an array by delimiter.
999
+
1000
+ | Argument | Type | Required | Description |
1001
+ |----------|------|----------|-------------|
1002
+ | `source` | string | Yes | Source field path |
1003
+ | `target` | string | Yes | Target field path |
1004
+ | `delimiter` | string | Yes | Character(s) to split by |
1005
+ | `trim` | boolean | No | Trim whitespace from each item |
1006
+
1007
+ **Example:**
1008
+
1009
+ ```typescript
1010
+ { op: 'split', args: {
1011
+ "source": "sourceField",
1012
+ "target": "targetField",
1013
+ "delimiter": "value"
1014
+ } }
1015
+ ```
1016
+
1017
+ ### join
1018
+
1019
+ Join an array field into a string.
1020
+
1021
+ | Argument | Type | Required | Description |
1022
+ |----------|------|----------|-------------|
1023
+ | `source` | string | Yes | Source field path |
1024
+ | `target` | string | Yes | Target field path |
1025
+ | `delimiter` | string | Yes | Character(s) to join with |
1026
+
1027
+ **Example:**
1028
+
1029
+ ```typescript
1030
+ { op: 'join', args: {
1031
+ "source": "sourceField",
1032
+ "target": "targetField",
1033
+ "delimiter": "value"
1034
+ } }
1035
+ ```
1036
+
1037
+ ### trim
1038
+
1039
+ Trim whitespace from a string field.
1040
+
1041
+ | Argument | Type | Required | Description |
1042
+ |----------|------|----------|-------------|
1043
+ | `path` | string | Yes | Field path |
1044
+ | `mode` | select | No | Mode |
1045
+
1046
+ **Example:**
1047
+
1048
+ ```typescript
1049
+ { op: 'trim', args: {
1050
+ "path": "sourceField"
1051
+ } }
1052
+ ```
1053
+
1054
+ ### lowercase
1055
+
1056
+ Convert a string field to lowercase.
1057
+
1058
+ | Argument | Type | Required | Description |
1059
+ |----------|------|----------|-------------|
1060
+ | `path` | string | Yes | Field path |
1061
+
1062
+ **Example:**
1063
+
1064
+ ```typescript
1065
+ { op: 'lowercase', args: {
1066
+ "path": "sourceField"
1067
+ } }
1068
+ ```
1069
+
1070
+ ### uppercase
1071
+
1072
+ Convert a string field to uppercase.
1073
+
1074
+ | Argument | Type | Required | Description |
1075
+ |----------|------|----------|-------------|
1076
+ | `path` | string | Yes | Field path |
1077
+
1078
+ **Example:**
1079
+
1080
+ ```typescript
1081
+ { op: 'uppercase', args: {
1082
+ "path": "sourceField"
1083
+ } }
1084
+ ```
1085
+
1086
+ ### slugify
1087
+
1088
+ Generate a URL-friendly slug from a string field.
1089
+
1090
+ | Argument | Type | Required | Description |
1091
+ |----------|------|----------|-------------|
1092
+ | `source` | string | Yes | Source field path |
1093
+ | `target` | string | Yes | Target field path |
1094
+ | `separator` | string | No | Default: hyphen (-) |
1095
+
1096
+ **Example:**
1097
+
1098
+ ```typescript
1099
+ { op: 'slugify', args: {
1100
+ "source": "sourceField",
1101
+ "target": "targetField"
1102
+ } }
1103
+ ```
1104
+
1105
+ ### concat
1106
+
1107
+ Concatenate multiple string fields into one.
1108
+
1109
+ | Argument | Type | Required | Description |
1110
+ |----------|------|----------|-------------|
1111
+ | `sources` | json | Yes | Array of field paths to concatenate |
1112
+ | `target` | string | Yes | Target field path |
1113
+ | `separator` | string | No | Optional separator between values |
1114
+
1115
+ **Example:**
1116
+
1117
+ ```typescript
1118
+ { op: 'concat', args: {
1119
+ "sources": "value",
1120
+ "target": "targetField"
1121
+ } }
1122
+ ```
1123
+
1124
+ ### replace
1125
+
1126
+ Replace text in a string field.
1127
+
1128
+ | Argument | Type | Required | Description |
1129
+ |----------|------|----------|-------------|
1130
+ | `path` | string | Yes | Field path |
1131
+ | `search` | string | Yes | Search text |
1132
+ | `replacement` | string | Yes | Replacement |
1133
+ | `all` | boolean | No | Replace all occurrences |
1134
+
1135
+ **Example:**
1136
+
1137
+ ```typescript
1138
+ { op: 'replace', args: {
1139
+ "path": "sourceField",
1140
+ "search": "value",
1141
+ "replacement": "value"
1142
+ } }
1143
+ ```
1144
+
1145
+ ### extractRegex
1146
+
1147
+ Extract a value from a string field using a regular expression pattern with capture groups.
1148
+
1149
+ | Argument | Type | Required | Description |
1150
+ |----------|------|----------|-------------|
1151
+ | `source` | string | Yes | Source field path |
1152
+ | `target` | string | Yes | Target field path |
1153
+ | `pattern` | string | Yes | Regular expression pattern (without delimiters) |
1154
+ | `group` | number | No | Group index to extract (0=full match, 1+=capture groups). Default: 1 |
1155
+ | `flags` | string | No | e.g., |
1156
+
1157
+ **Example:**
1158
+
1159
+ ```typescript
1160
+ { op: 'extractRegex', args: {
1161
+ "source": "sourceField",
1162
+ "target": "targetField",
1163
+ "pattern": "value"
1164
+ } }
1165
+ ```
1166
+
1167
+ ### replaceRegex
1168
+
1169
+ Replace values in a string field using a regular expression pattern.
1170
+
1171
+ | Argument | Type | Required | Description |
1172
+ |----------|------|----------|-------------|
1173
+ | `path` | string | Yes | Field path |
1174
+ | `pattern` | string | Yes | Regular expression pattern (without delimiters) |
1175
+ | `replacement` | string | Yes | Replacement string (use $1, $2 for capture groups) |
1176
+ | `flags` | string | No | e.g., |
1177
+
1178
+ **Example:**
1179
+
1180
+ ```typescript
1181
+ { op: 'replaceRegex', args: {
1182
+ "path": "sourceField",
1183
+ "pattern": "value",
1184
+ "replacement": "value"
1185
+ } }
1186
+ ```
1187
+
1188
+ ### stripHtml
1189
+
1190
+ Remove HTML tags from a string field, preserving text content.
1191
+
1192
+ | Argument | Type | Required | Description |
1193
+ |----------|------|----------|-------------|
1194
+ | `source` | string | Yes | Source field path |
1195
+ | `target` | string | No | Defaults to source if not set |
1196
+
1197
+ **Example:**
1198
+
1199
+ ```typescript
1200
+ { op: 'stripHtml', args: {
1201
+ "source": "sourceField"
1202
+ } }
1203
+ ```
1204
+
1205
+ ### truncate
1206
+
1207
+ Truncate a string to a maximum length, optionally adding a suffix.
1208
+
1209
+ | Argument | Type | Required | Description |
1210
+ |----------|------|----------|-------------|
1211
+ | `source` | string | Yes | Source field path |
1212
+ | `target` | string | No | Defaults to source if not set |
1213
+ | `length` | number | Yes | Maximum length |
1214
+ | `suffix` | string | No | e.g., |
1215
+
1216
+ **Example:**
1217
+
1218
+ ```typescript
1219
+ { op: 'truncate', args: {
1220
+ "source": "sourceField",
1221
+ "length": 10
1222
+ } }
1223
+ ```
1224
+
1225
+ ## Scripting Operators
1226
+
1227
+ ### script
1228
+
1229
+ Execute inline JavaScript code to transform records. Use for complex logic that cannot be expressed with standard operators.
1230
+
1231
+ | Argument | Type | Required | Description |
1232
+ |----------|------|----------|-------------|
1233
+ | `code` | code | Yes | JavaScript code to execute. In single-record mode: receives `record`, `index`, `context`. In batch mode: receives `records`, `context`. Must return the transformed result. |
1234
+ | `batch` | boolean | No | If true, processes all records at once. If false (default), processes one record at a time. |
1235
+ | `timeout` | number | No | Maximum execution time in milliseconds (default: 5000) |
1236
+ | `failOnError` | boolean | No | If true, errors fail the entire step. If false, errors are logged and records skipped. |
1237
+ | `context` | json | No | Optional JSON data passed to the script as context.data |
1238
+
1239
+ **Example:**
1240
+
1241
+ ```typescript
1242
+ { op: 'script', args: {
1243
+ "code": "value"
1244
+ } }
1245
+ ```
1246
+
1247
+ ---
1248
+
1249
+ ## Custom Operators
1250
+
1251
+ You can register custom operators using the SDK. See [Custom Operators Guide](../guides/custom-operators.md) for details.