@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,376 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ /*==========================================
17
+ * AN IN-MEMORY ADMIN FIRESTORE, for the register operations' specs
18
+ * (AGL-3609) — the CRM's transfer double (AGL-3527), kept beside the
19
+ * commerce specs because one plugin's testing helpers are not another's
20
+ * to import.
21
+ *
22
+ * Documents by path; the operators the CRM's transfer hooks and the job
23
+ * engine issue — `where` (equality, ranges, `in`, the array operators),
24
+ * `orderBy` (a field or the document id), `limit`, `startAfter`, `count`,
25
+ * `getAll`, batches and read-then-write transactions — and the write
26
+ * sentinels (`delete`, `serverTimestamp`, `arrayUnion`, `arrayRemove`,
27
+ * `increment`) applied along dotted paths, as Firestore applies them.
28
+ *
29
+ * A spec mocks `firebase-admin/firestore` with {@link memoryFirestoreModule}
30
+ * so the code under test builds its sentinels from the same table.
31
+ *=========================================*/ import { _ as _extends } from "@swc/helpers/_/_extends";
32
+ const DOCUMENT_ID = {
33
+ __documentId: true
34
+ };
35
+ /** What a spec hands `jest.mock('firebase-admin/firestore', …)`. */ export const memoryFirestoreModule = {
36
+ __esModule: true,
37
+ FieldValue: {
38
+ delete: ()=>({
39
+ __sentinel: 'delete'
40
+ }),
41
+ serverTimestamp: ()=>({
42
+ __sentinel: 'serverTimestamp'
43
+ }),
44
+ arrayUnion: (...values)=>({
45
+ __sentinel: 'arrayUnion',
46
+ values
47
+ }),
48
+ arrayRemove: (...values)=>({
49
+ __sentinel: 'arrayRemove',
50
+ values
51
+ }),
52
+ increment: (by)=>({
53
+ __sentinel: 'increment',
54
+ by
55
+ })
56
+ },
57
+ FieldPath: {
58
+ documentId: ()=>DOCUMENT_ID
59
+ },
60
+ Timestamp: {
61
+ fromDate: (date)=>date.getTime()
62
+ }
63
+ };
64
+ const isSentinel = (value)=>Boolean(value && typeof value === 'object' && '__sentinel' in value);
65
+ const copy = (value)=>value === undefined ? value : JSON.parse(JSON.stringify(value));
66
+ function readPath(data, path) {
67
+ return path.split('.').reduce((node, key)=>node == null ? void 0 : node[key], data);
68
+ }
69
+ /** A fresh in-memory Firestore. */ export function memoryFirestore(clock = ()=>1800000000000) {
70
+ const docs = new Map();
71
+ /** A write counter per path, for the transaction's concurrency check. */ const versions = new Map();
72
+ const bump = (path)=>{
73
+ var _versions_get;
74
+ return versions.set(path, ((_versions_get = versions.get(path)) != null ? _versions_get : 0) + 1);
75
+ };
76
+ const resolve = (value, current)=>{
77
+ if (!isSentinel(value)) return Array.isArray(value) || value && typeof value === 'object' ? copy(value) : value;
78
+ switch(value.__sentinel){
79
+ case 'serverTimestamp':
80
+ return clock();
81
+ case 'arrayUnion':
82
+ var _value_values;
83
+ return [
84
+ ...new Set([
85
+ ...Array.isArray(current) ? current : [],
86
+ ...(_value_values = value.values) != null ? _value_values : []
87
+ ])
88
+ ];
89
+ case 'arrayRemove':
90
+ return (Array.isArray(current) ? current : []).filter((entry)=>{
91
+ var _value_values;
92
+ return !((_value_values = value.values) != null ? _value_values : []).includes(entry);
93
+ });
94
+ case 'increment':
95
+ var _value_by;
96
+ return Number(current != null ? current : 0) + Number((_value_by = value.by) != null ? _value_by : 0);
97
+ default:
98
+ return undefined;
99
+ }
100
+ };
101
+ /** Writes `value` at a dotted path, a `delete` sentinel removing the leaf. */ const writePath = (target, path, value)=>{
102
+ const keys = path.split('.');
103
+ let node = target;
104
+ for (const key of keys.slice(0, -1)){
105
+ if (!node[key] || typeof node[key] !== 'object') node[key] = {};
106
+ node = node[key];
107
+ }
108
+ const leaf = keys[keys.length - 1];
109
+ if (isSentinel(value) && value.__sentinel === 'delete') delete node[leaf];
110
+ else node[leaf] = resolve(value, node[leaf]);
111
+ };
112
+ /** Every top-level key of `data` with sentinels resolved (a `set`). */ const settle = (data, base = {})=>{
113
+ const next = copy(base);
114
+ for (const [key, value] of Object.entries(data)){
115
+ if (value === undefined) continue;
116
+ if (isSentinel(value)) writePath(next, key, value);
117
+ else if (value && typeof value === 'object' && !Array.isArray(value) && base[key] && typeof base[key] === 'object') {
118
+ next[key] = settle(value, base[key]);
119
+ } else next[key] = resolve(value, next[key]);
120
+ }
121
+ return next;
122
+ };
123
+ const snapshot = (path)=>{
124
+ const data = docs.get(path);
125
+ return {
126
+ id: path.slice(path.lastIndexOf('/') + 1),
127
+ ref: docRef(path),
128
+ exists: data !== undefined,
129
+ data: ()=>copy(data),
130
+ get: (field)=>copy(readPath(data, field))
131
+ };
132
+ };
133
+ const docRef = (path)=>({
134
+ id: path.slice(path.lastIndexOf('/') + 1),
135
+ path,
136
+ get firestore () {
137
+ return firestore;
138
+ },
139
+ get parent () {
140
+ return collectionRef(path.slice(0, path.lastIndexOf('/')));
141
+ },
142
+ collection: (name)=>collectionRef(`${path}/${name}`),
143
+ get: async ()=>snapshot(path),
144
+ set: async (data, options)=>{
145
+ var _docs_get;
146
+ docs.set(path, settle(data, (options == null ? void 0 : options.merge) ? (_docs_get = docs.get(path)) != null ? _docs_get : {} : {}));
147
+ bump(path);
148
+ },
149
+ create: async (data)=>{
150
+ if (docs.has(path)) throw Object.assign(new Error(`ALREADY_EXISTS: ${path}`), {
151
+ code: 6
152
+ });
153
+ docs.set(path, settle(data));
154
+ bump(path);
155
+ },
156
+ update: async (...args)=>{
157
+ const current = docs.get(path);
158
+ if (!current) throw Object.assign(new Error(`NOT_FOUND: ${path}`), {
159
+ code: 5
160
+ });
161
+ const patch = typeof args[0] === 'string' ? Object.fromEntries(Array.from({
162
+ length: args.length / 2
163
+ }, (_unused, at)=>[
164
+ String(args[at * 2]),
165
+ args[at * 2 + 1]
166
+ ])) : args[0];
167
+ const next = copy(current);
168
+ for (const [key, value] of Object.entries(patch))writePath(next, key, value);
169
+ docs.set(path, next);
170
+ bump(path);
171
+ },
172
+ delete: async ()=>{
173
+ docs.delete(path);
174
+ bump(path);
175
+ }
176
+ });
177
+ const fieldOf = (data, id, field)=>field === DOCUMENT_ID ? id : readPath(data, field);
178
+ const compare = (a, b)=>{
179
+ if (a === b) return 0;
180
+ if (a === undefined || a === null) return -1;
181
+ if (b === undefined || b === null) return 1;
182
+ return a < b ? -1 : 1;
183
+ };
184
+ const matches = (data, id, filter)=>{
185
+ const value = fieldOf(data, id, filter.field);
186
+ const wanted = filter.value;
187
+ switch(filter.op){
188
+ case '==':
189
+ return JSON.stringify(value) === JSON.stringify(wanted);
190
+ case '!=':
191
+ return value !== undefined && JSON.stringify(value) !== JSON.stringify(wanted);
192
+ case 'in':
193
+ return wanted.some((entry)=>JSON.stringify(entry) === JSON.stringify(value));
194
+ case 'not-in':
195
+ return value !== undefined && !wanted.some((entry)=>JSON.stringify(entry) === JSON.stringify(value));
196
+ case 'array-contains':
197
+ return Array.isArray(value) && value.includes(wanted);
198
+ case 'array-contains-any':
199
+ return Array.isArray(value) && value.some((entry)=>wanted.includes(entry));
200
+ case '<':
201
+ return value !== undefined && compare(value, wanted) < 0;
202
+ case '<=':
203
+ return value !== undefined && compare(value, wanted) <= 0;
204
+ case '>':
205
+ return value !== undefined && compare(value, wanted) > 0;
206
+ case '>=':
207
+ return value !== undefined && compare(value, wanted) >= 0;
208
+ default:
209
+ throw new Error(`memory firestore: no operator ${filter.op}`);
210
+ }
211
+ };
212
+ const run = (state)=>{
213
+ const prefix = `${state.path}/`;
214
+ let found = [
215
+ ...docs.entries()
216
+ ].filter(([path])=>path.startsWith(prefix) && !path.slice(prefix.length).includes('/')).map(([path, data])=>({
217
+ path,
218
+ id: path.slice(prefix.length),
219
+ data
220
+ })).filter((entry)=>state.filters.every((filter)=>matches(entry.data, entry.id, filter)));
221
+ const order = state.order.length ? state.order : [
222
+ {
223
+ field: DOCUMENT_ID,
224
+ direction: 'asc'
225
+ }
226
+ ];
227
+ for (const { field } of order){
228
+ if (field !== DOCUMENT_ID) found = found.filter((entry)=>readPath(entry.data, field) !== undefined);
229
+ }
230
+ found.sort((a, b)=>{
231
+ for (const { field, direction } of [
232
+ ...order,
233
+ {
234
+ field: DOCUMENT_ID,
235
+ direction: 'asc'
236
+ }
237
+ ]){
238
+ const result = compare(fieldOf(a.data, a.id, field), fieldOf(b.data, b.id, field));
239
+ if (result) return direction === 'desc' ? -result : result;
240
+ }
241
+ return 0;
242
+ });
243
+ if (state.after) {
244
+ const at = found.findIndex((entry)=>entry.id === state.after.id);
245
+ found = at >= 0 ? found.slice(at + 1) : found;
246
+ }
247
+ if (state.limit !== undefined) found = found.slice(0, state.limit);
248
+ return found.map((entry)=>snapshot(entry.path));
249
+ };
250
+ const query = (state)=>({
251
+ where: (field, op, value)=>query(_extends({}, state, {
252
+ filters: [
253
+ ...state.filters,
254
+ {
255
+ field,
256
+ op,
257
+ value
258
+ }
259
+ ]
260
+ })),
261
+ orderBy: (field, direction = 'asc')=>query(_extends({}, state, {
262
+ order: [
263
+ ...state.order,
264
+ {
265
+ field,
266
+ direction
267
+ }
268
+ ]
269
+ })),
270
+ limit: (count)=>query(_extends({}, state, {
271
+ limit: count
272
+ })),
273
+ startAfter: (after)=>query(_extends({}, state, {
274
+ after
275
+ })),
276
+ get: async ()=>{
277
+ const found = run(state);
278
+ return {
279
+ docs: found,
280
+ empty: !found.length,
281
+ size: found.length
282
+ };
283
+ },
284
+ count: ()=>({
285
+ get: async ()=>({
286
+ data: ()=>({
287
+ count: run(_extends({}, state, {
288
+ limit: undefined
289
+ })).length
290
+ })
291
+ })
292
+ })
293
+ });
294
+ const collectionRef = (path)=>_extends({
295
+ id: path.slice(path.lastIndexOf('/') + 1),
296
+ path,
297
+ get parent () {
298
+ const at = path.lastIndexOf('/');
299
+ return at > 0 ? docRef(path.slice(0, at)) : null;
300
+ },
301
+ doc: (id)=>docRef(`${path}/${id != null ? id : `auto${Math.random().toString(36).slice(2, 12)}`}`)
302
+ }, query({
303
+ path,
304
+ filters: [],
305
+ order: []
306
+ }));
307
+ const firestore = {
308
+ collection: (name)=>collectionRef(name),
309
+ getAll: async (...refs)=>refs.map((ref)=>snapshot(ref.path)),
310
+ batch: ()=>{
311
+ const staged = [];
312
+ const batch = {
313
+ set: (ref, data, options)=>(staged.push(()=>ref.set(data, options)), batch),
314
+ create: (ref, data)=>(staged.push(()=>ref.create(data)), batch),
315
+ update: (ref, ...args)=>(staged.push(()=>ref.update(...args)), batch),
316
+ delete: (ref)=>(staged.push(()=>ref.delete()), batch),
317
+ commit: async ()=>{
318
+ for (const write of staged)await write();
319
+ }
320
+ };
321
+ return batch;
322
+ },
323
+ /**
324
+ * Read-then-write with OPTIMISTIC CONCURRENCY, as the server SDK commits
325
+ * one: every document the body read is versioned, and a commit that finds
326
+ * one of them written since is thrown away and the body run again. Two
327
+ * transactions racing on one document therefore end the way they do in
328
+ * Firestore — the second re-reads the first one's write — which is the
329
+ * property a one-open-shift or a lockout counter rests on.
330
+ */ runTransaction: async (body)=>{
331
+ for(let attempt = 0; attempt < 10; attempt += 1){
332
+ const staged = [];
333
+ const seen = new Map();
334
+ const transaction = {
335
+ get: async (target)=>{
336
+ const result = await target.get();
337
+ if (typeof target.path === 'string' && !('docs' in result)) {
338
+ var _versions_get;
339
+ seen.set(target.path, (_versions_get = versions.get(target.path)) != null ? _versions_get : 0);
340
+ } else if (result == null ? void 0 : result.docs) {
341
+ var _versions_get1;
342
+ for (const doc of result.docs)seen.set(doc.ref.path, (_versions_get1 = versions.get(doc.ref.path)) != null ? _versions_get1 : 0);
343
+ }
344
+ return result;
345
+ },
346
+ set: (ref, data, options)=>(staged.push(()=>ref.set(data, options)), transaction),
347
+ create: (ref, data)=>(staged.push(()=>ref.create(data)), transaction),
348
+ update: (ref, ...args)=>(staged.push(()=>ref.update(...args)), transaction),
349
+ delete: (ref)=>(staged.push(()=>ref.delete()), transaction)
350
+ };
351
+ const result = await body(transaction);
352
+ const stale = [
353
+ ...seen
354
+ ].some(([path, version])=>{
355
+ var _versions_get;
356
+ return ((_versions_get = versions.get(path)) != null ? _versions_get : 0) !== version;
357
+ });
358
+ if (stale) continue;
359
+ // Every write starts before any is awaited, so the commit is atomic
360
+ // against another transaction checking its own reads.
361
+ await Promise.all(staged.map((write)=>write()));
362
+ return result;
363
+ }
364
+ throw new Error('memory firestore: transaction contended too many times');
365
+ }
366
+ };
367
+ return {
368
+ docs,
369
+ now: clock,
370
+ firestore: firestore,
371
+ seed: (path, data)=>docs.set(path, copy(data)),
372
+ read: (path)=>copy(docs.get(path))
373
+ };
374
+ }
375
+
376
+ //# sourceMappingURL=pos-ops-memory-firestore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/commerce/src/lib/testing/pos-ops-memory-firestore.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*==========================================\n * AN IN-MEMORY ADMIN FIRESTORE, for the register operations' specs\n * (AGL-3609) — the CRM's transfer double (AGL-3527), kept beside the\n * commerce specs because one plugin's testing helpers are not another's\n * to import.\n *\n * Documents by path; the operators the CRM's transfer hooks and the job\n * engine issue — `where` (equality, ranges, `in`, the array operators),\n * `orderBy` (a field or the document id), `limit`, `startAfter`, `count`,\n * `getAll`, batches and read-then-write transactions — and the write\n * sentinels (`delete`, `serverTimestamp`, `arrayUnion`, `arrayRemove`,\n * `increment`) applied along dotted paths, as Firestore applies them.\n *\n * A spec mocks `firebase-admin/firestore` with {@link memoryFirestoreModule}\n * so the code under test builds its sentinels from the same table.\n *=========================================*/\n\ntype Data = Record<string, unknown>\n\ninterface Sentinel {\n __sentinel: 'delete' | 'serverTimestamp' | 'arrayUnion' | 'arrayRemove' | 'increment'\n values?: unknown[]\n by?: number\n}\n\nconst DOCUMENT_ID = { __documentId: true }\n\n/** What a spec hands `jest.mock('firebase-admin/firestore', …)`. */\nexport const memoryFirestoreModule = {\n __esModule: true,\n FieldValue: {\n delete: (): Sentinel => ({ __sentinel: 'delete' }),\n serverTimestamp: (): Sentinel => ({ __sentinel: 'serverTimestamp' }),\n arrayUnion: (...values: unknown[]): Sentinel => ({ __sentinel: 'arrayUnion', values }),\n arrayRemove: (...values: unknown[]): Sentinel => ({ __sentinel: 'arrayRemove', values }),\n increment: (by: number): Sentinel => ({ __sentinel: 'increment', by }),\n },\n FieldPath: { documentId: () => DOCUMENT_ID },\n Timestamp: { fromDate: (date: Date) => date.getTime() },\n}\n\nconst isSentinel = (value: unknown): value is Sentinel =>\n Boolean(value && typeof value === 'object' && '__sentinel' in (value as object))\n\nconst copy = <T>(value: T): T => (value === undefined ? value : (JSON.parse(JSON.stringify(value)) as T))\n\nfunction readPath(data: Data | undefined, path: string): unknown {\n return path.split('.').reduce<unknown>((node, key) => (node as Data | undefined)?.[key], data)\n}\n\nexport interface MemoryFirestore {\n /** Every document, by full path. */\n docs: Map<string, Data>\n /** The clock `serverTimestamp` writes. */\n now: () => number\n firestore: FirebaseFirestore.Firestore\n /** Seeds one document at its full path. */\n seed: (path: string, data: Data) => void\n /** A document's data, or `undefined`. */\n read: (path: string) => Data | undefined\n}\n\n/** A fresh in-memory Firestore. */\nexport function memoryFirestore(clock: () => number = () => 1_800_000_000_000): MemoryFirestore {\n const docs = new Map<string, Data>()\n /** A write counter per path, for the transaction's concurrency check. */\n const versions = new Map<string, number>()\n const bump = (path: string) => versions.set(path, (versions.get(path) ?? 0) + 1)\n\n const resolve = (value: unknown, current: unknown): unknown => {\n if (!isSentinel(value)) return Array.isArray(value) || (value && typeof value === 'object') ? copy(value) : value\n switch (value.__sentinel) {\n case 'serverTimestamp':\n return clock()\n case 'arrayUnion':\n return [...new Set([...(Array.isArray(current) ? current : []), ...(value.values ?? [])])]\n case 'arrayRemove':\n return (Array.isArray(current) ? current : []).filter((entry) => !(value.values ?? []).includes(entry))\n case 'increment':\n return Number(current ?? 0) + Number(value.by ?? 0)\n default:\n return undefined\n }\n }\n\n /** Writes `value` at a dotted path, a `delete` sentinel removing the leaf. */\n const writePath = (target: Data, path: string, value: unknown): void => {\n const keys = path.split('.')\n let node = target\n for (const key of keys.slice(0, -1)) {\n if (!node[key] || typeof node[key] !== 'object') node[key] = {}\n node = node[key] as Data\n }\n const leaf = keys[keys.length - 1] as string\n if (isSentinel(value) && value.__sentinel === 'delete') delete node[leaf]\n else node[leaf] = resolve(value, node[leaf])\n }\n\n /** Every top-level key of `data` with sentinels resolved (a `set`). */\n const settle = (data: Data, base: Data = {}): Data => {\n const next = copy(base)\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) continue\n if (isSentinel(value)) writePath(next, key, value)\n else if (value && typeof value === 'object' && !Array.isArray(value) && base[key] && typeof base[key] === 'object') {\n next[key] = settle(value as Data, base[key] as Data)\n } else next[key] = resolve(value, next[key])\n }\n return next\n }\n\n const snapshot = (path: string): any => {\n const data = docs.get(path)\n return {\n id: path.slice(path.lastIndexOf('/') + 1),\n ref: docRef(path),\n exists: data !== undefined,\n data: () => copy(data),\n get: (field: string) => copy(readPath(data, field)),\n }\n }\n\n const docRef = (path: string): any => ({\n id: path.slice(path.lastIndexOf('/') + 1),\n path,\n get firestore() {\n return firestore\n },\n get parent() {\n return collectionRef(path.slice(0, path.lastIndexOf('/')))\n },\n collection: (name: string) => collectionRef(`${path}/${name}`),\n get: async () => snapshot(path),\n set: async (data: Data, options?: { merge?: boolean }) => {\n docs.set(path, settle(data, options?.merge ? (docs.get(path) ?? {}) : {}))\n bump(path)\n },\n create: async (data: Data) => {\n if (docs.has(path)) throw Object.assign(new Error(`ALREADY_EXISTS: ${path}`), { code: 6 })\n docs.set(path, settle(data))\n bump(path)\n },\n update: async (...args: unknown[]) => {\n const current = docs.get(path)\n if (!current) throw Object.assign(new Error(`NOT_FOUND: ${path}`), { code: 5 })\n const patch: Data =\n typeof args[0] === 'string'\n ? Object.fromEntries(\n Array.from({ length: args.length / 2 }, (_unused, at) => [String(args[at * 2]), args[at * 2 + 1]]),\n )\n : (args[0] as Data)\n const next = copy(current)\n for (const [key, value] of Object.entries(patch)) writePath(next, key, value)\n docs.set(path, next)\n bump(path)\n },\n delete: async () => {\n docs.delete(path)\n bump(path)\n },\n })\n\n interface QueryState {\n path: string\n filters: Array<{ field: string | typeof DOCUMENT_ID; op: string; value: unknown }>\n order: Array<{ field: string | typeof DOCUMENT_ID; direction: 'asc' | 'desc' }>\n limit?: number\n after?: any\n }\n\n const fieldOf = (data: Data | undefined, id: string, field: string | typeof DOCUMENT_ID) =>\n field === DOCUMENT_ID ? id : readPath(data, field as string)\n\n const compare = (a: unknown, b: unknown): number => {\n if (a === b) return 0\n if (a === undefined || a === null) return -1\n if (b === undefined || b === null) return 1\n return (a as number) < (b as number) ? -1 : 1\n }\n\n const matches = (data: Data, id: string, filter: QueryState['filters'][number]): boolean => {\n const value = fieldOf(data, id, filter.field)\n const wanted = filter.value\n switch (filter.op) {\n case '==':\n return JSON.stringify(value) === JSON.stringify(wanted)\n case '!=':\n return value !== undefined && JSON.stringify(value) !== JSON.stringify(wanted)\n case 'in':\n return (wanted as unknown[]).some((entry) => JSON.stringify(entry) === JSON.stringify(value))\n case 'not-in':\n return value !== undefined && !(wanted as unknown[]).some((entry) => JSON.stringify(entry) === JSON.stringify(value))\n case 'array-contains':\n return Array.isArray(value) && value.includes(wanted)\n case 'array-contains-any':\n return Array.isArray(value) && value.some((entry) => (wanted as unknown[]).includes(entry))\n case '<':\n return value !== undefined && compare(value, wanted) < 0\n case '<=':\n return value !== undefined && compare(value, wanted) <= 0\n case '>':\n return value !== undefined && compare(value, wanted) > 0\n case '>=':\n return value !== undefined && compare(value, wanted) >= 0\n default:\n throw new Error(`memory firestore: no operator ${filter.op}`)\n }\n }\n\n const run = (state: QueryState): any[] => {\n const prefix = `${state.path}/`\n let found = [...docs.entries()]\n .filter(([path]) => path.startsWith(prefix) && !path.slice(prefix.length).includes('/'))\n .map(([path, data]) => ({ path, id: path.slice(prefix.length), data }))\n .filter((entry) => state.filters.every((filter) => matches(entry.data, entry.id, filter)))\n const order = state.order.length ? state.order : [{ field: DOCUMENT_ID, direction: 'asc' as const }]\n for (const { field } of order) {\n if (field !== DOCUMENT_ID) found = found.filter((entry) => readPath(entry.data, field as string) !== undefined)\n }\n found.sort((a, b) => {\n for (const { field, direction } of [...order, { field: DOCUMENT_ID, direction: 'asc' as const }]) {\n const result = compare(fieldOf(a.data, a.id, field), fieldOf(b.data, b.id, field))\n if (result) return direction === 'desc' ? -result : result\n }\n return 0\n })\n if (state.after) {\n const at = found.findIndex((entry) => entry.id === state.after.id)\n found = at >= 0 ? found.slice(at + 1) : found\n }\n if (state.limit !== undefined) found = found.slice(0, state.limit)\n return found.map((entry) => snapshot(entry.path))\n }\n\n const query = (state: QueryState): any => ({\n where: (field: string | typeof DOCUMENT_ID, op: string, value: unknown) =>\n query({ ...state, filters: [...state.filters, { field, op, value }] }),\n orderBy: (field: string | typeof DOCUMENT_ID, direction: 'asc' | 'desc' = 'asc') =>\n query({ ...state, order: [...state.order, { field, direction }] }),\n limit: (count: number) => query({ ...state, limit: count }),\n startAfter: (after: any) => query({ ...state, after }),\n get: async () => {\n const found = run(state)\n return { docs: found, empty: !found.length, size: found.length }\n },\n count: () => ({\n get: async () => ({ data: () => ({ count: run({ ...state, limit: undefined }).length }) }),\n }),\n })\n\n const collectionRef = (path: string): any => ({\n id: path.slice(path.lastIndexOf('/') + 1),\n path,\n get parent() {\n const at = path.lastIndexOf('/')\n return at > 0 ? docRef(path.slice(0, at)) : null\n },\n doc: (id?: string) => docRef(`${path}/${id ?? `auto${Math.random().toString(36).slice(2, 12)}`}`),\n ...query({ path, filters: [], order: [] }),\n })\n\n const firestore = {\n collection: (name: string) => collectionRef(name),\n getAll: async (...refs: Array<{ path: string }>) => refs.map((ref) => snapshot(ref.path)),\n batch: () => {\n const staged: Array<() => Promise<void>> = []\n const batch = {\n set: (ref: any, data: Data, options?: { merge?: boolean }) => (staged.push(() => ref.set(data, options)), batch),\n create: (ref: any, data: Data) => (staged.push(() => ref.create(data)), batch),\n update: (ref: any, ...args: unknown[]) => (staged.push(() => ref.update(...args)), batch),\n delete: (ref: any) => (staged.push(() => ref.delete()), batch),\n commit: async () => {\n for (const write of staged) await write()\n },\n }\n return batch\n },\n /**\n * Read-then-write with OPTIMISTIC CONCURRENCY, as the server SDK commits\n * one: every document the body read is versioned, and a commit that finds\n * one of them written since is thrown away and the body run again. Two\n * transactions racing on one document therefore end the way they do in\n * Firestore — the second re-reads the first one's write — which is the\n * property a one-open-shift or a lockout counter rests on.\n */\n runTransaction: async <T>(body: (transaction: any) => Promise<T>): Promise<T> => {\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const staged: Array<() => Promise<void>> = []\n const seen = new Map<string, number>()\n const transaction = {\n get: async (target: any) => {\n const result = await target.get()\n if (typeof target.path === 'string' && !('docs' in result)) {\n seen.set(target.path, versions.get(target.path) ?? 0)\n } else if (result?.docs) {\n for (const doc of result.docs) seen.set(doc.ref.path, versions.get(doc.ref.path) ?? 0)\n }\n return result\n },\n set: (ref: any, data: Data, options?: { merge?: boolean }) => (staged.push(() => ref.set(data, options)), transaction),\n create: (ref: any, data: Data) => (staged.push(() => ref.create(data)), transaction),\n update: (ref: any, ...args: unknown[]) => (staged.push(() => ref.update(...args)), transaction),\n delete: (ref: any) => (staged.push(() => ref.delete()), transaction),\n }\n const result = await body(transaction)\n const stale = [...seen].some(([path, version]) => (versions.get(path) ?? 0) !== version)\n if (stale) continue\n // Every write starts before any is awaited, so the commit is atomic\n // against another transaction checking its own reads.\n await Promise.all(staged.map((write) => write()))\n return result\n }\n throw new Error('memory firestore: transaction contended too many times')\n },\n }\n\n return {\n docs,\n now: clock,\n firestore: firestore as unknown as FirebaseFirestore.Firestore,\n seed: (path, data) => docs.set(path, copy(data)),\n read: (path) => copy(docs.get(path)),\n }\n}\n"],"names":["DOCUMENT_ID","__documentId","memoryFirestoreModule","__esModule","FieldValue","delete","__sentinel","serverTimestamp","arrayUnion","values","arrayRemove","increment","by","FieldPath","documentId","Timestamp","fromDate","date","getTime","isSentinel","value","Boolean","copy","undefined","JSON","parse","stringify","readPath","data","path","split","reduce","node","key","memoryFirestore","clock","docs","Map","versions","bump","set","get","resolve","current","Array","isArray","Set","filter","entry","includes","Number","writePath","target","keys","slice","leaf","length","settle","base","next","Object","entries","snapshot","id","lastIndexOf","ref","docRef","exists","field","firestore","parent","collectionRef","collection","name","options","merge","create","has","assign","Error","code","update","args","patch","fromEntries","from","_unused","at","String","fieldOf","compare","a","b","matches","wanted","op","some","run","state","prefix","found","startsWith","map","filters","every","order","direction","sort","result","after","findIndex","limit","query","where","orderBy","count","startAfter","empty","size","doc","Math","random","toString","getAll","refs","batch","staged","push","commit","write","runTransaction","body","attempt","seen","transaction","stale","version","Promise","all","now","seed","read"],"mappings":"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"}
@@ -19,6 +19,7 @@ import type { PicklistSpec } from '@aglyn/aglyn/app-utils/picklists';
19
19
  import type { DiscountKind, HostDiscount } from '../model/commerce-discounts';
20
20
  import { type HostGiftCard } from '../model/commerce-gift-cards';
21
21
  import { type HostOrder } from '../model/commerce-orders';
22
+ import { type ProductWeights } from '../model/order-shipping-export';
22
23
  /** A planned row's changes, by field id. */
23
24
  export declare function rowChanges(row: PlannedTransferRow): Record<string, unknown>;
24
25
  /**
@@ -27,6 +28,15 @@ export declare function rowChanges(row: PlannedTransferRow): Record<string, unkn
27
28
  * mapped, and a file that only switches discounts off would be refused.
28
29
  */
29
30
  export declare function planWithCreateRequired(input: BuildTransferPlanInput, required: readonly string[]): TransferPlan;
31
+ /**
32
+ * What a label tool reads (AGL-3613): the ship-to address split into its
33
+ * parts, what is still to be packed and what it weighs — `orderShippingRecord`.
34
+ * The weight is the remaining units' recorded product weights; blank when
35
+ * no product records one, so the tool uses its default package instead.
36
+ */
37
+ export declare const ORDER_SHIPPING_FIELDS: readonly TransferField[];
38
+ /** The shipping fields' ids, which an export reads product weights for. */
39
+ export declare const ORDER_SHIPPING_FIELD_IDS: readonly string[];
30
40
  export declare const ORDER_TRANSFER_FIELDS: readonly TransferField[];
31
41
  export declare const ORDER_TRANSFER_GROUPS: {
32
42
  id: string;
@@ -47,7 +57,7 @@ export type StoredOrder = Partial<HostOrder> & {
47
57
  * field, and reading those first exported every one of them at $0.00. A
48
58
  * legacy row is named from `productNames`, never as "Product".
49
59
  */
50
- export declare function orderRecord(id: string, stored: StoredOrder, productNames?: Readonly<Record<string, string>>): Record<string, unknown>;
60
+ export declare function orderRecord(id: string, stored: StoredOrder, productNames?: Readonly<Record<string, string>>, weights?: ProductWeights): Record<string, unknown>;
51
61
  export declare const DISCOUNT_KIND_PICKLIST = "commerce.discountKind";
52
62
  export declare const DISCOUNT_KIND_SPEC: PicklistSpec;
53
63
  /** A discount kind's id from a label or id in any case, or `null`. */
@@ -19,6 +19,7 @@ import { commerceSlug } from "../model/commerce.js";
19
19
  import { GIFT_CARD_CONFIRM_STEP_ID } from "./transfer-keys.js";
20
20
  import { GIFT_CARD_CURRENCY, giftCardAmountProblem, giftCardCodeOf, giftCardCodeProblem } from "../model/commerce-gift-cards.js";
21
21
  import { ORDER_CHANNEL_LABELS, ORDER_STATUS_LABELS, liftLegacyOrder } from "../model/commerce-orders.js";
22
+ import { orderShippingRecord } from "../model/order-shipping-export.js";
22
23
  /*
23
24
  * ORDERS, DISCOUNTS, COUPONS, GIFT CARDS AND CATEGORIES AS FILES (AGL-3531):
24
25
  * each resource's fields, and its stored document as the record a file
@@ -67,7 +68,123 @@ const text = (value)=>value === null || value === undefined ? '' : String(value)
67
68
  }
68
69
  /*==========================================
69
70
  * ORDERS
70
- *=========================================*/ export const ORDER_TRANSFER_FIELDS = [
71
+ *=========================================*/ /**
72
+ * What a label tool reads (AGL-3613): the ship-to address split into its
73
+ * parts, what is still to be packed and what it weighs — `orderShippingRecord`.
74
+ * The weight is the remaining units' recorded product weights; blank when
75
+ * no product records one, so the tool uses its default package instead.
76
+ */ export const ORDER_SHIPPING_FIELDS = [
77
+ {
78
+ id: 'orderRef',
79
+ label: 'Order reference',
80
+ group: 'shipping',
81
+ type: 'text',
82
+ readOnly: true,
83
+ description: 'The order number, as a label tool sends it back.'
84
+ },
85
+ {
86
+ id: 'shipName',
87
+ label: 'Ship to name',
88
+ group: 'shipping',
89
+ type: 'text',
90
+ readOnly: true
91
+ },
92
+ {
93
+ id: 'shipLine1',
94
+ label: 'Ship to address line 1',
95
+ group: 'shipping',
96
+ type: 'text',
97
+ readOnly: true
98
+ },
99
+ {
100
+ id: 'shipLine2',
101
+ label: 'Ship to address line 2',
102
+ group: 'shipping',
103
+ type: 'text',
104
+ readOnly: true
105
+ },
106
+ {
107
+ id: 'shipCity',
108
+ label: 'Ship to city',
109
+ group: 'shipping',
110
+ type: 'text',
111
+ readOnly: true
112
+ },
113
+ {
114
+ id: 'shipState',
115
+ label: 'Ship to state',
116
+ group: 'shipping',
117
+ type: 'text',
118
+ readOnly: true
119
+ },
120
+ {
121
+ id: 'shipPostalCode',
122
+ label: 'Ship to postal code',
123
+ group: 'shipping',
124
+ type: 'text',
125
+ readOnly: true
126
+ },
127
+ {
128
+ id: 'shipCountry',
129
+ label: 'Ship to country',
130
+ group: 'shipping',
131
+ type: 'text',
132
+ readOnly: true
133
+ },
134
+ {
135
+ id: 'shipPhone',
136
+ label: 'Ship to phone',
137
+ group: 'shipping',
138
+ type: 'phone',
139
+ readOnly: true
140
+ },
141
+ {
142
+ id: 'shipEmail',
143
+ label: 'Ship to email',
144
+ group: 'shipping',
145
+ type: 'email',
146
+ readOnly: true
147
+ },
148
+ {
149
+ id: 'itemsToShip',
150
+ label: 'Items to ship',
151
+ group: 'shipping',
152
+ type: 'longText',
153
+ readOnly: true,
154
+ description: 'What is still to ship: quantity × name (variant), SKU.'
155
+ },
156
+ {
157
+ id: 'unitsToShip',
158
+ label: 'Units to ship',
159
+ group: 'shipping',
160
+ type: 'integer',
161
+ readOnly: true
162
+ },
163
+ {
164
+ id: 'weightOz',
165
+ label: 'Weight (oz)',
166
+ group: 'shipping',
167
+ type: 'number',
168
+ readOnly: true
169
+ },
170
+ {
171
+ id: 'weightLb',
172
+ label: 'Weight (lb)',
173
+ group: 'shipping',
174
+ type: 'number',
175
+ readOnly: true
176
+ },
177
+ {
178
+ id: 'weightUnit',
179
+ label: 'Weight unit',
180
+ group: 'shipping',
181
+ type: 'text',
182
+ readOnly: true,
183
+ description: 'Always oz, beside Weight (oz), for tools that ask for the unit.'
184
+ }
185
+ ];
186
+ /** The shipping fields' ids, which an export reads product weights for. */ export const ORDER_SHIPPING_FIELD_IDS = ORDER_SHIPPING_FIELDS.map((field)=>field.id);
187
+ export const ORDER_TRANSFER_FIELDS = [
71
188
  {
72
189
  id: 'number',
73
190
  label: 'Order number',
@@ -232,7 +349,8 @@ const text = (value)=>value === null || value === undefined ? '' : String(value)
232
349
  group: TRANSFER_SYSTEM_GROUP.id,
233
350
  type: 'text',
234
351
  system: true
235
- }
352
+ },
353
+ ...ORDER_SHIPPING_FIELDS
236
354
  ];
237
355
  export const ORDER_TRANSFER_GROUPS = [
238
356
  {
@@ -250,6 +368,10 @@ export const ORDER_TRANSFER_GROUPS = [
250
368
  {
251
369
  id: 'money',
252
370
  label: 'Money'
371
+ },
372
+ {
373
+ id: 'shipping',
374
+ label: 'Shipping'
253
375
  }
254
376
  ];
255
377
  const addressLine = (address)=>{
@@ -271,7 +393,7 @@ const addressLine = (address)=>{
271
393
  * of old carries nothing else (AGL-1747) — a POS or draft order has no flat
272
394
  * field, and reading those first exported every one of them at $0.00. A
273
395
  * legacy row is named from `productNames`, never as "Product".
274
- */ export function orderRecord(id, stored, productNames = {}) {
396
+ */ export function orderRecord(id, stored, productNames = {}, weights = {}) {
275
397
  var _stored_lineItems, _ref, _ref1, _ref2, _stored_productId, _ref3, _ref4, _stored_refundedCents, _iso, _ORDER_STATUS_LABELS_lifted_status, _ref5, _ORDER_CHANNEL_LABELS_, _lifted_channel, _stored_customerEmail, _stored_customerName, _ref6, _ref7, _stored_couponCode, _stored_note, _stored_paymentIntentId;
276
398
  var _lineItems_;
277
399
  const lifted = liftLegacyOrder(stored);
@@ -280,7 +402,7 @@ const addressLine = (address)=>{
280
402
  const totals = lifted.totals;
281
403
  const totalCents = Number((_ref3 = (_ref4 = totals == null ? void 0 : totals.totalCents) != null ? _ref4 : stored.amountCents) != null ? _ref3 : 0);
282
404
  const refundedCents = Number((_stored_refundedCents = stored.refundedCents) != null ? _stored_refundedCents : 0);
283
- return {
405
+ return _extends({
284
406
  id,
285
407
  number: typeof stored.number === 'number' ? stored.number : null,
286
408
  date: (_iso = iso(stored.createdAt)) != null ? _iso : iso(stored.createdAtMs),
@@ -305,7 +427,7 @@ const addressLine = (address)=>{
305
427
  note: (_stored_note = stored.note) != null ? _stored_note : null,
306
428
  dispute: stored.dispute ? text(stored.dispute.status) || 'open' : null,
307
429
  paymentIntentId: (_stored_paymentIntentId = stored.paymentIntentId) != null ? _stored_paymentIntentId : null
308
- };
430
+ }, orderShippingRecord(id, stored, weights));
309
431
  }
310
432
  /*==========================================
311
433
  * DISCOUNTS