Skip to content

Commit 2f3de1f

Browse files
committed
chore: refactor rule definition to only use advanced rule others
1 parent 350a677 commit 2f3de1f

12 files changed

+44
-46
lines changed

src/main/rules/HardcodedUrl.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { Flow, FlowType, IRuleDefinition, ResultDetails, RuleResult } from "../internals/internals";
1+
import { Flow, FlowType, ResultDetails, RuleResult } from "../internals/internals";
22
import { AdvancedRule } from "../models/AdvancedRule";
33

4-
export class HardcodedUrl extends AdvancedRule implements IRuleDefinition {
4+
export class HardcodedUrl extends AdvancedRule {
55
constructor() {
66
super(
77
{

src/main/rules/InactiveFlow.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import { AdvancedRule } from "../models/AdvancedRule";
21
import * as core from "../internals/internals";
2+
import { AdvancedRule } from "../models/AdvancedRule";
33

4-
export class InactiveFlow extends AdvancedRule implements core.IRuleDefinition {
4+
export class InactiveFlow extends AdvancedRule {
55
constructor() {
66
super({
7-
name: "InactiveFlow",
8-
label: "Inactive Flow",
7+
autoFixable: false,
98
description:
109
"Like cleaning out your closet: deleting unused flows is essential. Inactive flows can still cause trouble, like accidentally deleting records during testing, or being activated as subflows within parent flows.",
11-
supportedTypes: core.FlowType.allTypes(),
1210
docRefs: [],
1311
isConfigurable: false,
14-
autoFixable: false, // TODO: make fixable
12+
label: "Inactive Flow",
13+
name: "InactiveFlow",
14+
supportedTypes: core.FlowType.allTypes(),
1515
});
1616
}
1717

src/main/rules/MissingFaultPath.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ import { AdvancedSuppression } from "../interfaces/AdvancedSuppression";
33
import * as core from "../internals/internals";
44
import { AdvancedRule } from "../models/AdvancedRule";
55

6-
export class MissingFaultPath
7-
extends AdvancedRule
8-
implements AdvancedSuppression, core.IRuleDefinition
9-
{
6+
export class MissingFaultPath extends AdvancedRule implements AdvancedSuppression {
107
protected applicableElements: string[] = [
118
"recordLookups",
129
"recordDeletes",

src/main/rules/MissingNullHandler.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as core from "../internals/internals";
22
import { AdvancedRule } from "../models/AdvancedRule";
33

4-
export class MissingNullHandler extends AdvancedRule implements core.IRuleDefinition {
4+
export class MissingNullHandler extends AdvancedRule {
55
constructor() {
66
super({
77
autoFixable: false,
@@ -15,6 +15,7 @@ export class MissingNullHandler extends AdvancedRule implements core.IRuleDefini
1515
});
1616
}
1717

18+
// eslint-disable-next-line sonarjs/cognitive-complexity
1819
public execute(flow: core.Flow): core.RuleResult {
1920
const getOperations = ["recordLookups"];
2021
const getOperationElements: core.FlowNode[] = flow.elements.filter(
@@ -45,8 +46,8 @@ export class MissingNullHandler extends AdvancedRule implements core.IRuleDefini
4546
const resultIsUsed = flow.elements.some((el) => {
4647
if (el.name === getElement.name) return false;
4748
const json = JSON.stringify(el.element);
48-
return resultReferences.some((ref) =>
49-
json.includes(`"${ref}"`) || json.includes(`"${ref}.`)
49+
return resultReferences.some(
50+
(ref) => json.includes(`"${ref}"`) || json.includes(`"${ref}.`)
5051
);
5152
});
5253
if (!resultIsUsed) continue;

src/main/rules/ProcessBuilder.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
import * as core from "../internals/internals";
22
import { AdvancedRule } from "../models/AdvancedRule";
33

4-
export class ProcessBuilder extends AdvancedRule implements core.IRuleDefinition {
4+
export class ProcessBuilder extends AdvancedRule {
55
constructor() {
66
super({
7-
name: "ProcessBuilder",
8-
label: "No Process Builder",
7+
autoFixable: false,
98
description:
109
"Salesforce is transitioning away from Workflow Rules and Process Builder in favor of Flow. Ensure you're prepared for this transition by migrating your organization's automation to Flow. Refer to official documentation for more information on the transition process and tools available.",
11-
supportedTypes: core.FlowType.processBuilder,
1210
docRefs: [
1311
{
1412
label: "Process Builder Retirement",
1513
path: "https://help.salesforce.com/s/articleView?id=000389396&type=1",
1614
},
1715
],
1816
isConfigurable: true,
19-
autoFixable: false,
17+
label: "No Process Builder",
18+
name: "ProcessBuilder",
19+
supportedTypes: core.FlowType.processBuilder,
2020
});
2121
}
2222

src/main/rules/RecursiveAfterUpdate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as core from "../internals/internals";
22
import { AdvancedRule } from "../models/AdvancedRule";
33

4-
export class RecursiveAfterUpdate extends AdvancedRule implements core.IRuleDefinition {
4+
export class RecursiveAfterUpdate extends AdvancedRule {
55
protected qualifiedRecordTriggerTypes: Set<string> = new Set<string>([
66
"Create",
77
"CreateAndUpdate",

src/main/rules/SOQLQueryInLoop.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { FlowType, IRuleDefinition } from "../internals/internals";
1+
import { FlowType } from "../internals/internals";
22
import { LoopRuleCommon } from "../models/LoopRuleCommon";
33

4-
export class SOQLQueryInLoop extends LoopRuleCommon implements IRuleDefinition {
4+
export class SOQLQueryInLoop extends LoopRuleCommon {
55
constructor() {
66
super({
77
autoFixable: false,

src/main/rules/SameRecordFieldUpdates.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
import * as core from "../internals/internals";
22
import { AdvancedRule } from "../models/AdvancedRule";
33

4-
export class SameRecordFieldUpdates extends AdvancedRule implements core.IRuleDefinition {
4+
export class SameRecordFieldUpdates extends AdvancedRule {
55
protected qualifiedRecordTriggerTypes: Set<string> = new Set<string>([
66
"Create",
7-
"Update",
87
"CreateAndUpdate",
8+
"Update",
99
]);
1010

1111
constructor() {
1212
super(
1313
{
14-
name: "SameRecordFieldUpdates",
15-
label: "Same Record Field Updates",
14+
autoFixable: false,
1615
description:
1716
"Before-save same-record field updates allows you to update the record using variable assignments to `$Record`. This is significantly faster than doing another DML on the same-record that triggered the flow",
18-
supportedTypes: [...core.FlowType.backEndTypes],
1917
docRefs: [
2018
{
2119
label: "Learn about same record field updates",
2220
path: "https://architect.salesforce.com/decision-guides/trigger-automation#Same_Record_Field_Updates",
2321
},
2422
],
2523
isConfigurable: false,
26-
autoFixable: false,
24+
label: "Same Record Field Updates",
25+
name: "SameRecordFieldUpdates",
26+
supportedTypes: [...core.FlowType.backEndTypes],
2727
},
2828
{ severity: "warning" }
2929
);

src/main/rules/TriggerOrder.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
import * as core from "../internals/internals";
22
import { AdvancedRule } from "../models/AdvancedRule";
33

4-
export class TriggerOrder extends AdvancedRule implements core.IRuleDefinition {
4+
export class TriggerOrder extends AdvancedRule {
55
protected qualifiedRecordTriggerTypes: Set<string> = new Set<string>(["Create", "Update"]);
66

77
constructor() {
88
super(
99
{
10-
name: "TriggerOrder",
11-
label: "Trigger Order",
10+
autoFixable: false,
1211
description:
1312
"With flow trigger ordering, introduced in Spring '22, admins can now assign a priority value to their flows and guarantee their execution order. This priority value is not an absolute value, so the values need not be sequentially numbered as 1, 2, 3, and so on.",
14-
supportedTypes: [core.FlowType.autolaunchedType],
1513
docRefs: [
1614
{
1715
label: "Learn more about flow ordering orchestration",
1816
path: "https://architect.salesforce.com/decision-guides/trigger-automation#Ordering___Orchestration",
1917
},
2018
],
2119
isConfigurable: false,
22-
autoFixable: false,
20+
label: "Trigger Order",
21+
name: "TriggerOrder",
22+
supportedTypes: [core.FlowType.autolaunchedType],
2323
},
2424
{ severity: "note" }
2525
);

src/main/rules/UnconnectedElement.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as core from "../internals/internals";
22
import { AdvancedRule } from "../models/AdvancedRule";
33

4-
export class UnconnectedElement extends AdvancedRule implements core.IRuleDefinition {
4+
export class UnconnectedElement extends AdvancedRule {
55
constructor() {
66
super({
77
autoFixable: true,

0 commit comments

Comments
 (0)