@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
@@ -22,11 +22,19 @@ import { claimAttempt, deriveStripeObjectKey } from "@aglyn/aglyn/server";
22
22
  import { consumeRateLimit, firebaseAdmin, getOrgForHost, isYoungWorkspace } from "@aglyn/tenant-data-admin";
23
23
  import { merchantAccountIsReady } from "@aglyn/tenant-data-admin/server/payment-provider";
24
24
  import { checkoutSessionCardAuthenticationParams } from "@aglyn/tenant-data-admin/server/stripe-card-authentication";
25
+ import { CARRIER_POSTAL_CODE_MESSAGE, planCheckoutShippingWithCarriers } from "./carrier-shipping.js";
25
26
  import { readCartId } from "./cart-cookie.js";
26
27
  import { resolveManualTaxRateId } from "./manual-tax-rate.js";
28
+ import { allocateCentsByWeight, engineLineTaxPercentages, taxEngineSessionMetadata } from "../model/commerce-tax-engine.js";
29
+ import { quoteSaleTaxWithEngine } from "./tax-engine-quote.js";
27
30
  import { holdPromotionSlot, promotionHoldKey } from "./promotion-hold.js";
28
31
  import { holdStock, stockHoldKey } from "./stock-hold.js";
29
32
  import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSessionPayload, resolveNativeCheckoutMode } from "./native-checkout.js";
33
+ import { ensureCheckoutDomain } from "./payment-method-domains.js";
34
+ import { raiseCheckoutStarted } from "./order-events.js";
35
+ import { checkoutExtrasCents, encodeCheckoutExtrasMetadata, readChosenCheckoutExtras } from "@aglyn/aglyn/plugin-manager/plugin-checkout-extras";
36
+ import { quoteCartExtras } from "./checkout-extras.js";
37
+ /** An option the buyer ticked is no longer offered (AGL-3635). */ export const CHECKOUT_EXTRA_UNAVAILABLE_MESSAGE = 'An option you picked is no longer available. Review your cart and try again.';
30
38
  /**
31
39
  * Cart checkout (AGL-293): the whole cart in one Stripe Checkout
32
40
  * session on the merchant's account. Every line re-prices from its
@@ -89,8 +97,8 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
89
97
  if (held) await held.release();
90
98
  };
91
99
  try {
92
- var _cartSnapshot_data, _ref1, _storeSettings_get, _req_headers_referer, _req_headers_host, _ref2;
93
- var _ownerOrg_org, _ownerOrg_org1, _ownerOrg_org2;
100
+ var _cartSnapshot_data, _ref1, _storeSettings_get, _storeSettings_get1, _req_headers_referer, _req_headers_host, _ref2, _ref3;
101
+ var _ownerOrg_org, _ownerOrg_org1, _ownerOrg_org2, _engineTax_quote;
94
102
  const firestore = firebaseAdmin.app().firestore();
95
103
  const hostRef = firestore.collection('hosts').doc(hostId);
96
104
  const cartSnapshot = await hostRef.collection('carts').doc(cartId).get();
@@ -164,6 +172,8 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
164
172
  * reservation and the price must be taken against the same variant, and a
165
173
  * second resolution is a second chance to pick a different one.
166
174
  */ const reserveLines = [];
175
+ /** The basket as `checkout.started` reports it (AGL-3639). */ const startedItems = [];
176
+ /** The basket as an extras offer prices it (AGL-3635). */ const extrasLines = [];
167
177
  // Cart checkout never builds subscription sessions — every line bills
168
178
  // one-time in `payment` mode (recurring products subscribe through the
169
179
  // PDP's direct checkout, AGL-303) — so the buyer-chosen billing field
@@ -172,7 +182,7 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
172
182
  mode: 'payment'
173
183
  }, checkoutSessionCardAuthenticationParams('payment')));
174
184
  cart.lines.forEach((line, index)=>{
175
- var _variant_weightGrams, _product_type, _product_type1, _variant_options, _variant_options1;
185
+ var _product_type, _variant_id, _variant_sku, _variant_weightGrams, _product_type1, _product_type2, _variant_options, _variant_options1;
176
186
  const product = productsById.get(line.productId);
177
187
  if (!product || product.deletedAt || product.status !== 'active') {
178
188
  var _ref;
@@ -219,6 +229,24 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
219
229
  }
220
230
  const unitCents = Math.round(Number(variant.priceUsd) * 100);
221
231
  itemsCents += unitCents * line.quantity;
232
+ extrasLines.push(_extends({
233
+ productId: line.productId,
234
+ name: product.name
235
+ }, variant.sku ? {
236
+ sku: String(variant.sku)
237
+ } : {}, {
238
+ quantity: line.quantity,
239
+ unitCents,
240
+ physical: ((_product_type = product.type) != null ? _product_type : 'physical') === 'physical'
241
+ }));
242
+ startedItems.push({
243
+ productId: line.productId,
244
+ variantId: (_variant_id = variant.id) != null ? _variant_id : null,
245
+ name: product.name,
246
+ sku: (_variant_sku = variant.sku) != null ? _variant_sku : null,
247
+ quantity: line.quantity,
248
+ unitCents
249
+ });
222
250
  if (product.giftCard) giftCardCents += unitCents * line.quantity;
223
251
  // What THIS line is worth, so a product-scoped discount can be priced
224
252
  // against the lines it actually covers rather than the whole basket
@@ -232,7 +260,7 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
232
260
  // reads it — `liftLegacyProduct` only defaults the field on docs it
233
261
  // synthesizes variants for, so a part-migrated doc can reach here
234
262
  // without one and the two reads must not disagree about what it is.
235
- if (((_product_type = product.type) != null ? _product_type : 'physical') === 'physical') hasPhysicalLine = true;
263
+ if (((_product_type1 = product.type) != null ? _product_type1 : 'physical') === 'physical') hasPhysicalLine = true;
236
264
  // `?? 'physical'`, which the comment four lines up already promised and
237
265
  // the code did not deliver (AGL-2251). `resolveTransactionFeePct` keys
238
266
  // on `productType === 'physical'` and sends everything else — `undefined`
@@ -241,7 +269,7 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
241
269
  // 'physical'`) priced the identical product at the physical rate. The
242
270
  // same basket cost the merchant a different fee depending on which
243
271
  // button the shopper pressed.
244
- const feePct = Aglyn.resolveTransactionFeePct(ownerOrg.org, (_product_type1 = product.type) != null ? _product_type1 : 'physical');
272
+ const feePct = Aglyn.resolveTransactionFeePct(ownerOrg.org, (_product_type2 = product.type) != null ? _product_type2 : 'physical');
245
273
  // WHETHER a rate applies is not the same fact as what it rounds to
246
274
  // (AGL-2232), and only the sum was being kept. `checkout.ts`,
247
275
  // `draft-order.ts` and `reserve.ts` all floor at `Math.max(1, …)` when
@@ -260,7 +288,7 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
260
288
  // visitor per day, lower while the workspace is young. Above the claim,
261
289
  // like the line refusals, so a refusal keeps the key.
262
290
  if (giftCardCents > 0) {
263
- var _ref3;
291
+ var _ref4;
264
292
  var _req_socket;
265
293
  const young = isYoungWorkspace(ownerOrg.org);
266
294
  const overCeiling = CommerceModel.giftCardPurchaseRefusal({
@@ -272,7 +300,7 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
272
300
  visible: overCeiling
273
301
  });
274
302
  }
275
- const buys = await consumeRateLimit(`giftcard:buy:${hostId}:${String((_ref3 = (_req_socket = req.socket) == null ? void 0 : _req_socket.remoteAddress) != null ? _ref3 : '') || 'no-address'}`, {
303
+ const buys = await consumeRateLimit(`giftcard:buy:${hostId}:${String((_ref4 = (_req_socket = req.socket) == null ? void 0 : _req_socket.remoteAddress) != null ? _ref4 : '') || 'no-address'}`, {
276
304
  limit: young ? CommerceModel.GIFT_CARD_PURCHASE_LIMITS.perVisitorDailyYoung : CommerceModel.GIFT_CARD_PURCHASE_LIMITS.perVisitorDaily,
277
305
  windowMs: 24 * 60 * 60 * 1000
278
306
  });
@@ -297,13 +325,34 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
297
325
  // session byte-identical to today's: no shipping charged, exactly as
298
326
  // before. Only a merchant who set rates up starts collecting them.
299
327
  const storeSettings = await hostRef.collection('settings').doc('store').get();
300
- const shippingPlan = hasPhysicalLine ? CommerceModel.planCheckoutShipping(storeSettings.get('shipping'), {
301
- subtotalCents: itemsCents,
302
- totalGrams
303
- }, body.shippingCountry) : {
328
+ // A live carrier rate (AGL-3612) is quoted here too, before the session,
329
+ // for the destination the shopper declared; a store with none plans from
330
+ // its table exactly as before. See `carrier-shipping.ts`.
331
+ const shippingPlan = hasPhysicalLine ? await planCheckoutShippingWithCarriers({
332
+ hostId,
333
+ settings: storeSettings.get('shipping'),
334
+ cart: {
335
+ subtotalCents: itemsCents,
336
+ totalGrams
337
+ },
338
+ destination: {
339
+ country: body.shippingCountry,
340
+ postalCode: body.shippingPostalCode
341
+ }
342
+ }) : {
304
343
  countries: CommerceModel.CHECKOUT_SHIPPING_COUNTRIES,
305
344
  options: []
306
345
  };
346
+ if (shippingPlan.needsPostalCode) {
347
+ return res.status(400).json({
348
+ error: CARRIER_POSTAL_CODE_MESSAGE,
349
+ needsShippingCountry: true,
350
+ needsShippingPostalCode: true,
351
+ shippingCountries: [
352
+ ...CommerceModel.CHECKOUT_SHIPPING_COUNTRIES
353
+ ]
354
+ });
355
+ }
307
356
  // The shopper is asked, then the answer is ENFORCED (AGL-1721): a declared
308
357
  // destination narrows `allowed_countries` to itself, so the rate resolved
309
358
  // for it is the only one on the session and no other address can be
@@ -338,6 +387,43 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
338
387
  error: CommerceModel.CART_UNPRICEABLE_SHIPPING_MESSAGE
339
388
  });
340
389
  }
390
+ // OPTIONAL LINES THE BUYER TICKED (AGL-3635) — package protection — asked
391
+ // of core's checkout-extras seam AGAIN here, never taken from the request:
392
+ // the body names which offers, the provider names the price. Above the
393
+ // claim, so a refusal keeps the key. An offer the buyer ticked that is no
394
+ // longer made refuses rather than selling without it: they asked for
395
+ // cover, and a parcel that silently has none is the worse surprise.
396
+ const chosenExtras = readChosenCheckoutExtras(body.extras);
397
+ const chargedExtras = chosenExtras.length ? (await quoteCartExtras({
398
+ hostId,
399
+ lines: extrasLines,
400
+ destination: {
401
+ country: body.shippingCountry,
402
+ postalCode: body.shippingPostalCode
403
+ }
404
+ })).filter((extra)=>chosenExtras.includes(extra.id)) : [];
405
+ if (chargedExtras.length !== chosenExtras.length) {
406
+ return res.status(409).json({
407
+ error: CHECKOUT_EXTRA_UNAVAILABLE_MESSAGE,
408
+ extrasChanged: true
409
+ });
410
+ }
411
+ const extrasCents = checkoutExtrasCents(chargedExtras);
412
+ // Each as its own line after the goods, untaxed (`txcd_00000000`, Stripe's
413
+ // nontaxable code) and outside every per-line tax, engine and fee loop
414
+ // below, which read `cart.lines` only: an extra is not goods, so the
415
+ // platform's take is not charged on it.
416
+ chargedExtras.forEach((extra, offset)=>{
417
+ const index = cart.lines.length + offset;
418
+ params.set(`line_items[${index}][quantity]`, '1');
419
+ params.set(`line_items[${index}][price_data][currency]`, 'usd');
420
+ params.set(`line_items[${index}][price_data][unit_amount]`, String(extra.amountCents));
421
+ params.set(`line_items[${index}][price_data][product_data][name]`, extra.label.slice(0, 120));
422
+ params.set(`line_items[${index}][price_data][product_data][tax_code]`, 'txcd_00000000');
423
+ });
424
+ for (const [key, value] of Object.entries(encodeCheckoutExtrasMetadata(chargedExtras))){
425
+ params.set(`metadata[${key}]`, value);
426
+ }
341
427
  chargedItemsCents = itemsCents;
342
428
  // Discounts engine (AGL-305): entered codes and automatic
343
429
  // promotions from hosts/{id}/discounts; the AGL-96 coupons remain a
@@ -527,11 +613,11 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
527
613
  })) : shippingPlan.options;
528
614
  // Coupons (AGL-96 semantics): percent off the items total.
529
615
  if (couponCode && !resolvedDiscount) {
530
- var _ref4;
616
+ var _ref5;
531
617
  const couponRef = hostRef.collection('coupons').doc(couponCode);
532
618
  const couponSnapshot = await couponRef.get();
533
619
  const coupon = couponSnapshot.data();
534
- const percentOff = Number((_ref4 = coupon == null ? void 0 : coupon.percentOff) != null ? _ref4 : 0);
620
+ const percentOff = Number((_ref5 = coupon == null ? void 0 : coupon.percentOff) != null ? _ref5 : 0);
535
621
  const expired = (coupon == null ? void 0 : coupon.expiresAtMs) != null && Number(coupon.expiresAtMs) < Date.now();
536
622
  if (!coupon || coupon.enabled === false || expired || !(percentOff > 0 && percentOff <= 100)) {
537
623
  // Deterministic and retryable — the shopper fixes the code and
@@ -721,16 +807,61 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
721
807
  // `application_fee_amount` is fixed at creation), and the manual origin tax
722
808
  // rate the lines carry. A store on Stripe Tax is the one residual — its tax
723
809
  // is computed inside Stripe after the session is made.
810
+ // The merchant's own tax service, where they connected one (AGL-3631).
811
+ // Asked once, here, because the card-cost estimate just below and the
812
+ // tax lines further down both need its answer. Each line goes over at
813
+ // what Stripe will tax it at — its amount less its share of the session
814
+ // coupon, shared the way Stripe shares it — so the rate derived from
815
+ // the answer reproduces it. Taxed at the store's address, like the store's
816
+ // own rate: the shopper's address arrives inside Stripe Checkout, after
817
+ // this session exists. When the service does not answer, the store's
818
+ // rate stands and the order says so.
819
+ const cartEngineLines = cart.lines.map((line, index)=>{
820
+ var _params_get;
821
+ const unitCents = Number((_params_get = params.get(`line_items[${index}][price_data][unit_amount]`)) != null ? _params_get : NaN);
822
+ return {
823
+ index,
824
+ line,
825
+ amountCents: Number.isFinite(unitCents) ? unitCents * line.quantity : 0
826
+ };
827
+ }).filter((entry)=>entry.amountCents > 0);
828
+ const cartEngineDiscounts = allocateCentsByWeight(Math.max(0, itemsCents - chargedItemsCents), cartEngineLines.map((entry)=>entry.amountCents));
829
+ const cartEngineNet = cartEngineLines.map((entry, position)=>entry.amountCents - cartEngineDiscounts[position]);
830
+ const engineTax = chargedItemsCents > 0 ? await quoteSaleTaxWithEngine({
831
+ hostId,
832
+ settings: (_storeSettings_get = storeSettings.get('tax')) != null ? _storeSettings_get : {},
833
+ channel: 'online',
834
+ lines: cartEngineLines.map((entry, position)=>{
835
+ var _productsById_get;
836
+ return _extends({
837
+ id: String(entry.index),
838
+ productId: entry.line.productId
839
+ }, entry.line.variantId ? {
840
+ variantId: entry.line.variantId
841
+ } : {}, {
842
+ quantity: entry.line.quantity,
843
+ amountCents: cartEngineNet[position]
844
+ }, ((_productsById_get = productsById.get(entry.line.productId)) == null ? void 0 : _productsById_get.taxExempt) ? {
845
+ exempt: true
846
+ } : {});
847
+ }),
848
+ customerEmail: email || null
849
+ }) : {
850
+ quote: null,
851
+ stamp: null
852
+ };
724
853
  if (chargedItemsCents > 0) {
725
- var _storeSettings_get1, _cartTaxSettings_origin;
854
+ var _storeSettings_get2, _cartTaxSettings_origin;
726
855
  const shippingCeilingCents = shippingOptions.reduce((most, option)=>{
727
856
  var _option_amountCents;
728
857
  return Math.max(most, Math.max(0, Number((_option_amountCents = option.amountCents) != null ? _option_amountCents : 0)));
729
858
  }, 0);
730
- const cartTaxSettings = (_storeSettings_get1 = storeSettings.get('tax')) != null ? _storeSettings_get1 : {};
859
+ const cartTaxSettings = (_storeSettings_get2 = storeSettings.get('tax')) != null ? _storeSettings_get2 : {};
731
860
  const manualRate = cartTaxSettings.mode === 'manual' && !cartTaxSettings.pricesIncludeTax ? CommerceModel.resolveTaxRate(cartTaxSettings, (_cartTaxSettings_origin = cartTaxSettings.origin) != null ? _cartTaxSettings_origin : {}) : null;
732
861
  const manualTaxPct = manualRate && manualRate.pct > 0 ? manualRate.pct : 0;
733
- const chargeCents = chargedItemsCents + Math.round(chargedItemsCents * manualTaxPct / 100) + shippingCeilingCents;
862
+ const chargeCents = chargedItemsCents + // Stripe's cost on the extras is a real cost of this charge, passed
863
+ // through at cost like the rest; no take is added on them (AGL-3635).
864
+ extrasCents + (engineTax.quote ? engineTax.quote.taxCents : Math.round(chargedItemsCents * manualTaxPct / 100)) + shippingCeilingCents;
734
865
  feeCents = Math.min(chargeCents, feeCents + Aglyn.saleProcessingCostCents(chargeCents));
735
866
  }
736
867
  // THE CONNECT SPLIT IS EMITTED BELOW, NOT HERE (AGL-1956). It used to be
@@ -768,7 +899,7 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
768
899
  // `automatic_tax.enabled` stays false on a manual sale, so
769
900
  // `storefront-tax.ts` still classifies it `manual` and it is never summed
770
901
  // into the Aglyn-liable figure (AGL-1904).
771
- const taxSettings = (_storeSettings_get = storeSettings.get('tax')) != null ? _storeSettings_get : {};
902
+ const taxSettings = (_storeSettings_get1 = storeSettings.get('tax')) != null ? _storeSettings_get1 : {};
772
903
  // AGL-1999: an unset tax mode is NOT a decision, and it must not sell.
773
904
  // `mode` was `undefined` for every store whose owner never opened the
774
905
  // Taxes card — the default state of every new storefront — and each
@@ -808,6 +939,44 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
808
939
  }
809
940
  if (taxDecision.kind === 'stripe-automatic') {
810
941
  params.set('automatic_tax[enabled]', 'true');
942
+ } else if (engineTax.quote) {
943
+ // The tax service's cents per line as one rate per line (AGL-3631),
944
+ // applied after the coupon exactly like the store's own rate below. One
945
+ // Tax Rate per distinct percentage, cached under the host like the
946
+ // store's, so a store's usual rates are minted once.
947
+ const engineAnswer = new Map(engineTax.quote.lines.map((line)=>[
948
+ line.id,
949
+ line.taxCents
950
+ ]));
951
+ const percentages = engineLineTaxPercentages(cartEngineLines.map((entry, position)=>{
952
+ var _engineAnswer_get;
953
+ return {
954
+ amountCents: cartEngineNet[position],
955
+ taxCents: (_engineAnswer_get = engineAnswer.get(String(entry.index))) != null ? _engineAnswer_get : 0
956
+ };
957
+ }), 0);
958
+ for(let position = 0; position < cartEngineLines.length; position++){
959
+ const pct = percentages[position];
960
+ if (pct === null) continue;
961
+ const taxRateId = await resolveManualTaxRateId({
962
+ hostRef,
963
+ taxPct: pct,
964
+ taxLabel: 'Sales tax',
965
+ headers: stripeKeyHeader(`tax-rate-engine-${Math.round(pct * 10000)}`)
966
+ });
967
+ if (!taxRateId) {
968
+ // The same visible refusal as the store's own rate: never an
969
+ // untaxed session.
970
+ await releaseGiftCardHold();
971
+ await releasePromotionHolds();
972
+ await releaseStock();
973
+ await claim.release();
974
+ return res.status(502).json({
975
+ error: 'Checkout failed'
976
+ });
977
+ }
978
+ params.set(`line_items[${cartEngineLines[position].index}][tax_rates][0]`, taxRateId);
979
+ }
811
980
  } else if (taxSettings.mode === 'manual' && !taxSettings.pricesIncludeTax) {
812
981
  var _taxSettings_origin;
813
982
  // Origin-based, exactly as buy-now resolves it: the cart collects the
@@ -858,12 +1027,13 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
858
1027
  // The site's own page, never a header's say-so (AGL-3363): a caller
859
1028
  // writes `Referer` and `Host`, and this URL is where Stripe sends the
860
1029
  // payer — and what the receipt's download links are built from.
1030
+ const returnSite = await readSiteReturnHost(hostRef);
861
1031
  const backUrl = siteReturnUrl({
862
1032
  candidates: [
863
1033
  String((_req_headers_referer = req.headers.referer) != null ? _req_headers_referer : ''),
864
1034
  `https://${req.headers.host}`
865
1035
  ],
866
- site: await readSiteReturnHost(hostRef),
1036
+ site: returnSite,
867
1037
  requestHost: String((_req_headers_host = req.headers.host) != null ? _req_headers_host : '')
868
1038
  });
869
1039
  const separator = backUrl.includes('?') ? '&' : '?';
@@ -891,10 +1061,19 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
891
1061
  accountId: String(accountId),
892
1062
  feeCents,
893
1063
  taxOwner: cartTaxOwner,
894
- merchantGoodsCents: chargedItemsCents,
1064
+ // The extras are the merchant's to keep and remit (AGL-3635).
1065
+ merchantGoodsCents: chargedItemsCents + extrasCents,
895
1066
  shippingFloorCents: cartShippingFloorCents
896
1067
  })).forEach(([key, value])=>params.set(key, value));
897
1068
  params.set('metadata[type]', 'commerce-cart');
1069
+ for (const [key, value] of Object.entries(taxEngineSessionMetadata(engineTax.stamp))){
1070
+ params.set(key, value);
1071
+ }
1072
+ // The postal code live carrier rates were quoted for (AGL-3612), so the
1073
+ // order can show it beside the address the shopper then entered.
1074
+ if (shippingPlan.quotedPostalCode) {
1075
+ params.set('metadata[shippingQuotePostalCode]', shippingPlan.quotedPostalCode);
1076
+ }
898
1077
  params.set('metadata[hostId]', hostId);
899
1078
  params.set('metadata[cartId]', cartId);
900
1079
  params.set('metadata[feeCents]', String(Math.max(0, feeCents)));
@@ -905,7 +1084,7 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
905
1084
  if (cartTaxOwner === 'platform') {
906
1085
  params.set('metadata[transferCents]', String(CommerceModel.platformLiableTransferCents({
907
1086
  feeCents,
908
- merchantGoodsCents: chargedItemsCents,
1087
+ merchantGoodsCents: chargedItemsCents + extrasCents,
909
1088
  shippingFloorCents: cartShippingFloorCents
910
1089
  })));
911
1090
  params.set('metadata[transferShippingCents]', String(cartShippingFloorCents));
@@ -923,6 +1102,10 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
923
1102
  // the SESSION is what bounds it; see `CHECKOUT_SESSION_TTL_MS` for why the
924
1103
  // figure is 31 minutes and not Stripe's advertised 30-minute floor.
925
1104
  params.set('expires_at', String(Math.floor((Date.now() + CommerceModel.CHECKOUT_SESSION_TTL_MS) / 1000)));
1105
+ // The payment methods the merchant switched off (AGL-3629): exclusions
1106
+ // only, on the hosted page and the in-page one alike.
1107
+ const paymentMethodControls = CommerceModel.resolveStorefrontPaymentMethodControls(CommerceModel.normalizeStorefrontPaymentMethodSettings(storeSettings.get('paymentMethods')));
1108
+ CommerceModel.appendStorefrontPaymentMethodParams(params, paymentMethodControls);
926
1109
  // The Payment Element (AGL-1944), LAST and touching nothing above it. Every
927
1110
  // figure the shopper is charged — line prices, the discount coupon, the tax
928
1111
  // construction, the shipping rates, the fee — was decided before this line
@@ -933,12 +1116,19 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
933
1116
  if (nativeMode.native) {
934
1117
  applyNativeCheckoutParams(params, `${backUrl}${separator}order=success&session_id={CHECKOUT_SESSION_ID}`);
935
1118
  }
1119
+ // Apple Pay shows on a registered domain only (AGL-3629): registered
1120
+ // beside the session create, inside a budget, never failing the sale.
1121
+ const domainRegistration = nativeMode.native ? ensureCheckoutDomain({
1122
+ pageUrl: backUrl,
1123
+ site: returnSite,
1124
+ hostId
1125
+ }).catch(()=>null) : Promise.resolve(null);
936
1126
  const response = await fetch('https://api.stripe.com/v1/checkout/sessions', {
937
1127
  method: 'POST',
938
1128
  headers: _extends({
939
1129
  Authorization: `Bearer ${process.env.STRIPE_SECRET_KEY}`,
940
1130
  'Content-Type': 'application/x-www-form-urlencoded'
941
- }, stripeKeyHeader('session'), nativeCheckoutStripeHeaders(nativeMode)),
1131
+ }, stripeKeyHeader(`${engineTax.stamp ? `session-tax-${(_ref3 = (_engineTax_quote = engineTax.quote) == null ? void 0 : _engineTax_quote.taxCents) != null ? _ref3 : 'own'}-${engineTax.stamp.status}` : 'session'}${extrasCents > 0 ? `-x${extrasCents}` : ''}`), nativeCheckoutStripeHeaders(nativeMode)),
942
1132
  body: params.toString()
943
1133
  });
944
1134
  const session = await response.json();
@@ -946,7 +1136,8 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
946
1136
  // so it moves with the mode (AGL-1944) — otherwise every successful native
947
1137
  // session reads as a Stripe failure: a 502 at the shopper, a released claim,
948
1138
  // and a real Checkout Session left open on the merchant's account.
949
- const payload = response.ok ? readCheckoutSessionPayload(session, nativeMode) : null;
1139
+ await domainRegistration;
1140
+ const payload = response.ok ? readCheckoutSessionPayload(session, nativeMode, paymentMethodControls.wallets) : null;
950
1141
  if (!payload) {
951
1142
  console.error('Stripe cart checkout error', session.error);
952
1143
  // The checkout did not happen — hand the key back so one flaky moment
@@ -992,6 +1183,19 @@ import { applyNativeCheckoutParams, nativeCheckoutStripeHeaders, readCheckoutSes
992
1183
  }),
993
1184
  createdAtMs: Date.now()
994
1185
  })).catch(()=>undefined);
1186
+ // The fact a merchant's own email platform starts an abandoned-cart flow
1187
+ // from (AGL-3639); nothing subscribes unless a site connected one.
1188
+ if (email) {
1189
+ await raiseCheckoutStarted(String(hostId), {
1190
+ id: String(session.id),
1191
+ email,
1192
+ marketingOptIn,
1193
+ currency: 'usd',
1194
+ itemsCents,
1195
+ resumeUrl: backUrl != null ? backUrl : null,
1196
+ items: startedItems
1197
+ });
1198
+ }
995
1199
  await claim.record(200, payload);
996
1200
  return res.status(200).json(payload);
997
1201
  } catch (error) {