UNPKG

@flxbl-io/sfp

Version:

sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model

110 lines 10 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const sfp_logger_1 = __importStar(require("@flxbl-io/sfp-logger")); const fs = __importStar(require("fs-extra")); const QueryHelper_1 = __importDefault(require("../../queryHelper/QueryHelper")); const CustomFieldFetcher_1 = __importDefault(require("../../metadata/CustomFieldFetcher")); const SFPOrg_1 = __importDefault(require("../../org/SFPOrg")); const path_1 = __importDefault(require("path")); const OrgDetailsFetcher_1 = __importDefault(require("../../org/OrgDetailsFetcher")); const TestOptions_1 = require("../../apextest/TestOptions"); const MetadataDeploymentCustomizer_1 = require("./MetadataDeploymentCustomizer"); const QUERY_BODY = 'SELECT QualifiedApiName, EntityDefinition.QualifiedApiName FROM FieldDefinition WHERE IsFeedEnabled = true AND EntityDefinitionId IN '; class FTEnabler extends MetadataDeploymentCustomizer_1.MetdataDeploymentCustomizer { async isEnabled(sfpPackage, conn, _logger) { //ignore if its a scratch org const orgDetails = await new OrgDetailsFetcher_1.default(conn.getUsername()).getOrgDetails(); if (orgDetails.isScratchOrg) return false; if (sfpPackage['isFTFieldFound'] && (sfpPackage.packageDescriptor.enableFT == undefined || sfpPackage.packageDescriptor.enableFT == true)) { return true; } } async getDeploymentOptions(target_org, waitTime, apiVersion) { return { ignoreWarnings: true, waitTime: waitTime, apiVersion: apiVersion, testLevel: TestOptions_1.TestLevel.RunSpecifiedTests, specifiedTests: 'skip', rollBackOnError: true }; } async gatherComponentsToBeDeployed(sfpPackage, componentSet, conn, logger) { //First retrieve all objects/fields of interest from the package let objList = []; let fieldList = []; Object.keys(sfpPackage['ftFields']).forEach((key) => { objList.push(`'${key}'`); sfpPackage['ftFields'][key].forEach((field) => fieldList.push(key + '.' + field)); }); //Now query all the fields for this object where FT is already enabled sfp_logger_1.default.log(`Gathering fields which are already enabled with feed traking in the target org....`, sfp_logger_1.LoggerLevel.INFO, logger); sfp_logger_1.default.log('FT QUERY: ' + `${QUERY_BODY + '(' + objList + ')'}`, sfp_logger_1.LoggerLevel.DEBUG); let ftFieldsInOrg = await QueryHelper_1.default.query(QUERY_BODY + '(' + objList + ')', conn, true); //Clear of the fields that alread has FT applied and keep a reduced filter ftFieldsInOrg.map((record) => { let field = record.EntityDefinition.QualifiedApiName + '.' + record.QualifiedApiName; const index = fieldList.indexOf(field); if (index > -1) { fieldList.splice(index, 1); } }); if (fieldList.length > 0) { //Now retrieve the fields from the org let customFieldFetcher = new CustomFieldFetcher_1.default(logger); let sfpOrg = await SFPOrg_1.default.create({ connection: conn }); let fetchedCustomFields = await customFieldFetcher.getCustomFields(sfpOrg, fieldList); //Modify the component set //Parsing is risky due to various encoding, so do an inplace replacement for (const sourceComponent of fetchedCustomFields.components.getSourceComponents()) { // for each object for (const childComponent of sourceComponent.getChildren()) { // for each child metadata if (childComponent.type.name !== 'CustomField') { // skip if not a custom field continue; } let metadataOfComponent = fs.readFileSync(childComponent.xml).toString(); metadataOfComponent = metadataOfComponent.replace('<trackFeedHistory>false</trackFeedHistory>', '<trackFeedHistory>true</trackFeedHistory>'); fs.writeFileSync(path_1.default.join(childComponent.xml), metadataOfComponent); } } return { location: fetchedCustomFields.location, componentSet: fetchedCustomFields.components }; } else sfp_logger_1.default.log(`No fields are required to be updated,skipping updates to Feed History tracking`, sfp_logger_1.LoggerLevel.INFO, logger); } getName() { return 'Feed Tracking Enabler'; } } exports.default = FTEnabler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRlRFbmFibGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvcmUvcGFja2FnZS9kZXBsb3ltZW50Q3VzdG9taXplcnMvRlRFbmFibGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtRUFBc0U7QUFFdEUsNkNBQStCO0FBQy9CLGdGQUF3RDtBQUd4RCwyRkFBbUU7QUFDbkUsOERBQXNDO0FBQ3RDLGdEQUF3QjtBQUN4QixvRkFBNEQ7QUFFNUQsNERBQXVEO0FBQ3ZELGlGQUE2RTtBQUc3RSxNQUFNLFVBQVUsR0FDWix3SUFBd0ksQ0FBQztBQUU3SSxNQUFxQixTQUFVLFNBQVEsMERBQTJCO0lBQ3ZELEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBc0IsRUFBRSxJQUF3QixFQUFFLE9BQWU7UUFDcEYsNkJBQTZCO1FBQzdCLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSwyQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuRixJQUFJLFVBQVUsQ0FBQyxZQUFZO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFMUMsSUFDSSxVQUFVLENBQUMsZ0JBQWdCLENBQUM7WUFDNUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsUUFBUSxJQUFJLFNBQVMsSUFBSSxVQUFVLENBQUMsaUJBQWlCLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUN2RyxDQUFDO1lBQ0MsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsb0JBQW9CLENBQUUsVUFBa0IsRUFBRSxRQUFnQixFQUFFLFVBQWtCO1FBRXZGLE9BQU87WUFDSCxjQUFjLEVBQUMsSUFBSTtZQUNuQixRQUFRLEVBQUMsUUFBUTtZQUNqQixVQUFVLEVBQUMsVUFBVTtZQUNyQixTQUFTLEVBQUcsdUJBQVMsQ0FBQyxpQkFBaUI7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