+Object.defineProperty(exports, "__esModule", ({value:true}));Object.defineProperty(exports, "MissingFaultPath", ({enumerable:true,get:function(){return MissingFaultPath}}));const _internals=/*#__PURE__*/_interop_require_wildcard(__nccwpck_require__(9684));const _AdvancedRule=__nccwpck_require__(104);function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}let MissingFaultPath=class MissingFaultPath extends _AdvancedRule.AdvancedRule{isValidSubtype(proxyNode){if(!this.applicableElements.includes(proxyNode.subtype)){return false}if(proxyNode.subtype==="waits"){var _proxyNode_element;const elementSubtype=(_proxyNode_element=proxyNode.element)===null||_proxyNode_element===void 0?void 0:_proxyNode_element["elementSubtype"];const excludedSubtypes=["WaitDuration","WaitDate"];return!excludedSubtypes.includes(elementSubtype)}return true}execute(flow){var _flow_elements;const compiler=new _internals.Compiler;const results=[];const elementsWhereFaultPathIsApplicable=((_flow_elements=flow.elements)===null||_flow_elements===void 0?void 0:_flow_elements.filter(node=>{const proxyNode=node;return this.isValidSubtype(proxyNode)})).map(e=>e.name);const isRecordBeforeSave=flow.start.triggerType==="RecordBeforeSave";const visitCallback=element=>{var _element_connectors;if(!(element===null||element===void 0?void 0:(_element_connectors=element.connectors)===null||_element_connectors===void 0?void 0:_element_connectors.find(connector=>connector.type==="faultConnector"))&&elementsWhereFaultPathIsApplicable.includes(element.name)){if(isRecordBeforeSave&&element.subtype==="recordUpdates"){return}if(!this.isPartOfFaultHandlingFlow(element,flow)){results.push(new _internals.ResultDetails(element))}}};compiler.traverseFlow(flow,flow.startReference,visitCallback);return new _internals.RuleResult(this,results)}suppress(scanResult,ruleConfiguration){const suppressedResults=[];const suppressionElementKey=this.suppressionElement;for(const resultDetails of scanResult.details){var _ruleConfiguration_suppressions;if("violation"in resultDetails&&"element"in resultDetails.violation&&typeof resultDetails.violation.element==="object"&&!Array.isArray(resultDetails.violation.element)&&suppressionElementKey in resultDetails.violation.element&&(ruleConfiguration===null||ruleConfiguration===void 0?void 0:(_ruleConfiguration_suppressions=ruleConfiguration.suppressions)===null||_ruleConfiguration_suppressions===void 0?void 0:_ruleConfiguration_suppressions.includes(resultDetails.violation.element[suppressionElementKey]))){continue}suppressedResults.push(resultDetails)}return new _internals.RuleResult(this,suppressedResults)}isPartOfFaultHandlingFlow(element,flow){var _flow_elements;const flowelements=(_flow_elements=flow.elements)===null||_flow_elements===void 0?void 0:_flow_elements.filter(el=>el instanceof _internals.FlowNode);for(const otherElement of flowelements){if(otherElement!==element){var _otherElement_connectors;if((_otherElement_connectors=otherElement.connectors)===null||_otherElement_connectors===void 0?void 0:_otherElement_connectors.find(connector=>connector.type==="faultConnector"&&connector.reference===element.name)){return true}}}return false}constructor(){super({autoFixable:false,description:"At times, a flow may fail to execute a configured operation as intended. By default, the flow displays an error message to the user and notifies the admin who created the flow via email. However, you can customize this behavior by incorporating a Fault Path.",docRefs:[{label:"Flow Best Practices",path:"https://help.salesforce.com/s/articleView?id=sf.flow_prep_bestpractices.htm&type=5"}],isConfigurable:false,label:"Missing Fault Path",name:"MissingFaultPath",supportedTypes:[..._internals.FlowType.backEndTypes,..._internals.FlowType.visualTypes],suppressionElement:"actionName"}),_define_property(this,"applicableElements",["recordLookups","recordDeletes","recordUpdates","recordCreates","waits","actionCalls"])}};
0 commit comments