commerce/framework/spree/isomorphic-config.ts

54 lines
1.9 KiB
TypeScript

import forceIsomorphicConfigValues from './utils/force-isomorphic-config-values'
import requireConfig from './utils/require-config'
import validateCookieExpire from './utils/validate-cookie-expire'
import validatePlaceholderImageUrl from './utils/validate-placeholder-image-url'
import validateProductsPrerenderCount from './utils/validate-products-prerender-count'
const isomorphicConfig = {
apiHost: process.env.NEXT_PUBLIC_SPREE_API_HOST,
defaultLocale: process.env.NEXT_PUBLIC_SPREE_DEFAULT_LOCALE,
cartCookieName: process.env.NEXT_PUBLIC_SPREE_CART_COOKIE_NAME,
cartCookieExpire: validateCookieExpire(
process.env.NEXT_PUBLIC_SPREE_CART_COOKIE_EXPIRE
),
imageHost: process.env.NEXT_PUBLIC_SPREE_IMAGE_HOST,
categoriesTaxonomyId: process.env.NEXT_PUBLIC_SPREE_CATEGORIES_TAXONOMY_ID,
brandsTaxonomyId: process.env.NEXT_PUBLIC_SPREE_BRANDS_TAXONOMY_ID,
showSingleVariantOptions:
process.env.NEXT_PUBLIC_SPREE_SHOW_SINGLE_VARIANT_OPTIONS === 'true',
lastUpdatedProductsPrerenderCount: validateProductsPrerenderCount(
process.env.NEXT_PUBLIC_SPREE_LAST_UPDATED_PRODUCTS_PRERENDER_COUNT
),
productPlaceholderImageUrl: validatePlaceholderImageUrl(
process.env.NEXT_PUBLIC_SPREE_PRODUCT_PLACEHOLDER_IMAGE_URL
),
lineItemPlaceholderImageUrl: validatePlaceholderImageUrl(
process.env.NEXT_PUBLIC_SPREE_LINE_ITEM_PLACEHOLDER_IMAGE_URL
),
}
export default forceIsomorphicConfigValues(
isomorphicConfig,
[],
[
'apiHost',
'defaultLocale',
'cartCookieName',
'cartCookieExpire',
'imageHost',
'categoriesTaxonomyId',
'brandsTaxonomyId',
'showSingleVariantOptions',
'lastUpdatedProductsPrerenderCount',
'productPlaceholderImageUrl',
'lineItemPlaceholderImageUrl',
]
)
type IsomorphicConfig = typeof isomorphicConfig
const requireConfigValue = (key: keyof IsomorphicConfig) =>
requireConfig<IsomorphicConfig>(isomorphicConfig, key)
export { requireConfigValue }