@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,59 @@
|
|
|
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
|
+
export interface ShippingEasyCardProps {
|
|
18
|
+
hostId: string;
|
|
19
|
+
}
|
|
20
|
+
/** What the connectors route answers about a ShippingEasy connection. */
|
|
21
|
+
interface ConnectionStatus {
|
|
22
|
+
/** Whether this deployment can keep an API secret at all. */
|
|
23
|
+
available?: boolean;
|
|
24
|
+
connected: boolean;
|
|
25
|
+
apiKeyEnding?: string;
|
|
26
|
+
storeApiKeyEnding?: string;
|
|
27
|
+
createdAtMs?: number;
|
|
28
|
+
updatedAtMs?: number;
|
|
29
|
+
lastPushAtMs?: number;
|
|
30
|
+
lastCallbackAtMs?: number;
|
|
31
|
+
lastError?: {
|
|
32
|
+
message: string;
|
|
33
|
+
atMs: number;
|
|
34
|
+
orderNumber?: string;
|
|
35
|
+
} | null;
|
|
36
|
+
sync?: {
|
|
37
|
+
sent: number;
|
|
38
|
+
already: number;
|
|
39
|
+
failed: number;
|
|
40
|
+
more: boolean;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** The address ShippingEasy posts shipments to: this console's own origin, never a guess. */
|
|
44
|
+
export declare function shippingEasyCallbackUrl(hostId: string, origin?: string): string;
|
|
45
|
+
/** What one "Send open orders" did, in a sentence. */
|
|
46
|
+
export declare function describeShippingEasySync(sync: NonNullable<ConnectionStatus['sync']>): string;
|
|
47
|
+
/**
|
|
48
|
+
* Connect ShippingEasy (AGL-3633): the merchant's API key, API secret and
|
|
49
|
+
* store API key, from their own ShippingEasy account; the callback URL to
|
|
50
|
+
* paste into the API store; send open orders; and disconnect. Paid orders go
|
|
51
|
+
* to ShippingEasy as they are paid, and each label bought there marks the
|
|
52
|
+
* order shipped here. The secret is sealed on the server and never shown
|
|
53
|
+
* again; the card renders nothing on a deployment that cannot seal one.
|
|
54
|
+
*/
|
|
55
|
+
export declare function ShippingEasyCard(props: ShippingEasyCardProps): import("react").JSX.Element;
|
|
56
|
+
export declare namespace ShippingEasyCard {
|
|
57
|
+
var displayName: string;
|
|
58
|
+
}
|
|
59
|
+
export default ShippingEasyCard;
|
|
@@ -0,0 +1,378 @@
|
|
|
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
|
+
*/ 'use client';
|
|
17
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
18
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
19
|
+
import { pluginDocsHelp } from "@aglyn/aglyn";
|
|
20
|
+
import { PLATFORM_BRAND_NAME } from "@aglyn/aglyn/app-utils/platform-brand";
|
|
21
|
+
import { CardDisplay } from "@aglyn/shared-ui-jsx";
|
|
22
|
+
import { CopyField } from "@aglyn/shared-ui-jsx/components/copy-field.component";
|
|
23
|
+
import ScrollTable from "@aglyn/shared-ui-jsx/components/scroll-table.component";
|
|
24
|
+
import { StatusChip } from "@aglyn/shared-ui-jsx/components/status-chip.component";
|
|
25
|
+
import { useSnackbar } from "@aglyn/shared-ui-snackstack";
|
|
26
|
+
import { authorizedFetch } from "@aglyn/shared-util-http/authorized-token";
|
|
27
|
+
import { useUser } from "@aglyn/tenant-feature-instance";
|
|
28
|
+
import { Alert, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Stack, TableBody, TableCell, TableRow, TextField, Typography } from "@mui/material";
|
|
29
|
+
import { useCallback, useEffect, useState } from "react";
|
|
30
|
+
/** The address ShippingEasy posts shipments to: this console's own origin, never a guess. */ export function shippingEasyCallbackUrl(hostId, origin) {
|
|
31
|
+
const base = origin != null ? origin : typeof window === 'undefined' ? '' : window.location.origin;
|
|
32
|
+
return `${base}/api/commerce/shippingeasy/${encodeURIComponent(hostId)}`;
|
|
33
|
+
}
|
|
34
|
+
/** What one "Send open orders" did, in a sentence. */ export function describeShippingEasySync(sync) {
|
|
35
|
+
const parts = [];
|
|
36
|
+
parts.push(sync.sent === 1 ? '1 order sent to ShippingEasy' : `${sync.sent} orders sent to ShippingEasy`);
|
|
37
|
+
if (sync.already) parts.push(`${sync.already} already there`);
|
|
38
|
+
if (sync.failed) parts.push(`${sync.failed} not sent`);
|
|
39
|
+
return `${parts.join(', ')}.${sync.more ? ' More open orders are waiting: select Send open orders again.' : ''}`;
|
|
40
|
+
}
|
|
41
|
+
const when = (ms)=>ms ? new Date(ms).toLocaleString(undefined, {
|
|
42
|
+
dateStyle: 'medium',
|
|
43
|
+
timeStyle: 'short'
|
|
44
|
+
}) : 'Not yet';
|
|
45
|
+
/** One fixed fact of the connection: a label and its value. */ function FactRow(props) {
|
|
46
|
+
return /*#__PURE__*/ _jsxs(TableRow, {
|
|
47
|
+
children: [
|
|
48
|
+
/*#__PURE__*/ _jsx(TableCell, {
|
|
49
|
+
component: "th",
|
|
50
|
+
scope: "row",
|
|
51
|
+
children: props.label
|
|
52
|
+
}),
|
|
53
|
+
/*#__PURE__*/ _jsx(TableCell, {
|
|
54
|
+
children: props.value
|
|
55
|
+
})
|
|
56
|
+
]
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const EMPTY_KEYS = {
|
|
60
|
+
apiKey: '',
|
|
61
|
+
apiSecret: '',
|
|
62
|
+
storeApiKey: ''
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Connect ShippingEasy (AGL-3633): the merchant's API key, API secret and
|
|
66
|
+
* store API key, from their own ShippingEasy account; the callback URL to
|
|
67
|
+
* paste into the API store; send open orders; and disconnect. Paid orders go
|
|
68
|
+
* to ShippingEasy as they are paid, and each label bought there marks the
|
|
69
|
+
* order shipped here. The secret is sealed on the server and never shown
|
|
70
|
+
* again; the card renders nothing on a deployment that cannot seal one.
|
|
71
|
+
*/ export function ShippingEasyCard(props) {
|
|
72
|
+
const { hostId } = props;
|
|
73
|
+
const { data: user } = useUser();
|
|
74
|
+
const { enqueueSnackbar } = useSnackbar();
|
|
75
|
+
const [status, setStatus] = useState(null);
|
|
76
|
+
const [loadError, setLoadError] = useState(null);
|
|
77
|
+
const [busy, setBusy] = useState(false);
|
|
78
|
+
const [editing, setEditing] = useState(false);
|
|
79
|
+
const [keys, setKeys] = useState(EMPTY_KEYS);
|
|
80
|
+
const [confirmDisconnect, setConfirmDisconnect] = useState(false);
|
|
81
|
+
const uid = user == null ? void 0 : user.uid;
|
|
82
|
+
useEffect(()=>{
|
|
83
|
+
if (!uid || !user) return;
|
|
84
|
+
let live = true;
|
|
85
|
+
authorizedFetch(user, `/api/commerce/shipping-connectors?connector=shippingeasy&hostId=${encodeURIComponent(hostId)}`).then(async (response)=>{
|
|
86
|
+
var _ref;
|
|
87
|
+
const body = await response.json().catch(()=>({}));
|
|
88
|
+
if (!live) return;
|
|
89
|
+
if (!response.ok) return setLoadError((_ref = body == null ? void 0 : body.error) != null ? _ref : 'The connection could not be read.');
|
|
90
|
+
setLoadError(null);
|
|
91
|
+
setStatus(body);
|
|
92
|
+
}).catch(()=>live && setLoadError('The connection could not be read.'));
|
|
93
|
+
return ()=>{
|
|
94
|
+
live = false;
|
|
95
|
+
};
|
|
96
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- `user` changes identity every render; `uid` is what matters.
|
|
97
|
+
}, [
|
|
98
|
+
uid,
|
|
99
|
+
hostId
|
|
100
|
+
]);
|
|
101
|
+
const act = useCallback(async (action, extra = {})=>{
|
|
102
|
+
setBusy(true);
|
|
103
|
+
try {
|
|
104
|
+
const response = await authorizedFetch(user, '/api/commerce/shipping-connectors', {
|
|
105
|
+
method: 'POST',
|
|
106
|
+
headers: {
|
|
107
|
+
'Content-Type': 'application/json'
|
|
108
|
+
},
|
|
109
|
+
body: JSON.stringify(_extends({
|
|
110
|
+
hostId,
|
|
111
|
+
connector: 'shippingeasy',
|
|
112
|
+
action
|
|
113
|
+
}, extra))
|
|
114
|
+
});
|
|
115
|
+
const body = await response.json().catch(()=>({}));
|
|
116
|
+
if (!response.ok) {
|
|
117
|
+
var _ref;
|
|
118
|
+
enqueueSnackbar((_ref = body == null ? void 0 : body.error) != null ? _ref : 'That did not work. Try again.', {
|
|
119
|
+
variant: 'error',
|
|
120
|
+
allowDuplicate: true
|
|
121
|
+
});
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
setStatus(body);
|
|
125
|
+
if (action === 'disconnect') {
|
|
126
|
+
enqueueSnackbar('ShippingEasy is disconnected. New orders are no longer sent to it.', {
|
|
127
|
+
variant: 'success'
|
|
128
|
+
});
|
|
129
|
+
} else if (action === 'sync' && body.sync) {
|
|
130
|
+
enqueueSnackbar(describeShippingEasySync(body.sync), {
|
|
131
|
+
variant: body.sync.failed ? 'warning' : 'success'
|
|
132
|
+
});
|
|
133
|
+
} else if (action === 'connect') {
|
|
134
|
+
enqueueSnackbar('ShippingEasy is connected. Paste the callback URL into your ShippingEasy API store.', {
|
|
135
|
+
variant: 'success'
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
return true;
|
|
139
|
+
} finally{
|
|
140
|
+
setBusy(false);
|
|
141
|
+
}
|
|
142
|
+
}, [
|
|
143
|
+
user,
|
|
144
|
+
hostId,
|
|
145
|
+
enqueueSnackbar
|
|
146
|
+
]);
|
|
147
|
+
// A deployment with no secret keyring cannot keep a secret: nothing to offer.
|
|
148
|
+
if (status && status.available === false && !status.connected) return null;
|
|
149
|
+
const connected = Boolean(status == null ? void 0 : status.connected);
|
|
150
|
+
const openKeys = ()=>{
|
|
151
|
+
setKeys(EMPTY_KEYS);
|
|
152
|
+
setEditing(true);
|
|
153
|
+
};
|
|
154
|
+
const actions = !status ? null : connected ? /*#__PURE__*/ _jsxs(Stack, {
|
|
155
|
+
direction: "row",
|
|
156
|
+
spacing: 1,
|
|
157
|
+
children: [
|
|
158
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
159
|
+
size: "small",
|
|
160
|
+
disabled: busy,
|
|
161
|
+
onClick: ()=>void act('sync'),
|
|
162
|
+
children: 'Send open orders'
|
|
163
|
+
}),
|
|
164
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
165
|
+
size: "small",
|
|
166
|
+
disabled: busy,
|
|
167
|
+
onClick: openKeys,
|
|
168
|
+
children: 'Change keys'
|
|
169
|
+
}),
|
|
170
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
171
|
+
size: "small",
|
|
172
|
+
color: "error",
|
|
173
|
+
disabled: busy,
|
|
174
|
+
onClick: ()=>setConfirmDisconnect(true),
|
|
175
|
+
children: 'Disconnect'
|
|
176
|
+
})
|
|
177
|
+
]
|
|
178
|
+
}) : /*#__PURE__*/ _jsx(Button, {
|
|
179
|
+
size: "small",
|
|
180
|
+
variant: "contained",
|
|
181
|
+
disabled: busy,
|
|
182
|
+
onClick: openKeys,
|
|
183
|
+
children: 'Connect ShippingEasy'
|
|
184
|
+
});
|
|
185
|
+
const complete = Boolean(keys.apiKey.trim() && keys.apiSecret.trim() && keys.storeApiKey.trim());
|
|
186
|
+
const save = async ()=>{
|
|
187
|
+
if (await act('connect', keys)) {
|
|
188
|
+
setEditing(false);
|
|
189
|
+
setKeys(EMPTY_KEYS);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
return /*#__PURE__*/ _jsxs(CardDisplay, {
|
|
193
|
+
header: 'ShippingEasy',
|
|
194
|
+
help: pluginDocsHelp('shippingEasy', {
|
|
195
|
+
excerpt: `${PLATFORM_BRAND_NAME} sends your paid orders to your ShippingEasy account, and each label you buy there ` + 'marks the order shipped and emails your customer the tracking link.'
|
|
196
|
+
}),
|
|
197
|
+
HeaderProps: {
|
|
198
|
+
action: actions
|
|
199
|
+
},
|
|
200
|
+
contentGutterX: true,
|
|
201
|
+
contentGutterY: true,
|
|
202
|
+
children: [
|
|
203
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
204
|
+
spacing: 2,
|
|
205
|
+
children: [
|
|
206
|
+
loadError ? /*#__PURE__*/ _jsx(Alert, {
|
|
207
|
+
severity: "error",
|
|
208
|
+
children: loadError
|
|
209
|
+
}) : null,
|
|
210
|
+
!connected ? /*#__PURE__*/ _jsx(Typography, {
|
|
211
|
+
variant: "body2",
|
|
212
|
+
color: "text.secondary",
|
|
213
|
+
children: 'Labeling in ShippingEasy? Connect it with the API key, API secret and store API key from your ' + 'ShippingEasy account: each order is sent there as it is paid, and each label you buy there ' + 'marks the order shipped here and emails your customer the tracking link. Only a site admin ' + 'can connect it.'
|
|
214
|
+
}) : /*#__PURE__*/ _jsxs(_Fragment, {
|
|
215
|
+
children: [
|
|
216
|
+
/*#__PURE__*/ _jsx("div", {
|
|
217
|
+
children: (status == null ? void 0 : status.lastError) ? /*#__PURE__*/ _jsx(StatusChip, {
|
|
218
|
+
label: "Needs attention",
|
|
219
|
+
tone: "warning",
|
|
220
|
+
"data-testid": "shippingeasy-status"
|
|
221
|
+
}) : /*#__PURE__*/ _jsx(StatusChip, {
|
|
222
|
+
label: "Connected",
|
|
223
|
+
tone: "success",
|
|
224
|
+
"data-testid": "shippingeasy-status"
|
|
225
|
+
})
|
|
226
|
+
}),
|
|
227
|
+
(status == null ? void 0 : status.lastError) ? /*#__PURE__*/ _jsx(Alert, {
|
|
228
|
+
severity: "warning",
|
|
229
|
+
children: `${status.lastError.message} (${when(status.lastError.atMs)})`
|
|
230
|
+
}) : null,
|
|
231
|
+
/*#__PURE__*/ _jsx(CopyField, {
|
|
232
|
+
label: "Callback URL",
|
|
233
|
+
value: shippingEasyCallbackUrl(hostId),
|
|
234
|
+
helperText: "Paste this into your API store's settings in ShippingEasy, so each label marks the order shipped here.",
|
|
235
|
+
onCopied: ()=>enqueueSnackbar('Callback URL copied', {
|
|
236
|
+
variant: 'success',
|
|
237
|
+
persist: false
|
|
238
|
+
}),
|
|
239
|
+
onCopyFailed: ()=>enqueueSnackbar('Select the callback URL and copy it.', {
|
|
240
|
+
variant: 'info'
|
|
241
|
+
})
|
|
242
|
+
}),
|
|
243
|
+
/*#__PURE__*/ _jsx(ScrollTable, {
|
|
244
|
+
size: "small",
|
|
245
|
+
"aria-label": "ShippingEasy connection",
|
|
246
|
+
children: /*#__PURE__*/ _jsxs(TableBody, {
|
|
247
|
+
children: [
|
|
248
|
+
/*#__PURE__*/ _jsx(FactRow, {
|
|
249
|
+
label: "API key",
|
|
250
|
+
value: (status == null ? void 0 : status.apiKeyEnding) ? `Ends in ${status.apiKeyEnding}` : ''
|
|
251
|
+
}),
|
|
252
|
+
/*#__PURE__*/ _jsx(FactRow, {
|
|
253
|
+
label: "Store API key",
|
|
254
|
+
value: (status == null ? void 0 : status.storeApiKeyEnding) ? `Ends in ${status.storeApiKeyEnding}` : ''
|
|
255
|
+
}),
|
|
256
|
+
/*#__PURE__*/ _jsx(FactRow, {
|
|
257
|
+
label: "Last order sent",
|
|
258
|
+
value: when(status == null ? void 0 : status.lastPushAtMs)
|
|
259
|
+
}),
|
|
260
|
+
/*#__PURE__*/ _jsx(FactRow, {
|
|
261
|
+
label: "Last shipment received",
|
|
262
|
+
value: when(status == null ? void 0 : status.lastCallbackAtMs)
|
|
263
|
+
})
|
|
264
|
+
]
|
|
265
|
+
})
|
|
266
|
+
})
|
|
267
|
+
]
|
|
268
|
+
})
|
|
269
|
+
]
|
|
270
|
+
}),
|
|
271
|
+
/*#__PURE__*/ _jsxs(Dialog, {
|
|
272
|
+
open: editing,
|
|
273
|
+
onClose: ()=>!busy && setEditing(false),
|
|
274
|
+
fullWidth: true,
|
|
275
|
+
maxWidth: "sm",
|
|
276
|
+
children: [
|
|
277
|
+
/*#__PURE__*/ _jsx(DialogTitle, {
|
|
278
|
+
children: connected ? 'Change ShippingEasy keys' : 'Connect ShippingEasy'
|
|
279
|
+
}),
|
|
280
|
+
/*#__PURE__*/ _jsx(DialogContent, {
|
|
281
|
+
children: /*#__PURE__*/ _jsxs(Stack, {
|
|
282
|
+
spacing: 2,
|
|
283
|
+
sx: {
|
|
284
|
+
pt: 1
|
|
285
|
+
},
|
|
286
|
+
children: [
|
|
287
|
+
/*#__PURE__*/ _jsx(DialogContentText, {
|
|
288
|
+
children: 'In ShippingEasy, the API key and API secret are under Settings → API Credentials, and the ' + 'store API key is on your API store under Settings → Stores & Orders. The secret is kept ' + 'encrypted and is never shown again.'
|
|
289
|
+
}),
|
|
290
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
291
|
+
label: "API key",
|
|
292
|
+
value: keys.apiKey,
|
|
293
|
+
onChange: (event)=>setKeys((current)=>_extends({}, current, {
|
|
294
|
+
apiKey: event.target.value
|
|
295
|
+
})),
|
|
296
|
+
autoComplete: "off",
|
|
297
|
+
fullWidth: true,
|
|
298
|
+
required: true
|
|
299
|
+
}),
|
|
300
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
301
|
+
label: "API secret",
|
|
302
|
+
type: "password",
|
|
303
|
+
value: keys.apiSecret,
|
|
304
|
+
onChange: (event)=>setKeys((current)=>_extends({}, current, {
|
|
305
|
+
apiSecret: event.target.value
|
|
306
|
+
})),
|
|
307
|
+
autoComplete: "new-password",
|
|
308
|
+
fullWidth: true,
|
|
309
|
+
required: true
|
|
310
|
+
}),
|
|
311
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
312
|
+
label: "Store API key",
|
|
313
|
+
value: keys.storeApiKey,
|
|
314
|
+
onChange: (event)=>setKeys((current)=>_extends({}, current, {
|
|
315
|
+
storeApiKey: event.target.value
|
|
316
|
+
})),
|
|
317
|
+
autoComplete: "off",
|
|
318
|
+
fullWidth: true,
|
|
319
|
+
required: true
|
|
320
|
+
})
|
|
321
|
+
]
|
|
322
|
+
})
|
|
323
|
+
}),
|
|
324
|
+
/*#__PURE__*/ _jsxs(DialogActions, {
|
|
325
|
+
children: [
|
|
326
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
327
|
+
disabled: busy,
|
|
328
|
+
onClick: ()=>setEditing(false),
|
|
329
|
+
children: 'Cancel'
|
|
330
|
+
}),
|
|
331
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
332
|
+
variant: "contained",
|
|
333
|
+
disabled: busy || !complete,
|
|
334
|
+
onClick: ()=>void save(),
|
|
335
|
+
children: connected ? 'Save keys' : 'Connect'
|
|
336
|
+
})
|
|
337
|
+
]
|
|
338
|
+
})
|
|
339
|
+
]
|
|
340
|
+
}),
|
|
341
|
+
/*#__PURE__*/ _jsxs(Dialog, {
|
|
342
|
+
open: confirmDisconnect,
|
|
343
|
+
onClose: ()=>setConfirmDisconnect(false),
|
|
344
|
+
children: [
|
|
345
|
+
/*#__PURE__*/ _jsx(DialogTitle, {
|
|
346
|
+
children: 'Disconnect ShippingEasy?'
|
|
347
|
+
}),
|
|
348
|
+
/*#__PURE__*/ _jsx(DialogContent, {
|
|
349
|
+
children: /*#__PURE__*/ _jsx(DialogContentText, {
|
|
350
|
+
children: 'New orders stop going to ShippingEasy, and shipments it sends back are refused. Orders ' + 'already there stay there, and orders already shipped stay shipped. The keys are deleted ' + `from ${PLATFORM_BRAND_NAME}.`
|
|
351
|
+
})
|
|
352
|
+
}),
|
|
353
|
+
/*#__PURE__*/ _jsxs(DialogActions, {
|
|
354
|
+
children: [
|
|
355
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
356
|
+
onClick: ()=>setConfirmDisconnect(false),
|
|
357
|
+
children: 'Cancel'
|
|
358
|
+
}),
|
|
359
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
360
|
+
color: "error",
|
|
361
|
+
disabled: busy,
|
|
362
|
+
onClick: ()=>{
|
|
363
|
+
setConfirmDisconnect(false);
|
|
364
|
+
void act('disconnect');
|
|
365
|
+
},
|
|
366
|
+
children: 'Disconnect'
|
|
367
|
+
})
|
|
368
|
+
]
|
|
369
|
+
})
|
|
370
|
+
]
|
|
371
|
+
})
|
|
372
|
+
]
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
ShippingEasyCard.displayName = 'ShippingEasyCard';
|
|
376
|
+
export default ShippingEasyCard;
|
|
377
|
+
|
|
378
|
+
//# sourceMappingURL=shippingeasy-card.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../libs/plugins/commerce/src/lib/components/console/shippingeasy-card.component.tsx"],"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'use client'\n\nimport { pluginDocsHelp } from '@aglyn/aglyn'\nimport { PLATFORM_BRAND_NAME } from '@aglyn/aglyn/app-utils/platform-brand'\nimport { CardDisplay } from '@aglyn/shared-ui-jsx'\nimport { CopyField } from '@aglyn/shared-ui-jsx/components/copy-field.component'\nimport ScrollTable from '@aglyn/shared-ui-jsx/components/scroll-table.component'\nimport { StatusChip } from '@aglyn/shared-ui-jsx/components/status-chip.component'\nimport { useSnackbar } from '@aglyn/shared-ui-snackstack'\nimport { authorizedFetch } from '@aglyn/shared-util-http/authorized-token'\nimport { useUser } from '@aglyn/tenant-feature-instance'\nimport {\n Alert,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Stack,\n TableBody,\n TableCell,\n TableRow,\n TextField,\n Typography,\n} from '@mui/material'\nimport { useCallback, useEffect, useState } from 'react'\n\nexport interface ShippingEasyCardProps {\n hostId: string\n}\n\n/** What the connectors route answers about a ShippingEasy connection. */\ninterface ConnectionStatus {\n /** Whether this deployment can keep an API secret at all. */\n available?: boolean\n connected: boolean\n apiKeyEnding?: string\n storeApiKeyEnding?: string\n createdAtMs?: number\n updatedAtMs?: number\n lastPushAtMs?: number\n lastCallbackAtMs?: number\n lastError?: { message: string; atMs: number; orderNumber?: string } | null\n sync?: { sent: number; already: number; failed: number; more: boolean }\n}\n\n/** The address ShippingEasy posts shipments to: this console's own origin, never a guess. */\nexport function shippingEasyCallbackUrl(hostId: string, origin?: string): string {\n const base = origin ?? (typeof window === 'undefined' ? '' : window.location.origin)\n return `${base}/api/commerce/shippingeasy/${encodeURIComponent(hostId)}`\n}\n\n/** What one \"Send open orders\" did, in a sentence. */\nexport function describeShippingEasySync(sync: NonNullable<ConnectionStatus['sync']>): string {\n const parts: string[] = []\n parts.push(sync.sent === 1 ? '1 order sent to ShippingEasy' : `${sync.sent} orders sent to ShippingEasy`)\n if (sync.already) parts.push(`${sync.already} already there`)\n if (sync.failed) parts.push(`${sync.failed} not sent`)\n return `${parts.join(', ')}.${sync.more ? ' More open orders are waiting: select Send open orders again.' : ''}`\n}\n\nconst when = (ms: number | undefined): string =>\n ms ? new Date(ms).toLocaleString(undefined, { dateStyle: 'medium', timeStyle: 'short' }) : 'Not yet'\n\n/** One fixed fact of the connection: a label and its value. */\nfunction FactRow(props: { label: string; value: string }) {\n return (\n <TableRow>\n <TableCell component=\"th\" scope=\"row\">\n {props.label}\n </TableCell>\n <TableCell>{props.value}</TableCell>\n </TableRow>\n )\n}\n\nconst EMPTY_KEYS = { apiKey: '', apiSecret: '', storeApiKey: '' }\n\n/**\n * Connect ShippingEasy (AGL-3633): the merchant's API key, API secret and\n * store API key, from their own ShippingEasy account; the callback URL to\n * paste into the API store; send open orders; and disconnect. Paid orders go\n * to ShippingEasy as they are paid, and each label bought there marks the\n * order shipped here. The secret is sealed on the server and never shown\n * again; the card renders nothing on a deployment that cannot seal one.\n */\nexport function ShippingEasyCard(props: ShippingEasyCardProps) {\n const { hostId } = props\n const { data: user } = useUser()\n const { enqueueSnackbar } = useSnackbar()\n const [status, setStatus] = useState<ConnectionStatus | null>(null)\n const [loadError, setLoadError] = useState<string | null>(null)\n const [busy, setBusy] = useState(false)\n const [editing, setEditing] = useState(false)\n const [keys, setKeys] = useState(EMPTY_KEYS)\n const [confirmDisconnect, setConfirmDisconnect] = useState(false)\n\n const uid = user?.uid\n useEffect(() => {\n if (!uid || !user) return\n let live = true\n authorizedFetch(\n user as never,\n `/api/commerce/shipping-connectors?connector=shippingeasy&hostId=${encodeURIComponent(hostId)}`,\n )\n .then(async (response) => {\n const body = await response.json().catch(() => ({}))\n if (!live) return\n if (!response.ok) return setLoadError(body?.error ?? 'The connection could not be read.')\n setLoadError(null)\n setStatus(body as ConnectionStatus)\n })\n .catch(() => live && setLoadError('The connection could not be read.'))\n return () => {\n live = false\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `user` changes identity every render; `uid` is what matters.\n }, [uid, hostId])\n\n const act = useCallback(\n async (action: 'connect' | 'sync' | 'disconnect', extra: Record<string, string> = {}): Promise<boolean> => {\n setBusy(true)\n try {\n const response = await authorizedFetch(user as never, '/api/commerce/shipping-connectors', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ hostId, connector: 'shippingeasy', action, ...extra }),\n })\n const body = (await response.json().catch(() => ({}))) as ConnectionStatus & { error?: string }\n if (!response.ok) {\n enqueueSnackbar(body?.error ?? 'That did not work. Try again.', { variant: 'error', allowDuplicate: true })\n return false\n }\n setStatus(body)\n if (action === 'disconnect') {\n enqueueSnackbar('ShippingEasy is disconnected. New orders are no longer sent to it.', { variant: 'success' })\n } else if (action === 'sync' && body.sync) {\n enqueueSnackbar(describeShippingEasySync(body.sync), { variant: body.sync.failed ? 'warning' : 'success' })\n } else if (action === 'connect') {\n enqueueSnackbar('ShippingEasy is connected. Paste the callback URL into your ShippingEasy API store.', {\n variant: 'success',\n })\n }\n return true\n } finally {\n setBusy(false)\n }\n },\n [user, hostId, enqueueSnackbar],\n )\n\n // A deployment with no secret keyring cannot keep a secret: nothing to offer.\n if (status && status.available === false && !status.connected) return null\n\n const connected = Boolean(status?.connected)\n const openKeys = () => {\n setKeys(EMPTY_KEYS)\n setEditing(true)\n }\n const actions = !status ? null : connected ? (\n <Stack direction=\"row\" spacing={1}>\n <Button size=\"small\" disabled={busy} onClick={() => void act('sync')}>\n {'Send open orders'}\n </Button>\n <Button size=\"small\" disabled={busy} onClick={openKeys}>\n {'Change keys'}\n </Button>\n <Button size=\"small\" color=\"error\" disabled={busy} onClick={() => setConfirmDisconnect(true)}>\n {'Disconnect'}\n </Button>\n </Stack>\n ) : (\n <Button size=\"small\" variant=\"contained\" disabled={busy} onClick={openKeys}>\n {'Connect ShippingEasy'}\n </Button>\n )\n\n const complete = Boolean(keys.apiKey.trim() && keys.apiSecret.trim() && keys.storeApiKey.trim())\n const save = async () => {\n if (await act('connect', keys)) {\n setEditing(false)\n setKeys(EMPTY_KEYS)\n }\n }\n\n return (\n <CardDisplay\n header={'ShippingEasy'}\n help={pluginDocsHelp('shippingEasy', {\n excerpt:\n `${PLATFORM_BRAND_NAME} sends your paid orders to your ShippingEasy account, and each label you buy there ` +\n 'marks the order shipped and emails your customer the tracking link.',\n })}\n HeaderProps={{ action: actions }}\n contentGutterX\n contentGutterY\n >\n <Stack spacing={2}>\n {loadError ? <Alert severity=\"error\">{loadError}</Alert> : null}\n {!connected ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {\n 'Labeling in ShippingEasy? Connect it with the API key, API secret and store API key from your ' +\n 'ShippingEasy account: each order is sent there as it is paid, and each label you buy there ' +\n 'marks the order shipped here and emails your customer the tracking link. Only a site admin ' +\n 'can connect it.'\n }\n </Typography>\n ) : (\n <>\n <div>\n {status?.lastError ? (\n <StatusChip label=\"Needs attention\" tone=\"warning\" data-testid=\"shippingeasy-status\" />\n ) : (\n <StatusChip label=\"Connected\" tone=\"success\" data-testid=\"shippingeasy-status\" />\n )}\n </div>\n {status?.lastError ? (\n <Alert severity=\"warning\">\n {`${status.lastError.message} (${when(status.lastError.atMs)})`}\n </Alert>\n ) : null}\n <CopyField\n label=\"Callback URL\"\n value={shippingEasyCallbackUrl(hostId)}\n helperText=\"Paste this into your API store's settings in ShippingEasy, so each label marks the order shipped here.\"\n onCopied={() => enqueueSnackbar('Callback URL copied', { variant: 'success', persist: false })}\n onCopyFailed={() => enqueueSnackbar('Select the callback URL and copy it.', { variant: 'info' })}\n />\n <ScrollTable size=\"small\" aria-label=\"ShippingEasy connection\">\n <TableBody>\n <FactRow label=\"API key\" value={status?.apiKeyEnding ? `Ends in ${status.apiKeyEnding}` : ''} />\n <FactRow label=\"Store API key\" value={status?.storeApiKeyEnding ? `Ends in ${status.storeApiKeyEnding}` : ''} />\n <FactRow label=\"Last order sent\" value={when(status?.lastPushAtMs)} />\n <FactRow label=\"Last shipment received\" value={when(status?.lastCallbackAtMs)} />\n </TableBody>\n </ScrollTable>\n </>\n )}\n </Stack>\n <Dialog open={editing} onClose={() => !busy && setEditing(false)} fullWidth maxWidth=\"sm\">\n <DialogTitle>{connected ? 'Change ShippingEasy keys' : 'Connect ShippingEasy'}</DialogTitle>\n <DialogContent>\n <Stack spacing={2} sx={{ pt: 1 }}>\n <DialogContentText>\n {\n 'In ShippingEasy, the API key and API secret are under Settings → API Credentials, and the ' +\n 'store API key is on your API store under Settings → Stores & Orders. The secret is kept ' +\n 'encrypted and is never shown again.'\n }\n </DialogContentText>\n <TextField\n label=\"API key\"\n value={keys.apiKey}\n onChange={(event) => setKeys((current) => ({ ...current, apiKey: event.target.value }))}\n autoComplete=\"off\"\n fullWidth\n required\n />\n <TextField\n label=\"API secret\"\n type=\"password\"\n value={keys.apiSecret}\n onChange={(event) => setKeys((current) => ({ ...current, apiSecret: event.target.value }))}\n autoComplete=\"new-password\"\n fullWidth\n required\n />\n <TextField\n label=\"Store API key\"\n value={keys.storeApiKey}\n onChange={(event) => setKeys((current) => ({ ...current, storeApiKey: event.target.value }))}\n autoComplete=\"off\"\n fullWidth\n required\n />\n </Stack>\n </DialogContent>\n <DialogActions>\n <Button disabled={busy} onClick={() => setEditing(false)}>\n {'Cancel'}\n </Button>\n <Button variant=\"contained\" disabled={busy || !complete} onClick={() => void save()}>\n {connected ? 'Save keys' : 'Connect'}\n </Button>\n </DialogActions>\n </Dialog>\n <Dialog open={confirmDisconnect} onClose={() => setConfirmDisconnect(false)}>\n <DialogTitle>{'Disconnect ShippingEasy?'}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {\n 'New orders stop going to ShippingEasy, and shipments it sends back are refused. Orders ' +\n 'already there stay there, and orders already shipped stay shipped. The keys are deleted ' +\n `from ${PLATFORM_BRAND_NAME}.`\n }\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={() => setConfirmDisconnect(false)}>{'Cancel'}</Button>\n <Button\n color=\"error\"\n disabled={busy}\n onClick={() => {\n setConfirmDisconnect(false)\n void act('disconnect')\n }}\n >\n {'Disconnect'}\n </Button>\n </DialogActions>\n </Dialog>\n </CardDisplay>\n )\n}\nShippingEasyCard.displayName = 'ShippingEasyCard'\n\nexport default ShippingEasyCard\n"],"names":["pluginDocsHelp","PLATFORM_BRAND_NAME","CardDisplay","CopyField","ScrollTable","StatusChip","useSnackbar","authorizedFetch","useUser","Alert","Button","Dialog","DialogActions","DialogContent","DialogContentText","DialogTitle","Stack","TableBody","TableCell","TableRow","TextField","Typography","useCallback","useEffect","useState","shippingEasyCallbackUrl","hostId","origin","base","window","location","encodeURIComponent","describeShippingEasySync","sync","parts","push","sent","already","failed","join","more","when","ms","Date","toLocaleString","undefined","dateStyle","timeStyle","FactRow","props","component","scope","label","value","EMPTY_KEYS","apiKey","apiSecret","storeApiKey","ShippingEasyCard","data","user","enqueueSnackbar","status","setStatus","loadError","setLoadError","busy","setBusy","editing","setEditing","keys","setKeys","confirmDisconnect","setConfirmDisconnect","uid","live","then","response","body","json","catch","ok","error","act","action","extra","method","headers","JSON","stringify","connector","variant","allowDuplicate","available","connected","Boolean","openKeys","actions","direction","spacing","size","disabled","onClick","color","complete","trim","save","header","help","excerpt","HeaderProps","contentGutterX","contentGutterY","severity","div","lastError","tone","data-testid","message","atMs","helperText","onCopied","persist","onCopyFailed","aria-label","apiKeyEnding","storeApiKeyEnding","lastPushAtMs","lastCallbackAtMs","open","onClose","fullWidth","maxWidth","sx","pt","onChange","event","current","target","autoComplete","required","type","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
export interface ShipStationCardProps {
|
|
18
|
+
hostId: string;
|
|
19
|
+
}
|
|
20
|
+
/** The address ShipStation calls: this console's own origin, never a guess. */
|
|
21
|
+
export declare function shipStationEndpoint(hostId: string, origin?: string): string;
|
|
22
|
+
/** The status names to type into ShipStation's Custom Store form, in its order. */
|
|
23
|
+
export declare const SHIPSTATION_STATUS_ROWS: ReadonlyArray<readonly [string, string]>;
|
|
24
|
+
/**
|
|
25
|
+
* Connect ShipStation (AGL-3613): the URL, username and password a merchant
|
|
26
|
+
* pastes into ShipStation's Custom Store, the status names to map, a new
|
|
27
|
+
* password and a disconnect. The password is kept sealed on the server and
|
|
28
|
+
* a site admin can show it again; the card renders nothing on a deployment
|
|
29
|
+
* that cannot seal one.
|
|
30
|
+
*/
|
|
31
|
+
export declare function ShipStationCard(props: ShipStationCardProps): import("react").JSX.Element;
|
|
32
|
+
export declare namespace ShipStationCard {
|
|
33
|
+
var displayName: string;
|
|
34
|
+
}
|
|
35
|
+
export default ShipStationCard;
|