@spartacus/schematics
Version:
Spartacus schematics
280 lines • 11.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupSpartacusFeaturesModule = 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 program_1 = require("../shared/utils/program");
const project_tsconfig_paths_1 = require("../shared/utils/project-tsconfig-paths");
/** Migration which ensures the spartacus features are being correctly set up */
function setupSpartacusFeaturesModule(project) {
return (tree) => {
const { buildPaths } = project_tsconfig_paths_1.getProjectTsConfigPaths(tree, project);
if (!buildPaths.length) {
throw new schematics_1.SchematicsException(`Could not find any tsconfig file. Cannot configure ${constants_1.SPARTACUS_FEATURES_NG_MODULE}.`);
}
const basePath = process.cwd();
for (const tsconfigPath of buildPaths) {
configureSpartacusModules(tree, tsconfigPath, basePath);
}
return tree;
};
}
exports.setupSpartacusFeaturesModule = setupSpartacusFeaturesModule;
function configureSpartacusModules(tree, tsconfigPath, basePath) {
const { appSourceFiles } = program_1.createProgram(tree, basePath, tsconfigPath);
for (const sourceFile of appSourceFiles) {
if (sourceFile
.getFilePath()
.includes(`${constants_1.SPARTACUS_FEATURES_MODULE}.module.ts`)) {
[
`// Auth Core
AuthModule.forRoot(),`,
'LogoutModule,',
'LoginRouteModule,',
].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_CORE,
namedImports: ['AuthModule'],
},
{
moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB,
namedImports: ['LogoutModule', 'LoginRouteModule'],
},
],
content,
});
});
[
`// Basic Cms Components
HamburgerMenuModule,`,
'SiteContextSelectorModule,',
'LinkModule,',
'BannerModule,',
'CmsParagraphModule,',
'TabParagraphContainerModule,',
'BannerCarouselModule,',
'CategoryNavigationModule,',
'NavigationModule,',
'FooterNavigationModule,',
'BreadcrumbModule,',
].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB,
namedImports: [
'HamburgerMenuModule',
'SiteContextSelectorModule',
'LinkModule',
'BannerModule',
'CmsParagraphModule',
'TabParagraphContainerModule',
'BannerCarouselModule',
'CategoryNavigationModule',
'FooterNavigationModule',
'NavigationModule',
'BreadcrumbModule',
],
},
],
content,
});
});
[
`// User Core,
UserTransitional_4_2_Module,`,
'UserOccTransitional_4_2_Module,',
`// User UI,
AddressBookModule,`,
'PaymentMethodsModule,',
'NotificationPreferenceModule,',
'MyInterestsModule,',
'StockNotificationModule,',
'ConsentManagementModule,',
'MyCouponsModule,',
].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_CORE,
namedImports: [
'UserTransitional_4_2_Module',
'UserOccTransitional_4_2_Module',
],
},
{
moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB,
namedImports: [
'AddressBookModule',
'PaymentMethodsModule',
'NotificationPreferenceModule',
'MyInterestsModule',
'StockNotificationModule',
'ConsentManagementModule',
'MyCouponsModule',
],
},
],
content,
});
});
[
`// Anonymous Consents Core,
AnonymousConsentsModule.forRoot(),`,
`// Anonymous Consents UI,
AnonymousConsentsDialogModule,`,
'AnonymousConsentManagementBannerModule,',
].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_CORE,
namedImports: ['AnonymousConsentsModule'],
},
{
moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB,
namedImports: [
'AnonymousConsentManagementBannerModule',
'AnonymousConsentsDialogModule',
],
},
],
content,
});
});
[
`// Product Core,
ProductModule.forRoot(),`,
'ProductOccModule,',
`// Product UI,
ProductDetailsPageModule,`,
'ProductListingPageModule,',
'ProductListModule,',
'SearchBoxModule,',
'ProductFacetNavigationModule,',
'ProductTabsModule,',
'ProductCarouselModule,',
'ProductReferencesModule,',
'ProductImagesModule,',
'ProductSummaryModule,',
'ProductIntroModule,',
].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_CORE,
namedImports: ['ProductModule', 'ProductOccModule'],
},
{
moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB,
namedImports: [
'ProductCarouselModule',
'ProductDetailsPageModule',
'ProductFacetNavigationModule',
'ProductImagesModule',
'ProductIntroModule',
'ProductListingPageModule',
'ProductListModule',
'ProductPageEventModule',
'ProductReferencesModule',
'ProductSummaryModule',
'ProductTabsModule',
'SearchBoxModule',
],
},
],
content,
});
});
[
`// Cart Core,
CartModule.forRoot(),`,
'CartOccModule,',
`// Cart UI,
CartComponentModule,`,
'WishListModule,',
].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_CORE,
namedImports: ['CartModule', 'CartOccModule'],
},
{
moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB,
namedImports: ['CartComponentModule', 'WishListModule'],
},
],
content,
});
});
['CostCenterOccModule,'].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_CORE,
namedImports: ['CostCenterOccModule'],
},
],
content,
});
});
[
`// Order,
OrderOccModule`,
].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_CORE,
namedImports: ['OrderOccModule'],
},
],
content,
});
});
[
`// Page Events,
NavigationEventModule,`,
'HomePageEventModule,',
'CartPageEventModule,',
'ProductPageEventModule,',
].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_STOREFRONTLIB,
namedImports: [
'NavigationEventModule',
'HomePageEventModule',
'CartPageEventModule',
'ProductPageEventModule',
],
},
],
content,
});
});
[
`// External routes,
ExternalRoutesModule.forRoot(),`,
].forEach((content) => {
new_module_utils_1.addModuleImport(sourceFile, {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_CORE,
namedImports: ['ExternalRoutesModule'],
},
],
content,
});
});
program_1.saveAndFormat(sourceFile);
break;
}
}
}
//# sourceMappingURL=spartacus-features.js.map