@flow-scanner/lightning-flow-scanner-core 6.17.1 → 6.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/README.md +642 -0
  2. package/package.json +9 -58
  3. package/.husky/pre-commit +0 -1
  4. package/.husky/pre-push +0 -1
  5. package/.prettierignore +0 -5
  6. package/.swcrc +0 -26
  7. package/.turbo/turbo-build.log +0 -17
  8. package/.turbo/turbo-test.log +0 -144
  9. package/.turbo/turbo-vite$colon$dist.log +0 -21
  10. package/coverage/coverage-final.json +0 -63
  11. package/coverage/lcov-report/base.css +0 -224
  12. package/coverage/lcov-report/block-navigation.js +0 -87
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/index.html +0 -236
  15. package/coverage/lcov-report/prettify.css +0 -1
  16. package/coverage/lcov-report/prettify.js +0 -2
  17. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/coverage/lcov-report/sorter.js +0 -210
  19. package/coverage/lcov-report/src/index.html +0 -116
  20. package/coverage/lcov-report/src/index.ts.html +0 -238
  21. package/coverage/lcov-report/src/main/adapters/RegexAdapter.ts.html +0 -118
  22. package/coverage/lcov-report/src/main/adapters/index.html +0 -116
  23. package/coverage/lcov-report/src/main/config/NodeIcons.ts.html +0 -376
  24. package/coverage/lcov-report/src/main/config/RuleRegistry.ts.html +0 -646
  25. package/coverage/lcov-report/src/main/config/VariableIcons.ts.html +0 -253
  26. package/coverage/lcov-report/src/main/config/index.html +0 -146
  27. package/coverage/lcov-report/src/main/enums/MetaType.ts.html +0 -100
  28. package/coverage/lcov-report/src/main/enums/MetadataType.ts.html +0 -103
  29. package/coverage/lcov-report/src/main/enums/MetadataTypes.ts.html +0 -100
  30. package/coverage/lcov-report/src/main/enums/index.html +0 -116
  31. package/coverage/lcov-report/src/main/interfaces/IRulesConfig.ts.html +0 -133
  32. package/coverage/lcov-report/src/main/interfaces/index.html +0 -116
  33. package/coverage/lcov-report/src/main/internals/index.html +0 -116
  34. package/coverage/lcov-report/src/main/internals/internals.ts.html +0 -190
  35. package/coverage/lcov-report/src/main/libs/BuildFlow.ts.html +0 -127
  36. package/coverage/lcov-report/src/main/libs/Compiler.ts.html +0 -241
  37. package/coverage/lcov-report/src/main/libs/ConvertFlowNodes.ts.html +0 -97
  38. package/coverage/lcov-report/src/main/libs/DynamicRule.ts.html +0 -118
  39. package/coverage/lcov-report/src/main/libs/ExportDetails.ts.html +0 -256
  40. package/coverage/lcov-report/src/main/libs/ExportDiagram.ts.html +0 -331
  41. package/coverage/lcov-report/src/main/libs/ExportSarif.ts.html +0 -358
  42. package/coverage/lcov-report/src/main/libs/FixFlows.ts.html +0 -265
  43. package/coverage/lcov-report/src/main/libs/GenerateMarkdown.ts.html +0 -331
  44. package/coverage/lcov-report/src/main/libs/GetRuleDefinitions.ts.html +0 -274
  45. package/coverage/lcov-report/src/main/libs/ParseFlows.ts.html +0 -184
  46. package/coverage/lcov-report/src/main/libs/RuleDocumentation.ts.html +0 -190
  47. package/coverage/lcov-report/src/main/libs/ScanFlows.ts.html +0 -508
  48. package/coverage/lcov-report/src/main/libs/exportAsDetails.ts.html +0 -160
  49. package/coverage/lcov-report/src/main/libs/exportAsSarif.ts.html +0 -346
  50. package/coverage/lcov-report/src/main/libs/index.html +0 -251
  51. package/coverage/lcov-report/src/main/models/FlatViolation.ts.html +0 -106
  52. package/coverage/lcov-report/src/main/models/Flow.ts.html +0 -1057
  53. package/coverage/lcov-report/src/main/models/FlowAttribute.ts.html +0 -115
  54. package/coverage/lcov-report/src/main/models/FlowElement.ts.html +0 -133
  55. package/coverage/lcov-report/src/main/models/FlowElementConnector.ts.html +0 -169
  56. package/coverage/lcov-report/src/main/models/FlowGraph.ts.html +0 -1672
  57. package/coverage/lcov-report/src/main/models/FlowMetadata.ts.html +0 -106
  58. package/coverage/lcov-report/src/main/models/FlowNode.ts.html +0 -1252
  59. package/coverage/lcov-report/src/main/models/FlowResource.ts.html +0 -106
  60. package/coverage/lcov-report/src/main/models/FlowType.ts.html +0 -244
  61. package/coverage/lcov-report/src/main/models/FlowVariable.ts.html +0 -553
  62. package/coverage/lcov-report/src/main/models/LoopRuleCommon.ts.html +0 -235
  63. package/coverage/lcov-report/src/main/models/ParsedFlow.ts.html +0 -121
  64. package/coverage/lcov-report/src/main/models/RuleCommon.ts.html +0 -442
  65. package/coverage/lcov-report/src/main/models/RuleResult.ts.html +0 -172
  66. package/coverage/lcov-report/src/main/models/ScanResult.ts.html +0 -121
  67. package/coverage/lcov-report/src/main/models/Violation.ts.html +0 -316
  68. package/coverage/lcov-report/src/main/models/index.html +0 -341
  69. package/coverage/lcov-report/src/main/rules/APIVersion.ts.html +0 -361
  70. package/coverage/lcov-report/src/main/rules/ActionCallsInLoop.ts.html +0 -157
  71. package/coverage/lcov-report/src/main/rules/AutoLayout.ts.html +0 -220
  72. package/coverage/lcov-report/src/main/rules/CopyAPIName.ts.html +0 -175
  73. package/coverage/lcov-report/src/main/rules/CyclomaticComplexity.ts.html +0 -292
  74. package/coverage/lcov-report/src/main/rules/DMLStatementInLoop.ts.html +0 -163
  75. package/coverage/lcov-report/src/main/rules/DuplicateDMLOperation.ts.html +0 -334
  76. package/coverage/lcov-report/src/main/rules/FlowDescription.ts.html +0 -184
  77. package/coverage/lcov-report/src/main/rules/FlowName.ts.html +0 -229
  78. package/coverage/lcov-report/src/main/rules/GetRecordAllFields.ts.html +0 -280
  79. package/coverage/lcov-report/src/main/rules/HardcodedId.ts.html +0 -238
  80. package/coverage/lcov-report/src/main/rules/HardcodedSecret.ts.html +0 -238
  81. package/coverage/lcov-report/src/main/rules/HardcodedUrl.ts.html +0 -247
  82. package/coverage/lcov-report/src/main/rules/InactiveFlow.ts.html +0 -184
  83. package/coverage/lcov-report/src/main/rules/MissingFaultPath.ts.html +0 -397
  84. package/coverage/lcov-report/src/main/rules/MissingFilterRecordTrigger.ts.html +0 -229
  85. package/coverage/lcov-report/src/main/rules/MissingMetadataDescription.ts.html +0 -211
  86. package/coverage/lcov-report/src/main/rules/MissingNullHandler.ts.html +0 -460
  87. package/coverage/lcov-report/src/main/rules/MissingRecordTriggerFilter.ts.html +0 -235
  88. package/coverage/lcov-report/src/main/rules/ProcessBuilder.ts.html +0 -190
  89. package/coverage/lcov-report/src/main/rules/RecordIdAsString.ts.html +0 -274
  90. package/coverage/lcov-report/src/main/rules/RecursiveAfterUpdate.ts.html +0 -364
  91. package/coverage/lcov-report/src/main/rules/SOQLQueryInLoop.ts.html +0 -160
  92. package/coverage/lcov-report/src/main/rules/SameRecordFieldUpdates.ts.html +0 -283
  93. package/coverage/lcov-report/src/main/rules/TransformInsteadOfLoop.ts.html +0 -250
  94. package/coverage/lcov-report/src/main/rules/TriggerOrder.ts.html +0 -238
  95. package/coverage/lcov-report/src/main/rules/UnconnectedElement.ts.html +0 -178
  96. package/coverage/lcov-report/src/main/rules/UnsafeRunningContext.ts.html +0 -226
  97. package/coverage/lcov-report/src/main/rules/UnusedVariable.ts.html +0 -283
  98. package/coverage/lcov-report/src/main/rules/index.html +0 -521
  99. package/coverage/lcov-report/src/main/store/DefaultRuleStore.ts.html +0 -265
  100. package/coverage/lcov-report/src/main/store/RuleRegistry.ts.html +0 -118
  101. package/coverage/lcov-report/src/main/store/index.html +0 -116
  102. package/coverage/lcov.info +0 -6261
  103. package/eslint.config.mjs +0 -36
  104. package/jest.config.cjs +0 -32
  105. package/jest.env-setup.js +0 -101
  106. package/lint-staged.config.mjs +0 -8
  107. package/prettier.config.mjs +0 -5
  108. package/src/index.ts +0 -52
  109. package/src/main/config/NodeIcons.ts +0 -98
  110. package/src/main/config/RegexAdapter.ts +0 -98
  111. package/src/main/config/RuleRegistry.ts +0 -188
  112. package/src/main/config/VariableIcons.ts +0 -57
  113. package/src/main/enums/MetadataTypes.ts +0 -6
  114. package/src/main/interfaces/IExceptions.ts +0 -6
  115. package/src/main/interfaces/IRuleConfig.ts +0 -6
  116. package/src/main/interfaces/IRuleDefinition.ts +0 -15
  117. package/src/main/interfaces/IRuleOptions.ts +0 -5
  118. package/src/main/interfaces/IRulesConfig.ts +0 -17
  119. package/src/main/internals/internals.ts +0 -35
  120. package/src/main/libs/BuildFlow.ts +0 -14
  121. package/src/main/libs/Compiler.ts +0 -53
  122. package/src/main/libs/ExportDetails.ts +0 -58
  123. package/src/main/libs/ExportDiagram.ts +0 -83
  124. package/src/main/libs/ExportSarif.ts +0 -92
  125. package/src/main/libs/FixFlows.ts +0 -61
  126. package/src/main/libs/GetRuleDefinitions.ts +0 -64
  127. package/src/main/libs/ParseFlows.ts +0 -34
  128. package/src/main/libs/RuleDocumentation.ts +0 -35
  129. package/src/main/libs/ScanFlows.ts +0 -142
  130. package/src/main/models/FlatViolation.ts +0 -16
  131. package/src/main/models/Flow.ts +0 -325
  132. package/src/main/models/FlowAttribute.ts +0 -11
  133. package/src/main/models/FlowElement.ts +0 -16
  134. package/src/main/models/FlowElementConnector.ts +0 -28
  135. package/src/main/models/FlowGraph.ts +0 -530
  136. package/src/main/models/FlowMetadata.ts +0 -8
  137. package/src/main/models/FlowNode.ts +0 -390
  138. package/src/main/models/FlowResource.ts +0 -8
  139. package/src/main/models/FlowType.ts +0 -53
  140. package/src/main/models/FlowVariable.ts +0 -157
  141. package/src/main/models/LoopRuleCommon.ts +0 -51
  142. package/src/main/models/ParsedFlow.ts +0 -13
  143. package/src/main/models/RuleCommon.ts +0 -120
  144. package/src/main/models/RuleInfo.ts +0 -54
  145. package/src/main/models/RuleResult.ts +0 -29
  146. package/src/main/models/ScanResult.ts +0 -12
  147. package/src/main/models/Violation.ts +0 -78
  148. package/src/main/rules/APIVersion.ts +0 -93
  149. package/src/main/rules/ActionCallsInLoop.ts +0 -25
  150. package/src/main/rules/AutoLayout.ts +0 -46
  151. package/src/main/rules/CopyAPIName.ts +0 -31
  152. package/src/main/rules/CyclomaticComplexity.ts +0 -70
  153. package/src/main/rules/DMLStatementInLoop.ts +0 -26
  154. package/src/main/rules/DuplicateDMLOperation.ts +0 -83
  155. package/src/main/rules/FlowDescription.ts +0 -34
  156. package/src/main/rules/FlowName.ts +0 -49
  157. package/src/main/rules/GetRecordAllFields.ts +0 -65
  158. package/src/main/rules/HardcodedId.ts +0 -51
  159. package/src/main/rules/HardcodedSecret.ts +0 -51
  160. package/src/main/rules/HardcodedUrl.ts +0 -54
  161. package/src/main/rules/InactiveFlow.ts +0 -33
  162. package/src/main/rules/MissingFaultPath.ts +0 -105
  163. package/src/main/rules/MissingMetadataDescription.ts +0 -42
  164. package/src/main/rules/MissingNullHandler.ts +0 -126
  165. package/src/main/rules/MissingRecordTriggerFilter.ts +0 -51
  166. package/src/main/rules/ProcessBuilder.ts +0 -35
  167. package/src/main/rules/RecordIdAsString.ts +0 -64
  168. package/src/main/rules/RecursiveAfterUpdate.ts +0 -94
  169. package/src/main/rules/SOQLQueryInLoop.ts +0 -26
  170. package/src/main/rules/SameRecordFieldUpdates.ts +0 -66
  171. package/src/main/rules/TransformInsteadOfLoop.ts +0 -56
  172. package/src/main/rules/TriggerOrder.ts +0 -51
  173. package/src/main/rules/UnconnectedElement.ts +0 -32
  174. package/src/main/rules/UnsafeRunningContext.ts +0 -47
  175. package/src/main/rules/UnusedVariable.ts +0 -66
  176. package/stryker.config.mjs +0 -23
  177. package/tests/APIVersion.test.ts +0 -87
  178. package/tests/AutoLayout.test.ts +0 -41
  179. package/tests/Config.test.ts +0 -122
  180. package/tests/ConfigBetaMode.test.ts +0 -26
  181. package/tests/CopyAPIName.test.ts +0 -45
  182. package/tests/CyclomaticComplexity.test.ts +0 -125
  183. package/tests/DMLStatementInLoop.test.ts +0 -32
  184. package/tests/DuplicateDMLOperation.test.ts +0 -43
  185. package/tests/EnabledFalse.test.ts +0 -63
  186. package/tests/Exceptions.test.ts +0 -815
  187. package/tests/ExportSarif.test.ts +0 -62
  188. package/tests/FlowDescription.test.ts +0 -44
  189. package/tests/FlowDocumentation.test.ts +0 -74
  190. package/tests/FlowName.test.ts +0 -61
  191. package/tests/GetRecordElementAllFields.test.ts +0 -182
  192. package/tests/HardcodedId.test.ts +0 -16
  193. package/tests/HardcodedSecret.test.ts +0 -32
  194. package/tests/HardcodedUrl.test.ts +0 -253
  195. package/tests/InactiveFlow.test.ts +0 -103
  196. package/tests/MissingFaultPath.test.ts +0 -52
  197. package/tests/MissingMetadataDescription.test.ts +0 -25
  198. package/tests/MissingNullHandler.test.ts +0 -45
  199. package/tests/MissingRecordTriggerFilter.test.ts +0 -54
  200. package/tests/RecordIdAsString.test.ts +0 -60
  201. package/tests/RecursiveAfterUpdate.test.ts +0 -183
  202. package/tests/SOQLQueryInLoop.test.ts +0 -33
  203. package/tests/SameRecordFieldUpdates.test.ts +0 -205
  204. package/tests/SanityTest.test.ts +0 -15
  205. package/tests/TransformInsteadOfLoop.test.ts +0 -33
  206. package/tests/TriggerOrder.test.ts +0 -112
  207. package/tests/UnconnectedElement.test.ts +0 -76
  208. package/tests/UnsafeRunningContext.test.ts +0 -46
  209. package/tests/UnusedVariable.test.ts +0 -59
  210. package/tests/UnusedVariableExceptions.test.ts +0 -87
  211. package/tests/jsonfiles/MissingFaultPath_BeforeSave_Bypass.json +0 -128
  212. package/tests/jsonfiles/MissingFaultPath_WaitConditions.json +0 -102
  213. package/tests/jsonfiles/MissingFaultPath_WaitDate.json +0 -88
  214. package/tests/jsonfiles/MissingFaultPath_WaitDuration.json +0 -90
  215. package/tests/models/Flow.test.ts +0 -107
  216. package/tests/models/LoopRuleCommon.test.ts +0 -246
  217. package/tests/models/RuleCommon.test.ts +0 -41
  218. package/tsconfig.json +0 -28
  219. package/tsconfig.types.json +0 -26
  220. package/types/index.d.ts +0 -27
  221. package/types/index.d.ts.map +0 -1
  222. package/types/main/adapters/RegexAdapter.d.ts +0 -33
  223. package/types/main/adapters/RegexAdapter.d.ts.map +0 -1
  224. package/types/main/config/NodeIcons.d.ts +0 -25
  225. package/types/main/config/NodeIcons.d.ts.map +0 -1
  226. package/types/main/config/RegexAdapter.d.ts +0 -33
  227. package/types/main/config/RegexAdapter.d.ts.map +0 -1
  228. package/types/main/config/RuleRegistry.d.ts +0 -23
  229. package/types/main/config/RuleRegistry.d.ts.map +0 -1
  230. package/types/main/config/VariableIcons.d.ts +0 -26
  231. package/types/main/config/VariableIcons.d.ts.map +0 -1
  232. package/types/main/enums/MetadataTypes.d.ts +0 -7
  233. package/types/main/enums/MetadataTypes.d.ts.map +0 -1
  234. package/types/main/interfaces/IExceptions.d.ts +0 -6
  235. package/types/main/interfaces/IExceptions.d.ts.map +0 -1
  236. package/types/main/interfaces/IRuleConfig.d.ts +0 -7
  237. package/types/main/interfaces/IRuleConfig.d.ts.map +0 -1
  238. package/types/main/interfaces/IRuleDefinition.d.ts +0 -18
  239. package/types/main/interfaces/IRuleDefinition.d.ts.map +0 -1
  240. package/types/main/interfaces/IRuleOptions.d.ts +0 -5
  241. package/types/main/interfaces/IRuleOptions.d.ts.map +0 -1
  242. package/types/main/interfaces/IRulesConfig.d.ts +0 -16
  243. package/types/main/interfaces/IRulesConfig.d.ts.map +0 -1
  244. package/types/main/internals/internals.d.ts +0 -19
  245. package/types/main/internals/internals.d.ts.map +0 -1
  246. package/types/main/libs/BuildFlow.d.ts +0 -2
  247. package/types/main/libs/BuildFlow.d.ts.map +0 -1
  248. package/types/main/libs/Compiler.d.ts +0 -8
  249. package/types/main/libs/Compiler.d.ts.map +0 -1
  250. package/types/main/libs/ConvertFlowNodes.d.ts +0 -2
  251. package/types/main/libs/ConvertFlowNodes.d.ts.map +0 -1
  252. package/types/main/libs/DynamicRule.d.ts +0 -5
  253. package/types/main/libs/DynamicRule.d.ts.map +0 -1
  254. package/types/main/libs/ExportDetails.d.ts +0 -4
  255. package/types/main/libs/ExportDetails.d.ts.map +0 -1
  256. package/types/main/libs/ExportDiagram.d.ts +0 -42
  257. package/types/main/libs/ExportDiagram.d.ts.map +0 -1
  258. package/types/main/libs/ExportSarif.d.ts +0 -3
  259. package/types/main/libs/ExportSarif.d.ts.map +0 -1
  260. package/types/main/libs/FixFlows.d.ts +0 -4
  261. package/types/main/libs/FixFlows.d.ts.map +0 -1
  262. package/types/main/libs/GetRuleDefinitions.d.ts +0 -5
  263. package/types/main/libs/GetRuleDefinitions.d.ts.map +0 -1
  264. package/types/main/libs/ParseFlows.d.ts +0 -3
  265. package/types/main/libs/ParseFlows.d.ts.map +0 -1
  266. package/types/main/libs/RuleDocumentation.d.ts +0 -21
  267. package/types/main/libs/RuleDocumentation.d.ts.map +0 -1
  268. package/types/main/libs/ScanFlows.d.ts +0 -5
  269. package/types/main/libs/ScanFlows.d.ts.map +0 -1
  270. package/types/main/libs/exportAsDetails.d.ts +0 -4
  271. package/types/main/libs/exportAsDetails.d.ts.map +0 -1
  272. package/types/main/libs/exportAsSarif.d.ts +0 -3
  273. package/types/main/libs/exportAsSarif.d.ts.map +0 -1
  274. package/types/main/models/FlatViolation.d.ts +0 -16
  275. package/types/main/models/FlatViolation.d.ts.map +0 -1
  276. package/types/main/models/Flow.d.ts +0 -70
  277. package/types/main/models/Flow.d.ts.map +0 -1
  278. package/types/main/models/FlowAttribute.d.ts +0 -6
  279. package/types/main/models/FlowAttribute.d.ts.map +0 -1
  280. package/types/main/models/FlowElement.d.ts +0 -11
  281. package/types/main/models/FlowElement.d.ts.map +0 -1
  282. package/types/main/models/FlowElementConnector.d.ts +0 -16
  283. package/types/main/models/FlowElementConnector.d.ts.map +0 -1
  284. package/types/main/models/FlowGraph.d.ts +0 -86
  285. package/types/main/models/FlowGraph.d.ts.map +0 -1
  286. package/types/main/models/FlowMetadata.d.ts +0 -5
  287. package/types/main/models/FlowMetadata.d.ts.map +0 -1
  288. package/types/main/models/FlowNode.d.ts +0 -66
  289. package/types/main/models/FlowNode.d.ts.map +0 -1
  290. package/types/main/models/FlowResource.d.ts +0 -5
  291. package/types/main/models/FlowResource.d.ts.map +0 -1
  292. package/types/main/models/FlowType.d.ts +0 -24
  293. package/types/main/models/FlowType.d.ts.map +0 -1
  294. package/types/main/models/FlowVariable.d.ts +0 -64
  295. package/types/main/models/FlowVariable.d.ts.map +0 -1
  296. package/types/main/models/LoopRuleCommon.d.ts +0 -15
  297. package/types/main/models/LoopRuleCommon.d.ts.map +0 -1
  298. package/types/main/models/ParsedFlow.d.ts +0 -8
  299. package/types/main/models/ParsedFlow.d.ts.map +0 -1
  300. package/types/main/models/RuleCommon.d.ts +0 -58
  301. package/types/main/models/RuleCommon.d.ts.map +0 -1
  302. package/types/main/models/RuleInfo.d.ts +0 -50
  303. package/types/main/models/RuleInfo.d.ts.map +0 -1
  304. package/types/main/models/RuleResult.d.ts +0 -15
  305. package/types/main/models/RuleResult.d.ts.map +0 -1
  306. package/types/main/models/ScanResult.d.ts +0 -8
  307. package/types/main/models/ScanResult.d.ts.map +0 -1
  308. package/types/main/models/Violation.d.ts +0 -12
  309. package/types/main/models/Violation.d.ts.map +0 -1
  310. package/types/main/rules/APIVersion.d.ts +0 -10
  311. package/types/main/rules/APIVersion.d.ts.map +0 -1
  312. package/types/main/rules/ActionCallsInLoop.d.ts +0 -7
  313. package/types/main/rules/ActionCallsInLoop.d.ts.map +0 -1
  314. package/types/main/rules/AutoLayout.d.ts +0 -8
  315. package/types/main/rules/AutoLayout.d.ts.map +0 -1
  316. package/types/main/rules/CopyAPIName.d.ts +0 -8
  317. package/types/main/rules/CopyAPIName.d.ts.map +0 -1
  318. package/types/main/rules/CyclomaticComplexity.d.ts +0 -12
  319. package/types/main/rules/CyclomaticComplexity.d.ts.map +0 -1
  320. package/types/main/rules/DMLStatementInLoop.d.ts +0 -7
  321. package/types/main/rules/DMLStatementInLoop.d.ts.map +0 -1
  322. package/types/main/rules/DuplicateDMLOperation.d.ts +0 -9
  323. package/types/main/rules/DuplicateDMLOperation.d.ts.map +0 -1
  324. package/types/main/rules/FlowDescription.d.ts +0 -8
  325. package/types/main/rules/FlowDescription.d.ts.map +0 -1
  326. package/types/main/rules/FlowName.d.ts +0 -16
  327. package/types/main/rules/FlowName.d.ts.map +0 -1
  328. package/types/main/rules/GetRecordAllFields.d.ts +0 -8
  329. package/types/main/rules/GetRecordAllFields.d.ts.map +0 -1
  330. package/types/main/rules/HardcodedId.d.ts +0 -14
  331. package/types/main/rules/HardcodedId.d.ts.map +0 -1
  332. package/types/main/rules/HardcodedSecret.d.ts +0 -14
  333. package/types/main/rules/HardcodedSecret.d.ts.map +0 -1
  334. package/types/main/rules/HardcodedUrl.d.ts +0 -14
  335. package/types/main/rules/HardcodedUrl.d.ts.map +0 -1
  336. package/types/main/rules/InactiveFlow.d.ts +0 -8
  337. package/types/main/rules/InactiveFlow.d.ts.map +0 -1
  338. package/types/main/rules/MissingFaultPath.d.ts +0 -15
  339. package/types/main/rules/MissingFaultPath.d.ts.map +0 -1
  340. package/types/main/rules/MissingFilterRecordTrigger.d.ts +0 -8
  341. package/types/main/rules/MissingFilterRecordTrigger.d.ts.map +0 -1
  342. package/types/main/rules/MissingMetadataDescription.d.ts +0 -8
  343. package/types/main/rules/MissingMetadataDescription.d.ts.map +0 -1
  344. package/types/main/rules/MissingNullHandler.d.ts +0 -8
  345. package/types/main/rules/MissingNullHandler.d.ts.map +0 -1
  346. package/types/main/rules/MissingRecordTriggerFilter.d.ts +0 -8
  347. package/types/main/rules/MissingRecordTriggerFilter.d.ts.map +0 -1
  348. package/types/main/rules/ProcessBuilder.d.ts +0 -8
  349. package/types/main/rules/ProcessBuilder.d.ts.map +0 -1
  350. package/types/main/rules/RecordIdAsString.d.ts +0 -8
  351. package/types/main/rules/RecordIdAsString.d.ts.map +0 -1
  352. package/types/main/rules/RecursiveAfterUpdate.d.ts +0 -9
  353. package/types/main/rules/RecursiveAfterUpdate.d.ts.map +0 -1
  354. package/types/main/rules/SOQLQueryInLoop.d.ts +0 -7
  355. package/types/main/rules/SOQLQueryInLoop.d.ts.map +0 -1
  356. package/types/main/rules/SameRecordFieldUpdates.d.ts +0 -9
  357. package/types/main/rules/SameRecordFieldUpdates.d.ts.map +0 -1
  358. package/types/main/rules/TransformInsteadOfLoop.d.ts +0 -8
  359. package/types/main/rules/TransformInsteadOfLoop.d.ts.map +0 -1
  360. package/types/main/rules/TriggerOrder.d.ts +0 -8
  361. package/types/main/rules/TriggerOrder.d.ts.map +0 -1
  362. package/types/main/rules/UnconnectedElement.d.ts +0 -8
  363. package/types/main/rules/UnconnectedElement.d.ts.map +0 -1
  364. package/types/main/rules/UnsafeRunningContext.d.ts +0 -8
  365. package/types/main/rules/UnsafeRunningContext.d.ts.map +0 -1
  366. package/types/main/rules/UnusedVariable.d.ts +0 -8
  367. package/types/main/rules/UnusedVariable.d.ts.map +0 -1
  368. package/types/main/store/DefaultRuleStore.d.ts +0 -3
  369. package/types/main/store/DefaultRuleStore.d.ts.map +0 -1
  370. package/types/main/store/RuleRegistry.d.ts +0 -23
  371. package/types/main/store/RuleRegistry.d.ts.map +0 -1
  372. package/vite.config.ts +0 -33
  373. /package/{out/index.d.ts → index.d.ts} +0 -0
  374. /package/{out/index.js → index.js} +0 -0
  375. /package/{out/main → main}/config/NodeIcons.d.ts +0 -0
  376. /package/{out/main → main}/config/NodeIcons.js +0 -0
  377. /package/{out/main → main}/config/RegexAdapter.d.ts +0 -0
  378. /package/{out/main → main}/config/RegexAdapter.js +0 -0
  379. /package/{out/main → main}/config/RuleRegistry.d.ts +0 -0
  380. /package/{out/main → main}/config/RuleRegistry.js +0 -0
  381. /package/{out/main → main}/config/VariableIcons.d.ts +0 -0
  382. /package/{out/main → main}/config/VariableIcons.js +0 -0
  383. /package/{out/main → main}/enums/MetadataTypes.d.ts +0 -0
  384. /package/{out/main → main}/enums/MetadataTypes.js +0 -0
  385. /package/{out/main → main}/interfaces/IExceptions.d.ts +0 -0
  386. /package/{out/main → main}/interfaces/IExceptions.js +0 -0
  387. /package/{out/main → main}/interfaces/IRuleConfig.d.ts +0 -0
  388. /package/{out/main → main}/interfaces/IRuleConfig.js +0 -0
  389. /package/{out/main → main}/interfaces/IRuleDefinition.d.ts +0 -0
  390. /package/{out/main → main}/interfaces/IRuleDefinition.js +0 -0
  391. /package/{out/main → main}/interfaces/IRuleOptions.d.ts +0 -0
  392. /package/{out/main → main}/interfaces/IRuleOptions.js +0 -0
  393. /package/{out/main → main}/interfaces/IRulesConfig.d.ts +0 -0
  394. /package/{out/main → main}/interfaces/IRulesConfig.js +0 -0
  395. /package/{out/main → main}/internals/internals.d.ts +0 -0
  396. /package/{out/main → main}/internals/internals.js +0 -0
  397. /package/{out/main → main}/libs/BuildFlow.d.ts +0 -0
  398. /package/{out/main → main}/libs/BuildFlow.js +0 -0
  399. /package/{out/main → main}/libs/Compiler.d.ts +0 -0
  400. /package/{out/main → main}/libs/Compiler.js +0 -0
  401. /package/{out/main → main}/libs/ExportDetails.d.ts +0 -0
  402. /package/{out/main → main}/libs/ExportDetails.js +0 -0
  403. /package/{out/main → main}/libs/ExportDiagram.d.ts +0 -0
  404. /package/{out/main → main}/libs/ExportDiagram.js +0 -0
  405. /package/{out/main → main}/libs/ExportSarif.d.ts +0 -0
  406. /package/{out/main → main}/libs/ExportSarif.js +0 -0
  407. /package/{out/main → main}/libs/FixFlows.d.ts +0 -0
  408. /package/{out/main → main}/libs/FixFlows.js +0 -0
  409. /package/{out/main → main}/libs/GetRuleDefinitions.d.ts +0 -0
  410. /package/{out/main → main}/libs/GetRuleDefinitions.js +0 -0
  411. /package/{out/main → main}/libs/ParseFlows.d.ts +0 -0
  412. /package/{out/main → main}/libs/ParseFlows.js +0 -0
  413. /package/{out/main → main}/libs/RuleDocumentation.d.ts +0 -0
  414. /package/{out/main → main}/libs/RuleDocumentation.js +0 -0
  415. /package/{out/main → main}/libs/ScanFlows.d.ts +0 -0
  416. /package/{out/main → main}/libs/ScanFlows.js +0 -0
  417. /package/{out/main → main}/models/FlatViolation.d.ts +0 -0
  418. /package/{out/main → main}/models/FlatViolation.js +0 -0
  419. /package/{out/main → main}/models/Flow.d.ts +0 -0
  420. /package/{out/main → main}/models/Flow.js +0 -0
  421. /package/{out/main → main}/models/FlowAttribute.d.ts +0 -0
  422. /package/{out/main → main}/models/FlowAttribute.js +0 -0
  423. /package/{out/main → main}/models/FlowElement.d.ts +0 -0
  424. /package/{out/main → main}/models/FlowElement.js +0 -0
  425. /package/{out/main → main}/models/FlowElementConnector.d.ts +0 -0
  426. /package/{out/main → main}/models/FlowElementConnector.js +0 -0
  427. /package/{out/main → main}/models/FlowGraph.d.ts +0 -0
  428. /package/{out/main → main}/models/FlowGraph.js +0 -0
  429. /package/{out/main → main}/models/FlowMetadata.d.ts +0 -0
  430. /package/{out/main → main}/models/FlowMetadata.js +0 -0
  431. /package/{out/main → main}/models/FlowNode.d.ts +0 -0
  432. /package/{out/main → main}/models/FlowNode.js +0 -0
  433. /package/{out/main → main}/models/FlowResource.d.ts +0 -0
  434. /package/{out/main → main}/models/FlowResource.js +0 -0
  435. /package/{out/main → main}/models/FlowType.d.ts +0 -0
  436. /package/{out/main → main}/models/FlowType.js +0 -0
  437. /package/{out/main → main}/models/FlowVariable.d.ts +0 -0
  438. /package/{out/main → main}/models/FlowVariable.js +0 -0
  439. /package/{out/main → main}/models/LoopRuleCommon.d.ts +0 -0
  440. /package/{out/main → main}/models/LoopRuleCommon.js +0 -0
  441. /package/{out/main → main}/models/ParsedFlow.d.ts +0 -0
  442. /package/{out/main → main}/models/ParsedFlow.js +0 -0
  443. /package/{out/main → main}/models/RuleCommon.d.ts +0 -0
  444. /package/{out/main → main}/models/RuleCommon.js +0 -0
  445. /package/{out/main → main}/models/RuleInfo.d.ts +0 -0
  446. /package/{out/main → main}/models/RuleInfo.js +0 -0
  447. /package/{out/main → main}/models/RuleResult.d.ts +0 -0
  448. /package/{out/main → main}/models/RuleResult.js +0 -0
  449. /package/{out/main → main}/models/ScanResult.d.ts +0 -0
  450. /package/{out/main → main}/models/ScanResult.js +0 -0
  451. /package/{out/main → main}/models/Violation.d.ts +0 -0
  452. /package/{out/main → main}/models/Violation.js +0 -0
  453. /package/{out/main → main}/rules/APIVersion.d.ts +0 -0
  454. /package/{out/main → main}/rules/APIVersion.js +0 -0
  455. /package/{out/main → main}/rules/ActionCallsInLoop.d.ts +0 -0
  456. /package/{out/main → main}/rules/ActionCallsInLoop.js +0 -0
  457. /package/{out/main → main}/rules/AutoLayout.d.ts +0 -0
  458. /package/{out/main → main}/rules/AutoLayout.js +0 -0
  459. /package/{out/main → main}/rules/CopyAPIName.d.ts +0 -0
  460. /package/{out/main → main}/rules/CopyAPIName.js +0 -0
  461. /package/{out/main → main}/rules/CyclomaticComplexity.d.ts +0 -0
  462. /package/{out/main → main}/rules/CyclomaticComplexity.js +0 -0
  463. /package/{out/main → main}/rules/DMLStatementInLoop.d.ts +0 -0
  464. /package/{out/main → main}/rules/DMLStatementInLoop.js +0 -0
  465. /package/{out/main → main}/rules/DuplicateDMLOperation.d.ts +0 -0
  466. /package/{out/main → main}/rules/DuplicateDMLOperation.js +0 -0
  467. /package/{out/main → main}/rules/FlowDescription.d.ts +0 -0
  468. /package/{out/main → main}/rules/FlowDescription.js +0 -0
  469. /package/{out/main → main}/rules/FlowName.d.ts +0 -0
  470. /package/{out/main → main}/rules/FlowName.js +0 -0
  471. /package/{out/main → main}/rules/GetRecordAllFields.d.ts +0 -0
  472. /package/{out/main → main}/rules/GetRecordAllFields.js +0 -0
  473. /package/{out/main → main}/rules/HardcodedId.d.ts +0 -0
  474. /package/{out/main → main}/rules/HardcodedId.js +0 -0
  475. /package/{out/main → main}/rules/HardcodedSecret.d.ts +0 -0
  476. /package/{out/main → main}/rules/HardcodedSecret.js +0 -0
  477. /package/{out/main → main}/rules/HardcodedUrl.d.ts +0 -0
  478. /package/{out/main → main}/rules/HardcodedUrl.js +0 -0
  479. /package/{out/main → main}/rules/InactiveFlow.d.ts +0 -0
  480. /package/{out/main → main}/rules/InactiveFlow.js +0 -0
  481. /package/{out/main → main}/rules/MissingFaultPath.d.ts +0 -0
  482. /package/{out/main → main}/rules/MissingFaultPath.js +0 -0
  483. /package/{out/main → main}/rules/MissingMetadataDescription.d.ts +0 -0
  484. /package/{out/main → main}/rules/MissingMetadataDescription.js +0 -0
  485. /package/{out/main → main}/rules/MissingNullHandler.d.ts +0 -0
  486. /package/{out/main → main}/rules/MissingNullHandler.js +0 -0
  487. /package/{out/main → main}/rules/MissingRecordTriggerFilter.d.ts +0 -0
  488. /package/{out/main → main}/rules/MissingRecordTriggerFilter.js +0 -0
  489. /package/{out/main → main}/rules/ProcessBuilder.d.ts +0 -0
  490. /package/{out/main → main}/rules/ProcessBuilder.js +0 -0
  491. /package/{out/main → main}/rules/RecordIdAsString.d.ts +0 -0
  492. /package/{out/main → main}/rules/RecordIdAsString.js +0 -0
  493. /package/{out/main → main}/rules/RecursiveAfterUpdate.d.ts +0 -0
  494. /package/{out/main → main}/rules/RecursiveAfterUpdate.js +0 -0
  495. /package/{out/main → main}/rules/SOQLQueryInLoop.d.ts +0 -0
  496. /package/{out/main → main}/rules/SOQLQueryInLoop.js +0 -0
  497. /package/{out/main → main}/rules/SameRecordFieldUpdates.d.ts +0 -0
  498. /package/{out/main → main}/rules/SameRecordFieldUpdates.js +0 -0
  499. /package/{out/main → main}/rules/TransformInsteadOfLoop.d.ts +0 -0
  500. /package/{out/main → main}/rules/TransformInsteadOfLoop.js +0 -0
  501. /package/{out/main → main}/rules/TriggerOrder.d.ts +0 -0
  502. /package/{out/main → main}/rules/TriggerOrder.js +0 -0
  503. /package/{out/main → main}/rules/UnconnectedElement.d.ts +0 -0
  504. /package/{out/main → main}/rules/UnconnectedElement.js +0 -0
  505. /package/{out/main → main}/rules/UnsafeRunningContext.d.ts +0 -0
  506. /package/{out/main → main}/rules/UnsafeRunningContext.js +0 -0
  507. /package/{out/main → main}/rules/UnusedVariable.d.ts +0 -0
  508. /package/{out/main → main}/rules/UnusedVariable.js +0 -0
@@ -1,390 +0,0 @@
1
- import { MetaType } from "../enums/MetadataTypes";
2
- import { FlowElement } from "./FlowElement";
3
- import { FlowElementConnector } from "./FlowElementConnector";
4
- import { DEFAULT_ICONS, ASCII_ICONS, type NodeIconConfig } from "../config/NodeIcons";
5
-
6
- export class FlowNode extends FlowElement {
7
- public connectors: FlowElementConnector[] = [];
8
- public locationX?: string;
9
- public locationY?: string;
10
-
11
- // Common properties across node types
12
- public label?: string;
13
- public description?: string;
14
-
15
- // Action-specific properties
16
- public actionType?: string;
17
- public actionName?: string;
18
-
19
- // Record operation properties
20
- public object?: string;
21
- public inputReference?: string;
22
- public outputReference?: string;
23
-
24
- // Collection processor properties
25
- public elementSubtype?: string;
26
- public collectionReference?: string;
27
-
28
- // Subflow properties
29
- public flowName?: string;
30
-
31
- // Decision properties
32
- public rules?: any[];
33
- public defaultConnectorLabel?: string;
34
-
35
- // Loop properties
36
- public iterationOrder?: string;
37
-
38
- // Screen properties
39
- public fields?: any[];
40
- public allowPause?: boolean;
41
- public showFooter?: boolean;
42
-
43
- // Fault handling
44
- public faultConnector?: FlowElementConnector;
45
-
46
- // Static icon configuration (can be overridden)
47
- private static iconConfig: NodeIconConfig = DEFAULT_ICONS;
48
-
49
- /**
50
- * Set custom icon configuration for all FlowNodes
51
- * @example
52
- * ```typescript
53
- * // Use ASCII icons for old terminals
54
- * FlowNode.setIconConfig(ASCII_ICONS);
55
- *
56
- * // Or provide custom icons
57
- * FlowNode.setIconConfig({
58
- * actionCalls: { default: '[ACTION]' },
59
- * decisions: { default: '[IF]' }
60
- * });
61
- * ```
62
- */
63
- public static setIconConfig(config: NodeIconConfig): void {
64
- FlowNode.iconConfig = config;
65
- }
66
-
67
- /**
68
- * Use ASCII icons instead of emoji (for older browsers/terminals)
69
- */
70
- public static useAsciiIcons(): void {
71
- FlowNode.iconConfig = ASCII_ICONS;
72
- }
73
-
74
- /**
75
- * Reset to default emoji icons
76
- */
77
- public static useDefaultIcons(): void {
78
- FlowNode.iconConfig = DEFAULT_ICONS;
79
- }
80
-
81
- constructor(provName: string, subtype: string, element: object) {
82
- const nodeName = subtype === "start" ? "flowstart" : provName;
83
- super(MetaType.NODE, subtype, nodeName, element);
84
-
85
- // Extract common properties
86
- this.label = element["label"];
87
- this.description = element["description"];
88
- this.locationX = element["locationX"];
89
- this.locationY = element["locationY"];
90
-
91
- // Extract type-specific properties
92
- this.extractTypeSpecificProperties(subtype, element);
93
-
94
- // Extract connectors
95
- this.connectors = this.getConnectors(subtype, element);
96
- this.faultConnector = this.connectors.find(c => c.type === "faultConnector");
97
- }
98
-
99
- private extractTypeSpecificProperties(subtype: string, element: any): void {
100
- switch (subtype) {
101
- case "actionCalls":
102
- this.actionType = element.actionType;
103
- this.actionName = element.actionName;
104
- break;
105
-
106
- case "recordCreates":
107
- case "recordUpdates":
108
- case "recordDeletes":
109
- case "recordLookups":
110
- this.object = element.object;
111
- this.inputReference = element.inputReference;
112
- this.outputReference = element.outputReference;
113
- break;
114
-
115
- case "collectionProcessors":
116
- this.elementSubtype = element.elementSubtype;
117
- this.collectionReference = element.collectionReference;
118
- break;
119
-
120
- case "subflows":
121
- this.flowName = element.flowName;
122
- break;
123
-
124
- case "decisions":
125
- this.rules = Array.isArray(element.rules) ? element.rules :
126
- element.rules ? [element.rules] : [];
127
- this.defaultConnectorLabel = element.defaultConnectorLabel;
128
- break;
129
-
130
- case "loops":
131
- this.collectionReference = element.collectionReference;
132
- this.iterationOrder = element.iterationOrder;
133
- break;
134
-
135
- case "screens":
136
- this.fields = Array.isArray(element.fields) ? element.fields :
137
- element.fields ? [element.fields] : [];
138
- this.allowPause = element.allowPause;
139
- this.showFooter = element.showFooter;
140
- break;
141
- }
142
- }
143
-
144
- /**
145
- * Get a human-readable summary of this node
146
- */
147
- public getSummary(): string {
148
- const parts: string[] = [];
149
-
150
- switch (this.subtype) {
151
- case "actionCalls":
152
- if (this.actionType) parts.push(this.prettifyValue(this.actionType));
153
- if (this.actionName) parts.push(this.actionName);
154
- break;
155
-
156
- case "recordCreates":
157
- case "recordUpdates":
158
- case "recordDeletes":
159
- case "recordLookups":
160
- if (this.object) parts.push(this.object);
161
- break;
162
-
163
- case "collectionProcessors":
164
- if (this.elementSubtype) parts.push(this.prettifyValue(this.elementSubtype));
165
- break;
166
-
167
- case "decisions":
168
- parts.push(`${this.rules?.length || 0} rule${this.rules?.length !== 1 ? 's' : ''}`);
169
- break;
170
-
171
- case "loops":
172
- if (this.collectionReference) parts.push(`Loop: ${this.collectionReference}`);
173
- break;
174
-
175
- case "subflows":
176
- if (this.flowName) parts.push(this.flowName);
177
- break;
178
- }
179
-
180
- if (this.description) {
181
- parts.push(this.description.substring(0, 50) + (this.description.length > 50 ? '...' : ''));
182
- }
183
-
184
- return parts.join(' • ');
185
- }
186
-
187
- /**
188
- * Get the icon for this node type
189
- */
190
- public getIcon(): string {
191
- const typeIcons = FlowNode.iconConfig[this.subtype];
192
- if (!typeIcons) {
193
- // Fallback for unknown types
194
- const fallback = FlowNode.iconConfig['default'];
195
- return (fallback && 'default' in fallback) ? fallback.default : '\u2022'; // • BULLET
196
- }
197
-
198
- // For nodes with subtypes (like actionCalls or collectionProcessors)
199
- const subtype = this.actionType || this.elementSubtype;
200
- const icons = typeIcons as Record<string, string>;
201
-
202
- if (subtype && icons[subtype]) {
203
- return icons[subtype];
204
- }
205
-
206
- return icons.default || '\u2022'; // • BULLET fallback
207
- }
208
-
209
- /**
210
- * Get the display name for this node type
211
- */
212
- public getTypeLabel(): string {
213
- const labelMap: Record<string, string> = {
214
- actionCalls: 'Action',
215
- assignments: 'Assignment',
216
- collectionProcessors: 'Collection',
217
- customErrors: 'Error',
218
- decisions: 'Decision',
219
- loops: 'Loop',
220
- recordCreates: 'Create',
221
- recordDeletes: 'Delete',
222
- recordLookups: 'Get Records',
223
- recordUpdates: 'Update',
224
- screens: 'Screen',
225
- subflows: 'Subflow',
226
- transforms: 'Transform',
227
- };
228
-
229
- return labelMap[this.subtype] || this.subtype;
230
- }
231
-
232
- private prettifyValue(value: string): string {
233
- return value
234
- .replace(/([A-Z])/g, ' $1')
235
- .replace(/^./, str => str.toUpperCase())
236
- .trim();
237
- }
238
-
239
- private getConnectors(subtype, element) {
240
- const connectors: FlowElementConnector[] = [];
241
- if (subtype === "start") {
242
- if (element.connector) {
243
- connectors.push(new FlowElementConnector("connector", element.connector, {}));
244
- }
245
- if (Array.isArray(element.scheduledPaths)) {
246
- for (const asyncElement of element?.scheduledPaths || []) {
247
- if (asyncElement.connector) {
248
- connectors.push(
249
- new FlowElementConnector("connector", asyncElement.connector, {
250
- childName: asyncElement?.name ?? "AsyncAfterCommit",
251
- childOf: "scheduledPaths",
252
- })
253
- );
254
- }
255
- }
256
- } else {
257
- if (element.scheduledPaths) {
258
- connectors.push(
259
- new FlowElementConnector("connector", element.scheduledPaths, {
260
- childName: element.scheduledPaths.name,
261
- childOf: "scheduledPaths",
262
- })
263
- );
264
- }
265
- }
266
- return connectors;
267
- } else if (subtype === "decisions") {
268
- if (element.defaultConnector) {
269
- connectors.push(new FlowElementConnector("defaultConnector", element.defaultConnector, {}));
270
- }
271
- if (element.rules) {
272
- if (Array.isArray(element.rules)) {
273
- for (const rule of element.rules) {
274
- if (rule.connector) {
275
- connectors.push(
276
- new FlowElementConnector("connector", rule.connector, {
277
- childName: rule.name,
278
- childOf: "rules",
279
- })
280
- );
281
- }
282
- }
283
- } else {
284
- if (element.rules.connector) {
285
- connectors.push(
286
- new FlowElementConnector("connector", element.rules.connector, {
287
- childName: element.rules.name,
288
- childOf: "rules",
289
- })
290
- );
291
- }
292
- }
293
- }
294
- return connectors;
295
- } else if (
296
- subtype === "assignments" ||
297
- subtype === "transforms" ||
298
- subtype === "customErrors"
299
- ) {
300
- return element.connector
301
- ? [new FlowElementConnector("connector", element.connector, {})]
302
- : [];
303
- } else if (subtype === "loops") {
304
- if (element.nextValueConnector) {
305
- connectors.push(
306
- new FlowElementConnector("nextValueConnector", element.nextValueConnector, {})
307
- );
308
- }
309
- if (element.noMoreValuesConnector) {
310
- connectors.push(
311
- new FlowElementConnector("noMoreValuesConnector", element.noMoreValuesConnector, {})
312
- );
313
- }
314
- return connectors;
315
- } else if (subtype === "actionCalls") {
316
- if (element.connector) {
317
- connectors.push(new FlowElementConnector("connector", element.connector, {}));
318
- }
319
- if (element.faultConnector) {
320
- connectors.push(new FlowElementConnector("faultConnector", element.faultConnector, {}));
321
- }
322
- return connectors;
323
- } else if (subtype === "waits") {
324
- if (element.defaultConnector) {
325
- connectors.push(new FlowElementConnector("defaultConnector", element.defaultConnector, {}));
326
- }
327
- if (element.faultConnector) {
328
- connectors.push(new FlowElementConnector("faultConnector", element.faultConnector, {}));
329
- }
330
- if (Array.isArray(element.waitEvents)) {
331
- for (const waitEvent of element.waitEvents) {
332
- if (waitEvent.connector) {
333
- connectors.push(
334
- new FlowElementConnector("connector", waitEvent.connector, {
335
- childName: waitEvent.name,
336
- childOf: "waitEvents",
337
- })
338
- );
339
- }
340
- }
341
- }
342
-
343
- return connectors;
344
- } else if (subtype === "recordCreates") {
345
- if (element.connector) {
346
- connectors.push(new FlowElementConnector("connector", element.connector, {}));
347
- }
348
- if (element.faultConnector) {
349
- connectors.push(new FlowElementConnector("faultConnector", element.faultConnector, {}));
350
- }
351
- return connectors;
352
- } else if (subtype === "recordDeletes") {
353
- if (element.connector) {
354
- connectors.push(new FlowElementConnector("connector", element.connector, {}));
355
- }
356
- if (element.faultConnector) {
357
- connectors.push(new FlowElementConnector("faultConnector", element.faultConnector, {}));
358
- }
359
- return connectors;
360
- } else if (subtype === "recordLookups") {
361
- if (element.connector) {
362
- connectors.push(new FlowElementConnector("connector", element.connector, {}));
363
- }
364
- if (element.faultConnector) {
365
- connectors.push(new FlowElementConnector("faultConnector", element.faultConnector, {}));
366
- }
367
- return connectors;
368
- } else if (subtype === "recordUpdates") {
369
- if (element.connector) {
370
- connectors.push(new FlowElementConnector("connector", element.connector, {}));
371
- }
372
- if (element.faultConnector) {
373
- connectors.push(new FlowElementConnector("faultConnector", element.faultConnector, {}));
374
- }
375
- return connectors;
376
- } else if (subtype === "subflows") {
377
- return element.connector
378
- ? [new FlowElementConnector("connector", element.connector, {})]
379
- : [];
380
- } else if (subtype === "screens") {
381
- return element.connector
382
- ? [new FlowElementConnector("connector", element.connector, {})]
383
- : [];
384
- } else {
385
- return element.connector
386
- ? [new FlowElementConnector("connector", element.connector, {})]
387
- : [];
388
- }
389
- }
390
- }
@@ -1,8 +0,0 @@
1
- import { MetaType } from "../enums/MetadataTypes";
2
- import { FlowElement } from "./FlowElement";
3
-
4
- export class FlowResource extends FlowElement {
5
- constructor(name: string, subtype: string, element: object) {
6
- super(MetaType.RESOURCE, subtype, name, element);
7
- }
8
- }
@@ -1,53 +0,0 @@
1
- /**
2
- * Represents the different types of Salesforce Flows and provides utility methods
3
- * to categorize and retrieve them.
4
- *
5
- * @remarks
6
- * This class defines static properties for various flow types, including backend,
7
- * process builder, survey, visual, and unsupported types. It also provides a method
8
- * to retrieve all supported flow types.
9
- *
10
- * @example
11
- * ```typescript
12
- * const allFlowTypes = FlowType.allTypes();
13
- * ```
14
- */
15
- export class FlowType {
16
- public static readonly autolaunchedType = "AutoLaunchedFlow";
17
-
18
- public static readonly backEndTypes = [
19
- this.autolaunchedType,
20
- "CustomEvent",
21
- "InvocableProcess",
22
- "Orchestrator",
23
- "EvaluationFlow",
24
- "ActionCadenceAutolaunchedFlow",
25
- ];
26
- public static readonly processBuilder = ["Workflow"];
27
- public static readonly surveyTypes = ["Survey"];
28
- public static readonly unsupportedTypes = [
29
- "ActionPlan",
30
- "UserProvisioningFlow",
31
- "CheckoutFlow",
32
- "FSCLending",
33
- "LoyaltyManagementFlow",
34
- "JourneyBuilderIntegration",
35
- ];
36
- public static readonly visualTypes = [
37
- "Flow",
38
- "IndividualObjectLinkingFlow",
39
- "LoginFlow",
40
- "RoutingFlow",
41
- "Appointments",
42
- "ActionCadenceStepFlow",
43
- "ContactRequestFlow",
44
- "CustomerLifecycle",
45
- "FieldServiceMobile",
46
- "FieldServiceWeb",
47
- "SurveyEnrich",
48
- ];
49
-
50
- public static readonly allTypes = function () {
51
- return [...this.backEndTypes, ...this.visualTypes, ...this.surveyTypes];
52
- };
53
- }
@@ -1,157 +0,0 @@
1
- import { MetaType } from "../enums/MetadataTypes";
2
- import { FlowElement } from "./FlowElement";
3
- import { DEFAULT_VARIABLE_ICONS, ASCII_VARIABLE_ICONS, type VariableIconConfig } from "../config/VariableIcons";
4
-
5
- export class FlowVariable extends FlowElement {
6
- public dataType?: string;
7
- public isCollection?: boolean;
8
- public isInput?: boolean;
9
- public isOutput?: boolean;
10
- public objectType?: string;
11
- public description?: string;
12
- public value?: any;
13
-
14
- // Static icon configuration (can be overridden)
15
- private static iconConfig: VariableIconConfig = DEFAULT_VARIABLE_ICONS;
16
-
17
- /**
18
- * Set custom icon configuration for all FlowVariables
19
- * @example
20
- * ```typescript
21
- * // Use ASCII icons
22
- * FlowVariable.setIconConfig(ASCII_VARIABLE_ICONS);
23
- *
24
- * // Or provide custom icons
25
- * FlowVariable.setIconConfig({
26
- * subtypes: {
27
- * variables: '[VAR]',
28
- * constants: '[CONST]'
29
- * },
30
- * boolean: {
31
- * true: '[YES]',
32
- * false: '[NO]'
33
- * }
34
- * });
35
- * ```
36
- */
37
- public static setIconConfig(config: VariableIconConfig): void {
38
- FlowVariable.iconConfig = config;
39
- }
40
-
41
- /**
42
- * Use ASCII icons instead of emoji
43
- */
44
- public static useAsciiIcons(): void {
45
- FlowVariable.iconConfig = ASCII_VARIABLE_ICONS;
46
- }
47
-
48
- /**
49
- * Reset to default emoji icons
50
- */
51
- public static useDefaultIcons(): void {
52
- FlowVariable.iconConfig = DEFAULT_VARIABLE_ICONS;
53
- }
54
-
55
- constructor(name: string, subtype: string, element: object) {
56
- super(MetaType.VARIABLE, subtype, name, element);
57
-
58
- // Extract properties based on variable subtype
59
- this.dataType = element["dataType"];
60
- this.isCollection = element["isCollection"];
61
- this.isInput = element["isInput"];
62
- this.isOutput = element["isOutput"];
63
- this.objectType = element["objectType"];
64
- this.description = element["description"];
65
-
66
- // Different subtypes have different value properties
67
- if (subtype === "constants") {
68
- this.value = element["value"];
69
- } else if (subtype === "formulas") {
70
- this.value = element["expression"];
71
- }
72
- }
73
-
74
- /**
75
- * Get the icon for this variable subtype
76
- */
77
- public getIcon(): string {
78
- return FlowVariable.iconConfig.subtypes[this.subtype] || '\uD83D\uDCCA'; // 📊 default
79
- }
80
-
81
- /**
82
- * Get icon for a boolean value
83
- */
84
- private getBooleanIcon(value?: boolean): string {
85
- if (value === true) {
86
- return FlowVariable.iconConfig.boolean.true;
87
- } else if (value === false) {
88
- return FlowVariable.iconConfig.boolean.false;
89
- }
90
- return ''; // undefined/null
91
- }
92
-
93
- /**
94
- * Get a human-readable type label
95
- */
96
- public getTypeLabel(): string {
97
- const labelMap: Record<string, string> = {
98
- variables: 'Variable',
99
- constants: 'Constant',
100
- formulas: 'Formula',
101
- choices: 'Choice',
102
- dynamicChoiceSets: 'Dynamic Choice',
103
- };
104
- return labelMap[this.subtype] || this.subtype;
105
- }
106
-
107
- /**
108
- * Get a markdown table row for this variable
109
- */
110
- public toTableRow(): string {
111
- const parts = [
112
- this.name,
113
- this.dataType || '',
114
- this.getBooleanIcon(this.isCollection),
115
- this.getBooleanIcon(this.isInput),
116
- this.getBooleanIcon(this.isOutput),
117
- this.objectType || '',
118
- this.description || ''
119
- ];
120
- return `| ${parts.join(' | ')} |`;
121
- }
122
-
123
- /**
124
- * Get a detailed markdown table for this variable
125
- */
126
- public toMarkdownTable(): string {
127
- let table = '| Property | Value |\n|:---|:---|\n';
128
-
129
- table += `| Name | ${this.name} |\n`;
130
- table += `| Type | ${this.getIcon()} ${this.getTypeLabel()} |\n`;
131
-
132
- if (this.dataType) table += `| Data Type | ${this.dataType} |\n`;
133
- if (this.objectType) table += `| Object Type | ${this.objectType} |\n`;
134
- if (this.isCollection !== undefined) {
135
- table += `| Collection | ${this.getBooleanIcon(this.isCollection)} |\n`;
136
- }
137
- if (this.isInput !== undefined) {
138
- table += `| Input | ${this.getBooleanIcon(this.isInput)} |\n`;
139
- }
140
- if (this.isOutput !== undefined) {
141
- table += `| Output | ${this.getBooleanIcon(this.isOutput)} |\n`;
142
- }
143
- if (this.value !== undefined) {
144
- table += `| Value | ${this.formatValue(this.value)} |\n`;
145
- }
146
- if (this.description) table += `| Description | ${this.description} |\n`;
147
-
148
- return table;
149
- }
150
-
151
- private formatValue(value: any): string {
152
- if (typeof value === 'object') {
153
- return JSON.stringify(value, null, 2);
154
- }
155
- return String(value);
156
- }
157
- }
@@ -1,51 +0,0 @@
1
- import { IRuleDefinition } from "../interfaces/IRuleDefinition";
2
- import { Flow, FlowNode, Violation } from "../internals/internals";
3
- import { RuleCommon } from "./RuleCommon";
4
- import { RuleInfo } from "./RuleInfo";
5
-
6
- export abstract class LoopRuleCommon extends RuleCommon implements IRuleDefinition {
7
- constructor(info: RuleInfo, optional?: { severity?: string }) {
8
- super(info, optional);
9
- }
10
-
11
- protected check(
12
- flow: Flow,
13
- _options: object | undefined,
14
- suppressions: Set<string>
15
- ): Violation[] {
16
- const loopElements = flow.graph.getLoopNodes();
17
- if (!loopElements.length) {
18
- return [];
19
- }
20
- const statementsInLoops = this.findStatementsInLoops(flow, loopElements);
21
- const results = statementsInLoops
22
- .filter(det => !suppressions.has(det.name))
23
- .map(det => new Violation(det));
24
- return results;
25
- }
26
-
27
- protected abstract getStatementTypes(): string[];
28
-
29
- private findLoopElements(flow: Flow): FlowNode[] {
30
- return flow.graph.getLoopNodes();
31
- }
32
-
33
- private findLoopEnd(element: FlowNode): string {
34
- return (element.element as any)?.noMoreValuesConnector?.targetReference ?? element.name;
35
- }
36
-
37
- private findStatementsInLoops(flow: Flow, loopElements: FlowNode[]): FlowNode[] {
38
- const statementsInLoops: FlowNode[] = [];
39
- const statementTypes = this.getStatementTypes();
40
- for (const element of loopElements) {
41
- const loopElems = flow.graph.getLoopElements(element.name);
42
- for (const elemName of loopElems) {
43
- const node = flow.graph.getNode(elemName);
44
- if (node && statementTypes.includes(node.subtype)) {
45
- statementsInLoops.push(node);
46
- }
47
- }
48
- }
49
- return statementsInLoops;
50
- }
51
- }
@@ -1,13 +0,0 @@
1
- import { Flow } from "./Flow";
2
- export class ParsedFlow {
3
- public uri: string;
4
- public flow: Flow | undefined;
5
- public errorMessage?: string;
6
- constructor(uri: string, flow?: Flow, errorMessage?: string) {
7
- this.uri = uri;
8
- this.flow = flow;
9
- if (errorMessage) {
10
- this.errorMessage = errorMessage;
11
- }
12
- }
13
- }