@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
93 lines • 4.84 kB
TypeScript
import type { MedusaCustomerAddressCreateInput, MedusaCustomerAddressUpdateInput } from "../customers/medusa-service";
import type { StorefrontAddressValidationIssue, StorefrontCartAddressAdapter, StorefrontCustomerAddressAdapter } from "../shared/address";
export type CheckoutAddressInput = {
firstName?: string | null;
lastName?: string | null;
street?: string | null;
street2?: string | null;
city?: string | null;
postalCode?: string | null;
country?: string | null;
province?: string | null;
company?: string | null;
phone?: string | null;
isDefaultShipping?: boolean;
isDefaultBilling?: boolean;
metadata?: Record<string, unknown>;
};
type CheckoutAddressStringField = {
[K in keyof CheckoutAddressInput]-?: NonNullable<CheckoutAddressInput[K]> extends string ? K : never;
}[keyof CheckoutAddressInput];
export type NormalizedCheckoutAddress<TAddress extends CheckoutAddressInput = CheckoutAddressInput> = Omit<TAddress, CheckoutAddressStringField> & {
[K in CheckoutAddressStringField]?: string;
};
export type CheckoutAddressData<TAddress extends CheckoutAddressInput = CheckoutAddressInput> = {
shipping: TAddress;
billing?: TAddress;
useSameAddress?: true;
email?: string | null;
} | {
shipping: TAddress;
billing: TAddress;
useSameAddress: false;
email?: string | null;
};
export type CheckoutAddressValidationOptions = {
requireEmail?: boolean;
shippingRequiredFields?: readonly CheckoutAddressStringField[];
billingRequiredFields?: readonly CheckoutAddressStringField[];
};
export type CheckoutAddressValidationIssue = StorefrontAddressValidationIssue;
export type MedusaCartAddressPayload = {
first_name?: string;
last_name?: string;
address_1?: string;
address_2?: string;
city?: string;
postal_code?: string;
country_code?: string;
province?: string;
company?: string;
phone?: string;
};
export type CheckoutCustomerAddressUpdateInput<TAddress extends CheckoutAddressInput = CheckoutAddressInput> = TAddress & {
addressId?: string;
};
export type MedusaAddressLike = {
first_name?: string | null;
last_name?: string | null;
address_1?: string | null;
address_2?: string | null;
city?: string | null;
postal_code?: string | null;
country_code?: string | null;
province?: string | null;
company?: string | null;
phone?: string | null;
is_default_shipping?: boolean | null;
is_default_billing?: boolean | null;
metadata?: Record<string, unknown> | null;
};
export type BuildCheckoutCartAddressInputOptions = {
defaultCountryCode?: string;
countryCodeTransform?: (countryCode: string) => string;
};
export type CheckoutCartAddressInput = {
email?: string;
shippingAddress: MedusaCartAddressPayload;
billingAddress: MedusaCartAddressPayload;
useSameAddress: boolean;
};
export type CheckoutCartAddressAdapterOptions = BuildCheckoutCartAddressInputOptions & Pick<CheckoutAddressValidationOptions, "shippingRequiredFields" | "billingRequiredFields">;
export type CheckoutCustomerAddressAdapterOptions = BuildCheckoutCartAddressInputOptions & {
requiredFields?: readonly CheckoutAddressStringField[];
};
export declare const defaultCheckoutAddressRequiredFields: readonly CheckoutAddressStringField[];
export declare const getCheckoutAddressValidationIssues: <TAddress extends CheckoutAddressInput>(data: CheckoutAddressData<TAddress>, options?: CheckoutAddressValidationOptions) => CheckoutAddressValidationIssue[];
export declare const mapCheckoutAddressToMedusaCartAddress: <TAddress extends CheckoutAddressInput>(address: TAddress, options?: BuildCheckoutCartAddressInputOptions) => MedusaCartAddressPayload;
export declare const mapMedusaAddressToCheckoutAddress: <TAddress extends CheckoutAddressInput = CheckoutAddressInput>(address?: MedusaAddressLike | null) => NormalizedCheckoutAddress<TAddress>;
export declare const createCheckoutCartAddressAdapter: <TAddress extends CheckoutAddressInput = CheckoutAddressInput>(options?: CheckoutCartAddressAdapterOptions) => StorefrontCartAddressAdapter<TAddress, MedusaCartAddressPayload>;
export declare const createCheckoutCustomerAddressAdapter: <TAddress extends CheckoutAddressInput = CheckoutAddressInput, TUpdateInput extends CheckoutCustomerAddressUpdateInput<TAddress> = CheckoutCustomerAddressUpdateInput<TAddress>>(options?: CheckoutCustomerAddressAdapterOptions) => StorefrontCustomerAddressAdapter<TAddress, MedusaCustomerAddressCreateInput, TUpdateInput, MedusaCustomerAddressUpdateInput>;
export declare const buildCheckoutCartAddressInput: <TAddress extends CheckoutAddressInput>(data: CheckoutAddressData<TAddress>, options?: BuildCheckoutCartAddressInputOptions) => CheckoutCartAddressInput;
export {};
//# sourceMappingURL=address.d.ts.map