# cartMetafieldsSetDefault Creates a function that accepts an array of [CartMetafieldsSetInput](https://shopify.dev/docs/api/storefront/2023-07/input-objects/CartMetafieldsSetInput) without `ownerId` and set the metafields to a cart ### example ```js import {cartMetafieldsSetDefault} from '@shopify/hydrogen'; const cartSetMetafields = cartMetafieldsSetDefault({ storefront, getCartId, }); const result = await cartSetMetafields([ { key: 'custom.gift', type: 'boolean', value: 'true', }, ]); ``` ## cartMetafieldsSetDefault ### CartMetafieldsSetDefaultGeneratedType #### Returns: CartMetafieldsSetFunction #### Params: - options: CartQueryOptions export function cartMetafieldsSetDefault( options: CartQueryOptions, ): CartMetafieldsSetFunction { return async (metafields, optionalParams) => { const ownerId = optionalParams?.cartId || options.getCartId(); const metafieldsWithOwnerId = metafields.map( (metafield: MetafieldWithoutOwnerId) => ({ ...metafield, ownerId, }), ); const {cartMetafieldsSet} = await options.storefront.mutate<{ cartMetafieldsSet: { cart: Cart; errors: MetafieldsSetUserError[]; }; }>(CART_METAFIELD_SET_MUTATION(), { variables: {metafields: metafieldsWithOwnerId}, }); return { cart: { id: ownerId, } as Cart, errors: cartMetafieldsSet.errors as unknown as MetafieldsSetUserError[], }; }; } ### CartQueryOptions ### storefront The storefront client instance created by [`createStorefrontClient`](docs/api/hydrogen/latest/utilities/createstorefrontclient). ### getCartId A function that returns the cart ID. ### cartFragment The cart fragment to override the one used in this query. ### Storefront Interface to interact with the Storefront API. ### query The function to run a query on Storefront API. ### mutate The function to run a mutation on Storefront API. ### cache The cache instance passed in from the `createStorefrontClient` argument. ### CacheNone Re-export of [`CacheNone`](/docs/api/hydrogen/2023-07/utilities/cachenone). ### CacheLong Re-export of [`CacheLong`](/docs/api/hydrogen/2023-07/utilities/cachelong). ### CacheShort Re-export of [`CacheShort`](/docs/api/hydrogen/2023-07/utilities/cacheshort). ### CacheCustom Re-export of [`CacheCustom`](/docs/api/hydrogen/2023-07/utilities/cachecustom). ### generateCacheControlHeader Re-export of [`generateCacheControlHeader`](/docs/api/hydrogen/2023-07/utilities/generatecachecontrolheader). ### getPublicTokenHeaders Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint. See [`getPublicTokenHeaders` in Hydrogen React](/docs/api/hydrogen-react/2023-07/utilities/createstorefrontclient#:~:text=%27graphql%27.-,getPublicTokenHeaders,-(props%3F%3A) for more details. ### getPrivateTokenHeaders Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint for API calls made from a server. See [`getPrivateTokenHeaders` in Hydrogen React](/docs/api/hydrogen-react/2023-07/utilities/createstorefrontclient#:~:text=storefrontApiVersion-,getPrivateTokenHeaders,-(props%3F%3A) for more details. ### getShopifyDomain Creates the fully-qualified URL to your myshopify.com domain. See [`getShopifyDomain` in Hydrogen React](/docs/api/hydrogen-react/2023-07/utilities/createstorefrontclient#:~:text=StorefrontClientReturn-,getShopifyDomain,-(props%3F%3A) for more details. ### getApiUrl Creates the fully-qualified URL to your store's GraphQL endpoint. See [`getStorefrontApiUrl` in Hydrogen React](/docs/api/hydrogen-react/2023-07/utilities/createstorefrontclient#:~:text=storeDomain-,getStorefrontApiUrl,-(props%3F%3A) for more details. ### isApiError Determines if the error is resulted from a Storefront API call. ### i18n The `i18n` object passed in from the `createStorefrontClient` argument. ### IsOptionalVariables Omit< OperationTypeValue['variables'], AutoAddedVariableNames > extends EmptyVariables ? true // No need to pass variables : GenericVariables extends OperationTypeValue['variables'] ? true // We don't know what variables are needed : false ### AutoAddedVariableNames 'country' | 'language' ### EmptyVariables {[key: string]: never} ### GenericVariables ExecutionArgs['variableValues'] ### StorefrontQueries Maps all the queries found in the project to variables and return types. export interface StorefrontQueries { // Example of how a generated query type looks like: // '#graphql query q1 {...}': {return: Q1Query; variables: Q1QueryVariables}; } ### StorefrontQuerySecondParam (RawGqlString extends keyof StorefrontQueries ? StorefrontCommonOptions : StorefrontCommonOptions) & {cache?: CachingStrategy} ### StorefrontCommonOptions { headers?: HeadersInit; storefrontApiVersion?: string; } & (IsOptionalVariables<{variables: Variables}> extends true ? {variables?: Variables} : {variables: Variables}) ### CachingStrategy Use the `CachingStrategy` to define a custom caching mechanism for your data. Or use one of the pre-defined caching strategies: CacheNone, CacheShort, CacheLong. ### mode The caching mode, generally `public`, `private`, or `no-store`. ### maxAge The maximum amount of time in seconds that a resource will be considered fresh. See `max-age` in the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#:~:text=Response%20Directives-,max%2Dage,-The%20max%2Dage). ### staleWhileRevalidate Indicate that the cache should serve the stale response in the background while revalidating the cache. See `stale-while-revalidate` in the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-while-revalidate). ### sMaxAge Similar to `maxAge` but specific to shared caches. See `s-maxage` in the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#s-maxage). ### staleIfError Indicate that the cache should serve the stale response if an error occurs while revalidating the cache. See `stale-if-error` in the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-if-error). ### StorefrontMutations Maps all the mutations found in the project to variables and return types. export interface StorefrontMutations { // Example of how a generated mutation type looks like: // '#graphql mutation m1 {...}': {return: M1Mutation; variables: M1MutationVariables}; } ### StorefrontMutateSecondParam RawGqlString extends keyof StorefrontMutations ? StorefrontCommonOptions : StorefrontCommonOptions ### NoStoreStrategy ### mode ### AllCacheOptions Override options for a cache strategy. ### mode The caching mode, generally `public`, `private`, or `no-store`. ### maxAge The maximum amount of time in seconds that a resource will be considered fresh. See `max-age` in the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#:~:text=Response%20Directives-,max%2Dage,-The%20max%2Dage). ### staleWhileRevalidate Indicate that the cache should serve the stale response in the background while revalidating the cache. See `stale-while-revalidate` in the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-while-revalidate). ### sMaxAge Similar to `maxAge` but specific to shared caches. See `s-maxage` in the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#s-maxage). ### staleIfError Indicate that the cache should serve the stale response if an error occurs while revalidating the cache. See `stale-if-error` in the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-if-error). ### CartMetafieldsSetFunction #### Returns: Promise #### Params: - metafields: MetafieldWithoutOwnerId[] - optionalParams: CartOptionalInput export type CartMetafieldsSetFunction = ( metafields: MetafieldWithoutOwnerId[], optionalParams?: CartOptionalInput, ) => Promise; ### MetafieldWithoutOwnerId MetafieldWithoutOwnerId ### CartOptionalInput ### cartId The cart id. ### country The country code. ### language The language code. ### CartQueryData ### cart ### errors ### Cart Cart ### CartUserError CartUserError ### MetafieldsSetUserError MetafieldsSetUserError ### MetafieldDeleteUserError MetafieldDeleteUserError