@aglyn/plugins-commerce 1.0.0-beta.230 → 1.0.0-beta.232

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 (609) hide show
  1. package/package.json +13 -13
  2. package/src/index.d.ts +0 -1
  3. package/src/index.js +0 -1
  4. package/src/index.js.map +1 -1
  5. package/src/lib/barcode/barcode-decode.d.ts +71 -0
  6. package/src/lib/barcode/barcode-decode.js +498 -0
  7. package/src/lib/barcode/barcode-decode.js.map +1 -0
  8. package/src/lib/barcode/barcode-encode.d.ts +44 -0
  9. package/src/lib/barcode/barcode-encode.js +138 -0
  10. package/src/lib/barcode/barcode-encode.js.map +1 -0
  11. package/src/lib/barcode/barcode-scanner.component.d.ts +23 -0
  12. package/src/lib/barcode/barcode-scanner.component.js +260 -0
  13. package/src/lib/barcode/barcode-scanner.component.js.map +1 -0
  14. package/src/lib/barcode/scan-button.component.d.ts +10 -0
  15. package/src/lib/barcode/scan-button.component.js +62 -0
  16. package/src/lib/barcode/scan-button.component.js.map +1 -0
  17. package/src/lib/barcode/scanner-wedge.d.ts +35 -0
  18. package/src/lib/barcode/scanner-wedge.js +108 -0
  19. package/src/lib/barcode/scanner-wedge.js.map +1 -0
  20. package/src/lib/components/account.js +10 -1
  21. package/src/lib/components/account.js.map +1 -1
  22. package/src/lib/components/cart-extras.d.ts +45 -0
  23. package/src/lib/components/cart-extras.js +127 -0
  24. package/src/lib/components/cart-extras.js.map +1 -0
  25. package/src/lib/components/cart.js +82 -15
  26. package/src/lib/components/cart.js.map +1 -1
  27. package/src/lib/components/checkout-return-notice.d.ts +26 -0
  28. package/src/lib/components/checkout-return-notice.js +48 -0
  29. package/src/lib/components/checkout-return-notice.js.map +1 -0
  30. package/src/lib/components/commerce-console-page.js +124 -0
  31. package/src/lib/components/commerce-console-page.js.map +1 -1
  32. package/src/lib/components/commerce-console-sections.d.ts +1 -1
  33. package/src/lib/components/commerce-console-sections.js +4 -0
  34. package/src/lib/components/commerce-console-sections.js.map +1 -1
  35. package/src/lib/components/console/bulk-fulfill.d.ts +44 -0
  36. package/src/lib/components/console/bulk-fulfill.js +84 -0
  37. package/src/lib/components/console/bulk-fulfill.js.map +1 -0
  38. package/src/lib/components/console/catalog-organization-card.component.js +1 -0
  39. package/src/lib/components/console/catalog-organization-card.component.js.map +1 -1
  40. package/src/lib/components/console/customer-notifications-card.component.d.ts +19 -0
  41. package/src/lib/components/console/customer-notifications-card.component.js +149 -0
  42. package/src/lib/components/console/customer-notifications-card.component.js.map +1 -0
  43. package/src/lib/components/console/host-orders-card.component.js +88 -6
  44. package/src/lib/components/console/host-orders-card.component.js.map +1 -1
  45. package/src/lib/components/console/locations-card.component.js +164 -57
  46. package/src/lib/components/console/locations-card.component.js.map +1 -1
  47. package/src/lib/components/console/order-detail-dialog.component.js +209 -61
  48. package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
  49. package/src/lib/components/console/order-fulfillment-panel.component.d.ts +48 -0
  50. package/src/lib/components/console/order-fulfillment-panel.component.js +542 -0
  51. package/src/lib/components/console/order-fulfillment-panel.component.js.map +1 -0
  52. package/src/lib/components/console/order-invoice.component.d.ts +33 -0
  53. package/src/lib/components/console/order-invoice.component.js +81 -0
  54. package/src/lib/components/console/order-invoice.component.js.map +1 -0
  55. package/src/lib/components/console/order-receipt-resend.component.d.ts +21 -0
  56. package/src/lib/components/console/order-receipt-resend.component.js +203 -0
  57. package/src/lib/components/console/order-receipt-resend.component.js.map +1 -0
  58. package/src/lib/components/console/order-returns.component.d.ts +36 -0
  59. package/src/lib/components/console/order-returns.component.js +142 -0
  60. package/src/lib/components/console/order-returns.component.js.map +1 -0
  61. package/src/lib/components/console/order-shipping-actions.component.d.ts +54 -0
  62. package/src/lib/components/console/order-shipping-actions.component.js +149 -0
  63. package/src/lib/components/console/order-shipping-actions.component.js.map +1 -0
  64. package/src/lib/components/console/order-webhooks-card.component.d.ts +50 -0
  65. package/src/lib/components/console/order-webhooks-card.component.js +623 -0
  66. package/src/lib/components/console/order-webhooks-card.component.js.map +1 -0
  67. package/src/lib/components/console/order-zones.d.ts +155 -0
  68. package/src/lib/components/console/order-zones.js +40 -0
  69. package/src/lib/components/console/order-zones.js.map +1 -0
  70. package/src/lib/components/console/payment-methods-card.component.d.ts +67 -0
  71. package/src/lib/components/console/payment-methods-card.component.js +395 -0
  72. package/src/lib/components/console/payment-methods-card.component.js.map +1 -0
  73. package/src/lib/components/console/pos/pos-api.d.ts +124 -0
  74. package/src/lib/components/console/pos/pos-api.js +101 -0
  75. package/src/lib/components/console/pos/pos-api.js.map +1 -0
  76. package/src/lib/components/console/pos/pos-cart-panel.component.d.ts +36 -0
  77. package/src/lib/components/console/pos/pos-cart-panel.component.js +160 -0
  78. package/src/lib/components/console/pos/pos-cart-panel.component.js.map +1 -0
  79. package/src/lib/components/console/pos/pos-item-dialog.component.d.ts +39 -0
  80. package/src/lib/components/console/pos/pos-item-dialog.component.js +352 -0
  81. package/src/lib/components/console/pos/pos-item-dialog.component.js.map +1 -0
  82. package/src/lib/components/console/pos/pos-product-grid.component.d.ts +47 -0
  83. package/src/lib/components/console/pos/pos-product-grid.component.js +272 -0
  84. package/src/lib/components/console/pos/pos-product-grid.component.js.map +1 -0
  85. package/src/lib/components/console/pos/pos-receipt-panel.component.d.ts +27 -0
  86. package/src/lib/components/console/pos/pos-receipt-panel.component.js +282 -0
  87. package/src/lib/components/console/pos/pos-receipt-panel.component.js.map +1 -0
  88. package/src/lib/components/console/pos/pos-tender-dialogs.component.d.ts +53 -0
  89. package/src/lib/components/console/pos/pos-tender-dialogs.component.js +445 -0
  90. package/src/lib/components/console/pos/pos-tender-dialogs.component.js.map +1 -0
  91. package/src/lib/components/console/pos/pos-tender-panel.component.d.ts +31 -0
  92. package/src/lib/components/console/pos/pos-tender-panel.component.js +640 -0
  93. package/src/lib/components/console/pos/pos-tender-panel.component.js.map +1 -0
  94. package/src/lib/components/console/pos/use-pos-display.d.ts +43 -0
  95. package/src/lib/components/console/pos/use-pos-display.js +161 -0
  96. package/src/lib/components/console/pos/use-pos-display.js.map +1 -0
  97. package/src/lib/components/console/pos-devices-card.component.d.ts +14 -0
  98. package/src/lib/components/console/pos-devices-card.component.js +546 -0
  99. package/src/lib/components/console/pos-devices-card.component.js.map +1 -0
  100. package/src/lib/components/console/pos-display/brand-screen.d.ts +33 -0
  101. package/src/lib/components/console/pos-display/brand-screen.js +85 -0
  102. package/src/lib/components/console/pos-display/brand-screen.js.map +1 -0
  103. package/src/lib/components/console/pos-display/cart-screen.d.ts +29 -0
  104. package/src/lib/components/console/pos-display/cart-screen.js +166 -0
  105. package/src/lib/components/console/pos-display/cart-screen.js.map +1 -0
  106. package/src/lib/components/console/pos-display/pairing-screen.d.ts +24 -0
  107. package/src/lib/components/console/pos-display/pairing-screen.js +127 -0
  108. package/src/lib/components/console/pos-display/pairing-screen.js.map +1 -0
  109. package/src/lib/components/console/pos-display/pos-display-api.d.ts +90 -0
  110. package/src/lib/components/console/pos-display/pos-display-api.js +140 -0
  111. package/src/lib/components/console/pos-display/pos-display-api.js.map +1 -0
  112. package/src/lib/components/console/pos-display/receipt-screen.d.ts +35 -0
  113. package/src/lib/components/console/pos-display/receipt-screen.js +200 -0
  114. package/src/lib/components/console/pos-display/receipt-screen.js.map +1 -0
  115. package/src/lib/components/console/pos-display/tip-screen.d.ts +36 -0
  116. package/src/lib/components/console/pos-display/tip-screen.js +211 -0
  117. package/src/lib/components/console/pos-display/tip-screen.js.map +1 -0
  118. package/src/lib/components/console/pos-display-page.component.d.ts +16 -0
  119. package/src/lib/components/console/pos-display-page.component.js +407 -0
  120. package/src/lib/components/console/pos-display-page.component.js.map +1 -0
  121. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.d.ts +40 -0
  122. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js +289 -0
  123. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js.map +1 -0
  124. package/src/lib/components/console/pos-ops/pos-last-receipt.component.d.ts +34 -0
  125. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js +61 -0
  126. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js.map +1 -0
  127. package/src/lib/components/console/pos-ops/pos-operations-bar.component.d.ts +38 -0
  128. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js +129 -0
  129. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js.map +1 -0
  130. package/src/lib/components/console/pos-ops/pos-ops-api.d.ts +37 -0
  131. package/src/lib/components/console/pos-ops/pos-ops-api.js +60 -0
  132. package/src/lib/components/console/pos-ops/pos-ops-api.js.map +1 -0
  133. package/src/lib/components/console/pos-ops/pos-pin-pad.component.d.ts +48 -0
  134. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js +220 -0
  135. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js.map +1 -0
  136. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.d.ts +63 -0
  137. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js +186 -0
  138. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js.map +1 -0
  139. package/src/lib/components/console/pos-ops/pos-receipt.d.ts +39 -0
  140. package/src/lib/components/console/pos-ops/pos-receipt.js +182 -0
  141. package/src/lib/components/console/pos-ops/pos-receipt.js.map +1 -0
  142. package/src/lib/components/console/pos-ops/pos-return-dialog.component.d.ts +40 -0
  143. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js +465 -0
  144. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js.map +1 -0
  145. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.d.ts +29 -0
  146. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js +253 -0
  147. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js.map +1 -0
  148. package/src/lib/components/console/pos-ops/pos-shift-panel.component.d.ts +34 -0
  149. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js +494 -0
  150. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js.map +1 -0
  151. package/src/lib/components/console/pos-ops/pos-shift-report.component.d.ts +37 -0
  152. package/src/lib/components/console/pos-ops/pos-shift-report.component.js +102 -0
  153. package/src/lib/components/console/pos-ops/pos-shift-report.component.js.map +1 -0
  154. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.d.ts +30 -0
  155. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js +277 -0
  156. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js.map +1 -0
  157. package/src/lib/components/console/pos-ops/register-ops.d.ts +28 -0
  158. package/src/lib/components/console/pos-ops/register-ops.js +28 -0
  159. package/src/lib/components/console/pos-ops/register-ops.js.map +1 -0
  160. package/src/lib/components/console/pos-ops/use-pos-cashier.d.ts +46 -0
  161. package/src/lib/components/console/pos-ops/use-pos-cashier.js +128 -0
  162. package/src/lib/components/console/pos-ops/use-pos-cashier.js.map +1 -0
  163. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.d.ts +36 -0
  164. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js +64 -0
  165. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js.map +1 -0
  166. package/src/lib/components/console/pos-page.component.d.ts +13 -5
  167. package/src/lib/components/console/pos-page.component.js +756 -654
  168. package/src/lib/components/console/pos-page.component.js.map +1 -1
  169. package/src/lib/components/console/pos-zones.d.ts +23 -0
  170. package/src/lib/components/console/pos-zones.js +31 -0
  171. package/src/lib/components/console/pos-zones.js.map +1 -0
  172. package/src/lib/components/console/product-editor-dialog.component.js +61 -71
  173. package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
  174. package/src/lib/components/console/product-labels-dialog.component.d.ts +13 -0
  175. package/src/lib/components/console/product-labels-dialog.component.js +197 -0
  176. package/src/lib/components/console/product-labels-dialog.component.js.map +1 -0
  177. package/src/lib/components/console/product-register-fields.component.d.ts +19 -0
  178. package/src/lib/components/console/product-register-fields.component.js +241 -0
  179. package/src/lib/components/console/product-register-fields.component.js.map +1 -0
  180. package/src/lib/components/console/product-zones.d.ts +44 -0
  181. package/src/lib/components/console/product-zones.js.map +1 -1
  182. package/src/lib/components/console/products-hub-card.component.js +23 -20
  183. package/src/lib/components/console/products-hub-card.component.js.map +1 -1
  184. package/src/lib/components/console/register-hardware-card.component.d.ts +33 -0
  185. package/src/lib/components/console/register-hardware-card.component.js +826 -0
  186. package/src/lib/components/console/register-hardware-card.component.js.map +1 -0
  187. package/src/lib/components/console/registers-card.component.js +24 -5
  188. package/src/lib/components/console/registers-card.component.js.map +1 -1
  189. package/src/lib/components/console/return-actions.d.ts +38 -0
  190. package/src/lib/components/console/return-actions.js +76 -0
  191. package/src/lib/components/console/return-actions.js.map +1 -0
  192. package/src/lib/components/console/return-detail-dialog.component.d.ts +34 -0
  193. package/src/lib/components/console/return-detail-dialog.component.js +718 -0
  194. package/src/lib/components/console/return-detail-dialog.component.js.map +1 -0
  195. package/src/lib/components/console/return-settings-card.component.d.ts +34 -0
  196. package/src/lib/components/console/return-settings-card.component.js +195 -0
  197. package/src/lib/components/console/return-settings-card.component.js.map +1 -0
  198. package/src/lib/components/console/return-zones.d.ts +87 -0
  199. package/src/lib/components/console/return-zones.js +31 -0
  200. package/src/lib/components/console/return-zones.js.map +1 -0
  201. package/src/lib/components/console/returns-card.component.d.ts +45 -0
  202. package/src/lib/components/console/returns-card.component.js +159 -0
  203. package/src/lib/components/console/returns-card.component.js.map +1 -0
  204. package/src/lib/components/console/shipping-settings-card.component.js +161 -5
  205. package/src/lib/components/console/shipping-settings-card.component.js.map +1 -1
  206. package/src/lib/components/console/shippingeasy-card.component.d.ts +59 -0
  207. package/src/lib/components/console/shippingeasy-card.component.js +378 -0
  208. package/src/lib/components/console/shippingeasy-card.component.js.map +1 -0
  209. package/src/lib/components/console/shipstation-card.component.d.ts +35 -0
  210. package/src/lib/components/console/shipstation-card.component.js +345 -0
  211. package/src/lib/components/console/shipstation-card.component.js.map +1 -0
  212. package/src/lib/components/console/start-return-dialog.component.d.ts +40 -0
  213. package/src/lib/components/console/start-return-dialog.component.js +243 -0
  214. package/src/lib/components/console/start-return-dialog.component.js.map +1 -0
  215. package/src/lib/components/console/stock-movements-card.component.js +2 -1
  216. package/src/lib/components/console/stock-movements-card.component.js.map +1 -1
  217. package/src/lib/components/console/store-settings-card.component.js +2 -66
  218. package/src/lib/components/console/store-settings-card.component.js.map +1 -1
  219. package/src/lib/components/console/store-zones.d.ts +42 -0
  220. package/src/lib/components/console/store-zones.js +39 -0
  221. package/src/lib/components/console/store-zones.js.map +1 -0
  222. package/src/lib/components/console/storefront-tax-summary-card.component.js +1 -0
  223. package/src/lib/components/console/storefront-tax-summary-card.component.js.map +1 -1
  224. package/src/lib/components/order-status.d.ts +36 -0
  225. package/src/lib/components/order-status.js +502 -0
  226. package/src/lib/components/order-status.js.map +1 -0
  227. package/src/lib/components/product-detail.js +41 -2
  228. package/src/lib/components/product-detail.js.map +1 -1
  229. package/src/lib/components/return-request.d.ts +32 -0
  230. package/src/lib/components/return-request.js +576 -0
  231. package/src/lib/components/return-request.js.map +1 -0
  232. package/src/lib/components/storefront-payment-appearance.d.ts +32 -0
  233. package/src/lib/components/storefront-payment-appearance.js +114 -0
  234. package/src/lib/components/storefront-payment-appearance.js.map +1 -0
  235. package/src/lib/components/storefront-payment-element.d.ts +57 -1
  236. package/src/lib/components/storefront-payment-element.js +332 -33
  237. package/src/lib/components/storefront-payment-element.js.map +1 -1
  238. package/src/lib/constants/order-status.d.ts +22 -0
  239. package/src/lib/constants/order-status.js +22 -0
  240. package/src/lib/constants/order-status.js.map +1 -0
  241. package/src/lib/constants/return-request.d.ts +27 -0
  242. package/src/lib/constants/return-request.js +32 -0
  243. package/src/lib/constants/return-request.js.map +1 -0
  244. package/src/lib/constants/stock-movement-query.js +2 -1
  245. package/src/lib/constants/stock-movement-query.js.map +1 -1
  246. package/src/lib/declarations.console-server.js +9 -0
  247. package/src/lib/declarations.console-server.js.map +1 -1
  248. package/src/lib/declarations.server.d.ts +2 -1
  249. package/src/lib/declarations.server.js +68 -1
  250. package/src/lib/declarations.server.js.map +1 -1
  251. package/src/lib/model/buyer-notifications.d.ts +59 -0
  252. package/src/lib/model/buyer-notifications.js +97 -0
  253. package/src/lib/model/buyer-notifications.js.map +1 -0
  254. package/src/lib/model/commerce-orders.d.ts +171 -2
  255. package/src/lib/model/commerce-orders.js +26 -16
  256. package/src/lib/model/commerce-orders.js.map +1 -1
  257. package/src/lib/model/commerce-payment-methods.d.ts +146 -0
  258. package/src/lib/model/commerce-payment-methods.js +247 -0
  259. package/src/lib/model/commerce-payment-methods.js.map +1 -0
  260. package/src/lib/model/commerce-pos-ops.d.ts +437 -0
  261. package/src/lib/model/commerce-pos-ops.js +721 -0
  262. package/src/lib/model/commerce-pos-ops.js.map +1 -0
  263. package/src/lib/model/commerce-pos.d.ts +263 -0
  264. package/src/lib/model/commerce-pos.js +375 -0
  265. package/src/lib/model/commerce-pos.js.map +1 -0
  266. package/src/lib/model/commerce-printers.d.ts +211 -0
  267. package/src/lib/model/commerce-printers.js +181 -0
  268. package/src/lib/model/commerce-printers.js.map +1 -0
  269. package/src/lib/model/commerce-receipt.d.ts +97 -0
  270. package/src/lib/model/commerce-receipt.js +180 -0
  271. package/src/lib/model/commerce-receipt.js.map +1 -0
  272. package/src/lib/model/commerce-returns.d.ts +207 -0
  273. package/src/lib/model/commerce-returns.js +300 -0
  274. package/src/lib/model/commerce-returns.js.map +1 -0
  275. package/src/lib/model/commerce-shipping.d.ts +44 -1
  276. package/src/lib/model/commerce-shipping.js +53 -9
  277. package/src/lib/model/commerce-shipping.js.map +1 -1
  278. package/src/lib/model/commerce-tax-engine.d.ts +90 -0
  279. package/src/lib/model/commerce-tax-engine.js +129 -0
  280. package/src/lib/model/commerce-tax-engine.js.map +1 -0
  281. package/src/lib/model/commerce.d.ts +91 -2
  282. package/src/lib/model/commerce.js +89 -1
  283. package/src/lib/model/commerce.js.map +1 -1
  284. package/src/lib/model/index.d.ts +16 -0
  285. package/src/lib/model/index.js +16 -0
  286. package/src/lib/model/index.js.map +1 -1
  287. package/src/lib/model/order-events.d.ts +154 -0
  288. package/src/lib/model/order-events.js +153 -0
  289. package/src/lib/model/order-events.js.map +1 -0
  290. package/src/lib/model/order-fulfillment.d.ts +117 -0
  291. package/src/lib/model/order-fulfillment.js +217 -0
  292. package/src/lib/model/order-fulfillment.js.map +1 -0
  293. package/src/lib/model/order-history.d.ts +58 -0
  294. package/src/lib/model/order-history.js +22 -0
  295. package/src/lib/model/order-history.js.map +1 -0
  296. package/src/lib/model/order-list-fields.d.ts +9 -1
  297. package/src/lib/model/order-list-fields.js +7 -1
  298. package/src/lib/model/order-list-fields.js.map +1 -1
  299. package/src/lib/model/order-shipping-export.d.ts +91 -0
  300. package/src/lib/model/order-shipping-export.js +192 -0
  301. package/src/lib/model/order-shipping-export.js.map +1 -0
  302. package/src/lib/model/order-status-view.d.ts +103 -0
  303. package/src/lib/model/order-status-view.js +156 -0
  304. package/src/lib/model/order-status-view.js.map +1 -0
  305. package/src/lib/model/order-webhooks.d.ts +142 -0
  306. package/src/lib/model/order-webhooks.js +91 -0
  307. package/src/lib/model/order-webhooks.js.map +1 -0
  308. package/src/lib/model/product-channel.d.ts +56 -0
  309. package/src/lib/model/product-channel.js +86 -0
  310. package/src/lib/model/product-channel.js.map +1 -0
  311. package/src/lib/model/product-modifiers.d.ts +80 -0
  312. package/src/lib/model/product-modifiers.js +140 -0
  313. package/src/lib/model/product-modifiers.js.map +1 -0
  314. package/src/lib/model/product-write.d.ts +186 -0
  315. package/src/lib/model/product-write.js +116 -0
  316. package/src/lib/model/product-write.js.map +1 -0
  317. package/src/lib/model/shippingeasy.d.ts +94 -0
  318. package/src/lib/model/shippingeasy.js +267 -0
  319. package/src/lib/model/shippingeasy.js.map +1 -0
  320. package/src/lib/model/shipstation.d.ts +125 -0
  321. package/src/lib/model/shipstation.js +399 -0
  322. package/src/lib/model/shipstation.js.map +1 -0
  323. package/src/lib/model/smart-collection-reads.d.ts +32 -0
  324. package/src/lib/model/smart-collection-reads.js +63 -0
  325. package/src/lib/model/smart-collection-reads.js.map +1 -0
  326. package/src/lib/model/tracking-url.d.ts +74 -0
  327. package/src/lib/model/tracking-url.js +159 -0
  328. package/src/lib/model/tracking-url.js.map +1 -0
  329. package/src/lib/plugin-config.d.ts +13 -0
  330. package/src/lib/plugin-config.js +77 -5
  331. package/src/lib/plugin-config.js.map +1 -1
  332. package/src/lib/plugin.js +26 -0
  333. package/src/lib/plugin.js.map +1 -1
  334. package/src/lib/pos-ops-config.d.ts +39 -0
  335. package/src/lib/pos-ops-config.js +88 -0
  336. package/src/lib/pos-ops-config.js.map +1 -0
  337. package/src/lib/printing/print-document.d.ts +106 -0
  338. package/src/lib/printing/print-document.js +464 -0
  339. package/src/lib/printing/print-document.js.map +1 -0
  340. package/src/lib/printing/product-labels.d.ts +58 -0
  341. package/src/lib/printing/product-labels.js +116 -0
  342. package/src/lib/printing/product-labels.js.map +1 -0
  343. package/src/lib/printing/render-epson.d.ts +57 -0
  344. package/src/lib/printing/render-epson.js +135 -0
  345. package/src/lib/printing/render-epson.js.map +1 -0
  346. package/src/lib/printing/render-star.d.ts +45 -0
  347. package/src/lib/printing/render-star.js +100 -0
  348. package/src/lib/printing/render-star.js.map +1 -0
  349. package/src/lib/printing/render-text.d.ts +25 -0
  350. package/src/lib/printing/render-text.js +53 -0
  351. package/src/lib/printing/render-text.js.map +1 -0
  352. package/src/lib/server/api-v1/openapi.js +27 -4
  353. package/src/lib/server/api-v1/openapi.js.map +1 -1
  354. package/src/lib/server/api-v1/order-view.d.ts +67 -0
  355. package/src/lib/server/api-v1/order-view.js +120 -0
  356. package/src/lib/server/api-v1/order-view.js.map +1 -0
  357. package/src/lib/server/api-v1/orders-and-products.js +58 -65
  358. package/src/lib/server/api-v1/orders-and-products.js.map +1 -1
  359. package/src/lib/server/billing-webhook.js +135 -28
  360. package/src/lib/server/billing-webhook.js.map +1 -1
  361. package/src/lib/server/cancel-order.js +29 -0
  362. package/src/lib/server/cancel-order.js.map +1 -1
  363. package/src/lib/server/carrier-rates-availability.d.ts +26 -0
  364. package/src/lib/server/carrier-rates-availability.js +76 -0
  365. package/src/lib/server/carrier-rates-availability.js.map +1 -0
  366. package/src/lib/server/carrier-shipping.d.ts +84 -0
  367. package/src/lib/server/carrier-shipping.js +135 -0
  368. package/src/lib/server/carrier-shipping.js.map +1 -0
  369. package/src/lib/server/cart-checkout.d.ts +2 -0
  370. package/src/lib/server/cart-checkout.js +226 -22
  371. package/src/lib/server/cart-checkout.js.map +1 -1
  372. package/src/lib/server/channel-order-updates.d.ts +50 -0
  373. package/src/lib/server/channel-order-updates.js +290 -0
  374. package/src/lib/server/channel-order-updates.js.map +1 -0
  375. package/src/lib/server/channel-orders.d.ts +85 -0
  376. package/src/lib/server/channel-orders.js +543 -0
  377. package/src/lib/server/channel-orders.js.map +1 -0
  378. package/src/lib/server/checkout-extras.d.ts +64 -0
  379. package/src/lib/server/checkout-extras.js +157 -0
  380. package/src/lib/server/checkout-extras.js.map +1 -0
  381. package/src/lib/server/{feed.d.ts → checkout-status.d.ts} +2 -7
  382. package/src/lib/server/checkout-status.js +111 -0
  383. package/src/lib/server/checkout-status.js.map +1 -0
  384. package/src/lib/server/checkout.js +86 -9
  385. package/src/lib/server/checkout.js.map +1 -1
  386. package/src/lib/server/draft-order.js +34 -5
  387. package/src/lib/server/draft-order.js.map +1 -1
  388. package/src/lib/server/fulfill-order.d.ts +127 -10
  389. package/src/lib/server/fulfill-order.js +451 -49
  390. package/src/lib/server/fulfill-order.js.map +1 -1
  391. package/src/lib/server/legacy-feed.d.ts +28 -0
  392. package/src/lib/server/legacy-feed.js +52 -0
  393. package/src/lib/server/legacy-feed.js.map +1 -0
  394. package/src/lib/server/native-checkout.d.ts +34 -15
  395. package/src/lib/server/native-checkout.js +32 -17
  396. package/src/lib/server/native-checkout.js.map +1 -1
  397. package/src/lib/server/order-event-host-emit.d.ts +23 -0
  398. package/src/lib/server/order-event-host-emit.js +30 -0
  399. package/src/lib/server/order-event-host-emit.js.map +1 -0
  400. package/src/lib/server/order-event-triggers.d.ts +37 -0
  401. package/src/lib/server/order-event-triggers.js +119 -0
  402. package/src/lib/server/order-event-triggers.js.map +1 -0
  403. package/src/lib/server/order-events.d.ts +62 -0
  404. package/src/lib/server/order-events.js +109 -0
  405. package/src/lib/server/order-events.js.map +1 -0
  406. package/src/lib/server/order-history.d.ts +23 -0
  407. package/src/lib/server/order-history.js +65 -0
  408. package/src/lib/server/order-history.js.map +1 -0
  409. package/src/lib/server/order-notifications.d.ts +185 -0
  410. package/src/lib/server/order-notifications.js +567 -0
  411. package/src/lib/server/order-notifications.js.map +1 -0
  412. package/src/lib/server/order-receipt-send.d.ts +39 -0
  413. package/src/lib/server/order-receipt-send.js +151 -0
  414. package/src/lib/server/order-receipt-send.js.map +1 -0
  415. package/src/lib/server/order-status-token.d.ts +31 -0
  416. package/src/lib/server/order-status-token.js +75 -0
  417. package/src/lib/server/order-status-token.js.map +1 -0
  418. package/src/lib/server/order-status.d.ts +58 -0
  419. package/src/lib/server/order-status.js +141 -0
  420. package/src/lib/server/order-status.js.map +1 -0
  421. package/src/lib/server/order-webhooks.d.ts +108 -0
  422. package/src/lib/server/order-webhooks.js +622 -0
  423. package/src/lib/server/order-webhooks.js.map +1 -0
  424. package/src/lib/server/orders-shipping-prepare.d.ts +26 -0
  425. package/src/lib/server/orders-shipping-prepare.js +121 -0
  426. package/src/lib/server/orders-shipping-prepare.js.map +1 -0
  427. package/src/lib/server/payment-method-domains.d.ts +209 -0
  428. package/src/lib/server/payment-method-domains.js +444 -0
  429. package/src/lib/server/payment-method-domains.js.map +1 -0
  430. package/src/lib/server/payment-methods.d.ts +77 -0
  431. package/src/lib/server/payment-methods.js +284 -0
  432. package/src/lib/server/payment-methods.js.map +1 -0
  433. package/src/lib/server/pos-auth.d.ts +50 -0
  434. package/src/lib/server/pos-auth.js +121 -0
  435. package/src/lib/server/pos-auth.js.map +1 -0
  436. package/src/lib/server/pos-customer.d.ts +49 -0
  437. package/src/lib/server/pos-customer.js +257 -0
  438. package/src/lib/server/pos-customer.js.map +1 -0
  439. package/src/lib/server/pos-display.d.ts +57 -0
  440. package/src/lib/server/pos-display.js +419 -0
  441. package/src/lib/server/pos-display.js.map +1 -0
  442. package/src/lib/server/pos-fee-month.d.ts +34 -0
  443. package/src/lib/server/pos-fee-month.js +36 -0
  444. package/src/lib/server/pos-fee-month.js.map +1 -0
  445. package/src/lib/server/pos-ops-gate.d.ts +161 -0
  446. package/src/lib/server/pos-ops-gate.js +295 -0
  447. package/src/lib/server/pos-ops-gate.js.map +1 -0
  448. package/src/lib/server/pos-ops-routes.d.ts +22 -0
  449. package/src/lib/server/pos-ops-routes.js +36 -0
  450. package/src/lib/server/pos-ops-routes.js.map +1 -0
  451. package/src/lib/server/pos-order.d.ts +1 -18
  452. package/src/lib/server/pos-order.js +222 -42
  453. package/src/lib/server/pos-order.js.map +1 -1
  454. package/src/lib/server/pos-payment.d.ts +39 -0
  455. package/src/lib/server/pos-payment.js +922 -0
  456. package/src/lib/server/pos-payment.js.map +1 -0
  457. package/src/lib/server/pos-print.d.ts +82 -0
  458. package/src/lib/server/pos-print.js +193 -0
  459. package/src/lib/server/pos-print.js.map +1 -0
  460. package/src/lib/server/pos-readers.d.ts +27 -0
  461. package/src/lib/server/pos-readers.js +276 -0
  462. package/src/lib/server/pos-readers.js.map +1 -0
  463. package/src/lib/server/pos-refund-authority.d.ts +60 -0
  464. package/src/lib/server/pos-refund-authority.js +72 -0
  465. package/src/lib/server/pos-refund-authority.js.map +1 -0
  466. package/src/lib/server/pos-return.d.ts +58 -0
  467. package/src/lib/server/pos-return.js +891 -0
  468. package/src/lib/server/pos-return.js.map +1 -0
  469. package/src/lib/server/pos-sale-stamp.d.ts +66 -0
  470. package/src/lib/server/pos-sale-stamp.js +84 -0
  471. package/src/lib/server/pos-sale-stamp.js.map +1 -0
  472. package/src/lib/server/pos-sale.d.ts +170 -0
  473. package/src/lib/server/pos-sale.js +461 -0
  474. package/src/lib/server/pos-sale.js.map +1 -0
  475. package/src/lib/server/pos-shift.d.ts +45 -0
  476. package/src/lib/server/pos-shift.js +484 -0
  477. package/src/lib/server/pos-shift.js.map +1 -0
  478. package/src/lib/server/pos-staff-pin.d.ts +26 -0
  479. package/src/lib/server/pos-staff-pin.js +339 -0
  480. package/src/lib/server/pos-staff-pin.js.map +1 -0
  481. package/src/lib/server/pos-stripe.d.ts +91 -0
  482. package/src/lib/server/pos-stripe.js +129 -0
  483. package/src/lib/server/pos-stripe.js.map +1 -0
  484. package/src/lib/server/pos-terminal-connection-token.d.ts +48 -0
  485. package/src/lib/server/pos-terminal-connection-token.js +166 -0
  486. package/src/lib/server/pos-terminal-connection-token.js.map +1 -0
  487. package/src/lib/server/pos-terminal.d.ts +218 -0
  488. package/src/lib/server/pos-terminal.js +1014 -0
  489. package/src/lib/server/pos-terminal.js.map +1 -0
  490. package/src/lib/server/print-queue.d.ts +124 -0
  491. package/src/lib/server/print-queue.js +301 -0
  492. package/src/lib/server/print-queue.js.map +1 -0
  493. package/src/lib/server/printer-poll.d.ts +75 -0
  494. package/src/lib/server/printer-poll.js +325 -0
  495. package/src/lib/server/printer-poll.js.map +1 -0
  496. package/src/lib/server/printer-secret.d.ts +39 -0
  497. package/src/lib/server/printer-secret.js +56 -0
  498. package/src/lib/server/printer-secret.js.map +1 -0
  499. package/src/lib/server/printers.d.ts +114 -0
  500. package/src/lib/server/printers.js +546 -0
  501. package/src/lib/server/printers.js.map +1 -0
  502. package/src/lib/server/product-catalog.d.ts +42 -0
  503. package/src/lib/server/product-catalog.js +309 -0
  504. package/src/lib/server/product-catalog.js.map +1 -0
  505. package/src/lib/server/product-drafts.d.ts +5 -1
  506. package/src/lib/server/product-drafts.js +3 -3
  507. package/src/lib/server/product-drafts.js.map +1 -1
  508. package/src/lib/server/product-writer.d.ts +19 -0
  509. package/src/lib/server/product-writer.js +261 -0
  510. package/src/lib/server/product-writer.js.map +1 -0
  511. package/src/lib/server/products-write.d.ts +61 -0
  512. package/src/lib/server/products-write.js +375 -0
  513. package/src/lib/server/products-write.js.map +1 -0
  514. package/src/lib/server/refund.js +110 -45
  515. package/src/lib/server/refund.js.map +1 -1
  516. package/src/lib/server/reserve.js +2 -0
  517. package/src/lib/server/reserve.js.map +1 -1
  518. package/src/lib/server/return-status-action.d.ts +37 -0
  519. package/src/lib/server/return-status-action.js +57 -0
  520. package/src/lib/server/return-status-action.js.map +1 -0
  521. package/src/lib/server/returns.d.ts +119 -0
  522. package/src/lib/server/returns.js +938 -0
  523. package/src/lib/server/returns.js.map +1 -0
  524. package/src/lib/server/shipment-records.d.ts +36 -0
  525. package/src/lib/server/shipment-records.js +289 -0
  526. package/src/lib/server/shipment-records.js.map +1 -0
  527. package/src/lib/server/shipping-connector-gates.d.ts +40 -0
  528. package/src/lib/server/shipping-connector-gates.js +97 -0
  529. package/src/lib/server/shipping-connector-gates.js.map +1 -0
  530. package/src/lib/server/shipping-connectors.d.ts +29 -0
  531. package/src/lib/server/shipping-connectors.js +236 -0
  532. package/src/lib/server/shipping-connectors.js.map +1 -0
  533. package/src/lib/server/shippingeasy.d.ts +238 -0
  534. package/src/lib/server/shippingeasy.js +787 -0
  535. package/src/lib/server/shippingeasy.js.map +1 -0
  536. package/src/lib/server/shipstation.d.ts +129 -0
  537. package/src/lib/server/shipstation.js +483 -0
  538. package/src/lib/server/shipstation.js.map +1 -0
  539. package/src/lib/server/site-page-resolver.d.ts +5 -0
  540. package/src/lib/server/site-page-resolver.js +156 -1
  541. package/src/lib/server/site-page-resolver.js.map +1 -1
  542. package/src/lib/server/stock-levels.d.ts +21 -0
  543. package/src/lib/server/stock-levels.js +263 -0
  544. package/src/lib/server/stock-levels.js.map +1 -0
  545. package/src/lib/server/stripe-refund.d.ts +47 -0
  546. package/src/lib/server/stripe-refund.js +87 -0
  547. package/src/lib/server/stripe-refund.js.map +1 -0
  548. package/src/lib/server/supplier-update.js +46 -5
  549. package/src/lib/server/supplier-update.js.map +1 -1
  550. package/src/lib/server/tax-engine-quote.d.ts +47 -0
  551. package/src/lib/server/tax-engine-quote.js +105 -0
  552. package/src/lib/server/tax-engine-quote.js.map +1 -0
  553. package/src/lib/server.js +143 -2
  554. package/src/lib/server.js.map +1 -1
  555. package/src/lib/site.js +12 -0
  556. package/src/lib/site.js.map +1 -1
  557. package/src/lib/subprocessors.d.ts +26 -0
  558. package/src/lib/subprocessors.js +50 -0
  559. package/src/lib/subprocessors.js.map +1 -0
  560. package/src/lib/tenant-emails.js +461 -3
  561. package/src/lib/tenant-emails.js.map +1 -1
  562. package/src/lib/testing/fake-firestore.d.ts +45 -0
  563. package/src/lib/testing/fake-firestore.js +189 -0
  564. package/src/lib/testing/fake-firestore.js.map +1 -0
  565. package/src/lib/testing/memory-firestore.d.ts +136 -0
  566. package/src/lib/testing/memory-firestore.js +282 -0
  567. package/src/lib/testing/memory-firestore.js.map +1 -0
  568. package/src/lib/testing/pos-ops-harness.d.ts +50 -0
  569. package/src/lib/testing/pos-ops-harness.js +184 -0
  570. package/src/lib/testing/pos-ops-harness.js.map +1 -0
  571. package/src/lib/testing/pos-ops-memory-firestore.d.ts +55 -0
  572. package/src/lib/testing/pos-ops-memory-firestore.js +376 -0
  573. package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -0
  574. package/src/lib/transfer/products.server.d.ts +5 -0
  575. package/src/lib/transfer/products.server.js +2 -2
  576. package/src/lib/transfer/products.server.js.map +1 -1
  577. package/src/lib/transfer/records-transfer.d.ts +11 -1
  578. package/src/lib/transfer/records-transfer.js +127 -5
  579. package/src/lib/transfer/records-transfer.js.map +1 -1
  580. package/src/lib/transfer/records.server.d.ts +9 -2
  581. package/src/lib/transfer/records.server.js +58 -7
  582. package/src/lib/transfer/records.server.js.map +1 -1
  583. package/src/lib/transfer/register-transfer-resources.js +40 -1
  584. package/src/lib/transfer/register-transfer-resources.js.map +1 -1
  585. package/src/lib/transfer/register-transfer-ui.js +4 -1
  586. package/src/lib/transfer/register-transfer-ui.js.map +1 -1
  587. package/src/lib/transfer/shipping-presets.d.ts +23 -0
  588. package/src/lib/transfer/shipping-presets.js +156 -0
  589. package/src/lib/transfer/shipping-presets.js.map +1 -0
  590. package/src/lib/transfer/tracking-transfer.d.ts +101 -0
  591. package/src/lib/transfer/tracking-transfer.js +546 -0
  592. package/src/lib/transfer/tracking-transfer.js.map +1 -0
  593. package/src/lib/transfer/tracking.server.d.ts +37 -0
  594. package/src/lib/transfer/tracking.server.js +393 -0
  595. package/src/lib/transfer/tracking.server.js.map +1 -0
  596. package/src/lib/transfer/transfer-keys.d.ts +2 -1
  597. package/src/lib/transfer/transfer-keys.js +6 -2
  598. package/src/lib/transfer/transfer-keys.js.map +1 -1
  599. package/src/lib/utils/code128.d.ts +37 -0
  600. package/src/lib/utils/code128.js +199 -0
  601. package/src/lib/utils/code128.js.map +1 -0
  602. package/src/lib/utils/order-invoice.d.ts +55 -0
  603. package/src/lib/utils/order-invoice.js +127 -0
  604. package/src/lib/utils/order-invoice.js.map +1 -0
  605. package/src/lib/utils/use-checkout-return-notice.d.ts +34 -0
  606. package/src/lib/utils/use-checkout-return-notice.js +78 -0
  607. package/src/lib/utils/use-checkout-return-notice.js.map +1 -0
  608. package/src/lib/server/feed.js +0 -69
  609. package/src/lib/server/feed.js.map +0 -1
@@ -0,0 +1,154 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { type PluginDomainEvent, type PluginDomainEventDeclaration } from '@aglyn/aglyn/plugin-manager/plugin-domain-events';
18
+ /**
19
+ * The order and return events commerce raises (AGL-3611), for other plugins
20
+ * — accounting, shipping, workflows — and for the merchant's own webhooks.
21
+ *
22
+ * Each payload carries `order` in the public API's shape (`GET
23
+ * /v1/sites/{siteId}/orders/{orderId}`), as it stood once the fact was
24
+ * written, so a subscriber reads one documented object rather than the
25
+ * plugin's storage. A subscriber in another plugin restates the fields it
26
+ * reads; these types are this plugin's own.
27
+ */
28
+ /** An order as the public API returns it. Money is integer cents. */
29
+ export interface OrderEventOrder {
30
+ id: string;
31
+ object: 'order';
32
+ number: number | null;
33
+ status: string | null;
34
+ channel: string;
35
+ currency: string;
36
+ customerEmail: string | null;
37
+ customerName: string | null;
38
+ lineItems: unknown;
39
+ totals: {
40
+ itemsCents: number;
41
+ shippingCents: number;
42
+ taxCents: number;
43
+ discountCents: number;
44
+ totalCents: number | null;
45
+ feeCents: number;
46
+ };
47
+ refundedCents: number;
48
+ /** The tax regime: `stripe-automatic`, `manual`, `none`, or `null` when not recorded. */
49
+ taxMode: string | null;
50
+ [key: string]: unknown;
51
+ }
52
+ /** A shipment as an event carries it. */
53
+ export interface OrderEventFulfillment {
54
+ id: string;
55
+ lines: Array<{
56
+ lineItemId: number;
57
+ quantity: number;
58
+ }>;
59
+ carrier: string | null;
60
+ trackingNumber: string | null;
61
+ trackingUrl: string | null;
62
+ labelUrl: string | null;
63
+ at: string;
64
+ }
65
+ /** A refund as an event carries it: what THIS refund moved. */
66
+ export interface OrderEventRefund {
67
+ /** Stripe's refund id, when there is one. */
68
+ id: string | null;
69
+ amountCents: number;
70
+ /** The line indexes refunded by name; empty for an amount-only refund. */
71
+ lineItemIds: number[];
72
+ /** Whether this refund left nothing more to refund. */
73
+ full: boolean;
74
+ }
75
+ /** A return as an event carries it. */
76
+ export interface OrderEventReturn {
77
+ id: string;
78
+ status: string;
79
+ lines: Array<{
80
+ lineItemId: number;
81
+ quantity: number;
82
+ reason: string;
83
+ }>;
84
+ refundCents: number | null;
85
+ /** What went back in stock when the parcel arrived; `null` before then. */
86
+ restock?: Array<{
87
+ lineItemId: number;
88
+ quantity: number;
89
+ }> | null;
90
+ }
91
+ export interface OrderEventPayload {
92
+ order: OrderEventOrder;
93
+ }
94
+ export interface OrderFulfilledEventPayload extends OrderEventPayload {
95
+ fulfillment: OrderEventFulfillment;
96
+ }
97
+ export interface OrderRefundedEventPayload extends OrderEventPayload {
98
+ refund: OrderEventRefund;
99
+ }
100
+ export interface ReturnEventPayload extends OrderEventPayload {
101
+ return: OrderEventReturn;
102
+ }
103
+ export declare const ORDER_PAID_EVENT: PluginDomainEvent<OrderEventPayload>;
104
+ export declare const ORDER_FULFILLED_EVENT: PluginDomainEvent<OrderFulfilledEventPayload>;
105
+ export declare const ORDER_DELIVERED_EVENT: PluginDomainEvent<OrderEventPayload>;
106
+ export declare const ORDER_REFUNDED_EVENT: PluginDomainEvent<OrderRefundedEventPayload>;
107
+ export declare const ORDER_CANCELLED_EVENT: PluginDomainEvent<OrderEventPayload>;
108
+ export declare const RETURN_REQUESTED_EVENT: PluginDomainEvent<ReturnEventPayload>;
109
+ export declare const RETURN_APPROVED_EVENT: PluginDomainEvent<ReturnEventPayload>;
110
+ export declare const RETURN_DECLINED_EVENT: PluginDomainEvent<ReturnEventPayload>;
111
+ export declare const RETURN_RECEIVED_EVENT: PluginDomainEvent<ReturnEventPayload>;
112
+ export declare const RETURN_REFUNDED_EVENT: PluginDomainEvent<ReturnEventPayload>;
113
+ /**
114
+ * A checkout a shopper reached with an address (AGL-3639): the fact an
115
+ * abandoned-cart flow in a merchant's own email platform starts from. Not an
116
+ * order event — nothing was bought — so it is raised beside them rather than
117
+ * among them: it is not a workflow trigger and not offered to the merchant's
118
+ * outbound webhooks, whose events are about orders.
119
+ */
120
+ export interface CheckoutStartedEventPayload {
121
+ checkout: {
122
+ /** The checkout session's id: one event per checkout. */
123
+ id: string;
124
+ email: string;
125
+ /** Whether the shopper ticked the store's marketing box at checkout. */
126
+ marketingOptIn: boolean;
127
+ currency: string;
128
+ /** The basket's list value, integer cents, before discounts and shipping. */
129
+ itemsCents: number;
130
+ /** Where the shopper can pick the checkout up again. */
131
+ resumeUrl: string | null;
132
+ items: Array<{
133
+ productId: string;
134
+ variantId: string | null;
135
+ name: string;
136
+ sku: string | null;
137
+ quantity: number;
138
+ unitCents: number;
139
+ }>;
140
+ };
141
+ }
142
+ export declare const CHECKOUT_STARTED_EVENT: PluginDomainEvent<CheckoutStartedEventPayload>;
143
+ export declare const CHECKOUT_STARTED_EVENT_DECLARATION: PluginDomainEventDeclaration;
144
+ /** Every event commerce raises, by name. */
145
+ export type CommerceEventName = 'order.paid' | 'order.fulfilled' | 'order.delivered' | 'order.refunded' | 'order.cancelled' | 'return.requested' | 'return.approved' | 'return.declined' | 'return.received' | 'return.refunded';
146
+ /** The events, in the order pickers list them, with their words. */
147
+ export declare const COMMERCE_EVENT_DECLARATIONS: ReadonlyArray<PluginDomainEventDeclaration & {
148
+ event: PluginDomainEvent<unknown>;
149
+ hostEvent: string;
150
+ }>;
151
+ /** The workflow trigger an event is offered as. */
152
+ export declare function commerceHostEventFor(event: string): string | null;
153
+ /** The event names, for a webhook's event picker. */
154
+ export declare const COMMERCE_EVENT_NAMES: readonly CommerceEventName[];
@@ -0,0 +1,153 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ import { definePluginDomainEvent } from "@aglyn/aglyn/plugin-manager/plugin-domain-events";
17
+ export const ORDER_PAID_EVENT = definePluginDomainEvent('order.paid');
18
+ export const ORDER_FULFILLED_EVENT = definePluginDomainEvent('order.fulfilled');
19
+ export const ORDER_DELIVERED_EVENT = definePluginDomainEvent('order.delivered');
20
+ export const ORDER_REFUNDED_EVENT = definePluginDomainEvent('order.refunded');
21
+ export const ORDER_CANCELLED_EVENT = definePluginDomainEvent('order.cancelled');
22
+ export const RETURN_REQUESTED_EVENT = definePluginDomainEvent('return.requested');
23
+ export const RETURN_APPROVED_EVENT = definePluginDomainEvent('return.approved');
24
+ export const RETURN_DECLINED_EVENT = definePluginDomainEvent('return.declined');
25
+ export const RETURN_RECEIVED_EVENT = definePluginDomainEvent('return.received');
26
+ export const RETURN_REFUNDED_EVENT = definePluginDomainEvent('return.refunded');
27
+ export const CHECKOUT_STARTED_EVENT = definePluginDomainEvent('checkout.started');
28
+ export const CHECKOUT_STARTED_EVENT_DECLARATION = {
29
+ event: CHECKOUT_STARTED_EVENT,
30
+ label: 'Checkout started',
31
+ description: 'A shopper reached checkout with an email address: the basket, its value and the link back to it. Raised once per checkout, whether or not it is paid.',
32
+ payloadKeys: [
33
+ 'checkout'
34
+ ]
35
+ };
36
+ /** The events, in the order pickers list them, with their words. */ export const COMMERCE_EVENT_DECLARATIONS = [
37
+ {
38
+ event: ORDER_PAID_EVENT,
39
+ hostEvent: 'orderPaid',
40
+ label: 'Order paid',
41
+ description: 'An order was paid: a storefront checkout, a buy-now, a paid payment link, a POS sale or a subscription renewal.',
42
+ payloadKeys: [
43
+ 'order'
44
+ ]
45
+ },
46
+ {
47
+ event: ORDER_FULFILLED_EVENT,
48
+ hostEvent: 'orderFulfilled',
49
+ label: 'Order fulfilled',
50
+ description: 'A shipment was recorded on an order, once per shipment, with the units it carried.',
51
+ payloadKeys: [
52
+ 'order',
53
+ 'fulfillment'
54
+ ]
55
+ },
56
+ {
57
+ event: ORDER_DELIVERED_EVENT,
58
+ hostEvent: 'orderDelivered',
59
+ label: 'Order delivered',
60
+ description: 'An order was marked delivered.',
61
+ payloadKeys: [
62
+ 'order'
63
+ ]
64
+ },
65
+ {
66
+ event: ORDER_REFUNDED_EVENT,
67
+ hostEvent: 'orderRefunded',
68
+ label: 'Order refunded',
69
+ description: 'Money went back to the buyer, in part or in full, once per refund.',
70
+ payloadKeys: [
71
+ 'order',
72
+ 'refund'
73
+ ]
74
+ },
75
+ {
76
+ event: ORDER_CANCELLED_EVENT,
77
+ hostEvent: 'orderCancelled',
78
+ label: 'Order canceled',
79
+ description: 'An order was canceled and its stock returned.',
80
+ payloadKeys: [
81
+ 'order'
82
+ ]
83
+ },
84
+ {
85
+ event: RETURN_REQUESTED_EVENT,
86
+ hostEvent: 'returnRequested',
87
+ label: 'Return requested',
88
+ description: 'A buyer asked to return items, or the merchant opened a return for them.',
89
+ payloadKeys: [
90
+ 'order',
91
+ 'return'
92
+ ]
93
+ },
94
+ {
95
+ event: RETURN_APPROVED_EVENT,
96
+ hostEvent: 'returnApproved',
97
+ label: 'Return approved',
98
+ description: 'The store approved a return, or opened one itself.',
99
+ payloadKeys: [
100
+ 'order',
101
+ 'return'
102
+ ]
103
+ },
104
+ {
105
+ event: RETURN_DECLINED_EVENT,
106
+ hostEvent: 'returnDeclined',
107
+ label: 'Return declined',
108
+ description: 'The store declined a return request.',
109
+ payloadKeys: [
110
+ 'order',
111
+ 'return'
112
+ ]
113
+ },
114
+ {
115
+ event: RETURN_RECEIVED_EVENT,
116
+ hostEvent: 'returnReceived',
117
+ label: 'Return received',
118
+ description: 'The returned items arrived, with what went back in stock.',
119
+ payloadKeys: [
120
+ 'order',
121
+ 'return'
122
+ ]
123
+ },
124
+ {
125
+ event: RETURN_REFUNDED_EVENT,
126
+ hostEvent: 'returnRefunded',
127
+ label: 'Return refunded',
128
+ description: 'A return was refunded.',
129
+ payloadKeys: [
130
+ 'order',
131
+ 'return'
132
+ ]
133
+ }
134
+ ];
135
+ /** The workflow trigger an event is offered as. */ export function commerceHostEventFor(event) {
136
+ var _ref;
137
+ var _COMMERCE_EVENT_DECLARATIONS_find;
138
+ return (_ref = (_COMMERCE_EVENT_DECLARATIONS_find = COMMERCE_EVENT_DECLARATIONS.find((entry)=>entry.event.id === event)) == null ? void 0 : _COMMERCE_EVENT_DECLARATIONS_find.hostEvent) != null ? _ref : null;
139
+ }
140
+ /** The event names, for a webhook's event picker. */ export const COMMERCE_EVENT_NAMES = [
141
+ 'order.paid',
142
+ 'order.fulfilled',
143
+ 'order.delivered',
144
+ 'order.refunded',
145
+ 'order.cancelled',
146
+ 'return.requested',
147
+ 'return.approved',
148
+ 'return.declined',
149
+ 'return.received',
150
+ 'return.refunded'
151
+ ];
152
+
153
+ //# sourceMappingURL=order-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/commerce/src/lib/model/order-events.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n definePluginDomainEvent,\n type PluginDomainEvent,\n type PluginDomainEventDeclaration,\n} from '@aglyn/aglyn/plugin-manager/plugin-domain-events'\n\n/**\n * The order and return events commerce raises (AGL-3611), for other plugins\n * — accounting, shipping, workflows — and for the merchant's own webhooks.\n *\n * Each payload carries `order` in the public API's shape (`GET\n * /v1/sites/{siteId}/orders/{orderId}`), as it stood once the fact was\n * written, so a subscriber reads one documented object rather than the\n * plugin's storage. A subscriber in another plugin restates the fields it\n * reads; these types are this plugin's own.\n */\n\n/** An order as the public API returns it. Money is integer cents. */\nexport interface OrderEventOrder {\n id: string\n object: 'order'\n number: number | null\n status: string | null\n channel: string\n currency: string\n customerEmail: string | null\n customerName: string | null\n lineItems: unknown\n totals: {\n itemsCents: number\n shippingCents: number\n taxCents: number\n discountCents: number\n totalCents: number | null\n feeCents: number\n }\n refundedCents: number\n /** The tax regime: `stripe-automatic`, `manual`, `none`, or `null` when not recorded. */\n taxMode: string | null\n [key: string]: unknown\n}\n\n/** A shipment as an event carries it. */\nexport interface OrderEventFulfillment {\n id: string\n lines: Array<{ lineItemId: number; quantity: number }>\n carrier: string | null\n trackingNumber: string | null\n trackingUrl: string | null\n labelUrl: string | null\n at: string\n}\n\n/** A refund as an event carries it: what THIS refund moved. */\nexport interface OrderEventRefund {\n /** Stripe's refund id, when there is one. */\n id: string | null\n amountCents: number\n /** The line indexes refunded by name; empty for an amount-only refund. */\n lineItemIds: number[]\n /** Whether this refund left nothing more to refund. */\n full: boolean\n}\n\n/** A return as an event carries it. */\nexport interface OrderEventReturn {\n id: string\n status: string\n lines: Array<{ lineItemId: number; quantity: number; reason: string }>\n refundCents: number | null\n /** What went back in stock when the parcel arrived; `null` before then. */\n restock?: Array<{ lineItemId: number; quantity: number }> | null\n}\n\nexport interface OrderEventPayload {\n order: OrderEventOrder\n}\nexport interface OrderFulfilledEventPayload extends OrderEventPayload {\n fulfillment: OrderEventFulfillment\n}\nexport interface OrderRefundedEventPayload extends OrderEventPayload {\n refund: OrderEventRefund\n}\nexport interface ReturnEventPayload extends OrderEventPayload {\n return: OrderEventReturn\n}\n\nexport const ORDER_PAID_EVENT = definePluginDomainEvent<OrderEventPayload>('order.paid')\nexport const ORDER_FULFILLED_EVENT = definePluginDomainEvent<OrderFulfilledEventPayload>('order.fulfilled')\nexport const ORDER_DELIVERED_EVENT = definePluginDomainEvent<OrderEventPayload>('order.delivered')\nexport const ORDER_REFUNDED_EVENT = definePluginDomainEvent<OrderRefundedEventPayload>('order.refunded')\nexport const ORDER_CANCELLED_EVENT = definePluginDomainEvent<OrderEventPayload>('order.cancelled')\nexport const RETURN_REQUESTED_EVENT = definePluginDomainEvent<ReturnEventPayload>('return.requested')\nexport const RETURN_APPROVED_EVENT = definePluginDomainEvent<ReturnEventPayload>('return.approved')\nexport const RETURN_DECLINED_EVENT = definePluginDomainEvent<ReturnEventPayload>('return.declined')\nexport const RETURN_RECEIVED_EVENT = definePluginDomainEvent<ReturnEventPayload>('return.received')\nexport const RETURN_REFUNDED_EVENT = definePluginDomainEvent<ReturnEventPayload>('return.refunded')\n\n/**\n * A checkout a shopper reached with an address (AGL-3639): the fact an\n * abandoned-cart flow in a merchant's own email platform starts from. Not an\n * order event — nothing was bought — so it is raised beside them rather than\n * among them: it is not a workflow trigger and not offered to the merchant's\n * outbound webhooks, whose events are about orders.\n */\nexport interface CheckoutStartedEventPayload {\n checkout: {\n /** The checkout session's id: one event per checkout. */\n id: string\n email: string\n /** Whether the shopper ticked the store's marketing box at checkout. */\n marketingOptIn: boolean\n currency: string\n /** The basket's list value, integer cents, before discounts and shipping. */\n itemsCents: number\n /** Where the shopper can pick the checkout up again. */\n resumeUrl: string | null\n items: Array<{\n productId: string\n variantId: string | null\n name: string\n sku: string | null\n quantity: number\n unitCents: number\n }>\n }\n}\n\nexport const CHECKOUT_STARTED_EVENT = definePluginDomainEvent<CheckoutStartedEventPayload>('checkout.started')\n\nexport const CHECKOUT_STARTED_EVENT_DECLARATION: PluginDomainEventDeclaration = {\n event: CHECKOUT_STARTED_EVENT as PluginDomainEvent<unknown>,\n label: 'Checkout started',\n description:\n 'A shopper reached checkout with an email address: the basket, its value and the link back to it. Raised once per checkout, whether or not it is paid.',\n payloadKeys: ['checkout'],\n}\n\n/** Every event commerce raises, by name. */\nexport type CommerceEventName =\n | 'order.paid'\n | 'order.fulfilled'\n | 'order.delivered'\n | 'order.refunded'\n | 'order.cancelled'\n | 'return.requested'\n | 'return.approved'\n | 'return.declined'\n | 'return.received'\n | 'return.refunded'\n\n/** The events, in the order pickers list them, with their words. */\nexport const COMMERCE_EVENT_DECLARATIONS: ReadonlyArray<\n PluginDomainEventDeclaration & { event: PluginDomainEvent<unknown>; hostEvent: string }\n> = [\n {\n event: ORDER_PAID_EVENT,\n hostEvent: 'orderPaid',\n label: 'Order paid',\n description:\n 'An order was paid: a storefront checkout, a buy-now, a paid payment link, a POS sale or a subscription renewal.',\n payloadKeys: ['order'],\n },\n {\n event: ORDER_FULFILLED_EVENT,\n hostEvent: 'orderFulfilled',\n label: 'Order fulfilled',\n description: 'A shipment was recorded on an order, once per shipment, with the units it carried.',\n payloadKeys: ['order', 'fulfillment'],\n },\n {\n event: ORDER_DELIVERED_EVENT,\n hostEvent: 'orderDelivered',\n label: 'Order delivered',\n description: 'An order was marked delivered.',\n payloadKeys: ['order'],\n },\n {\n event: ORDER_REFUNDED_EVENT,\n hostEvent: 'orderRefunded',\n label: 'Order refunded',\n description: 'Money went back to the buyer, in part or in full, once per refund.',\n payloadKeys: ['order', 'refund'],\n },\n {\n event: ORDER_CANCELLED_EVENT,\n hostEvent: 'orderCancelled',\n label: 'Order canceled',\n description: 'An order was canceled and its stock returned.',\n payloadKeys: ['order'],\n },\n {\n event: RETURN_REQUESTED_EVENT,\n hostEvent: 'returnRequested',\n label: 'Return requested',\n description: 'A buyer asked to return items, or the merchant opened a return for them.',\n payloadKeys: ['order', 'return'],\n },\n {\n event: RETURN_APPROVED_EVENT,\n hostEvent: 'returnApproved',\n label: 'Return approved',\n description: 'The store approved a return, or opened one itself.',\n payloadKeys: ['order', 'return'],\n },\n {\n event: RETURN_DECLINED_EVENT,\n hostEvent: 'returnDeclined',\n label: 'Return declined',\n description: 'The store declined a return request.',\n payloadKeys: ['order', 'return'],\n },\n {\n event: RETURN_RECEIVED_EVENT,\n hostEvent: 'returnReceived',\n label: 'Return received',\n description: 'The returned items arrived, with what went back in stock.',\n payloadKeys: ['order', 'return'],\n },\n {\n event: RETURN_REFUNDED_EVENT,\n hostEvent: 'returnRefunded',\n label: 'Return refunded',\n description: 'A return was refunded.',\n payloadKeys: ['order', 'return'],\n },\n]\n\n/** The workflow trigger an event is offered as. */\nexport function commerceHostEventFor(event: string): string | null {\n return COMMERCE_EVENT_DECLARATIONS.find((entry) => entry.event.id === event)?.hostEvent ?? null\n}\n\n/** The event names, for a webhook's event picker. */\nexport const COMMERCE_EVENT_NAMES: readonly CommerceEventName[] = [\n 'order.paid',\n 'order.fulfilled',\n 'order.delivered',\n 'order.refunded',\n 'order.cancelled',\n 'return.requested',\n 'return.approved',\n 'return.declined',\n 'return.received',\n 'return.refunded',\n]\n"],"names":["definePluginDomainEvent","ORDER_PAID_EVENT","ORDER_FULFILLED_EVENT","ORDER_DELIVERED_EVENT","ORDER_REFUNDED_EVENT","ORDER_CANCELLED_EVENT","RETURN_REQUESTED_EVENT","RETURN_APPROVED_EVENT","RETURN_DECLINED_EVENT","RETURN_RECEIVED_EVENT","RETURN_REFUNDED_EVENT","CHECKOUT_STARTED_EVENT","CHECKOUT_STARTED_EVENT_DECLARATION","event","label","description","payloadKeys","COMMERCE_EVENT_DECLARATIONS","hostEvent","commerceHostEventFor","find","entry","id","COMMERCE_EVENT_NAMES"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SACEA,uBAAuB,QAGlB,mDAAkD;AAmFzD,OAAO,MAAMC,mBAAmBD,wBAA2C,cAAa;AACxF,OAAO,MAAME,wBAAwBF,wBAAoD,mBAAkB;AAC3G,OAAO,MAAMG,wBAAwBH,wBAA2C,mBAAkB;AAClG,OAAO,MAAMI,uBAAuBJ,wBAAmD,kBAAiB;AACxG,OAAO,MAAMK,wBAAwBL,wBAA2C,mBAAkB;AAClG,OAAO,MAAMM,yBAAyBN,wBAA4C,oBAAmB;AACrG,OAAO,MAAMO,wBAAwBP,wBAA4C,mBAAkB;AACnG,OAAO,MAAMQ,wBAAwBR,wBAA4C,mBAAkB;AACnG,OAAO,MAAMS,wBAAwBT,wBAA4C,mBAAkB;AACnG,OAAO,MAAMU,wBAAwBV,wBAA4C,mBAAkB;AAgCnG,OAAO,MAAMW,yBAAyBX,wBAAqD,oBAAmB;AAE9G,OAAO,MAAMY,qCAAmE;IAC9EC,OAAOF;IACPG,OAAO;IACPC,aACE;IACFC,aAAa;QAAC;KAAW;AAC3B,EAAC;AAeD,kEAAkE,GAClE,OAAO,MAAMC,8BAET;IACF;QACEJ,OAAOZ;QACPiB,WAAW;QACXJ,OAAO;QACPC,aACE;QACFC,aAAa;YAAC;SAAQ;IACxB;IACA;QACEH,OAAOX;QACPgB,WAAW;QACXJ,OAAO;QACPC,aAAa;QACbC,aAAa;YAAC;YAAS;SAAc;IACvC;IACA;QACEH,OAAOV;QACPe,WAAW;QACXJ,OAAO;QACPC,aAAa;QACbC,aAAa;YAAC;SAAQ;IACxB;IACA;QACEH,OAAOT;QACPc,WAAW;QACXJ,OAAO;QACPC,aAAa;QACbC,aAAa;YAAC;YAAS;SAAS;IAClC;IACA;QACEH,OAAOR;QACPa,WAAW;QACXJ,OAAO;QACPC,aAAa;QACbC,aAAa;YAAC;SAAQ;IACxB;IACA;QACEH,OAAOP;QACPY,WAAW;QACXJ,OAAO;QACPC,aAAa;QACbC,aAAa;YAAC;YAAS;SAAS;IAClC;IACA;QACEH,OAAON;QACPW,WAAW;QACXJ,OAAO;QACPC,aAAa;QACbC,aAAa;YAAC;YAAS;SAAS;IAClC;IACA;QACEH,OAAOL;QACPU,WAAW;QACXJ,OAAO;QACPC,aAAa;QACbC,aAAa;YAAC;YAAS;SAAS;IAClC;IACA;QACEH,OAAOJ;QACPS,WAAW;QACXJ,OAAO;QACPC,aAAa;QACbC,aAAa;YAAC;YAAS;SAAS;IAClC;IACA;QACEH,OAAOH;QACPQ,WAAW;QACXJ,OAAO;QACPC,aAAa;QACbC,aAAa;YAAC;YAAS;SAAS;IAClC;CACD,CAAA;AAED,iDAAiD,GACjD,OAAO,SAASG,qBAAqBN,KAAa;;QACzCI;IAAP,gBAAOA,oCAAAA,4BAA4BG,IAAI,CAAC,CAACC,QAAUA,MAAMR,KAAK,CAACS,EAAE,KAAKT,2BAA/DI,kCAAuEC,SAAS,mBAAI;AAC7F;AAEA,mDAAmD,GACnD,OAAO,MAAMK,uBAAqD;IAChE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Quantity-level fulfillment (AGL-3611).
19
+ *
20
+ * A fulfillment used to name whole lines (`lineItemIds`), so "ship 2 of the 5
21
+ * mugs now, the rest next week" could not be said. A fulfillment now carries
22
+ * `lines: [{ lineItemId, quantity }]`; one written before that reads as every
23
+ * unit of each line it named, which is what it meant when it was written.
24
+ *
25
+ * Every figure here is computed from the order's own fulfillments, so the
26
+ * server's transaction and the console's panel ask the same question of the
27
+ * same record and cannot disagree about what is left to ship.
28
+ */
29
+ import type { HostOrder, OrderFulfillment, OrderLineItem, OrderStatus } from './commerce-orders';
30
+ /** One line of a fulfillment: which order line, and how many of its units. */
31
+ export interface OrderFulfillmentLine {
32
+ /** The line's index in `order.lineItems`. */
33
+ lineItemId: number;
34
+ quantity: number;
35
+ }
36
+ /** A fulfillment's lifecycle; absent reads as `active`. */
37
+ export type OrderFulfillmentStatus = 'active' | 'cancelled';
38
+ /**
39
+ * Whether a line has to be shipped at all. Digital goods and services are
40
+ * delivered by other means, so they never hold an order in
41
+ * `partially_fulfilled`. A line with no recorded type predates types and is
42
+ * treated as physical, the only reading that cannot close an order early.
43
+ */
44
+ export declare function lineRequiresShipping(line: Pick<OrderLineItem, 'productType'>): boolean;
45
+ /** Whether a fulfillment still counts: a cancelled one ships nothing. */
46
+ export declare function fulfillmentIsActive(fulfillment: Partial<OrderFulfillment> | null | undefined): boolean;
47
+ /**
48
+ * The units one fulfillment covers, per line. A legacy fulfillment (no
49
+ * `lines`) covers every unit of each line it names.
50
+ */
51
+ export declare function fulfillmentLineQuantities(order: Pick<HostOrder, 'lineItems'>, fulfillment: Partial<OrderFulfillment>): OrderFulfillmentLine[];
52
+ /** Units already fulfilled per line index, over every active fulfillment. */
53
+ export declare function fulfilledQuantities(order: Pick<HostOrder, 'lineItems' | 'fulfillments'>): Map<number, number>;
54
+ /** A line as the fulfillment panel and the server both reason about it. */
55
+ export interface OrderLineFulfillmentState {
56
+ lineItemId: number;
57
+ quantity: number;
58
+ fulfilledQuantity: number;
59
+ remainingQuantity: number;
60
+ requiresShipping: boolean;
61
+ }
62
+ /** Every line's fulfilled and remaining units. */
63
+ export declare function orderLineFulfillmentStates(order: Pick<HostOrder, 'lineItems' | 'fulfillments'>): OrderLineFulfillmentState[];
64
+ /**
65
+ * What is left to ship: every shippable line's remaining units. This is what
66
+ * a "fulfill everything" request covers.
67
+ */
68
+ export declare function remainingFulfillmentLines(order: Pick<HostOrder, 'lineItems' | 'fulfillments'>): OrderFulfillmentLine[];
69
+ /** Why a requested set of fulfillment lines was refused. */
70
+ export type FulfillmentLinesProblem = {
71
+ problem: 'empty';
72
+ } | {
73
+ problem: 'unknown_line';
74
+ lineItemId: number;
75
+ } | {
76
+ problem: 'bad_quantity';
77
+ lineItemId: number;
78
+ } | {
79
+ problem: 'over_fulfilled';
80
+ lineItemId: number;
81
+ remaining: number;
82
+ requested: number;
83
+ };
84
+ /**
85
+ * Validates and merges a requested set of lines against what is left.
86
+ *
87
+ * Duplicate entries for one line are summed before the check, so a request
88
+ * cannot slip past the remaining count by naming the line twice. A digital
89
+ * or service line may be fulfilled (a merchant marking a service done), but
90
+ * never beyond its quantity.
91
+ */
92
+ export declare function resolveFulfillmentLines(order: Pick<HostOrder, 'lineItems' | 'fulfillments'>, requested: ReadonlyArray<{
93
+ lineItemId: unknown;
94
+ quantity: unknown;
95
+ }>): {
96
+ lines: OrderFulfillmentLine[];
97
+ } | FulfillmentLinesProblem;
98
+ /** Words for a refused request, for the console and the API. */
99
+ export declare function describeFulfillmentLinesProblem(problem: FulfillmentLinesProblem): string;
100
+ /**
101
+ * The status an order's fulfillments put it in: `fulfilled` once every
102
+ * shippable unit is covered, `partially_fulfilled` while some are, and
103
+ * `paid` when none are. An order with nothing to ship reads as `fulfilled`
104
+ * once anything at all was recorded against it, and as `paid` before.
105
+ */
106
+ export declare function statusFromFulfillments(order: Pick<HostOrder, 'lineItems' | 'fulfillments'>): Extract<OrderStatus, 'paid' | 'partially_fulfilled' | 'fulfilled'>;
107
+ /**
108
+ * Whether a fulfillment on this order may be edited or cancelled. A delivered,
109
+ * refunded or cancelled order is history: its fulfillments are what happened.
110
+ */
111
+ export declare function orderFulfillmentsEditable(order: Pick<HostOrder, 'status'>): boolean;
112
+ /** A short "2× Mug, 1× Shirt" for a fulfillment, for timelines and emails. */
113
+ export declare function describeFulfillmentLines(order: Pick<HostOrder, 'lineItems'>, lines: readonly OrderFulfillmentLine[]): string;
114
+ /** The carriers the console offers by name; anything else is typed under Other. */
115
+ export declare const FULFILLMENT_CARRIER_CHOICES: readonly string[];
116
+ /** The words for a fulfillment's `trackingStatus`, or the status itself. */
117
+ export declare function trackingStatusLabel(status: string | undefined | null): string;
@@ -0,0 +1,217 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ /**
17
+ * Quantity-level fulfillment (AGL-3611).
18
+ *
19
+ * A fulfillment used to name whole lines (`lineItemIds`), so "ship 2 of the 5
20
+ * mugs now, the rest next week" could not be said. A fulfillment now carries
21
+ * `lines: [{ lineItemId, quantity }]`; one written before that reads as every
22
+ * unit of each line it named, which is what it meant when it was written.
23
+ *
24
+ * Every figure here is computed from the order's own fulfillments, so the
25
+ * server's transaction and the console's panel ask the same question of the
26
+ * same record and cannot disagree about what is left to ship.
27
+ */ /**
28
+ * Whether a line has to be shipped at all. Digital goods and services are
29
+ * delivered by other means, so they never hold an order in
30
+ * `partially_fulfilled`. A line with no recorded type predates types and is
31
+ * treated as physical, the only reading that cannot close an order early.
32
+ */ export function lineRequiresShipping(line) {
33
+ return line.productType !== 'digital' && line.productType !== 'service';
34
+ }
35
+ const wholeUnits = (value)=>{
36
+ const units = Math.floor(Number(value != null ? value : 0));
37
+ return Number.isFinite(units) && units > 0 ? units : 0;
38
+ };
39
+ /** Whether a fulfillment still counts: a cancelled one ships nothing. */ export function fulfillmentIsActive(fulfillment) {
40
+ return Boolean(fulfillment) && (fulfillment == null ? void 0 : fulfillment.status) !== 'cancelled';
41
+ }
42
+ /**
43
+ * The units one fulfillment covers, per line. A legacy fulfillment (no
44
+ * `lines`) covers every unit of each line it names.
45
+ */ export function fulfillmentLineQuantities(order, fulfillment) {
46
+ var _order_lineItems, _fulfillment_lineItemIds;
47
+ const lines = (_order_lineItems = order.lineItems) != null ? _order_lineItems : [];
48
+ if (Array.isArray(fulfillment.lines) && fulfillment.lines.length > 0) {
49
+ return fulfillment.lines.map((entry)=>({
50
+ lineItemId: Math.round(Number(entry == null ? void 0 : entry.lineItemId)),
51
+ quantity: wholeUnits(entry == null ? void 0 : entry.quantity)
52
+ })).filter((entry)=>Number.isInteger(entry.lineItemId) && entry.lineItemId >= 0 && entry.lineItemId < lines.length && entry.quantity > 0);
53
+ }
54
+ return ((_fulfillment_lineItemIds = fulfillment.lineItemIds) != null ? _fulfillment_lineItemIds : []).map((index)=>Math.round(Number(index))).filter((index)=>Number.isInteger(index) && index >= 0 && index < lines.length).map((index)=>{
55
+ var _lines_index;
56
+ return {
57
+ lineItemId: index,
58
+ quantity: wholeUnits((_lines_index = lines[index]) == null ? void 0 : _lines_index.quantity)
59
+ };
60
+ }).filter((entry)=>entry.quantity > 0);
61
+ }
62
+ /** Units already fulfilled per line index, over every active fulfillment. */ export function fulfilledQuantities(order) {
63
+ var _order_fulfillments;
64
+ const totals = new Map();
65
+ for (const fulfillment of (_order_fulfillments = order.fulfillments) != null ? _order_fulfillments : []){
66
+ if (!fulfillmentIsActive(fulfillment)) continue;
67
+ for (const entry of fulfillmentLineQuantities(order, fulfillment)){
68
+ var _totals_get;
69
+ totals.set(entry.lineItemId, ((_totals_get = totals.get(entry.lineItemId)) != null ? _totals_get : 0) + entry.quantity);
70
+ }
71
+ }
72
+ return totals;
73
+ }
74
+ /** Every line's fulfilled and remaining units. */ export function orderLineFulfillmentStates(order) {
75
+ var _order_lineItems;
76
+ const fulfilled = fulfilledQuantities(order);
77
+ return ((_order_lineItems = order.lineItems) != null ? _order_lineItems : []).map((line, index)=>{
78
+ var _fulfilled_get;
79
+ const quantity = wholeUnits(line.quantity);
80
+ const done = Math.min(quantity, (_fulfilled_get = fulfilled.get(index)) != null ? _fulfilled_get : 0);
81
+ return {
82
+ lineItemId: index,
83
+ quantity,
84
+ fulfilledQuantity: done,
85
+ remainingQuantity: quantity - done,
86
+ requiresShipping: lineRequiresShipping(line)
87
+ };
88
+ });
89
+ }
90
+ /**
91
+ * What is left to ship: every shippable line's remaining units. This is what
92
+ * a "fulfill everything" request covers.
93
+ */ export function remainingFulfillmentLines(order) {
94
+ return orderLineFulfillmentStates(order).filter((state)=>state.requiresShipping && state.remainingQuantity > 0).map((state)=>({
95
+ lineItemId: state.lineItemId,
96
+ quantity: state.remainingQuantity
97
+ }));
98
+ }
99
+ /**
100
+ * Validates and merges a requested set of lines against what is left.
101
+ *
102
+ * Duplicate entries for one line are summed before the check, so a request
103
+ * cannot slip past the remaining count by naming the line twice. A digital
104
+ * or service line may be fulfilled (a merchant marking a service done), but
105
+ * never beyond its quantity.
106
+ */ export function resolveFulfillmentLines(order, requested) {
107
+ const states = orderLineFulfillmentStates(order);
108
+ const merged = new Map();
109
+ for (const entry of requested){
110
+ var _merged_get;
111
+ const lineItemId = Number(entry == null ? void 0 : entry.lineItemId);
112
+ if (!Number.isInteger(lineItemId) || lineItemId < 0 || lineItemId >= states.length) {
113
+ return {
114
+ problem: 'unknown_line',
115
+ lineItemId: Number.isFinite(lineItemId) ? lineItemId : -1
116
+ };
117
+ }
118
+ const quantity = Number(entry == null ? void 0 : entry.quantity);
119
+ if (!Number.isInteger(quantity) || quantity <= 0) {
120
+ return {
121
+ problem: 'bad_quantity',
122
+ lineItemId
123
+ };
124
+ }
125
+ merged.set(lineItemId, ((_merged_get = merged.get(lineItemId)) != null ? _merged_get : 0) + quantity);
126
+ }
127
+ if (merged.size === 0) return {
128
+ problem: 'empty'
129
+ };
130
+ const lines = [];
131
+ for (const [lineItemId, quantity] of [
132
+ ...merged.entries()
133
+ ].sort((a, b)=>a[0] - b[0])){
134
+ const remaining = states[lineItemId].remainingQuantity;
135
+ if (quantity > remaining) {
136
+ return {
137
+ problem: 'over_fulfilled',
138
+ lineItemId,
139
+ remaining,
140
+ requested: quantity
141
+ };
142
+ }
143
+ lines.push({
144
+ lineItemId,
145
+ quantity
146
+ });
147
+ }
148
+ return {
149
+ lines
150
+ };
151
+ }
152
+ /** Words for a refused request, for the console and the API. */ export function describeFulfillmentLinesProblem(problem) {
153
+ switch(problem.problem){
154
+ case 'empty':
155
+ return 'Choose at least one item to fulfill';
156
+ case 'unknown_line':
157
+ return `Line ${problem.lineItemId} is not on this order`;
158
+ case 'bad_quantity':
159
+ return `The quantity for line ${problem.lineItemId} must be a whole number above zero`;
160
+ case 'over_fulfilled':
161
+ return problem.remaining === 0 ? `Line ${problem.lineItemId} is already fully fulfilled` : `Line ${problem.lineItemId} has only ${problem.remaining} left to fulfill, not ${problem.requested}`;
162
+ }
163
+ }
164
+ /**
165
+ * The status an order's fulfillments put it in: `fulfilled` once every
166
+ * shippable unit is covered, `partially_fulfilled` while some are, and
167
+ * `paid` when none are. An order with nothing to ship reads as `fulfilled`
168
+ * once anything at all was recorded against it, and as `paid` before.
169
+ */ export function statusFromFulfillments(order) {
170
+ const states = orderLineFulfillmentStates(order);
171
+ const shippable = states.filter((state)=>state.requiresShipping);
172
+ const anything = states.some((state)=>state.fulfilledQuantity > 0);
173
+ if (shippable.length === 0) return anything ? 'fulfilled' : 'paid';
174
+ if (shippable.every((state)=>state.remainingQuantity === 0)) return 'fulfilled';
175
+ return shippable.some((state)=>state.fulfilledQuantity > 0) || anything ? 'partially_fulfilled' : 'paid';
176
+ }
177
+ /** Statuses whose fulfillments may still be added to, edited or cancelled. */ const FULFILLMENT_OPEN_STATUSES = [
178
+ 'paid',
179
+ 'partially_fulfilled',
180
+ 'fulfilled'
181
+ ];
182
+ /**
183
+ * Whether a fulfillment on this order may be edited or cancelled. A delivered,
184
+ * refunded or cancelled order is history: its fulfillments are what happened.
185
+ */ export function orderFulfillmentsEditable(order) {
186
+ return FULFILLMENT_OPEN_STATUSES.includes(order.status);
187
+ }
188
+ /** A short "2× Mug, 1× Shirt" for a fulfillment, for timelines and emails. */ export function describeFulfillmentLines(order, lines) {
189
+ return lines.map((entry)=>{
190
+ var _ref;
191
+ var _order_lineItems_entry_lineItemId, _order_lineItems;
192
+ return `${entry.quantity}× ${(_ref = (_order_lineItems = order.lineItems) == null ? void 0 : (_order_lineItems_entry_lineItemId = _order_lineItems[entry.lineItemId]) == null ? void 0 : _order_lineItems_entry_lineItemId.name) != null ? _ref : `line ${entry.lineItemId}`}`;
193
+ }).join(', ');
194
+ }
195
+ /** The carriers the console offers by name; anything else is typed under Other. */ export const FULFILLMENT_CARRIER_CHOICES = [
196
+ 'USPS',
197
+ 'UPS',
198
+ 'FedEx',
199
+ 'DHL',
200
+ 'Canada Post',
201
+ 'Royal Mail',
202
+ 'Australia Post'
203
+ ];
204
+ /** What a merchant reads for a carrier's tracking status (AGL-3612). */ const TRACKING_STATUS_LABELS = {
205
+ pre_transit: 'Label created',
206
+ in_transit: 'In transit',
207
+ out_for_delivery: 'Out for delivery',
208
+ delivered: 'Delivered',
209
+ exception: 'Delivery problem',
210
+ returned: 'Returned to sender'
211
+ };
212
+ /** The words for a fulfillment's `trackingStatus`, or the status itself. */ export function trackingStatusLabel(status) {
213
+ var _TRACKING_STATUS_LABELS_status;
214
+ return status ? (_TRACKING_STATUS_LABELS_status = TRACKING_STATUS_LABELS[status]) != null ? _TRACKING_STATUS_LABELS_status : status : '';
215
+ }
216
+
217
+ //# sourceMappingURL=order-fulfillment.js.map