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

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/{types/main → main}/models/FlowGraph.d.ts +11 -1
  3. package/{out/main → main}/models/FlowGraph.js +18 -7
  4. package/{out/main → main}/rules/MissingRecordTriggerFilter.js +4 -2
  5. package/package.json +9 -58
  6. package/.husky/pre-commit +0 -1
  7. package/.husky/pre-push +0 -1
  8. package/.prettierignore +0 -5
  9. package/.swcrc +0 -26
  10. package/.turbo/turbo-build.log +0 -17
  11. package/.turbo/turbo-test.log +0 -144
  12. package/.turbo/turbo-vite$colon$dist.log +0 -21
  13. package/coverage/coverage-final.json +0 -63
  14. package/coverage/lcov-report/base.css +0 -224
  15. package/coverage/lcov-report/block-navigation.js +0 -87
  16. package/coverage/lcov-report/favicon.png +0 -0
  17. package/coverage/lcov-report/index.html +0 -236
  18. package/coverage/lcov-report/prettify.css +0 -1
  19. package/coverage/lcov-report/prettify.js +0 -2
  20. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  21. package/coverage/lcov-report/sorter.js +0 -210
  22. package/coverage/lcov-report/src/index.html +0 -116
  23. package/coverage/lcov-report/src/index.ts.html +0 -238
  24. package/coverage/lcov-report/src/main/adapters/RegexAdapter.ts.html +0 -118
  25. package/coverage/lcov-report/src/main/adapters/index.html +0 -116
  26. package/coverage/lcov-report/src/main/config/NodeIcons.ts.html +0 -376
  27. package/coverage/lcov-report/src/main/config/RuleRegistry.ts.html +0 -646
  28. package/coverage/lcov-report/src/main/config/VariableIcons.ts.html +0 -253
  29. package/coverage/lcov-report/src/main/config/index.html +0 -146
  30. package/coverage/lcov-report/src/main/enums/MetaType.ts.html +0 -100
  31. package/coverage/lcov-report/src/main/enums/MetadataType.ts.html +0 -103
  32. package/coverage/lcov-report/src/main/enums/MetadataTypes.ts.html +0 -100
  33. package/coverage/lcov-report/src/main/enums/index.html +0 -116
  34. package/coverage/lcov-report/src/main/interfaces/IRulesConfig.ts.html +0 -133
  35. package/coverage/lcov-report/src/main/interfaces/index.html +0 -116
  36. package/coverage/lcov-report/src/main/internals/index.html +0 -116
  37. package/coverage/lcov-report/src/main/internals/internals.ts.html +0 -190
  38. package/coverage/lcov-report/src/main/libs/BuildFlow.ts.html +0 -127
  39. package/coverage/lcov-report/src/main/libs/Compiler.ts.html +0 -241
  40. package/coverage/lcov-report/src/main/libs/ConvertFlowNodes.ts.html +0 -97
  41. package/coverage/lcov-report/src/main/libs/DynamicRule.ts.html +0 -118
  42. package/coverage/lcov-report/src/main/libs/ExportDetails.ts.html +0 -256
  43. package/coverage/lcov-report/src/main/libs/ExportDiagram.ts.html +0 -331
  44. package/coverage/lcov-report/src/main/libs/ExportSarif.ts.html +0 -358
  45. package/coverage/lcov-report/src/main/libs/FixFlows.ts.html +0 -265
  46. package/coverage/lcov-report/src/main/libs/GenerateMarkdown.ts.html +0 -331
  47. package/coverage/lcov-report/src/main/libs/GetRuleDefinitions.ts.html +0 -274
  48. package/coverage/lcov-report/src/main/libs/ParseFlows.ts.html +0 -184
  49. package/coverage/lcov-report/src/main/libs/RuleDocumentation.ts.html +0 -190
  50. package/coverage/lcov-report/src/main/libs/ScanFlows.ts.html +0 -508
  51. package/coverage/lcov-report/src/main/libs/exportAsDetails.ts.html +0 -160
  52. package/coverage/lcov-report/src/main/libs/exportAsSarif.ts.html +0 -346
  53. package/coverage/lcov-report/src/main/libs/index.html +0 -251
  54. package/coverage/lcov-report/src/main/models/FlatViolation.ts.html +0 -106
  55. package/coverage/lcov-report/src/main/models/Flow.ts.html +0 -1057
  56. package/coverage/lcov-report/src/main/models/FlowAttribute.ts.html +0 -115
  57. package/coverage/lcov-report/src/main/models/FlowElement.ts.html +0 -133
  58. package/coverage/lcov-report/src/main/models/FlowElementConnector.ts.html +0 -169
  59. package/coverage/lcov-report/src/main/models/FlowGraph.ts.html +0 -1672
  60. package/coverage/lcov-report/src/main/models/FlowMetadata.ts.html +0 -106
  61. package/coverage/lcov-report/src/main/models/FlowNode.ts.html +0 -1252
  62. package/coverage/lcov-report/src/main/models/FlowResource.ts.html +0 -106
  63. package/coverage/lcov-report/src/main/models/FlowType.ts.html +0 -244
  64. package/coverage/lcov-report/src/main/models/FlowVariable.ts.html +0 -553
  65. package/coverage/lcov-report/src/main/models/LoopRuleCommon.ts.html +0 -235
  66. package/coverage/lcov-report/src/main/models/ParsedFlow.ts.html +0 -121
  67. package/coverage/lcov-report/src/main/models/RuleCommon.ts.html +0 -442
  68. package/coverage/lcov-report/src/main/models/RuleResult.ts.html +0 -172
  69. package/coverage/lcov-report/src/main/models/ScanResult.ts.html +0 -121
  70. package/coverage/lcov-report/src/main/models/Violation.ts.html +0 -316
  71. package/coverage/lcov-report/src/main/models/index.html +0 -341
  72. package/coverage/lcov-report/src/main/rules/APIVersion.ts.html +0 -361
  73. package/coverage/lcov-report/src/main/rules/ActionCallsInLoop.ts.html +0 -157
  74. package/coverage/lcov-report/src/main/rules/AutoLayout.ts.html +0 -220
  75. package/coverage/lcov-report/src/main/rules/CopyAPIName.ts.html +0 -175
  76. package/coverage/lcov-report/src/main/rules/CyclomaticComplexity.ts.html +0 -292
  77. package/coverage/lcov-report/src/main/rules/DMLStatementInLoop.ts.html +0 -163
  78. package/coverage/lcov-report/src/main/rules/DuplicateDMLOperation.ts.html +0 -334
  79. package/coverage/lcov-report/src/main/rules/FlowDescription.ts.html +0 -184
  80. package/coverage/lcov-report/src/main/rules/FlowName.ts.html +0 -229
  81. package/coverage/lcov-report/src/main/rules/GetRecordAllFields.ts.html +0 -280
  82. package/coverage/lcov-report/src/main/rules/HardcodedId.ts.html +0 -238
  83. package/coverage/lcov-report/src/main/rules/HardcodedSecret.ts.html +0 -238
  84. package/coverage/lcov-report/src/main/rules/HardcodedUrl.ts.html +0 -247
  85. package/coverage/lcov-report/src/main/rules/InactiveFlow.ts.html +0 -184
  86. package/coverage/lcov-report/src/main/rules/MissingFaultPath.ts.html +0 -397
  87. package/coverage/lcov-report/src/main/rules/MissingFilterRecordTrigger.ts.html +0 -229
  88. package/coverage/lcov-report/src/main/rules/MissingMetadataDescription.ts.html +0 -211
  89. package/coverage/lcov-report/src/main/rules/MissingNullHandler.ts.html +0 -460
  90. package/coverage/lcov-report/src/main/rules/MissingRecordTriggerFilter.ts.html +0 -235
  91. package/coverage/lcov-report/src/main/rules/ProcessBuilder.ts.html +0 -190
  92. package/coverage/lcov-report/src/main/rules/RecordIdAsString.ts.html +0 -274
  93. package/coverage/lcov-report/src/main/rules/RecursiveAfterUpdate.ts.html +0 -364
  94. package/coverage/lcov-report/src/main/rules/SOQLQueryInLoop.ts.html +0 -160
  95. package/coverage/lcov-report/src/main/rules/SameRecordFieldUpdates.ts.html +0 -283
  96. package/coverage/lcov-report/src/main/rules/TransformInsteadOfLoop.ts.html +0 -250
  97. package/coverage/lcov-report/src/main/rules/TriggerOrder.ts.html +0 -238
  98. package/coverage/lcov-report/src/main/rules/UnconnectedElement.ts.html +0 -178
  99. package/coverage/lcov-report/src/main/rules/UnsafeRunningContext.ts.html +0 -226
  100. package/coverage/lcov-report/src/main/rules/UnusedVariable.ts.html +0 -283
  101. package/coverage/lcov-report/src/main/rules/index.html +0 -521
  102. package/coverage/lcov-report/src/main/store/DefaultRuleStore.ts.html +0 -265
  103. package/coverage/lcov-report/src/main/store/RuleRegistry.ts.html +0 -118
  104. package/coverage/lcov-report/src/main/store/index.html +0 -116
  105. package/coverage/lcov.info +0 -6261
  106. package/eslint.config.mjs +0 -36
  107. package/jest.config.cjs +0 -32
  108. package/jest.env-setup.js +0 -101
  109. package/lint-staged.config.mjs +0 -8
  110. package/out/main/models/FlowGraph.d.ts +0 -85
  111. package/prettier.config.mjs +0 -5
  112. package/src/index.ts +0 -52
  113. package/src/main/config/NodeIcons.ts +0 -98
  114. package/src/main/config/RegexAdapter.ts +0 -98
  115. package/src/main/config/RuleRegistry.ts +0 -188
  116. package/src/main/config/VariableIcons.ts +0 -57
  117. package/src/main/enums/MetadataTypes.ts +0 -6
  118. package/src/main/interfaces/IExceptions.ts +0 -6
  119. package/src/main/interfaces/IRuleConfig.ts +0 -6
  120. package/src/main/interfaces/IRuleDefinition.ts +0 -15
  121. package/src/main/interfaces/IRuleOptions.ts +0 -5
  122. package/src/main/interfaces/IRulesConfig.ts +0 -17
  123. package/src/main/internals/internals.ts +0 -35
  124. package/src/main/libs/BuildFlow.ts +0 -14
  125. package/src/main/libs/Compiler.ts +0 -53
  126. package/src/main/libs/ExportDetails.ts +0 -58
  127. package/src/main/libs/ExportDiagram.ts +0 -83
  128. package/src/main/libs/ExportSarif.ts +0 -92
  129. package/src/main/libs/FixFlows.ts +0 -61
  130. package/src/main/libs/GetRuleDefinitions.ts +0 -64
  131. package/src/main/libs/ParseFlows.ts +0 -34
  132. package/src/main/libs/RuleDocumentation.ts +0 -35
  133. package/src/main/libs/ScanFlows.ts +0 -142
  134. package/src/main/models/FlatViolation.ts +0 -16
  135. package/src/main/models/Flow.ts +0 -325
  136. package/src/main/models/FlowAttribute.ts +0 -11
  137. package/src/main/models/FlowElement.ts +0 -16
  138. package/src/main/models/FlowElementConnector.ts +0 -28
  139. package/src/main/models/FlowGraph.ts +0 -530
  140. package/src/main/models/FlowMetadata.ts +0 -8
  141. package/src/main/models/FlowNode.ts +0 -390
  142. package/src/main/models/FlowResource.ts +0 -8
  143. package/src/main/models/FlowType.ts +0 -53
  144. package/src/main/models/FlowVariable.ts +0 -157
  145. package/src/main/models/LoopRuleCommon.ts +0 -51
  146. package/src/main/models/ParsedFlow.ts +0 -13
  147. package/src/main/models/RuleCommon.ts +0 -120
  148. package/src/main/models/RuleInfo.ts +0 -54
  149. package/src/main/models/RuleResult.ts +0 -29
  150. package/src/main/models/ScanResult.ts +0 -12
  151. package/src/main/models/Violation.ts +0 -78
  152. package/src/main/rules/APIVersion.ts +0 -93
  153. package/src/main/rules/ActionCallsInLoop.ts +0 -25
  154. package/src/main/rules/AutoLayout.ts +0 -46
  155. package/src/main/rules/CopyAPIName.ts +0 -31
  156. package/src/main/rules/CyclomaticComplexity.ts +0 -70
  157. package/src/main/rules/DMLStatementInLoop.ts +0 -26
  158. package/src/main/rules/DuplicateDMLOperation.ts +0 -83
  159. package/src/main/rules/FlowDescription.ts +0 -34
  160. package/src/main/rules/FlowName.ts +0 -49
  161. package/src/main/rules/GetRecordAllFields.ts +0 -65
  162. package/src/main/rules/HardcodedId.ts +0 -51
  163. package/src/main/rules/HardcodedSecret.ts +0 -51
  164. package/src/main/rules/HardcodedUrl.ts +0 -54
  165. package/src/main/rules/InactiveFlow.ts +0 -33
  166. package/src/main/rules/MissingFaultPath.ts +0 -105
  167. package/src/main/rules/MissingMetadataDescription.ts +0 -42
  168. package/src/main/rules/MissingNullHandler.ts +0 -126
  169. package/src/main/rules/MissingRecordTriggerFilter.ts +0 -51
  170. package/src/main/rules/ProcessBuilder.ts +0 -35
  171. package/src/main/rules/RecordIdAsString.ts +0 -64
  172. package/src/main/rules/RecursiveAfterUpdate.ts +0 -94
  173. package/src/main/rules/SOQLQueryInLoop.ts +0 -26
  174. package/src/main/rules/SameRecordFieldUpdates.ts +0 -66
  175. package/src/main/rules/TransformInsteadOfLoop.ts +0 -56
  176. package/src/main/rules/TriggerOrder.ts +0 -51
  177. package/src/main/rules/UnconnectedElement.ts +0 -32
  178. package/src/main/rules/UnsafeRunningContext.ts +0 -47
  179. package/src/main/rules/UnusedVariable.ts +0 -66
  180. package/stryker.config.mjs +0 -23
  181. package/tests/APIVersion.test.ts +0 -87
  182. package/tests/AutoLayout.test.ts +0 -41
  183. package/tests/Config.test.ts +0 -122
  184. package/tests/ConfigBetaMode.test.ts +0 -26
  185. package/tests/CopyAPIName.test.ts +0 -45
  186. package/tests/CyclomaticComplexity.test.ts +0 -125
  187. package/tests/DMLStatementInLoop.test.ts +0 -32
  188. package/tests/DuplicateDMLOperation.test.ts +0 -43
  189. package/tests/EnabledFalse.test.ts +0 -63
  190. package/tests/Exceptions.test.ts +0 -815
  191. package/tests/ExportSarif.test.ts +0 -62
  192. package/tests/FlowDescription.test.ts +0 -44
  193. package/tests/FlowDocumentation.test.ts +0 -74
  194. package/tests/FlowName.test.ts +0 -61
  195. package/tests/GetRecordElementAllFields.test.ts +0 -182
  196. package/tests/HardcodedId.test.ts +0 -16
  197. package/tests/HardcodedSecret.test.ts +0 -32
  198. package/tests/HardcodedUrl.test.ts +0 -253
  199. package/tests/InactiveFlow.test.ts +0 -103
  200. package/tests/MissingFaultPath.test.ts +0 -52
  201. package/tests/MissingMetadataDescription.test.ts +0 -25
  202. package/tests/MissingNullHandler.test.ts +0 -45
  203. package/tests/MissingRecordTriggerFilter.test.ts +0 -54
  204. package/tests/RecordIdAsString.test.ts +0 -60
  205. package/tests/RecursiveAfterUpdate.test.ts +0 -183
  206. package/tests/SOQLQueryInLoop.test.ts +0 -33
  207. package/tests/SameRecordFieldUpdates.test.ts +0 -205
  208. package/tests/SanityTest.test.ts +0 -15
  209. package/tests/TransformInsteadOfLoop.test.ts +0 -33
  210. package/tests/TriggerOrder.test.ts +0 -112
  211. package/tests/UnconnectedElement.test.ts +0 -76
  212. package/tests/UnsafeRunningContext.test.ts +0 -46
  213. package/tests/UnusedVariable.test.ts +0 -59
  214. package/tests/UnusedVariableExceptions.test.ts +0 -87
  215. package/tests/jsonfiles/MissingFaultPath_BeforeSave_Bypass.json +0 -128
  216. package/tests/jsonfiles/MissingFaultPath_WaitConditions.json +0 -102
  217. package/tests/jsonfiles/MissingFaultPath_WaitDate.json +0 -88
  218. package/tests/jsonfiles/MissingFaultPath_WaitDuration.json +0 -90
  219. package/tests/models/Flow.test.ts +0 -107
  220. package/tests/models/LoopRuleCommon.test.ts +0 -246
  221. package/tests/models/RuleCommon.test.ts +0 -41
  222. package/tsconfig.json +0 -28
  223. package/tsconfig.types.json +0 -26
  224. package/types/index.d.ts +0 -27
  225. package/types/index.d.ts.map +0 -1
  226. package/types/main/adapters/RegexAdapter.d.ts +0 -33
  227. package/types/main/adapters/RegexAdapter.d.ts.map +0 -1
  228. package/types/main/config/NodeIcons.d.ts +0 -25
  229. package/types/main/config/NodeIcons.d.ts.map +0 -1
  230. package/types/main/config/RegexAdapter.d.ts +0 -33
  231. package/types/main/config/RegexAdapter.d.ts.map +0 -1
  232. package/types/main/config/RuleRegistry.d.ts +0 -23
  233. package/types/main/config/RuleRegistry.d.ts.map +0 -1
  234. package/types/main/config/VariableIcons.d.ts +0 -26
  235. package/types/main/config/VariableIcons.d.ts.map +0 -1
  236. package/types/main/enums/MetadataTypes.d.ts +0 -7
  237. package/types/main/enums/MetadataTypes.d.ts.map +0 -1
  238. package/types/main/interfaces/IExceptions.d.ts +0 -6
  239. package/types/main/interfaces/IExceptions.d.ts.map +0 -1
  240. package/types/main/interfaces/IRuleConfig.d.ts +0 -7
  241. package/types/main/interfaces/IRuleConfig.d.ts.map +0 -1
  242. package/types/main/interfaces/IRuleDefinition.d.ts +0 -18
  243. package/types/main/interfaces/IRuleDefinition.d.ts.map +0 -1
  244. package/types/main/interfaces/IRuleOptions.d.ts +0 -5
  245. package/types/main/interfaces/IRuleOptions.d.ts.map +0 -1
  246. package/types/main/interfaces/IRulesConfig.d.ts +0 -16
  247. package/types/main/interfaces/IRulesConfig.d.ts.map +0 -1
  248. package/types/main/internals/internals.d.ts +0 -19
  249. package/types/main/internals/internals.d.ts.map +0 -1
  250. package/types/main/libs/BuildFlow.d.ts +0 -2
  251. package/types/main/libs/BuildFlow.d.ts.map +0 -1
  252. package/types/main/libs/Compiler.d.ts +0 -8
  253. package/types/main/libs/Compiler.d.ts.map +0 -1
  254. package/types/main/libs/ConvertFlowNodes.d.ts +0 -2
  255. package/types/main/libs/ConvertFlowNodes.d.ts.map +0 -1
  256. package/types/main/libs/DynamicRule.d.ts +0 -5
  257. package/types/main/libs/DynamicRule.d.ts.map +0 -1
  258. package/types/main/libs/ExportDetails.d.ts +0 -4
  259. package/types/main/libs/ExportDetails.d.ts.map +0 -1
  260. package/types/main/libs/ExportDiagram.d.ts +0 -42
  261. package/types/main/libs/ExportDiagram.d.ts.map +0 -1
  262. package/types/main/libs/ExportSarif.d.ts +0 -3
  263. package/types/main/libs/ExportSarif.d.ts.map +0 -1
  264. package/types/main/libs/FixFlows.d.ts +0 -4
  265. package/types/main/libs/FixFlows.d.ts.map +0 -1
  266. package/types/main/libs/GetRuleDefinitions.d.ts +0 -5
  267. package/types/main/libs/GetRuleDefinitions.d.ts.map +0 -1
  268. package/types/main/libs/ParseFlows.d.ts +0 -3
  269. package/types/main/libs/ParseFlows.d.ts.map +0 -1
  270. package/types/main/libs/RuleDocumentation.d.ts +0 -21
  271. package/types/main/libs/RuleDocumentation.d.ts.map +0 -1
  272. package/types/main/libs/ScanFlows.d.ts +0 -5
  273. package/types/main/libs/ScanFlows.d.ts.map +0 -1
  274. package/types/main/libs/exportAsDetails.d.ts +0 -4
  275. package/types/main/libs/exportAsDetails.d.ts.map +0 -1
  276. package/types/main/libs/exportAsSarif.d.ts +0 -3
  277. package/types/main/libs/exportAsSarif.d.ts.map +0 -1
  278. package/types/main/models/FlatViolation.d.ts +0 -16
  279. package/types/main/models/FlatViolation.d.ts.map +0 -1
  280. package/types/main/models/Flow.d.ts +0 -70
  281. package/types/main/models/Flow.d.ts.map +0 -1
  282. package/types/main/models/FlowAttribute.d.ts +0 -6
  283. package/types/main/models/FlowAttribute.d.ts.map +0 -1
  284. package/types/main/models/FlowElement.d.ts +0 -11
  285. package/types/main/models/FlowElement.d.ts.map +0 -1
  286. package/types/main/models/FlowElementConnector.d.ts +0 -16
  287. package/types/main/models/FlowElementConnector.d.ts.map +0 -1
  288. package/types/main/models/FlowGraph.d.ts.map +0 -1
  289. package/types/main/models/FlowMetadata.d.ts +0 -5
  290. package/types/main/models/FlowMetadata.d.ts.map +0 -1
  291. package/types/main/models/FlowNode.d.ts +0 -66
  292. package/types/main/models/FlowNode.d.ts.map +0 -1
  293. package/types/main/models/FlowResource.d.ts +0 -5
  294. package/types/main/models/FlowResource.d.ts.map +0 -1
  295. package/types/main/models/FlowType.d.ts +0 -24
  296. package/types/main/models/FlowType.d.ts.map +0 -1
  297. package/types/main/models/FlowVariable.d.ts +0 -64
  298. package/types/main/models/FlowVariable.d.ts.map +0 -1
  299. package/types/main/models/LoopRuleCommon.d.ts +0 -15
  300. package/types/main/models/LoopRuleCommon.d.ts.map +0 -1
  301. package/types/main/models/ParsedFlow.d.ts +0 -8
  302. package/types/main/models/ParsedFlow.d.ts.map +0 -1
  303. package/types/main/models/RuleCommon.d.ts +0 -58
  304. package/types/main/models/RuleCommon.d.ts.map +0 -1
  305. package/types/main/models/RuleInfo.d.ts +0 -50
  306. package/types/main/models/RuleInfo.d.ts.map +0 -1
  307. package/types/main/models/RuleResult.d.ts +0 -15
  308. package/types/main/models/RuleResult.d.ts.map +0 -1
  309. package/types/main/models/ScanResult.d.ts +0 -8
  310. package/types/main/models/ScanResult.d.ts.map +0 -1
  311. package/types/main/models/Violation.d.ts +0 -12
  312. package/types/main/models/Violation.d.ts.map +0 -1
  313. package/types/main/rules/APIVersion.d.ts +0 -10
  314. package/types/main/rules/APIVersion.d.ts.map +0 -1
  315. package/types/main/rules/ActionCallsInLoop.d.ts +0 -7
  316. package/types/main/rules/ActionCallsInLoop.d.ts.map +0 -1
  317. package/types/main/rules/AutoLayout.d.ts +0 -8
  318. package/types/main/rules/AutoLayout.d.ts.map +0 -1
  319. package/types/main/rules/CopyAPIName.d.ts +0 -8
  320. package/types/main/rules/CopyAPIName.d.ts.map +0 -1
  321. package/types/main/rules/CyclomaticComplexity.d.ts +0 -12
  322. package/types/main/rules/CyclomaticComplexity.d.ts.map +0 -1
  323. package/types/main/rules/DMLStatementInLoop.d.ts +0 -7
  324. package/types/main/rules/DMLStatementInLoop.d.ts.map +0 -1
  325. package/types/main/rules/DuplicateDMLOperation.d.ts +0 -9
  326. package/types/main/rules/DuplicateDMLOperation.d.ts.map +0 -1
  327. package/types/main/rules/FlowDescription.d.ts +0 -8
  328. package/types/main/rules/FlowDescription.d.ts.map +0 -1
  329. package/types/main/rules/FlowName.d.ts +0 -16
  330. package/types/main/rules/FlowName.d.ts.map +0 -1
  331. package/types/main/rules/GetRecordAllFields.d.ts +0 -8
  332. package/types/main/rules/GetRecordAllFields.d.ts.map +0 -1
  333. package/types/main/rules/HardcodedId.d.ts +0 -14
  334. package/types/main/rules/HardcodedId.d.ts.map +0 -1
  335. package/types/main/rules/HardcodedSecret.d.ts +0 -14
  336. package/types/main/rules/HardcodedSecret.d.ts.map +0 -1
  337. package/types/main/rules/HardcodedUrl.d.ts +0 -14
  338. package/types/main/rules/HardcodedUrl.d.ts.map +0 -1
  339. package/types/main/rules/InactiveFlow.d.ts +0 -8
  340. package/types/main/rules/InactiveFlow.d.ts.map +0 -1
  341. package/types/main/rules/MissingFaultPath.d.ts +0 -15
  342. package/types/main/rules/MissingFaultPath.d.ts.map +0 -1
  343. package/types/main/rules/MissingFilterRecordTrigger.d.ts +0 -8
  344. package/types/main/rules/MissingFilterRecordTrigger.d.ts.map +0 -1
  345. package/types/main/rules/MissingMetadataDescription.d.ts +0 -8
  346. package/types/main/rules/MissingMetadataDescription.d.ts.map +0 -1
  347. package/types/main/rules/MissingNullHandler.d.ts +0 -8
  348. package/types/main/rules/MissingNullHandler.d.ts.map +0 -1
  349. package/types/main/rules/MissingRecordTriggerFilter.d.ts +0 -8
  350. package/types/main/rules/MissingRecordTriggerFilter.d.ts.map +0 -1
  351. package/types/main/rules/ProcessBuilder.d.ts +0 -8
  352. package/types/main/rules/ProcessBuilder.d.ts.map +0 -1
  353. package/types/main/rules/RecordIdAsString.d.ts +0 -8
  354. package/types/main/rules/RecordIdAsString.d.ts.map +0 -1
  355. package/types/main/rules/RecursiveAfterUpdate.d.ts +0 -9
  356. package/types/main/rules/RecursiveAfterUpdate.d.ts.map +0 -1
  357. package/types/main/rules/SOQLQueryInLoop.d.ts +0 -7
  358. package/types/main/rules/SOQLQueryInLoop.d.ts.map +0 -1
  359. package/types/main/rules/SameRecordFieldUpdates.d.ts +0 -9
  360. package/types/main/rules/SameRecordFieldUpdates.d.ts.map +0 -1
  361. package/types/main/rules/TransformInsteadOfLoop.d.ts +0 -8
  362. package/types/main/rules/TransformInsteadOfLoop.d.ts.map +0 -1
  363. package/types/main/rules/TriggerOrder.d.ts +0 -8
  364. package/types/main/rules/TriggerOrder.d.ts.map +0 -1
  365. package/types/main/rules/UnconnectedElement.d.ts +0 -8
  366. package/types/main/rules/UnconnectedElement.d.ts.map +0 -1
  367. package/types/main/rules/UnsafeRunningContext.d.ts +0 -8
  368. package/types/main/rules/UnsafeRunningContext.d.ts.map +0 -1
  369. package/types/main/rules/UnusedVariable.d.ts +0 -8
  370. package/types/main/rules/UnusedVariable.d.ts.map +0 -1
  371. package/types/main/store/DefaultRuleStore.d.ts +0 -3
  372. package/types/main/store/DefaultRuleStore.d.ts.map +0 -1
  373. package/types/main/store/RuleRegistry.d.ts +0 -23
  374. package/types/main/store/RuleRegistry.d.ts.map +0 -1
  375. package/vite.config.ts +0 -33
  376. /package/{out/index.d.ts → index.d.ts} +0 -0
  377. /package/{out/index.js → index.js} +0 -0
  378. /package/{out/main → main}/config/NodeIcons.d.ts +0 -0
  379. /package/{out/main → main}/config/NodeIcons.js +0 -0
  380. /package/{out/main → main}/config/RegexAdapter.d.ts +0 -0
  381. /package/{out/main → main}/config/RegexAdapter.js +0 -0
  382. /package/{out/main → main}/config/RuleRegistry.d.ts +0 -0
  383. /package/{out/main → main}/config/RuleRegistry.js +0 -0
  384. /package/{out/main → main}/config/VariableIcons.d.ts +0 -0
  385. /package/{out/main → main}/config/VariableIcons.js +0 -0
  386. /package/{out/main → main}/enums/MetadataTypes.d.ts +0 -0
  387. /package/{out/main → main}/enums/MetadataTypes.js +0 -0
  388. /package/{out/main → main}/interfaces/IExceptions.d.ts +0 -0
  389. /package/{out/main → main}/interfaces/IExceptions.js +0 -0
  390. /package/{out/main → main}/interfaces/IRuleConfig.d.ts +0 -0
  391. /package/{out/main → main}/interfaces/IRuleConfig.js +0 -0
  392. /package/{out/main → main}/interfaces/IRuleDefinition.d.ts +0 -0
  393. /package/{out/main → main}/interfaces/IRuleDefinition.js +0 -0
  394. /package/{out/main → main}/interfaces/IRuleOptions.d.ts +0 -0
  395. /package/{out/main → main}/interfaces/IRuleOptions.js +0 -0
  396. /package/{out/main → main}/interfaces/IRulesConfig.d.ts +0 -0
  397. /package/{out/main → main}/interfaces/IRulesConfig.js +0 -0
  398. /package/{out/main → main}/internals/internals.d.ts +0 -0
  399. /package/{out/main → main}/internals/internals.js +0 -0
  400. /package/{out/main → main}/libs/BuildFlow.d.ts +0 -0
  401. /package/{out/main → main}/libs/BuildFlow.js +0 -0
  402. /package/{out/main → main}/libs/Compiler.d.ts +0 -0
  403. /package/{out/main → main}/libs/Compiler.js +0 -0
  404. /package/{out/main → main}/libs/ExportDetails.d.ts +0 -0
  405. /package/{out/main → main}/libs/ExportDetails.js +0 -0
  406. /package/{out/main → main}/libs/ExportDiagram.d.ts +0 -0
  407. /package/{out/main → main}/libs/ExportDiagram.js +0 -0
  408. /package/{out/main → main}/libs/ExportSarif.d.ts +0 -0
  409. /package/{out/main → main}/libs/ExportSarif.js +0 -0
  410. /package/{out/main → main}/libs/FixFlows.d.ts +0 -0
  411. /package/{out/main → main}/libs/FixFlows.js +0 -0
  412. /package/{out/main → main}/libs/GetRuleDefinitions.d.ts +0 -0
  413. /package/{out/main → main}/libs/GetRuleDefinitions.js +0 -0
  414. /package/{out/main → main}/libs/ParseFlows.d.ts +0 -0
  415. /package/{out/main → main}/libs/ParseFlows.js +0 -0
  416. /package/{out/main → main}/libs/RuleDocumentation.d.ts +0 -0
  417. /package/{out/main → main}/libs/RuleDocumentation.js +0 -0
  418. /package/{out/main → main}/libs/ScanFlows.d.ts +0 -0
  419. /package/{out/main → main}/libs/ScanFlows.js +0 -0
  420. /package/{out/main → main}/models/FlatViolation.d.ts +0 -0
  421. /package/{out/main → main}/models/FlatViolation.js +0 -0
  422. /package/{out/main → main}/models/Flow.d.ts +0 -0
  423. /package/{out/main → main}/models/Flow.js +0 -0
  424. /package/{out/main → main}/models/FlowAttribute.d.ts +0 -0
  425. /package/{out/main → main}/models/FlowAttribute.js +0 -0
  426. /package/{out/main → main}/models/FlowElement.d.ts +0 -0
  427. /package/{out/main → main}/models/FlowElement.js +0 -0
  428. /package/{out/main → main}/models/FlowElementConnector.d.ts +0 -0
  429. /package/{out/main → main}/models/FlowElementConnector.js +0 -0
  430. /package/{out/main → main}/models/FlowMetadata.d.ts +0 -0
  431. /package/{out/main → main}/models/FlowMetadata.js +0 -0
  432. /package/{out/main → main}/models/FlowNode.d.ts +0 -0
  433. /package/{out/main → main}/models/FlowNode.js +0 -0
  434. /package/{out/main → main}/models/FlowResource.d.ts +0 -0
  435. /package/{out/main → main}/models/FlowResource.js +0 -0
  436. /package/{out/main → main}/models/FlowType.d.ts +0 -0
  437. /package/{out/main → main}/models/FlowType.js +0 -0
  438. /package/{out/main → main}/models/FlowVariable.d.ts +0 -0
  439. /package/{out/main → main}/models/FlowVariable.js +0 -0
  440. /package/{out/main → main}/models/LoopRuleCommon.d.ts +0 -0
  441. /package/{out/main → main}/models/LoopRuleCommon.js +0 -0
  442. /package/{out/main → main}/models/ParsedFlow.d.ts +0 -0
  443. /package/{out/main → main}/models/ParsedFlow.js +0 -0
  444. /package/{out/main → main}/models/RuleCommon.d.ts +0 -0
  445. /package/{out/main → main}/models/RuleCommon.js +0 -0
  446. /package/{out/main → main}/models/RuleInfo.d.ts +0 -0
  447. /package/{out/main → main}/models/RuleInfo.js +0 -0
  448. /package/{out/main → main}/models/RuleResult.d.ts +0 -0
  449. /package/{out/main → main}/models/RuleResult.js +0 -0
  450. /package/{out/main → main}/models/ScanResult.d.ts +0 -0
  451. /package/{out/main → main}/models/ScanResult.js +0 -0
  452. /package/{out/main → main}/models/Violation.d.ts +0 -0
  453. /package/{out/main → main}/models/Violation.js +0 -0
  454. /package/{out/main → main}/rules/APIVersion.d.ts +0 -0
  455. /package/{out/main → main}/rules/APIVersion.js +0 -0
  456. /package/{out/main → main}/rules/ActionCallsInLoop.d.ts +0 -0
  457. /package/{out/main → main}/rules/ActionCallsInLoop.js +0 -0
  458. /package/{out/main → main}/rules/AutoLayout.d.ts +0 -0
  459. /package/{out/main → main}/rules/AutoLayout.js +0 -0
  460. /package/{out/main → main}/rules/CopyAPIName.d.ts +0 -0
  461. /package/{out/main → main}/rules/CopyAPIName.js +0 -0
  462. /package/{out/main → main}/rules/CyclomaticComplexity.d.ts +0 -0
  463. /package/{out/main → main}/rules/CyclomaticComplexity.js +0 -0
  464. /package/{out/main → main}/rules/DMLStatementInLoop.d.ts +0 -0
  465. /package/{out/main → main}/rules/DMLStatementInLoop.js +0 -0
  466. /package/{out/main → main}/rules/DuplicateDMLOperation.d.ts +0 -0
  467. /package/{out/main → main}/rules/DuplicateDMLOperation.js +0 -0
  468. /package/{out/main → main}/rules/FlowDescription.d.ts +0 -0
  469. /package/{out/main → main}/rules/FlowDescription.js +0 -0
  470. /package/{out/main → main}/rules/FlowName.d.ts +0 -0
  471. /package/{out/main → main}/rules/FlowName.js +0 -0
  472. /package/{out/main → main}/rules/GetRecordAllFields.d.ts +0 -0
  473. /package/{out/main → main}/rules/GetRecordAllFields.js +0 -0
  474. /package/{out/main → main}/rules/HardcodedId.d.ts +0 -0
  475. /package/{out/main → main}/rules/HardcodedId.js +0 -0
  476. /package/{out/main → main}/rules/HardcodedSecret.d.ts +0 -0
  477. /package/{out/main → main}/rules/HardcodedSecret.js +0 -0
  478. /package/{out/main → main}/rules/HardcodedUrl.d.ts +0 -0
  479. /package/{out/main → main}/rules/HardcodedUrl.js +0 -0
  480. /package/{out/main → main}/rules/InactiveFlow.d.ts +0 -0
  481. /package/{out/main → main}/rules/InactiveFlow.js +0 -0
  482. /package/{out/main → main}/rules/MissingFaultPath.d.ts +0 -0
  483. /package/{out/main → main}/rules/MissingFaultPath.js +0 -0
  484. /package/{out/main → main}/rules/MissingMetadataDescription.d.ts +0 -0
  485. /package/{out/main → main}/rules/MissingMetadataDescription.js +0 -0
  486. /package/{out/main → main}/rules/MissingNullHandler.d.ts +0 -0
  487. /package/{out/main → main}/rules/MissingNullHandler.js +0 -0
  488. /package/{out/main → main}/rules/MissingRecordTriggerFilter.d.ts +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
- }