diff --git a/.changeset/strange-turkeys-sort.md b/.changeset/strange-turkeys-sort.md new file mode 100644 index 0000000000..749466f390 --- /dev/null +++ b/.changeset/strange-turkeys-sort.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/graphql-mesh': patch +--- + +GraphQL Mesh will now be in read-only mode by default, so only a single instance is created globally. This means it doesn't get recreated on each page compilation and fast refresh. Creating the instance is an expensive operation and can take multiple seconds and during development (and this can happen multiple times during a single change). Now only a single instance is created during development. To make sure changes are picked up during development set the config value `graphqlMeshEditMode: true` in your graphcommerce.config.js or set the env variable `GC_GRAPHQL_MESH_EDIT_MODE=1`. This is the same as the old behavior and this _will_ make the frontend considerably slower. diff --git a/docs/framework/config.md b/docs/framework/config.md index 8cdc1f366a..5444e71b30 100644 --- a/docs/framework/config.md +++ b/docs/framework/config.md @@ -251,6 +251,11 @@ The Google Tagmanager ID to be used on the site. This value is required even if you are configuring different values for each locale. +#### graphqlMeshEditMode: boolean = `false` + +The GraphQL Mesh will be loaded once and any modifications to resolvers will be ignored. When developing +new resolvers this should be set to true. + #### hygraphManagementApi: string Hygraph Management API. **Only used for migrations.** diff --git a/docs/framework/mesh.md b/docs/framework/mesh.md index b0743acc6d..082ecbb913 100644 --- a/docs/framework/mesh.md +++ b/docs/framework/mesh.md @@ -27,7 +27,8 @@ To make modifications to the Mesh configuration, you can: ### Modify the meshrc.yaml: You can always modify the base configuration of the Mesh by modifying the -`meshrc.yaml` file. +`meshrc.yaml` file. After making always run `yarn codegen` (this can be in a +separate terminal and nextjs will reload it). ### Write a plugin: @@ -61,6 +62,33 @@ export const meshConfig: FunctionPlugin = ( }, }, ], + additionalResolvers: [ + ...(baseConfig.additionalResolvers ?? []), + 'lib/resolvers/my-feature.ts', + ], }) } ``` + +### Creating additional schema's + +During development it might come in handy to write schema extensions even before +any backend work has been done. `AnyFile.graphqls` in the graphql directory will +automatically be picked up and merged with the rest of the schema. + +### Creating additional resolvers + +In the plugin add additionalResolvers and point to your ts file where the +resolver is. + +```tsx +// This MUST be a type import, else there will be a circular dependency. +import type { Resolvers } from '@graphcommerce/graphql-mesh' + +const resolvers: Resolvers = {} +``` + +To make sure changes are picked up during development set the config value +`graphqlMeshEditMode: true` in your graphcommerce.config.js or set the env +variable `GC_GRAPHQL_MESH_EDIT_MODE=1`. This _will_ make the frontend +considerably slower. diff --git a/packages/cli/dist/bin/mesh.js b/packages/cli/dist/bin/mesh.js index d9462527de..07d73d1eb0 100755 --- a/packages/cli/dist/bin/mesh.js +++ b/packages/cli/dist/bin/mesh.js @@ -9,8 +9,8 @@ import dotenv from 'dotenv'; import 'tsx/cjs'; import 'tsx/esm'; import yaml from 'yaml'; -import { cosmiconfig, defaultLoaders } from 'cosmiconfig'; import path from 'path'; +import { cosmiconfig, defaultLoaders } from 'cosmiconfig'; function customLoader(ext, importFn = defaultImportFn, initialLoggerPrefix = "\u{1F578}\uFE0F Mesh") { const logger = new DefaultLogger(initialLoggerPrefix).child("config"); @@ -40,7 +40,7 @@ function customLoader(ext, importFn = defaultImportFn, initialLoggerPrefix = "\u return loader; } async function findConfig(options) { - const { configName = "mesh", dir: configDir = "", initialLoggerPrefix } = options || {}; + const { configName = "mesh", dir: configDir = "", initialLoggerPrefix } = options; const dir = path.isAbsolute(configDir) ? configDir : path.join(process.cwd(), configDir); const explorer = cosmiconfig(configName, { searchPlaces: [ @@ -169,7 +169,14 @@ const main = async () => { await promises.writeFile(tmpMeshLocation, yamlString); await promises.writeFile( `${meshDir}/.mesh.ts`, - `export * from '${relativePath.split(path$1.sep).join("/")}.mesh'`, + `export type * from '${relativePath.split(path$1.sep).join("/")}.mesh' +export { + getBuiltMesh as getBuiltMeshBase, + execute, + subscribe, + createBuiltMeshHTTPHandler as createBuiltMeshHTTPHandlerBase, + rawServeConfig, +} from '${relativePath.split(path$1.sep).join("/")}.mesh'`, { encoding: "utf8" } ); await graphqlMesh({ ...cliParams, configName: tmpMesh }); diff --git a/packages/cli/src/bin/mesh.ts b/packages/cli/src/bin/mesh.ts index bee94bd3f2..3bd94ffea3 100755 --- a/packages/cli/src/bin/mesh.ts +++ b/packages/cli/src/bin/mesh.ts @@ -165,7 +165,14 @@ const main = async () => { // Reexport the mesh to is can be used by packages await fs.writeFile( `${meshDir}/.mesh.ts`, - `export * from '${relativePath.split(path.sep).join('/')}.mesh'`, + `export type * from '${relativePath.split(path.sep).join('/')}.mesh' +export { + getBuiltMesh as getBuiltMeshBase, + execute, + subscribe, + createBuiltMeshHTTPHandler as createBuiltMeshHTTPHandlerBase, + rawServeConfig, +} from '${relativePath.split(path.sep).join('/')}.mesh'`, { encoding: 'utf8' }, ) diff --git a/packages/graphql-mesh/Config.graphqls b/packages/graphql-mesh/Config.graphqls new file mode 100644 index 0000000000..fb9d41dc6f --- /dev/null +++ b/packages/graphql-mesh/Config.graphqls @@ -0,0 +1,7 @@ +extend input GraphCommerceConfig { + """ + The GraphQL Mesh will be loaded once and any modifications to resolvers will be ignored. When developing + new resolvers this should be set to true. + """ + graphqlMeshEditMode: Boolean = false +} diff --git a/packages/graphql-mesh/api/createEnvelop.ts b/packages/graphql-mesh/api/createEnvelop.ts index a9babd1904..2cb15818be 100644 --- a/packages/graphql-mesh/api/createEnvelop.ts +++ b/packages/graphql-mesh/api/createEnvelop.ts @@ -1,13 +1,13 @@ import type { NextApiRequest, NextApiResponse } from 'next' -import { createBuiltMeshHTTPHandler } from '../.mesh' - -const handler = createBuiltMeshHTTPHandler() +import { createBuiltMeshHTTPHandler } from './globalThisMesh' // eslint-disable-next-line @typescript-eslint/require-await export const createServer = async (endpoint: string) => { if (endpoint !== '/api/graphql') throw Error('Moving the GraphQL Endpoint is not supported at the moment') - return (req: NextApiRequest, res: NextApiResponse) => { + + const handler = createBuiltMeshHTTPHandler() + return async (req: NextApiRequest, res: NextApiResponse) => { res.setHeader('Access-Control-Allow-Origin', req.headers.origin || '*') const requestedHeaders = req.headers['access-control-request-headers'] if (requestedHeaders) { @@ -20,6 +20,6 @@ export const createServer = async (endpoint: string) => { return } - handler(req, res) + await handler(req, res) } } diff --git a/packages/graphql-mesh/api/globalThisMesh.ts b/packages/graphql-mesh/api/globalThisMesh.ts new file mode 100644 index 0000000000..280f0262d5 --- /dev/null +++ b/packages/graphql-mesh/api/globalThisMesh.ts @@ -0,0 +1,55 @@ +import type { MeshInstance } from '@graphql-mesh/runtime' +import type { + ServerAdapter, + ServerAdapterBaseObject, + ServerAdapterRequestHandler, +} from '@whatwg-node/server' +import { createBuiltMeshHTTPHandlerBase, getBuiltMeshBase } from '../.mesh' + +type MeshHTTPHandler> = ServerAdapter< + TServerContext, + ServerAdapterBaseObject> +> + +declare global { + // eslint-disable-next-line vars-on-top, no-var + var buildMesh: Promise | undefined + + // eslint-disable-next-line vars-on-top, no-var + var builtMeshHandler: MeshHTTPHandler | undefined +} + +const shouldGlobalThisMeshBeCreated = + process.env.NODE_ENV === 'development' && import.meta.graphCommerce.graphqlMeshEditMode !== true + +/** + * We are creating a global instance of the mesh so it doesn't get recreated on every change. + * Creating the instance is a very long operation and with sufficiently complex schema's it can take + * multiple seconds. During development it can happen multiple times during a single change. + * + * During development this creates a big advantage as we do not recreate the mesh on every reload. + * This makes development a lot faster. + * + * The disadvantage of this is that the mesh and any resolvers custom resolver will not be refreshed + * whenever code changes are made, to enable this set the config value `graphqlMeshEditMode: true` + * in your graphcommerce.config.js or set the env variable `GC_GRAPHQL_MESH_EDIT_MODE=1`. + */ +export function getBuiltMesh() { + if (shouldGlobalThisMeshBeCreated) { + globalThis.buildMesh ??= getBuiltMeshBase() + return globalThis.buildMesh + } + return getBuiltMeshBase() +} + +/** + * Same as globalThisGetBuiltMesh but for the mesh handler. As the handler uses additional logic so + * we can't re-use globalThisGetBuiltMesh. + */ +export function createBuiltMeshHTTPHandler(): MeshHTTPHandler { + if (shouldGlobalThisMeshBeCreated) { + globalThis.builtMeshHandler ??= createBuiltMeshHTTPHandlerBase() as MeshHTTPHandler + return globalThis.builtMeshHandler + } + return createBuiltMeshHTTPHandlerBase() as MeshHTTPHandler +} diff --git a/packages/graphql-mesh/index.ts b/packages/graphql-mesh/index.ts index 51ceed6c09..2b36f9aa37 100644 --- a/packages/graphql-mesh/index.ts +++ b/packages/graphql-mesh/index.ts @@ -1,4 +1,7 @@ +/* eslint-disable import/export */ export * from './api/createEnvelop' export * from './api/apolloLink' export * from './.mesh' +// @ts-expect-error getBuiltMesh and createBuiltMeshHTTPHandler are re-exported here and override the export from .mesh +export * from './api/globalThisMesh' export * from './utils/traverseSelectionSet' diff --git a/packages/graphql-mesh/tsconfig.json b/packages/graphql-mesh/tsconfig.json index 09349913f8..7398153dd6 100644 --- a/packages/graphql-mesh/tsconfig.json +++ b/packages/graphql-mesh/tsconfig.json @@ -1,5 +1,5 @@ { "exclude": ["**/node_modules", "**/.*/"], "include": ["**/*.ts", "**/*.tsx"], - "extends": "@graphcommerce/typescript-config-pwa/node.json" + "extends": "@graphcommerce/typescript-config-pwa/nextjs.json" } diff --git a/packagesDev/next-config/__tests__/config/utils/__snapshots__/mergeEnvIntoConfig.ts.snap b/packagesDev/next-config/__tests__/config/utils/__snapshots__/mergeEnvIntoConfig.ts.snap index 42f5c58e39..7b86353b0f 100644 --- a/packagesDev/next-config/__tests__/config/utils/__snapshots__/mergeEnvIntoConfig.ts.snap +++ b/packagesDev/next-config/__tests__/config/utils/__snapshots__/mergeEnvIntoConfig.ts.snap @@ -22,908 +22,3 @@ exports[`parses an env config object 1`] = ` "GC_STOREFRONT_1_MAGENTO_STORE_CODE": "de_de", } `; - -exports[`traverses a schema and returns a list of env variables that match 1`] = ` -[ - "GC_BREADCRUMBS", - "GC_CANONICAL_BASE_URL", - "GC_CART_DISPLAY_PRICES_INCL_TAX", - "GC_COMPARE", - "GC_COMPARE_VARIANT", - "GC_CONFIGURABLE_VARIANT_FOR_SIMPLE", - "GC_CONFIGURABLE_VARIANT_VALUES", - "GC_CONFIGURABLE_VARIANT_VALUES_CONTENT", - "GC_CONFIGURABLE_VARIANT_VALUES_GALLERY", - "GC_CONFIGURABLE_VARIANT_VALUES_URL", - "GC_CONTAINER_SIZING_CONTENT", - "GC_CONTAINER_SIZING_SHELL", - "GC_CROSS_SELLS_HIDE_CART_ITEMS", - "GC_CROSS_SELLS_REDIRECT_ITEMS", - "GC_CUSTOMER_ADDRESS_NOTE_ENABLE", - "GC_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_CUSTOMER_DELETE_ENABLED", - "GC_CUSTOMER_X_MAGENTO_CACHE_ID_DISABLE", - "GC_DATA_LAYER", - "GC_DATA_LAYER_CORE_WEB_VITALS", - "GC_DEBUG", - "GC_DEBUG_CART", - "GC_DEBUG_PLUGIN_STATUS", - "GC_DEBUG_SESSIONS", - "GC_DEBUG_WEBPACK_CIRCULAR_DEPENDENCY_PLUGIN", - "GC_DEBUG_WEBPACK_DUPLICATES_PLUGIN", - "GC_DEMO_MODE", - "GC_ENABLE_GUEST_CHECKOUT_LOGIN", - "GC_GOOGLE_ANALYTICS_ID", - "GC_GOOGLE_PLAYSTORE", - "GC_GOOGLE_PLAYSTORE_PACKAGE_NAME", - "GC_GOOGLE_PLAYSTORE_SHA256CERTIFICATE_FINGERPRINT", - "GC_GOOGLE_RECAPTCHA_KEY", - "GC_GOOGLE_TAGMANAGER_ID", - "GC_HYGRAPH_ENDPOINT", - "GC_HYGRAPH_MANAGEMENT_API", - "GC_HYGRAPH_PROJECT_ID", - "GC_HYGRAPH_WRITE_ACCESS_TOKEN", - "GC_LIMIT_SSG", - "GC_MAGENTO_ENDPOINT", - "GC_MAGENTO_VERSION", - "GC_PERMISSIONS", - "GC_PERMISSIONS_CART", - "GC_PERMISSIONS_CHECKOUT", - "GC_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_PERMISSIONS_WEBSITE", - "GC_PREVIEW_SECRET", - "GC_PRODUCT_FILTERS_LAYOUT", - "GC_PRODUCT_FILTERS_PRO", - "GC_PRODUCT_LIST_PAGINATION_VARIANT", - "GC_PRODUCT_ROUTE", - "GC_RECENTLY_VIEWED_PRODUCTS", - "GC_RECENTLY_VIEWED_PRODUCTS_ENABLED", - "GC_RECENTLY_VIEWED_PRODUCTS_MAX_COUNT", - "GC_ROBOTS_ALLOW", - "GC_SIDEBAR_GALLERY", - "GC_SIDEBAR_GALLERY_PAGINATION_VARIANT", - "GC_STOREFRONT", - "GC_STOREFRONT_0", - "GC_STOREFRONT_0_CANONICAL_BASE_URL", - "GC_STOREFRONT_0_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_0_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_0_DEFAULT_LOCALE", - "GC_STOREFRONT_0_DOMAIN", - "GC_STOREFRONT_0_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_0_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_0_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_0_HYGRAPH_LOCALES", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_0_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_0_LINGUI_LOCALE", - "GC_STOREFRONT_0_LOCALE", - "GC_STOREFRONT_0_MAGENTO_STORE_CODE", - "GC_STOREFRONT_0_PERMISSIONS", - "GC_STOREFRONT_0_PERMISSIONS_CART", - "GC_STOREFRONT_0_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_0_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_0_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_0_ROBOTS_ALLOW", - "GC_STOREFRONT_1", - "GC_STOREFRONT_1_CANONICAL_BASE_URL", - "GC_STOREFRONT_1_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_1_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_1_DEFAULT_LOCALE", - "GC_STOREFRONT_1_DOMAIN", - "GC_STOREFRONT_1_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_1_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_1_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_1_HYGRAPH_LOCALES", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_1_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_1_LINGUI_LOCALE", - "GC_STOREFRONT_1_LOCALE", - "GC_STOREFRONT_1_MAGENTO_STORE_CODE", - "GC_STOREFRONT_1_PERMISSIONS", - "GC_STOREFRONT_1_PERMISSIONS_CART", - "GC_STOREFRONT_1_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_1_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_1_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_1_ROBOTS_ALLOW", - "GC_STOREFRONT_2", - "GC_STOREFRONT_2_CANONICAL_BASE_URL", - "GC_STOREFRONT_2_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_2_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_2_DEFAULT_LOCALE", - "GC_STOREFRONT_2_DOMAIN", - "GC_STOREFRONT_2_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_2_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_2_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_2_HYGRAPH_LOCALES", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_2_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_2_LINGUI_LOCALE", - "GC_STOREFRONT_2_LOCALE", - "GC_STOREFRONT_2_MAGENTO_STORE_CODE", - "GC_STOREFRONT_2_PERMISSIONS", - "GC_STOREFRONT_2_PERMISSIONS_CART", - "GC_STOREFRONT_2_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_2_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_2_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_2_ROBOTS_ALLOW", - "GC_STOREFRONT_3", - "GC_STOREFRONT_3_CANONICAL_BASE_URL", - "GC_STOREFRONT_3_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_3_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_3_DEFAULT_LOCALE", - "GC_STOREFRONT_3_DOMAIN", - "GC_STOREFRONT_3_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_3_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_3_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_3_HYGRAPH_LOCALES", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_3_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_3_LINGUI_LOCALE", - "GC_STOREFRONT_3_LOCALE", - "GC_STOREFRONT_3_MAGENTO_STORE_CODE", - "GC_STOREFRONT_3_PERMISSIONS", - "GC_STOREFRONT_3_PERMISSIONS_CART", - "GC_STOREFRONT_3_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_3_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_3_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_3_ROBOTS_ALLOW", - "GC_STOREFRONT_4", - "GC_STOREFRONT_4_CANONICAL_BASE_URL", - "GC_STOREFRONT_4_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_4_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_4_DEFAULT_LOCALE", - "GC_STOREFRONT_4_DOMAIN", - "GC_STOREFRONT_4_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_4_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_4_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_4_HYGRAPH_LOCALES", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_4_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_4_LINGUI_LOCALE", - "GC_STOREFRONT_4_LOCALE", - "GC_STOREFRONT_4_MAGENTO_STORE_CODE", - "GC_STOREFRONT_4_PERMISSIONS", - "GC_STOREFRONT_4_PERMISSIONS_CART", - "GC_STOREFRONT_4_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_4_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_4_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_4_ROBOTS_ALLOW", - "GC_STOREFRONT_5", - "GC_STOREFRONT_5_CANONICAL_BASE_URL", - "GC_STOREFRONT_5_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_5_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_5_DEFAULT_LOCALE", - "GC_STOREFRONT_5_DOMAIN", - "GC_STOREFRONT_5_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_5_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_5_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_5_HYGRAPH_LOCALES", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_5_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_5_LINGUI_LOCALE", - "GC_STOREFRONT_5_LOCALE", - "GC_STOREFRONT_5_MAGENTO_STORE_CODE", - "GC_STOREFRONT_5_PERMISSIONS", - "GC_STOREFRONT_5_PERMISSIONS_CART", - "GC_STOREFRONT_5_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_5_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_5_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_5_ROBOTS_ALLOW", - "GC_STOREFRONT_6", - "GC_STOREFRONT_6_CANONICAL_BASE_URL", - "GC_STOREFRONT_6_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_6_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_6_DEFAULT_LOCALE", - "GC_STOREFRONT_6_DOMAIN", - "GC_STOREFRONT_6_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_6_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_6_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_6_HYGRAPH_LOCALES", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_6_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_6_LINGUI_LOCALE", - "GC_STOREFRONT_6_LOCALE", - "GC_STOREFRONT_6_MAGENTO_STORE_CODE", - "GC_STOREFRONT_6_PERMISSIONS", - "GC_STOREFRONT_6_PERMISSIONS_CART", - "GC_STOREFRONT_6_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_6_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_6_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_6_ROBOTS_ALLOW", - "GC_STOREFRONT_7", - "GC_STOREFRONT_7_CANONICAL_BASE_URL", - "GC_STOREFRONT_7_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_7_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_7_DEFAULT_LOCALE", - "GC_STOREFRONT_7_DOMAIN", - "GC_STOREFRONT_7_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_7_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_7_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_7_HYGRAPH_LOCALES", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_7_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_7_LINGUI_LOCALE", - "GC_STOREFRONT_7_LOCALE", - "GC_STOREFRONT_7_MAGENTO_STORE_CODE", - "GC_STOREFRONT_7_PERMISSIONS", - "GC_STOREFRONT_7_PERMISSIONS_CART", - "GC_STOREFRONT_7_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_7_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_7_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_7_ROBOTS_ALLOW", - "GC_STOREFRONT_8", - "GC_STOREFRONT_8_CANONICAL_BASE_URL", - "GC_STOREFRONT_8_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_8_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_8_DEFAULT_LOCALE", - "GC_STOREFRONT_8_DOMAIN", - "GC_STOREFRONT_8_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_8_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_8_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_8_HYGRAPH_LOCALES", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_8_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_8_LINGUI_LOCALE", - "GC_STOREFRONT_8_LOCALE", - "GC_STOREFRONT_8_MAGENTO_STORE_CODE", - "GC_STOREFRONT_8_PERMISSIONS", - "GC_STOREFRONT_8_PERMISSIONS_CART", - "GC_STOREFRONT_8_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_8_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_8_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_8_ROBOTS_ALLOW", - "GC_STOREFRONT_9", - "GC_STOREFRONT_9_CANONICAL_BASE_URL", - "GC_STOREFRONT_9_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_9_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_9_DEFAULT_LOCALE", - "GC_STOREFRONT_9_DOMAIN", - "GC_STOREFRONT_9_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_9_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_9_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_9_HYGRAPH_LOCALES", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_9_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_9_LINGUI_LOCALE", - "GC_STOREFRONT_9_LOCALE", - "GC_STOREFRONT_9_MAGENTO_STORE_CODE", - "GC_STOREFRONT_9_PERMISSIONS", - "GC_STOREFRONT_9_PERMISSIONS_CART", - "GC_STOREFRONT_9_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_9_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_9_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_9_ROBOTS_ALLOW", - "GC_STOREFRONT_10", - "GC_STOREFRONT_10_CANONICAL_BASE_URL", - "GC_STOREFRONT_10_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_10_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_10_DEFAULT_LOCALE", - "GC_STOREFRONT_10_DOMAIN", - "GC_STOREFRONT_10_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_10_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_10_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_10_HYGRAPH_LOCALES", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_10_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_10_LINGUI_LOCALE", - "GC_STOREFRONT_10_LOCALE", - "GC_STOREFRONT_10_MAGENTO_STORE_CODE", - "GC_STOREFRONT_10_PERMISSIONS", - "GC_STOREFRONT_10_PERMISSIONS_CART", - "GC_STOREFRONT_10_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_10_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_10_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_10_ROBOTS_ALLOW", - "GC_STOREFRONT_11", - "GC_STOREFRONT_11_CANONICAL_BASE_URL", - "GC_STOREFRONT_11_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_11_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_11_DEFAULT_LOCALE", - "GC_STOREFRONT_11_DOMAIN", - "GC_STOREFRONT_11_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_11_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_11_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_11_HYGRAPH_LOCALES", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_11_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_11_LINGUI_LOCALE", - "GC_STOREFRONT_11_LOCALE", - "GC_STOREFRONT_11_MAGENTO_STORE_CODE", - "GC_STOREFRONT_11_PERMISSIONS", - "GC_STOREFRONT_11_PERMISSIONS_CART", - "GC_STOREFRONT_11_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_11_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_11_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_11_ROBOTS_ALLOW", - "GC_STOREFRONT_12", - "GC_STOREFRONT_12_CANONICAL_BASE_URL", - "GC_STOREFRONT_12_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_12_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_12_DEFAULT_LOCALE", - "GC_STOREFRONT_12_DOMAIN", - "GC_STOREFRONT_12_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_12_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_12_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_12_HYGRAPH_LOCALES", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_12_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_12_LINGUI_LOCALE", - "GC_STOREFRONT_12_LOCALE", - "GC_STOREFRONT_12_MAGENTO_STORE_CODE", - "GC_STOREFRONT_12_PERMISSIONS", - "GC_STOREFRONT_12_PERMISSIONS_CART", - "GC_STOREFRONT_12_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_12_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_12_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_12_ROBOTS_ALLOW", - "GC_STOREFRONT_13", - "GC_STOREFRONT_13_CANONICAL_BASE_URL", - "GC_STOREFRONT_13_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_13_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_13_DEFAULT_LOCALE", - "GC_STOREFRONT_13_DOMAIN", - "GC_STOREFRONT_13_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_13_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_13_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_13_HYGRAPH_LOCALES", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_13_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_13_LINGUI_LOCALE", - "GC_STOREFRONT_13_LOCALE", - "GC_STOREFRONT_13_MAGENTO_STORE_CODE", - "GC_STOREFRONT_13_PERMISSIONS", - "GC_STOREFRONT_13_PERMISSIONS_CART", - "GC_STOREFRONT_13_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_13_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_13_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_13_ROBOTS_ALLOW", - "GC_STOREFRONT_14", - "GC_STOREFRONT_14_CANONICAL_BASE_URL", - "GC_STOREFRONT_14_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_14_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_14_DEFAULT_LOCALE", - "GC_STOREFRONT_14_DOMAIN", - "GC_STOREFRONT_14_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_14_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_14_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_14_HYGRAPH_LOCALES", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_14_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_14_LINGUI_LOCALE", - "GC_STOREFRONT_14_LOCALE", - "GC_STOREFRONT_14_MAGENTO_STORE_CODE", - "GC_STOREFRONT_14_PERMISSIONS", - "GC_STOREFRONT_14_PERMISSIONS_CART", - "GC_STOREFRONT_14_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_14_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_14_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_14_ROBOTS_ALLOW", - "GC_STOREFRONT_15", - "GC_STOREFRONT_15_CANONICAL_BASE_URL", - "GC_STOREFRONT_15_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_15_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_15_DEFAULT_LOCALE", - "GC_STOREFRONT_15_DOMAIN", - "GC_STOREFRONT_15_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_15_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_15_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_15_HYGRAPH_LOCALES", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_15_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_15_LINGUI_LOCALE", - "GC_STOREFRONT_15_LOCALE", - "GC_STOREFRONT_15_MAGENTO_STORE_CODE", - "GC_STOREFRONT_15_PERMISSIONS", - "GC_STOREFRONT_15_PERMISSIONS_CART", - "GC_STOREFRONT_15_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_15_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_15_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_15_ROBOTS_ALLOW", - "GC_STOREFRONT_16", - "GC_STOREFRONT_16_CANONICAL_BASE_URL", - "GC_STOREFRONT_16_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_16_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_16_DEFAULT_LOCALE", - "GC_STOREFRONT_16_DOMAIN", - "GC_STOREFRONT_16_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_16_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_16_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_16_HYGRAPH_LOCALES", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_16_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_16_LINGUI_LOCALE", - "GC_STOREFRONT_16_LOCALE", - "GC_STOREFRONT_16_MAGENTO_STORE_CODE", - "GC_STOREFRONT_16_PERMISSIONS", - "GC_STOREFRONT_16_PERMISSIONS_CART", - "GC_STOREFRONT_16_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_16_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_16_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_16_ROBOTS_ALLOW", - "GC_STOREFRONT_17", - "GC_STOREFRONT_17_CANONICAL_BASE_URL", - "GC_STOREFRONT_17_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_17_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_17_DEFAULT_LOCALE", - "GC_STOREFRONT_17_DOMAIN", - "GC_STOREFRONT_17_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_17_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_17_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_17_HYGRAPH_LOCALES", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_17_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_17_LINGUI_LOCALE", - "GC_STOREFRONT_17_LOCALE", - "GC_STOREFRONT_17_MAGENTO_STORE_CODE", - "GC_STOREFRONT_17_PERMISSIONS", - "GC_STOREFRONT_17_PERMISSIONS_CART", - "GC_STOREFRONT_17_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_17_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_17_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_17_ROBOTS_ALLOW", - "GC_STOREFRONT_18", - "GC_STOREFRONT_18_CANONICAL_BASE_URL", - "GC_STOREFRONT_18_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_18_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_18_DEFAULT_LOCALE", - "GC_STOREFRONT_18_DOMAIN", - "GC_STOREFRONT_18_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_18_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_18_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_18_HYGRAPH_LOCALES", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_18_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_18_LINGUI_LOCALE", - "GC_STOREFRONT_18_LOCALE", - "GC_STOREFRONT_18_MAGENTO_STORE_CODE", - "GC_STOREFRONT_18_PERMISSIONS", - "GC_STOREFRONT_18_PERMISSIONS_CART", - "GC_STOREFRONT_18_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_18_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_18_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_18_ROBOTS_ALLOW", - "GC_STOREFRONT_19", - "GC_STOREFRONT_19_CANONICAL_BASE_URL", - "GC_STOREFRONT_19_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_19_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_19_DEFAULT_LOCALE", - "GC_STOREFRONT_19_DOMAIN", - "GC_STOREFRONT_19_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_19_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_19_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_19_HYGRAPH_LOCALES", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_19_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_19_LINGUI_LOCALE", - "GC_STOREFRONT_19_LOCALE", - "GC_STOREFRONT_19_MAGENTO_STORE_CODE", - "GC_STOREFRONT_19_PERMISSIONS", - "GC_STOREFRONT_19_PERMISSIONS_CART", - "GC_STOREFRONT_19_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_19_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_19_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_19_ROBOTS_ALLOW", - "GC_STOREFRONT_20", - "GC_STOREFRONT_20_CANONICAL_BASE_URL", - "GC_STOREFRONT_20_CART_DISPLAY_PRICES_INCL_TAX", - "GC_STOREFRONT_20_CUSTOMER_COMPANY_FIELDS_ENABLE", - "GC_STOREFRONT_20_DEFAULT_LOCALE", - "GC_STOREFRONT_20_DOMAIN", - "GC_STOREFRONT_20_GOOGLE_ANALYTICS_ID", - "GC_STOREFRONT_20_GOOGLE_RECAPTCHA_KEY", - "GC_STOREFRONT_20_GOOGLE_TAGMANAGER_ID", - "GC_STOREFRONT_20_HYGRAPH_LOCALES", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_0", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_1", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_2", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_3", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_4", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_5", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_6", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_7", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_8", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_9", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_10", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_11", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_12", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_13", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_14", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_15", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_16", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_17", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_18", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_19", - "GC_STOREFRONT_20_HYGRAPH_LOCALES_20", - "GC_STOREFRONT_20_LINGUI_LOCALE", - "GC_STOREFRONT_20_LOCALE", - "GC_STOREFRONT_20_MAGENTO_STORE_CODE", - "GC_STOREFRONT_20_PERMISSIONS", - "GC_STOREFRONT_20_PERMISSIONS_CART", - "GC_STOREFRONT_20_PERMISSIONS_CHECKOUT", - "GC_STOREFRONT_20_PERMISSIONS_CUSTOMER_ACCOUNT", - "GC_STOREFRONT_20_PERMISSIONS_WEBSITE", - "GC_STOREFRONT_20_ROBOTS_ALLOW", - "GC_WISHLIST_HIDE_FOR_GUESTS", - "GC_WISHLIST_SHOW_FEEDBACK_MESSAGE", -] -`; diff --git a/packagesDev/next-config/__tests__/config/utils/mergeEnvIntoConfig.ts b/packagesDev/next-config/__tests__/config/utils/mergeEnvIntoConfig.ts index 871799c722..493d789250 100644 --- a/packagesDev/next-config/__tests__/config/utils/mergeEnvIntoConfig.ts +++ b/packagesDev/next-config/__tests__/config/utils/mergeEnvIntoConfig.ts @@ -23,7 +23,13 @@ const env = { } it('traverses a schema and returns a list of env variables that match', () => { const [envSchema] = configToEnvSchema(GraphCommerceConfigSchema()) - expect(Object.keys(envSchema.shape)).toMatchSnapshot() + + const keys = Object.keys(envSchema.shape) + + expect(keys.includes('GC_ADVANCED_FILTERS')).toBe(false) + expect(keys.includes('GC_STOREFRONT')).toBe(true) + expect(keys.includes('GC_STOREFRONT_0')).toBe(true) + expect(keys.includes('GC_STOREFRONT_1')).toBe(true) }) it('parses an env config object', () => { const [envSchema] = configToEnvSchema(GraphCommerceConfigSchema()) diff --git a/packagesDev/next-config/dist/generated/config.js b/packagesDev/next-config/dist/generated/config.js index 870b7349be..71f23e744d 100644 --- a/packagesDev/next-config/dist/generated/config.js +++ b/packagesDev/next-config/dist/generated/config.js @@ -133,6 +133,7 @@ function GraphCommerceConfigSchema() { googlePlaystore: GraphCommerceGooglePlaystoreConfigSchema().nullish(), googleRecaptchaKey: _zod.z.string().nullish(), googleTagmanagerId: _zod.z.string().nullish(), + graphqlMeshEditMode: _zod.z.boolean().default(false).nullish(), hygraphEndpoint: _zod.z.string().min(1), hygraphManagementApi: _zod.z.string().nullish(), hygraphProjectId: _zod.z.string().nullish(), diff --git a/packagesDev/next-config/src/generated/config.ts b/packagesDev/next-config/src/generated/config.ts index ce83bc3f7c..11b764f701 100644 --- a/packagesDev/next-config/src/generated/config.ts +++ b/packagesDev/next-config/src/generated/config.ts @@ -253,6 +253,11 @@ export type GraphCommerceConfig = { * This value is required even if you are configuring different values for each locale. */ googleTagmanagerId?: InputMaybe + /** + * The GraphQL Mesh will be loaded once and any modifications to resolvers will be ignored. When + * developing new resolvers this should be set to true. + */ + graphqlMeshEditMode?: InputMaybe /** * The HyGraph endpoint.> Read-only endpoint that allows low latency and high read-throughput content delivery. * @@ -610,6 +615,7 @@ export function GraphCommerceConfigSchema(): z.ZodObject