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

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 (581) 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/customer-notifications-card.component.d.ts +19 -0
  39. package/src/lib/components/console/customer-notifications-card.component.js +149 -0
  40. package/src/lib/components/console/customer-notifications-card.component.js.map +1 -0
  41. package/src/lib/components/console/host-orders-card.component.js +84 -5
  42. package/src/lib/components/console/host-orders-card.component.js.map +1 -1
  43. package/src/lib/components/console/locations-card.component.js +164 -57
  44. package/src/lib/components/console/locations-card.component.js.map +1 -1
  45. package/src/lib/components/console/order-detail-dialog.component.js +209 -61
  46. package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
  47. package/src/lib/components/console/order-fulfillment-panel.component.d.ts +48 -0
  48. package/src/lib/components/console/order-fulfillment-panel.component.js +542 -0
  49. package/src/lib/components/console/order-fulfillment-panel.component.js.map +1 -0
  50. package/src/lib/components/console/order-invoice.component.d.ts +33 -0
  51. package/src/lib/components/console/order-invoice.component.js +81 -0
  52. package/src/lib/components/console/order-invoice.component.js.map +1 -0
  53. package/src/lib/components/console/order-receipt-resend.component.d.ts +21 -0
  54. package/src/lib/components/console/order-receipt-resend.component.js +203 -0
  55. package/src/lib/components/console/order-receipt-resend.component.js.map +1 -0
  56. package/src/lib/components/console/order-returns.component.d.ts +36 -0
  57. package/src/lib/components/console/order-returns.component.js +142 -0
  58. package/src/lib/components/console/order-returns.component.js.map +1 -0
  59. package/src/lib/components/console/order-shipping-actions.component.d.ts +54 -0
  60. package/src/lib/components/console/order-shipping-actions.component.js +149 -0
  61. package/src/lib/components/console/order-shipping-actions.component.js.map +1 -0
  62. package/src/lib/components/console/order-webhooks-card.component.d.ts +50 -0
  63. package/src/lib/components/console/order-webhooks-card.component.js +623 -0
  64. package/src/lib/components/console/order-webhooks-card.component.js.map +1 -0
  65. package/src/lib/components/console/order-zones.d.ts +155 -0
  66. package/src/lib/components/console/order-zones.js +40 -0
  67. package/src/lib/components/console/order-zones.js.map +1 -0
  68. package/src/lib/components/console/payment-methods-card.component.d.ts +67 -0
  69. package/src/lib/components/console/payment-methods-card.component.js +395 -0
  70. package/src/lib/components/console/payment-methods-card.component.js.map +1 -0
  71. package/src/lib/components/console/pos/pos-api.d.ts +124 -0
  72. package/src/lib/components/console/pos/pos-api.js +101 -0
  73. package/src/lib/components/console/pos/pos-api.js.map +1 -0
  74. package/src/lib/components/console/pos/pos-cart-panel.component.d.ts +36 -0
  75. package/src/lib/components/console/pos/pos-cart-panel.component.js +160 -0
  76. package/src/lib/components/console/pos/pos-cart-panel.component.js.map +1 -0
  77. package/src/lib/components/console/pos/pos-item-dialog.component.d.ts +39 -0
  78. package/src/lib/components/console/pos/pos-item-dialog.component.js +352 -0
  79. package/src/lib/components/console/pos/pos-item-dialog.component.js.map +1 -0
  80. package/src/lib/components/console/pos/pos-product-grid.component.d.ts +47 -0
  81. package/src/lib/components/console/pos/pos-product-grid.component.js +272 -0
  82. package/src/lib/components/console/pos/pos-product-grid.component.js.map +1 -0
  83. package/src/lib/components/console/pos/pos-receipt-panel.component.d.ts +27 -0
  84. package/src/lib/components/console/pos/pos-receipt-panel.component.js +282 -0
  85. package/src/lib/components/console/pos/pos-receipt-panel.component.js.map +1 -0
  86. package/src/lib/components/console/pos/pos-tender-dialogs.component.d.ts +53 -0
  87. package/src/lib/components/console/pos/pos-tender-dialogs.component.js +445 -0
  88. package/src/lib/components/console/pos/pos-tender-dialogs.component.js.map +1 -0
  89. package/src/lib/components/console/pos/pos-tender-panel.component.d.ts +31 -0
  90. package/src/lib/components/console/pos/pos-tender-panel.component.js +640 -0
  91. package/src/lib/components/console/pos/pos-tender-panel.component.js.map +1 -0
  92. package/src/lib/components/console/pos/use-pos-display.d.ts +43 -0
  93. package/src/lib/components/console/pos/use-pos-display.js +161 -0
  94. package/src/lib/components/console/pos/use-pos-display.js.map +1 -0
  95. package/src/lib/components/console/pos-devices-card.component.d.ts +14 -0
  96. package/src/lib/components/console/pos-devices-card.component.js +546 -0
  97. package/src/lib/components/console/pos-devices-card.component.js.map +1 -0
  98. package/src/lib/components/console/pos-display/brand-screen.d.ts +33 -0
  99. package/src/lib/components/console/pos-display/brand-screen.js +85 -0
  100. package/src/lib/components/console/pos-display/brand-screen.js.map +1 -0
  101. package/src/lib/components/console/pos-display/cart-screen.d.ts +29 -0
  102. package/src/lib/components/console/pos-display/cart-screen.js +166 -0
  103. package/src/lib/components/console/pos-display/cart-screen.js.map +1 -0
  104. package/src/lib/components/console/pos-display/pairing-screen.d.ts +24 -0
  105. package/src/lib/components/console/pos-display/pairing-screen.js +127 -0
  106. package/src/lib/components/console/pos-display/pairing-screen.js.map +1 -0
  107. package/src/lib/components/console/pos-display/pos-display-api.d.ts +90 -0
  108. package/src/lib/components/console/pos-display/pos-display-api.js +140 -0
  109. package/src/lib/components/console/pos-display/pos-display-api.js.map +1 -0
  110. package/src/lib/components/console/pos-display/receipt-screen.d.ts +35 -0
  111. package/src/lib/components/console/pos-display/receipt-screen.js +200 -0
  112. package/src/lib/components/console/pos-display/receipt-screen.js.map +1 -0
  113. package/src/lib/components/console/pos-display/tip-screen.d.ts +36 -0
  114. package/src/lib/components/console/pos-display/tip-screen.js +211 -0
  115. package/src/lib/components/console/pos-display/tip-screen.js.map +1 -0
  116. package/src/lib/components/console/pos-display-page.component.d.ts +16 -0
  117. package/src/lib/components/console/pos-display-page.component.js +407 -0
  118. package/src/lib/components/console/pos-display-page.component.js.map +1 -0
  119. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.d.ts +40 -0
  120. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js +289 -0
  121. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js.map +1 -0
  122. package/src/lib/components/console/pos-ops/pos-last-receipt.component.d.ts +34 -0
  123. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js +61 -0
  124. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js.map +1 -0
  125. package/src/lib/components/console/pos-ops/pos-operations-bar.component.d.ts +38 -0
  126. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js +129 -0
  127. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js.map +1 -0
  128. package/src/lib/components/console/pos-ops/pos-ops-api.d.ts +37 -0
  129. package/src/lib/components/console/pos-ops/pos-ops-api.js +60 -0
  130. package/src/lib/components/console/pos-ops/pos-ops-api.js.map +1 -0
  131. package/src/lib/components/console/pos-ops/pos-pin-pad.component.d.ts +48 -0
  132. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js +220 -0
  133. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js.map +1 -0
  134. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.d.ts +63 -0
  135. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js +186 -0
  136. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js.map +1 -0
  137. package/src/lib/components/console/pos-ops/pos-receipt.d.ts +39 -0
  138. package/src/lib/components/console/pos-ops/pos-receipt.js +182 -0
  139. package/src/lib/components/console/pos-ops/pos-receipt.js.map +1 -0
  140. package/src/lib/components/console/pos-ops/pos-return-dialog.component.d.ts +40 -0
  141. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js +465 -0
  142. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js.map +1 -0
  143. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.d.ts +29 -0
  144. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js +253 -0
  145. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js.map +1 -0
  146. package/src/lib/components/console/pos-ops/pos-shift-panel.component.d.ts +34 -0
  147. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js +494 -0
  148. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js.map +1 -0
  149. package/src/lib/components/console/pos-ops/pos-shift-report.component.d.ts +37 -0
  150. package/src/lib/components/console/pos-ops/pos-shift-report.component.js +102 -0
  151. package/src/lib/components/console/pos-ops/pos-shift-report.component.js.map +1 -0
  152. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.d.ts +30 -0
  153. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js +277 -0
  154. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js.map +1 -0
  155. package/src/lib/components/console/pos-ops/register-ops.d.ts +28 -0
  156. package/src/lib/components/console/pos-ops/register-ops.js +28 -0
  157. package/src/lib/components/console/pos-ops/register-ops.js.map +1 -0
  158. package/src/lib/components/console/pos-ops/use-pos-cashier.d.ts +46 -0
  159. package/src/lib/components/console/pos-ops/use-pos-cashier.js +128 -0
  160. package/src/lib/components/console/pos-ops/use-pos-cashier.js.map +1 -0
  161. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.d.ts +36 -0
  162. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js +64 -0
  163. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js.map +1 -0
  164. package/src/lib/components/console/pos-page.component.d.ts +13 -5
  165. package/src/lib/components/console/pos-page.component.js +729 -657
  166. package/src/lib/components/console/pos-page.component.js.map +1 -1
  167. package/src/lib/components/console/product-editor-dialog.component.js +51 -7
  168. package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
  169. package/src/lib/components/console/product-labels-dialog.component.d.ts +13 -0
  170. package/src/lib/components/console/product-labels-dialog.component.js +197 -0
  171. package/src/lib/components/console/product-labels-dialog.component.js.map +1 -0
  172. package/src/lib/components/console/product-register-fields.component.d.ts +19 -0
  173. package/src/lib/components/console/product-register-fields.component.js +241 -0
  174. package/src/lib/components/console/product-register-fields.component.js.map +1 -0
  175. package/src/lib/components/console/product-zones.d.ts +44 -0
  176. package/src/lib/components/console/product-zones.js.map +1 -1
  177. package/src/lib/components/console/products-hub-card.component.js +12 -0
  178. package/src/lib/components/console/products-hub-card.component.js.map +1 -1
  179. package/src/lib/components/console/register-hardware-card.component.d.ts +33 -0
  180. package/src/lib/components/console/register-hardware-card.component.js +826 -0
  181. package/src/lib/components/console/register-hardware-card.component.js.map +1 -0
  182. package/src/lib/components/console/registers-card.component.js +24 -5
  183. package/src/lib/components/console/registers-card.component.js.map +1 -1
  184. package/src/lib/components/console/return-actions.d.ts +38 -0
  185. package/src/lib/components/console/return-actions.js +76 -0
  186. package/src/lib/components/console/return-actions.js.map +1 -0
  187. package/src/lib/components/console/return-detail-dialog.component.d.ts +34 -0
  188. package/src/lib/components/console/return-detail-dialog.component.js +718 -0
  189. package/src/lib/components/console/return-detail-dialog.component.js.map +1 -0
  190. package/src/lib/components/console/return-settings-card.component.d.ts +34 -0
  191. package/src/lib/components/console/return-settings-card.component.js +195 -0
  192. package/src/lib/components/console/return-settings-card.component.js.map +1 -0
  193. package/src/lib/components/console/return-zones.d.ts +87 -0
  194. package/src/lib/components/console/return-zones.js +31 -0
  195. package/src/lib/components/console/return-zones.js.map +1 -0
  196. package/src/lib/components/console/returns-card.component.d.ts +45 -0
  197. package/src/lib/components/console/returns-card.component.js +159 -0
  198. package/src/lib/components/console/returns-card.component.js.map +1 -0
  199. package/src/lib/components/console/shipping-settings-card.component.js +161 -5
  200. package/src/lib/components/console/shipping-settings-card.component.js.map +1 -1
  201. package/src/lib/components/console/shippingeasy-card.component.d.ts +59 -0
  202. package/src/lib/components/console/shippingeasy-card.component.js +378 -0
  203. package/src/lib/components/console/shippingeasy-card.component.js.map +1 -0
  204. package/src/lib/components/console/shipstation-card.component.d.ts +35 -0
  205. package/src/lib/components/console/shipstation-card.component.js +345 -0
  206. package/src/lib/components/console/shipstation-card.component.js.map +1 -0
  207. package/src/lib/components/console/start-return-dialog.component.d.ts +40 -0
  208. package/src/lib/components/console/start-return-dialog.component.js +243 -0
  209. package/src/lib/components/console/start-return-dialog.component.js.map +1 -0
  210. package/src/lib/components/console/stock-movements-card.component.js +2 -1
  211. package/src/lib/components/console/stock-movements-card.component.js.map +1 -1
  212. package/src/lib/components/console/store-settings-card.component.js +2 -66
  213. package/src/lib/components/console/store-settings-card.component.js.map +1 -1
  214. package/src/lib/components/console/store-zones.d.ts +42 -0
  215. package/src/lib/components/console/store-zones.js +39 -0
  216. package/src/lib/components/console/store-zones.js.map +1 -0
  217. package/src/lib/components/order-status.d.ts +36 -0
  218. package/src/lib/components/order-status.js +502 -0
  219. package/src/lib/components/order-status.js.map +1 -0
  220. package/src/lib/components/product-detail.js +41 -2
  221. package/src/lib/components/product-detail.js.map +1 -1
  222. package/src/lib/components/return-request.d.ts +32 -0
  223. package/src/lib/components/return-request.js +576 -0
  224. package/src/lib/components/return-request.js.map +1 -0
  225. package/src/lib/components/storefront-payment-appearance.d.ts +32 -0
  226. package/src/lib/components/storefront-payment-appearance.js +114 -0
  227. package/src/lib/components/storefront-payment-appearance.js.map +1 -0
  228. package/src/lib/components/storefront-payment-element.d.ts +57 -1
  229. package/src/lib/components/storefront-payment-element.js +332 -33
  230. package/src/lib/components/storefront-payment-element.js.map +1 -1
  231. package/src/lib/constants/order-status.d.ts +22 -0
  232. package/src/lib/constants/order-status.js +22 -0
  233. package/src/lib/constants/order-status.js.map +1 -0
  234. package/src/lib/constants/return-request.d.ts +27 -0
  235. package/src/lib/constants/return-request.js +32 -0
  236. package/src/lib/constants/return-request.js.map +1 -0
  237. package/src/lib/constants/stock-movement-query.js +2 -1
  238. package/src/lib/constants/stock-movement-query.js.map +1 -1
  239. package/src/lib/declarations.console-server.js +9 -0
  240. package/src/lib/declarations.console-server.js.map +1 -1
  241. package/src/lib/declarations.server.d.ts +2 -1
  242. package/src/lib/declarations.server.js +47 -1
  243. package/src/lib/declarations.server.js.map +1 -1
  244. package/src/lib/model/buyer-notifications.d.ts +59 -0
  245. package/src/lib/model/buyer-notifications.js +97 -0
  246. package/src/lib/model/buyer-notifications.js.map +1 -0
  247. package/src/lib/model/commerce-orders.d.ts +127 -1
  248. package/src/lib/model/commerce-orders.js +24 -15
  249. package/src/lib/model/commerce-orders.js.map +1 -1
  250. package/src/lib/model/commerce-payment-methods.d.ts +146 -0
  251. package/src/lib/model/commerce-payment-methods.js +247 -0
  252. package/src/lib/model/commerce-payment-methods.js.map +1 -0
  253. package/src/lib/model/commerce-pos-ops.d.ts +437 -0
  254. package/src/lib/model/commerce-pos-ops.js +721 -0
  255. package/src/lib/model/commerce-pos-ops.js.map +1 -0
  256. package/src/lib/model/commerce-pos.d.ts +263 -0
  257. package/src/lib/model/commerce-pos.js +375 -0
  258. package/src/lib/model/commerce-pos.js.map +1 -0
  259. package/src/lib/model/commerce-printers.d.ts +211 -0
  260. package/src/lib/model/commerce-printers.js +181 -0
  261. package/src/lib/model/commerce-printers.js.map +1 -0
  262. package/src/lib/model/commerce-receipt.d.ts +97 -0
  263. package/src/lib/model/commerce-receipt.js +180 -0
  264. package/src/lib/model/commerce-receipt.js.map +1 -0
  265. package/src/lib/model/commerce-returns.d.ts +207 -0
  266. package/src/lib/model/commerce-returns.js +300 -0
  267. package/src/lib/model/commerce-returns.js.map +1 -0
  268. package/src/lib/model/commerce-shipping.d.ts +44 -1
  269. package/src/lib/model/commerce-shipping.js +53 -9
  270. package/src/lib/model/commerce-shipping.js.map +1 -1
  271. package/src/lib/model/commerce-tax-engine.d.ts +90 -0
  272. package/src/lib/model/commerce-tax-engine.js +129 -0
  273. package/src/lib/model/commerce-tax-engine.js.map +1 -0
  274. package/src/lib/model/commerce.d.ts +88 -2
  275. package/src/lib/model/commerce.js +89 -1
  276. package/src/lib/model/commerce.js.map +1 -1
  277. package/src/lib/model/index.d.ts +15 -0
  278. package/src/lib/model/index.js +15 -0
  279. package/src/lib/model/index.js.map +1 -1
  280. package/src/lib/model/order-events.d.ts +154 -0
  281. package/src/lib/model/order-events.js +153 -0
  282. package/src/lib/model/order-events.js.map +1 -0
  283. package/src/lib/model/order-fulfillment.d.ts +117 -0
  284. package/src/lib/model/order-fulfillment.js +217 -0
  285. package/src/lib/model/order-fulfillment.js.map +1 -0
  286. package/src/lib/model/order-history.d.ts +58 -0
  287. package/src/lib/model/order-history.js +22 -0
  288. package/src/lib/model/order-history.js.map +1 -0
  289. package/src/lib/model/order-list-fields.d.ts +9 -1
  290. package/src/lib/model/order-list-fields.js +7 -1
  291. package/src/lib/model/order-list-fields.js.map +1 -1
  292. package/src/lib/model/order-shipping-export.d.ts +91 -0
  293. package/src/lib/model/order-shipping-export.js +192 -0
  294. package/src/lib/model/order-shipping-export.js.map +1 -0
  295. package/src/lib/model/order-status-view.d.ts +103 -0
  296. package/src/lib/model/order-status-view.js +156 -0
  297. package/src/lib/model/order-status-view.js.map +1 -0
  298. package/src/lib/model/order-webhooks.d.ts +142 -0
  299. package/src/lib/model/order-webhooks.js +91 -0
  300. package/src/lib/model/order-webhooks.js.map +1 -0
  301. package/src/lib/model/product-channel.d.ts +56 -0
  302. package/src/lib/model/product-channel.js +86 -0
  303. package/src/lib/model/product-channel.js.map +1 -0
  304. package/src/lib/model/product-modifiers.d.ts +80 -0
  305. package/src/lib/model/product-modifiers.js +140 -0
  306. package/src/lib/model/product-modifiers.js.map +1 -0
  307. package/src/lib/model/shippingeasy.d.ts +94 -0
  308. package/src/lib/model/shippingeasy.js +267 -0
  309. package/src/lib/model/shippingeasy.js.map +1 -0
  310. package/src/lib/model/shipstation.d.ts +125 -0
  311. package/src/lib/model/shipstation.js +399 -0
  312. package/src/lib/model/shipstation.js.map +1 -0
  313. package/src/lib/model/smart-collection-reads.d.ts +32 -0
  314. package/src/lib/model/smart-collection-reads.js +63 -0
  315. package/src/lib/model/smart-collection-reads.js.map +1 -0
  316. package/src/lib/model/tracking-url.d.ts +74 -0
  317. package/src/lib/model/tracking-url.js +159 -0
  318. package/src/lib/model/tracking-url.js.map +1 -0
  319. package/src/lib/plugin-config.d.ts +13 -0
  320. package/src/lib/plugin-config.js +77 -5
  321. package/src/lib/plugin-config.js.map +1 -1
  322. package/src/lib/plugin.js +23 -0
  323. package/src/lib/plugin.js.map +1 -1
  324. package/src/lib/pos-ops-config.d.ts +39 -0
  325. package/src/lib/pos-ops-config.js +88 -0
  326. package/src/lib/pos-ops-config.js.map +1 -0
  327. package/src/lib/printing/print-document.d.ts +106 -0
  328. package/src/lib/printing/print-document.js +464 -0
  329. package/src/lib/printing/print-document.js.map +1 -0
  330. package/src/lib/printing/product-labels.d.ts +58 -0
  331. package/src/lib/printing/product-labels.js +116 -0
  332. package/src/lib/printing/product-labels.js.map +1 -0
  333. package/src/lib/printing/render-epson.d.ts +57 -0
  334. package/src/lib/printing/render-epson.js +135 -0
  335. package/src/lib/printing/render-epson.js.map +1 -0
  336. package/src/lib/printing/render-star.d.ts +45 -0
  337. package/src/lib/printing/render-star.js +100 -0
  338. package/src/lib/printing/render-star.js.map +1 -0
  339. package/src/lib/printing/render-text.d.ts +25 -0
  340. package/src/lib/printing/render-text.js +53 -0
  341. package/src/lib/printing/render-text.js.map +1 -0
  342. package/src/lib/server/api-v1/openapi.js +27 -4
  343. package/src/lib/server/api-v1/openapi.js.map +1 -1
  344. package/src/lib/server/api-v1/order-view.d.ts +67 -0
  345. package/src/lib/server/api-v1/order-view.js +120 -0
  346. package/src/lib/server/api-v1/order-view.js.map +1 -0
  347. package/src/lib/server/api-v1/orders-and-products.js +58 -65
  348. package/src/lib/server/api-v1/orders-and-products.js.map +1 -1
  349. package/src/lib/server/billing-webhook.js +135 -28
  350. package/src/lib/server/billing-webhook.js.map +1 -1
  351. package/src/lib/server/cancel-order.js +29 -0
  352. package/src/lib/server/cancel-order.js.map +1 -1
  353. package/src/lib/server/carrier-rates-availability.d.ts +26 -0
  354. package/src/lib/server/carrier-rates-availability.js +76 -0
  355. package/src/lib/server/carrier-rates-availability.js.map +1 -0
  356. package/src/lib/server/carrier-shipping.d.ts +84 -0
  357. package/src/lib/server/carrier-shipping.js +135 -0
  358. package/src/lib/server/carrier-shipping.js.map +1 -0
  359. package/src/lib/server/cart-checkout.d.ts +2 -0
  360. package/src/lib/server/cart-checkout.js +226 -22
  361. package/src/lib/server/cart-checkout.js.map +1 -1
  362. package/src/lib/server/checkout-extras.d.ts +64 -0
  363. package/src/lib/server/checkout-extras.js +157 -0
  364. package/src/lib/server/checkout-extras.js.map +1 -0
  365. package/src/lib/server/{feed.d.ts → checkout-status.d.ts} +2 -7
  366. package/src/lib/server/checkout-status.js +111 -0
  367. package/src/lib/server/checkout-status.js.map +1 -0
  368. package/src/lib/server/checkout.js +86 -9
  369. package/src/lib/server/checkout.js.map +1 -1
  370. package/src/lib/server/draft-order.js +34 -5
  371. package/src/lib/server/draft-order.js.map +1 -1
  372. package/src/lib/server/fulfill-order.d.ts +127 -10
  373. package/src/lib/server/fulfill-order.js +451 -49
  374. package/src/lib/server/fulfill-order.js.map +1 -1
  375. package/src/lib/server/legacy-feed.d.ts +28 -0
  376. package/src/lib/server/legacy-feed.js +52 -0
  377. package/src/lib/server/legacy-feed.js.map +1 -0
  378. package/src/lib/server/native-checkout.d.ts +34 -15
  379. package/src/lib/server/native-checkout.js +32 -17
  380. package/src/lib/server/native-checkout.js.map +1 -1
  381. package/src/lib/server/order-event-host-emit.d.ts +23 -0
  382. package/src/lib/server/order-event-host-emit.js +30 -0
  383. package/src/lib/server/order-event-host-emit.js.map +1 -0
  384. package/src/lib/server/order-event-triggers.d.ts +37 -0
  385. package/src/lib/server/order-event-triggers.js +119 -0
  386. package/src/lib/server/order-event-triggers.js.map +1 -0
  387. package/src/lib/server/order-events.d.ts +62 -0
  388. package/src/lib/server/order-events.js +109 -0
  389. package/src/lib/server/order-events.js.map +1 -0
  390. package/src/lib/server/order-history.d.ts +23 -0
  391. package/src/lib/server/order-history.js +65 -0
  392. package/src/lib/server/order-history.js.map +1 -0
  393. package/src/lib/server/order-notifications.d.ts +185 -0
  394. package/src/lib/server/order-notifications.js +567 -0
  395. package/src/lib/server/order-notifications.js.map +1 -0
  396. package/src/lib/server/order-receipt-send.d.ts +39 -0
  397. package/src/lib/server/order-receipt-send.js +151 -0
  398. package/src/lib/server/order-receipt-send.js.map +1 -0
  399. package/src/lib/server/order-status-token.d.ts +31 -0
  400. package/src/lib/server/order-status-token.js +75 -0
  401. package/src/lib/server/order-status-token.js.map +1 -0
  402. package/src/lib/server/order-status.d.ts +58 -0
  403. package/src/lib/server/order-status.js +141 -0
  404. package/src/lib/server/order-status.js.map +1 -0
  405. package/src/lib/server/order-webhooks.d.ts +108 -0
  406. package/src/lib/server/order-webhooks.js +622 -0
  407. package/src/lib/server/order-webhooks.js.map +1 -0
  408. package/src/lib/server/orders-shipping-prepare.d.ts +26 -0
  409. package/src/lib/server/orders-shipping-prepare.js +121 -0
  410. package/src/lib/server/orders-shipping-prepare.js.map +1 -0
  411. package/src/lib/server/payment-method-domains.d.ts +209 -0
  412. package/src/lib/server/payment-method-domains.js +444 -0
  413. package/src/lib/server/payment-method-domains.js.map +1 -0
  414. package/src/lib/server/payment-methods.d.ts +77 -0
  415. package/src/lib/server/payment-methods.js +284 -0
  416. package/src/lib/server/payment-methods.js.map +1 -0
  417. package/src/lib/server/pos-auth.d.ts +50 -0
  418. package/src/lib/server/pos-auth.js +121 -0
  419. package/src/lib/server/pos-auth.js.map +1 -0
  420. package/src/lib/server/pos-customer.d.ts +49 -0
  421. package/src/lib/server/pos-customer.js +257 -0
  422. package/src/lib/server/pos-customer.js.map +1 -0
  423. package/src/lib/server/pos-display.d.ts +57 -0
  424. package/src/lib/server/pos-display.js +419 -0
  425. package/src/lib/server/pos-display.js.map +1 -0
  426. package/src/lib/server/pos-fee-month.d.ts +34 -0
  427. package/src/lib/server/pos-fee-month.js +36 -0
  428. package/src/lib/server/pos-fee-month.js.map +1 -0
  429. package/src/lib/server/pos-ops-gate.d.ts +161 -0
  430. package/src/lib/server/pos-ops-gate.js +295 -0
  431. package/src/lib/server/pos-ops-gate.js.map +1 -0
  432. package/src/lib/server/pos-ops-routes.d.ts +22 -0
  433. package/src/lib/server/pos-ops-routes.js +36 -0
  434. package/src/lib/server/pos-ops-routes.js.map +1 -0
  435. package/src/lib/server/pos-order.d.ts +1 -18
  436. package/src/lib/server/pos-order.js +222 -42
  437. package/src/lib/server/pos-order.js.map +1 -1
  438. package/src/lib/server/pos-payment.d.ts +39 -0
  439. package/src/lib/server/pos-payment.js +922 -0
  440. package/src/lib/server/pos-payment.js.map +1 -0
  441. package/src/lib/server/pos-print.d.ts +82 -0
  442. package/src/lib/server/pos-print.js +193 -0
  443. package/src/lib/server/pos-print.js.map +1 -0
  444. package/src/lib/server/pos-readers.d.ts +27 -0
  445. package/src/lib/server/pos-readers.js +276 -0
  446. package/src/lib/server/pos-readers.js.map +1 -0
  447. package/src/lib/server/pos-refund-authority.d.ts +60 -0
  448. package/src/lib/server/pos-refund-authority.js +72 -0
  449. package/src/lib/server/pos-refund-authority.js.map +1 -0
  450. package/src/lib/server/pos-return.d.ts +58 -0
  451. package/src/lib/server/pos-return.js +891 -0
  452. package/src/lib/server/pos-return.js.map +1 -0
  453. package/src/lib/server/pos-sale-stamp.d.ts +66 -0
  454. package/src/lib/server/pos-sale-stamp.js +84 -0
  455. package/src/lib/server/pos-sale-stamp.js.map +1 -0
  456. package/src/lib/server/pos-sale.d.ts +170 -0
  457. package/src/lib/server/pos-sale.js +461 -0
  458. package/src/lib/server/pos-sale.js.map +1 -0
  459. package/src/lib/server/pos-shift.d.ts +45 -0
  460. package/src/lib/server/pos-shift.js +484 -0
  461. package/src/lib/server/pos-shift.js.map +1 -0
  462. package/src/lib/server/pos-staff-pin.d.ts +26 -0
  463. package/src/lib/server/pos-staff-pin.js +339 -0
  464. package/src/lib/server/pos-staff-pin.js.map +1 -0
  465. package/src/lib/server/pos-stripe.d.ts +91 -0
  466. package/src/lib/server/pos-stripe.js +129 -0
  467. package/src/lib/server/pos-stripe.js.map +1 -0
  468. package/src/lib/server/pos-terminal-connection-token.d.ts +48 -0
  469. package/src/lib/server/pos-terminal-connection-token.js +166 -0
  470. package/src/lib/server/pos-terminal-connection-token.js.map +1 -0
  471. package/src/lib/server/pos-terminal.d.ts +218 -0
  472. package/src/lib/server/pos-terminal.js +1014 -0
  473. package/src/lib/server/pos-terminal.js.map +1 -0
  474. package/src/lib/server/print-queue.d.ts +124 -0
  475. package/src/lib/server/print-queue.js +301 -0
  476. package/src/lib/server/print-queue.js.map +1 -0
  477. package/src/lib/server/printer-poll.d.ts +75 -0
  478. package/src/lib/server/printer-poll.js +325 -0
  479. package/src/lib/server/printer-poll.js.map +1 -0
  480. package/src/lib/server/printer-secret.d.ts +39 -0
  481. package/src/lib/server/printer-secret.js +56 -0
  482. package/src/lib/server/printer-secret.js.map +1 -0
  483. package/src/lib/server/printers.d.ts +114 -0
  484. package/src/lib/server/printers.js +546 -0
  485. package/src/lib/server/printers.js.map +1 -0
  486. package/src/lib/server/product-catalog.d.ts +42 -0
  487. package/src/lib/server/product-catalog.js +305 -0
  488. package/src/lib/server/product-catalog.js.map +1 -0
  489. package/src/lib/server/refund.js +110 -45
  490. package/src/lib/server/refund.js.map +1 -1
  491. package/src/lib/server/reserve.js +2 -0
  492. package/src/lib/server/reserve.js.map +1 -1
  493. package/src/lib/server/return-status-action.d.ts +37 -0
  494. package/src/lib/server/return-status-action.js +57 -0
  495. package/src/lib/server/return-status-action.js.map +1 -0
  496. package/src/lib/server/returns.d.ts +119 -0
  497. package/src/lib/server/returns.js +938 -0
  498. package/src/lib/server/returns.js.map +1 -0
  499. package/src/lib/server/shipment-records.d.ts +36 -0
  500. package/src/lib/server/shipment-records.js +289 -0
  501. package/src/lib/server/shipment-records.js.map +1 -0
  502. package/src/lib/server/shipping-connector-gates.d.ts +40 -0
  503. package/src/lib/server/shipping-connector-gates.js +97 -0
  504. package/src/lib/server/shipping-connector-gates.js.map +1 -0
  505. package/src/lib/server/shipping-connectors.d.ts +29 -0
  506. package/src/lib/server/shipping-connectors.js +236 -0
  507. package/src/lib/server/shipping-connectors.js.map +1 -0
  508. package/src/lib/server/shippingeasy.d.ts +238 -0
  509. package/src/lib/server/shippingeasy.js +787 -0
  510. package/src/lib/server/shippingeasy.js.map +1 -0
  511. package/src/lib/server/shipstation.d.ts +129 -0
  512. package/src/lib/server/shipstation.js +483 -0
  513. package/src/lib/server/shipstation.js.map +1 -0
  514. package/src/lib/server/site-page-resolver.d.ts +5 -0
  515. package/src/lib/server/site-page-resolver.js +156 -1
  516. package/src/lib/server/site-page-resolver.js.map +1 -1
  517. package/src/lib/server/stock-levels.d.ts +21 -0
  518. package/src/lib/server/stock-levels.js +263 -0
  519. package/src/lib/server/stock-levels.js.map +1 -0
  520. package/src/lib/server/stripe-refund.d.ts +47 -0
  521. package/src/lib/server/stripe-refund.js +87 -0
  522. package/src/lib/server/stripe-refund.js.map +1 -0
  523. package/src/lib/server/supplier-update.js +46 -5
  524. package/src/lib/server/supplier-update.js.map +1 -1
  525. package/src/lib/server/tax-engine-quote.d.ts +47 -0
  526. package/src/lib/server/tax-engine-quote.js +105 -0
  527. package/src/lib/server/tax-engine-quote.js.map +1 -0
  528. package/src/lib/server.js +138 -2
  529. package/src/lib/server.js.map +1 -1
  530. package/src/lib/site.js +12 -0
  531. package/src/lib/site.js.map +1 -1
  532. package/src/lib/subprocessors.d.ts +26 -0
  533. package/src/lib/subprocessors.js +50 -0
  534. package/src/lib/subprocessors.js.map +1 -0
  535. package/src/lib/tenant-emails.js +461 -3
  536. package/src/lib/tenant-emails.js.map +1 -1
  537. package/src/lib/testing/fake-firestore.d.ts +45 -0
  538. package/src/lib/testing/fake-firestore.js +189 -0
  539. package/src/lib/testing/fake-firestore.js.map +1 -0
  540. package/src/lib/testing/memory-firestore.d.ts +123 -0
  541. package/src/lib/testing/memory-firestore.js +274 -0
  542. package/src/lib/testing/memory-firestore.js.map +1 -0
  543. package/src/lib/testing/pos-ops-harness.d.ts +50 -0
  544. package/src/lib/testing/pos-ops-harness.js +184 -0
  545. package/src/lib/testing/pos-ops-harness.js.map +1 -0
  546. package/src/lib/testing/pos-ops-memory-firestore.d.ts +55 -0
  547. package/src/lib/testing/pos-ops-memory-firestore.js +376 -0
  548. package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -0
  549. package/src/lib/transfer/records-transfer.d.ts +11 -1
  550. package/src/lib/transfer/records-transfer.js +127 -5
  551. package/src/lib/transfer/records-transfer.js.map +1 -1
  552. package/src/lib/transfer/records.server.d.ts +9 -2
  553. package/src/lib/transfer/records.server.js +58 -7
  554. package/src/lib/transfer/records.server.js.map +1 -1
  555. package/src/lib/transfer/register-transfer-resources.js +40 -1
  556. package/src/lib/transfer/register-transfer-resources.js.map +1 -1
  557. package/src/lib/transfer/register-transfer-ui.js +4 -1
  558. package/src/lib/transfer/register-transfer-ui.js.map +1 -1
  559. package/src/lib/transfer/shipping-presets.d.ts +23 -0
  560. package/src/lib/transfer/shipping-presets.js +156 -0
  561. package/src/lib/transfer/shipping-presets.js.map +1 -0
  562. package/src/lib/transfer/tracking-transfer.d.ts +101 -0
  563. package/src/lib/transfer/tracking-transfer.js +546 -0
  564. package/src/lib/transfer/tracking-transfer.js.map +1 -0
  565. package/src/lib/transfer/tracking.server.d.ts +37 -0
  566. package/src/lib/transfer/tracking.server.js +393 -0
  567. package/src/lib/transfer/tracking.server.js.map +1 -0
  568. package/src/lib/transfer/transfer-keys.d.ts +2 -1
  569. package/src/lib/transfer/transfer-keys.js +6 -2
  570. package/src/lib/transfer/transfer-keys.js.map +1 -1
  571. package/src/lib/utils/code128.d.ts +37 -0
  572. package/src/lib/utils/code128.js +199 -0
  573. package/src/lib/utils/code128.js.map +1 -0
  574. package/src/lib/utils/order-invoice.d.ts +55 -0
  575. package/src/lib/utils/order-invoice.js +127 -0
  576. package/src/lib/utils/order-invoice.js.map +1 -0
  577. package/src/lib/utils/use-checkout-return-notice.d.ts +34 -0
  578. package/src/lib/utils/use-checkout-return-notice.js +78 -0
  579. package/src/lib/utils/use-checkout-return-notice.js.map +1 -0
  580. package/src/lib/server/feed.js +0 -69
  581. package/src/lib/server/feed.js.map +0 -1
@@ -0,0 +1,567 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ import * as Aglyn from "@aglyn/aglyn/server";
18
+ import { pluginSmsMessaging } from "@aglyn/aglyn/plugin-manager/plugin-sms-messaging";
19
+ import { resolveSiteTimeZone } from "@aglyn/aglyn/app-utils/collection-entry-date";
20
+ import { resolveHostToken } from "@aglyn/aglyn/app-utils/host-tokens";
21
+ import { firebaseAdmin, getOrgForHost, hostSendingIdentity, meterHostEmail, renderHostEmailWithTokens } from "@aglyn/tenant-data-admin";
22
+ import { isEmailConfigured, sendEmail } from "@aglyn/shared-util-email";
23
+ import * as CommerceModel from "../model/index.js";
24
+ import { mintDownloadToken } from "./download.js";
25
+ import { orderStatusUrl } from "./order-status-token.js";
26
+ async function readStore(firestore, hostId) {
27
+ var _ref, _ref1, _settings_currency;
28
+ var _settingsSnapshot_data, _hostSnapshot_data;
29
+ const hostRef = firestore.collection('hosts').doc(hostId);
30
+ const [hostSnapshot, settingsSnapshot] = await Promise.all([
31
+ hostRef.get().catch(()=>null),
32
+ hostRef.collection('settings').doc('store').get().catch(()=>null)
33
+ ]);
34
+ const settings = (_ref = settingsSnapshot == null ? void 0 : (_settingsSnapshot_data = settingsSnapshot.data) == null ? void 0 : _settingsSnapshot_data.call(settingsSnapshot)) != null ? _ref : {};
35
+ return {
36
+ firestore,
37
+ hostRef,
38
+ host: (_ref1 = hostSnapshot == null ? void 0 : (_hostSnapshot_data = hostSnapshot.data) == null ? void 0 : _hostSnapshot_data.call(hostSnapshot)) != null ? _ref1 : {},
39
+ settings,
40
+ currency: String((_settings_currency = settings['currency']) != null ? _settings_currency : 'USD') || 'USD'
41
+ };
42
+ }
43
+ function lineLabel(line) {
44
+ return `${line.quantity}× ${line.name}${line.variantLabel ? ` (${line.variantLabel})` : ''}`;
45
+ }
46
+ /** The status link, or the store's home page when no link can be minted. */ function statusLink(store, ref) {
47
+ var _ref, _orderStatusUrl;
48
+ return (_ref = (_orderStatusUrl = orderStatusUrl(store.host, ref.hostId, ref.orderId)) != null ? _orderStatusUrl : Aglyn.hostPublicOrigin({
49
+ cname: typeof store.host['cname'] === 'string' ? store.host['cname'] : null,
50
+ subdomain: typeof store.host['subdomain'] === 'string' ? store.host['subdomain'] : null
51
+ })) != null ? _ref : '';
52
+ }
53
+ /** What the moment says. `null` when it does not apply to this order. */ export function composeOrderBuyerMessage(input) {
54
+ var _order_lineItems, _order_timeline;
55
+ const { event, order, orderId, businessName, currency, statusUrl, options = {} } = input;
56
+ const lines = (_order_lineItems = order.lineItems) != null ? _order_lineItems : [];
57
+ const number = CommerceModel.formatOrderNumber(order, orderId);
58
+ const money = (cents)=>CommerceModel.formatOrderMoney(cents, currency);
59
+ const store = businessName || 'The store';
60
+ const base = {
61
+ 'order.number': number,
62
+ 'order.statusUrl': statusUrl,
63
+ 'order.ref': orderId
64
+ };
65
+ const link = statusUrl ? `\n\nView your order: ${statusUrl}` : '';
66
+ const smsLink = statusUrl ? ` ${statusUrl}` : '';
67
+ if (event === 'receipt') {
68
+ var _ref, _order_amountCents, _order_licenseKeys, _input_downloadLinks, _input_receiptFooter;
69
+ var _order_totals;
70
+ const totalCents = (_ref = (_order_totals = order.totals) == null ? void 0 : _order_totals.totalCents) != null ? _ref : Number((_order_amountCents = order.amountCents) != null ? _order_amountCents : 0);
71
+ const licenseText = Object.entries((_order_licenseKeys = order.licenseKeys) != null ? _order_licenseKeys : {}).flatMap(([productId, keys])=>{
72
+ const line = lines.find((item)=>item.productId === productId);
73
+ return (keys != null ? keys : []).map((key)=>{
74
+ var _ref;
75
+ return `License key (${(_ref = line == null ? void 0 : line.name) != null ? _ref : 'product'}): ${key}`;
76
+ });
77
+ }).join('\n');
78
+ const downloads = Object.entries((_input_downloadLinks = input.downloadLinks) != null ? _input_downloadLinks : {}).map(([productId, url])=>{
79
+ var _ref;
80
+ const line = lines.find((item)=>item.productId === productId);
81
+ return `Download ${(_ref = line == null ? void 0 : line.name) != null ? _ref : 'your file'}: ${url}`;
82
+ }).join('\n');
83
+ const linesText = lines.map((line)=>`${lineLabel(line)} — ${money(line.unitAmountCents * line.quantity)}`).join('\n');
84
+ const summary = [
85
+ linesText,
86
+ licenseText,
87
+ downloads
88
+ ].filter(Boolean).join('\n\n');
89
+ const footer = String((_input_receiptFooter = input.receiptFooter) != null ? _input_receiptFooter : '');
90
+ return {
91
+ occurrence: 'order',
92
+ emailKey: CommerceModel.BUYER_NOTIFICATION_EMAIL_KEYS.receipt,
93
+ tokens: _extends({}, base, {
94
+ 'order.summary': summary,
95
+ 'order.total': money(totalCents),
96
+ 'store.receiptFooter': footer
97
+ }),
98
+ subject: 'Receipt for your order',
99
+ text: `Thanks for your purchase!\n\n${summary}\n\nTotal: ${money(totalCents)}\n` + `Order ${number}` + (footer ? `\n\n${footer}` : '') + link,
100
+ sms: `${store}: receipt for order ${number}, ${money(totalCents)}.${smsLink}`,
101
+ timelineDetail: 'Receipt sent'
102
+ };
103
+ }
104
+ if (event === 'shipped') {
105
+ var _order_fulfillments, _fulfillment_trackingNumber;
106
+ const fulfillments = (_order_fulfillments = order.fulfillments) != null ? _order_fulfillments : [];
107
+ const fulfillment = options.fulfillmentId ? fulfillments.find((entry)=>entry.id === options.fulfillmentId) : [
108
+ ...fulfillments
109
+ ].sort((a, b)=>{
110
+ var _b_atMs, _a_atMs;
111
+ return ((_b_atMs = b.atMs) != null ? _b_atMs : 0) - ((_a_atMs = a.atMs) != null ? _a_atMs : 0);
112
+ })[0];
113
+ if (!fulfillment) return null;
114
+ // The units THIS shipment carried (AGL-3611): a partial shipment of a
115
+ // line names its own count, not the line's.
116
+ const shipped = CommerceModel.fulfillmentLineQuantities(order, fulfillment).map((entry)=>lines[entry.lineItemId] ? _extends({}, lines[entry.lineItemId], {
117
+ quantity: entry.quantity
118
+ }) : null).filter(Boolean);
119
+ const tracking = CommerceModel.fulfillmentTrackingUrl(fulfillment);
120
+ const hasTracking = Boolean(fulfillment.trackingNumber);
121
+ // Nothing physical left the building: a register sale handed over the
122
+ // counter, or a digital-only order the merchant marked fulfilled. A
123
+ // "your order is on its way" email for either is noise at best.
124
+ const physical = shipped.some((line)=>line.productType !== 'digital' && line.productType !== 'service');
125
+ if (!hasTracking && (order.channel === 'pos' || !physical)) return null;
126
+ // Shippable units still out, over every active shipment (AGL-3611).
127
+ const remainingUnits = CommerceModel.remainingFulfillmentLines(order).reduce((sum, entry)=>sum + entry.quantity, 0);
128
+ const carrier = CommerceModel.carrierLabelFor(fulfillment.carrier);
129
+ const trackingSentence = hasTracking ? `Tracking: ${[
130
+ carrier,
131
+ fulfillment.trackingNumber
132
+ ].filter(Boolean).join(' ')}${tracking ? ` — ${tracking}` : ''}` : '';
133
+ const remainingSentence = remainingUnits > 0 ? `${remainingUnits} more item${remainingUnits === 1 ? '' : 's'} will ship separately.` : '';
134
+ const summary = shipped.map(lineLabel).join('\n');
135
+ return {
136
+ occurrence: fulfillment.id,
137
+ emailKey: CommerceModel.BUYER_NOTIFICATION_EMAIL_KEYS.shipped,
138
+ tokens: _extends({}, base, {
139
+ 'shipment.summary': summary,
140
+ 'shipment.carrier': carrier,
141
+ 'shipment.trackingNumber': String((_fulfillment_trackingNumber = fulfillment.trackingNumber) != null ? _fulfillment_trackingNumber : ''),
142
+ 'shipment.tracking': trackingSentence,
143
+ 'shipment.remaining': remainingSentence
144
+ }),
145
+ subject: `Your order ${number} has shipped`,
146
+ text: `${store} shipped items from order ${number}.\n\n${summary}` + (trackingSentence ? `\n\n${trackingSentence}` : '') + (remainingSentence ? `\n\n${remainingSentence}` : '') + link,
147
+ sms: `${store}: order ${number} has shipped.` + (tracking ? ` Track it: ${tracking}` : smsLink),
148
+ timelineDetail: 'Shipping confirmation sent'
149
+ };
150
+ }
151
+ if (event === 'delivered') {
152
+ // A counter sale is "delivered" the moment it is handed over.
153
+ if (order.channel === 'pos') return null;
154
+ const summary = lines.map(lineLabel).join('\n');
155
+ return {
156
+ occurrence: 'order',
157
+ emailKey: CommerceModel.BUYER_NOTIFICATION_EMAIL_KEYS.delivered,
158
+ tokens: _extends({}, base, {
159
+ 'order.summary': summary
160
+ }),
161
+ subject: `Your order ${number} was delivered`,
162
+ text: `${store} marked order ${number} as delivered.\n\n${summary}` + link,
163
+ sms: `${store}: order ${number} was delivered.${smsLink}`,
164
+ timelineDetail: 'Delivery confirmation sent'
165
+ };
166
+ }
167
+ if (event === 'refunded') {
168
+ var _options_refundCents, _options_refundLineIndexes, _order_refundedCents;
169
+ const refundCents = Math.max(0, Math.round(Number((_options_refundCents = options.refundCents) != null ? _options_refundCents : 0)));
170
+ if (!(refundCents > 0)) return null;
171
+ const refundedLines = ((_options_refundLineIndexes = options.refundLineIndexes) != null ? _options_refundLineIndexes : []).map((index)=>lines[index]).filter(Boolean);
172
+ const summary = refundedLines.map(lineLabel).join('\n');
173
+ const note = options.fullyRefunded ? 'Your order has been refunded in full.' : 'The rest of your order is unchanged.';
174
+ return {
175
+ // The refund's own id is the occurrence; without one, the running
176
+ // total after this refund is (each settled refund raises it).
177
+ occurrence: options.refundId || `total-${Number((_order_refundedCents = order.refundedCents) != null ? _order_refundedCents : 0) || refundCents}`,
178
+ emailKey: CommerceModel.BUYER_NOTIFICATION_EMAIL_KEYS.refunded,
179
+ tokens: _extends({}, base, {
180
+ 'refund.amount': money(refundCents),
181
+ 'refund.summary': summary,
182
+ 'refund.note': note
183
+ }),
184
+ subject: `Refund for your order ${number}`,
185
+ text: `${store} refunded ${money(refundCents)} on order ${number}.` + (summary ? `\n\n${summary}` : '') + `\n\n${note}\n\nRefunds go back to the original payment method and ` + 'usually appear within 5 to 10 business days, depending on your bank.' + link,
186
+ sms: `${store}: ${money(refundCents)} refunded on order ${number}.${smsLink}`,
187
+ timelineDetail: `Refund confirmation sent (${money(refundCents)})`
188
+ };
189
+ }
190
+ // cancelled
191
+ const summary = lines.map(lineLabel).join('\n');
192
+ const wasPaid = Boolean(order.paymentIntentId || order.channel === 'pos' && order.status !== 'pending' || ((_order_timeline = order.timeline) != null ? _order_timeline : []).some((entry)=>(entry == null ? void 0 : entry.event) === 'paid'));
193
+ const note = wasPaid ? `Questions about a payment? Reply to this email or contact ${store}.` : '';
194
+ return {
195
+ occurrence: 'order',
196
+ emailKey: CommerceModel.BUYER_NOTIFICATION_EMAIL_KEYS.cancelled,
197
+ tokens: _extends({}, base, {
198
+ 'order.summary': summary,
199
+ 'cancel.note': note
200
+ }),
201
+ subject: `Your order ${number} was canceled`,
202
+ text: `${store} canceled order ${number}.\n\n${summary}` + (note ? `\n\n${note}` : '') + link,
203
+ sms: `${store}: order ${number} was canceled.${smsLink}`,
204
+ timelineDetail: 'Cancellation notice sent'
205
+ };
206
+ }
207
+ /**
208
+ * Claims one message in a transaction. `true` when this caller owns the send;
209
+ * `false` when a marker is already there (sent, or being sent).
210
+ */ async function claimMessage(firestore, orderRef, marker, channel) {
211
+ return firestore.runTransaction(async (transaction)=>{
212
+ var _snapshot_get;
213
+ const snapshot = await transaction.get(orderRef);
214
+ if (!snapshot.exists) return false;
215
+ const sent = (_snapshot_get = snapshot.get('buyerNotifications')) != null ? _snapshot_get : {};
216
+ if (sent[marker]) return false;
217
+ transaction.update(orderRef, {
218
+ [`buyerNotifications.${marker}`]: {
219
+ state: 'sending',
220
+ channel,
221
+ atMs: Date.now()
222
+ }
223
+ });
224
+ return true;
225
+ });
226
+ }
227
+ /** Marks a claimed message sent and records it on the order timeline. */ async function settleMessage(firestore, orderRef, marker, channel, detail) {
228
+ await firestore.runTransaction(async (transaction)=>{
229
+ var _snapshot_data;
230
+ const snapshot = await transaction.get(orderRef);
231
+ if (!snapshot.exists) return;
232
+ const order = CommerceModel.liftLegacyOrder((_snapshot_data = snapshot.data()) != null ? _snapshot_data : {});
233
+ const atMs = Date.now();
234
+ transaction.update(orderRef, _extends({}, marker ? {
235
+ [`buyerNotifications.${marker}`]: {
236
+ state: 'sent',
237
+ channel,
238
+ atMs
239
+ }
240
+ } : {}, {
241
+ timeline: CommerceModel.appendOrderEvent(order, 'buyer-notified', `${detail} by ${channel === 'sms' ? 'text' : 'email'}`, atMs)
242
+ }));
243
+ }).catch((error)=>{
244
+ console.error('[order-notifications] settle failed', marker, error);
245
+ });
246
+ }
247
+ async function releaseMessage(orderRef, marker) {
248
+ await orderRef.update({
249
+ [`buyerNotifications.${marker}`]: firebaseAdmin.firestore.FieldValue.delete()
250
+ }).catch(()=>undefined);
251
+ }
252
+ async function deliverEmail(store, ref, to, message, context) {
253
+ var _ref;
254
+ const designed = await renderHostEmailWithTokens(store.firestore, ref.hostId, message.emailKey, message.tokens);
255
+ const org = await getOrgForHost(ref.hostId).catch(()=>null);
256
+ await sendEmail(_extends({
257
+ to,
258
+ subject: (_ref = designed == null ? void 0 : designed.subject) != null ? _ref : message.subject,
259
+ text: (designed == null ? void 0 : designed.text) || message.text
260
+ }, (designed == null ? void 0 : designed.html) ? {
261
+ html: designed.html
262
+ } : {}, {
263
+ fromName: Aglyn.resolveBrandingProfile(org == null ? void 0 : org.org).fromName,
264
+ sendingIdentity: await hostSendingIdentity(ref.hostId),
265
+ audience: 'tenant',
266
+ context,
267
+ // Owed to the recipient by their own order: the phishing screen's soft
268
+ // rules never hold it (AGL-3356).
269
+ owedFor: 'order'
270
+ }));
271
+ // Cost meter (AGL-1438), as every transactional store email.
272
+ await meterHostEmail(ref.hostId);
273
+ }
274
+ /**
275
+ * Sends one order text. A receipt goes at once — the buyer is at the counter
276
+ * or the checkout waiting for it. Every later moment (shipped, delivered,
277
+ * refunded, canceled) can fire at any hour, from a carrier scan or a late
278
+ * packing shift, so it asks the provider to keep quiet hours in the STORE's
279
+ * zone: the best stand-in the platform has for a buyer whose own zone it was
280
+ * never told, and right for the local and regional stores most texts come
281
+ * from. Held texts arrive at 8 AM there.
282
+ */ async function deliverSms(ref, to, message, context, quiet) {
283
+ const sms = pluginSmsMessaging();
284
+ if (!(sms == null ? void 0 : sms.isConfigured())) return {
285
+ refused: 'Text messages are not configured'
286
+ };
287
+ let timeZone = null;
288
+ if (quiet) {
289
+ var _ref;
290
+ const owner = await getOrgForHost(ref.hostId).catch(()=>null);
291
+ timeZone = resolveSiteTimeZone((_ref = owner == null ? void 0 : owner.org) != null ? _ref : null, quiet.host);
292
+ }
293
+ const outcome = await sms.send(_extends({
294
+ to,
295
+ body: message.sms,
296
+ hostId: ref.hostId,
297
+ purpose: 'transactional',
298
+ context
299
+ }, timeZone ? {
300
+ quietHours: {
301
+ timeZone
302
+ }
303
+ } : {}));
304
+ if (outcome.status !== 'sent') return {
305
+ refused: outcome.status
306
+ };
307
+ return _extends({
308
+ refused: null
309
+ }, outcome.scheduledForMs ? {
310
+ scheduledForMs: outcome.scheduledForMs
311
+ } : {});
312
+ }
313
+ /** Absolute download links for a receipt's digital lines. */ function downloadLinksFor(store, ref, order) {
314
+ var _order_lineItems;
315
+ const origin = Aglyn.hostPublicOrigin({
316
+ cname: typeof store.host['cname'] === 'string' ? store.host['cname'] : null,
317
+ subdomain: typeof store.host['subdomain'] === 'string' ? store.host['subdomain'] : null
318
+ });
319
+ const digital = ((_order_lineItems = order.lineItems) != null ? _order_lineItems : []).filter((line)=>line.productType === 'digital');
320
+ if (!origin || !digital.length) return {};
321
+ let token;
322
+ try {
323
+ token = mintDownloadToken(ref.hostId, ref.orderId);
324
+ } catch (unused) {
325
+ return {};
326
+ }
327
+ return Object.fromEntries(digital.map((line)=>[
328
+ line.productId,
329
+ `${origin}/api/commerce/download?hostId=${encodeURIComponent(ref.hostId)}` + `&orderId=${encodeURIComponent(ref.orderId)}` + `&productId=${encodeURIComponent(line.productId)}&token=${token}`
330
+ ]));
331
+ }
332
+ async function readOrder(firestore, ref) {
333
+ var _snapshot_data;
334
+ const orderRef = firestore.collection('hosts').doc(ref.hostId).collection('orders').doc(ref.orderId);
335
+ const snapshot = await orderRef.get();
336
+ return {
337
+ orderRef,
338
+ order: snapshot.exists ? CommerceModel.liftLegacyOrder((_snapshot_data = snapshot.data()) != null ? _snapshot_data : {}) : null
339
+ };
340
+ }
341
+ function emailOf(value) {
342
+ const email = String(value != null ? value : '').trim();
343
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email) ? email : '';
344
+ }
345
+ /**
346
+ * Tells the buyer about one moment in their order's life, once. See the
347
+ * module header. Never throws.
348
+ */ export async function notifyOrderBuyer(ref, event, options = {}) {
349
+ try {
350
+ var _options_firestore, _resolveHostToken, _store_settings_receiptFooter, _order_customerPhone;
351
+ var _pluginSmsMessaging;
352
+ if (!ref.hostId || !ref.orderId) return {
353
+ outcome: 'no_such_order'
354
+ };
355
+ const firestore = (_options_firestore = options.firestore) != null ? _options_firestore : firebaseAdmin.app().firestore();
356
+ const store = await readStore(firestore, ref.hostId);
357
+ const toggles = store.settings['buyerNotifications'];
358
+ if (!CommerceModel.buyerNotificationEnabled(toggles, event)) {
359
+ return {
360
+ outcome: 'disabled'
361
+ };
362
+ }
363
+ const { orderRef, order } = await readOrder(firestore, ref);
364
+ if (!order) return {
365
+ outcome: 'no_such_order'
366
+ };
367
+ const message = composeOrderBuyerMessage({
368
+ event,
369
+ order,
370
+ orderId: ref.orderId,
371
+ businessName: String((_resolveHostToken = resolveHostToken('businessName', store.host)) != null ? _resolveHostToken : ''),
372
+ currency: store.currency,
373
+ statusUrl: statusLink(store, ref),
374
+ receiptFooter: String((_store_settings_receiptFooter = store.settings['receiptFooter']) != null ? _store_settings_receiptFooter : ''),
375
+ downloadLinks: event === 'receipt' ? downloadLinksFor(store, ref, order) : undefined,
376
+ options
377
+ });
378
+ if (!message) return {
379
+ outcome: 'not_applicable'
380
+ };
381
+ const email = emailOf(order.customerEmail) || emailOf(options.email);
382
+ const phone = String((_order_customerPhone = order.customerPhone) != null ? _order_customerPhone : '').trim();
383
+ const targets = [];
384
+ if (email && isEmailConfigured()) targets.push({
385
+ channel: 'email',
386
+ to: email
387
+ });
388
+ if (phone && CommerceModel.buyerNotificationEnabled(toggles, 'texts') && ((_pluginSmsMessaging = pluginSmsMessaging()) == null ? void 0 : _pluginSmsMessaging.isConfigured())) {
389
+ targets.push({
390
+ channel: 'sms',
391
+ to: phone
392
+ });
393
+ }
394
+ if (!targets.length) return {
395
+ outcome: 'no_recipient'
396
+ };
397
+ const channels = [];
398
+ for (const target of targets){
399
+ const marker = CommerceModel.buyerNotificationMarker(event, message.occurrence, target.channel);
400
+ const claimed = await claimMessage(firestore, orderRef, marker, target.channel).catch((error)=>{
401
+ console.error('[order-notifications] claim failed', marker, error);
402
+ return false;
403
+ });
404
+ if (!claimed) {
405
+ channels.push({
406
+ channel: target.channel,
407
+ outcome: 'already'
408
+ });
409
+ continue;
410
+ }
411
+ const context = message.emailKey;
412
+ let held = null;
413
+ try {
414
+ if (target.channel === 'email') {
415
+ await deliverEmail(store, ref, target.to, message, context);
416
+ } else {
417
+ var _sent_scheduledForMs;
418
+ const sent = await deliverSms(ref, target.to, message, context, event === 'receipt' ? null : {
419
+ host: store.host
420
+ });
421
+ if (sent.refused) throw new Error(sent.refused);
422
+ held = (_sent_scheduledForMs = sent.scheduledForMs) != null ? _sent_scheduledForMs : null;
423
+ }
424
+ await settleMessage(firestore, orderRef, marker, target.channel, held ? `${message.timelineDetail} (held for the morning)` : message.timelineDetail);
425
+ channels.push({
426
+ channel: target.channel,
427
+ outcome: 'sent'
428
+ });
429
+ } catch (error) {
430
+ await releaseMessage(orderRef, marker);
431
+ console.error('[order-notifications] send failed', {
432
+ hostId: ref.hostId,
433
+ orderId: ref.orderId,
434
+ event,
435
+ channel: target.channel,
436
+ error
437
+ });
438
+ channels.push({
439
+ channel: target.channel,
440
+ outcome: 'failed',
441
+ error: error instanceof Error ? error.message : String(error)
442
+ });
443
+ }
444
+ }
445
+ return {
446
+ outcome: 'handled',
447
+ channels
448
+ };
449
+ } catch (error) {
450
+ console.error('[order-notifications] notify failed', ref, event, error);
451
+ return {
452
+ outcome: 'handled',
453
+ channels: []
454
+ };
455
+ }
456
+ }
457
+ /**
458
+ * Sends the receipt again, on the merchant's say-so, to the address or number
459
+ * they gave (AGL-3610) — the order dialog's "Resend receipt".
460
+ *
461
+ * NOT idempotent, on purpose: a resend IS the second send. The route in front
462
+ * of it is rate-limited instead, and the send is recorded on the timeline so
463
+ * the merchant can see it went. It does not consult the store's moment
464
+ * switches either — a merchant who turned automatic receipts off can still
465
+ * hand one to a customer who asks.
466
+ */ export async function sendOrderReceipt(ref, input) {
467
+ try {
468
+ var _input_firestore, _resolveHostToken, _store_settings_receiptFooter;
469
+ const firestore = (_input_firestore = input.firestore) != null ? _input_firestore : firebaseAdmin.app().firestore();
470
+ const { orderRef, order } = await readOrder(firestore, ref);
471
+ if (!order) return {
472
+ outcome: 'no_such_order'
473
+ };
474
+ if (input.channel === 'email') {
475
+ if (!isEmailConfigured()) return {
476
+ outcome: 'not_configured'
477
+ };
478
+ if (!emailOf(input.to)) return {
479
+ outcome: 'invalid_recipient'
480
+ };
481
+ } else {
482
+ var _pluginSmsMessaging;
483
+ if (!((_pluginSmsMessaging = pluginSmsMessaging()) == null ? void 0 : _pluginSmsMessaging.isConfigured())) {
484
+ return {
485
+ outcome: 'not_configured'
486
+ };
487
+ }
488
+ if (!Aglyn.normalizePhone(input.to)) {
489
+ return {
490
+ outcome: 'invalid_recipient'
491
+ };
492
+ }
493
+ }
494
+ const store = await readStore(firestore, ref.hostId);
495
+ const message = composeOrderBuyerMessage({
496
+ event: 'receipt',
497
+ order,
498
+ orderId: ref.orderId,
499
+ businessName: String((_resolveHostToken = resolveHostToken('businessName', store.host)) != null ? _resolveHostToken : ''),
500
+ currency: store.currency,
501
+ statusUrl: statusLink(store, ref),
502
+ receiptFooter: String((_store_settings_receiptFooter = store.settings['receiptFooter']) != null ? _store_settings_receiptFooter : ''),
503
+ downloadLinks: downloadLinksFor(store, ref, order)
504
+ });
505
+ if (!message) return {
506
+ outcome: 'failed',
507
+ error: 'Nothing to send'
508
+ };
509
+ if (input.channel === 'email') {
510
+ await deliverEmail(store, ref, emailOf(input.to), message, 'order-receipt');
511
+ } else {
512
+ const sent = await deliverSms(ref, input.to, message, 'order-receipt', null);
513
+ if (sent.refused) return {
514
+ outcome: 'failed',
515
+ error: sent.refused
516
+ };
517
+ }
518
+ await settleMessage(firestore, orderRef, null, input.channel, 'Receipt re-sent');
519
+ return {
520
+ outcome: 'sent',
521
+ channel: input.channel
522
+ };
523
+ } catch (error) {
524
+ console.error('[order-notifications] receipt send failed', ref, error);
525
+ return {
526
+ outcome: 'failed',
527
+ error: error instanceof Error ? error.message : String(error)
528
+ };
529
+ }
530
+ }
531
+ /**
532
+ * What the online receipt sends needs from this module (AGL-3610): whether
533
+ * the store left receipts on, and the `order.number` / `order.statusUrl`
534
+ * tokens. The cart and buy-now receipts compose their own summary (license
535
+ * keys and download links built from the Stripe session) inside the
536
+ * webhook's redelivery guard, so they ask here rather than route through
537
+ * {@link notifyOrderBuyer}.
538
+ */ export async function onlineReceiptExtras(hostId, orderId, firestore = firebaseAdmin.app().firestore()) {
539
+ try {
540
+ const store = await readStore(firestore, hostId);
541
+ const { order } = await readOrder(firestore, {
542
+ hostId,
543
+ orderId
544
+ });
545
+ return {
546
+ enabled: CommerceModel.buyerNotificationEnabled(store.settings['buyerNotifications'], 'receipt'),
547
+ tokens: {
548
+ 'order.number': CommerceModel.formatOrderNumber(order != null ? order : {}, orderId),
549
+ 'order.statusUrl': statusLink(store, {
550
+ hostId,
551
+ orderId
552
+ })
553
+ }
554
+ };
555
+ } catch (error) {
556
+ console.error('[order-notifications] receipt extras failed', error);
557
+ return {
558
+ enabled: true,
559
+ tokens: {
560
+ 'order.number': '',
561
+ 'order.statusUrl': ''
562
+ }
563
+ };
564
+ }
565
+ }
566
+
567
+ //# sourceMappingURL=order-notifications.js.map