UNPKG

@spartacus/schematics

Version:
169 lines 6.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addSpartacusConfiguration = void 0; const schematics_1 = require("@angular-devkit/schematics"); const constants_1 = require("../shared/constants"); const new_module_utils_1 = require("../shared/utils/new-module-utils"); const package_utils_1 = require("../shared/utils/package-utils"); const program_1 = require("../shared/utils/program"); const project_tsconfig_paths_1 = require("../shared/utils/project-tsconfig-paths"); const transform_utils_1 = require("../shared/utils/transform-utils"); function addSpartacusConfiguration(options) { return (tree) => { const { buildPaths } = project_tsconfig_paths_1.getProjectTsConfigPaths(tree, options.project); if (!buildPaths.length) { throw new schematics_1.SchematicsException('Could not find any tsconfig file. Cannot configure SpartacusConfigurationModule.'); } const basePath = process.cwd(); for (const tsconfigPath of buildPaths) { addConfiguration(tree, tsconfigPath, basePath, options); } return tree; }; } exports.addSpartacusConfiguration = addSpartacusConfiguration; function addConfiguration(tree, tsconfigPath, basePath, options) { const { appSourceFiles } = program_1.createProgram(tree, basePath, tsconfigPath); for (const sourceFile of appSourceFiles) { if (sourceFile .getFilePath() .includes(`${constants_1.SPARTACUS_CONFIGURATION_MODULE}.module.ts`)) { addCommonConfiguration(sourceFile, options); program_1.saveAndFormat(sourceFile); break; } } } function addCommonConfiguration(sourceFile, options) { new_module_utils_1.addModuleProvider(sourceFile, { import: [ { moduleSpecifier: constants_1.SPARTACUS_CORE, namedImports: [constants_1.PROVIDE_CONFIG_FUNCTION], }, { moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB, namedImports: ['layoutConfig'], }, ], content: `provideConfig(layoutConfig)`, }); new_module_utils_1.addModuleProvider(sourceFile, { import: [ { moduleSpecifier: constants_1.SPARTACUS_CORE, namedImports: [constants_1.PROVIDE_CONFIG_FUNCTION], }, { moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB, namedImports: ['mediaConfig'], }, ], content: `provideConfig(mediaConfig)`, }); new_module_utils_1.addModuleProvider(sourceFile, { import: { moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB, namedImports: ['defaultCmsContentProviders'], }, content: `...defaultCmsContentProviders`, }); addStorefrontConfig(sourceFile, options); } function createSiteContextConfig(options) { const currency = transform_utils_1.parseCSV(options.currency, ['USD']).toUpperCase(); const language = transform_utils_1.parseCSV(options.language, ['en']).toLowerCase(); let contextConfig = ` context: { currency: [${currency}], language: [${language}],`; if (options.baseSite) { const baseSites = transform_utils_1.parseCSV(options.baseSite); contextConfig += `\nbaseSite: [${baseSites}],`; } if (options.urlParameters) { const urlParameters = transform_utils_1.parseCSV(options.urlParameters); contextConfig += `\nurlParameters: [${urlParameters}]`; } contextConfig += `},`; return `provideConfig(<${constants_1.SITE_CONTEXT_CONFIG}>{${contextConfig}})`; } /** * Creates and adds a spartacus config based on the provided `options`. * @param options */ function addStorefrontConfig(sourceFile, options) { const backendConfig = createBackendConfiguration(options); new_module_utils_1.addModuleProvider(sourceFile, { import: [ { moduleSpecifier: constants_1.SPARTACUS_CORE, namedImports: [constants_1.PROVIDE_CONFIG_FUNCTION, constants_1.OCC_CONFIG], }, ], content: backendConfig, }); const siteContextConfig = createSiteContextConfig(options); new_module_utils_1.addModuleProvider(sourceFile, { import: [ { moduleSpecifier: constants_1.SPARTACUS_CORE, namedImports: [constants_1.PROVIDE_CONFIG_FUNCTION, constants_1.SITE_CONTEXT_CONFIG], }, ], content: siteContextConfig, }); const i18nConfig = createI18NConfiguration(); new_module_utils_1.addModuleProvider(sourceFile, { import: [ { moduleSpecifier: constants_1.SPARTACUS_CORE, namedImports: [constants_1.PROVIDE_CONFIG_FUNCTION, constants_1.I18N_CONFIG], }, { moduleSpecifier: constants_1.SPARTACUS_ASSETS, namedImports: ['translations', 'translationChunksConfig'], }, ], content: i18nConfig, }); const featureLevelConfig = createFeatureLevelConfiguration(options); new_module_utils_1.addModuleProvider(sourceFile, { import: [ { moduleSpecifier: constants_1.SPARTACUS_CORE, namedImports: [constants_1.PROVIDE_CONFIG_FUNCTION, constants_1.FEATURES_CONFIG], }, ], content: featureLevelConfig, }); } function createBackendConfiguration(options) { const baseUrlPart = `\n baseUrl: '${options.baseUrl}',`; const occPrefixPart = options.occPrefix ? `prefix: '${options.occPrefix}'` : ''; return `provideConfig(<${constants_1.OCC_CONFIG}>{ backend: { occ: {${options.useMetaTags ? '' : baseUrlPart}${occPrefixPart} } }, })`; } function createI18NConfiguration() { return `provideConfig(<${constants_1.I18N_CONFIG}>{ i18n: { resources: translations, chunks: translationChunksConfig, fallbackLang: 'en' }, })`; } function createFeatureLevelConfiguration(options) { const featureLevelConfig = ` features: { level: '${options.featureLevel || package_utils_1.getSpartacusCurrentFeatureLevel()}' }`; return `provideConfig(<${constants_1.FEATURES_CONFIG}>{${featureLevelConfig}})`; } //# sourceMappingURL=configuration.js.map