const PROVIDERS = ['bigcommerce', 'shopify', 'swell', 'vendure', 'saleor'] function getProviderName() { return ( process.env.COMMERCE_PROVIDER || (process.env.BIGCOMMERCE_STOREFRONT_API_URL ? 'bigcommerce' : process.env.NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN ? 'shopify' : process.env.NEXT_PUBLIC_SWELL_STORE_ID ? 'swell' : 'local') ) } const name = getProviderName() const EXCLUDED_PROVIDERS = PROVIDERS.filter((p) => p !== name).map( (p) => `./framework/${p}` ) module.exports = { compilerOptions: { baseUrl: '.', target: 'esnext', lib: ['dom', 'dom.iterable', 'esnext'], allowJs: true, skipLibCheck: true, strict: true, forceConsistentCasingInFileNames: true, noEmit: true, esModuleInterop: true, module: 'esnext', moduleResolution: 'node', resolveJsonModule: true, isolatedModules: true, jsx: 'preserve', incremental: true, paths: { '@lib/*': ['lib/*'], '@utils/*': ['utils/*'], '@config/*': ['config/*'], '@assets/*': ['assets/*'], '@components/*': ['components/*'], '@commerce': ['framework/commerce'], '@commerce/*': ['framework/commerce/*'], // Update paths to point to the selected provider '@framework': [`framework/${name}`], '@framework/*': [`framework/${name}/*`], }, }, include: ['next-env.d.ts', '**/*.d.ts', '**/*.ts', '**/*.tsx', '**/*.js'], exclude: [ 'node_modules', // It may be useful to exclude the other providers // from TS checking ...EXCLUDED_PROVIDERS, ], }