@chevre/domain 21.2.0-alpha.15 → 21.2.0-alpha.151

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 (308) hide show
  1. package/example/src/chevre/aggregateEventReservation.ts +1 -1
  2. package/example/src/chevre/aggregation/aggregateSystem.ts +85 -27
  3. package/example/src/chevre/countDelayedTasks.ts +7 -2
  4. package/example/src/chevre/deleteTasksByName.ts +10 -2
  5. package/example/src/chevre/findScreeningRoomsByBranchCode.ts +4 -3
  6. package/example/src/chevre/importEventsFromCOA.ts +3 -4
  7. package/example/src/chevre/lockStockHolder.ts +5 -2
  8. package/example/src/chevre/migrateOrderAdditionalProperties.ts +85 -0
  9. package/example/src/chevre/migrateScreeningEventSeriesVersion.ts +79 -0
  10. package/example/src/chevre/processPay.ts +5 -1
  11. package/example/src/chevre/processRegisterMembership.ts +8 -4
  12. package/example/src/chevre/processRegisterPaymentCard.ts +8 -4
  13. package/example/src/chevre/processReserve.ts +5 -2
  14. package/example/src/chevre/saveTasks.ts +13 -10
  15. package/example/src/chevre/searchAbortedTasks.ts +34 -0
  16. package/example/src/chevre/searchActions.ts +33 -0
  17. package/example/src/chevre/searchEventSeats.ts +5 -2
  18. package/example/src/chevre/searchHoldReservations.ts +38 -0
  19. package/example/src/chevre/searchPaymentServiceProviders.ts +39 -0
  20. package/example/src/chevre/searchPermissions.ts +54 -0
  21. package/example/src/chevre/searchReservationNumbersByOrderNumbers.ts +37 -1
  22. package/example/src/chevre/searchScreeningRooms.ts +35 -0
  23. package/example/src/chevre/searchSendEmailActions.ts +44 -0
  24. package/example/src/chevre/syncScreeningRooms.ts +22 -0
  25. package/example/src/chevre/syncScreeningRoomsAll.ts +44 -0
  26. package/example/src/chevre/task/executeTasks.ts +26 -0
  27. package/example/src/chevre/transaction/findCreditCard.ts +1 -1
  28. package/example/src/chevre/transaction/orderMembershipService.ts +1 -1
  29. package/example/src/chevre/transaction/processReturnOrder.ts +40 -0
  30. package/example/src/chevre/transaction/startExportTasks.ts +2 -1
  31. package/example/src/chevre/updateTransaction.ts +1 -1
  32. package/example/src/playOnMoment.ts +24 -0
  33. package/lib/chevre/credentials.d.ts +1 -0
  34. package/lib/chevre/credentials.js +2 -1
  35. package/lib/chevre/eventEmitter/assetTransaction.d.ts +21 -0
  36. package/lib/chevre/eventEmitter/assetTransaction.js +25 -0
  37. package/lib/chevre/eventEmitter/task.d.ts +2 -1
  38. package/lib/chevre/eventEmitter/task.js +1 -4
  39. package/lib/chevre/eventEmitter/transaction.d.ts +1 -1
  40. package/lib/chevre/eventEmitter/transaction.js +1 -4
  41. package/lib/chevre/eventEmitter.d.ts +2 -1
  42. package/lib/chevre/eventEmitter.js +3 -1
  43. package/lib/chevre/index.d.ts +1 -1
  44. package/lib/chevre/index.js +2 -2
  45. package/lib/chevre/repo/account.js +3 -2
  46. package/lib/chevre/repo/accountTransaction.d.ts +3 -1
  47. package/lib/chevre/repo/accountTransaction.js +3 -2
  48. package/lib/chevre/repo/action.d.ts +42 -2
  49. package/lib/chevre/repo/action.js +130 -57
  50. package/lib/chevre/repo/additionalProperty.js +2 -1
  51. package/lib/chevre/repo/aggregation.d.ts +3 -0
  52. package/lib/chevre/repo/aggregation.js +3 -0
  53. package/lib/chevre/repo/assetTransaction.d.ts +23 -8
  54. package/lib/chevre/repo/assetTransaction.js +253 -80
  55. package/lib/chevre/repo/categoryCode.d.ts +1 -1
  56. package/lib/chevre/repo/categoryCode.js +37 -25
  57. package/lib/chevre/repo/code.js +3 -2
  58. package/lib/chevre/repo/comment.d.ts +4 -1
  59. package/lib/chevre/repo/comment.js +22 -6
  60. package/lib/chevre/repo/confirmationNumber.d.ts +0 -1
  61. package/lib/chevre/repo/confirmationNumber.js +3 -15
  62. package/lib/chevre/repo/creativeWork.d.ts +2 -4
  63. package/lib/chevre/repo/creativeWork.js +35 -12
  64. package/lib/chevre/repo/customer.js +2 -1
  65. package/lib/chevre/repo/emailMessage.d.ts +1 -27
  66. package/lib/chevre/repo/emailMessage.js +2 -1
  67. package/lib/chevre/repo/event.d.ts +27 -1
  68. package/lib/chevre/repo/event.js +67 -33
  69. package/lib/chevre/repo/member.d.ts +14 -0
  70. package/lib/chevre/repo/member.js +31 -3
  71. package/lib/chevre/repo/merchantReturnPolicy.d.ts +1 -3
  72. package/lib/chevre/repo/merchantReturnPolicy.js +2 -1
  73. package/lib/chevre/repo/mongoose/schemas/account.d.ts +4 -2
  74. package/lib/chevre/repo/mongoose/schemas/accountTitle.d.ts +29 -3
  75. package/lib/chevre/repo/mongoose/schemas/accountTransaction.d.ts +31 -3
  76. package/lib/chevre/repo/mongoose/schemas/accountTransaction.js +1 -1
  77. package/lib/chevre/repo/mongoose/schemas/accountingReport.d.ts +13 -3
  78. package/lib/chevre/repo/mongoose/schemas/action.d.ts +43 -3
  79. package/lib/chevre/repo/mongoose/schemas/action.js +19 -1
  80. package/lib/chevre/repo/mongoose/schemas/additionalProperty.d.ts +17 -3
  81. package/lib/chevre/repo/mongoose/schemas/aggregation.d.ts +4 -2
  82. package/lib/chevre/repo/mongoose/schemas/assetTransaction.d.ts +44 -3
  83. package/lib/chevre/repo/mongoose/schemas/assetTransaction.js +32 -19
  84. package/lib/chevre/repo/mongoose/schemas/authorization.d.ts +19 -3
  85. package/lib/chevre/repo/mongoose/schemas/authorization.js +1 -1
  86. package/lib/chevre/repo/mongoose/schemas/categoryCode.d.ts +25 -3
  87. package/lib/chevre/repo/mongoose/schemas/comments.d.ts +27 -3
  88. package/lib/chevre/repo/mongoose/schemas/comments.js +1 -1
  89. package/lib/chevre/repo/mongoose/schemas/creativeWork.d.ts +43 -3
  90. package/lib/chevre/repo/mongoose/schemas/customer.d.ts +25 -3
  91. package/lib/chevre/repo/mongoose/schemas/emailMessages.d.ts +21 -3
  92. package/lib/chevre/repo/mongoose/schemas/event.d.ts +71 -3
  93. package/lib/chevre/repo/mongoose/schemas/holdReservation.d.ts +75 -0
  94. package/lib/chevre/repo/mongoose/schemas/holdReservation.js +93 -0
  95. package/lib/chevre/repo/mongoose/schemas/member.d.ts +13 -3
  96. package/lib/chevre/repo/mongoose/schemas/merchantReturnPolicy.d.ts +21 -3
  97. package/lib/chevre/repo/mongoose/schemas/offer.d.ts +65 -3
  98. package/lib/chevre/repo/mongoose/schemas/offerCatalog.d.ts +27 -3
  99. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.d.ts +74 -0
  100. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.js +45 -0
  101. package/lib/chevre/repo/mongoose/schemas/order.d.ts +51 -3
  102. package/lib/chevre/repo/mongoose/schemas/order.js +1 -1
  103. package/lib/chevre/repo/mongoose/schemas/ownershipInfo.d.ts +25 -3
  104. package/lib/chevre/repo/mongoose/schemas/ownershipInfo.js +1 -1
  105. package/lib/chevre/repo/mongoose/schemas/place.d.ts +55 -3
  106. package/lib/chevre/repo/mongoose/schemas/place.js +16 -1
  107. package/lib/chevre/repo/mongoose/schemas/priceSpecification.d.ts +29 -3
  108. package/lib/chevre/repo/mongoose/schemas/product.d.ts +31 -3
  109. package/lib/chevre/repo/mongoose/schemas/product.js +6 -0
  110. package/lib/chevre/repo/mongoose/schemas/project.d.ts +23 -3
  111. package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +63 -5
  112. package/lib/chevre/repo/mongoose/schemas/reservation.js +1 -1
  113. package/lib/chevre/repo/mongoose/schemas/role.d.ts +11 -3
  114. package/lib/chevre/repo/mongoose/schemas/seller.d.ts +31 -3
  115. package/lib/chevre/repo/mongoose/schemas/seller.js +6 -0
  116. package/lib/chevre/repo/mongoose/schemas/serviceOutput.d.ts +11 -3
  117. package/lib/chevre/repo/mongoose/schemas/serviceOutput.js +1 -1
  118. package/lib/chevre/repo/mongoose/schemas/task.d.ts +30 -3
  119. package/lib/chevre/repo/mongoose/schemas/task.js +2 -1
  120. package/lib/chevre/repo/mongoose/schemas/telemetry.d.ts +21 -3
  121. package/lib/chevre/repo/mongoose/schemas/transaction.d.ts +40 -3
  122. package/lib/chevre/repo/mongoose/schemas/transaction.js +2 -1
  123. package/lib/chevre/repo/mongoose/schemas/trip.d.ts +11 -3
  124. package/lib/chevre/repo/offer.js +3 -2
  125. package/lib/chevre/repo/offerCatalog.js +0 -27
  126. package/lib/chevre/repo/offerItemCondition.d.ts +22 -0
  127. package/lib/chevre/repo/offerItemCondition.js +121 -0
  128. package/lib/chevre/repo/order.d.ts +55 -3
  129. package/lib/chevre/repo/order.js +62 -10
  130. package/lib/chevre/repo/ownershipInfo.js +2 -7
  131. package/lib/chevre/repo/place.d.ts +189 -27
  132. package/lib/chevre/repo/place.js +1696 -702
  133. package/lib/chevre/repo/priceSpecification.js +3 -2
  134. package/lib/chevre/repo/product.d.ts +27 -3
  135. package/lib/chevre/repo/product.js +142 -5
  136. package/lib/chevre/repo/project.js +2 -1
  137. package/lib/chevre/repo/reservation.d.ts +20 -4
  138. package/lib/chevre/repo/reservation.js +40 -59
  139. package/lib/chevre/repo/role.d.ts +7 -0
  140. package/lib/chevre/repo/role.js +39 -2
  141. package/lib/chevre/repo/seller.d.ts +1 -1
  142. package/lib/chevre/repo/seller.js +44 -23
  143. package/lib/chevre/repo/serviceOutput.js +2 -1
  144. package/lib/chevre/repo/stockHolder.d.ts +143 -7
  145. package/lib/chevre/repo/stockHolder.js +622 -104
  146. package/lib/chevre/repo/task.d.ts +42 -2
  147. package/lib/chevre/repo/task.js +68 -20
  148. package/lib/chevre/repo/transaction.d.ts +21 -2
  149. package/lib/chevre/repo/transaction.js +160 -48
  150. package/lib/chevre/repo/trip.js +2 -1
  151. package/lib/chevre/repository.d.ts +5 -2
  152. package/lib/chevre/repository.js +8 -4
  153. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +18 -8
  154. package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.js +19 -8
  155. package/lib/chevre/service/aggregation/system.d.ts +110 -23
  156. package/lib/chevre/service/aggregation/system.js +213 -91
  157. package/lib/chevre/service/assetTransaction/cancelReservation.js +1 -28
  158. package/lib/chevre/service/assetTransaction/moneyTransfer.js +2 -24
  159. package/lib/chevre/service/assetTransaction/pay/account/validation.js +1 -1
  160. package/lib/chevre/service/assetTransaction/pay/potentialActions.js +17 -1
  161. package/lib/chevre/service/assetTransaction/pay.d.ts +5 -1
  162. package/lib/chevre/service/assetTransaction/pay.js +20 -34
  163. package/lib/chevre/service/assetTransaction/refund.js +2 -24
  164. package/lib/chevre/service/assetTransaction/registerService.js +1 -25
  165. package/lib/chevre/service/assetTransaction/reserve/factory.d.ts +15 -5
  166. package/lib/chevre/service/assetTransaction/reserve/factory.js +122 -58
  167. package/lib/chevre/service/assetTransaction/reserve.d.ts +10 -1
  168. package/lib/chevre/service/assetTransaction/reserve.js +93 -70
  169. package/lib/chevre/service/assetTransaction.d.ts +6 -0
  170. package/lib/chevre/service/assetTransaction.js +9 -4
  171. package/lib/chevre/service/event.d.ts +3 -0
  172. package/lib/chevre/service/event.js +55 -22
  173. package/lib/chevre/service/iam.d.ts +6 -2
  174. package/lib/chevre/service/iam.js +23 -9
  175. package/lib/chevre/service/notification/factory.js +2 -2
  176. package/lib/chevre/service/notification.d.ts +3 -1
  177. package/lib/chevre/service/notification.js +41 -7
  178. package/lib/chevre/service/offer/event/authorize.d.ts +3 -0
  179. package/lib/chevre/service/offer/event/authorize.js +8 -2
  180. package/lib/chevre/service/offer/event/factory.d.ts +3 -0
  181. package/lib/chevre/service/offer/event/factory.js +16 -5
  182. package/lib/chevre/service/offer/event/importFromCOA.js +2 -2
  183. package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -0
  184. package/lib/chevre/service/offer/event/voidTransaction.js +17 -1
  185. package/lib/chevre/service/offer/eventServiceByCOA.js +7 -9
  186. package/lib/chevre/service/offer/product.js +2 -2
  187. package/lib/chevre/service/offer.d.ts +16 -8
  188. package/lib/chevre/service/offer.js +72 -9
  189. package/lib/chevre/service/order/deleteOrder.d.ts +3 -1
  190. package/lib/chevre/service/order/deleteOrder.js +8 -8
  191. package/lib/chevre/service/order/onOrderStatusChanged/factory.d.ts +5 -2
  192. package/lib/chevre/service/order/onOrderStatusChanged/factory.js +41 -81
  193. package/lib/chevre/service/order/onOrderStatusChanged.js +1 -3
  194. package/lib/chevre/service/order/onOrderUpdated.d.ts +16 -0
  195. package/lib/chevre/service/order/onOrderUpdated.js +22 -0
  196. package/lib/chevre/service/order/placeOrder.d.ts +1 -0
  197. package/lib/chevre/service/order/placeOrder.js +41 -24
  198. package/lib/chevre/service/order/returnOrder.d.ts +1 -0
  199. package/lib/chevre/service/order/returnOrder.js +7 -12
  200. package/lib/chevre/service/order/sendOrder.d.ts +1 -0
  201. package/lib/chevre/service/order/sendOrder.js +7 -10
  202. package/lib/chevre/service/order.d.ts +2 -1
  203. package/lib/chevre/service/order.js +3 -1
  204. package/lib/chevre/service/payment/any/onPaid.js +1 -1
  205. package/lib/chevre/service/payment/any/onRefund.js +1 -1
  206. package/lib/chevre/service/payment/any.d.ts +9 -5
  207. package/lib/chevre/service/payment/any.js +80 -18
  208. package/lib/chevre/service/payment/creditCard.d.ts +1 -1
  209. package/lib/chevre/service/payment/creditCard.js +23 -17
  210. package/lib/chevre/service/payment/movieTicket/checkByIdentifier.d.ts +8 -7
  211. package/lib/chevre/service/payment/movieTicket/factory.d.ts +1 -1
  212. package/lib/chevre/service/payment/movieTicket/getCredentials.d.ts +1 -1
  213. package/lib/chevre/service/payment/movieTicket/getCredentials.js +1 -1
  214. package/lib/chevre/service/payment/movieTicket/validation.d.ts +6 -6
  215. package/lib/chevre/service/payment/movieTicket/validation.js +65 -37
  216. package/lib/chevre/service/payment/movieTicket.d.ts +2 -2
  217. package/lib/chevre/service/payment/movieTicket.js +7 -6
  218. package/lib/chevre/service/product.js +1 -5
  219. package/lib/chevre/service/report/telemetry.d.ts +0 -11
  220. package/lib/chevre/service/report/telemetry.js +21 -24
  221. package/lib/chevre/service/reserve/cancelReservation.d.ts +5 -3
  222. package/lib/chevre/service/reserve/cancelReservation.js +162 -142
  223. package/lib/chevre/service/reserve/checkInReservation.d.ts +9 -4
  224. package/lib/chevre/service/reserve/checkInReservation.js +77 -3
  225. package/lib/chevre/service/reserve/confirmReservation.d.ts +7 -4
  226. package/lib/chevre/service/reserve/confirmReservation.js +133 -58
  227. package/lib/chevre/service/reserve/factory.d.ts +1 -1
  228. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.d.ts +17 -5
  229. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +26 -24
  230. package/lib/chevre/service/reserve/potentialActions/onReservationCheckedIn.js +2 -3
  231. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +2 -31
  232. package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +2 -3
  233. package/lib/chevre/service/reserve/useReservation.d.ts +7 -3
  234. package/lib/chevre/service/reserve/useReservation.js +61 -71
  235. package/lib/chevre/service/reserve/verifyToken4reservation.d.ts +15 -0
  236. package/lib/chevre/service/reserve/verifyToken4reservation.js +56 -0
  237. package/lib/chevre/service/reserve.d.ts +3 -2
  238. package/lib/chevre/service/reserve.js +4 -2
  239. package/lib/chevre/service/task/aggregateScreeningEvent.js +1 -1
  240. package/lib/chevre/service/task/cancelPendingReservation.js +6 -2
  241. package/lib/chevre/service/task/cancelReservation.js +1 -1
  242. package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +1 -1
  243. package/lib/chevre/service/task/deleteTransaction.js +10 -8
  244. package/lib/chevre/service/task/importOffersFromCOA.js +4 -0
  245. package/lib/chevre/service/task/onAuthorizationCreated.d.ts +7 -0
  246. package/lib/chevre/service/task/onAuthorizationCreated.js +108 -0
  247. package/lib/chevre/service/task/onEventChanged.d.ts +7 -0
  248. package/lib/chevre/service/task/{deleteOrder.js → onEventChanged.js} +8 -14
  249. package/lib/chevre/service/task/onResourceUpdated.d.ts +10 -0
  250. package/lib/chevre/service/task/onResourceUpdated.js +418 -0
  251. package/lib/chevre/service/task/placeOrder.js +1 -1
  252. package/lib/chevre/service/task/reserve.js +10 -7
  253. package/lib/chevre/service/task/returnOrder.js +1 -1
  254. package/lib/chevre/service/task/returnPayTransaction.js +2 -12
  255. package/lib/chevre/service/task/sendOrder.js +1 -1
  256. package/lib/chevre/service/task/syncScreeningRooms.d.ts +7 -0
  257. package/lib/chevre/service/task/syncScreeningRooms.js +24 -0
  258. package/lib/chevre/service/task/useReservation.d.ts +7 -0
  259. package/lib/chevre/service/task/useReservation.js +36 -0
  260. package/lib/chevre/service/task/voidReserveTransaction.js +4 -2
  261. package/lib/chevre/service/task.d.ts +6 -0
  262. package/lib/chevre/service/task.js +22 -4
  263. package/lib/chevre/service/transaction/deleteTransaction.d.ts +21 -0
  264. package/lib/chevre/service/transaction/deleteTransaction.js +232 -0
  265. package/lib/chevre/service/transaction/moneyTransfer/exportTasks/factory.js +11 -1
  266. package/lib/chevre/service/transaction/moneyTransfer/factory.d.ts +1 -1
  267. package/lib/chevre/service/transaction/moneyTransfer/factory.js +3 -1
  268. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.d.ts +1 -0
  269. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.js +1 -1
  270. package/lib/chevre/service/transaction/moneyTransfer.js +10 -13
  271. package/lib/chevre/service/transaction/orderProgramMembership/findCreditCard.js +1 -1
  272. package/lib/chevre/service/transaction/orderProgramMembership/findPaymentCardPermit.js +1 -1
  273. package/lib/chevre/service/transaction/orderProgramMembership.js +7 -3
  274. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +42 -30
  275. package/lib/chevre/service/transaction/placeOrder.js +1 -5
  276. package/lib/chevre/service/transaction/placeOrderInProgress/factory.js +1 -1
  277. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.d.ts +1 -0
  278. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.js +1 -1
  279. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.d.ts +1 -0
  280. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +1 -1
  281. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.d.ts +1 -0
  282. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.d.ts +3 -0
  283. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.js +7 -3
  284. package/lib/chevre/service/transaction/placeOrderInProgress/result.d.ts +1 -0
  285. package/lib/chevre/service/transaction/placeOrderInProgress/result.js +2 -2
  286. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.d.ts +1 -1
  287. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js +2 -2
  288. package/lib/chevre/service/transaction/placeOrderInProgress/validation.d.ts +2 -1
  289. package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +23 -17
  290. package/lib/chevre/service/transaction/placeOrderInProgress.d.ts +0 -3
  291. package/lib/chevre/service/transaction/placeOrderInProgress.js +28 -15
  292. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +10 -1
  293. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +25 -17
  294. package/lib/chevre/service/transaction/returnOrder.d.ts +4 -0
  295. package/lib/chevre/service/transaction/returnOrder.js +228 -36
  296. package/lib/chevre/service/transaction.d.ts +7 -13
  297. package/lib/chevre/service/transaction.js +12 -139
  298. package/lib/chevre/settings.d.ts +15 -2
  299. package/lib/chevre/settings.js +58 -7
  300. package/package.json +5 -5
  301. package/example/src/chevre/createManyEventsIfNotExist.ts +0 -205
  302. package/example/src/chevre/eventCatalog2eventService.ts +0 -123
  303. package/example/src/chevre/migrateMoneyTransferPendingTransactionIdentifier.ts +0 -96
  304. package/example/src/chevre/migrateMovieAdditionalProperties.ts +0 -98
  305. package/example/src/chevre/migrateStockHolderKeys.ts +0 -89
  306. package/lib/chevre/service/task/deleteAssetTransaction.d.ts +0 -12
  307. package/lib/chevre/service/task/deleteAssetTransaction.js +0 -65
  308. package/lib/chevre/service/task/deleteOrder.d.ts +0 -6
@@ -17,6 +17,9 @@ interface IStatus {
17
17
  export interface IAggregateTask {
18
18
  statuses: IStatus[];
19
19
  }
20
+ interface IOptionOnCreate {
21
+ emitImmediately: boolean;
22
+ }
20
23
  /**
21
24
  * タスクリポジトリ
22
25
  */
@@ -24,16 +27,43 @@ export declare class MongoRepository {
24
27
  readonly taskModel: typeof Model;
25
28
  constructor(connection: Connection);
26
29
  static CREATE_MONGO_CONDITIONS(params: factory.task.ISearchConditions): any[];
27
- saveMany(taskAttributes: factory.task.IAttributes<factory.taskName>[]): Promise<{
30
+ saveMany(taskAttributes: factory.task.IAttributes<factory.taskName>[], options: IOptionOnCreate): Promise<{
28
31
  id: string;
29
32
  }[]>;
30
- createInformTaskIfNotExist(params: factory.task.IAttributes<factory.taskName.TriggerWebhook>): Promise<void>;
33
+ createInformTaskIfNotExist(params: factory.task.IAttributes<factory.taskName.TriggerWebhook>, options: IOptionOnCreate): Promise<void>;
31
34
  executeById(params: {
32
35
  id: string;
36
+ executor: {
37
+ name: string;
38
+ };
33
39
  }): Promise<factory.task.ITask<factory.taskName> | null>;
34
40
  executeOneByName<T extends factory.taskName>(params: {
35
41
  name: T;
42
+ executor: {
43
+ name: string;
44
+ };
36
45
  }): Promise<factory.task.ITask<T> | null>;
46
+ /**
47
+ * 一定期間遅延したタスクを実行する
48
+ */
49
+ executeTasks(params: {
50
+ now: Date;
51
+ /**
52
+ * 指定期間遅延しているタスクを実行する
53
+ */
54
+ delayInSeconds: number;
55
+ limit: number;
56
+ name: {
57
+ /**
58
+ * 指定タスクのみ実行する
59
+ */
60
+ $in?: factory.taskName[];
61
+ /**
62
+ * 指定タスク以外のみ実行する
63
+ */
64
+ $nin?: factory.taskName[];
65
+ };
66
+ }): Promise<Pick<import("@chevre/factory/lib/task").ITask | import("@chevre/factory/lib/task/confirmMoneyTransfer").ITask | import("@chevre/factory/lib/task/confirmRegisterService").ITask | import("@chevre/factory/lib/task/confirmPayTransaction").ITask | import("@chevre/factory/lib/task/confirmRegisterServiceTransaction").ITask | import("@chevre/factory/lib/task/confirmReserveTransaction").ITask | import("@chevre/factory/lib/task/deleteTransaction").ITask | import("@chevre/factory/lib/task/givePointAward").ITask | import("@chevre/factory/lib/task/onAuthorizationCreated").ITask | import("@chevre/factory/lib/task/onEventChanged").ITask | import("@chevre/factory/lib/task/onResourceUpdated").ITask | import("@chevre/factory/lib/task/orderProgramMembership").ITask | import("@chevre/factory/lib/task/placeOrder").ITask | import("@chevre/factory/lib/task/returnOrder").ITask | import("@chevre/factory/lib/task/returnMoneyTransfer").ITask | import("@chevre/factory/lib/task/returnPayTransaction").ITask | import("@chevre/factory/lib/task/returnPointAward").ITask | import("@chevre/factory/lib/task/returnReserveTransaction").ITask | import("@chevre/factory/lib/task/sendEmailMessage").ITask | import("@chevre/factory/lib/task/sendOrder").ITask | import("@chevre/factory/lib/task/syncScreeningRooms").ITask | import("@chevre/factory/lib/task/triggerWebhook").ITask | import("@chevre/factory/lib/task/useReservation").ITask | import("@chevre/factory/lib/task/voidMoneyTransferTransaction").ITask | import("@chevre/factory/lib/task/voidPayTransaction").ITask | import("@chevre/factory/lib/task/voidRegisterServiceTransaction").ITask | import("@chevre/factory/lib/task/voidReserveTransaction").ITask, "id" | "name" | "status">[]>;
37
67
  retry(params: {
38
68
  intervalInMinutes: number;
39
69
  }): Promise<void>;
@@ -63,9 +93,19 @@ export declare class MongoRepository {
63
93
  }): Promise<void>;
64
94
  deleteByName(params: {
65
95
  name: factory.taskName;
96
+ status?: {
97
+ $eq?: factory.taskStatus;
98
+ };
99
+ runsAt?: {
100
+ $gte: Date;
101
+ $lte: Date;
102
+ };
66
103
  }): Promise<import("mongodb").DeleteResult>;
67
104
  countDelayedTasks(params: {
68
105
  delayInSeconds: number;
106
+ name: {
107
+ $nin?: factory.taskName[];
108
+ };
69
109
  }): Promise<number>;
70
110
  aggregateTask(params: {
71
111
  project?: {
@@ -14,6 +14,7 @@ const moment = require("moment");
14
14
  const factory = require("../factory");
15
15
  const task_1 = require("./mongoose/schemas/task");
16
16
  const task_2 = require("../eventEmitter/task");
17
+ const settings_1 = require("../settings");
17
18
  /**
18
19
  * タスク実行時のソート条件
19
20
  */
@@ -150,8 +151,9 @@ class MongoRepository {
150
151
  }
151
152
  return andConditions;
152
153
  }
153
- saveMany(taskAttributes) {
154
+ saveMany(taskAttributes, options) {
154
155
  return __awaiter(this, void 0, void 0, function* () {
156
+ const emitImmediately = (options === null || options === void 0 ? void 0 : options.emitImmediately) === true;
155
157
  if (taskAttributes.length > 0) {
156
158
  const result = yield this.taskModel.insertMany(taskAttributes, { ordered: false, rawResult: true });
157
159
  if (result.insertedCount !== taskAttributes.length) {
@@ -161,12 +163,20 @@ class MongoRepository {
161
163
  .map((objectId) => {
162
164
  return { id: objectId.toHexString() };
163
165
  });
164
- savedTasks.forEach((savedTask) => {
165
- task_2.taskEventEmitter.emitTaskStatusChanged({
166
- id: savedTask.id,
167
- status: factory.taskStatus.Ready
166
+ if (emitImmediately) {
167
+ savedTasks.forEach((savedTask) => {
168
+ task_2.taskEventEmitter.emitTaskStatusChanged({
169
+ id: savedTask.id,
170
+ status: factory.taskStatus.Ready
171
+ });
168
172
  });
169
- });
173
+ // taskAttributes.forEach((savedTask) => {
174
+ // taskEventEmitter.emitTaskStatusChanged({
175
+ // name: savedTask.name,
176
+ // status: factory.taskStatus.Ready
177
+ // });
178
+ // });
179
+ }
170
180
  // return result.ops;
171
181
  return savedTasks;
172
182
  }
@@ -175,9 +185,9 @@ class MongoRepository {
175
185
  }
176
186
  });
177
187
  }
178
- createInformTaskIfNotExist(params) {
188
+ createInformTaskIfNotExist(params, options) {
179
189
  return __awaiter(this, void 0, void 0, function* () {
180
- yield this.taskModel.findOneAndUpdate({
190
+ const createdTask = yield this.taskModel.findOneAndUpdate({
181
191
  'project.id': { $eq: params.project.id },
182
192
  name: params.name,
183
193
  'data.object.id': {
@@ -185,7 +195,15 @@ class MongoRepository {
185
195
  $eq: String(params.data.object.id)
186
196
  }
187
197
  }, { $setOnInsert: params }, { new: true, upsert: true })
198
+ .select({ _id: 1 })
188
199
  .exec();
200
+ if (options.emitImmediately) {
201
+ task_2.taskEventEmitter.emitTaskStatusChanged({
202
+ id: createdTask.id,
203
+ name: params.name,
204
+ status: factory.taskStatus.Ready
205
+ });
206
+ }
189
207
  });
190
208
  }
191
209
  executeById(params) {
@@ -200,9 +218,9 @@ class MongoRepository {
200
218
  $inc: {
201
219
  remainingNumberOfTries: -1,
202
220
  numberOfTried: 1 // トライ回数増やす
203
- }
221
+ },
222
+ executor: params.executor
204
223
  }, { new: true })
205
- // .sort(sortOrder4executionOfTasks)
206
224
  .exec();
207
225
  if (doc === null) {
208
226
  // tslint:disable-next-line:no-null-keyword
@@ -223,7 +241,8 @@ class MongoRepository {
223
241
  $inc: {
224
242
  remainingNumberOfTries: -1,
225
243
  numberOfTried: 1 // トライ回数増やす
226
- }
244
+ },
245
+ executor: params.executor
227
246
  }, { new: true })
228
247
  .sort(sortOrder4executionOfTasks)
229
248
  .exec();
@@ -234,6 +253,35 @@ class MongoRepository {
234
253
  return doc.toObject();
235
254
  });
236
255
  }
256
+ /**
257
+ * 一定期間遅延したタスクを実行する
258
+ */
259
+ executeTasks(params) {
260
+ return __awaiter(this, void 0, void 0, function* () {
261
+ const runsAtLt = moment(params.now)
262
+ .add(-params.delayInSeconds, 'seconds')
263
+ .toDate();
264
+ const delayedTasks = yield this.taskModel.find(Object.assign(Object.assign({ status: { $eq: factory.taskStatus.Ready }, runsAt: { $lt: runsAtLt } }, (Array.isArray(params.name.$in)) ? { name: { $in: params.name.$in } } : undefined), (Array.isArray(params.name.$nin)) ? { name: { $nin: params.name.$nin } } : undefined))
265
+ .select({
266
+ _id: 1,
267
+ name: 1,
268
+ status: 1
269
+ })
270
+ .limit(params.limit)
271
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
272
+ .exec();
273
+ if (delayedTasks.length > 0) {
274
+ delayedTasks.forEach((delayedTask) => {
275
+ task_2.taskEventEmitter.emitTaskStatusChanged({
276
+ id: delayedTask.id,
277
+ name: delayedTask.name,
278
+ status: delayedTask.status
279
+ });
280
+ });
281
+ }
282
+ return delayedTasks;
283
+ });
284
+ }
237
285
  retry(params) {
238
286
  return __awaiter(this, void 0, void 0, function* () {
239
287
  const lastTriedAtShoudBeLessThan = moment()
@@ -328,7 +376,7 @@ class MongoRepository {
328
376
  return __awaiter(this, void 0, void 0, function* () {
329
377
  const conditions = MongoRepository.CREATE_MONGO_CONDITIONS(params);
330
378
  return this.taskModel.countDocuments((conditions.length > 0) ? { $and: conditions } : {})
331
- .setOptions({ maxTimeMS: 10000 })
379
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
332
380
  .exec();
333
381
  });
334
382
  }
@@ -350,7 +398,7 @@ class MongoRepository {
350
398
  if (((_a = params.sort) === null || _a === void 0 ? void 0 : _a.runsAt) !== undefined) {
351
399
  query.sort({ runsAt: params.sort.runsAt });
352
400
  }
353
- return query.setOptions({ maxTimeMS: 10000 })
401
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
354
402
  .exec()
355
403
  .then((docs) => docs.map((doc) => doc.toObject()));
356
404
  });
@@ -364,10 +412,13 @@ class MongoRepository {
364
412
  });
365
413
  }
366
414
  deleteByName(params) {
415
+ var _a, _b;
367
416
  return __awaiter(this, void 0, void 0, function* () {
368
- return this.taskModel.deleteMany({
369
- name: { $eq: params.name }
370
- })
417
+ return this.taskModel.deleteMany(Object.assign(Object.assign({ name: { $eq: params.name } }, (typeof ((_a = params.status) === null || _a === void 0 ? void 0 : _a.$eq) === 'string') ? { status: { $eq: params.status.$eq } } : undefined), (((_b = params.runsAt) === null || _b === void 0 ? void 0 : _b.$gte) instanceof Date)
418
+ ? {
419
+ runsAt: { $gte: params.runsAt.$gte, $lte: params.runsAt.$lte }
420
+ }
421
+ : undefined))
371
422
  .exec();
372
423
  });
373
424
  }
@@ -376,10 +427,7 @@ class MongoRepository {
376
427
  const runsAtLt = moment()
377
428
  .add(-params.delayInSeconds, 'seconds')
378
429
  .toDate();
379
- return this.taskModel.count({
380
- status: factory.taskStatus.Ready,
381
- runsAt: { $lt: runsAtLt }
382
- })
430
+ return this.taskModel.count(Object.assign({ status: factory.taskStatus.Ready, runsAt: { $lt: runsAtLt } }, (Array.isArray(params.name.$nin)) ? { name: { $nin: params.name.$nin } } : undefined))
383
431
  .exec();
384
432
  });
385
433
  }
@@ -40,6 +40,8 @@ export declare class MongoRepository {
40
40
  findById<T extends factory.transactionType>(params: {
41
41
  typeOf: T;
42
42
  id: string;
43
+ inclusion?: string[];
44
+ exclusion?: string[];
43
45
  }): Promise<factory.transaction.ITransaction<T>>;
44
46
  /**
45
47
  * 進行中の取引を取得する
@@ -112,6 +114,11 @@ export declare class MongoRepository {
112
114
  };
113
115
  status: factory.transactionStatusType;
114
116
  id?: string;
117
+ tasksExportAction: {
118
+ agent: {
119
+ name: string;
120
+ };
121
+ };
115
122
  }): Promise<Pick<factory.transaction.ITransaction<T>, 'id' | 'typeOf'> | null>;
116
123
  /**
117
124
  * タスクエクスポートリトライ
@@ -120,6 +127,16 @@ export declare class MongoRepository {
120
127
  reexportTasks(params: {
121
128
  intervalInMinutes: number;
122
129
  }): Promise<void>;
130
+ /**
131
+ * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
132
+ */
133
+ exportTasks(params: {
134
+ now: Date;
135
+ delayInSeconds: number;
136
+ status: {
137
+ $in: factory.transactionStatusType[];
138
+ };
139
+ }): Promise<Pick<import("@chevre/factory/lib/transaction/moneyTransfer").ITransaction | import("@chevre/factory/lib/transaction/placeOrder").ITransaction | import("@chevre/factory/lib/transaction/returnOrder").ITransaction, "id" | "typeOf" | "status">[]>;
123
140
  /**
124
141
  * set task status exported by transaction id
125
142
  * IDでタスクをエクスポート済に変更する
@@ -131,7 +148,9 @@ export declare class MongoRepository {
131
148
  * 取引を期限切れにする
132
149
  */
133
150
  makeExpired(params: {
134
- expires: Date;
151
+ expires: {
152
+ $lt: Date;
153
+ };
135
154
  }): Promise<void>;
136
155
  /**
137
156
  * 取引を中止する
@@ -151,7 +170,7 @@ export declare class MongoRepository {
151
170
  /**
152
171
  * 特定の取引を更新する(汎用)
153
172
  */
154
- findByIdAndUpdate(params: {
173
+ findByIdAndUpdateInProgress(params: {
155
174
  id: string;
156
175
  update: {
157
176
  $set?: any;
@@ -14,6 +14,7 @@ const moment = require("moment");
14
14
  const factory = require("../factory");
15
15
  const transaction_1 = require("./mongoose/schemas/transaction");
16
16
  const transaction_2 = require("../eventEmitter/transaction");
17
+ const settings_1 = require("../settings");
17
18
  /**
18
19
  * 取引リポジトリ
19
20
  */
@@ -264,7 +265,9 @@ class MongoRepository {
264
265
  else {
265
266
  expires = params.expires;
266
267
  }
267
- return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate, endDate: undefined, expires, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
268
+ return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate, endDate: undefined, expires, tasksExportAction: {
269
+ actionStatus: factory.actionStatusType.PotentialActionStatus
270
+ }, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
268
271
  .then((doc) => doc.toObject());
269
272
  });
270
273
  }
@@ -273,10 +276,29 @@ class MongoRepository {
273
276
  */
274
277
  findById(params) {
275
278
  return __awaiter(this, void 0, void 0, function* () {
279
+ let projection = {};
280
+ if (Array.isArray(params.inclusion) && params.inclusion.length > 0) {
281
+ params.inclusion.forEach((field) => {
282
+ projection[field] = 1;
283
+ });
284
+ }
285
+ else {
286
+ projection = {
287
+ __v: 0,
288
+ createdAt: 0,
289
+ updatedAt: 0
290
+ };
291
+ if (Array.isArray(params.exclusion) && params.exclusion.length > 0) {
292
+ params.exclusion.forEach((field) => {
293
+ projection[field] = 0;
294
+ });
295
+ }
296
+ }
276
297
  const doc = yield this.transactionModel.findOne({
277
298
  _id: { $eq: params.id },
278
299
  typeOf: { $eq: params.typeOf }
279
300
  })
301
+ .select(projection)
280
302
  .exec();
281
303
  if (doc === null) {
282
304
  throw new factory.errors.NotFound(this.transactionModel.modelName);
@@ -292,7 +314,9 @@ class MongoRepository {
292
314
  const doc = yield this.transactionModel.findOne({
293
315
  _id: { $eq: params.id },
294
316
  typeOf: { $eq: params.typeOf },
295
- status: { $eq: factory.transactionStatusType.InProgress }
317
+ status: { $eq: factory.transactionStatusType.InProgress },
318
+ // expiresを条件に追加(2023-05-12~),
319
+ expires: { $gt: new Date() }
296
320
  })
297
321
  .exec();
298
322
  if (doc === null) {
@@ -344,9 +368,9 @@ class MongoRepository {
344
368
  var _a, _b;
345
369
  return __awaiter(this, void 0, void 0, function* () {
346
370
  const doc = yield this.transactionModel.findOneAndUpdate({
347
- _id: params.id,
348
- typeOf: params.typeOf,
349
- status: factory.transactionStatusType.InProgress
371
+ _id: { $eq: params.id },
372
+ typeOf: { $eq: params.typeOf },
373
+ status: { $eq: factory.transactionStatusType.InProgress }
350
374
  }, {
351
375
  $set: Object.assign(Object.assign({ 'agent.id': params.agent.id }, (typeof params.agent.name === 'string') ? { 'agent.name': params.agent.name } : undefined), (typeof ((_b = (_a = params.object) === null || _a === void 0 ? void 0 : _a.customer) === null || _b === void 0 ? void 0 : _b.typeOf) === 'string') ? { 'object.customer': params.object.customer } : undefined)
352
376
  }, {
@@ -364,9 +388,9 @@ class MongoRepository {
364
388
  updateExpires(params) {
365
389
  return __awaiter(this, void 0, void 0, function* () {
366
390
  const doc = yield this.transactionModel.findOneAndUpdate({
367
- _id: params.id,
368
- typeOf: params.typeOf,
369
- status: factory.transactionStatusType.InProgress
391
+ _id: { $eq: params.id },
392
+ typeOf: { $eq: params.typeOf },
393
+ status: { $eq: factory.transactionStatusType.InProgress }
370
394
  }, {
371
395
  $set: {
372
396
  expires: params.expires
@@ -388,9 +412,9 @@ class MongoRepository {
388
412
  var _a;
389
413
  return __awaiter(this, void 0, void 0, function* () {
390
414
  const doc = yield this.transactionModel.findOneAndUpdate({
391
- _id: params.id,
392
- typeOf: params.typeOf,
393
- status: factory.transactionStatusType.InProgress
415
+ _id: { $eq: params.id },
416
+ typeOf: { $eq: params.typeOf },
417
+ status: { $eq: factory.transactionStatusType.InProgress }
394
418
  }, {
395
419
  $set: Object.assign({}, (typeof ((_a = params.object) === null || _a === void 0 ? void 0 : _a.name) === 'string') ? { 'object.name': params.object.name } : undefined)
396
420
  }, {
@@ -408,9 +432,9 @@ class MongoRepository {
408
432
  confirm(params) {
409
433
  return __awaiter(this, void 0, void 0, function* () {
410
434
  const doc = yield this.transactionModel.findOneAndUpdate({
411
- _id: params.id,
412
- typeOf: params.typeOf,
413
- status: factory.transactionStatusType.InProgress
435
+ _id: { $eq: params.id },
436
+ typeOf: { $eq: params.typeOf },
437
+ status: { $eq: factory.transactionStatusType.InProgress }
414
438
  }, {
415
439
  status: factory.transactionStatusType.Confirmed,
416
440
  endDate: new Date(),
@@ -425,23 +449,14 @@ class MongoRepository {
425
449
  // NotFoundであれば取引状態確認
426
450
  if (doc === null) {
427
451
  const transaction = yield this.findById({ typeOf: params.typeOf, id: params.id });
428
- // tslint:disable-next-line:no-single-line-block-comment
429
- /* istanbul ignore next */
430
452
  if (transaction.status === factory.transactionStatusType.Confirmed) {
431
- // すでに確定済の場合
432
- return;
433
- // tslint:disable-next-line:no-single-line-block-comment
434
- /* istanbul ignore next */
453
+ // すでに確定済の場合スルー
435
454
  }
436
455
  else if (transaction.status === factory.transactionStatusType.Expired) {
437
456
  throw new factory.errors.Argument('Transaction id', 'Already expired');
438
- // tslint:disable-next-line:no-single-line-block-comment
439
- /* istanbul ignore next */
440
457
  }
441
458
  else if (transaction.status === factory.transactionStatusType.Canceled) {
442
459
  throw new factory.errors.Argument('Transaction id', 'Already canceled');
443
- // tslint:disable-next-line:no-single-line-block-comment
444
- /* istanbul ignore next */
445
460
  }
446
461
  else {
447
462
  throw new factory.errors.NotFound(this.transactionModel.modelName);
@@ -460,8 +475,19 @@ class MongoRepository {
460
475
  startExportTasks(params) {
461
476
  var _a;
462
477
  return __awaiter(this, void 0, void 0, function* () {
478
+ switch (params.status) {
479
+ case factory.transactionStatusType.InProgress:
480
+ throw new factory.errors.NotImplemented(`status "${params.status}" not implemented on startExportTasks`);
481
+ default:
482
+ // no op
483
+ }
463
484
  const typeOfIn = (_a = params.typeOf) === null || _a === void 0 ? void 0 : _a.$in;
464
- return this.transactionModel.findOneAndUpdate(Object.assign(Object.assign(Object.assign(Object.assign({}, (params.project !== undefined) ? { 'project.id': { $eq: params.project.id } } : undefined), (Array.isArray(typeOfIn)) ? { typeOf: { $in: typeOfIn } } : undefined), { status: params.status, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }), (typeof params.id === 'string') ? { _id: { $eq: params.id } } : undefined), { tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting }, { new: true })
485
+ return this.transactionModel.findOneAndUpdate(Object.assign(Object.assign(Object.assign(Object.assign({}, (params.project !== undefined) ? { 'project.id': { $eq: params.project.id } } : undefined), (Array.isArray(typeOfIn)) ? { typeOf: { $in: typeOfIn } } : undefined), { status: { $eq: params.status }, tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Unexported } }), (typeof params.id === 'string') ? { _id: { $eq: params.id } } : undefined), {
486
+ 'tasksExportAction.actionStatus': factory.actionStatusType.ActiveActionStatus,
487
+ 'tasksExportAction.agent': { name: params.tasksExportAction.agent.name },
488
+ 'tasksExportAction.startDate': new Date(),
489
+ tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting
490
+ }, { new: true })
465
491
  .select({
466
492
  _id: 1,
467
493
  typeOf: 1
@@ -478,17 +504,74 @@ class MongoRepository {
478
504
  */
479
505
  reexportTasks(params) {
480
506
  return __awaiter(this, void 0, void 0, function* () {
481
- yield this.transactionModel.updateMany({
482
- tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting,
507
+ const reexportingTransactions = yield this.transactionModel.find({
508
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting },
483
509
  updatedAt: {
484
510
  $lt: moment()
485
511
  .add(-params.intervalInMinutes, 'minutes')
486
512
  .toDate()
487
513
  }
488
- }, {
489
- tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
490
514
  })
515
+ .select({
516
+ _id: 1,
517
+ typeOf: 1,
518
+ status: 1
519
+ })
520
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
521
+ .exec();
522
+ if (reexportingTransactions.length > 0) {
523
+ for (const reexportingTransaction of reexportingTransactions) {
524
+ yield this.transactionModel.updateOne({
525
+ _id: { $eq: reexportingTransaction.id },
526
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
527
+ }, {
528
+ tasksExportAction: {
529
+ actionStatus: factory.actionStatusType.PotentialActionStatus
530
+ },
531
+ tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
532
+ })
533
+ .exec();
534
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
535
+ id: reexportingTransaction.id,
536
+ typeOf: reexportingTransaction.typeOf,
537
+ status: reexportingTransaction.status
538
+ });
539
+ }
540
+ }
541
+ });
542
+ }
543
+ /**
544
+ * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
545
+ */
546
+ exportTasks(params) {
547
+ return __awaiter(this, void 0, void 0, function* () {
548
+ const delayedTransactions = yield this.transactionModel.find({
549
+ status: { $in: params.status.$in },
550
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Unexported },
551
+ endDate: {
552
+ $exists: true,
553
+ $lt: moment(params.now)
554
+ .add(-params.delayInSeconds, 'seconds')
555
+ .toDate()
556
+ }
557
+ })
558
+ .select({
559
+ _id: 1,
560
+ typeOf: 1,
561
+ status: 1
562
+ })
563
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
491
564
  .exec();
565
+ if (delayedTransactions.length > 0) {
566
+ delayedTransactions.forEach((delayedTransaction) => {
567
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
568
+ id: delayedTransaction.id,
569
+ typeOf: delayedTransaction.typeOf,
570
+ status: delayedTransaction.status
571
+ });
572
+ });
573
+ }
574
+ return delayedTransactions;
492
575
  });
493
576
  }
494
577
  /**
@@ -497,9 +580,15 @@ class MongoRepository {
497
580
  */
498
581
  setTasksExportedById(params) {
499
582
  return __awaiter(this, void 0, void 0, function* () {
500
- yield this.transactionModel.updateOne({ _id: { $eq: params.id } }, {
583
+ const endDate = new Date();
584
+ yield this.transactionModel.updateOne({
585
+ _id: { $eq: params.id },
586
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
587
+ }, {
501
588
  tasksExportationStatus: factory.transactionTasksExportationStatus.Exported,
502
- tasksExportedAt: new Date()
589
+ tasksExportedAt: endDate,
590
+ 'tasksExportAction.actionStatus': factory.actionStatusType.CompletedActionStatus,
591
+ 'tasksExportAction.endDate': endDate
503
592
  })
504
593
  .exec();
505
594
  });
@@ -509,15 +598,36 @@ class MongoRepository {
509
598
  */
510
599
  makeExpired(params) {
511
600
  return __awaiter(this, void 0, void 0, function* () {
512
- // ステータスと期限を見て更新
513
- yield this.transactionModel.updateMany({
514
- status: factory.transactionStatusType.InProgress,
515
- expires: { $lt: params.expires }
516
- }, {
517
- status: factory.transactionStatusType.Expired,
518
- endDate: new Date()
601
+ // IDをemitしたいのでまずリスト検索(2023-04-27~)
602
+ const expiringTransactions = yield this.transactionModel.find({
603
+ status: { $eq: factory.transactionStatusType.InProgress },
604
+ expires: { $lt: params.expires.$lt }
519
605
  })
606
+ .select({
607
+ _id: 1,
608
+ typeOf: 1
609
+ })
610
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
520
611
  .exec();
612
+ if (expiringTransactions.length > 0) {
613
+ // ステータスと期限を見て更新
614
+ yield this.transactionModel.updateMany({
615
+ _id: { $in: expiringTransactions.map((t) => t.id) },
616
+ status: { $eq: factory.transactionStatusType.InProgress },
617
+ expires: { $lt: params.expires.$lt }
618
+ }, {
619
+ status: factory.transactionStatusType.Expired,
620
+ endDate: new Date()
621
+ })
622
+ .exec();
623
+ expiringTransactions.forEach((expiringTransaction) => {
624
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
625
+ id: expiringTransaction.id,
626
+ typeOf: expiringTransaction.typeOf,
627
+ status: factory.transactionStatusType.Expired
628
+ });
629
+ });
630
+ }
521
631
  });
522
632
  }
523
633
  /**
@@ -542,11 +652,8 @@ class MongoRepository {
542
652
  // NotFoundであれば取引状態確認
543
653
  if (doc === null) {
544
654
  const transaction = yield this.findById(params);
545
- // tslint:disable-next-line:no-single-line-block-comment
546
- /* istanbul ignore next */
547
655
  if (transaction.status === factory.transactionStatusType.Canceled) {
548
- // すでに中止済の場合
549
- return;
656
+ // すでに中止済の場合スルー
550
657
  }
551
658
  else if (transaction.status === factory.transactionStatusType.Expired) {
552
659
  throw new factory.errors.Argument('Transaction id', 'Transaction already expired');
@@ -569,7 +676,7 @@ class MongoRepository {
569
676
  return __awaiter(this, void 0, void 0, function* () {
570
677
  const conditions = MongoRepository.CREATE_MONGO_CONDITIONS(params);
571
678
  return this.transactionModel.countDocuments((conditions.length > 0) ? { $and: conditions } : {})
572
- .setOptions({ maxTimeMS: 10000 })
679
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
573
680
  .exec();
574
681
  });
575
682
  }
@@ -612,7 +719,7 @@ class MongoRepository {
612
719
  }
613
720
  // const explainResult = await (<any>query).explain();
614
721
  // console.log(explainResult[0].executionStats.allPlansExecution.map((e: any) => e.executionStages.inputStage));
615
- return query.setOptions({ maxTimeMS: 10000 })
722
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
616
723
  .exec()
617
724
  .then((docs) => docs.map((doc) => doc.toObject()));
618
725
  });
@@ -620,9 +727,12 @@ class MongoRepository {
620
727
  /**
621
728
  * 特定の取引を更新する(汎用)
622
729
  */
623
- findByIdAndUpdate(params) {
730
+ findByIdAndUpdateInProgress(params) {
624
731
  return __awaiter(this, void 0, void 0, function* () {
625
- yield this.transactionModel.findOneAndUpdate({ _id: params.id }, params.update, {
732
+ yield this.transactionModel.findOneAndUpdate({
733
+ _id: { $eq: params.id },
734
+ status: { $eq: factory.transactionStatusType.InProgress }
735
+ }, params.update, {
626
736
  // new: true,
627
737
  projection: { _id: 1 }
628
738
  })
@@ -637,7 +747,8 @@ class MongoRepository {
637
747
  saveOrderNumberIfNotExist(params) {
638
748
  return __awaiter(this, void 0, void 0, function* () {
639
749
  yield this.transactionModel.updateOne({
640
- _id: params.id,
750
+ _id: { $eq: params.id },
751
+ status: { $eq: factory.transactionStatusType.InProgress },
641
752
  'object.orderNumber': { $exists: false }
642
753
  }, { 'object.orderNumber': params.orderNumber })
643
754
  .exec();
@@ -646,7 +757,8 @@ class MongoRepository {
646
757
  saveConfirmationNumberIfNotExist(params) {
647
758
  return __awaiter(this, void 0, void 0, function* () {
648
759
  yield this.transactionModel.updateOne({
649
- _id: params.id,
760
+ _id: { $eq: params.id },
761
+ status: { $eq: factory.transactionStatusType.InProgress },
650
762
  'object.confirmationNumber': { $exists: false }
651
763
  }, { 'object.confirmationNumber': params.confirmationNumber })
652
764
  .exec();