@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.
- package/package.json +13 -13
- package/src/index.d.ts +0 -1
- package/src/index.js +0 -1
- package/src/index.js.map +1 -1
- package/src/lib/barcode/barcode-decode.d.ts +71 -0
- package/src/lib/barcode/barcode-decode.js +498 -0
- package/src/lib/barcode/barcode-decode.js.map +1 -0
- package/src/lib/barcode/barcode-encode.d.ts +44 -0
- package/src/lib/barcode/barcode-encode.js +138 -0
- package/src/lib/barcode/barcode-encode.js.map +1 -0
- package/src/lib/barcode/barcode-scanner.component.d.ts +23 -0
- package/src/lib/barcode/barcode-scanner.component.js +260 -0
- package/src/lib/barcode/barcode-scanner.component.js.map +1 -0
- package/src/lib/barcode/scan-button.component.d.ts +10 -0
- package/src/lib/barcode/scan-button.component.js +62 -0
- package/src/lib/barcode/scan-button.component.js.map +1 -0
- package/src/lib/barcode/scanner-wedge.d.ts +35 -0
- package/src/lib/barcode/scanner-wedge.js +108 -0
- package/src/lib/barcode/scanner-wedge.js.map +1 -0
- package/src/lib/components/account.js +10 -1
- package/src/lib/components/account.js.map +1 -1
- package/src/lib/components/cart-extras.d.ts +45 -0
- package/src/lib/components/cart-extras.js +127 -0
- package/src/lib/components/cart-extras.js.map +1 -0
- package/src/lib/components/cart.js +82 -15
- package/src/lib/components/cart.js.map +1 -1
- package/src/lib/components/checkout-return-notice.d.ts +26 -0
- package/src/lib/components/checkout-return-notice.js +48 -0
- package/src/lib/components/checkout-return-notice.js.map +1 -0
- package/src/lib/components/commerce-console-page.js +124 -0
- package/src/lib/components/commerce-console-page.js.map +1 -1
- package/src/lib/components/commerce-console-sections.d.ts +1 -1
- package/src/lib/components/commerce-console-sections.js +4 -0
- package/src/lib/components/commerce-console-sections.js.map +1 -1
- package/src/lib/components/console/bulk-fulfill.d.ts +44 -0
- package/src/lib/components/console/bulk-fulfill.js +84 -0
- package/src/lib/components/console/bulk-fulfill.js.map +1 -0
- package/src/lib/components/console/customer-notifications-card.component.d.ts +19 -0
- package/src/lib/components/console/customer-notifications-card.component.js +149 -0
- package/src/lib/components/console/customer-notifications-card.component.js.map +1 -0
- package/src/lib/components/console/host-orders-card.component.js +84 -5
- package/src/lib/components/console/host-orders-card.component.js.map +1 -1
- package/src/lib/components/console/locations-card.component.js +164 -57
- package/src/lib/components/console/locations-card.component.js.map +1 -1
- package/src/lib/components/console/order-detail-dialog.component.js +209 -61
- package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
- package/src/lib/components/console/order-fulfillment-panel.component.d.ts +48 -0
- package/src/lib/components/console/order-fulfillment-panel.component.js +542 -0
- package/src/lib/components/console/order-fulfillment-panel.component.js.map +1 -0
- package/src/lib/components/console/order-invoice.component.d.ts +33 -0
- package/src/lib/components/console/order-invoice.component.js +81 -0
- package/src/lib/components/console/order-invoice.component.js.map +1 -0
- package/src/lib/components/console/order-receipt-resend.component.d.ts +21 -0
- package/src/lib/components/console/order-receipt-resend.component.js +203 -0
- package/src/lib/components/console/order-receipt-resend.component.js.map +1 -0
- package/src/lib/components/console/order-returns.component.d.ts +36 -0
- package/src/lib/components/console/order-returns.component.js +142 -0
- package/src/lib/components/console/order-returns.component.js.map +1 -0
- package/src/lib/components/console/order-shipping-actions.component.d.ts +54 -0
- package/src/lib/components/console/order-shipping-actions.component.js +149 -0
- package/src/lib/components/console/order-shipping-actions.component.js.map +1 -0
- package/src/lib/components/console/order-webhooks-card.component.d.ts +50 -0
- package/src/lib/components/console/order-webhooks-card.component.js +623 -0
- package/src/lib/components/console/order-webhooks-card.component.js.map +1 -0
- package/src/lib/components/console/order-zones.d.ts +155 -0
- package/src/lib/components/console/order-zones.js +40 -0
- package/src/lib/components/console/order-zones.js.map +1 -0
- package/src/lib/components/console/payment-methods-card.component.d.ts +67 -0
- package/src/lib/components/console/payment-methods-card.component.js +395 -0
- package/src/lib/components/console/payment-methods-card.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-api.d.ts +124 -0
- package/src/lib/components/console/pos/pos-api.js +101 -0
- package/src/lib/components/console/pos/pos-api.js.map +1 -0
- package/src/lib/components/console/pos/pos-cart-panel.component.d.ts +36 -0
- package/src/lib/components/console/pos/pos-cart-panel.component.js +160 -0
- package/src/lib/components/console/pos/pos-cart-panel.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-item-dialog.component.d.ts +39 -0
- package/src/lib/components/console/pos/pos-item-dialog.component.js +352 -0
- package/src/lib/components/console/pos/pos-item-dialog.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-product-grid.component.d.ts +47 -0
- package/src/lib/components/console/pos/pos-product-grid.component.js +272 -0
- package/src/lib/components/console/pos/pos-product-grid.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-receipt-panel.component.d.ts +27 -0
- package/src/lib/components/console/pos/pos-receipt-panel.component.js +282 -0
- package/src/lib/components/console/pos/pos-receipt-panel.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-tender-dialogs.component.d.ts +53 -0
- package/src/lib/components/console/pos/pos-tender-dialogs.component.js +445 -0
- package/src/lib/components/console/pos/pos-tender-dialogs.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-tender-panel.component.d.ts +31 -0
- package/src/lib/components/console/pos/pos-tender-panel.component.js +640 -0
- package/src/lib/components/console/pos/pos-tender-panel.component.js.map +1 -0
- package/src/lib/components/console/pos/use-pos-display.d.ts +43 -0
- package/src/lib/components/console/pos/use-pos-display.js +161 -0
- package/src/lib/components/console/pos/use-pos-display.js.map +1 -0
- package/src/lib/components/console/pos-devices-card.component.d.ts +14 -0
- package/src/lib/components/console/pos-devices-card.component.js +546 -0
- package/src/lib/components/console/pos-devices-card.component.js.map +1 -0
- package/src/lib/components/console/pos-display/brand-screen.d.ts +33 -0
- package/src/lib/components/console/pos-display/brand-screen.js +85 -0
- package/src/lib/components/console/pos-display/brand-screen.js.map +1 -0
- package/src/lib/components/console/pos-display/cart-screen.d.ts +29 -0
- package/src/lib/components/console/pos-display/cart-screen.js +166 -0
- package/src/lib/components/console/pos-display/cart-screen.js.map +1 -0
- package/src/lib/components/console/pos-display/pairing-screen.d.ts +24 -0
- package/src/lib/components/console/pos-display/pairing-screen.js +127 -0
- package/src/lib/components/console/pos-display/pairing-screen.js.map +1 -0
- package/src/lib/components/console/pos-display/pos-display-api.d.ts +90 -0
- package/src/lib/components/console/pos-display/pos-display-api.js +140 -0
- package/src/lib/components/console/pos-display/pos-display-api.js.map +1 -0
- package/src/lib/components/console/pos-display/receipt-screen.d.ts +35 -0
- package/src/lib/components/console/pos-display/receipt-screen.js +200 -0
- package/src/lib/components/console/pos-display/receipt-screen.js.map +1 -0
- package/src/lib/components/console/pos-display/tip-screen.d.ts +36 -0
- package/src/lib/components/console/pos-display/tip-screen.js +211 -0
- package/src/lib/components/console/pos-display/tip-screen.js.map +1 -0
- package/src/lib/components/console/pos-display-page.component.d.ts +16 -0
- package/src/lib/components/console/pos-display-page.component.js +407 -0
- package/src/lib/components/console/pos-display-page.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-customer-lookup.component.d.ts +40 -0
- package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js +289 -0
- package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-last-receipt.component.d.ts +34 -0
- package/src/lib/components/console/pos-ops/pos-last-receipt.component.js +61 -0
- package/src/lib/components/console/pos-ops/pos-last-receipt.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-operations-bar.component.d.ts +38 -0
- package/src/lib/components/console/pos-ops/pos-operations-bar.component.js +129 -0
- package/src/lib/components/console/pos-ops/pos-operations-bar.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-ops-api.d.ts +37 -0
- package/src/lib/components/console/pos-ops/pos-ops-api.js +60 -0
- package/src/lib/components/console/pos-ops/pos-ops-api.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-pin-pad.component.d.ts +48 -0
- package/src/lib/components/console/pos-ops/pos-pin-pad.component.js +220 -0
- package/src/lib/components/console/pos-ops/pos-pin-pad.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-receipt-actions.component.d.ts +63 -0
- package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js +186 -0
- package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-receipt.d.ts +39 -0
- package/src/lib/components/console/pos-ops/pos-receipt.js +182 -0
- package/src/lib/components/console/pos-ops/pos-receipt.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-return-dialog.component.d.ts +40 -0
- package/src/lib/components/console/pos-ops/pos-return-dialog.component.js +465 -0
- package/src/lib/components/console/pos-ops/pos-return-dialog.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-shift-history-card.component.d.ts +29 -0
- package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js +253 -0
- package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-shift-panel.component.d.ts +34 -0
- package/src/lib/components/console/pos-ops/pos-shift-panel.component.js +494 -0
- package/src/lib/components/console/pos-ops/pos-shift-panel.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-shift-report.component.d.ts +37 -0
- package/src/lib/components/console/pos-ops/pos-shift-report.component.js +102 -0
- package/src/lib/components/console/pos-ops/pos-shift-report.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.d.ts +30 -0
- package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js +277 -0
- package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/register-ops.d.ts +28 -0
- package/src/lib/components/console/pos-ops/register-ops.js +28 -0
- package/src/lib/components/console/pos-ops/register-ops.js.map +1 -0
- package/src/lib/components/console/pos-ops/use-pos-cashier.d.ts +46 -0
- package/src/lib/components/console/pos-ops/use-pos-cashier.js +128 -0
- package/src/lib/components/console/pos-ops/use-pos-cashier.js.map +1 -0
- package/src/lib/components/console/pos-ops/use-pos-sale-receipt.d.ts +36 -0
- package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js +64 -0
- package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js.map +1 -0
- package/src/lib/components/console/pos-page.component.d.ts +13 -5
- package/src/lib/components/console/pos-page.component.js +729 -657
- package/src/lib/components/console/pos-page.component.js.map +1 -1
- package/src/lib/components/console/product-editor-dialog.component.js +51 -7
- package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
- package/src/lib/components/console/product-labels-dialog.component.d.ts +13 -0
- package/src/lib/components/console/product-labels-dialog.component.js +197 -0
- package/src/lib/components/console/product-labels-dialog.component.js.map +1 -0
- package/src/lib/components/console/product-register-fields.component.d.ts +19 -0
- package/src/lib/components/console/product-register-fields.component.js +241 -0
- package/src/lib/components/console/product-register-fields.component.js.map +1 -0
- package/src/lib/components/console/product-zones.d.ts +44 -0
- package/src/lib/components/console/product-zones.js.map +1 -1
- package/src/lib/components/console/products-hub-card.component.js +12 -0
- package/src/lib/components/console/products-hub-card.component.js.map +1 -1
- package/src/lib/components/console/register-hardware-card.component.d.ts +33 -0
- package/src/lib/components/console/register-hardware-card.component.js +826 -0
- package/src/lib/components/console/register-hardware-card.component.js.map +1 -0
- package/src/lib/components/console/registers-card.component.js +24 -5
- package/src/lib/components/console/registers-card.component.js.map +1 -1
- package/src/lib/components/console/return-actions.d.ts +38 -0
- package/src/lib/components/console/return-actions.js +76 -0
- package/src/lib/components/console/return-actions.js.map +1 -0
- package/src/lib/components/console/return-detail-dialog.component.d.ts +34 -0
- package/src/lib/components/console/return-detail-dialog.component.js +718 -0
- package/src/lib/components/console/return-detail-dialog.component.js.map +1 -0
- package/src/lib/components/console/return-settings-card.component.d.ts +34 -0
- package/src/lib/components/console/return-settings-card.component.js +195 -0
- package/src/lib/components/console/return-settings-card.component.js.map +1 -0
- package/src/lib/components/console/return-zones.d.ts +87 -0
- package/src/lib/components/console/return-zones.js +31 -0
- package/src/lib/components/console/return-zones.js.map +1 -0
- package/src/lib/components/console/returns-card.component.d.ts +45 -0
- package/src/lib/components/console/returns-card.component.js +159 -0
- package/src/lib/components/console/returns-card.component.js.map +1 -0
- package/src/lib/components/console/shipping-settings-card.component.js +161 -5
- package/src/lib/components/console/shipping-settings-card.component.js.map +1 -1
- package/src/lib/components/console/shippingeasy-card.component.d.ts +59 -0
- package/src/lib/components/console/shippingeasy-card.component.js +378 -0
- package/src/lib/components/console/shippingeasy-card.component.js.map +1 -0
- package/src/lib/components/console/shipstation-card.component.d.ts +35 -0
- package/src/lib/components/console/shipstation-card.component.js +345 -0
- package/src/lib/components/console/shipstation-card.component.js.map +1 -0
- package/src/lib/components/console/start-return-dialog.component.d.ts +40 -0
- package/src/lib/components/console/start-return-dialog.component.js +243 -0
- package/src/lib/components/console/start-return-dialog.component.js.map +1 -0
- package/src/lib/components/console/stock-movements-card.component.js +2 -1
- package/src/lib/components/console/stock-movements-card.component.js.map +1 -1
- package/src/lib/components/console/store-settings-card.component.js +2 -66
- package/src/lib/components/console/store-settings-card.component.js.map +1 -1
- package/src/lib/components/console/store-zones.d.ts +42 -0
- package/src/lib/components/console/store-zones.js +39 -0
- package/src/lib/components/console/store-zones.js.map +1 -0
- package/src/lib/components/order-status.d.ts +36 -0
- package/src/lib/components/order-status.js +502 -0
- package/src/lib/components/order-status.js.map +1 -0
- package/src/lib/components/product-detail.js +41 -2
- package/src/lib/components/product-detail.js.map +1 -1
- package/src/lib/components/return-request.d.ts +32 -0
- package/src/lib/components/return-request.js +576 -0
- package/src/lib/components/return-request.js.map +1 -0
- package/src/lib/components/storefront-payment-appearance.d.ts +32 -0
- package/src/lib/components/storefront-payment-appearance.js +114 -0
- package/src/lib/components/storefront-payment-appearance.js.map +1 -0
- package/src/lib/components/storefront-payment-element.d.ts +57 -1
- package/src/lib/components/storefront-payment-element.js +332 -33
- package/src/lib/components/storefront-payment-element.js.map +1 -1
- package/src/lib/constants/order-status.d.ts +22 -0
- package/src/lib/constants/order-status.js +22 -0
- package/src/lib/constants/order-status.js.map +1 -0
- package/src/lib/constants/return-request.d.ts +27 -0
- package/src/lib/constants/return-request.js +32 -0
- package/src/lib/constants/return-request.js.map +1 -0
- package/src/lib/constants/stock-movement-query.js +2 -1
- package/src/lib/constants/stock-movement-query.js.map +1 -1
- package/src/lib/declarations.console-server.js +9 -0
- package/src/lib/declarations.console-server.js.map +1 -1
- package/src/lib/declarations.server.d.ts +2 -1
- package/src/lib/declarations.server.js +47 -1
- package/src/lib/declarations.server.js.map +1 -1
- package/src/lib/model/buyer-notifications.d.ts +59 -0
- package/src/lib/model/buyer-notifications.js +97 -0
- package/src/lib/model/buyer-notifications.js.map +1 -0
- package/src/lib/model/commerce-orders.d.ts +127 -1
- package/src/lib/model/commerce-orders.js +24 -15
- package/src/lib/model/commerce-orders.js.map +1 -1
- package/src/lib/model/commerce-payment-methods.d.ts +146 -0
- package/src/lib/model/commerce-payment-methods.js +247 -0
- package/src/lib/model/commerce-payment-methods.js.map +1 -0
- package/src/lib/model/commerce-pos-ops.d.ts +437 -0
- package/src/lib/model/commerce-pos-ops.js +721 -0
- package/src/lib/model/commerce-pos-ops.js.map +1 -0
- package/src/lib/model/commerce-pos.d.ts +263 -0
- package/src/lib/model/commerce-pos.js +375 -0
- package/src/lib/model/commerce-pos.js.map +1 -0
- package/src/lib/model/commerce-printers.d.ts +211 -0
- package/src/lib/model/commerce-printers.js +181 -0
- package/src/lib/model/commerce-printers.js.map +1 -0
- package/src/lib/model/commerce-receipt.d.ts +97 -0
- package/src/lib/model/commerce-receipt.js +180 -0
- package/src/lib/model/commerce-receipt.js.map +1 -0
- package/src/lib/model/commerce-returns.d.ts +207 -0
- package/src/lib/model/commerce-returns.js +300 -0
- package/src/lib/model/commerce-returns.js.map +1 -0
- package/src/lib/model/commerce-shipping.d.ts +44 -1
- package/src/lib/model/commerce-shipping.js +53 -9
- package/src/lib/model/commerce-shipping.js.map +1 -1
- package/src/lib/model/commerce-tax-engine.d.ts +90 -0
- package/src/lib/model/commerce-tax-engine.js +129 -0
- package/src/lib/model/commerce-tax-engine.js.map +1 -0
- package/src/lib/model/commerce.d.ts +88 -2
- package/src/lib/model/commerce.js +89 -1
- package/src/lib/model/commerce.js.map +1 -1
- package/src/lib/model/index.d.ts +15 -0
- package/src/lib/model/index.js +15 -0
- package/src/lib/model/index.js.map +1 -1
- package/src/lib/model/order-events.d.ts +154 -0
- package/src/lib/model/order-events.js +153 -0
- package/src/lib/model/order-events.js.map +1 -0
- package/src/lib/model/order-fulfillment.d.ts +117 -0
- package/src/lib/model/order-fulfillment.js +217 -0
- package/src/lib/model/order-fulfillment.js.map +1 -0
- package/src/lib/model/order-history.d.ts +58 -0
- package/src/lib/model/order-history.js +22 -0
- package/src/lib/model/order-history.js.map +1 -0
- package/src/lib/model/order-list-fields.d.ts +9 -1
- package/src/lib/model/order-list-fields.js +7 -1
- package/src/lib/model/order-list-fields.js.map +1 -1
- package/src/lib/model/order-shipping-export.d.ts +91 -0
- package/src/lib/model/order-shipping-export.js +192 -0
- package/src/lib/model/order-shipping-export.js.map +1 -0
- package/src/lib/model/order-status-view.d.ts +103 -0
- package/src/lib/model/order-status-view.js +156 -0
- package/src/lib/model/order-status-view.js.map +1 -0
- package/src/lib/model/order-webhooks.d.ts +142 -0
- package/src/lib/model/order-webhooks.js +91 -0
- package/src/lib/model/order-webhooks.js.map +1 -0
- package/src/lib/model/product-channel.d.ts +56 -0
- package/src/lib/model/product-channel.js +86 -0
- package/src/lib/model/product-channel.js.map +1 -0
- package/src/lib/model/product-modifiers.d.ts +80 -0
- package/src/lib/model/product-modifiers.js +140 -0
- package/src/lib/model/product-modifiers.js.map +1 -0
- package/src/lib/model/shippingeasy.d.ts +94 -0
- package/src/lib/model/shippingeasy.js +267 -0
- package/src/lib/model/shippingeasy.js.map +1 -0
- package/src/lib/model/shipstation.d.ts +125 -0
- package/src/lib/model/shipstation.js +399 -0
- package/src/lib/model/shipstation.js.map +1 -0
- package/src/lib/model/smart-collection-reads.d.ts +32 -0
- package/src/lib/model/smart-collection-reads.js +63 -0
- package/src/lib/model/smart-collection-reads.js.map +1 -0
- package/src/lib/model/tracking-url.d.ts +74 -0
- package/src/lib/model/tracking-url.js +159 -0
- package/src/lib/model/tracking-url.js.map +1 -0
- package/src/lib/plugin-config.d.ts +13 -0
- package/src/lib/plugin-config.js +77 -5
- package/src/lib/plugin-config.js.map +1 -1
- package/src/lib/plugin.js +23 -0
- package/src/lib/plugin.js.map +1 -1
- package/src/lib/pos-ops-config.d.ts +39 -0
- package/src/lib/pos-ops-config.js +88 -0
- package/src/lib/pos-ops-config.js.map +1 -0
- package/src/lib/printing/print-document.d.ts +106 -0
- package/src/lib/printing/print-document.js +464 -0
- package/src/lib/printing/print-document.js.map +1 -0
- package/src/lib/printing/product-labels.d.ts +58 -0
- package/src/lib/printing/product-labels.js +116 -0
- package/src/lib/printing/product-labels.js.map +1 -0
- package/src/lib/printing/render-epson.d.ts +57 -0
- package/src/lib/printing/render-epson.js +135 -0
- package/src/lib/printing/render-epson.js.map +1 -0
- package/src/lib/printing/render-star.d.ts +45 -0
- package/src/lib/printing/render-star.js +100 -0
- package/src/lib/printing/render-star.js.map +1 -0
- package/src/lib/printing/render-text.d.ts +25 -0
- package/src/lib/printing/render-text.js +53 -0
- package/src/lib/printing/render-text.js.map +1 -0
- package/src/lib/server/api-v1/openapi.js +27 -4
- package/src/lib/server/api-v1/openapi.js.map +1 -1
- package/src/lib/server/api-v1/order-view.d.ts +67 -0
- package/src/lib/server/api-v1/order-view.js +120 -0
- package/src/lib/server/api-v1/order-view.js.map +1 -0
- package/src/lib/server/api-v1/orders-and-products.js +58 -65
- package/src/lib/server/api-v1/orders-and-products.js.map +1 -1
- package/src/lib/server/billing-webhook.js +135 -28
- package/src/lib/server/billing-webhook.js.map +1 -1
- package/src/lib/server/cancel-order.js +29 -0
- package/src/lib/server/cancel-order.js.map +1 -1
- package/src/lib/server/carrier-rates-availability.d.ts +26 -0
- package/src/lib/server/carrier-rates-availability.js +76 -0
- package/src/lib/server/carrier-rates-availability.js.map +1 -0
- package/src/lib/server/carrier-shipping.d.ts +84 -0
- package/src/lib/server/carrier-shipping.js +135 -0
- package/src/lib/server/carrier-shipping.js.map +1 -0
- package/src/lib/server/cart-checkout.d.ts +2 -0
- package/src/lib/server/cart-checkout.js +226 -22
- package/src/lib/server/cart-checkout.js.map +1 -1
- package/src/lib/server/checkout-extras.d.ts +64 -0
- package/src/lib/server/checkout-extras.js +157 -0
- package/src/lib/server/checkout-extras.js.map +1 -0
- package/src/lib/server/{feed.d.ts → checkout-status.d.ts} +2 -7
- package/src/lib/server/checkout-status.js +111 -0
- package/src/lib/server/checkout-status.js.map +1 -0
- package/src/lib/server/checkout.js +86 -9
- package/src/lib/server/checkout.js.map +1 -1
- package/src/lib/server/draft-order.js +34 -5
- package/src/lib/server/draft-order.js.map +1 -1
- package/src/lib/server/fulfill-order.d.ts +127 -10
- package/src/lib/server/fulfill-order.js +451 -49
- package/src/lib/server/fulfill-order.js.map +1 -1
- package/src/lib/server/legacy-feed.d.ts +28 -0
- package/src/lib/server/legacy-feed.js +52 -0
- package/src/lib/server/legacy-feed.js.map +1 -0
- package/src/lib/server/native-checkout.d.ts +34 -15
- package/src/lib/server/native-checkout.js +32 -17
- package/src/lib/server/native-checkout.js.map +1 -1
- package/src/lib/server/order-event-host-emit.d.ts +23 -0
- package/src/lib/server/order-event-host-emit.js +30 -0
- package/src/lib/server/order-event-host-emit.js.map +1 -0
- package/src/lib/server/order-event-triggers.d.ts +37 -0
- package/src/lib/server/order-event-triggers.js +119 -0
- package/src/lib/server/order-event-triggers.js.map +1 -0
- package/src/lib/server/order-events.d.ts +62 -0
- package/src/lib/server/order-events.js +109 -0
- package/src/lib/server/order-events.js.map +1 -0
- package/src/lib/server/order-history.d.ts +23 -0
- package/src/lib/server/order-history.js +65 -0
- package/src/lib/server/order-history.js.map +1 -0
- package/src/lib/server/order-notifications.d.ts +185 -0
- package/src/lib/server/order-notifications.js +567 -0
- package/src/lib/server/order-notifications.js.map +1 -0
- package/src/lib/server/order-receipt-send.d.ts +39 -0
- package/src/lib/server/order-receipt-send.js +151 -0
- package/src/lib/server/order-receipt-send.js.map +1 -0
- package/src/lib/server/order-status-token.d.ts +31 -0
- package/src/lib/server/order-status-token.js +75 -0
- package/src/lib/server/order-status-token.js.map +1 -0
- package/src/lib/server/order-status.d.ts +58 -0
- package/src/lib/server/order-status.js +141 -0
- package/src/lib/server/order-status.js.map +1 -0
- package/src/lib/server/order-webhooks.d.ts +108 -0
- package/src/lib/server/order-webhooks.js +622 -0
- package/src/lib/server/order-webhooks.js.map +1 -0
- package/src/lib/server/orders-shipping-prepare.d.ts +26 -0
- package/src/lib/server/orders-shipping-prepare.js +121 -0
- package/src/lib/server/orders-shipping-prepare.js.map +1 -0
- package/src/lib/server/payment-method-domains.d.ts +209 -0
- package/src/lib/server/payment-method-domains.js +444 -0
- package/src/lib/server/payment-method-domains.js.map +1 -0
- package/src/lib/server/payment-methods.d.ts +77 -0
- package/src/lib/server/payment-methods.js +284 -0
- package/src/lib/server/payment-methods.js.map +1 -0
- package/src/lib/server/pos-auth.d.ts +50 -0
- package/src/lib/server/pos-auth.js +121 -0
- package/src/lib/server/pos-auth.js.map +1 -0
- package/src/lib/server/pos-customer.d.ts +49 -0
- package/src/lib/server/pos-customer.js +257 -0
- package/src/lib/server/pos-customer.js.map +1 -0
- package/src/lib/server/pos-display.d.ts +57 -0
- package/src/lib/server/pos-display.js +419 -0
- package/src/lib/server/pos-display.js.map +1 -0
- package/src/lib/server/pos-fee-month.d.ts +34 -0
- package/src/lib/server/pos-fee-month.js +36 -0
- package/src/lib/server/pos-fee-month.js.map +1 -0
- package/src/lib/server/pos-ops-gate.d.ts +161 -0
- package/src/lib/server/pos-ops-gate.js +295 -0
- package/src/lib/server/pos-ops-gate.js.map +1 -0
- package/src/lib/server/pos-ops-routes.d.ts +22 -0
- package/src/lib/server/pos-ops-routes.js +36 -0
- package/src/lib/server/pos-ops-routes.js.map +1 -0
- package/src/lib/server/pos-order.d.ts +1 -18
- package/src/lib/server/pos-order.js +222 -42
- package/src/lib/server/pos-order.js.map +1 -1
- package/src/lib/server/pos-payment.d.ts +39 -0
- package/src/lib/server/pos-payment.js +922 -0
- package/src/lib/server/pos-payment.js.map +1 -0
- package/src/lib/server/pos-print.d.ts +82 -0
- package/src/lib/server/pos-print.js +193 -0
- package/src/lib/server/pos-print.js.map +1 -0
- package/src/lib/server/pos-readers.d.ts +27 -0
- package/src/lib/server/pos-readers.js +276 -0
- package/src/lib/server/pos-readers.js.map +1 -0
- package/src/lib/server/pos-refund-authority.d.ts +60 -0
- package/src/lib/server/pos-refund-authority.js +72 -0
- package/src/lib/server/pos-refund-authority.js.map +1 -0
- package/src/lib/server/pos-return.d.ts +58 -0
- package/src/lib/server/pos-return.js +891 -0
- package/src/lib/server/pos-return.js.map +1 -0
- package/src/lib/server/pos-sale-stamp.d.ts +66 -0
- package/src/lib/server/pos-sale-stamp.js +84 -0
- package/src/lib/server/pos-sale-stamp.js.map +1 -0
- package/src/lib/server/pos-sale.d.ts +170 -0
- package/src/lib/server/pos-sale.js +461 -0
- package/src/lib/server/pos-sale.js.map +1 -0
- package/src/lib/server/pos-shift.d.ts +45 -0
- package/src/lib/server/pos-shift.js +484 -0
- package/src/lib/server/pos-shift.js.map +1 -0
- package/src/lib/server/pos-staff-pin.d.ts +26 -0
- package/src/lib/server/pos-staff-pin.js +339 -0
- package/src/lib/server/pos-staff-pin.js.map +1 -0
- package/src/lib/server/pos-stripe.d.ts +91 -0
- package/src/lib/server/pos-stripe.js +129 -0
- package/src/lib/server/pos-stripe.js.map +1 -0
- package/src/lib/server/pos-terminal-connection-token.d.ts +48 -0
- package/src/lib/server/pos-terminal-connection-token.js +166 -0
- package/src/lib/server/pos-terminal-connection-token.js.map +1 -0
- package/src/lib/server/pos-terminal.d.ts +218 -0
- package/src/lib/server/pos-terminal.js +1014 -0
- package/src/lib/server/pos-terminal.js.map +1 -0
- package/src/lib/server/print-queue.d.ts +124 -0
- package/src/lib/server/print-queue.js +301 -0
- package/src/lib/server/print-queue.js.map +1 -0
- package/src/lib/server/printer-poll.d.ts +75 -0
- package/src/lib/server/printer-poll.js +325 -0
- package/src/lib/server/printer-poll.js.map +1 -0
- package/src/lib/server/printer-secret.d.ts +39 -0
- package/src/lib/server/printer-secret.js +56 -0
- package/src/lib/server/printer-secret.js.map +1 -0
- package/src/lib/server/printers.d.ts +114 -0
- package/src/lib/server/printers.js +546 -0
- package/src/lib/server/printers.js.map +1 -0
- package/src/lib/server/product-catalog.d.ts +42 -0
- package/src/lib/server/product-catalog.js +305 -0
- package/src/lib/server/product-catalog.js.map +1 -0
- package/src/lib/server/refund.js +110 -45
- package/src/lib/server/refund.js.map +1 -1
- package/src/lib/server/reserve.js +2 -0
- package/src/lib/server/reserve.js.map +1 -1
- package/src/lib/server/return-status-action.d.ts +37 -0
- package/src/lib/server/return-status-action.js +57 -0
- package/src/lib/server/return-status-action.js.map +1 -0
- package/src/lib/server/returns.d.ts +119 -0
- package/src/lib/server/returns.js +938 -0
- package/src/lib/server/returns.js.map +1 -0
- package/src/lib/server/shipment-records.d.ts +36 -0
- package/src/lib/server/shipment-records.js +289 -0
- package/src/lib/server/shipment-records.js.map +1 -0
- package/src/lib/server/shipping-connector-gates.d.ts +40 -0
- package/src/lib/server/shipping-connector-gates.js +97 -0
- package/src/lib/server/shipping-connector-gates.js.map +1 -0
- package/src/lib/server/shipping-connectors.d.ts +29 -0
- package/src/lib/server/shipping-connectors.js +236 -0
- package/src/lib/server/shipping-connectors.js.map +1 -0
- package/src/lib/server/shippingeasy.d.ts +238 -0
- package/src/lib/server/shippingeasy.js +787 -0
- package/src/lib/server/shippingeasy.js.map +1 -0
- package/src/lib/server/shipstation.d.ts +129 -0
- package/src/lib/server/shipstation.js +483 -0
- package/src/lib/server/shipstation.js.map +1 -0
- package/src/lib/server/site-page-resolver.d.ts +5 -0
- package/src/lib/server/site-page-resolver.js +156 -1
- package/src/lib/server/site-page-resolver.js.map +1 -1
- package/src/lib/server/stock-levels.d.ts +21 -0
- package/src/lib/server/stock-levels.js +263 -0
- package/src/lib/server/stock-levels.js.map +1 -0
- package/src/lib/server/stripe-refund.d.ts +47 -0
- package/src/lib/server/stripe-refund.js +87 -0
- package/src/lib/server/stripe-refund.js.map +1 -0
- package/src/lib/server/supplier-update.js +46 -5
- package/src/lib/server/supplier-update.js.map +1 -1
- package/src/lib/server/tax-engine-quote.d.ts +47 -0
- package/src/lib/server/tax-engine-quote.js +105 -0
- package/src/lib/server/tax-engine-quote.js.map +1 -0
- package/src/lib/server.js +138 -2
- package/src/lib/server.js.map +1 -1
- package/src/lib/site.js +12 -0
- package/src/lib/site.js.map +1 -1
- package/src/lib/subprocessors.d.ts +26 -0
- package/src/lib/subprocessors.js +50 -0
- package/src/lib/subprocessors.js.map +1 -0
- package/src/lib/tenant-emails.js +461 -3
- package/src/lib/tenant-emails.js.map +1 -1
- package/src/lib/testing/fake-firestore.d.ts +45 -0
- package/src/lib/testing/fake-firestore.js +189 -0
- package/src/lib/testing/fake-firestore.js.map +1 -0
- package/src/lib/testing/memory-firestore.d.ts +123 -0
- package/src/lib/testing/memory-firestore.js +274 -0
- package/src/lib/testing/memory-firestore.js.map +1 -0
- package/src/lib/testing/pos-ops-harness.d.ts +50 -0
- package/src/lib/testing/pos-ops-harness.js +184 -0
- package/src/lib/testing/pos-ops-harness.js.map +1 -0
- package/src/lib/testing/pos-ops-memory-firestore.d.ts +55 -0
- package/src/lib/testing/pos-ops-memory-firestore.js +376 -0
- package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -0
- package/src/lib/transfer/records-transfer.d.ts +11 -1
- package/src/lib/transfer/records-transfer.js +127 -5
- package/src/lib/transfer/records-transfer.js.map +1 -1
- package/src/lib/transfer/records.server.d.ts +9 -2
- package/src/lib/transfer/records.server.js +58 -7
- package/src/lib/transfer/records.server.js.map +1 -1
- package/src/lib/transfer/register-transfer-resources.js +40 -1
- package/src/lib/transfer/register-transfer-resources.js.map +1 -1
- package/src/lib/transfer/register-transfer-ui.js +4 -1
- package/src/lib/transfer/register-transfer-ui.js.map +1 -1
- package/src/lib/transfer/shipping-presets.d.ts +23 -0
- package/src/lib/transfer/shipping-presets.js +156 -0
- package/src/lib/transfer/shipping-presets.js.map +1 -0
- package/src/lib/transfer/tracking-transfer.d.ts +101 -0
- package/src/lib/transfer/tracking-transfer.js +546 -0
- package/src/lib/transfer/tracking-transfer.js.map +1 -0
- package/src/lib/transfer/tracking.server.d.ts +37 -0
- package/src/lib/transfer/tracking.server.js +393 -0
- package/src/lib/transfer/tracking.server.js.map +1 -0
- package/src/lib/transfer/transfer-keys.d.ts +2 -1
- package/src/lib/transfer/transfer-keys.js +6 -2
- package/src/lib/transfer/transfer-keys.js.map +1 -1
- package/src/lib/utils/code128.d.ts +37 -0
- package/src/lib/utils/code128.js +199 -0
- package/src/lib/utils/code128.js.map +1 -0
- package/src/lib/utils/order-invoice.d.ts +55 -0
- package/src/lib/utils/order-invoice.js +127 -0
- package/src/lib/utils/order-invoice.js.map +1 -0
- package/src/lib/utils/use-checkout-return-notice.d.ts +34 -0
- package/src/lib/utils/use-checkout-return-notice.js +78 -0
- package/src/lib/utils/use-checkout-return-notice.js.map +1 -0
- package/src/lib/server/feed.js +0 -69
- 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
|
|
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
|
-
*=========================================*/
|
|
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
|