@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
119 lines • 9.72 kB
TypeScript
import { type CacheConfig, type CacheStrategy } from "../shared/cache-config";
import type { MutationOptions, ReadQueryOptions, SuspenseQueryOptions } from "../shared/hook-types";
import { type PrefetchSkipMode } from "../shared/prefetch";
import type { QueryNamespace } from "../shared/query-keys";
import type { StorageValueStore } from "../shared/storage-value-store";
import type { AddLineItemInputBase, CartAddressAdapter, CartAddressInputBase, CartCreateInputBase, CartInputBase, CartLike, CartQueryKeys, CartService, RemoveLineItemInputBase, TransferCartInputBase, UpdateCartInputBase, UpdateLineItemInputBase, UseCartResult, UseSuspenseCartResult } from "./types";
type CartTransientInput = {
cartId?: string;
autoCreate?: boolean;
autoUpdateRegion?: boolean;
enabled?: boolean;
variantId?: string;
quantity?: number;
useSameAddress?: boolean;
shippingAddress?: unknown;
billingAddress?: unknown;
salesChannelId?: string;
};
type CartCreateTransientInput = CartTransientInput;
type CartUpdateTransientInput = CartTransientInput;
type AddLineItemTransientInput = {
cartId?: string;
autoCreate?: boolean;
autoUpdateRegion?: boolean;
enabled?: boolean;
region_id?: string;
country_code?: string;
salesChannelId?: string;
};
type UpdateLineItemTransientInput = {
cartId?: string;
lineItemId?: string;
enabled?: boolean;
autoCreate?: boolean;
autoUpdateRegion?: boolean;
};
declare const cartPayloadOmitKeys: readonly ["cartId", "autoCreate", "autoUpdateRegion", "enabled", "variantId", "quantity", "useSameAddress", "shippingAddress", "billingAddress", "salesChannelId"];
declare const addLineItemPayloadOmitKeys: readonly ["cartId", "autoCreate", "autoUpdateRegion", "enabled", "region_id", "country_code", "salesChannelId"];
declare const updateLineItemPayloadOmitKeys: readonly ["cartId", "lineItemId", "enabled", "autoCreate", "autoUpdateRegion"];
type NormalizedCartCreatePayload<TInput extends CartCreateInputBase> = Omit<TInput & CartCreateTransientInput, (typeof cartPayloadOmitKeys)[number]> & {
sales_channel_id?: string;
};
type NormalizedCartUpdatePayload<TInput extends UpdateCartInputBase> = Omit<TInput & CartUpdateTransientInput, (typeof cartPayloadOmitKeys)[number]> & {
sales_channel_id?: string;
};
type NormalizedAddLineItemPayload<TInput extends AddLineItemInputBase> = Omit<TInput & AddLineItemTransientInput, (typeof addLineItemPayloadOmitKeys)[number]>;
type NormalizedUpdateLineItemPayload<TInput extends UpdateLineItemInputBase> = Omit<TInput & UpdateLineItemTransientInput, (typeof updateLineItemPayloadOmitKeys)[number]>;
type BuildCreateParamsOption<TCreateInput extends CartCreateInputBase, TCreateParams> = [NormalizedCartCreatePayload<TCreateInput>] extends [TCreateParams] ? {
buildCreateParams?: (input: TCreateInput) => TCreateParams;
} : {
buildCreateParams: (input: TCreateInput) => TCreateParams;
};
type BuildUpdateParamsOption<TUpdateInput extends UpdateCartInputBase, TUpdateParams> = [NormalizedCartUpdatePayload<TUpdateInput>] extends [TUpdateParams] ? {
buildUpdateParams?: (input: TUpdateInput) => TUpdateParams;
} : {
buildUpdateParams: (input: TUpdateInput) => TUpdateParams;
};
type BuildAddParamsOption<TAddInput extends AddLineItemInputBase, TAddParams> = [NormalizedAddLineItemPayload<TAddInput>] extends [TAddParams] ? {
buildAddParams?: (input: TAddInput) => TAddParams;
} : {
buildAddParams: (input: TAddInput) => TAddParams;
};
type BuildCreateInputFromAddInputOption<TAddInput extends AddLineItemInputBase, TCreateInput extends CartCreateInputBase> = [TAddInput] extends [TCreateInput] ? {
buildCreateInputFromAddInput?: (input: TAddInput) => TCreateInput;
} : {
buildCreateInputFromAddInput: (input: TAddInput) => TCreateInput;
};
type BuildUpdateItemParamsOption<TUpdateItemInput extends UpdateLineItemInputBase, TUpdateItemParams> = [NormalizedUpdateLineItemPayload<TUpdateItemInput>] extends [
TUpdateItemParams
] ? {
buildUpdateItemParams?: (input: TUpdateItemInput) => TUpdateItemParams;
} : {
buildUpdateItemParams: (input: TUpdateItemInput) => TUpdateItemParams;
};
type CreateCartHooksBaseConfig<TCart extends CartLike, TCreateParams, TUpdateParams, TAddParams, TUpdateItemParams, TCompleteResult, TAddressInput, TAddressPayload> = {
service: CartService<TCart, TCreateParams, TUpdateParams, TAddParams, TUpdateItemParams, TCompleteResult>;
queryKeys?: CartQueryKeys;
queryKeyNamespace?: QueryNamespace;
cacheConfig?: CacheConfig;
requireRegion?: boolean;
cartStorage?: StorageValueStore;
isNotFoundError?: (error: unknown) => boolean;
addressAdapter?: CartAddressAdapter<TAddressInput, TAddressPayload>;
invalidateOnSuccess?: boolean;
};
export type CreateCartHooksConfig<TCart extends CartLike, TCreateInput extends CartCreateInputBase, TCreateParams, TUpdateInput extends UpdateCartInputBase, TUpdateParams, TAddInput extends AddLineItemInputBase, TAddParams, TUpdateItemInput extends UpdateLineItemInputBase, TUpdateItemParams, TCompleteResult, TAddressInput, TAddressPayload> = CreateCartHooksBaseConfig<TCart, TCreateParams, TUpdateParams, TAddParams, TUpdateItemParams, TCompleteResult, TAddressInput, TAddressPayload> & BuildCreateParamsOption<TCreateInput, TCreateParams> & BuildUpdateParamsOption<TUpdateInput, TUpdateParams> & BuildAddParamsOption<TAddInput, TAddParams> & BuildCreateInputFromAddInputOption<TAddInput, TCreateInput> & BuildUpdateItemParamsOption<TUpdateItemInput, TUpdateItemParams>;
export type CartMutationOptions<TData, TVariables, TContext = unknown> = MutationOptions<TData, TVariables, TContext>;
export declare function createCartHooks<TCart extends CartLike, TCreateInput extends CartCreateInputBase, TCreateParams = NormalizedCartCreatePayload<TCreateInput>, TUpdateInput extends UpdateCartInputBase = UpdateCartInputBase, TUpdateParams = NormalizedCartUpdatePayload<TUpdateInput>, TAddInput extends AddLineItemInputBase = AddLineItemInputBase, TAddParams = NormalizedAddLineItemPayload<TAddInput>, TUpdateItemInput extends UpdateLineItemInputBase = UpdateLineItemInputBase, TUpdateItemParams = NormalizedUpdateLineItemPayload<TUpdateItemInput>, TCompleteResult = unknown, TAddressInput = Record<string, unknown>, TAddressPayload = Record<string, unknown>>({ service, buildCreateParams, buildUpdateParams, buildAddParams, buildCreateInputFromAddInput, buildUpdateItemParams, queryKeys, queryKeyNamespace, cacheConfig, requireRegion, cartStorage, isNotFoundError, addressAdapter, invalidateOnSuccess, }: CreateCartHooksConfig<TCart, TCreateInput, TCreateParams, TUpdateInput, TUpdateParams, TAddInput, TAddParams, TUpdateItemInput, TUpdateItemParams, TCompleteResult, TAddressInput, TAddressPayload>): {
useCart: (input: CartInputBase, options?: {
queryOptions?: ReadQueryOptions<TCart | null>;
}) => UseCartResult<TCart>;
useSuspenseCart: (input: CartInputBase, options?: {
queryOptions?: SuspenseQueryOptions<TCart | null>;
}) => UseSuspenseCartResult<TCart>;
useCreateCart: (options?: CartMutationOptions<TCart, TCreateInput>) => import("@tanstack/react-query").UseMutationResult<TCart, Error, TCreateInput, unknown>;
useUpdateCart: (options?: CartMutationOptions<TCart, TUpdateInput>) => import("@tanstack/react-query").UseMutationResult<TCart, Error, TUpdateInput, unknown>;
useUpdateCartAddress: (options?: CartMutationOptions<TCart, CartAddressInputBase<TAddressInput>>) => import("@tanstack/react-query").UseMutationResult<TCart, Error, CartAddressInputBase<TAddressInput>, unknown>;
useAddLineItem: (options?: CartMutationOptions<TCart, TAddInput>) => import("@tanstack/react-query").UseMutationResult<TCart, Error, TAddInput, unknown>;
useUpdateLineItem: (options?: CartMutationOptions<TCart, TUpdateItemInput>) => import("@tanstack/react-query").UseMutationResult<TCart, Error, TUpdateItemInput, unknown>;
useRemoveLineItem: (options?: CartMutationOptions<TCart, RemoveLineItemInputBase>) => import("@tanstack/react-query").UseMutationResult<TCart, Error, RemoveLineItemInputBase, unknown>;
useTransferCart: (options?: CartMutationOptions<TCart, TransferCartInputBase>) => import("@tanstack/react-query").UseMutationResult<TCart, Error, TransferCartInputBase, unknown>;
useCompleteCart: (options?: CartMutationOptions<TCompleteResult, {
cartId?: string;
}> & {
clearCartOnSuccess?: boolean;
}) => import("@tanstack/react-query").UseMutationResult<TCompleteResult, Error, {
cartId?: string;
}, unknown>;
usePrefetchCart: (options?: {
cacheStrategy?: CacheStrategy;
skipIfCached?: boolean;
skipMode?: PrefetchSkipMode;
}) => {
prefetchCart: (input: CartInputBase) => Promise<void>;
};
};
export type CartHooks<TCart extends CartLike, TCreateInput extends CartCreateInputBase, TCreateParams = NormalizedCartCreatePayload<TCreateInput>, TUpdateInput extends UpdateCartInputBase = UpdateCartInputBase, TUpdateParams = NormalizedCartUpdatePayload<TUpdateInput>, TAddInput extends AddLineItemInputBase = AddLineItemInputBase, TAddParams = NormalizedAddLineItemPayload<TAddInput>, TUpdateItemInput extends UpdateLineItemInputBase = UpdateLineItemInputBase, TUpdateItemParams = NormalizedUpdateLineItemPayload<TUpdateItemInput>, TCompleteResult = unknown, TAddressInput = Record<string, unknown>, TAddressPayload = Record<string, unknown>> = ReturnType<typeof createCartHooks<TCart, TCreateInput, TCreateParams, TUpdateInput, TUpdateParams, TAddInput, TAddParams, TUpdateItemInput, TUpdateItemParams, TCompleteResult, TAddressInput, TAddressPayload>>;
export {};
//# sourceMappingURL=hooks.d.ts.map