@spartacus/tracking
Version:
Spartacus tracking and personalization library
109 lines • 4.35 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.addTrackingFeatures = void 0;
const schematics_1 = require("@angular-devkit/schematics");
const schematics_2 = require("@spartacus/schematics");
const package_json_1 = require("../../package.json");
const constants_1 = require("../constants");
function addTrackingFeatures(options) {
return (tree, _context) => {
const packageJson = schematics_2.readPackageJson(tree);
schematics_2.validateSpartacusInstallation(packageJson);
return schematics_1.chain([
schematics_2.addPackageJsonDependenciesForLibrary(package_json_1.peerDependencies, options),
schematics_2.shouldAddFeature(schematics_2.CLI_TRACKING_TMS_GTM_FEATURE, options.features)
? addGtm(options)
: schematics_1.noop(),
schematics_2.shouldAddFeature(schematics_2.CLI_TRACKING_TMS_AEP_FEATURE, options.features)
? addAep(options)
: schematics_1.noop(),
schematics_2.shouldAddFeature(schematics_2.CLI_TRACKING_PERSONALIZATION_FEATURE, options.features)
? addPersonalizationFeature(options)
: schematics_1.noop(),
]);
};
}
exports.addTrackingFeatures = addTrackingFeatures;
function addGtm(options) {
return schematics_2.addLibraryFeature(Object.assign(Object.assign({}, options), { lazy: false }), // To add feature module in imports (not lazy)
{
folderName: constants_1.TRACKING_FOLDER_NAME,
moduleName: constants_1.TMS_MODULE_NAME,
rootModule: {
importPath: constants_1.SPARTACUS_TMS_CORE,
name: constants_1.TMS_BASE_MODULE,
content: `${constants_1.TMS_BASE_MODULE}.forRoot()`,
},
featureModule: {
importPath: constants_1.SPARTACUS_TMS_GTM,
name: constants_1.TMS_GTM_MODULE,
},
customConfig: {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_TMS_GTM,
namedImports: [constants_1.TMS_GTM_MODULE],
},
{ moduleSpecifier: constants_1.SPARTACUS_TMS_CORE, namedImports: [constants_1.TMS_CONFIG] },
],
content: `<${constants_1.TMS_CONFIG}>{
tagManager: {
gtm: {
events: [],
},
},
}`,
},
});
}
function addAep(options) {
return schematics_2.addLibraryFeature(Object.assign(Object.assign({}, options), { lazy: false }), // To add feature module in imports (not lazy)
{
folderName: constants_1.TRACKING_FOLDER_NAME,
moduleName: constants_1.TMS_MODULE_NAME,
rootModule: {
importPath: constants_1.SPARTACUS_TMS_CORE,
name: constants_1.TMS_BASE_MODULE,
content: `${constants_1.TMS_BASE_MODULE}.forRoot()`,
},
featureModule: {
importPath: constants_1.SPARTACUS_TMS_AEP,
name: constants_1.TMS_AEP_MODULE,
},
customConfig: {
import: [
{
moduleSpecifier: constants_1.SPARTACUS_TMS_AEP,
namedImports: [constants_1.TMS_AEP_MODULE],
},
{ moduleSpecifier: constants_1.SPARTACUS_TMS_CORE, namedImports: [constants_1.TMS_CONFIG] },
],
content: `<${constants_1.TMS_CONFIG}>{
tagManager: {
aep: {
events: [],
},
},
}`,
},
});
}
function addPersonalizationFeature(options) {
return schematics_2.addLibraryFeature(options, {
folderName: constants_1.TRACKING_FOLDER_NAME,
moduleName: constants_1.PERSONALIZATION_MODULE_NAME,
featureModule: {
name: constants_1.PERSONALIZATION_MODULE,
importPath: constants_1.SPARTACUS_PERSONALIZATION,
},
rootModule: {
name: constants_1.PERSONALIZATION_ROOT_MODULE,
importPath: constants_1.SPARTACUS_PERSONALIZATION_ROOT,
},
lazyLoadingChunk: {
moduleSpecifier: constants_1.SPARTACUS_PERSONALIZATION_ROOT,
namedImports: [constants_1.PERSONALIZATION_FEATURE_NAME_CONSTANT],
},
});
}
//# sourceMappingURL=index.js.map