@oronts/vendure-data-hub-plugin 0.1.3 → 0.1.5

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 (491) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/README.md +30 -8
  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 +37 -17
  13. package/dashboard/components/shared/step-config/ValidateConfigComponent.tsx +2 -2
  14. package/dashboard/constants/ui-dimensions.ts +2 -1
  15. package/dashboard/constants/ui-states.ts +1 -0
  16. package/dashboard/gql/graphql.ts +13 -1
  17. package/dashboard/hooks/use-adapter-catalog.ts +4 -32
  18. package/dashboard/routes/connections/ConnectionDetail.tsx +7 -1
  19. package/dashboard/routes/pipelines/RunDetailsPanel.tsx +1 -1
  20. package/dashboard/routes/pipelines/components/PipelineActionButtons.tsx +3 -3
  21. package/dashboard/routes/pipelines/utils/pipeline-conversion.ts +3 -5
  22. package/dashboard/utils/formatters.ts +6 -4
  23. package/dist/dashboard/components/pipelines/PipelineEditor.tsx +159 -5
  24. package/dist/dashboard/components/pipelines/ReactFlowPipelineEditor.tsx +3 -3
  25. package/dist/dashboard/components/pipelines/shared/NodePropertiesPanel.tsx +42 -4
  26. package/dist/dashboard/components/pipelines/shared/StepListItem.tsx +2 -2
  27. package/dist/dashboard/components/shared/CodeEditor.tsx +289 -0
  28. package/dist/dashboard/components/shared/schema-form/fields/TextareaField.tsx +19 -4
  29. package/dist/dashboard/components/shared/step-config/AdapterSelector.tsx +2 -2
  30. package/dist/dashboard/components/shared/step-config/OperatorFieldInput.tsx +19 -0
  31. package/dist/dashboard/components/shared/step-config/RouteConfigComponent.tsx +218 -29
  32. package/dist/dashboard/components/shared/step-config/StepConfigPanel.tsx +37 -17
  33. package/dist/dashboard/components/shared/step-config/ValidateConfigComponent.tsx +2 -2
  34. package/dist/dashboard/constants/ui-dimensions.ts +2 -1
  35. package/dist/dashboard/constants/ui-states.ts +1 -0
  36. package/dist/dashboard/gql/graphql.ts +13 -1
  37. package/dist/dashboard/hooks/use-adapter-catalog.ts +4 -32
  38. package/dist/dashboard/routes/connections/ConnectionDetail.tsx +7 -1
  39. package/dist/dashboard/routes/pipelines/RunDetailsPanel.tsx +1 -1
  40. package/dist/dashboard/routes/pipelines/components/PipelineActionButtons.tsx +3 -3
  41. package/dist/dashboard/routes/pipelines/utils/pipeline-conversion.ts +3 -5
  42. package/dist/dashboard/utils/formatters.ts +6 -4
  43. package/dist/shared/types/adapter-config.types.d.ts +148 -4
  44. package/dist/shared/types/adapter-config.types.d.ts.map +1 -1
  45. package/dist/shared/types/index.d.ts +1 -1
  46. package/dist/shared/types/index.d.ts.map +1 -1
  47. package/dist/shared/types/index.js.map +1 -1
  48. package/dist/shared/types/loader.types.d.ts +4 -0
  49. package/dist/shared/types/loader.types.d.ts.map +1 -1
  50. package/dist/shared/types/step.types.d.ts +6 -0
  51. package/dist/shared/types/step.types.d.ts.map +1 -1
  52. package/dist/shared/types/trigger.types.d.ts +0 -4
  53. package/dist/shared/types/trigger.types.d.ts.map +1 -1
  54. package/dist/src/adapters/registry.d.ts.map +1 -1
  55. package/dist/src/adapters/registry.js +2 -1
  56. package/dist/src/adapters/registry.js.map +1 -1
  57. package/dist/src/api/controllers/webhook.controller.d.ts +10 -0
  58. package/dist/src/api/controllers/webhook.controller.d.ts.map +1 -1
  59. package/dist/src/api/controllers/webhook.controller.js +50 -10
  60. package/dist/src/api/controllers/webhook.controller.js.map +1 -1
  61. package/dist/src/api/resolvers/queue.resolver.d.ts +3 -1
  62. package/dist/src/api/resolvers/queue.resolver.d.ts.map +1 -1
  63. package/dist/src/api/resolvers/queue.resolver.js +6 -5
  64. package/dist/src/api/resolvers/queue.resolver.js.map +1 -1
  65. package/dist/src/api/schema/pipeline.schema.d.ts +1 -1
  66. package/dist/src/api/schema/pipeline.schema.d.ts.map +1 -1
  67. package/dist/src/api/schema/pipeline.schema.js +4 -0
  68. package/dist/src/api/schema/pipeline.schema.js.map +1 -1
  69. package/dist/src/api/schema/test.schema.d.ts +1 -1
  70. package/dist/src/api/schema/test.schema.d.ts.map +1 -1
  71. package/dist/src/api/schema/test.schema.js +5 -1
  72. package/dist/src/api/schema/test.schema.js.map +1 -1
  73. package/dist/src/bootstrap/seed-data.js +1 -1
  74. package/dist/src/bootstrap/seed-data.js.map +1 -1
  75. package/dist/src/constants/adapter-schema-options.d.ts +65 -0
  76. package/dist/src/constants/adapter-schema-options.d.ts.map +1 -1
  77. package/dist/src/constants/adapter-schema-options.js +91 -7
  78. package/dist/src/constants/adapter-schema-options.js.map +1 -1
  79. package/dist/src/constants/builtin-adapters.d.ts +1 -1
  80. package/dist/src/constants/builtin-adapters.d.ts.map +1 -1
  81. package/dist/src/constants/builtin-adapters.js +19 -1
  82. package/dist/src/constants/builtin-adapters.js.map +1 -1
  83. package/dist/src/constants/core.d.ts +10 -0
  84. package/dist/src/constants/core.d.ts.map +1 -1
  85. package/dist/src/constants/core.js +10 -0
  86. package/dist/src/constants/core.js.map +1 -1
  87. package/dist/src/constants/defaults/webhook-defaults.d.ts +2 -0
  88. package/dist/src/constants/defaults/webhook-defaults.d.ts.map +1 -1
  89. package/dist/src/constants/defaults/webhook-defaults.js +2 -0
  90. package/dist/src/constants/defaults/webhook-defaults.js.map +1 -1
  91. package/dist/src/constants/enum-metadata.d.ts.map +1 -1
  92. package/dist/src/constants/enum-metadata.js +3 -0
  93. package/dist/src/constants/enum-metadata.js.map +1 -1
  94. package/dist/src/constants/hook-stage-metadata.d.ts.map +1 -1
  95. package/dist/src/constants/hook-stage-metadata.js +42 -0
  96. package/dist/src/constants/hook-stage-metadata.js.map +1 -1
  97. package/dist/src/constants/services.d.ts.map +1 -1
  98. package/dist/src/constants/services.js +7 -0
  99. package/dist/src/constants/services.js.map +1 -1
  100. package/dist/src/constants/time.d.ts +2 -0
  101. package/dist/src/constants/time.d.ts.map +1 -1
  102. package/dist/src/constants/time.js +2 -0
  103. package/dist/src/constants/time.js.map +1 -1
  104. package/dist/src/data-hub.plugin.d.ts.map +1 -1
  105. package/dist/src/data-hub.plugin.js +2 -2
  106. package/dist/src/data-hub.plugin.js.map +1 -1
  107. package/dist/src/entities/pipeline/pipeline-run.entity.d.ts +4 -0
  108. package/dist/src/entities/pipeline/pipeline-run.entity.d.ts.map +1 -1
  109. package/dist/src/entities/pipeline/pipeline-run.entity.js +8 -0
  110. package/dist/src/entities/pipeline/pipeline-run.entity.js.map +1 -1
  111. package/dist/src/extractors/cdc/cdc.extractor.d.ts.map +1 -1
  112. package/dist/src/extractors/cdc/cdc.extractor.js +7 -2
  113. package/dist/src/extractors/cdc/cdc.extractor.js.map +1 -1
  114. package/dist/src/extractors/cdc/types.d.ts +1 -1
  115. package/dist/src/extractors/cdc/types.d.ts.map +1 -1
  116. package/dist/src/extractors/extractor-handler-registry.d.ts.map +1 -1
  117. package/dist/src/extractors/extractor-handler-registry.js +3 -0
  118. package/dist/src/extractors/extractor-handler-registry.js.map +1 -1
  119. package/dist/src/extractors/vendure-query/helpers.d.ts +9 -4
  120. package/dist/src/extractors/vendure-query/helpers.d.ts.map +1 -1
  121. package/dist/src/extractors/vendure-query/helpers.js +98 -32
  122. package/dist/src/extractors/vendure-query/helpers.js.map +1 -1
  123. package/dist/src/extractors/vendure-query/schema.d.ts.map +1 -1
  124. package/dist/src/extractors/vendure-query/schema.js +13 -0
  125. package/dist/src/extractors/vendure-query/schema.js.map +1 -1
  126. package/dist/src/feeds/generators/csv-feed.generator.d.ts.map +1 -1
  127. package/dist/src/feeds/generators/csv-feed.generator.js +5 -4
  128. package/dist/src/feeds/generators/csv-feed.generator.js.map +1 -1
  129. package/dist/src/feeds/generators/facebook-catalog.generator.d.ts.map +1 -1
  130. package/dist/src/feeds/generators/facebook-catalog.generator.js +83 -114
  131. package/dist/src/feeds/generators/facebook-catalog.generator.js.map +1 -1
  132. package/dist/src/feeds/generators/feed-constants.d.ts +1 -0
  133. package/dist/src/feeds/generators/feed-constants.d.ts.map +1 -1
  134. package/dist/src/feeds/generators/feed-constants.js +1 -0
  135. package/dist/src/feeds/generators/feed-constants.js.map +1 -1
  136. package/dist/src/feeds/generators/feed-helpers.d.ts +10 -8
  137. package/dist/src/feeds/generators/feed-helpers.d.ts.map +1 -1
  138. package/dist/src/feeds/generators/feed-helpers.js +24 -4
  139. package/dist/src/feeds/generators/feed-helpers.js.map +1 -1
  140. package/dist/src/feeds/generators/feed-item-builder.d.ts +59 -0
  141. package/dist/src/feeds/generators/feed-item-builder.d.ts.map +1 -0
  142. package/dist/src/feeds/generators/feed-item-builder.js +93 -0
  143. package/dist/src/feeds/generators/feed-item-builder.js.map +1 -0
  144. package/dist/src/feeds/generators/google-shopping.generator.d.ts.map +1 -1
  145. package/dist/src/feeds/generators/google-shopping.generator.js +52 -64
  146. package/dist/src/feeds/generators/google-shopping.generator.js.map +1 -1
  147. package/dist/src/feeds/generators/json-feed.generator.d.ts.map +1 -1
  148. package/dist/src/feeds/generators/json-feed.generator.js +4 -3
  149. package/dist/src/feeds/generators/json-feed.generator.js.map +1 -1
  150. package/dist/src/feeds/generators/xml-feed.generator.d.ts.map +1 -1
  151. package/dist/src/feeds/generators/xml-feed.generator.js +6 -5
  152. package/dist/src/feeds/generators/xml-feed.generator.js.map +1 -1
  153. package/dist/src/gql/generated.d.ts +13 -1
  154. package/dist/src/gql/generated.d.ts.map +1 -1
  155. package/dist/src/gql/generated.js.map +1 -1
  156. package/dist/src/index.d.ts +3 -1
  157. package/dist/src/index.d.ts.map +1 -1
  158. package/dist/src/index.js +7 -4
  159. package/dist/src/index.js.map +1 -1
  160. package/dist/src/loaders/asset/asset.loader.d.ts.map +1 -1
  161. package/dist/src/loaders/asset/asset.loader.js +5 -1
  162. package/dist/src/loaders/asset/asset.loader.js.map +1 -1
  163. package/dist/src/loaders/base/validation-builder.d.ts +128 -3
  164. package/dist/src/loaders/base/validation-builder.d.ts.map +1 -1
  165. package/dist/src/loaders/base/validation-builder.js +177 -6
  166. package/dist/src/loaders/base/validation-builder.js.map +1 -1
  167. package/dist/src/loaders/collection/collection.loader.d.ts.map +1 -1
  168. package/dist/src/loaders/collection/collection.loader.js +22 -1
  169. package/dist/src/loaders/collection/collection.loader.js.map +1 -1
  170. package/dist/src/loaders/collection/helpers.d.ts +16 -1
  171. package/dist/src/loaders/collection/helpers.d.ts.map +1 -1
  172. package/dist/src/loaders/collection/helpers.js +37 -0
  173. package/dist/src/loaders/collection/helpers.js.map +1 -1
  174. package/dist/src/loaders/customer/customer.loader.d.ts.map +1 -1
  175. package/dist/src/loaders/customer/customer.loader.js +13 -1
  176. package/dist/src/loaders/customer/customer.loader.js.map +1 -1
  177. package/dist/src/loaders/customer/helpers.d.ts +15 -3
  178. package/dist/src/loaders/customer/helpers.d.ts.map +1 -1
  179. package/dist/src/loaders/customer/helpers.js +188 -7
  180. package/dist/src/loaders/customer/helpers.js.map +1 -1
  181. package/dist/src/loaders/facet-value/facet-value.loader.d.ts.map +1 -1
  182. package/dist/src/loaders/facet-value/facet-value.loader.js +18 -0
  183. package/dist/src/loaders/facet-value/facet-value.loader.js.map +1 -1
  184. package/dist/src/loaders/facet-value/types.d.ts +1 -1
  185. package/dist/src/loaders/facet-value/types.js +1 -1
  186. package/dist/src/loaders/facet-value/types.js.map +1 -1
  187. package/dist/src/loaders/order/helpers.d.ts +16 -2
  188. package/dist/src/loaders/order/helpers.d.ts.map +1 -1
  189. package/dist/src/loaders/order/helpers.js +108 -0
  190. package/dist/src/loaders/order/helpers.js.map +1 -1
  191. package/dist/src/loaders/order/order.loader.d.ts +38 -0
  192. package/dist/src/loaders/order/order.loader.d.ts.map +1 -1
  193. package/dist/src/loaders/order/order.loader.js +238 -24
  194. package/dist/src/loaders/order/order.loader.js.map +1 -1
  195. package/dist/src/loaders/order/types.d.ts +10 -3
  196. package/dist/src/loaders/order/types.d.ts.map +1 -1
  197. package/dist/src/loaders/order/types.js +13 -2
  198. package/dist/src/loaders/order/types.js.map +1 -1
  199. package/dist/src/loaders/product/product.loader.d.ts.map +1 -1
  200. package/dist/src/loaders/product/product.loader.js +18 -2
  201. package/dist/src/loaders/product/product.loader.js.map +1 -1
  202. package/dist/src/loaders/product-variant/helpers.d.ts +20 -0
  203. package/dist/src/loaders/product-variant/helpers.d.ts.map +1 -0
  204. package/dist/src/loaders/product-variant/helpers.js +103 -0
  205. package/dist/src/loaders/product-variant/helpers.js.map +1 -0
  206. package/dist/src/loaders/product-variant/product-variant.loader.d.ts.map +1 -1
  207. package/dist/src/loaders/product-variant/product-variant.loader.js +76 -10
  208. package/dist/src/loaders/product-variant/product-variant.loader.js.map +1 -1
  209. package/dist/src/loaders/product-variant/types.d.ts +7 -0
  210. package/dist/src/loaders/product-variant/types.d.ts.map +1 -1
  211. package/dist/src/loaders/product-variant/types.js.map +1 -1
  212. package/dist/src/loaders/promotion/helpers.d.ts +29 -0
  213. package/dist/src/loaders/promotion/helpers.d.ts.map +1 -1
  214. package/dist/src/loaders/promotion/helpers.js +68 -0
  215. package/dist/src/loaders/promotion/helpers.js.map +1 -1
  216. package/dist/src/loaders/promotion/promotion.loader.d.ts.map +1 -1
  217. package/dist/src/loaders/promotion/promotion.loader.js +12 -2
  218. package/dist/src/loaders/promotion/promotion.loader.js.map +1 -1
  219. package/dist/src/loaders/shared-helpers.d.ts +42 -2
  220. package/dist/src/loaders/shared-helpers.d.ts.map +1 -1
  221. package/dist/src/loaders/shared-helpers.js +384 -5
  222. package/dist/src/loaders/shared-helpers.js.map +1 -1
  223. package/dist/src/operators/data/copy.operator.js +2 -2
  224. package/dist/src/operators/data/copy.operator.js.map +1 -1
  225. package/dist/src/operators/data/rename.operator.js +1 -1
  226. package/dist/src/operators/data/rename.operator.js.map +1 -1
  227. package/dist/src/operators/helpers.d.ts.map +1 -1
  228. package/dist/src/operators/helpers.js +11 -1
  229. package/dist/src/operators/helpers.js.map +1 -1
  230. package/dist/src/operators/operator-runtime-registry.d.ts +2 -2
  231. package/dist/src/operators/operator-runtime-registry.d.ts.map +1 -1
  232. package/dist/src/operators/operator-runtime-registry.js +1 -1
  233. package/dist/src/operators/operator-runtime-registry.js.map +1 -1
  234. package/dist/src/operators/script/script.operators.d.ts.map +1 -1
  235. package/dist/src/operators/script/script.operators.js +9 -3
  236. package/dist/src/operators/script/script.operators.js.map +1 -1
  237. package/dist/src/runtime/config-types.d.ts +6 -0
  238. package/dist/src/runtime/config-types.d.ts.map +1 -1
  239. package/dist/src/runtime/executor-helpers.d.ts +77 -0
  240. package/dist/src/runtime/executor-helpers.d.ts.map +1 -0
  241. package/dist/src/runtime/executor-helpers.js +143 -0
  242. package/dist/src/runtime/executor-helpers.js.map +1 -0
  243. package/dist/src/runtime/executors/export.executor.d.ts +3 -1
  244. package/dist/src/runtime/executors/export.executor.d.ts.map +1 -1
  245. package/dist/src/runtime/executors/export.executor.js +15 -3
  246. package/dist/src/runtime/executors/export.executor.js.map +1 -1
  247. package/dist/src/runtime/executors/exporters/export-handler-registry.d.ts.map +1 -1
  248. package/dist/src/runtime/executors/exporters/export-handler-registry.js +5 -0
  249. package/dist/src/runtime/executors/exporters/export-handler-registry.js.map +1 -1
  250. package/dist/src/runtime/executors/exporters/export-handler.types.d.ts +3 -0
  251. package/dist/src/runtime/executors/exporters/export-handler.types.d.ts.map +1 -1
  252. package/dist/src/runtime/executors/exporters/export-handler.types.js.map +1 -1
  253. package/dist/src/runtime/executors/exporters/export-helpers.d.ts +1 -0
  254. package/dist/src/runtime/executors/exporters/export-helpers.d.ts.map +1 -1
  255. package/dist/src/runtime/executors/exporters/export-helpers.js +32 -3
  256. package/dist/src/runtime/executors/exporters/export-helpers.js.map +1 -1
  257. package/dist/src/runtime/executors/exporters/http-export.handler.js +4 -4
  258. package/dist/src/runtime/executors/exporters/http-export.handler.js.map +1 -1
  259. package/dist/src/runtime/executors/extractors/file-extract.handler.d.ts.map +1 -1
  260. package/dist/src/runtime/executors/extractors/file-extract.handler.js +33 -13
  261. package/dist/src/runtime/executors/extractors/file-extract.handler.js.map +1 -1
  262. package/dist/src/runtime/executors/extractors/memory-extract.handler.d.ts.map +1 -1
  263. package/dist/src/runtime/executors/extractors/memory-extract.handler.js +17 -9
  264. package/dist/src/runtime/executors/extractors/memory-extract.handler.js.map +1 -1
  265. package/dist/src/runtime/executors/feed.executor.d.ts.map +1 -1
  266. package/dist/src/runtime/executors/feed.executor.js +11 -2
  267. package/dist/src/runtime/executors/feed.executor.js.map +1 -1
  268. package/dist/src/runtime/executors/feeds/feed-handler-registry.d.ts.map +1 -1
  269. package/dist/src/runtime/executors/feeds/feed-handler-registry.js +4 -0
  270. package/dist/src/runtime/executors/feeds/feed-handler-registry.js.map +1 -1
  271. package/dist/src/runtime/executors/gate.executor.d.ts +3 -1
  272. package/dist/src/runtime/executors/gate.executor.d.ts.map +1 -1
  273. package/dist/src/runtime/executors/gate.executor.js +47 -26
  274. package/dist/src/runtime/executors/gate.executor.js.map +1 -1
  275. package/dist/src/runtime/executors/loaders/channel-handler.d.ts +3 -1
  276. package/dist/src/runtime/executors/loaders/channel-handler.d.ts.map +1 -1
  277. package/dist/src/runtime/executors/loaders/channel-handler.js +14 -4
  278. package/dist/src/runtime/executors/loaders/channel-handler.js.map +1 -1
  279. package/dist/src/runtime/executors/loaders/collection-handler.d.ts +14 -2
  280. package/dist/src/runtime/executors/loaders/collection-handler.d.ts.map +1 -1
  281. package/dist/src/runtime/executors/loaders/collection-handler.js +93 -22
  282. package/dist/src/runtime/executors/loaders/collection-handler.js.map +1 -1
  283. package/dist/src/runtime/executors/loaders/customer-group-handler.d.ts.map +1 -1
  284. package/dist/src/runtime/executors/loaders/customer-group-handler.js +2 -27
  285. package/dist/src/runtime/executors/loaders/customer-group-handler.js.map +1 -1
  286. package/dist/src/runtime/executors/loaders/customer-handler.d.ts +6 -1
  287. package/dist/src/runtime/executors/loaders/customer-handler.d.ts.map +1 -1
  288. package/dist/src/runtime/executors/loaders/customer-handler.js +95 -13
  289. package/dist/src/runtime/executors/loaders/customer-handler.js.map +1 -1
  290. package/dist/src/runtime/executors/loaders/deletion-handler.d.ts +39 -0
  291. package/dist/src/runtime/executors/loaders/deletion-handler.d.ts.map +1 -0
  292. package/dist/src/runtime/executors/loaders/deletion-handler.js +414 -0
  293. package/dist/src/runtime/executors/loaders/deletion-handler.js.map +1 -0
  294. package/dist/src/runtime/executors/loaders/facet-handler.d.ts +18 -3
  295. package/dist/src/runtime/executors/loaders/facet-handler.d.ts.map +1 -1
  296. package/dist/src/runtime/executors/loaders/facet-handler.js +127 -26
  297. package/dist/src/runtime/executors/loaders/facet-handler.js.map +1 -1
  298. package/dist/src/runtime/executors/loaders/index.d.ts +2 -0
  299. package/dist/src/runtime/executors/loaders/index.d.ts.map +1 -1
  300. package/dist/src/runtime/executors/loaders/index.js +5 -1
  301. package/dist/src/runtime/executors/loaders/index.js.map +1 -1
  302. package/dist/src/runtime/executors/loaders/inventory-adjust-handler.d.ts.map +1 -1
  303. package/dist/src/runtime/executors/loaders/inventory-adjust-handler.js +2 -28
  304. package/dist/src/runtime/executors/loaders/inventory-adjust-handler.js.map +1 -1
  305. package/dist/src/runtime/executors/loaders/inventory-handler.d.ts +2 -1
  306. package/dist/src/runtime/executors/loaders/inventory-handler.d.ts.map +1 -1
  307. package/dist/src/runtime/executors/loaders/inventory-handler.js +8 -6
  308. package/dist/src/runtime/executors/loaders/inventory-handler.js.map +1 -1
  309. package/dist/src/runtime/executors/loaders/loader-handler-registry.d.ts.map +1 -1
  310. package/dist/src/runtime/executors/loaders/loader-handler-registry.js +117 -3
  311. package/dist/src/runtime/executors/loaders/loader-handler-registry.js.map +1 -1
  312. package/dist/src/runtime/executors/loaders/order-handler.d.ts +31 -3
  313. package/dist/src/runtime/executors/loaders/order-handler.d.ts.map +1 -1
  314. package/dist/src/runtime/executors/loaders/order-handler.js +194 -14
  315. package/dist/src/runtime/executors/loaders/order-handler.js.map +1 -1
  316. package/dist/src/runtime/executors/loaders/order-upsert-handler.d.ts +15 -0
  317. package/dist/src/runtime/executors/loaders/order-upsert-handler.d.ts.map +1 -0
  318. package/dist/src/runtime/executors/loaders/order-upsert-handler.js +89 -0
  319. package/dist/src/runtime/executors/loaders/order-upsert-handler.js.map +1 -0
  320. package/dist/src/runtime/executors/loaders/payment-method-handler.d.ts +11 -2
  321. package/dist/src/runtime/executors/loaders/payment-method-handler.d.ts.map +1 -1
  322. package/dist/src/runtime/executors/loaders/payment-method-handler.js +78 -33
  323. package/dist/src/runtime/executors/loaders/payment-method-handler.js.map +1 -1
  324. package/dist/src/runtime/executors/loaders/product-handler.d.ts +14 -0
  325. package/dist/src/runtime/executors/loaders/product-handler.d.ts.map +1 -1
  326. package/dist/src/runtime/executors/loaders/product-handler.js +91 -19
  327. package/dist/src/runtime/executors/loaders/product-handler.js.map +1 -1
  328. package/dist/src/runtime/executors/loaders/promotion-handler.d.ts +9 -2
  329. package/dist/src/runtime/executors/loaders/promotion-handler.d.ts.map +1 -1
  330. package/dist/src/runtime/executors/loaders/promotion-handler.js +115 -68
  331. package/dist/src/runtime/executors/loaders/promotion-handler.js.map +1 -1
  332. package/dist/src/runtime/executors/loaders/shared-lookups.d.ts +35 -1
  333. package/dist/src/runtime/executors/loaders/shared-lookups.d.ts.map +1 -1
  334. package/dist/src/runtime/executors/loaders/shared-lookups.js +102 -0
  335. package/dist/src/runtime/executors/loaders/shared-lookups.js.map +1 -1
  336. package/dist/src/runtime/executors/loaders/shipping-method-handler.d.ts +11 -6
  337. package/dist/src/runtime/executors/loaders/shipping-method-handler.d.ts.map +1 -1
  338. package/dist/src/runtime/executors/loaders/shipping-method-handler.js +168 -61
  339. package/dist/src/runtime/executors/loaders/shipping-method-handler.js.map +1 -1
  340. package/dist/src/runtime/executors/loaders/stock-location-handler.d.ts.map +1 -1
  341. package/dist/src/runtime/executors/loaders/stock-location-handler.js +2 -27
  342. package/dist/src/runtime/executors/loaders/stock-location-handler.js.map +1 -1
  343. package/dist/src/runtime/executors/loaders/variant-handler.d.ts.map +1 -1
  344. package/dist/src/runtime/executors/loaders/variant-handler.js +85 -12
  345. package/dist/src/runtime/executors/loaders/variant-handler.js.map +1 -1
  346. package/dist/src/runtime/executors/sink-handler-registry.d.ts +7 -11
  347. package/dist/src/runtime/executors/sink-handler-registry.d.ts.map +1 -1
  348. package/dist/src/runtime/executors/sink-handler-registry.js +374 -8
  349. package/dist/src/runtime/executors/sink-handler-registry.js.map +1 -1
  350. package/dist/src/runtime/executors/sink.executor.d.ts +1 -0
  351. package/dist/src/runtime/executors/sink.executor.d.ts.map +1 -1
  352. package/dist/src/runtime/executors/sink.executor.js +82 -12
  353. package/dist/src/runtime/executors/sink.executor.js.map +1 -1
  354. package/dist/src/runtime/executors/transform.executor.d.ts.map +1 -1
  355. package/dist/src/runtime/executors/transform.executor.js +31 -2
  356. package/dist/src/runtime/executors/transform.executor.js.map +1 -1
  357. package/dist/src/runtime/orchestration/graph-executor.d.ts.map +1 -1
  358. package/dist/src/runtime/orchestration/graph-executor.js +3 -2
  359. package/dist/src/runtime/orchestration/graph-executor.js.map +1 -1
  360. package/dist/src/runtime/orchestration/helpers.d.ts +4 -1
  361. package/dist/src/runtime/orchestration/helpers.d.ts.map +1 -1
  362. package/dist/src/runtime/orchestration/helpers.js +7 -2
  363. package/dist/src/runtime/orchestration/helpers.js.map +1 -1
  364. package/dist/src/runtime/orchestration/linear-executor.d.ts.map +1 -1
  365. package/dist/src/runtime/orchestration/linear-executor.js +3 -2
  366. package/dist/src/runtime/orchestration/linear-executor.js.map +1 -1
  367. package/dist/src/runtime/orchestration/replay-executor.d.ts.map +1 -1
  368. package/dist/src/runtime/orchestration/replay-executor.js +3 -2
  369. package/dist/src/runtime/orchestration/replay-executor.js.map +1 -1
  370. package/dist/src/runtime/orchestration/step-strategies/export-step.strategy.d.ts.map +1 -1
  371. package/dist/src/runtime/orchestration/step-strategies/export-step.strategy.js +12 -12
  372. package/dist/src/runtime/orchestration/step-strategies/export-step.strategy.js.map +1 -1
  373. package/dist/src/runtime/orchestration/step-strategies/feed-step.strategy.d.ts.map +1 -1
  374. package/dist/src/runtime/orchestration/step-strategies/feed-step.strategy.js +12 -12
  375. package/dist/src/runtime/orchestration/step-strategies/feed-step.strategy.js.map +1 -1
  376. package/dist/src/runtime/orchestration/step-strategies/load-step.strategy.js +2 -2
  377. package/dist/src/runtime/orchestration/step-strategies/load-step.strategy.js.map +1 -1
  378. package/dist/src/runtime/orchestration/step-strategies/sink-step.strategy.d.ts.map +1 -1
  379. package/dist/src/runtime/orchestration/step-strategies/sink-step.strategy.js +12 -12
  380. package/dist/src/runtime/orchestration/step-strategies/sink-step.strategy.js.map +1 -1
  381. package/dist/src/runtime/orchestration/step-strategies/step-dispatcher.d.ts.map +1 -1
  382. package/dist/src/runtime/orchestration/step-strategies/step-dispatcher.js +4 -3
  383. package/dist/src/runtime/orchestration/step-strategies/step-dispatcher.js.map +1 -1
  384. package/dist/src/runtime/orchestration/step-strategies/transform-step.strategy.js +4 -4
  385. package/dist/src/runtime/orchestration/step-strategies/transform-step.strategy.js.map +1 -1
  386. package/dist/src/runtime/orchestration/types.d.ts +1 -0
  387. package/dist/src/runtime/orchestration/types.d.ts.map +1 -1
  388. package/dist/src/runtime/utils.d.ts.map +1 -1
  389. package/dist/src/runtime/utils.js +8 -1
  390. package/dist/src/runtime/utils.js.map +1 -1
  391. package/dist/src/sdk/adapters/queue/index.d.ts +1 -0
  392. package/dist/src/sdk/adapters/queue/index.d.ts.map +1 -1
  393. package/dist/src/sdk/adapters/queue/index.js +1 -0
  394. package/dist/src/sdk/adapters/queue/index.js.map +1 -1
  395. package/dist/src/sdk/adapters/queue/internal.adapter.d.ts +32 -0
  396. package/dist/src/sdk/adapters/queue/internal.adapter.d.ts.map +1 -0
  397. package/dist/src/sdk/adapters/queue/internal.adapter.js +68 -0
  398. package/dist/src/sdk/adapters/queue/internal.adapter.js.map +1 -0
  399. package/dist/src/sdk/adapters/queue/queue-adapter.registry.d.ts.map +1 -1
  400. package/dist/src/sdk/adapters/queue/queue-adapter.registry.js +3 -0
  401. package/dist/src/sdk/adapters/queue/queue-adapter.registry.js.map +1 -1
  402. package/dist/src/sdk/adapters/queue/rabbitmq.adapter.d.ts.map +1 -1
  403. package/dist/src/sdk/adapters/queue/rabbitmq.adapter.js +2 -1
  404. package/dist/src/sdk/adapters/queue/rabbitmq.adapter.js.map +1 -1
  405. package/dist/src/sdk/constants.d.ts +2 -2
  406. package/dist/src/sdk/constants.d.ts.map +1 -1
  407. package/dist/src/sdk/dsl/pipeline-builder.d.ts +8 -2
  408. package/dist/src/sdk/dsl/pipeline-builder.d.ts.map +1 -1
  409. package/dist/src/sdk/dsl/pipeline-builder.js +115 -19
  410. package/dist/src/sdk/dsl/pipeline-builder.js.map +1 -1
  411. package/dist/src/sdk/dsl/step-configs.d.ts +73 -7
  412. package/dist/src/sdk/dsl/step-configs.d.ts.map +1 -1
  413. package/dist/src/services/events/consumer-discovery.d.ts.map +1 -1
  414. package/dist/src/services/events/consumer-discovery.js +13 -11
  415. package/dist/src/services/events/consumer-discovery.js.map +1 -1
  416. package/dist/src/services/events/consumer-lifecycle.d.ts.map +1 -1
  417. package/dist/src/services/events/consumer-lifecycle.js +19 -15
  418. package/dist/src/services/events/consumer-lifecycle.js.map +1 -1
  419. package/dist/src/services/events/event-trigger.service.d.ts.map +1 -1
  420. package/dist/src/services/events/event-trigger.service.js +8 -3
  421. package/dist/src/services/events/event-trigger.service.js.map +1 -1
  422. package/dist/src/services/events/hook.service.d.ts.map +1 -1
  423. package/dist/src/services/events/hook.service.js +7 -3
  424. package/dist/src/services/events/hook.service.js.map +1 -1
  425. package/dist/src/services/events/message-processing.d.ts.map +1 -1
  426. package/dist/src/services/events/message-processing.js +13 -8
  427. package/dist/src/services/events/message-processing.js.map +1 -1
  428. package/dist/src/services/logger/datahub-logger.d.ts +7 -0
  429. package/dist/src/services/logger/datahub-logger.d.ts.map +1 -1
  430. package/dist/src/services/logger/datahub-logger.js +9 -0
  431. package/dist/src/services/logger/datahub-logger.js.map +1 -1
  432. package/dist/src/services/pipeline/pipeline-runner.service.d.ts +3 -1
  433. package/dist/src/services/pipeline/pipeline-runner.service.d.ts.map +1 -1
  434. package/dist/src/services/pipeline/pipeline-runner.service.js +14 -4
  435. package/dist/src/services/pipeline/pipeline-runner.service.js.map +1 -1
  436. package/dist/src/services/pipeline/pipeline.service.d.ts.map +1 -1
  437. package/dist/src/services/pipeline/pipeline.service.js +8 -2
  438. package/dist/src/services/pipeline/pipeline.service.js.map +1 -1
  439. package/dist/src/services/storage/retention.service.d.ts.map +1 -1
  440. package/dist/src/services/storage/retention.service.js +22 -0
  441. package/dist/src/services/storage/retention.service.js.map +1 -1
  442. package/dist/src/services/testing/step-test.service.d.ts.map +1 -1
  443. package/dist/src/services/testing/step-test.service.js +17 -1
  444. package/dist/src/services/testing/step-test.service.js.map +1 -1
  445. package/dist/src/services/validation/definition-validation.service.d.ts.map +1 -1
  446. package/dist/src/services/validation/definition-validation.service.js +4 -1
  447. package/dist/src/services/validation/definition-validation.service.js.map +1 -1
  448. package/dist/src/services/validation/trigger-validation.d.ts.map +1 -1
  449. package/dist/src/services/validation/trigger-validation.js +79 -12
  450. package/dist/src/services/validation/trigger-validation.js.map +1 -1
  451. package/dist/src/types/index.d.ts +1 -0
  452. package/dist/src/types/index.d.ts.map +1 -1
  453. package/dist/src/types/index.js.map +1 -1
  454. package/dist/src/types/loader-configs.d.ts +1071 -0
  455. package/dist/src/types/loader-configs.d.ts.map +1 -0
  456. package/dist/src/types/loader-configs.js +54 -0
  457. package/dist/src/types/loader-configs.js.map +1 -0
  458. package/dist/src/types/step-configs.d.ts +14 -5
  459. package/dist/src/types/step-configs.d.ts.map +1 -1
  460. package/dist/src/types/step-configs.js +3 -0
  461. package/dist/src/types/step-configs.js.map +1 -1
  462. package/dist/src/utils/code-security.utils.d.ts +18 -0
  463. package/dist/src/utils/code-security.utils.d.ts.map +1 -1
  464. package/dist/src/utils/code-security.utils.js +125 -9
  465. package/dist/src/utils/code-security.utils.js.map +1 -1
  466. package/dist/src/validation/pipeline-definition.validator.js +2 -1
  467. package/dist/src/validation/pipeline-definition.validator.js.map +1 -1
  468. package/docs/developer-guide/README.md +2 -0
  469. package/docs/developer-guide/dsl/pipeline-builder.md +12 -0
  470. package/docs/developer-guide/extending/README.md +230 -10
  471. package/docs/developer-guide/extending/custom-sinks.md +87 -0
  472. package/docs/developer-guide/extending/events.md +4 -1
  473. package/docs/examples/validation-error-messages.md +246 -0
  474. package/docs/guides/multi-channel.md +1190 -0
  475. package/docs/guides/multi-currency.md +881 -0
  476. package/docs/guides/multi-entity.md +597 -0
  477. package/docs/guides/multi-language.md +957 -0
  478. package/docs/reference/README.md +11 -4
  479. package/docs/reference/extractors.md +30 -0
  480. package/docs/reference/loaders.md +359 -21
  481. package/docs/reference/operators-complete.md +1251 -0
  482. package/docs/reference/operators.md +36 -2
  483. package/docs/reference/sinks.md +7 -6
  484. package/docs/reference/step-types.md +12 -5
  485. package/docs/user-guide/pipelines.md +82 -13
  486. package/package.json +1 -1
  487. package/shared/types/adapter-config.types.ts +162 -2
  488. package/shared/types/index.ts +12 -0
  489. package/shared/types/loader.types.ts +4 -0
  490. package/shared/types/step.types.ts +6 -0
  491. package/shared/types/trigger.types.ts +0 -4
@@ -13,9 +13,10 @@ Complete reference documentation for all Data Hub adapters.
13
13
  1. [Step Types](./step-types.md) - All pipeline step types
14
14
  2. [Extractors](./extractors.md) - All data extractors
15
15
  3. [Loaders](./loaders.md) - All entity loaders
16
- 4. [Operators](./operators.md) - All transform operators
17
- 5. [Feed Generators](./feeds.md) - Product feed generators
18
- 6. [Search Sinks](./sinks.md) - Search engine integrations
16
+ 4. [Operators](./operators.md) - All transform operators (curated guide)
17
+ 5. [**Operators Complete**](./operators-complete.md) - **Auto-generated complete operator reference (all 61 operators)**
18
+ 6. [Feed Generators](./feeds.md) - Product feed generators
19
+ 7. [Search Sinks](./sinks.md) - Search engine integrations
19
20
 
20
21
  ## Quick Reference
21
22
 
@@ -33,7 +34,7 @@ Complete reference documentation for all Data Hub adapters.
33
34
  | `cdc` | Change Data Capture - poll database tables for changes |
34
35
  | `webhook` | Incoming webhook payloads |
35
36
 
36
- ### Loaders (22 - 20 Entity + 2 External API)
37
+ ### Loaders (24 - 16 Entity + 4 Order Operations + 1 Deletion + 1 Inventory + 2 External API)
37
38
 
38
39
  | Code | Description |
39
40
  |------|-------------|
@@ -45,6 +46,7 @@ Complete reference documentation for all Data Hub adapters.
45
46
  | `facetUpsert` | Create/update facets for categorization |
46
47
  | `facetValueUpsert` | Create/update facet values within facets |
47
48
  | `promotionUpsert` | Create/update promotions with conditions and actions |
49
+ | `orderUpsert` | Order create/update for migrations with state transitions and line management |
48
50
  | `orderNote` | Add notes to existing orders |
49
51
  | `orderTransition` | Transition order states |
50
52
  | `applyCoupon` | Apply coupon codes to orders |
@@ -57,6 +59,7 @@ Complete reference documentation for all Data Hub adapters.
57
59
  | `taxRateUpsert` | Create/update tax rates with category and zone |
58
60
  | `paymentMethodUpsert` | Create/update payment methods with handlers |
59
61
  | `channelUpsert` | Create/update channels with currencies and languages |
62
+ | `entityDeletion` | Delete any of 13 entity types by slug, SKU, ID, code, email, or name |
60
63
  | `restPost` | POST data to custom REST endpoints |
61
64
  | `graphqlMutation` | Send records as GraphQL mutations to external APIs |
62
65
 
@@ -96,3 +99,7 @@ Complete reference documentation for all Data Hub adapters.
96
99
  | `typesense` | Typesense |
97
100
  | `queueProducer` | RabbitMQ Queue |
98
101
  | `webhook` | HTTP Webhook (POST/PUT/PATCH) |
102
+
103
+ ### API Notes
104
+
105
+ - **`startDataHubPipelineRun`:** This mutation does not accept seed records. To provide seed data to a pipeline, use the webhook trigger (records passed in the request body) or the `dataHubTestWithSeedData` mutation for dry-run testing.
@@ -13,6 +13,7 @@ Complete reference for all data extractors.
13
13
  - [Database Extractor](#database-extractor) - Query SQL databases with pagination
14
14
  - [Webhook Extractor](#webhook-extractor) - Receive data from webhook payloads
15
15
  - [CDC (Change Data Capture) Extractor](#cdc-change-data-capture-extractor) - Poll database tables for changes
16
+ - [In-Memory Extractor](#in-memory-extractor) - Inline data for testing and seed data
16
17
  - [Quick Reference](#quick-reference) - Summary table of all extractors
17
18
 
18
19
  ---
@@ -545,6 +546,34 @@ Poll a database table for changes using a timestamp or version column. Tracks IN
545
546
 
546
547
  ---
547
548
 
549
+ ## In-Memory Extractor
550
+
551
+ Code: `inMemory`
552
+
553
+ Reads records directly from inline data provided in the step configuration. Useful for testing, seed data, and webhook-triggered pipelines where data is passed at runtime.
554
+
555
+ **Note:** The inMemory extractor reads records from the `data` field (not `records`). The `data` field accepts an array of objects or a single object (which will be wrapped in an array).
556
+
557
+ ### Configuration
558
+
559
+ | Field | Type | Required | Description |
560
+ |-------|------|----------|-------------|
561
+ | `data` | array/object | Yes | Inline records to extract. An array of objects, or a single object. |
562
+
563
+ ### Example
564
+
565
+ ```typescript
566
+ .extract('inline-data', {
567
+ adapterCode: 'inMemory',
568
+ data: [
569
+ { sku: 'ABC-001', name: 'Widget A', price: 1999 },
570
+ { sku: 'ABC-002', name: 'Widget B', price: 2999 },
571
+ ],
572
+ })
573
+ ```
574
+
575
+ ---
576
+
548
577
  ## Quick Reference
549
578
 
550
579
  | Code | Source Type | Use Case |
@@ -558,6 +587,7 @@ Poll a database table for changes using a timestamp or version column. Tracks IN
558
587
  | `database` | SQL Database | Query PostgreSQL, MySQL, SQLite, MSSQL, Oracle databases |
559
588
  | `cdc` | CDC | Poll database tables for changes using timestamp or version tracking |
560
589
  | `webhook` | Webhook | Receive data from webhook payloads |
590
+ | `inMemory` | In-Memory | Inline data for testing, seed data, and webhook payloads |
561
591
 
562
592
  ### Authentication Options
563
593
 
@@ -1,11 +1,13 @@
1
1
  # Loaders Reference
2
2
 
3
- Complete reference for all built-in loaders: 16 entity loaders and 6 operation loaders.
3
+ Complete reference for all 24 built-in loaders: 16 entity loaders, 4 order operation loaders, 1 entity deletion loader, 1 inventory adjust loader, and 2 external system loaders. Supports multi-language translations, multi-channel assignment, multi-currency pricing, custom fields, and entity deletion for 13 entity types.
4
+
5
+ > **New**: [Enhanced validation error messages](../examples/validation-error-messages.md) with record identifiers and line numbers for better debugging.
4
6
 
5
7
  ## Table of Contents
6
8
 
7
9
  ### [Common Configuration](#common-configuration)
8
- - [Loader Adapter Codes](#loader-adapter-codes) - Complete list of all 22 loaders
10
+ - [Loader Adapter Codes](#loader-adapter-codes) - Complete list of all 24 loaders
9
11
  - [Load Strategies](#load-strategies) - CREATE, UPDATE, UPSERT, MERGE, SOFT_DELETE, HARD_DELETE
10
12
  - [Conflict Strategies](#conflict-strategies) - SOURCE_WINS, VENDURE_WINS, MERGE, MANUAL_QUEUE
11
13
 
@@ -15,6 +17,7 @@ Complete reference for all built-in loaders: 16 entity loaders and 6 operation l
15
17
  - [Customer Loader](#customer-loader) - Create/update customers with addresses and groups
16
18
  - [Collection Loader](#collection-loader) - Create/update collections with parent relationships
17
19
  - [Inventory Loader](#inventory-loader) - Update stock levels by SKU
20
+ - [Entity Deletion Loader](#entity-deletion-loader) - Delete products, variants, collections, promotions, shipping methods, customers, payment methods, facets, facet values, customer groups, tax rates, assets, stock locations
18
21
  - [Additional Loaders](#additional-loaders) - Order, Customer Group, Facet, Facet Value, Asset, Promotion, Shipping Method, Stock Location, Tax Rate, Payment Method, Channel
19
22
 
20
23
  ### External System Loaders
@@ -22,7 +25,7 @@ Complete reference for all built-in loaders: 16 entity loaders and 6 operation l
22
25
  - [Using Sinks for External Systems](#using-sinks-for-external-systems) - Alternative for search engines and message queues
23
26
 
24
27
  ### [Quick Reference](#quick-reference-1)
25
- - Summary table of all 22 loaders with descriptions
28
+ - Summary table of all 24 loaders with descriptions
26
29
  - Required permissions for each loader
27
30
 
28
31
  ---
@@ -54,16 +57,18 @@ All loaders are configured using the `.load()` step in the pipeline DSL:
54
57
  | `assetAttach` | Asset | Attach existing assets to entities |
55
58
  | `promotionUpsert` | Promotion | Promotions with conditions and actions |
56
59
  | `stockAdjust` | Inventory | Adjust stock levels by SKU and location |
60
+ | `orderUpsert` | Order | Create/update orders with lines and addresses (migration use only) |
57
61
  | `orderNote` | Order | Add notes to orders |
58
62
  | `orderTransition` | Order | Transition order states |
59
63
  | `applyCoupon` | Order | Apply coupon codes to orders |
60
64
  | `taxRateUpsert` | Tax Rate | Tax rates with zone and category mappings |
61
65
  | `paymentMethodUpsert` | Payment Method | Payment methods with handler configuration |
62
66
  | `channelUpsert` | Channel | Channels with currency and language settings |
63
- | `shippingMethodUpsert` | Shipping Method | Create/update shipping methods with calculators |
67
+ | `shippingMethodUpsert` | Shipping Method | Create/update shipping methods with calculators, translations, channels |
64
68
  | `customerGroupUpsert` | Customer Group | Create/update customer groups with member assignments |
65
69
  | `stockLocationUpsert` | Stock Location | Create/update stock locations for inventory |
66
70
  | `inventoryAdjust` | Inventory | Adjust inventory levels by SKU and location |
71
+ | `entityDeletion` | Multiple | Delete products, variants, collections, promotions, shipping methods, customers, payment methods, facets, facet values, customer groups, tax rates, assets, or stock locations |
67
72
  | `restPost` | Custom | POST data to REST endpoints |
68
73
  | `graphqlMutation` | GraphQL | Send records as GraphQL mutations to external APIs |
69
74
 
@@ -108,14 +113,69 @@ Create or update products with slug-based lookup, facets, and assets.
108
113
  | `featuredAssetUrl` | string | No | URL of the featured/main image |
109
114
  | `customFields` | object | No | Custom field values |
110
115
 
116
+ ### Config Fields
117
+
118
+ | Config Field | Type | Required | Description |
119
+ |-------------|------|----------|-------------|
120
+ | `channel` | string | No | Target channel code |
121
+ | `strategy` | string | No | Load strategy: `UPSERT` (default), `CREATE`, or `UPDATE` |
122
+ | `conflictStrategy` | string | No | Conflict strategy: `SOURCE_WINS` (default), `VENDURE_WINS`, or `MERGE` |
123
+ | `nameField` | string | No | Record field for product name (default: `"name"`) |
124
+ | `slugField` | string | No | Record field for slug (default: `"slug"`) |
125
+ | `descriptionField` | string | No | Record field for description (default: `"description"`) |
126
+ | `enabledField` | string | No | Record field for enabled/published flag (default: `"enabled"`) |
127
+ | `channelsField` | string | No | Record field containing channel codes (array or comma-separated) for dynamic per-record channel assignment |
128
+ | `translationsField` | string | No | Record field containing multi-language translations. Overrides name/slug/description fields. Supports array format `[{ languageCode, name, slug?, description? }]` or object map `{ en: { name, slug?, description? } }` |
129
+ | `skuField` | string | No | Record field for default variant SKU |
130
+ | `priceField` | string | No | Record field for default variant price |
131
+ | `customFieldsField` | string | No | Record field containing custom fields object (default: `"customFields"`) |
132
+ | `createVariants` | boolean | No | Create/update a default variant alongside the product (default: `true`). Set to `false` when variants are handled by a separate `variantUpsert` step |
133
+ | `facetValuesMode` | string | No | How to handle facet value assignments: `REPLACE_ALL` (default - replace all facets), `MERGE` (add new, keep existing), `REMOVE` (remove specified facets), `SKIP` (don't touch facets) |
134
+
135
+ ### Nested Entity Modes
136
+
137
+ **facetValuesMode** - Controls how facet values are assigned to products:
138
+
139
+ | Mode | Behavior | Use Case |
140
+ |------|----------|----------|
141
+ | `REPLACE_ALL` | Replace all existing facet values with new list (default) | Source system is single source of truth for facet assignments |
142
+ | `MERGE` | Add new facet values, keep existing ones | Multiple data sources contribute facets (e.g., PIM + manual admin) |
143
+ | `REMOVE` | Remove specified facet values from product | Cleaning up discontinued or incorrect facet assignments |
144
+ | `SKIP` | Don't modify facet values at all | Partial updates - only updating product name/description/price |
145
+
146
+ **Example - Merge facets from multiple sources:**
147
+ ```typescript
148
+ .load('enrich-products-from-pim', {
149
+ adapterCode: 'productUpsert',
150
+ strategy: 'UPDATE',
151
+ facetValuesMode: 'MERGE', // Add new facets, keep existing
152
+ })
153
+
154
+ // Run 1 assigns: [color-red, size-large]
155
+ // Run 2 adds: [material-cotton]
156
+ // Result: [color-red, size-large, material-cotton] ✅
157
+ ```
158
+
159
+ **Example - Skip facets for partial updates:**
160
+ ```typescript
161
+ .load('update-product-descriptions', {
162
+ adapterCode: 'productUpsert',
163
+ strategy: 'UPDATE',
164
+ descriptionField: 'newDescription',
165
+ facetValuesMode: 'SKIP', // Don't touch facets
166
+ })
167
+ ```
168
+
111
169
  ### Example
112
170
 
113
171
  ```typescript
114
172
  .load('import-products', {
115
173
  adapterCode: 'productUpsert',
116
174
  strategy: 'UPSERT',
117
- matchField: 'slug',
118
175
  conflictStrategy: 'SOURCE_WINS',
176
+ channelsField: 'channels',
177
+ translationsField: 'translations',
178
+ createVariants: false,
119
179
  })
120
180
  ```
121
181
 
@@ -149,14 +209,43 @@ Update product variants by SKU with multi-currency prices and auto-create option
149
209
  | Config Field | Type | Required | Description |
150
210
  |-------------|------|----------|-------------|
151
211
  | `skuField` | string | Yes | Record field containing the SKU |
152
- | `priceField` | string | No | Record field for price in minor units |
153
- | `priceByCurrencyField` | string | No | Record field for multi-currency prices object |
154
212
  | `nameField` | string | No | Record field for variant name |
213
+ | `priceField` | string | No | Record field for price (major units, auto-converted to minor) |
214
+ | `priceByCurrencyField` | string | No | Record field for multi-currency prices object (e.g. `{ USD: 19.99, EUR: 17.50 }`) |
215
+ | `enabledField` | string | No | Record field for variant enabled/published flag (default: `"enabled"`) |
216
+ | `channelsField` | string | No | Record field containing channel codes (array or comma-separated) for dynamic per-record channel assignment |
217
+ | `translationsField` | string | No | Record field containing multi-language translations. Overrides name field. Supports array `[{ languageCode, name }]` or object map `{ en: { name }, de: { name } }` |
155
218
  | `customFieldsField` | string | No | Record field containing custom fields object |
156
219
  | `optionGroupsField` | string | No | Record field containing option group key-value pairs (auto-creates groups) |
157
220
  | `optionIdsField` | string | No | Record field containing pre-existing Vendure option IDs array |
158
221
  | `optionCodesField` | string | No | Record field containing option codes array for lookup |
222
+ | `taxCategoryName` | string | No | Tax category name to assign |
223
+ | `stockField` | string | No | Record field for stock on hand |
224
+ | `stockByLocationField` | string | No | Record field for stock by location map |
159
225
  | `strategy` | string | No | Load strategy: `UPSERT` (default), `CREATE`, or `UPDATE` |
226
+ | `facetValuesMode` | string | No | How to handle facet value assignments: `REPLACE_ALL` (default - replace all facets), `MERGE` (add new, keep existing), `REMOVE` (remove specified facets), `SKIP` (don't touch facets) |
227
+
228
+ ### Nested Entity Modes
229
+
230
+ **facetValuesMode** - Controls how facet values are assigned to variants (same modes as Product):
231
+
232
+ | Mode | Behavior | Use Case |
233
+ |------|----------|----------|
234
+ | `REPLACE_ALL` | Replace all existing facet values with new list (default) | Source system controls all facet assignments |
235
+ | `MERGE` | Add new facet values, keep existing ones | Incremental facet additions from multiple sources |
236
+ | `REMOVE` | Remove specified facet values from variant | Removing discontinued attributes |
237
+ | `SKIP` | Don't modify facet values at all | Partial updates - only updating price/stock |
238
+
239
+ **Example - Update prices without touching facets:**
240
+ ```typescript
241
+ .load('update-variant-prices', {
242
+ adapterCode: 'variantUpsert',
243
+ strategy: 'UPDATE',
244
+ skuField: 'sku',
245
+ priceField: 'newPrice',
246
+ facetValuesMode: 'SKIP', // Don't modify facets
247
+ })
248
+ ```
160
249
 
161
250
  ### Option Group Assignment
162
251
 
@@ -213,13 +302,64 @@ Create or update customers with addresses and group memberships.
213
302
  | `addresses` | array | No | Array of address objects |
214
303
  | `groupCodes` | string[] | No | Array of customer group codes |
215
304
 
216
- ### Example
305
+ ### Config Fields
306
+
307
+ | Config Field | Type | Required | Description |
308
+ |-------------|------|----------|-------------|
309
+ | `strategy` | string | No | Load strategy: `UPSERT` (default), `CREATE`, or `UPDATE` |
310
+ | `matchField` | string | No | Field to match existing customers (default: `emailAddress`) |
311
+ | `addressesMode` | string | No | How to handle addresses: `UPSERT_BY_MATCH` (default), `REPLACE_ALL`, `APPEND_ONLY`, `UPDATE_BY_ID`, `SKIP` |
312
+ | `addressMatchFields` | string | No | Comma-separated fields for address matching (default: `streetLine1,city,countryCode`) |
313
+ | `groupsMode` | string | No | How to handle customer groups: `REPLACE_ALL` (default), `MERGE`, `REMOVE`, `SKIP` |
314
+
315
+ ### Nested Entity Modes
316
+
317
+ **addressesMode** - Controls how customer addresses are managed:
318
+
319
+ | Mode | Behavior | Use Case |
320
+ |------|----------|----------|
321
+ | `UPSERT_BY_MATCH` | Match by fields, update if exists, create if not (default, **recommended**) | **Prevents duplicate addresses** - most common use case |
322
+ | `REPLACE_ALL` | Delete all existing addresses, create new from source | Source system is single source of truth for addresses |
323
+ | `APPEND_ONLY` | Always create new addresses (allows duplicates) | Address history tracking (rare - usually want UPSERT) |
324
+ | `UPDATE_BY_ID` | Update by Vendure address ID if provided, create if not | Source system tracks Vendure address IDs |
325
+ | `SKIP` | Don't modify addresses at all | Partial updates - only updating customer name/email |
326
+
327
+ **Address Matching** (`UPSERT_BY_MATCH` mode):
328
+ - Default match fields: `streetLine1`, `city`, `countryCode`
329
+ - Customizable via `addressMatchFields` config
330
+ - Case-insensitive matching
331
+ - Prevents duplicate addresses across repeated pipeline runs
332
+
333
+ **groupsMode** - Controls customer group assignments:
334
+
335
+ | Mode | Behavior |
336
+ |------|----------|
337
+ | `REPLACE_ALL` | Remove all groups, assign new list (default) |
338
+ | `MERGE` | Add new groups, keep existing |
339
+ | `REMOVE` | Remove specified groups |
340
+ | `SKIP` | Don't modify groups |
341
+
342
+ ### Example - Prevent Duplicate Addresses
217
343
 
218
344
  ```typescript
219
345
  .load('import-customers', {
220
346
  adapterCode: 'customerUpsert',
221
347
  strategy: 'UPSERT',
222
348
  matchField: 'emailAddress',
349
+ addressesMode: 'UPSERT_BY_MATCH', // ← Prevents duplicates
350
+ addressMatchFields: 'streetLine1,city,postalCode,countryCode'
351
+ })
352
+
353
+ // Run 1: Customer has 2 addresses
354
+ // Run 2: Customer still has 2 addresses (no duplicates!) ✅
355
+ ```
356
+
357
+ ### Example - Custom Address Matching
358
+
359
+ ```typescript
360
+ .load('import-customers', {
361
+ addressesMode: 'UPSERT_BY_MATCH',
362
+ addressMatchFields: 'streetLine1,city,countryCode' // Match by street+city+country only
223
363
  })
224
364
  ```
225
365
 
@@ -233,7 +373,7 @@ Customers can be matched by: `emailAddress`
233
373
 
234
374
  Adapter Code: `collectionUpsert`
235
375
 
236
- Create or update collections with parent relationships.
376
+ Create or update collections with parent relationships. Supports multi-language translations, multi-channel assignment, and isPrivate flag.
237
377
 
238
378
  ### Input Fields
239
379
 
@@ -245,13 +385,30 @@ Create or update collections with parent relationships.
245
385
  | `parentSlug` | string | No | Parent collection slug |
246
386
  | `enabled` | boolean | No | Whether collection is visible |
247
387
 
388
+ ### Config Fields
389
+
390
+ | Config Field | Type | Required | Description |
391
+ |-------------|------|----------|-------------|
392
+ | `channel` | string | No | Target channel code |
393
+ | `strategy` | string | No | Load strategy: `UPSERT` (default), `CREATE`, or `UPDATE` |
394
+ | `slugField` | string | No | Record field for slug (default: `"slug"`) |
395
+ | `nameField` | string | No | Record field for name (default: `"name"`) |
396
+ | `descriptionField` | string | No | Record field for description (default: `"description"`) |
397
+ | `parentSlugField` | string | No | Record field for parent collection slug |
398
+ | `customFieldsField` | string | No | Record field containing custom fields object |
399
+ | `translationsField` | string | No | Record field containing multi-language translations. Overrides name/slug/description fields. Supports array `[{ languageCode, name, slug?, description? }]` or object map `{ en: { name, slug?, description? } }` |
400
+ | `channelsField` | string | No | Record field containing channel codes (array or comma-separated) for per-record channel assignment |
401
+ | `isPrivateField` | string | No | Record field containing isPrivate boolean flag |
402
+ | `applyFilters` | boolean | No | Trigger filter application job after upsert |
403
+
248
404
  ### Example
249
405
 
250
406
  ```typescript
251
407
  .load('import-collections', {
252
408
  adapterCode: 'collectionUpsert',
253
409
  strategy: 'UPSERT',
254
- matchField: 'slug',
410
+ translationsField: 'translations',
411
+ channelsField: 'channels',
255
412
  })
256
413
  ```
257
414
 
@@ -285,30 +442,210 @@ Update stock levels for product variants by SKU.
285
442
 
286
443
  ---
287
444
 
445
+ ## Entity Deletion Loader
446
+
447
+ Adapter Code: `entityDeletion`
448
+
449
+ Delete entities by slug, SKU, code, email, name, or ID. Supports 13 entity types: Products, Variants, Collections, Promotions, Shipping Methods, Customers, Payment Methods, Facets, Facet Values, Customer Groups, Tax Rates, Assets, and Stock Locations.
450
+
451
+ ### Config Fields
452
+
453
+ | Config Field | Type | Required | Description |
454
+ |-------------|------|----------|-------------|
455
+ | `entityType` | string | No | Entity type: `'product'`, `'variant'`, `'collection'`, `'promotion'`, `'shipping-method'`, `'customer'`, `'payment-method'`, `'facet'`, `'facet-value'`, `'customer-group'`, `'tax-rate'`, `'asset'`, or `'stock-location'` (default: `'product'`) |
456
+ | `identifierField` | string | No | Record field containing the identifier (default depends on entity type) |
457
+ | `matchBy` | string | No | How to find the entity: `'slug'`, `'sku'`, `'id'`, `'code'`, `'email'`, or `'name'` (default depends on entity type) |
458
+ | `cascadeVariants` | boolean | No | Delete all variants before deleting a product (default: `true`) |
459
+ | `channel` | string | No | Channel code for context |
460
+
461
+ ### Default matchBy per Entity Type
462
+
463
+ | Entity Type | Default matchBy | Default identifierField |
464
+ |-------------|----------------|------------------------|
465
+ | `product` | `slug` | `slug` |
466
+ | `variant` | `sku` | `sku` |
467
+ | `collection` | `slug` | `slug` |
468
+ | `promotion` | `code` | `code` |
469
+ | `shipping-method` | `code` | `code` |
470
+ | `customer` | `email` | `email` |
471
+ | `payment-method` | `code` | `code` |
472
+ | `facet` | `code` | `code` |
473
+ | `facet-value` | `code` | `code` |
474
+ | `customer-group` | `name` | `name` |
475
+ | `tax-rate` | `name` | `name` |
476
+ | `asset` | `name` | `name` |
477
+ | `stock-location` | `name` | `name` |
478
+
479
+ ### Example - Delete Products by Slug
480
+
481
+ ```typescript
482
+ .load('delete-products', {
483
+ adapterCode: 'entityDeletion',
484
+ entityType: 'product',
485
+ matchBy: 'slug',
486
+ cascadeVariants: true,
487
+ })
488
+ ```
489
+
490
+ ### Example - Delete Promotions by Code
491
+
492
+ ```typescript
493
+ .load('delete-promotions', {
494
+ adapterCode: 'entityDeletion',
495
+ entityType: 'promotion',
496
+ identifierField: 'couponCode',
497
+ })
498
+ ```
499
+
500
+ ### Example - Delete Customers by Email
501
+
502
+ ```typescript
503
+ .load('delete-customers', {
504
+ adapterCode: 'entityDeletion',
505
+ entityType: 'customer',
506
+ identifierField: 'email',
507
+ })
508
+ ```
509
+
510
+ ### Example - Delete Collections by Slug
511
+
512
+ ```typescript
513
+ .load('delete-collections', {
514
+ adapterCode: 'entityDeletion',
515
+ entityType: 'collection',
516
+ identifierField: 'slug',
517
+ })
518
+ ```
519
+
520
+ ### Example - Delete Facet Values by Code
521
+
522
+ ```typescript
523
+ .load('delete-facet-values', {
524
+ adapterCode: 'entityDeletion',
525
+ entityType: 'facet-value',
526
+ identifierField: 'facetValueCode',
527
+ })
528
+ ```
529
+
530
+ ### Behavior
531
+
532
+ - **Product deletion with cascade**: All variants are soft-deleted first, then the product
533
+ - **Product deletion without cascade**: Only the product is soft-deleted (variants remain)
534
+ - **Collection deletion**: Deletes the collection found by slug or ID
535
+ - **Promotion deletion**: Soft-deletes the promotion found by coupon code or ID
536
+ - **Shipping method deletion**: Soft-deletes the shipping method found by code or ID
537
+ - **Customer deletion**: Soft-deletes the customer found by email or ID
538
+ - **Payment method deletion**: Hard-deletes the payment method found by code or ID
539
+ - **Facet deletion**: Hard-deletes the facet found by code or ID (includes all facet values)
540
+ - **Facet value deletion**: Hard-deletes the facet value found by code or ID
541
+ - **Customer group deletion**: Deletes the customer group found by name or ID
542
+ - **Tax rate deletion**: Deletes the tax rate found by name or ID
543
+ - **Asset deletion**: Deletes the asset found by name or ID
544
+ - **Stock location deletion**: Deletes the stock location found by name or ID
545
+ - **Not found**: Logs a warning and skips (does not fail the record)
546
+ - **Errors**: Reported via `onRecordError` callback per standard loader error handling
547
+
548
+ ---
549
+
550
+ ---
551
+
552
+ ## Order Loader
553
+
554
+ Adapter Code: `orderUpsert`
555
+
556
+ Create or update orders with line items and addresses. **Intended for system migrations** - normal orders should go through the standard checkout flow.
557
+
558
+ ### Input Fields
559
+
560
+ | Field | Type | Required | Description |
561
+ |-------|------|----------|-------------|
562
+ | `code` | string | Yes | Order code / reference number |
563
+ | `customerEmail` | string | Yes | Customer email address (must exist) |
564
+ | `lines` | array | Yes | Order line items with SKU and quantity |
565
+ | `shippingAddress` | object | No | Shipping address details |
566
+ | `billingAddress` | object | No | Billing address details |
567
+ | `shippingMethodCode` | string | No | Shipping method code |
568
+ | `state` | string | No | Target order state (e.g., 'PaymentSettled', 'Shipped') |
569
+ | `orderPlacedAt` | string | No | Order placement date (ISO 8601 format) for backdating |
570
+
571
+ ### Config Fields
572
+
573
+ | Config Field | Type | Required | Description |
574
+ |-------------|------|----------|-------------|
575
+ | `strategy` | string | No | Load strategy: `CREATE` (default), `UPDATE`, or `UPSERT` |
576
+ | `codeField` | string | No | Record field for order code (default: `"code"`) |
577
+ | `customerEmailField` | string | No | Record field for customer email (default: `"customerEmail"`) |
578
+ | `linesField` | string | No | Record field for order lines array (default: `"lines"`) |
579
+ | `shippingAddressField` | string | No | Record field for shipping address (default: `"shippingAddress"`) |
580
+ | `billingAddressField` | string | No | Record field for billing address (default: `"billingAddress"`) |
581
+ | `stateField` | string | No | Record field for target state (default: `"state"`) |
582
+ | `orderPlacedAtField` | string | No | Record field for order placement date (default: `"orderPlacedAt"`) |
583
+ | `linesMode` | string | No | How to handle order lines: `REPLACE_ALL` (default), `MERGE_BY_SKU`, `APPEND_ONLY`, `SKIP` |
584
+
585
+ ### Nested Entity Modes
586
+
587
+ **linesMode** - Controls how order line items are managed:
588
+
589
+ | Mode | Behavior | Use Case |
590
+ |------|----------|----------|
591
+ | `REPLACE_ALL` | Remove all existing lines, add new ones (default) | Full order replacement during migration |
592
+ | `MERGE_BY_SKU` | Update quantities for existing SKUs, add new SKUs | Incremental order updates - adding more items or adjusting quantities |
593
+ | `APPEND_ONLY` | Always add new lines (allows duplicate SKUs) | Order modification history tracking (rare) |
594
+ | `SKIP` | Don't modify order lines | Update order state or addresses only, leave lines unchanged |
595
+
596
+ **Example - Merge order lines by SKU:**
597
+ ```typescript
598
+ .load('update-orders', {
599
+ adapterCode: 'orderUpsert',
600
+ strategy: 'UPDATE',
601
+ codeField: 'orderCode',
602
+ linesField: 'additionalItems',
603
+ linesMode: 'MERGE_BY_SKU', // Smart merging
604
+ })
605
+
606
+ // Existing order: PROD-A qty:2
607
+ // Update adds: PROD-A qty:5, PROD-B qty:1
608
+ // Result: PROD-A qty:5 (updated), PROD-B qty:1 (added) ✅
609
+ ```
610
+
611
+ **Example - Replace all lines:**
612
+ ```typescript
613
+ .load('migrate-orders', {
614
+ adapterCode: 'orderUpsert',
615
+ strategy: 'CREATE',
616
+ linesMode: 'REPLACE_ALL', // Complete replacement
617
+ stateField: 'finalState',
618
+ orderPlacedAtField: 'originalOrderDate',
619
+ })
620
+ ```
621
+
622
+ ### Match Fields
623
+
624
+ Orders can be matched by: `code`
625
+
626
+ ---
627
+
288
628
  ## Additional Loaders
289
629
 
290
630
  The following loaders are available but have similar patterns:
291
631
 
292
- ### Order Loader (`ORDER`)
293
- Create/update orders with line items and addresses.
294
-
295
632
  ### Customer Group Loader (`CUSTOMER_GROUP`)
296
633
  Create/update customer groups with member assignments.
297
634
 
298
635
  ### Facet Loader (`FACET`)
299
- Create/update facets for product categorization.
636
+ Create/update facets for product categorization. Supports `translationsField` for multi-language names and `channelsField` for per-record channel assignment.
300
637
 
301
638
  ### Facet Value Loader (`FACET_VALUE`)
302
- Create/update facet values within facets.
639
+ Create/update facet values within facets. Supports `translationsField` for multi-language names and `channelsField` for per-record channel assignment.
303
640
 
304
641
  ### Asset Loader (`ASSET`)
305
642
  Create/update assets and attach to entities.
306
643
 
307
644
  ### Promotion Loader (`PROMOTION`)
308
- Create/update promotions with conditions and actions.
645
+ Create/update promotions with conditions and actions. Supports `translationsField` for multi-language name/description, `channelsField` for per-record channel assignment, `descriptionField` for single-language description, and `perCustomerUsageLimitField` for per-customer usage limits. When the `enabled` field is not provided in the record, promotions default to `enabled: true`.
309
646
 
310
647
  ### Shipping Method Loader (`SHIPPING_METHOD`)
311
- Create/update shipping methods with calculators.
648
+ Create/update shipping methods with calculators and fulfillment handlers. Supports `translationsField` for multi-language name/description, `channelsField` for per-record channel assignment, and `customFieldsField` for custom field values.
312
649
 
313
650
  ### Stock Location Loader (`STOCK_LOCATION`)
314
651
  Create/update stock locations for inventory.
@@ -317,10 +654,10 @@ Create/update stock locations for inventory.
317
654
  Create/update tax rates with category and zone.
318
655
 
319
656
  ### Payment Method Loader (`PAYMENT_METHOD`)
320
- Create/update payment methods with handlers.
657
+ Create/update payment methods with handlers. Supports `translationsField` for multi-language name/description, `channelsField` for per-record channel assignment, and `customFieldsField` for custom field values.
321
658
 
322
659
  ### Channel Loader (`CHANNEL`)
323
- Create/update channels with currencies and languages.
660
+ Create/update channels with currencies and languages. Supports `customFieldsField` for custom field values.
324
661
 
325
662
  ---
326
663
 
@@ -434,10 +771,11 @@ For sending data to external systems (REST APIs, search engines, message queues)
434
771
  | `taxRateUpsert` | Tax Rate | Create/update tax rates with category and zone |
435
772
  | `paymentMethodUpsert` | Payment Method | Create/update payment methods with handlers |
436
773
  | `channelUpsert` | Channel | Create/update channels with currencies and languages |
437
- | `shippingMethodUpsert` | Shipping Method | Create/update shipping methods with calculators |
774
+ | `shippingMethodUpsert` | Shipping Method | Create/update shipping methods with calculators, translations, channels |
438
775
  | `customerGroupUpsert` | Customer Group | Create/update customer groups with member assignments |
439
776
  | `stockLocationUpsert` | Stock Location | Create/update stock locations for inventory |
440
777
  | `inventoryAdjust` | Inventory | Adjust inventory levels by SKU and location |
778
+ | `entityDeletion` | Multiple | Delete products, variants, collections, promotions, shipping methods, customers, payment methods, facets, facet values, customer groups, tax rates, assets, or stock locations |
441
779
  | `restPost` | Custom | POST data to REST endpoints |
442
780
  | `graphqlMutation` | GraphQL | Send records as GraphQL mutations to external APIs |
443
781
 
@@ -447,7 +785,7 @@ Each loader requires specific Vendure permissions:
447
785
 
448
786
  | Adapter Code | Required Permission |
449
787
  |--------------|---------------------|
450
- | `productUpsert`, `variantUpsert`, `collectionUpsert`, `facetUpsert`, `facetValueUpsert`, `assetImport`, `assetAttach`, `stockAdjust` | `UpdateCatalog` |
788
+ | `productUpsert`, `variantUpsert`, `collectionUpsert`, `facetUpsert`, `facetValueUpsert`, `assetImport`, `assetAttach`, `stockAdjust`, `entityDeletion` | `UpdateCatalog` |
451
789
  | `customerUpsert` | `UpdateCustomer` |
452
790
  | `orderNote`, `orderTransition`, `applyCoupon` | `UpdateOrder` |
453
791
  | `promotionUpsert` | `UpdatePromotion` |