@vendure/core 2.0.0-next.1 → 2.0.0-next.10

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 (452) hide show
  1. package/dist/api/api-internal-modules.d.ts +2 -1
  2. package/dist/api/api-internal-modules.js +2 -0
  3. package/dist/api/api-internal-modules.js.map +1 -1
  4. package/dist/api/common/configurable-operation-codec.js +2 -2
  5. package/dist/api/common/configurable-operation-codec.js.map +1 -1
  6. package/dist/api/common/id-codec.js +6 -2
  7. package/dist/api/common/id-codec.js.map +1 -1
  8. package/dist/api/config/configure-graphql-module.js +2 -0
  9. package/dist/api/config/configure-graphql-module.js.map +1 -1
  10. package/dist/api/config/generate-permissions.js +29 -4
  11. package/dist/api/config/generate-permissions.js.map +1 -1
  12. package/dist/api/config/generate-resolvers.js +9 -4
  13. package/dist/api/config/generate-resolvers.js.map +1 -1
  14. package/dist/api/decorators/relations.decorator.d.ts +116 -0
  15. package/dist/api/decorators/relations.decorator.js +202 -0
  16. package/dist/api/decorators/relations.decorator.js.map +1 -0
  17. package/dist/api/decorators/request-context.decorator.js +9 -2
  18. package/dist/api/decorators/request-context.decorator.js.map +1 -1
  19. package/dist/api/index.d.ts +1 -0
  20. package/dist/api/index.js +1 -0
  21. package/dist/api/index.js.map +1 -1
  22. package/dist/api/middleware/transaction-interceptor.d.ts +9 -0
  23. package/dist/api/middleware/transaction-interceptor.js +16 -1
  24. package/dist/api/middleware/transaction-interceptor.js.map +1 -1
  25. package/dist/api/resolvers/admin/administrator.resolver.d.ts +3 -2
  26. package/dist/api/resolvers/admin/administrator.resolver.js +10 -6
  27. package/dist/api/resolvers/admin/administrator.resolver.js.map +1 -1
  28. package/dist/api/resolvers/admin/asset.resolver.d.ts +3 -2
  29. package/dist/api/resolvers/admin/asset.resolver.js +10 -6
  30. package/dist/api/resolvers/admin/asset.resolver.js.map +1 -1
  31. package/dist/api/resolvers/admin/channel.resolver.js +2 -2
  32. package/dist/api/resolvers/admin/channel.resolver.js.map +1 -1
  33. package/dist/api/resolvers/admin/collection.resolver.d.ts +5 -3
  34. package/dist/api/resolvers/admin/collection.resolver.js +24 -7
  35. package/dist/api/resolvers/admin/collection.resolver.js.map +1 -1
  36. package/dist/api/resolvers/admin/country.resolver.d.ts +3 -2
  37. package/dist/api/resolvers/admin/country.resolver.js +10 -6
  38. package/dist/api/resolvers/admin/country.resolver.js.map +1 -1
  39. package/dist/api/resolvers/admin/customer-group.resolver.d.ts +3 -2
  40. package/dist/api/resolvers/admin/customer-group.resolver.js +8 -4
  41. package/dist/api/resolvers/admin/customer-group.resolver.js.map +1 -1
  42. package/dist/api/resolvers/admin/customer.resolver.d.ts +3 -2
  43. package/dist/api/resolvers/admin/customer.resolver.js +10 -6
  44. package/dist/api/resolvers/admin/customer.resolver.js.map +1 -1
  45. package/dist/api/resolvers/admin/facet.resolver.d.ts +3 -2
  46. package/dist/api/resolvers/admin/facet.resolver.js +10 -6
  47. package/dist/api/resolvers/admin/facet.resolver.js.map +1 -1
  48. package/dist/api/resolvers/admin/order.resolver.d.ts +6 -5
  49. package/dist/api/resolvers/admin/order.resolver.js +24 -11
  50. package/dist/api/resolvers/admin/order.resolver.js.map +1 -1
  51. package/dist/api/resolvers/admin/payment-method.resolver.d.ts +3 -2
  52. package/dist/api/resolvers/admin/payment-method.resolver.js +10 -6
  53. package/dist/api/resolvers/admin/payment-method.resolver.js.map +1 -1
  54. package/dist/api/resolvers/admin/product-option.resolver.d.ts +3 -2
  55. package/dist/api/resolvers/admin/product-option.resolver.js +8 -4
  56. package/dist/api/resolvers/admin/product-option.resolver.js.map +1 -1
  57. package/dist/api/resolvers/admin/product.resolver.d.ts +4 -3
  58. package/dist/api/resolvers/admin/product.resolver.js +16 -10
  59. package/dist/api/resolvers/admin/product.resolver.js.map +1 -1
  60. package/dist/api/resolvers/admin/promotion.resolver.d.ts +3 -2
  61. package/dist/api/resolvers/admin/promotion.resolver.js +9 -6
  62. package/dist/api/resolvers/admin/promotion.resolver.js.map +1 -1
  63. package/dist/api/resolvers/admin/role.resolver.d.ts +3 -2
  64. package/dist/api/resolvers/admin/role.resolver.js +10 -6
  65. package/dist/api/resolvers/admin/role.resolver.js.map +1 -1
  66. package/dist/api/resolvers/admin/shipping-method.resolver.d.ts +3 -2
  67. package/dist/api/resolvers/admin/shipping-method.resolver.js +10 -6
  68. package/dist/api/resolvers/admin/shipping-method.resolver.js.map +1 -1
  69. package/dist/api/resolvers/admin/tax-rate.resolver.d.ts +3 -2
  70. package/dist/api/resolvers/admin/tax-rate.resolver.js +10 -6
  71. package/dist/api/resolvers/admin/tax-rate.resolver.js.map +1 -1
  72. package/dist/api/resolvers/entity/collection-entity.resolver.d.ts +3 -1
  73. package/dist/api/resolvers/entity/collection-entity.resolver.js +17 -4
  74. package/dist/api/resolvers/entity/collection-entity.resolver.js.map +1 -1
  75. package/dist/api/resolvers/entity/country-entity.resolver.d.ts +1 -0
  76. package/dist/api/resolvers/entity/country-entity.resolver.js +11 -0
  77. package/dist/api/resolvers/entity/country-entity.resolver.js.map +1 -1
  78. package/dist/api/resolvers/entity/customer-entity.resolver.d.ts +2 -1
  79. package/dist/api/resolvers/entity/customer-entity.resolver.js +5 -3
  80. package/dist/api/resolvers/entity/customer-entity.resolver.js.map +1 -1
  81. package/dist/api/resolvers/entity/facet-entity.resolver.d.ts +1 -0
  82. package/dist/api/resolvers/entity/facet-entity.resolver.js +11 -0
  83. package/dist/api/resolvers/entity/facet-entity.resolver.js.map +1 -1
  84. package/dist/api/resolvers/entity/facet-value-entity.resolver.d.ts +1 -0
  85. package/dist/api/resolvers/entity/facet-value-entity.resolver.js +11 -0
  86. package/dist/api/resolvers/entity/facet-value-entity.resolver.js.map +1 -1
  87. package/dist/api/resolvers/entity/order-line-entity.resolver.d.ts +6 -3
  88. package/dist/api/resolvers/entity/order-line-entity.resolver.js +19 -2
  89. package/dist/api/resolvers/entity/order-line-entity.resolver.js.map +1 -1
  90. package/dist/api/resolvers/entity/product-entity.resolver.d.ts +4 -2
  91. package/dist/api/resolvers/entity/product-entity.resolver.js +21 -6
  92. package/dist/api/resolvers/entity/product-entity.resolver.js.map +1 -1
  93. package/dist/api/resolvers/entity/product-option-entity.resolver.d.ts +1 -0
  94. package/dist/api/resolvers/entity/product-option-entity.resolver.js +11 -0
  95. package/dist/api/resolvers/entity/product-option-entity.resolver.js.map +1 -1
  96. package/dist/api/resolvers/entity/product-option-group-entity.resolver.d.ts +1 -0
  97. package/dist/api/resolvers/entity/product-option-group-entity.resolver.js +12 -1
  98. package/dist/api/resolvers/entity/product-option-group-entity.resolver.js.map +1 -1
  99. package/dist/api/resolvers/entity/product-variant-entity.resolver.d.ts +1 -0
  100. package/dist/api/resolvers/entity/product-variant-entity.resolver.js +12 -0
  101. package/dist/api/resolvers/entity/product-variant-entity.resolver.js.map +1 -1
  102. package/dist/api/resolvers/entity/shipping-method-entity.resolver.d.ts +10 -0
  103. package/dist/api/resolvers/entity/shipping-method-entity.resolver.js +64 -0
  104. package/dist/api/resolvers/entity/shipping-method-entity.resolver.js.map +1 -0
  105. package/dist/api/resolvers/shop/shop-order.resolver.d.ts +4 -3
  106. package/dist/api/resolvers/shop/shop-order.resolver.js +16 -8
  107. package/dist/api/resolvers/shop/shop-order.resolver.js.map +1 -1
  108. package/dist/api/resolvers/shop/shop-products.resolver.d.ts +8 -8
  109. package/dist/api/resolvers/shop/shop-products.resolver.js +32 -21
  110. package/dist/api/resolvers/shop/shop-products.resolver.js.map +1 -1
  111. package/dist/api/schema/admin-api/collection.api.graphql +8 -0
  112. package/dist/api/schema/admin-api/order.api.graphql +4 -0
  113. package/dist/api/schema/common/common-error-results.graphql +22 -0
  114. package/dist/api/schema/common/shipping-method.type.graphql +1 -0
  115. package/dist/api/schema/shop-api/shop-error-results.graphql +0 -29
  116. package/dist/bootstrap.js +8 -3
  117. package/dist/bootstrap.js.map +1 -1
  118. package/dist/common/calculated-decorator.d.ts +16 -3
  119. package/dist/common/calculated-decorator.js +3 -0
  120. package/dist/common/calculated-decorator.js.map +1 -1
  121. package/dist/common/constants.d.ts +1 -0
  122. package/dist/common/constants.js +2 -1
  123. package/dist/common/constants.js.map +1 -1
  124. package/dist/common/error/errors.d.ts +1 -0
  125. package/dist/common/error/errors.js.map +1 -1
  126. package/dist/common/error/generated-graphql-admin-errors.d.ts +29 -0
  127. package/dist/common/error/generated-graphql-admin-errors.js +33 -2
  128. package/dist/common/error/generated-graphql-admin-errors.js.map +1 -1
  129. package/dist/common/finite-state-machine/finite-state-machine.js +2 -1
  130. package/dist/common/finite-state-machine/finite-state-machine.js.map +1 -1
  131. package/dist/common/self-refreshing-cache.d.ts +5 -2
  132. package/dist/common/self-refreshing-cache.js +9 -7
  133. package/dist/common/self-refreshing-cache.js.map +1 -1
  134. package/dist/common/types/entity-relation-paths.d.ts +1 -1
  135. package/dist/config/asset-import-strategy/asset-import-strategy.d.ts +24 -0
  136. package/dist/config/asset-import-strategy/asset-import-strategy.js +3 -0
  137. package/dist/config/asset-import-strategy/asset-import-strategy.js.map +1 -0
  138. package/dist/config/asset-import-strategy/default-asset-import-strategy.d.ts +24 -0
  139. package/dist/config/asset-import-strategy/default-asset-import-strategy.js +89 -0
  140. package/dist/config/asset-import-strategy/default-asset-import-strategy.js.map +1 -0
  141. package/dist/config/catalog/collection-filter.d.ts +32 -0
  142. package/dist/config/catalog/collection-filter.js +32 -0
  143. package/dist/config/catalog/collection-filter.js.map +1 -1
  144. package/dist/config/catalog/default-collection-filters.d.ts +100 -0
  145. package/dist/config/catalog/default-collection-filters.js +154 -21
  146. package/dist/config/catalog/default-collection-filters.js.map +1 -1
  147. package/dist/config/config.module.js +4 -0
  148. package/dist/config/config.module.js.map +1 -1
  149. package/dist/config/config.service.d.ts +2 -1
  150. package/dist/config/config.service.js +3 -0
  151. package/dist/config/config.service.js.map +1 -1
  152. package/dist/config/custom-field/custom-field-types.d.ts +3 -0
  153. package/dist/config/default-config.js +8 -0
  154. package/dist/config/default-config.js.map +1 -1
  155. package/dist/config/entity-metadata/add-foreign-key-indices.d.ts +12 -0
  156. package/dist/config/entity-metadata/add-foreign-key-indices.js +33 -0
  157. package/dist/config/entity-metadata/add-foreign-key-indices.js.map +1 -0
  158. package/dist/config/entity-metadata/entity-metadata-modifier.d.ts +55 -0
  159. package/dist/config/entity-metadata/entity-metadata-modifier.js +3 -0
  160. package/dist/config/entity-metadata/entity-metadata-modifier.js.map +1 -0
  161. package/dist/config/index.d.ts +4 -0
  162. package/dist/config/index.js +4 -0
  163. package/dist/config/index.js.map +1 -1
  164. package/dist/config/payment/dummy-payment-method-handler.js +2 -2
  165. package/dist/config/payment/dummy-payment-method-handler.js.map +1 -1
  166. package/dist/config/payment/example-payment-method-handler.js +2 -2
  167. package/dist/config/payment/example-payment-method-handler.js.map +1 -1
  168. package/dist/config/payment/payment-method-eligibility-checker.d.ts +3 -3
  169. package/dist/config/payment/payment-method-eligibility-checker.js +2 -2
  170. package/dist/config/payment/payment-method-eligibility-checker.js.map +1 -1
  171. package/dist/config/payment/payment-method-handler.d.ts +7 -8
  172. package/dist/config/payment/payment-method-handler.js +6 -6
  173. package/dist/config/payment/payment-method-handler.js.map +1 -1
  174. package/dist/config/promotion/actions/facet-values-percentage-discount-action.js +1 -1
  175. package/dist/config/promotion/actions/facet-values-percentage-discount-action.js.map +1 -1
  176. package/dist/config/promotion/conditions/has-facet-values-condition.js +1 -1
  177. package/dist/config/promotion/conditions/has-facet-values-condition.js.map +1 -1
  178. package/dist/config/promotion/index.d.ts +4 -0
  179. package/dist/config/promotion/index.js +4 -0
  180. package/dist/config/promotion/index.js.map +1 -1
  181. package/dist/config/promotion/utils/facet-value-checker.d.ts +2 -1
  182. package/dist/config/promotion/utils/facet-value-checker.js +2 -2
  183. package/dist/config/promotion/utils/facet-value-checker.js.map +1 -1
  184. package/dist/config/shipping-method/shipping-calculator.d.ts +3 -3
  185. package/dist/config/shipping-method/shipping-calculator.js +2 -2
  186. package/dist/config/shipping-method/shipping-calculator.js.map +1 -1
  187. package/dist/config/shipping-method/shipping-eligibility-checker.d.ts +4 -4
  188. package/dist/config/shipping-method/shipping-eligibility-checker.js +5 -5
  189. package/dist/config/shipping-method/shipping-eligibility-checker.js.map +1 -1
  190. package/dist/config/system/health-check-strategy.d.ts +47 -0
  191. package/dist/config/system/health-check-strategy.js +3 -0
  192. package/dist/config/system/health-check-strategy.js.map +1 -0
  193. package/dist/config/vendure-config.d.ts +70 -0
  194. package/dist/connection/transaction-subscriber.d.ts +16 -2
  195. package/dist/connection/transaction-subscriber.js +27 -6
  196. package/dist/connection/transaction-subscriber.js.map +1 -1
  197. package/dist/connection/transaction-wrapper.d.ts +5 -1
  198. package/dist/connection/transaction-wrapper.js +14 -11
  199. package/dist/connection/transaction-wrapper.js.map +1 -1
  200. package/dist/connection/transactional-connection.d.ts +9 -3
  201. package/dist/connection/transactional-connection.js +5 -5
  202. package/dist/connection/transactional-connection.js.map +1 -1
  203. package/dist/data-import/providers/asset-importer/asset-importer.js +12 -18
  204. package/dist/data-import/providers/asset-importer/asset-importer.js.map +1 -1
  205. package/dist/data-import/providers/importer/fast-importer.service.js +11 -5
  206. package/dist/data-import/providers/importer/fast-importer.service.js.map +1 -1
  207. package/dist/data-import/providers/importer/importer.d.ts +3 -2
  208. package/dist/data-import/providers/importer/importer.js +15 -9
  209. package/dist/data-import/providers/importer/importer.js.map +1 -1
  210. package/dist/data-import/providers/populator/populator.js +1 -1
  211. package/dist/data-import/providers/populator/populator.js.map +1 -1
  212. package/dist/entity/address/address.entity.js +2 -0
  213. package/dist/entity/address/address.entity.js.map +1 -1
  214. package/dist/entity/asset/orderable-asset.entity.js +1 -0
  215. package/dist/entity/asset/orderable-asset.entity.js.map +1 -1
  216. package/dist/entity/authentication-method/authentication-method.entity.js +1 -0
  217. package/dist/entity/authentication-method/authentication-method.entity.js.map +1 -1
  218. package/dist/entity/channel/channel.entity.js +2 -0
  219. package/dist/entity/channel/channel.entity.js.map +1 -1
  220. package/dist/entity/collection/collection-translation.entity.js +1 -0
  221. package/dist/entity/collection/collection-translation.entity.js.map +1 -1
  222. package/dist/entity/collection/collection.entity.js +1 -0
  223. package/dist/entity/collection/collection.entity.js.map +1 -1
  224. package/dist/entity/country/country-translation.entity.js +1 -0
  225. package/dist/entity/country/country-translation.entity.js.map +1 -1
  226. package/dist/entity/facet/facet-translation.entity.js +1 -0
  227. package/dist/entity/facet/facet-translation.entity.js.map +1 -1
  228. package/dist/entity/facet-value/facet-value-translation.entity.js +1 -0
  229. package/dist/entity/facet-value/facet-value-translation.entity.js.map +1 -1
  230. package/dist/entity/facet-value/facet-value.entity.js +1 -0
  231. package/dist/entity/facet-value/facet-value.entity.js.map +1 -1
  232. package/dist/entity/history-entry/customer-history-entry.entity.js +1 -0
  233. package/dist/entity/history-entry/customer-history-entry.entity.js.map +1 -1
  234. package/dist/entity/history-entry/history-entry.entity.js +1 -0
  235. package/dist/entity/history-entry/history-entry.entity.js.map +1 -1
  236. package/dist/entity/history-entry/order-history-entry.entity.js +1 -0
  237. package/dist/entity/history-entry/order-history-entry.entity.js.map +1 -1
  238. package/dist/entity/order/order.entity.js +5 -2
  239. package/dist/entity/order/order.entity.js.map +1 -1
  240. package/dist/entity/order-item/order-item.entity.js +2 -0
  241. package/dist/entity/order-item/order-item.entity.js.map +1 -1
  242. package/dist/entity/order-line/order-line.entity.js +26 -22
  243. package/dist/entity/order-line/order-line.entity.js.map +1 -1
  244. package/dist/entity/order-modification/order-modification.entity.js +1 -0
  245. package/dist/entity/order-modification/order-modification.entity.js.map +1 -1
  246. package/dist/entity/payment/payment.entity.js +1 -0
  247. package/dist/entity/payment/payment.entity.js.map +1 -1
  248. package/dist/entity/product/product-translation.entity.js +1 -0
  249. package/dist/entity/product/product-translation.entity.js.map +1 -1
  250. package/dist/entity/product/product.entity.js +1 -0
  251. package/dist/entity/product/product.entity.js.map +1 -1
  252. package/dist/entity/product-option/product-option-translation.entity.js +1 -0
  253. package/dist/entity/product-option/product-option-translation.entity.js.map +1 -1
  254. package/dist/entity/product-option/product-option.entity.js +1 -0
  255. package/dist/entity/product-option/product-option.entity.js.map +1 -1
  256. package/dist/entity/product-option-group/product-option-group-translation.entity.js +1 -0
  257. package/dist/entity/product-option-group/product-option-group-translation.entity.js.map +1 -1
  258. package/dist/entity/product-option-group/product-option-group.entity.js +1 -0
  259. package/dist/entity/product-option-group/product-option-group.entity.js.map +1 -1
  260. package/dist/entity/product-variant/product-variant-price.entity.js +1 -0
  261. package/dist/entity/product-variant/product-variant-price.entity.js.map +1 -1
  262. package/dist/entity/product-variant/product-variant-translation.entity.js +1 -0
  263. package/dist/entity/product-variant/product-variant-translation.entity.js.map +1 -1
  264. package/dist/entity/product-variant/product-variant.entity.js +3 -0
  265. package/dist/entity/product-variant/product-variant.entity.js.map +1 -1
  266. package/dist/entity/refund/refund.entity.js +1 -0
  267. package/dist/entity/refund/refund.entity.js.map +1 -1
  268. package/dist/entity/register-custom-entity-fields.js +17 -2
  269. package/dist/entity/register-custom-entity-fields.js.map +1 -1
  270. package/dist/entity/run-entity-metadata-modifiers.d.ts +2 -0
  271. package/dist/entity/run-entity-metadata-modifiers.js +15 -0
  272. package/dist/entity/run-entity-metadata-modifiers.js.map +1 -0
  273. package/dist/entity/session/authenticated-session.entity.js +1 -0
  274. package/dist/entity/session/authenticated-session.entity.js.map +1 -1
  275. package/dist/entity/session/session.entity.js +2 -0
  276. package/dist/entity/session/session.entity.js.map +1 -1
  277. package/dist/entity/shipping-line/shipping-line.entity.js +2 -0
  278. package/dist/entity/shipping-line/shipping-line.entity.js.map +1 -1
  279. package/dist/entity/shipping-method/shipping-method-translation.entity.js +1 -0
  280. package/dist/entity/shipping-method/shipping-method-translation.entity.js.map +1 -1
  281. package/dist/entity/shipping-method/shipping-method.entity.js +2 -2
  282. package/dist/entity/shipping-method/shipping-method.entity.js.map +1 -1
  283. package/dist/entity/stock-movement/allocation.entity.js +1 -0
  284. package/dist/entity/stock-movement/allocation.entity.js.map +1 -1
  285. package/dist/entity/stock-movement/cancellation.entity.js.map +1 -1
  286. package/dist/entity/stock-movement/release.entity.js +1 -0
  287. package/dist/entity/stock-movement/release.entity.js.map +1 -1
  288. package/dist/entity/stock-movement/sale.entity.js.map +1 -1
  289. package/dist/entity/stock-movement/stock-movement.entity.js +1 -0
  290. package/dist/entity/stock-movement/stock-movement.entity.js.map +1 -1
  291. package/dist/entity/surcharge/surcharge.entity.js +2 -0
  292. package/dist/entity/surcharge/surcharge.entity.js.map +1 -1
  293. package/dist/entity/tax-rate/tax-rate.entity.js +3 -0
  294. package/dist/entity/tax-rate/tax-rate.entity.js.map +1 -1
  295. package/dist/event-bus/event-bus.js +24 -4
  296. package/dist/event-bus/event-bus.js.map +1 -1
  297. package/dist/event-bus/events/initializer-event.d.ts +12 -0
  298. package/dist/event-bus/events/initializer-event.js +19 -0
  299. package/dist/event-bus/events/initializer-event.js.map +1 -0
  300. package/dist/event-bus/events/role-event.d.ts +1 -1
  301. package/dist/event-bus/events/role-event.js +1 -1
  302. package/dist/event-bus/events/search-event.d.ts +20 -0
  303. package/dist/event-bus/events/search-event.js +21 -0
  304. package/dist/event-bus/events/search-event.js.map +1 -0
  305. package/dist/event-bus/index.d.ts +2 -0
  306. package/dist/event-bus/index.js +2 -0
  307. package/dist/event-bus/index.js.map +1 -1
  308. package/dist/health-check/health-check-registry.service.d.ts +7 -1
  309. package/dist/health-check/health-check-registry.service.js +7 -1
  310. package/dist/health-check/health-check-registry.service.js.map +1 -1
  311. package/dist/health-check/health-check.module.d.ts +1 -3
  312. package/dist/health-check/health-check.module.js +6 -5
  313. package/dist/health-check/health-check.module.js.map +1 -1
  314. package/dist/health-check/http-health-check-strategy.d.ts +36 -0
  315. package/dist/health-check/http-health-check-strategy.js +41 -0
  316. package/dist/health-check/http-health-check-strategy.js.map +1 -0
  317. package/dist/health-check/index.d.ts +2 -0
  318. package/dist/health-check/index.js +2 -0
  319. package/dist/health-check/index.js.map +1 -1
  320. package/dist/health-check/typeorm-health-check-strategy.d.ts +36 -0
  321. package/dist/health-check/typeorm-health-check-strategy.js +44 -0
  322. package/dist/health-check/typeorm-health-check-strategy.js.map +1 -0
  323. package/dist/job-queue/subscribable-job.d.ts +23 -6
  324. package/dist/job-queue/subscribable-job.js +4 -4
  325. package/dist/job-queue/subscribable-job.js.map +1 -1
  326. package/dist/plugin/default-job-queue-plugin/sql-job-buffer-storage-strategy.js +5 -3
  327. package/dist/plugin/default-job-queue-plugin/sql-job-buffer-storage-strategy.js.map +1 -1
  328. package/dist/plugin/default-search-plugin/default-search-plugin.d.ts +9 -3
  329. package/dist/plugin/default-search-plugin/default-search-plugin.js +25 -2
  330. package/dist/plugin/default-search-plugin/default-search-plugin.js.map +1 -1
  331. package/dist/plugin/default-search-plugin/fulltext-search.service.d.ts +3 -1
  332. package/dist/plugin/default-search-plugin/fulltext-search.service.js +29 -19
  333. package/dist/plugin/default-search-plugin/fulltext-search.service.js.map +1 -1
  334. package/dist/plugin/default-search-plugin/indexer/indexer.controller.js +31 -25
  335. package/dist/plugin/default-search-plugin/indexer/indexer.controller.js.map +1 -1
  336. package/dist/plugin/default-search-plugin/indexer/search-index.service.js +1 -1
  337. package/dist/plugin/default-search-plugin/indexer/search-index.service.js.map +1 -1
  338. package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.d.ts +4 -4
  339. package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.js +15 -11
  340. package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.js.map +1 -1
  341. package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.d.ts +4 -4
  342. package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.js +16 -12
  343. package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.js.map +1 -1
  344. package/dist/plugin/default-search-plugin/search-strategy/search-strategy.d.ts +2 -1
  345. package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.d.ts +4 -4
  346. package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.js +15 -11
  347. package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.js.map +1 -1
  348. package/dist/plugin/default-search-plugin/types.d.ts +85 -1
  349. package/dist/service/helpers/external-authentication/external-authentication.service.js +1 -1
  350. package/dist/service/helpers/external-authentication/external-authentication.service.js.map +1 -1
  351. package/dist/service/helpers/list-query-builder/list-query-builder.d.ts +40 -1
  352. package/dist/service/helpers/list-query-builder/list-query-builder.js +153 -23
  353. package/dist/service/helpers/list-query-builder/list-query-builder.js.map +1 -1
  354. package/dist/service/helpers/list-query-builder/parse-channel-param.d.ts +1 -1
  355. package/dist/service/helpers/list-query-builder/parse-channel-param.js +2 -2
  356. package/dist/service/helpers/list-query-builder/parse-channel-param.js.map +1 -1
  357. package/dist/service/helpers/list-query-builder/parse-filter-params.d.ts +1 -1
  358. package/dist/service/helpers/list-query-builder/parse-filter-params.js +3 -2
  359. package/dist/service/helpers/list-query-builder/parse-filter-params.js.map +1 -1
  360. package/dist/service/helpers/list-query-builder/parse-sort-params.d.ts +2 -1
  361. package/dist/service/helpers/list-query-builder/parse-sort-params.js +12 -4
  362. package/dist/service/helpers/list-query-builder/parse-sort-params.js.map +1 -1
  363. package/dist/service/helpers/locale-string-hydrator/locale-string-hydrator.d.ts +4 -1
  364. package/dist/service/helpers/locale-string-hydrator/locale-string-hydrator.js +4 -1
  365. package/dist/service/helpers/locale-string-hydrator/locale-string-hydrator.js.map +1 -1
  366. package/dist/service/helpers/order-calculator/order-calculator.js +4 -4
  367. package/dist/service/helpers/order-calculator/order-calculator.js.map +1 -1
  368. package/dist/service/helpers/order-calculator/prorate.js +1 -1
  369. package/dist/service/helpers/order-calculator/prorate.js.map +1 -1
  370. package/dist/service/helpers/order-modifier/order-modifier.d.ts +8 -1
  371. package/dist/service/helpers/order-modifier/order-modifier.js +101 -9
  372. package/dist/service/helpers/order-modifier/order-modifier.js.map +1 -1
  373. package/dist/service/helpers/order-state-machine/order-state-machine.js +1 -1
  374. package/dist/service/helpers/order-state-machine/order-state-machine.js.map +1 -1
  375. package/dist/service/helpers/slug-validator/slug-validator.js +15 -6
  376. package/dist/service/helpers/slug-validator/slug-validator.js.map +1 -1
  377. package/dist/service/helpers/utils/order-utils.js +1 -1
  378. package/dist/service/helpers/utils/order-utils.js.map +1 -1
  379. package/dist/service/helpers/utils/translate-entity.js +1 -2
  380. package/dist/service/helpers/utils/translate-entity.js.map +1 -1
  381. package/dist/service/index.d.ts +1 -0
  382. package/dist/service/index.js +1 -0
  383. package/dist/service/index.js.map +1 -1
  384. package/dist/service/initializer.service.d.ts +3 -1
  385. package/dist/service/initializer.service.js +8 -3
  386. package/dist/service/initializer.service.js.map +1 -1
  387. package/dist/service/services/administrator.service.d.ts +4 -3
  388. package/dist/service/services/administrator.service.js +16 -13
  389. package/dist/service/services/administrator.service.js.map +1 -1
  390. package/dist/service/services/asset.service.d.ts +5 -3
  391. package/dist/service/services/asset.service.js +25 -8
  392. package/dist/service/services/asset.service.js.map +1 -1
  393. package/dist/service/services/channel.service.d.ts +2 -1
  394. package/dist/service/services/channel.service.js +29 -18
  395. package/dist/service/services/channel.service.js.map +1 -1
  396. package/dist/service/services/collection.service.d.ts +8 -5
  397. package/dist/service/services/collection.service.js +49 -17
  398. package/dist/service/services/collection.service.js.map +1 -1
  399. package/dist/service/services/country.service.d.ts +3 -2
  400. package/dist/service/services/country.service.js +4 -4
  401. package/dist/service/services/country.service.js.map +1 -1
  402. package/dist/service/services/customer-group.service.d.ts +6 -3
  403. package/dist/service/services/customer-group.service.js +12 -7
  404. package/dist/service/services/customer-group.service.js.map +1 -1
  405. package/dist/service/services/customer.service.d.ts +3 -2
  406. package/dist/service/services/customer.service.js +4 -4
  407. package/dist/service/services/customer.service.js.map +1 -1
  408. package/dist/service/services/facet-value.service.d.ts +4 -0
  409. package/dist/service/services/facet-value.service.js +8 -4
  410. package/dist/service/services/facet-value.service.js.map +1 -1
  411. package/dist/service/services/facet.service.d.ts +7 -2
  412. package/dist/service/services/facet.service.js +22 -10
  413. package/dist/service/services/facet.service.js.map +1 -1
  414. package/dist/service/services/global-settings.service.js +5 -3
  415. package/dist/service/services/global-settings.service.js.map +1 -1
  416. package/dist/service/services/order.service.d.ts +30 -7
  417. package/dist/service/services/order.service.js +138 -69
  418. package/dist/service/services/order.service.js.map +1 -1
  419. package/dist/service/services/payment-method.service.d.ts +6 -3
  420. package/dist/service/services/payment-method.service.js +15 -8
  421. package/dist/service/services/payment-method.service.js.map +1 -1
  422. package/dist/service/services/payment.service.js +4 -4
  423. package/dist/service/services/payment.service.js.map +1 -1
  424. package/dist/service/services/product-option-group.service.d.ts +3 -2
  425. package/dist/service/services/product-option-group.service.js +4 -4
  426. package/dist/service/services/product-option-group.service.js.map +1 -1
  427. package/dist/service/services/product-variant.service.d.ts +11 -3
  428. package/dist/service/services/product-variant.service.js +58 -42
  429. package/dist/service/services/product-variant.service.js.map +1 -1
  430. package/dist/service/services/product.service.d.ts +5 -4
  431. package/dist/service/services/product.service.js +18 -8
  432. package/dist/service/services/product.service.js.map +1 -1
  433. package/dist/service/services/promotion.service.d.ts +3 -2
  434. package/dist/service/services/promotion.service.js +9 -7
  435. package/dist/service/services/promotion.service.js.map +1 -1
  436. package/dist/service/services/role.service.d.ts +5 -4
  437. package/dist/service/services/role.service.js +16 -13
  438. package/dist/service/services/role.service.js.map +1 -1
  439. package/dist/service/services/session.service.js +7 -7
  440. package/dist/service/services/session.service.js.map +1 -1
  441. package/dist/service/services/shipping-method.service.d.ts +3 -2
  442. package/dist/service/services/shipping-method.service.js +6 -6
  443. package/dist/service/services/shipping-method.service.js.map +1 -1
  444. package/dist/service/services/tax-rate.service.d.ts +3 -2
  445. package/dist/service/services/tax-rate.service.js +4 -4
  446. package/dist/service/services/tax-rate.service.js.map +1 -1
  447. package/dist/service/services/user.service.js +2 -1
  448. package/dist/service/services/user.service.js.map +1 -1
  449. package/dist/service/services/zone.service.d.ts +2 -2
  450. package/dist/service/services/zone.service.js +2 -2
  451. package/dist/service/services/zone.service.js.map +1 -1
  452. package/package.json +5 -4
@@ -2,6 +2,7 @@ import { AddPaymentToOrderResult, ApplyCouponCodeResult, PaymentInput, PaymentMe
2
2
  import { AddFulfillmentToOrderResult, AddManualPaymentToOrderResult, AddNoteToOrderInput, CancelOrderInput, CancelOrderResult, CreateAddressInput, DeletionResponse, FulfillOrderInput, ManualPaymentInput, ModifyOrderInput, ModifyOrderResult, OrderListOptions, OrderProcessState, RefundOrderInput, RefundOrderResult, SettlePaymentResult, SettleRefundInput, ShippingMethodQuote, TransitionPaymentToStateResult, UpdateOrderNoteInput } from '@vendure/common/lib/generated-types';
3
3
  import { ID, PaginatedList } from '@vendure/common/lib/shared-types';
4
4
  import { RequestContext } from '../../api/common/request-context';
5
+ import { RelationPaths } from '../../api/decorators/relations.decorator';
5
6
  import { RequestContextCacheService } from '../../cache/request-context-cache.service';
6
7
  import { ErrorResultUnion } from '../../common/error/error-result';
7
8
  import { FulfillmentStateTransitionError } from '../../common/error/generated-graphql-admin-errors';
@@ -13,6 +14,7 @@ import { Customer } from '../../entity/customer/customer.entity';
13
14
  import { Fulfillment } from '../../entity/fulfillment/fulfillment.entity';
14
15
  import { HistoryEntry } from '../../entity/history-entry/history-entry.entity';
15
16
  import { OrderItem } from '../../entity/order-item/order-item.entity';
17
+ import { OrderLine } from '../../entity/order-line/order-line.entity';
16
18
  import { OrderModification } from '../../entity/order-modification/order-modification.entity';
17
19
  import { Order } from '../../entity/order/order.entity';
18
20
  import { Payment } from '../../entity/payment/payment.entity';
@@ -81,10 +83,11 @@ export declare class OrderService {
81
83
  * defined in the {@link OrderOptions} `process` array.
82
84
  */
83
85
  getOrderProcessStates(): OrderProcessState[];
84
- findAll(ctx: RequestContext, options?: OrderListOptions): Promise<PaginatedList<Order>>;
85
- findOne(ctx: RequestContext, orderId: ID): Promise<Order | undefined>;
86
- findOneByCode(ctx: RequestContext, orderCode: string): Promise<Order | undefined>;
87
- findByCustomerId(ctx: RequestContext, customerId: ID, options?: ListQueryOptions<Order>): Promise<PaginatedList<Order>>;
86
+ findAll(ctx: RequestContext, options?: OrderListOptions, relations?: RelationPaths<Order>): Promise<PaginatedList<Order>>;
87
+ findOne(ctx: RequestContext, orderId: ID, relations?: RelationPaths<Order>): Promise<Order | undefined>;
88
+ findOneByCode(ctx: RequestContext, orderCode: string, relations?: RelationPaths<Order>): Promise<Order | undefined>;
89
+ findOneByOrderLineId(ctx: RequestContext, orderLineId: ID, relations?: RelationPaths<Order>): Promise<Order | undefined>;
90
+ findByCustomerId(ctx: RequestContext, customerId: ID, options?: ListQueryOptions<Order>, relations?: RelationPaths<Order>): Promise<PaginatedList<Order>>;
88
91
  /**
89
92
  * @description
90
93
  * Returns all {@link Payment} entities associated with the Order.
@@ -229,7 +232,10 @@ export declare class OrderService {
229
232
  * * Shipping or billing address changes
230
233
  *
231
234
  * Setting the `dryRun` input property to `true` will apply all changes, including updating the price of the
232
- * Order, but will not actually persist any of those changes to the database.
235
+ * Order, except history entry and additional payment actions.
236
+ *
237
+ * __Using dryRun option, you must wrap function call in transaction manually.__
238
+ *
233
239
  */
234
240
  modifyOrder(ctx: RequestContext, input: ModifyOrderInput): Promise<ErrorResultUnion<ModifyOrderResult, Order>>;
235
241
  private handleFulfillmentStateTransitByOrder;
@@ -246,6 +252,13 @@ export declare class OrderService {
246
252
  * state will get automatically transitioned to the `PaymentSettled` or `PaymentAuthorized` state.
247
253
  */
248
254
  addPaymentToOrder(ctx: RequestContext, orderId: ID, input: PaymentInput): Promise<ErrorResultUnion<AddPaymentToOrderResult, Order>>;
255
+ /**
256
+ * @description
257
+ * We can add a Payment to the order if:
258
+ * 1. the Order is in the `ArrangingPayment` state or
259
+ * 2. the Order's current state can transition to `PaymentAuthorized` and `PaymentSettled`
260
+ */
261
+ private canAddPaymentToOrder;
249
262
  private transitionOrderIfTotalIsCovered;
250
263
  /**
251
264
  * @description
@@ -287,6 +300,7 @@ export declare class OrderService {
287
300
  cancelOrder(ctx: RequestContext, input: CancelOrderInput): Promise<ErrorResultUnion<CancelOrderResult, Order>>;
288
301
  private cancelOrderById;
289
302
  private cancelOrderByOrderLines;
303
+ private getAllocatedItems;
290
304
  /**
291
305
  * @description
292
306
  * Creates a {@link Refund} against the order and in doing so invokes the `createRefund()` method of the
@@ -310,6 +324,13 @@ export declare class OrderService {
310
324
  addNoteToOrder(ctx: RequestContext, input: AddNoteToOrderInput): Promise<Order>;
311
325
  updateOrderNote(ctx: RequestContext, input: UpdateOrderNoteInput): Promise<HistoryEntry>;
312
326
  deleteOrderNote(ctx: RequestContext, id: ID): Promise<DeletionResponse>;
327
+ /**
328
+ * @description
329
+ * Deletes an Order, ensuring that any Sessions that reference this Order are dereferenced before deletion.
330
+ *
331
+ * @since 1.5.0
332
+ */
333
+ deleteOrder(ctx: RequestContext, orderOrId: ID | Order): Promise<void>;
313
334
  /**
314
335
  * @description
315
336
  * When a guest user with an anonymous Order signs in and has an existing Order associated with that Customer,
@@ -339,9 +360,11 @@ export declare class OrderService {
339
360
  */
340
361
  private assertNotOverOrderLineItemsLimit;
341
362
  /**
342
- * Applies promotions, taxes and shipping to the Order.
363
+ * @description
364
+ * Applies promotions, taxes and shipping to the Order. If the `updatedOrderLines` argument is passed in,
365
+ * then all of those OrderLines will have their prices re-calculated using the configured {@link OrderItemPriceCalculationStrategy}.
343
366
  */
344
- private applyPriceAdjustments;
367
+ applyPriceAdjustments(ctx: RequestContext, order: Order, updatedOrderLines?: OrderLine[]): Promise<Order>;
345
368
  private getOrderWithFulfillments;
346
369
  private getOrdersAndItemsFromLines;
347
370
  private mergePaymentMetadata;
@@ -24,6 +24,7 @@ const tax_utils_1 = require("../../common/tax-utils");
24
24
  const utils_1 = require("../../common/utils");
25
25
  const config_service_1 = require("../../config/config.service");
26
26
  const transactional_connection_1 = require("../../connection/transactional-connection");
27
+ const index_1 = require("../../entity/index");
27
28
  const order_item_entity_1 = require("../../entity/order-item/order-item.entity");
28
29
  const order_line_entity_1 = require("../../entity/order-line/order-line.entity");
29
30
  const order_modification_entity_1 = require("../../entity/order-modification/order-modification.entity");
@@ -32,13 +33,14 @@ const payment_entity_1 = require("../../entity/payment/payment.entity");
32
33
  const product_variant_entity_1 = require("../../entity/product-variant/product-variant.entity");
33
34
  const refund_entity_1 = require("../../entity/refund/refund.entity");
34
35
  const shipping_line_entity_1 = require("../../entity/shipping-line/shipping-line.entity");
36
+ const allocation_entity_1 = require("../../entity/stock-movement/allocation.entity");
35
37
  const surcharge_entity_1 = require("../../entity/surcharge/surcharge.entity");
36
38
  const event_bus_1 = require("../../event-bus/event-bus");
37
- const index_1 = require("../../event-bus/index");
38
39
  const index_2 = require("../../event-bus/index");
39
40
  const index_3 = require("../../event-bus/index");
40
41
  const index_4 = require("../../event-bus/index");
41
42
  const index_5 = require("../../event-bus/index");
43
+ const index_6 = require("../../event-bus/index");
42
44
  const custom_field_relation_service_1 = require("../helpers/custom-field-relation/custom-field-relation.service");
43
45
  const list_query_builder_1 = require("../helpers/list-query-builder/list-query-builder");
44
46
  const order_calculator_1 = require("../helpers/order-calculator/order-calculator");
@@ -105,11 +107,11 @@ let OrderService = class OrderService {
105
107
  to,
106
108
  }));
107
109
  }
108
- findAll(ctx, options) {
110
+ findAll(ctx, options, relations) {
109
111
  return this.listQueryBuilder
110
112
  .build(order_entity_1.Order, options, {
111
113
  ctx,
112
- relations: [
114
+ relations: relations !== null && relations !== void 0 ? relations : [
113
115
  'lines',
114
116
  'customer',
115
117
  'lines.productVariant',
@@ -130,72 +132,81 @@ let OrderService = class OrderService {
130
132
  };
131
133
  });
132
134
  }
133
- async findOne(ctx, orderId) {
134
- const qb = this.connection
135
- .getRepository(ctx, order_entity_1.Order)
136
- .createQueryBuilder('order')
137
- .leftJoin('order.channels', 'channel')
138
- .leftJoinAndSelect('order.customer', 'customer')
139
- .leftJoinAndSelect('order.shippingLines', 'shippingLines')
140
- .leftJoinAndSelect('order.surcharges', 'surcharges')
141
- .leftJoinAndSelect('customer.user', 'user')
142
- .leftJoinAndSelect('order.lines', 'lines')
143
- .leftJoinAndSelect('lines.productVariant', 'productVariant')
144
- .leftJoinAndSelect('productVariant.taxCategory', 'prodVariantTaxCategory')
145
- .leftJoinAndSelect('productVariant.productVariantPrices', 'prices')
146
- .leftJoinAndSelect('productVariant.translations', 'translations')
147
- .leftJoinAndSelect('lines.featuredAsset', 'featuredAsset')
148
- .leftJoinAndSelect('lines.items', 'items')
149
- .leftJoinAndSelect('items.fulfillments', 'fulfillments')
150
- .leftJoinAndSelect('lines.taxCategory', 'lineTaxCategory')
135
+ async findOne(ctx, orderId, relations) {
136
+ const qb = this.connection.getRepository(ctx, order_entity_1.Order).createQueryBuilder('order');
137
+ const effectiveRelations = relations !== null && relations !== void 0 ? relations : [
138
+ 'channels',
139
+ 'customer',
140
+ 'customer.user',
141
+ 'lines',
142
+ 'lines.items',
143
+ 'lines.items.fulfillments',
144
+ 'lines.productVariant',
145
+ 'lines.productVariant.taxCategory',
146
+ 'lines.productVariant.productVariantPrices',
147
+ 'lines.productVariant.translations',
148
+ 'lines.featuredAsset',
149
+ 'lines.taxCategory',
150
+ 'shippingLines',
151
+ 'surcharges',
152
+ ];
153
+ if (relations &&
154
+ effectiveRelations.includes('lines.productVariant') &&
155
+ !effectiveRelations.includes('lines.productVariant.taxCategory')) {
156
+ effectiveRelations.push('lines.productVariant.taxCategory');
157
+ }
158
+ FindOptionsUtils_1.FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, {
159
+ relations: effectiveRelations,
160
+ });
161
+ qb.leftJoin('order.channels', 'channel')
151
162
  .where('order.id = :orderId', { orderId })
152
- .andWhere('channel.id = :channelId', { channelId: ctx.channelId })
153
- .addOrderBy('lines.createdAt', 'ASC')
154
- .addOrderBy('items.createdAt', 'ASC');
163
+ .andWhere('channel.id = :channelId', { channelId: ctx.channelId });
164
+ if (effectiveRelations.includes('lines') && effectiveRelations.includes('lines.items')) {
165
+ qb.addOrderBy('order__lines.createdAt', 'ASC').addOrderBy('order__lines__items.createdAt', 'ASC');
166
+ }
155
167
  // tslint:disable-next-line:no-non-null-assertion
156
168
  FindOptionsUtils_1.FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias.metadata);
157
169
  const order = await qb.getOne();
158
170
  if (order) {
159
- for (const line of order.lines) {
160
- line.productVariant = (0, translate_entity_1.translateDeep)(await this.productVariantService.applyChannelPriceAndTax(line.productVariant, ctx, order), ctx.languageCode);
171
+ if (effectiveRelations.includes('lines.productVariant')) {
172
+ for (const line of order.lines) {
173
+ line.productVariant = (0, translate_entity_1.translateDeep)(await this.productVariantService.applyChannelPriceAndTax(line.productVariant, ctx, order), ctx.languageCode);
174
+ }
161
175
  }
162
176
  return order;
163
177
  }
164
178
  }
165
- async findOneByCode(ctx, orderCode) {
179
+ async findOneByCode(ctx, orderCode, relations) {
166
180
  const order = await this.connection.getRepository(ctx, order_entity_1.Order).findOne({
167
181
  relations: ['customer'],
168
182
  where: {
169
183
  code: orderCode,
170
184
  },
171
185
  });
172
- return order ? this.findOne(ctx, order.id) : undefined;
186
+ return order ? this.findOne(ctx, order.id, relations) : undefined;
173
187
  }
174
- async findByCustomerId(ctx, customerId, options) {
188
+ async findOneByOrderLineId(ctx, orderLineId, relations) {
189
+ const order = await this.connection
190
+ .getRepository(ctx, order_entity_1.Order)
191
+ .createQueryBuilder('order')
192
+ .innerJoin('order.lines', 'line', 'line.id = :orderLineId', { orderLineId })
193
+ .getOne();
194
+ return order ? this.findOne(ctx, order.id, relations) : undefined;
195
+ }
196
+ async findByCustomerId(ctx, customerId, options, relations) {
197
+ const effectiveRelations = (relations !== null && relations !== void 0 ? relations : ['lines', 'lines.items', 'customer', 'channels', 'shippingLines']).filter(r =>
198
+ // Don't join productVariant because it messes with the
199
+ // price calculation in certain edge-case field resolver scenarios
200
+ !r.includes('productVariant'));
175
201
  return this.listQueryBuilder
176
202
  .build(order_entity_1.Order, options, {
177
- relations: [
178
- 'lines',
179
- 'lines.items',
180
- 'lines.productVariant',
181
- 'lines.productVariant.options',
182
- 'customer',
183
- 'channels',
184
- 'shippingLines',
185
- ],
203
+ relations: relations !== null && relations !== void 0 ? relations : ['lines', 'lines.items', 'customer', 'channels', 'shippingLines'],
186
204
  channelId: ctx.channelId,
187
205
  ctx,
188
206
  })
189
207
  .andWhere('order.customer.id = :customerId', { customerId })
190
208
  .getManyAndCount()
191
209
  .then(([items, totalItems]) => {
192
- items.forEach(item => {
193
- item.lines.forEach(line => {
194
- line.productVariant = (0, translate_entity_1.translateDeep)(line.productVariant, ctx.languageCode, [
195
- 'options',
196
- ]);
197
- });
198
- });
199
210
  return {
200
211
  items,
201
212
  totalItems,
@@ -299,7 +310,7 @@ let OrderService = class OrderService {
299
310
  }
300
311
  await this.channelService.assignToCurrentChannel(newOrder, ctx);
301
312
  const order = await this.connection.getRepository(ctx, order_entity_1.Order).save(newOrder);
302
- this.eventBus.publish(new index_2.OrderEvent(ctx, order, 'created'));
313
+ this.eventBus.publish(new index_3.OrderEvent(ctx, order, 'created'));
303
314
  const transitionResult = await this.transitionToState(ctx, order.id, 'AddingItems');
304
315
  if ((0, error_result_1.isGraphQlErrorResult)(transitionResult)) {
305
316
  // this should never occur, so we will throw rather than return
@@ -316,7 +327,7 @@ let OrderService = class OrderService {
316
327
  order = (0, patch_entity_1.patchEntity)(order, { customFields });
317
328
  await this.customFieldRelationService.updateRelations(ctx, order_entity_1.Order, { customFields }, order);
318
329
  const updatedOrder = await this.connection.getRepository(ctx, order_entity_1.Order).save(order);
319
- this.eventBus.publish(new index_2.OrderEvent(ctx, updatedOrder, 'updated'));
330
+ this.eventBus.publish(new index_3.OrderEvent(ctx, updatedOrder, 'updated'));
320
331
  return updatedOrder;
321
332
  }
322
333
  /**
@@ -388,7 +399,7 @@ let OrderService = class OrderService {
388
399
  if (correctedQuantity === 0) {
389
400
  order.lines = order.lines.filter(l => !(0, utils_1.idsAreEqual)(l.id, orderLine.id));
390
401
  await this.connection.getRepository(ctx, order_line_entity_1.OrderLine).remove(orderLine);
391
- this.eventBus.publish(new index_5.OrderLineEvent(ctx, order, orderLine, 'deleted'));
402
+ this.eventBus.publish(new index_6.OrderLineEvent(ctx, order, orderLine, 'deleted'));
392
403
  updatedOrderLines = [];
393
404
  }
394
405
  else {
@@ -417,7 +428,7 @@ let OrderService = class OrderService {
417
428
  order.lines = order.lines.filter(line => !(0, utils_1.idsAreEqual)(line.id, orderLineId));
418
429
  const updatedOrder = await this.applyPriceAdjustments(ctx, order);
419
430
  await this.connection.getRepository(ctx, order_line_entity_1.OrderLine).remove(orderLine);
420
- this.eventBus.publish(new index_5.OrderLineEvent(ctx, order, orderLine, 'deleted'));
431
+ this.eventBus.publish(new index_6.OrderLineEvent(ctx, order, orderLine, 'deleted'));
421
432
  return updatedOrder;
422
433
  }
423
434
  /**
@@ -484,7 +495,7 @@ let OrderService = class OrderService {
484
495
  type: generated_types_1.HistoryEntryType.ORDER_COUPON_APPLIED,
485
496
  data: { couponCode, promotionId: validationResult.id },
486
497
  });
487
- this.eventBus.publish(new index_1.CouponCodeEvent(ctx, couponCode, orderId, 'assigned'));
498
+ this.eventBus.publish(new index_2.CouponCodeEvent(ctx, couponCode, orderId, 'assigned'));
488
499
  return this.applyPriceAdjustments(ctx, order);
489
500
  }
490
501
  /**
@@ -508,7 +519,7 @@ let OrderService = class OrderService {
508
519
  type: generated_types_1.HistoryEntryType.ORDER_COUPON_REMOVED,
509
520
  data: { couponCode },
510
521
  });
511
- this.eventBus.publish(new index_1.CouponCodeEvent(ctx, couponCode, orderId, 'removed'));
522
+ this.eventBus.publish(new index_2.CouponCodeEvent(ctx, couponCode, orderId, 'removed'));
512
523
  const result = await this.applyPriceAdjustments(ctx, order);
513
524
  await this.connection.getRepository(ctx, order_item_entity_1.OrderItem).save(affectedOrderItems);
514
525
  return result;
@@ -649,7 +660,7 @@ let OrderService = class OrderService {
649
660
  return new generated_graphql_shop_errors_1.OrderStateTransitionError({ transitionError, fromState, toState: state });
650
661
  }
651
662
  await this.connection.getRepository(ctx, order_entity_1.Order).save(order, { reload: false });
652
- this.eventBus.publish(new index_3.OrderStateTransitionEvent(fromState, state, ctx, order));
663
+ this.eventBus.publish(new index_4.OrderStateTransitionEvent(fromState, state, ctx, order));
653
664
  return order;
654
665
  }
655
666
  /**
@@ -681,20 +692,20 @@ let OrderService = class OrderService {
681
692
  * * Shipping or billing address changes
682
693
  *
683
694
  * Setting the `dryRun` input property to `true` will apply all changes, including updating the price of the
684
- * Order, but will not actually persist any of those changes to the database.
695
+ * Order, except history entry and additional payment actions.
696
+ *
697
+ * __Using dryRun option, you must wrap function call in transaction manually.__
698
+ *
685
699
  */
686
700
  async modifyOrder(ctx, input) {
687
- await this.connection.startTransaction(ctx);
688
701
  const order = await this.getOrderOrThrow(ctx, input.orderId);
689
702
  const result = await this.orderModifier.modifyOrder(ctx, input, order);
690
- if (input.dryRun) {
691
- await this.connection.rollBackTransaction(ctx);
692
- return (0, error_result_1.isGraphQlErrorResult)(result) ? result : result.order;
693
- }
694
703
  if ((0, error_result_1.isGraphQlErrorResult)(result)) {
695
- await this.connection.rollBackTransaction(ctx);
696
704
  return result;
697
705
  }
706
+ if (input.dryRun) {
707
+ return result.order;
708
+ }
698
709
  await this.historyService.createHistoryEntryForOrder({
699
710
  ctx,
700
711
  orderId: input.orderId,
@@ -703,7 +714,6 @@ let OrderService = class OrderService {
703
714
  modificationId: result.modification.id,
704
715
  },
705
716
  });
706
- await this.connection.commitOpenTransaction(ctx);
707
717
  return this.getOrderOrThrow(ctx, input.orderId);
708
718
  }
709
719
  async handleFulfillmentStateTransitByOrder(ctx, order, fromState, toState) {
@@ -753,7 +763,7 @@ let OrderService = class OrderService {
753
763
  */
754
764
  async addPaymentToOrder(ctx, orderId, input) {
755
765
  const order = await this.getOrderOrThrow(ctx, orderId);
756
- if (order.state !== 'ArrangingPayment') {
766
+ if (!this.canAddPaymentToOrder(order)) {
757
767
  return new generated_graphql_shop_errors_1.OrderPaymentStateError();
758
768
  }
759
769
  order.payments = await this.getOrderPayments(ctx, order.id);
@@ -773,6 +783,20 @@ let OrderService = class OrderService {
773
783
  }
774
784
  return this.transitionOrderIfTotalIsCovered(ctx, order);
775
785
  }
786
+ /**
787
+ * @description
788
+ * We can add a Payment to the order if:
789
+ * 1. the Order is in the `ArrangingPayment` state or
790
+ * 2. the Order's current state can transition to `PaymentAuthorized` and `PaymentSettled`
791
+ */
792
+ canAddPaymentToOrder(order) {
793
+ if (order.state === 'ArrangingPayment') {
794
+ return true;
795
+ }
796
+ const canTransitionToPaymentAuthorized = this.orderStateMachine.canTransition(order.state, 'PaymentAuthorized');
797
+ const canTransitionToPaymentSettled = this.orderStateMachine.canTransition(order.state, 'PaymentSettled');
798
+ return canTransitionToPaymentAuthorized && canTransitionToPaymentSettled;
799
+ }
776
800
  async transitionOrderIfTotalIsCovered(ctx, order) {
777
801
  const orderId = order.id;
778
802
  if ((0, order_utils_1.orderTotalIsCovered)(order, 'Settled') && order.state !== 'PaymentSettled') {
@@ -983,7 +1007,7 @@ let OrderService = class OrderService {
983
1007
  }
984
1008
  const fullOrder = await this.findOne(ctx, order.id);
985
1009
  const soldItems = items.filter(i => !!i.fulfillment);
986
- const allocatedItems = items.filter(i => !i.fulfillment);
1010
+ const allocatedItems = await this.getAllocatedItems(ctx, items);
987
1011
  await this.stockMovementService.createCancellationsForOrderItems(ctx, soldItems);
988
1012
  await this.stockMovementService.createReleasesForOrderItems(ctx, allocatedItems);
989
1013
  items.forEach(i => (i.cancelled = true));
@@ -1017,6 +1041,25 @@ let OrderService = class OrderService {
1017
1041
  });
1018
1042
  return (0, order_utils_1.orderItemsAreAllCancelled)(orderWithItems);
1019
1043
  }
1044
+ async getAllocatedItems(ctx, items) {
1045
+ const allocatedItems = [];
1046
+ const allocationMap = new Map();
1047
+ for (const item of items) {
1048
+ let allocation = allocationMap.get(item.lineId);
1049
+ if (!allocation) {
1050
+ allocation = await this.connection
1051
+ .getRepository(ctx, allocation_entity_1.Allocation)
1052
+ .createQueryBuilder('allocation')
1053
+ .where('allocation.orderLine = :lineId', { lineId: item.lineId })
1054
+ .getOne();
1055
+ allocationMap.set(item.lineId, allocation || false);
1056
+ }
1057
+ if (allocation && !item.fulfillment) {
1058
+ allocatedItems.push(item);
1059
+ }
1060
+ }
1061
+ return allocatedItems;
1062
+ }
1020
1063
  /**
1021
1064
  * @description
1022
1065
  * Creates a {@link Refund} against the order and in doing so invokes the `createRefund()` method of the
@@ -1066,7 +1109,7 @@ let OrderService = class OrderService {
1066
1109
  const toState = 'Settled';
1067
1110
  await this.refundStateMachine.transition(ctx, refund.payment.order, refund, toState);
1068
1111
  await this.connection.getRepository(ctx, refund_entity_1.Refund).save(refund);
1069
- this.eventBus.publish(new index_4.RefundStateTransitionEvent(fromState, toState, ctx, refund, refund.payment.order));
1112
+ this.eventBus.publish(new index_5.RefundStateTransitionEvent(fromState, toState, ctx, refund, refund.payment.order));
1070
1113
  return refund;
1071
1114
  }
1072
1115
  /**
@@ -1134,6 +1177,34 @@ let OrderService = class OrderService {
1134
1177
  };
1135
1178
  }
1136
1179
  }
1180
+ /**
1181
+ * @description
1182
+ * Deletes an Order, ensuring that any Sessions that reference this Order are dereferenced before deletion.
1183
+ *
1184
+ * @since 1.5.0
1185
+ */
1186
+ async deleteOrder(ctx, orderOrId) {
1187
+ const orderToDelete = orderOrId instanceof order_entity_1.Order
1188
+ ? orderOrId
1189
+ : await this.connection
1190
+ .getRepository(ctx, order_entity_1.Order)
1191
+ .findOneOrFail(orderOrId, { relations: ['lines'] });
1192
+ // If there is a Session referencing the Order to be deleted, we must first remove that
1193
+ // reference in order to avoid a foreign key error. See https://github.com/vendure-ecommerce/vendure/issues/1454
1194
+ const sessions = await this.connection
1195
+ .getRepository(ctx, index_1.Session)
1196
+ .find({ where: { activeOrderId: orderToDelete.id } });
1197
+ if (sessions.length) {
1198
+ await this.connection
1199
+ .getRepository(ctx, index_1.Session)
1200
+ .update(sessions.map(s => s.id), { activeOrder: null });
1201
+ }
1202
+ // TODO: v2 - Will not be needed after adding `{ onDelete: 'CASCADE' }` constraint to ShippingLine.order
1203
+ for (const shippingLine of orderToDelete.shippingLines) {
1204
+ await this.connection.getRepository(ctx, shipping_line_entity_1.ShippingLine).delete(shippingLine.id);
1205
+ }
1206
+ await this.connection.getRepository(ctx, order_entity_1.Order).delete(orderToDelete.id);
1207
+ }
1137
1208
  /**
1138
1209
  * @description
1139
1210
  * When a guest user with an anonymous Order signs in and has an existing Order associated with that Customer,
@@ -1151,11 +1222,7 @@ let OrderService = class OrderService {
1151
1222
  const { orderToDelete, linesToInsert, linesToDelete, linesToModify } = mergeResult;
1152
1223
  let { order } = mergeResult;
1153
1224
  if (orderToDelete) {
1154
- // TODO: v2 - Will not be needed after adding `{ onDelete: 'CASCADE' }` constraint to ShippingLine.order
1155
- for (const shippingLine of orderToDelete.shippingLines) {
1156
- await this.connection.getRepository(ctx, shipping_line_entity_1.ShippingLine).delete(shippingLine.id);
1157
- }
1158
- await this.connection.getRepository(ctx, order_entity_1.Order).delete(orderToDelete.id);
1225
+ await this.deleteOrder(ctx, orderToDelete);
1159
1226
  }
1160
1227
  if (order && linesToInsert) {
1161
1228
  const orderId = order.id;
@@ -1244,7 +1311,9 @@ let OrderService = class OrderService {
1244
1311
  }
1245
1312
  }
1246
1313
  /**
1247
- * Applies promotions, taxes and shipping to the Order.
1314
+ * @description
1315
+ * Applies promotions, taxes and shipping to the Order. If the `updatedOrderLines` argument is passed in,
1316
+ * then all of those OrderLines will have their prices re-calculated using the configured {@link OrderItemPriceCalculationStrategy}.
1248
1317
  */
1249
1318
  async applyPriceAdjustments(ctx, order, updatedOrderLines) {
1250
1319
  var _a, _b;