@shipengine/elements 2.26.5 → 2.27.0
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/dist/cjs/assets/xcover/logo.svg.cjs +44 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/index.cjs +7 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.cjs +56 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.cjs +27 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-card.cjs +52 -42
- package/dist/cjs/components/field/rate-select/rate-card/rate-card.styles.cjs +4 -0
- package/dist/cjs/components/field/rate-select/rate-select.cjs +80 -49
- package/dist/cjs/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.cjs +1 -1
- package/dist/cjs/data/insurance-provider-metadatas.json.cjs +10 -4
- package/dist/cjs/elements/customs-form/customs-form-element.cjs +294 -0
- package/dist/cjs/elements/customs-form/customs-form-element.stories.cjs +243 -0
- package/dist/cjs/elements/customs-form/customs-form-schema.cjs +59 -0
- package/dist/cjs/elements/customs-form/customs-form-types.cjs +63 -0
- package/dist/cjs/elements/customs-form/index.cjs +10 -0
- package/dist/cjs/elements/index.cjs +5 -0
- package/dist/cjs/elements/manage-carriers/manage-carriers.cjs +1 -1
- package/dist/cjs/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.cjs +1 -1
- package/dist/cjs/elements/purchase-label/components/index.cjs +2 -0
- package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +1 -1
- package/dist/cjs/elements/purchase-label/components/shipment-form/shipment-form.cjs +4 -3
- package/dist/cjs/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.cjs +35 -11
- package/dist/cjs/elements/purchase-label/hooks/use-insurance-provider-options.cjs +2 -2
- package/dist/cjs/factories/shipengine/address.cjs +114 -0
- package/dist/cjs/factories/shipengine/money.cjs +21 -0
- package/dist/cjs/factories/shipengine/order-source.cjs +37 -0
- package/dist/cjs/factories/shipengine/package.cjs +41 -0
- package/dist/cjs/factories/shipengine/resource.cjs +23 -0
- package/dist/cjs/factories/shipengine/shipment.cjs +176 -0
- package/dist/cjs/factories/shipengine/weight.cjs +44 -0
- package/dist/cjs/factories/utils.cjs +19 -0
- package/dist/cjs/features/manage-carriers/hooks/use-list-funding-source-carriers.cjs +4 -6
- package/dist/cjs/features/manage-carriers/manage-carriers.cjs +8 -6
- package/dist/cjs/hooks/use-configure-shipment.cjs +47 -14
- package/dist/cjs/hooks/use-get-funding-source-insurance-provider.cjs +7 -7
- package/dist/cjs/hooks/use-import-sales-order.cjs +45 -20
- package/dist/cjs/hooks/use-manage-funding-source-insurance.cjs +15 -23
- package/dist/cjs/index.cjs +5 -0
- package/dist/cjs/locales/en/common.json.cjs +1 -1
- package/dist/cjs/locales/en/purchase-label.json.cjs +9 -1
- package/dist/cjs/package.json.cjs +1 -1
- package/dist/cjs/utilities/feature-flags/feature-flags.cjs +1 -0
- package/dist/cjs/utilities/shipengine/carrier.cjs +4 -0
- package/dist/cjs/utilities/shipengine/index.cjs +3 -0
- package/dist/cjs/utilities/shipengine/insurance.cjs +63 -0
- package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.cjs +9 -9
- package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +3 -2
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +8 -6
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +4 -19
- package/dist/esm/assets/xcover/logo.svg.js +23 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/index.js +1 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.js +54 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.js +25 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-card.js +52 -42
- package/dist/esm/components/field/rate-select/rate-card/rate-card.styles.js +4 -0
- package/dist/esm/components/field/rate-select/rate-select.js +80 -49
- package/dist/esm/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.js +1 -1
- package/dist/esm/data/insurance-provider-metadatas.json.js +9 -4
- package/dist/esm/elements/customs-form/customs-form-element.js +291 -0
- package/dist/esm/elements/customs-form/customs-form-element.stories.js +232 -0
- package/dist/esm/elements/customs-form/customs-form-schema.js +56 -0
- package/dist/esm/elements/customs-form/customs-form-types.js +60 -0
- package/dist/esm/elements/customs-form/index.js +3 -0
- package/dist/esm/elements/index.js +3 -0
- package/dist/esm/elements/manage-carriers/manage-carriers.js +1 -1
- package/dist/esm/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.js +1 -1
- package/dist/esm/elements/purchase-label/components/index.js +1 -0
- package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +1 -1
- package/dist/esm/elements/purchase-label/components/shipment-form/shipment-form.js +4 -3
- package/dist/esm/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.js +35 -11
- package/dist/esm/elements/purchase-label/hooks/use-insurance-provider-options.js +2 -2
- package/dist/esm/elements-provider/elements-context-provider.js +1 -1
- package/dist/esm/factories/shipengine/address.js +111 -0
- package/dist/esm/factories/shipengine/money.js +19 -0
- package/dist/esm/factories/shipengine/order-source.js +34 -0
- package/dist/esm/factories/shipengine/package.js +39 -0
- package/dist/esm/factories/shipengine/resource.js +21 -0
- package/dist/esm/factories/shipengine/shipment.js +168 -0
- package/dist/esm/factories/shipengine/weight.js +40 -0
- package/dist/esm/factories/utils.js +15 -0
- package/dist/esm/features/manage-carriers/hooks/use-list-funding-source-carriers.js +5 -7
- package/dist/esm/features/manage-carriers/manage-carriers.js +8 -6
- package/dist/esm/hooks/use-configure-shipment.js +47 -14
- package/dist/esm/hooks/use-get-funding-source-insurance-provider.js +7 -7
- package/dist/esm/hooks/use-import-sales-order.js +47 -22
- package/dist/esm/hooks/use-manage-funding-source-insurance.js +15 -23
- package/dist/esm/index.js +3 -0
- package/dist/esm/locales/en/common.json.js +1 -1
- package/dist/esm/locales/en/purchase-label.json.js +9 -1
- package/dist/esm/package.json.js +1 -1
- package/dist/esm/utilities/feature-flags/feature-flags.js +1 -0
- package/dist/esm/utilities/shipengine/carrier.js +4 -0
- package/dist/esm/utilities/shipengine/index.js +1 -1
- package/dist/esm/utilities/shipengine/insurance.js +61 -1
- package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.js +9 -9
- package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +3 -2
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +8 -6
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +5 -20
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts +2 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts.map +1 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts +8 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts.map +1 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts +22 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts.map +1 -0
- package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts +3 -2
- package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts.map +1 -1
- package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts +4 -0
- package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts.map +1 -1
- package/dist/types/components/field/rate-select/rate-select.d.ts.map +1 -1
- package/dist/types/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.d.ts.map +1 -1
- package/dist/types/elements/customs-form/customs-form-element.d.ts +1219 -0
- package/dist/types/elements/customs-form/customs-form-element.d.ts.map +1 -0
- package/dist/types/elements/customs-form/customs-form-element.stories.d.ts +12 -0
- package/dist/types/elements/customs-form/customs-form-element.stories.d.ts.map +1 -0
- package/dist/types/elements/customs-form/customs-form-schema.d.ts +398 -0
- package/dist/types/elements/customs-form/customs-form-schema.d.ts.map +1 -0
- package/dist/types/elements/customs-form/customs-form-types.d.ts +139 -0
- package/dist/types/elements/customs-form/customs-form-types.d.ts.map +1 -0
- package/dist/types/elements/customs-form/index.d.ts +4 -0
- package/dist/types/elements/customs-form/index.d.ts.map +1 -0
- package/dist/types/elements/index.d.ts +1 -0
- package/dist/types/elements/index.d.ts.map +1 -1
- package/dist/types/elements/labels-grid/labels-grid.d.ts +9 -1
- package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts +9 -1
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts.map +1 -1
- package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts +9 -1
- package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts.map +1 -1
- package/dist/types/elements/manage-funding/manage-funding-element.d.ts +9 -1
- package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
- package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +9 -1
- package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts.map +1 -1
- package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts +9 -1
- package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/index.d.ts +1 -0
- package/dist/types/elements/purchase-label/components/index.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/shipment-form/shipment-form.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts +5 -1
- package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/hooks/use-insurance-provider-options.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/purchase-label.d.ts +9 -1
- package/dist/types/elements/purchase-label/purchase-label.d.ts.map +1 -1
- package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts +9 -1
- package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts.map +1 -1
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts +9 -1
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts +9 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
- package/dist/types/elements/theme-creator/theme-creator.d.ts +9 -1
- package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
- package/dist/types/elements/transaction-history/transaction-history-element.d.ts +9 -1
- package/dist/types/elements/transaction-history/transaction-history-element.d.ts.map +1 -1
- package/dist/types/elements/unit-settings/unit-settings-element.d.ts +9 -1
- package/dist/types/elements/unit-settings/unit-settings-element.d.ts.map +1 -1
- package/dist/types/elements/vat-settings/vat-settings-element.d.ts +9 -1
- package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
- package/dist/types/elements/void-label/void-label.d.ts +9 -1
- package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
- package/dist/types/features/manage-carriers/hooks/use-list-funding-source-carriers.d.ts.map +1 -1
- package/dist/types/features/manage-carriers/manage-carriers.d.ts.map +1 -1
- package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
- package/dist/types/hooks/use-get-funding-source-insurance-provider.d.ts.map +1 -1
- package/dist/types/hooks/use-import-sales-order.d.ts +20 -1
- package/dist/types/hooks/use-import-sales-order.d.ts.map +1 -1
- package/dist/types/hooks/use-manage-funding-source-insurance.d.ts +3 -4
- package/dist/types/hooks/use-manage-funding-source-insurance.d.ts.map +1 -1
- package/dist/types/locales/en/index.d.ts +9 -1
- package/dist/types/locales/en/index.d.ts.map +1 -1
- package/dist/types/types/insurance-metadata.d.ts +1 -1
- package/dist/types/types/insurance-metadata.d.ts.map +1 -1
- package/dist/types/types/rates.d.ts +1 -0
- package/dist/types/types/rates.d.ts.map +1 -1
- package/dist/types/utilities/feature-flags/feature-flags.d.ts.map +1 -1
- package/dist/types/utilities/feature-flags/types.d.ts +4 -0
- package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
- package/dist/types/utilities/shipengine/carrier.d.ts.map +1 -1
- package/dist/types/utilities/shipengine/insurance.d.ts +31 -0
- package/dist/types/utilities/shipengine/insurance.d.ts.map +1 -1
- package/dist/types/workflows/account-settings/account-settings.d.ts +9 -1
- package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
- package/dist/types/workflows/carrier-services/carrier-services.d.ts +9 -1
- package/dist/types/workflows/carrier-services/carrier-services.d.ts.map +1 -1
- package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts +9 -1
- package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts.map +1 -1
- package/dist/types/workflows/label-workflow/label-workflow.d.ts +9 -1
- package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts +1 -5
- package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/onboarding.d.ts +9 -1
- package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -104,7 +104,8 @@ const ShipmentForm = ({
|
|
|
104
104
|
const {
|
|
105
105
|
locale: defaultLocale,
|
|
106
106
|
globalFeatures: {
|
|
107
|
-
enableParcelGuard
|
|
107
|
+
enableParcelGuard,
|
|
108
|
+
enableXCover
|
|
108
109
|
}
|
|
109
110
|
} = useElements();
|
|
110
111
|
const {
|
|
@@ -532,7 +533,7 @@ const ShipmentForm = ({
|
|
|
532
533
|
}, []);
|
|
533
534
|
const insuranceProviderKey = useMemo(() => {
|
|
534
535
|
var _a, _b, _c;
|
|
535
|
-
if (enableParcelGuard && !hasInsuranceToRegister) {
|
|
536
|
+
if ((enableParcelGuard || enableXCover) && !hasInsuranceToRegister) {
|
|
536
537
|
const provider = (_a = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles[0]) === null || _a === void 0 ? void 0 : _a.provider;
|
|
537
538
|
const fundingSourceProviderKey = getFundingSourceInsuranceProviderKey(provider);
|
|
538
539
|
if (fundingSourceProviderKey) {
|
|
@@ -540,7 +541,7 @@ const ShipmentForm = ({
|
|
|
540
541
|
}
|
|
541
542
|
}
|
|
542
543
|
return (_c = (_b = insuranceProviderOptions[0]) === null || _b === void 0 ? void 0 : _b.value.toUpperCase()) !== null && _c !== void 0 ? _c : "NONE";
|
|
543
|
-
}, [enableParcelGuard, hasInsuranceToRegister, insuranceProviderOptions, insuranceProviderProfiles, getFundingSourceInsuranceProviderKey]);
|
|
544
|
+
}, [enableParcelGuard, enableXCover, hasInsuranceToRegister, insuranceProviderOptions, insuranceProviderProfiles, getFundingSourceInsuranceProviderKey]);
|
|
544
545
|
const [registerInsuranceForm, isRegisterInsuranceFormOpen, toggleisRegisterInsuranceFormOpen] = useNestedForm(RegisterFundingSourceInsuranceForm, {
|
|
545
546
|
formId: "register-funding-source-insurance-form",
|
|
546
547
|
insuranceProviderProfile: insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles[0],
|
|
@@ -1,24 +1,48 @@
|
|
|
1
1
|
import { useMemo, useCallback } from 'react';
|
|
2
2
|
|
|
3
3
|
const COLLAPSED_RATE_VIEW_LIMIT = 4;
|
|
4
|
-
const filterRateOptions =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
4
|
+
const filterRateOptions = rateOptions => {
|
|
5
|
+
const hasRateAttributes = option => {
|
|
6
|
+
var _a;
|
|
7
|
+
return !!((_a = option.rateAttributes) === null || _a === void 0 ? void 0 : _a.length);
|
|
8
|
+
};
|
|
9
|
+
const isMediaMail = option => option.serviceCode === "usps_media_mail";
|
|
10
|
+
const result = [];
|
|
11
|
+
const ratesWithAttributes = [];
|
|
12
|
+
const ratesWithoutAttributes = [];
|
|
13
|
+
// Classify rates (excluding Media Mail from both categories)
|
|
14
|
+
for (const option of rateOptions) {
|
|
15
|
+
if (isMediaMail(option)) {
|
|
16
|
+
continue; // Skip Media Mail entirely - it will only show in "Show more"
|
|
17
|
+
}
|
|
18
|
+
if (hasRateAttributes(option)) {
|
|
19
|
+
ratesWithAttributes.push(option);
|
|
20
|
+
} else {
|
|
21
|
+
ratesWithoutAttributes.push(option);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Add up to 3 rates with attributes
|
|
25
|
+
const attributedRatesToShow = ratesWithAttributes.slice(0, 3);
|
|
26
|
+
result.push(...attributedRatesToShow);
|
|
27
|
+
// Fill remaining slots up to COLLAPSED_RATE_VIEW_LIMIT (4) with regular rates
|
|
28
|
+
const remainingSlots = COLLAPSED_RATE_VIEW_LIMIT - result.length;
|
|
29
|
+
const regularRatesToShow = ratesWithoutAttributes.slice(0, remainingSlots);
|
|
30
|
+
result.push(...regularRatesToShow);
|
|
31
|
+
return result;
|
|
12
32
|
};
|
|
13
33
|
/**
|
|
14
34
|
* @internal
|
|
15
35
|
*
|
|
16
36
|
* # Filter Visible Rate Options Hook
|
|
17
37
|
*
|
|
38
|
+
* Filters rate options for the collapsed view, showing up to 4 rates:
|
|
39
|
+
* - Up to 3 rates with attributes (best_value, cheapest, fastest)
|
|
40
|
+
* - Fill remaining slots with regular rates
|
|
41
|
+
* - Media Mail is always excluded from the collapsed view
|
|
18
42
|
*/
|
|
19
|
-
const useFilterVisibleRateOptions =
|
|
20
|
-
const collapsedRateOptionList = useMemo(() => filterRateOptions(rateOptions
|
|
21
|
-
const filterVisibleRateOptions = useCallback(options => filterRateOptions(options
|
|
43
|
+
const useFilterVisibleRateOptions = rateOptions => {
|
|
44
|
+
const collapsedRateOptionList = useMemo(() => filterRateOptions(rateOptions), [rateOptions]);
|
|
45
|
+
const filterVisibleRateOptions = useCallback(options => filterRateOptions(options), []);
|
|
22
46
|
return {
|
|
23
47
|
COLLAPSED_RATE_VIEW_LIMIT,
|
|
24
48
|
collapsedRateOptionList,
|
|
@@ -24,11 +24,11 @@ const useInsuranceProviderOptions = (insuranceAccount, features) => {
|
|
|
24
24
|
refetchInsuranceAcceptedTerms
|
|
25
25
|
} = useGetFundingSourceInsuranceProvider();
|
|
26
26
|
const insuranceProviderOptions = useMemo(() => Object.values(SE.InsuranceProviderType).flatMap(v => {
|
|
27
|
-
return v === "none" || v === "funding_source" || v === "parcelguard" && (v !== fundingSourceInsuranceProvider || !globalFeatures.enableParcelGuard) || v === "x_cover" && v !== fundingSourceInsuranceProvider || v === "carrier" && !(features === null || features === void 0 ? void 0 : features.includeCarrierInsurance) || v === "third_party" && !(features === null || features === void 0 ? void 0 : features.includeThirdPartyInsurance) || v === "shipsurance" && (!(insuranceAccount === null || insuranceAccount === void 0 ? void 0 : insuranceAccount.amount) || !(features === null || features === void 0 ? void 0 : features.includeShipsuranceInsurance)) ? [] : {
|
|
27
|
+
return v === "none" || v === "funding_source" || v === "parcelguard" && (v !== fundingSourceInsuranceProvider || !globalFeatures.enableParcelGuard) || v === "x_cover" && (v !== fundingSourceInsuranceProvider || !globalFeatures.enableXCover) || v === "carrier" && !(features === null || features === void 0 ? void 0 : features.includeCarrierInsurance) || v === "third_party" && !(features === null || features === void 0 ? void 0 : features.includeThirdPartyInsurance) || v === "shipsurance" && (!(insuranceAccount === null || insuranceAccount === void 0 ? void 0 : insuranceAccount.amount) || !(features === null || features === void 0 ? void 0 : features.includeShipsuranceInsurance)) ? [] : {
|
|
28
28
|
label: t(`insuranceProviders.${humps.camelize(v)}`),
|
|
29
29
|
value: v
|
|
30
30
|
};
|
|
31
|
-
}), [fundingSourceInsuranceProvider, globalFeatures.enableParcelGuard, features, insuranceAccount === null || insuranceAccount === void 0 ? void 0 : insuranceAccount.amount, t]);
|
|
31
|
+
}), [fundingSourceInsuranceProvider, globalFeatures.enableParcelGuard, globalFeatures.enableXCover, features, insuranceAccount === null || insuranceAccount === void 0 ? void 0 : insuranceAccount.amount, t]);
|
|
32
32
|
return {
|
|
33
33
|
fundingSourceInsuranceProvider,
|
|
34
34
|
insuranceProviderOptions,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx } from '@emotion/react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { useContext, createContext } from 'react';
|
|
3
3
|
import { getDefaultFeatures, deepMergeFeatures } from '../utilities/feature-flags/feature-flags.js';
|
|
4
4
|
|
|
5
5
|
const DEFAULT_LOCALE = "en-US";
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
import { Factory } from 'fishery';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @category Factories
|
|
6
|
+
*/
|
|
7
|
+
const addressFactory = Factory.define(({
|
|
8
|
+
params,
|
|
9
|
+
transientParams
|
|
10
|
+
}) => {
|
|
11
|
+
var _a, _b, _c, _d;
|
|
12
|
+
const addressLine2 = (_a = params.addressLine2) !== null && _a !== void 0 ? _a : faker.helpers.maybe(() => faker.address.secondaryAddress(), {
|
|
13
|
+
probability: 0.25
|
|
14
|
+
});
|
|
15
|
+
const addressLine3 = (_b = params.addressLine3) !== null && _b !== void 0 ? _b : addressLine2 && faker.helpers.maybe(() => faker.address.secondaryAddress());
|
|
16
|
+
let countryCode = (_c = params.countryCode) !== null && _c !== void 0 ? _c : "US";
|
|
17
|
+
// Random country code could still be US
|
|
18
|
+
while (transientParams.isInternational && countryCode === "US") {
|
|
19
|
+
countryCode = faker.address.countryCode();
|
|
20
|
+
}
|
|
21
|
+
const stateProvince = (_d = params.stateProvince) !== null && _d !== void 0 ? _d : faker.address.stateAbbr();
|
|
22
|
+
return {
|
|
23
|
+
addressLine1: faker.address.streetAddress(),
|
|
24
|
+
addressLine2,
|
|
25
|
+
addressLine3,
|
|
26
|
+
addressResidentialIndicator: faker.helpers.maybe(() => faker.helpers.arrayElement(["yes", "no"])),
|
|
27
|
+
cityLocality: faker.address.city(),
|
|
28
|
+
companyName: faker.helpers.maybe(() => faker.company.name()),
|
|
29
|
+
countryCode,
|
|
30
|
+
name: faker.name.fullName(),
|
|
31
|
+
phone: faker.phone.number(),
|
|
32
|
+
postalCode: faker.address.zipCodeByState(stateProvince),
|
|
33
|
+
stateProvince
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* @category Factories
|
|
38
|
+
*/
|
|
39
|
+
const addressValidationFactory = Factory.define(({
|
|
40
|
+
associations,
|
|
41
|
+
params
|
|
42
|
+
}) => {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
const status = params.status || faker.helpers.arrayElement(["unverified", "verified", "warning", "error"]);
|
|
45
|
+
return {
|
|
46
|
+
matchedAddress: (_a = associations.matchedAddress) !== null && _a !== void 0 ? _a : faker.helpers.maybe(() => addressFactory.build(), {
|
|
47
|
+
probability: ["verified", "error"].includes(status) ? 0 : 0.8
|
|
48
|
+
}),
|
|
49
|
+
messages: [],
|
|
50
|
+
originalAddress: (_b = associations.originalAddress) !== null && _b !== void 0 ? _b : addressFactory.build(),
|
|
51
|
+
status
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Mock the addressValidation object used to hyrdate address valiation feature
|
|
56
|
+
* on the shipment form.
|
|
57
|
+
* @category Factory
|
|
58
|
+
*/
|
|
59
|
+
Factory.define(({
|
|
60
|
+
params
|
|
61
|
+
}) => {
|
|
62
|
+
const addressValidation = addressValidationFactory.build({
|
|
63
|
+
status: params.status
|
|
64
|
+
}, {
|
|
65
|
+
associations: {
|
|
66
|
+
matchedAddress: addressFactory.build()
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
if (!addressValidation.matchedAddress) throw new Error("addressPreferenceFactory did not generate a matchedAddress");
|
|
70
|
+
return Object.assign(Object.assign({}, addressValidation), {
|
|
71
|
+
alternative: addressValidation.originalAddress,
|
|
72
|
+
alternativeSource: "originalAddress",
|
|
73
|
+
isModified: true,
|
|
74
|
+
selection: addressValidation.matchedAddress,
|
|
75
|
+
selectionSource: "matchedAddress",
|
|
76
|
+
toggle: () => addressFactory.build()
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
/**
|
|
80
|
+
* Mock the addressValidationPreference object used to hyrdate the address valiation feature
|
|
81
|
+
* used for warehouse management and onboarding.
|
|
82
|
+
* @category Factory
|
|
83
|
+
*/
|
|
84
|
+
Factory.define(() => {
|
|
85
|
+
const addressValidation = addressValidationFactory.build();
|
|
86
|
+
const address = addressFactory.build();
|
|
87
|
+
const validationType = faker.helpers.arrayElement(["EXACT", "SOFT", "SUGGESTED", "ERROR"]);
|
|
88
|
+
switch (validationType) {
|
|
89
|
+
case "EXACT":
|
|
90
|
+
case "SOFT":
|
|
91
|
+
return {
|
|
92
|
+
address: address,
|
|
93
|
+
validationType: faker.helpers.arrayElement(["EXACT", "SOFT"])
|
|
94
|
+
};
|
|
95
|
+
case "SUGGESTED":
|
|
96
|
+
case "ERROR":
|
|
97
|
+
return {
|
|
98
|
+
validation: addressValidation,
|
|
99
|
+
validationType: faker.helpers.arrayElement(["SUGGESTED", "ERROR"])
|
|
100
|
+
};
|
|
101
|
+
default:
|
|
102
|
+
{
|
|
103
|
+
return {
|
|
104
|
+
validation: addressValidation,
|
|
105
|
+
validationType: "ERROR"
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
export { addressFactory, addressValidationFactory };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
import { SE } from '@shipengine/react-api';
|
|
3
|
+
import { Factory } from 'fishery';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @category Factories
|
|
7
|
+
*/
|
|
8
|
+
const moneyFactory = Factory.define(({
|
|
9
|
+
transientParams
|
|
10
|
+
}) => ({
|
|
11
|
+
amount: faker.datatype.number({
|
|
12
|
+
max: 1000,
|
|
13
|
+
min: 5,
|
|
14
|
+
precision: 0.01
|
|
15
|
+
}),
|
|
16
|
+
currency: (transientParams === null || transientParams === void 0 ? void 0 : transientParams.isInternational) ? faker.helpers.arrayElement(Object.values(SE.Currency)) : SE.Currency.USD
|
|
17
|
+
}));
|
|
18
|
+
|
|
19
|
+
export { moneyFactory };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
import { Factory } from 'fishery';
|
|
3
|
+
|
|
4
|
+
const randomOrderSourceCode = () => faker.helpers.arrayElement(["3dcart", "abantecart", "acumatica", "acumatica_v2", "alibaba", "amazon", "amazon_au", "amazon_ca", "amazon_de", "amazon_es", "amazon_fr", "amazon_it", "amazon_jp", "amazon_mx", "amazon_uk", "americommerce", "auctane-orders", "back-market", "bandcamp", "big_cartel", "bigcommerce", "bigcommerce_v3", "bigcommerce_v2", "bizelo", "bluepark", "bonanza", "brightpearl", "cdiscount", "celery", "channeladvisor", "channelsale", "choxi", "cin7", "commerceinterface", "corecommerce", "coupang", "cratejoy", "cs-cart", "custom_store", "dear_systems", "dummy-marketplace", "ebay", "ebay_au", "ebay_ca", "ebay_uk", "ebay_fr", "ebay_v2", "ecwid", "ecwid_v1", "edesk", "ekm", "etsy", "facebook", "fnac", "foxycart", "freestyle", "fullscreen_direct", "geekseller", "goodsie", "google", "google_checkout", "gorgias", "groopdealz", "groupon_goods", "handshake", "hatch", "highwire", "homeroots", "houzz", "idealo_de", "inksoft", "jane", "jet", "kaufland", "labelapi", "lemonstand", "lengow", "liftoff", "linnworks", "listingmirror", "magento", "zoey", "magento_go", "memberly", "mercado_libre", "mijoshop", "best_buy_ca", "catch", "darty", "fanatics", "kohls", "kroger", "urbn", "miva_merchant", "morecommerce", "mozu", "neto", "newegg", "newegg_business", "newegg_ca", "notonthehighstreet", "oauth_dummy", "odbc", "onbuy", "opencart", "order_time", "ordersource_api", "oscommerce", "overstock", "oxatis", "paypal", "paypal_v2", "payvment", "penny", "prestashop", "rakuten", "best_buy", "rakuten-fr", "rate_browser", "redditgifts", "reverb", "revolutionparts", "salesforce_commerce_cloud", "salesforce_core", "sap_anywhere", "scout_topshelf", "sears", "securestore", "sellbrite", "selleractive", "shipengine_api", "shipengine_merchant", "shipstation", "shop_premium_outlets", "shopify", "shoppingfeed", "shopware_de", "simplepart", "skuvault", "soldsie", "sophio", "spark_shipping", "spree", "spreesy", "square", "squarespace", "stitch_labs", "storenvy", "stripe", "suredone", "tanga", "tophatter", "trade_me", "tradegecko", "ultracart", "unbranded_ecommerce_store", "unleashed", "vault", "visualsoft", "volo", "volusion", "vtex", "walmart", "walmart_ca", "wayfair", "webflow", "weebly", "wish", "wix", "woocommerce", "woocommerce_v2", "woot", "x-cart", "yahoo", "sec_yumbles", "zen_cart", "zonos"]);
|
|
5
|
+
/**
|
|
6
|
+
* @category Factories
|
|
7
|
+
*/
|
|
8
|
+
const orderSourceRefreshInfoFactory = Factory.define(() => {
|
|
9
|
+
const lastRefreshAttempt = faker.date.recent();
|
|
10
|
+
return {
|
|
11
|
+
lastRefreshAttempt: lastRefreshAttempt.toISOString(),
|
|
12
|
+
refreshDate: faker.date.recent(1, lastRefreshAttempt).toISOString(),
|
|
13
|
+
status: faker.helpers.arrayElement(["idle", "preparing_update", "updating", "error", "unknown"])
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* @category Factories
|
|
18
|
+
*/
|
|
19
|
+
Factory.define(({
|
|
20
|
+
associations,
|
|
21
|
+
params
|
|
22
|
+
}) => {
|
|
23
|
+
var _a;
|
|
24
|
+
return {
|
|
25
|
+
active: faker.datatype.boolean(),
|
|
26
|
+
orderSourceCode: randomOrderSourceCode(),
|
|
27
|
+
orderSourceFriendlyName: faker.company.name(),
|
|
28
|
+
orderSourceId: faker.datatype.uuid(),
|
|
29
|
+
orderSourceNickname: faker.random.words(),
|
|
30
|
+
refreshInfo: (_a = associations.refreshInfo) !== null && _a !== void 0 ? _a : orderSourceRefreshInfoFactory.build(params.refreshInfo)
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
export { orderSourceRefreshInfoFactory, randomOrderSourceCode };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
import { Factory } from 'fishery';
|
|
3
|
+
import { randomShipengineSlug } from '../utils.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*
|
|
8
|
+
* # Package Factory
|
|
9
|
+
*
|
|
10
|
+
* @category Factories
|
|
11
|
+
*/
|
|
12
|
+
const packageFactory = Factory.define(({
|
|
13
|
+
transientParams
|
|
14
|
+
}) => ({
|
|
15
|
+
description: faker.lorem.sentence(),
|
|
16
|
+
dimensions: (transientParams === null || transientParams === void 0 ? void 0 : transientParams.noDimensions) ? undefined : {
|
|
17
|
+
height: faker.datatype.number({
|
|
18
|
+
max: 50,
|
|
19
|
+
min: 1,
|
|
20
|
+
precision: 0.1
|
|
21
|
+
}),
|
|
22
|
+
length: faker.datatype.number({
|
|
23
|
+
max: 50,
|
|
24
|
+
min: 1,
|
|
25
|
+
precision: 0.1
|
|
26
|
+
}),
|
|
27
|
+
unit: faker.helpers.arrayElement(["inch", "centimeter"]),
|
|
28
|
+
width: faker.datatype.number({
|
|
29
|
+
max: 50,
|
|
30
|
+
min: 1,
|
|
31
|
+
precision: 0.1
|
|
32
|
+
})
|
|
33
|
+
},
|
|
34
|
+
name: faker.random.words(),
|
|
35
|
+
packageCode: randomShipengineSlug(2),
|
|
36
|
+
packageId: randomShipengineSlug(3)
|
|
37
|
+
}));
|
|
38
|
+
|
|
39
|
+
export { packageFactory };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
import { Factory } from 'fishery';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @category Factories
|
|
6
|
+
*/
|
|
7
|
+
const downloadFactory = Factory.define(() => ({
|
|
8
|
+
href: faker.internet.url(),
|
|
9
|
+
pdf: faker.internet.url(),
|
|
10
|
+
png: faker.internet.url(),
|
|
11
|
+
zpl: faker.internet.url()
|
|
12
|
+
}));
|
|
13
|
+
/**
|
|
14
|
+
* @category Factories
|
|
15
|
+
*/
|
|
16
|
+
Factory.define(() => ({
|
|
17
|
+
href: faker.internet.url(),
|
|
18
|
+
type: faker.word.noun()
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
export { downloadFactory };
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { __rest } from '../../_virtual/_tslib.js';
|
|
2
|
+
import { faker } from '@faker-js/faker';
|
|
3
|
+
import { SE } from '@shipengine/react-api';
|
|
4
|
+
import { Factory } from 'fishery';
|
|
5
|
+
import { randomShipengineSlug, randomShipengineId, tristateValue } from '../utils.js';
|
|
6
|
+
import { addressFactory, addressValidationFactory } from './address.js';
|
|
7
|
+
import { moneyFactory } from './money.js';
|
|
8
|
+
import { randomOrderSourceCode } from './order-source.js';
|
|
9
|
+
import { packageFactory } from './package.js';
|
|
10
|
+
import { downloadFactory } from './resource.js';
|
|
11
|
+
import { weightWithUnitFactory } from './weight.js';
|
|
12
|
+
|
|
13
|
+
const randomDeliveryConfirmation = () => faker.helpers.arrayElement(Object.values(SE.ConfirmationType));
|
|
14
|
+
const randomInsuranceProvider = (allowNone = true) => {
|
|
15
|
+
const availableProviders = Object.values(SE.InsuranceProviderType).filter(p => allowNone ? p : p !== "none");
|
|
16
|
+
return faker.helpers.arrayElement(availableProviders);
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @category Factories
|
|
20
|
+
*/
|
|
21
|
+
const productFactory = Factory.define(() => ({
|
|
22
|
+
countryOfOrigin: faker.address.countryCode(),
|
|
23
|
+
description: faker.commerce.productName(),
|
|
24
|
+
harmonizedTariffCode: faker.datatype.string(),
|
|
25
|
+
quantity: faker.datatype.number({
|
|
26
|
+
max: 10,
|
|
27
|
+
min: 1
|
|
28
|
+
}),
|
|
29
|
+
sku: faker.random.numeric(10),
|
|
30
|
+
skuDescription: faker.helpers.maybe(() => faker.lorem.sentence()),
|
|
31
|
+
unitOfMeasure: faker.helpers.maybe(() => faker.word.noun()),
|
|
32
|
+
value: moneyFactory.build()
|
|
33
|
+
}));
|
|
34
|
+
/**
|
|
35
|
+
* @category Factories
|
|
36
|
+
*/
|
|
37
|
+
const shipmentItemFactory = Factory.define(({
|
|
38
|
+
params
|
|
39
|
+
}) => ({
|
|
40
|
+
asin: faker.helpers.maybe(() => faker.random.alphaNumeric(10)),
|
|
41
|
+
externalOrderId: faker.random.alphaNumeric(10),
|
|
42
|
+
externalOrderItemId: faker.random.alphaNumeric(10),
|
|
43
|
+
name: faker.commerce.productName(),
|
|
44
|
+
orderSourceCode: randomOrderSourceCode(),
|
|
45
|
+
quantity: faker.datatype.number({
|
|
46
|
+
max: 10,
|
|
47
|
+
min: 1
|
|
48
|
+
}),
|
|
49
|
+
salesOrderItemId: params.salesOrderId && faker.random.alphaNumeric(6),
|
|
50
|
+
sku: faker.random.numeric(10)
|
|
51
|
+
}));
|
|
52
|
+
/**
|
|
53
|
+
* @category Factories
|
|
54
|
+
*/
|
|
55
|
+
const shipmentPackageFactory = Factory.define(({
|
|
56
|
+
associations,
|
|
57
|
+
params,
|
|
58
|
+
transientParams
|
|
59
|
+
}) => {
|
|
60
|
+
var _a, _b, _c, _d, _e;
|
|
61
|
+
const _f = packageFactory.build(params),
|
|
62
|
+
pkg = __rest(_f, ["name"]);
|
|
63
|
+
const isInsured = tristateValue(true, false, faker.datatype.boolean(), (_b = (_a = params.insuredValue) === null || _a === void 0 ? void 0 : _a.amount) !== null && _b !== void 0 ? _b : transientParams.isInsured);
|
|
64
|
+
return Object.assign(Object.assign({}, pkg), {
|
|
65
|
+
insuredValue: (_c = associations.insuredValue) !== null && _c !== void 0 ? _c : isInsured ? moneyFactory.build(params.insuredValue) : undefined,
|
|
66
|
+
labelDownload: (_d = associations.labelDownload) !== null && _d !== void 0 ? _d : transientParams.isShipped ? downloadFactory.build(params.labelDownload) : undefined,
|
|
67
|
+
labelMessages: associations.labelMessages,
|
|
68
|
+
products: transientParams.isInternational ? productFactory.buildList(1) : [],
|
|
69
|
+
trackingNumber: transientParams.isShipped ? faker.random.alphaNumeric(12, {
|
|
70
|
+
casing: "upper"
|
|
71
|
+
}) : undefined,
|
|
72
|
+
weight: (_e = associations.weight) !== null && _e !== void 0 ? _e : weightWithUnitFactory.build(params.weight)
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
/**
|
|
76
|
+
* @category Factories
|
|
77
|
+
*/
|
|
78
|
+
const shipmentFactory = Factory.define(({
|
|
79
|
+
associations,
|
|
80
|
+
params,
|
|
81
|
+
sequence,
|
|
82
|
+
transientParams
|
|
83
|
+
}) => {
|
|
84
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
|
|
85
|
+
const shipTo = (_a = associations.shipTo) !== null && _a !== void 0 ? _a : addressFactory.build(params.shipTo, {
|
|
86
|
+
transient: {
|
|
87
|
+
isInternational: transientParams.isInternational
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
let insuranceProvider = SE.InsuranceProviderType.NONE;
|
|
91
|
+
if (transientParams.insuredValue || transientParams.isInsured) {
|
|
92
|
+
insuranceProvider = (_b = params.insuranceProvider) !== null && _b !== void 0 ? _b : randomInsuranceProvider(false);
|
|
93
|
+
} else if (transientParams.insuredValue === undefined && transientParams.isInsured === undefined) {
|
|
94
|
+
insuranceProvider = randomInsuranceProvider(true);
|
|
95
|
+
}
|
|
96
|
+
const shipDateObj = faker.date.soon(7);
|
|
97
|
+
shipDateObj.setHours(0, 0, 0, 0);
|
|
98
|
+
const totalWeight = (_c = associations.totalWeight) !== null && _c !== void 0 ? _c : weightWithUnitFactory.build(params.totalWeight);
|
|
99
|
+
return {
|
|
100
|
+
addressValidation: (_d = associations.addressValidation) !== null && _d !== void 0 ? _d : addressValidationFactory.build(params.addressValidation, {
|
|
101
|
+
associations: {
|
|
102
|
+
originalAddress: shipTo
|
|
103
|
+
}
|
|
104
|
+
}),
|
|
105
|
+
amountPaid: moneyFactory.build(),
|
|
106
|
+
carrierId: (_f = (_e = transientParams === null || transientParams === void 0 ? void 0 : transientParams.service) === null || _e === void 0 ? void 0 : _e.carrierId) !== null && _f !== void 0 ? _f : randomShipengineId(),
|
|
107
|
+
confirmation: randomDeliveryConfirmation(),
|
|
108
|
+
createdAt: faker.date.past().toISOString(),
|
|
109
|
+
customs: (_g = associations.customs) !== null && _g !== void 0 ? _g : transientParams.isInternational ? {
|
|
110
|
+
contents: faker.helpers.arrayElement(["documents", "gift", "merchandise", "returned_goods", "sample"]),
|
|
111
|
+
nonDelivery: faker.helpers.arrayElement(["return_to_sender", "treat_as_abandoned"])
|
|
112
|
+
} : undefined,
|
|
113
|
+
externalOrderId: faker.random.alphaNumeric(10),
|
|
114
|
+
externalShipmentId: faker.random.alphaNumeric(10),
|
|
115
|
+
insuranceProvider,
|
|
116
|
+
items: shipmentItemFactory.buildList(faker.datatype.number({
|
|
117
|
+
max: 10,
|
|
118
|
+
min: 1
|
|
119
|
+
}), transientParams.salesOrder ? {
|
|
120
|
+
externalOrderId: transientParams.salesOrder.externalOrderId,
|
|
121
|
+
orderSourceCode: transientParams.salesOrder.orderSource.orderSourceCode,
|
|
122
|
+
salesOrderId: (_h = transientParams.salesOrder) === null || _h === void 0 ? void 0 : _h.salesOrderId
|
|
123
|
+
} : {}),
|
|
124
|
+
modifiedAt: faker.date.recent().toISOString(),
|
|
125
|
+
orderSourceCode: (_k = (_j = transientParams.salesOrder) === null || _j === void 0 ? void 0 : _j.orderSource.orderSourceCode) !== null && _k !== void 0 ? _k : randomOrderSourceCode(),
|
|
126
|
+
packages: (_l = associations.packages) !== null && _l !== void 0 ? _l : shipmentPackageFactory.buildList(1, (_m = params.packages) === null || _m === void 0 ? void 0 : _m[0], {
|
|
127
|
+
associations: {
|
|
128
|
+
weight: totalWeight
|
|
129
|
+
},
|
|
130
|
+
transient: {
|
|
131
|
+
isInsured: insuranceProvider !== "none",
|
|
132
|
+
isInternational: transientParams.isInternational,
|
|
133
|
+
isShipped: transientParams.isShipped
|
|
134
|
+
}
|
|
135
|
+
}),
|
|
136
|
+
returnTo: (_q = (_o = associations.returnTo) !== null && _o !== void 0 ? _o : (_p = transientParams.warehouse) === null || _p === void 0 ? void 0 : _p.returnAddress) !== null && _q !== void 0 ? _q : addressFactory.build(),
|
|
137
|
+
serviceCode: (_s = (_r = transientParams.service) === null || _r === void 0 ? void 0 : _r.serviceCode) !== null && _s !== void 0 ? _s : randomShipengineSlug(),
|
|
138
|
+
shipDate: shipDateObj.toISOString(),
|
|
139
|
+
shipFrom: (_v = (_t = associations.shipFrom) !== null && _t !== void 0 ? _t : (_u = transientParams.warehouse) === null || _u === void 0 ? void 0 : _u.originAddress) !== null && _v !== void 0 ? _v : addressFactory.build(),
|
|
140
|
+
shipmentId: `se-${30000 + sequence}`,
|
|
141
|
+
shipmentStatus: transientParams.isShipped ? "label_purchased" : "pending",
|
|
142
|
+
shippingPaid: moneyFactory.build(),
|
|
143
|
+
shipTo,
|
|
144
|
+
tags: (_w = associations.tags) !== null && _w !== void 0 ? _w : [],
|
|
145
|
+
taxPaid: moneyFactory.build(),
|
|
146
|
+
totalWeight,
|
|
147
|
+
warehouseId: (_x = transientParams.warehouse) === null || _x === void 0 ? void 0 : _x.warehouseId
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
/**
|
|
151
|
+
* @category Factories
|
|
152
|
+
*/
|
|
153
|
+
const salesOrderShipmentFactory = Factory.define(({
|
|
154
|
+
associations,
|
|
155
|
+
params,
|
|
156
|
+
transientParams
|
|
157
|
+
}) => {
|
|
158
|
+
var _a, _b, _c;
|
|
159
|
+
const shipment = shipmentFactory.build(params, {
|
|
160
|
+
associations,
|
|
161
|
+
transient: transientParams
|
|
162
|
+
});
|
|
163
|
+
return Object.assign(Object.assign({}, shipment), {
|
|
164
|
+
salesOrderIds: (_a = associations.salesOrderIds) !== null && _a !== void 0 ? _a : [(_c = (_b = transientParams.salesOrder) === null || _b === void 0 ? void 0 : _b.salesOrderId) !== null && _c !== void 0 ? _c : faker.datatype.uuid()]
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
export { productFactory, randomDeliveryConfirmation, randomInsuranceProvider, salesOrderShipmentFactory, shipmentFactory, shipmentItemFactory, shipmentPackageFactory };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
import { Factory } from 'fishery';
|
|
3
|
+
|
|
4
|
+
const randomWeightUnit = () => faker.helpers.arrayElement(["pound", "ounce", "gram", "kilogram"]);
|
|
5
|
+
/**
|
|
6
|
+
* @category Factories
|
|
7
|
+
*/
|
|
8
|
+
Factory.define(() => ({
|
|
9
|
+
fractional: faker.datatype.number({
|
|
10
|
+
max: 16,
|
|
11
|
+
min: 0
|
|
12
|
+
}),
|
|
13
|
+
whole: faker.datatype.number({
|
|
14
|
+
max: 20,
|
|
15
|
+
min: 0
|
|
16
|
+
})
|
|
17
|
+
}));
|
|
18
|
+
/**
|
|
19
|
+
* @category Factories
|
|
20
|
+
*/
|
|
21
|
+
const weightFactory = Factory.define(() => ({
|
|
22
|
+
value: faker.datatype.number({
|
|
23
|
+
max: 20,
|
|
24
|
+
min: 1,
|
|
25
|
+
precision: 0.1
|
|
26
|
+
})
|
|
27
|
+
}));
|
|
28
|
+
/**
|
|
29
|
+
* @category Factories
|
|
30
|
+
*/
|
|
31
|
+
const weightWithUnitFactory = Factory.define(({
|
|
32
|
+
params
|
|
33
|
+
}) => {
|
|
34
|
+
const weight = weightFactory.build(params);
|
|
35
|
+
return Object.assign(Object.assign({}, weight), {
|
|
36
|
+
unit: randomWeightUnit()
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
export { randomWeightUnit, weightFactory, weightWithUnitFactory };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
|
|
3
|
+
const randomShipengineId = (length = 5) => `se-${faker.random.numeric(length)}`;
|
|
4
|
+
const randomShipengineSlug = wordCount => faker.lorem.slug(wordCount).replace("-", "_");
|
|
5
|
+
const tristateValue = (ifTrue, ifFalse, ifUndefined, value) => {
|
|
6
|
+
if (value === undefined) {
|
|
7
|
+
return ifUndefined;
|
|
8
|
+
}
|
|
9
|
+
if (value) {
|
|
10
|
+
return ifTrue;
|
|
11
|
+
}
|
|
12
|
+
return ifFalse;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { randomShipengineId, randomShipengineSlug, tristateValue };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useListCarriers, useGetFundingSourceMetadata, useGetInsuranceFundingSourceAcceptedTerms } from '@shipengine/react-api';
|
|
2
2
|
import { filterFundingSourceCarriers } from '../../../utilities/shipengine/carrier.js';
|
|
3
|
-
import {
|
|
3
|
+
import { groupTermsByProvider, getIsInsuraceProviderAccepted } from '../../../utilities/shipengine/insurance.js';
|
|
4
4
|
import { useMemo } from 'react';
|
|
5
5
|
import { useCarrierMetadata } from './use-carrier-metadata.js';
|
|
6
6
|
|
|
@@ -36,12 +36,10 @@ const useListFundingSourceCarriers = () => {
|
|
|
36
36
|
//TODO: Remove hardcoded carrierMetadata and insuranceProviderMetadata when the friendlyName is available in the funding source metadata response
|
|
37
37
|
const carrierMetadata = useCarrierMetadata();
|
|
38
38
|
const insuranceProviderProfiles = useMemo(() => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}, getInsuranceProviderWithFriendlyName(t.termType));
|
|
44
|
-
});
|
|
39
|
+
const groupedProfiles = groupTermsByProvider(optionalTerms);
|
|
40
|
+
return groupedProfiles.map(profile => Object.assign(Object.assign({}, profile), {
|
|
41
|
+
agreedToTerms: profile.terms.some(term => getIsInsuraceProviderAccepted(term.termType, insuranceProviderAcceptedTerms === null || insuranceProviderAcceptedTerms === void 0 ? void 0 : insuranceProviderAcceptedTerms.acceptedTerms))
|
|
42
|
+
}));
|
|
45
43
|
}, [optionalTerms, insuranceProviderAcceptedTerms]);
|
|
46
44
|
const normalizeCarrierCode = (carrierCode, nickname) => carrierCode === "usps" || (nickname === null || nickname === void 0 ? void 0 : nickname.includes("free")) ? "stamps_com" : carrierCode;
|
|
47
45
|
const normalizeConnectedCarrierCodes = new Set(connectedCarriers === null || connectedCarriers === void 0 ? void 0 : connectedCarriers.map(c => normalizeCarrierCode(c.carrierCode, c.nickname)));
|
|
@@ -8,6 +8,7 @@ import { useState, useMemo, useCallback } from 'react';
|
|
|
8
8
|
import { useTranslation } from 'react-i18next';
|
|
9
9
|
import { styles } from './manage-carriers.styles.js';
|
|
10
10
|
import { useListFundingSourceCarriers } from './hooks/use-list-funding-source-carriers.js';
|
|
11
|
+
import { getIsFundingSourceInsuranceProviderEnabledAndSupported } from '../../utilities/shipengine/insurance.js';
|
|
11
12
|
import { SkeletonCarrierRow } from '../../components/skeleton/skeleton-carrier-row.js';
|
|
12
13
|
import { ManageFunding } from '../manage-funding/manage-funding.js';
|
|
13
14
|
import { ManageCarriersRow } from './manage-carriers-row/manage-carriers-row.js';
|
|
@@ -41,6 +42,7 @@ const ShipEngineCarriers = ({
|
|
|
41
42
|
refetch: refetchCarriers,
|
|
42
43
|
refetchInsuranceProviderAcceptedTerms
|
|
43
44
|
} = useListFundingSourceCarriers();
|
|
45
|
+
const isInsuranceEnabled = getIsFundingSourceInsuranceProviderEnabledAndSupported(insuranceProviderProfiles, globalFeatures.enableXCover, globalFeatures.enableParcelGuard);
|
|
44
46
|
const hasConnectedCarriers = useMemo(() => fundingSourceCarriers === null || fundingSourceCarriers === void 0 ? void 0 : fundingSourceCarriers.some(c => c.isConnected), [fundingSourceCarriers]);
|
|
45
47
|
const {
|
|
46
48
|
data: warehouses
|
|
@@ -101,10 +103,10 @@ const ShipEngineCarriers = ({
|
|
|
101
103
|
const handleRegisterProvider = useCallback(p => __awaiter(void 0, void 0, void 0, function* () {
|
|
102
104
|
return yield handleRegistration({
|
|
103
105
|
insuranceProviders: [{
|
|
104
|
-
acceptedTerms: [{
|
|
105
|
-
termType:
|
|
106
|
-
version:
|
|
107
|
-
}],
|
|
106
|
+
acceptedTerms: [...p.terms.map(term => ({
|
|
107
|
+
termType: term.termType,
|
|
108
|
+
version: term.version
|
|
109
|
+
}))],
|
|
108
110
|
agreeToTerms: true,
|
|
109
111
|
fundingSourceId: fundingSourceId !== null && fundingSourceId !== void 0 ? fundingSourceId : "",
|
|
110
112
|
provider: p.provider
|
|
@@ -176,12 +178,12 @@ const ShipEngineCarriers = ({
|
|
|
176
178
|
}),
|
|
177
179
|
setCarrierToConnect: setCarrierToConnect
|
|
178
180
|
})
|
|
179
|
-
}, carrier.carrier.carrierProfile.carrierCode)),
|
|
181
|
+
}, carrier.carrier.carrierProfile.carrierCode)), isInsuranceEnabled && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.map(p => jsx("li", {
|
|
180
182
|
children: jsx(ManageInsuranceProviderRow, {
|
|
181
183
|
insuranceProviderProfile: p,
|
|
182
184
|
registerProvider: handleRegisterProvider
|
|
183
185
|
})
|
|
184
|
-
}, p.terms.termType)))]
|
|
186
|
+
}, p.terms[0].termType)))]
|
|
185
187
|
})
|
|
186
188
|
})]
|
|
187
189
|
});
|