@jterrats/smart-deployment 1.0.5 → 1.1.0

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 (259) hide show
  1. package/README.md +3 -2
  2. package/lib/ai/wave-validation-prompt.d.ts +2 -0
  3. package/lib/ai/wave-validation-prompt.js +56 -0
  4. package/lib/ai/wave-validation-prompt.js.map +1 -0
  5. package/lib/ai/wave-validation-report.d.ts +2 -0
  6. package/lib/ai/wave-validation-report.js +96 -0
  7. package/lib/ai/wave-validation-report.js.map +1 -0
  8. package/lib/ai/wave-validation-response-parser.d.ts +8 -0
  9. package/lib/ai/wave-validation-response-parser.js +112 -0
  10. package/lib/ai/wave-validation-response-parser.js.map +1 -0
  11. package/lib/ai/wave-validation-result-synthesis.d.ts +6 -0
  12. package/lib/ai/wave-validation-result-synthesis.js +49 -0
  13. package/lib/ai/wave-validation-result-synthesis.js.map +1 -0
  14. package/lib/ai/wave-validation-service.d.ts +1 -55
  15. package/lib/ai/wave-validation-service.js +11 -359
  16. package/lib/ai/wave-validation-service.js.map +1 -1
  17. package/lib/ai/wave-validation-transport.d.ts +7 -0
  18. package/lib/ai/wave-validation-transport.js +10 -0
  19. package/lib/ai/wave-validation-transport.js.map +1 -0
  20. package/lib/analysis/analysis-reporter.d.ts +29 -0
  21. package/lib/analysis/analysis-reporter.js +84 -1
  22. package/lib/analysis/analysis-reporter.js.map +1 -1
  23. package/lib/analysis/analyze-context-service.d.ts +1 -1
  24. package/lib/analysis/analyze-context-service.js +2 -0
  25. package/lib/analysis/analyze-context-service.js.map +1 -1
  26. package/lib/analysis/project-analysis-service.d.ts +2 -0
  27. package/lib/analysis/project-analysis-service.js +2 -0
  28. package/lib/analysis/project-analysis-service.js.map +1 -1
  29. package/lib/commands/start.d.ts +1 -0
  30. package/lib/commands/start.js +14 -1
  31. package/lib/commands/start.js.map +1 -1
  32. package/lib/commands/status.d.ts +2 -0
  33. package/lib/commands/status.js +1 -0
  34. package/lib/commands/status.js.map +1 -1
  35. package/lib/commands/validate.d.ts +3 -3
  36. package/lib/commands/validate.js +4 -4
  37. package/lib/commands/validate.js.map +1 -1
  38. package/lib/constants/api-version.d.ts +2 -2
  39. package/lib/constants/api-version.js +2 -2
  40. package/lib/constants/deployment-order.js +11 -8
  41. package/lib/constants/deployment-order.js.map +1 -1
  42. package/lib/dependencies/circular-dependency-detector.d.ts +1 -31
  43. package/lib/dependencies/circular-dependency-detector.js +7 -156
  44. package/lib/dependencies/circular-dependency-detector.js.map +1 -1
  45. package/lib/dependencies/cycle-break-suggestions.d.ts +3 -0
  46. package/lib/dependencies/cycle-break-suggestions.js +63 -0
  47. package/lib/dependencies/cycle-break-suggestions.js.map +1 -0
  48. package/lib/dependencies/cycle-discovery.d.ts +16 -0
  49. package/lib/dependencies/cycle-discovery.js +70 -0
  50. package/lib/dependencies/cycle-discovery.js.map +1 -0
  51. package/lib/dependencies/dependency-graph-builder.d.ts +0 -65
  52. package/lib/dependencies/dependency-graph-builder.js +19 -233
  53. package/lib/dependencies/dependency-graph-builder.js.map +1 -1
  54. package/lib/dependencies/dependency-graph-intake.d.ts +17 -0
  55. package/lib/dependencies/dependency-graph-intake.js +20 -0
  56. package/lib/dependencies/dependency-graph-intake.js.map +1 -0
  57. package/lib/dependencies/dependency-graph-stats.d.ts +4 -0
  58. package/lib/dependencies/dependency-graph-stats.js +82 -0
  59. package/lib/dependencies/dependency-graph-stats.js.map +1 -0
  60. package/lib/dependencies/dependency-graph-validation.d.ts +16 -0
  61. package/lib/dependencies/dependency-graph-validation.js +78 -0
  62. package/lib/dependencies/dependency-graph-validation.js.map +1 -0
  63. package/lib/dependencies/dependency-impact-analyzer.d.ts +1 -22
  64. package/lib/dependencies/dependency-impact-analyzer.js +12 -110
  65. package/lib/dependencies/dependency-impact-analyzer.js.map +1 -1
  66. package/lib/dependencies/dependency-impact-scoring.d.ts +5 -0
  67. package/lib/dependencies/dependency-impact-scoring.js +24 -0
  68. package/lib/dependencies/dependency-impact-scoring.js.map +1 -0
  69. package/lib/dependencies/dependency-impact-traversal.d.ts +18 -0
  70. package/lib/dependencies/dependency-impact-traversal.js +74 -0
  71. package/lib/dependencies/dependency-impact-traversal.js.map +1 -0
  72. package/lib/dependencies/dependency-resolution-classifier.d.ts +19 -0
  73. package/lib/dependencies/dependency-resolution-classifier.js +67 -0
  74. package/lib/dependencies/dependency-resolution-classifier.js.map +1 -0
  75. package/lib/dependencies/dependency-resolver.d.ts +1 -48
  76. package/lib/dependencies/dependency-resolver.js +12 -181
  77. package/lib/dependencies/dependency-resolver.js.map +1 -1
  78. package/lib/dependencies/dynamic-query-dependency-references.d.ts +3 -0
  79. package/lib/dependencies/dynamic-query-dependency-references.js +41 -0
  80. package/lib/dependencies/dynamic-query-dependency-references.js.map +1 -0
  81. package/lib/dependencies/topological-dependency-sorter.d.ts +10 -0
  82. package/lib/dependencies/topological-dependency-sorter.js +84 -0
  83. package/lib/dependencies/topological-dependency-sorter.js.map +1 -0
  84. package/lib/deployment/cycle-remediation-runner.d.ts +1 -0
  85. package/lib/deployment/cycle-remediation-runner.js +5 -1
  86. package/lib/deployment/cycle-remediation-runner.js.map +1 -1
  87. package/lib/deployment/deployment-runner.d.ts +3 -1
  88. package/lib/deployment/deployment-runner.js +6 -1
  89. package/lib/deployment/deployment-runner.js.map +1 -1
  90. package/lib/deployment/deployment-status-service.d.ts +2 -0
  91. package/lib/deployment/deployment-status-service.js +2 -0
  92. package/lib/deployment/deployment-status-service.js.map +1 -1
  93. package/lib/deployment/deployment-validation-service.js +1 -1
  94. package/lib/deployment/deployment-validation-service.js.map +1 -1
  95. package/lib/deployment/dynamic-query-target-validator.d.ts +24 -0
  96. package/lib/deployment/dynamic-query-target-validator.js +65 -0
  97. package/lib/deployment/dynamic-query-target-validator.js.map +1 -0
  98. package/lib/deployment/sf-cli-integration.d.ts +1 -0
  99. package/lib/deployment/sf-cli-integration.js +1 -1
  100. package/lib/deployment/sf-cli-integration.js.map +1 -1
  101. package/lib/deployment/sf-cli-metadata-lookup.d.ts +4 -0
  102. package/lib/deployment/sf-cli-metadata-lookup.js +26 -0
  103. package/lib/deployment/sf-cli-metadata-lookup.js.map +1 -0
  104. package/lib/deployment/start-execution-service.d.ts +5 -0
  105. package/lib/deployment/start-execution-service.js +26 -6
  106. package/lib/deployment/start-execution-service.js.map +1 -1
  107. package/lib/deployment/wave-graph-state.d.ts +6 -0
  108. package/lib/deployment/wave-graph-state.js +89 -0
  109. package/lib/deployment/wave-graph-state.js.map +1 -0
  110. package/lib/deployment/wave-manifest-service.d.ts +1 -0
  111. package/lib/deployment/wave-manifest-service.js +1 -1
  112. package/lib/deployment/wave-manifest-service.js.map +1 -1
  113. package/lib/errors/deployment-error.js +1 -1
  114. package/lib/errors/deployment-error.js.map +1 -1
  115. package/lib/parsers/apex-class-dependencies.d.ts +4 -0
  116. package/lib/parsers/apex-class-dependencies.js +122 -0
  117. package/lib/parsers/apex-class-dependencies.js.map +1 -0
  118. package/lib/parsers/apex-class-lexical.d.ts +3 -0
  119. package/lib/parsers/apex-class-lexical.js +101 -0
  120. package/lib/parsers/apex-class-lexical.js.map +1 -0
  121. package/lib/parsers/apex-class-names.d.ts +18 -0
  122. package/lib/parsers/apex-class-names.js +93 -0
  123. package/lib/parsers/apex-class-names.js.map +1 -0
  124. package/lib/parsers/apex-class-parser-model.d.ts +59 -0
  125. package/lib/parsers/apex-class-parser-model.js +2 -0
  126. package/lib/parsers/apex-class-parser-model.js.map +1 -0
  127. package/lib/parsers/apex-class-parser.d.ts +3 -29
  128. package/lib/parsers/apex-class-parser.js +10 -395
  129. package/lib/parsers/apex-class-parser.js.map +1 -1
  130. package/lib/parsers/apex-class-symbols.d.ts +2 -0
  131. package/lib/parsers/apex-class-symbols.js +61 -0
  132. package/lib/parsers/apex-class-symbols.js.map +1 -0
  133. package/lib/parsers/apex-dynamic-query-analysis.d.ts +2 -0
  134. package/lib/parsers/apex-dynamic-query-analysis.js +150 -0
  135. package/lib/parsers/apex-dynamic-query-analysis.js.map +1 -0
  136. package/lib/parsers/custom-metadata-dynamic-query-analysis.d.ts +2 -0
  137. package/lib/parsers/custom-metadata-dynamic-query-analysis.js +50 -0
  138. package/lib/parsers/custom-metadata-dynamic-query-analysis.js.map +1 -0
  139. package/lib/parsers/custom-metadata-parser.d.ts +2 -0
  140. package/lib/parsers/custom-metadata-parser.js +3 -0
  141. package/lib/parsers/custom-metadata-parser.js.map +1 -1
  142. package/lib/parsers/custom-object-dependency-builder.d.ts +3 -0
  143. package/lib/parsers/custom-object-dependency-builder.js +103 -0
  144. package/lib/parsers/custom-object-dependency-builder.js.map +1 -0
  145. package/lib/parsers/custom-object-parser.js +1 -208
  146. package/lib/parsers/custom-object-parser.js.map +1 -1
  147. package/lib/parsers/custom-object-reference-helpers.d.ts +4 -0
  148. package/lib/parsers/custom-object-reference-helpers.js +92 -0
  149. package/lib/parsers/custom-object-reference-helpers.js.map +1 -0
  150. package/lib/parsers/dynamic-query-reference.d.ts +16 -0
  151. package/lib/parsers/dynamic-query-reference.js +65 -0
  152. package/lib/parsers/dynamic-query-reference.js.map +1 -0
  153. package/lib/parsers/layout-action-analysis.d.ts +6 -0
  154. package/lib/parsers/layout-action-analysis.js +36 -0
  155. package/lib/parsers/layout-action-analysis.js.map +1 -0
  156. package/lib/parsers/layout-parser.js +4 -272
  157. package/lib/parsers/layout-parser.js.map +1 -1
  158. package/lib/parsers/layout-reference-analysis.d.ts +9 -0
  159. package/lib/parsers/layout-reference-analysis.js +70 -0
  160. package/lib/parsers/layout-reference-analysis.js.map +1 -0
  161. package/lib/parsers/layout-result-assembly.d.ts +5 -0
  162. package/lib/parsers/layout-result-assembly.js +35 -0
  163. package/lib/parsers/layout-result-assembly.js.map +1 -0
  164. package/lib/parsers/layout-section-analysis.d.ts +7 -0
  165. package/lib/parsers/layout-section-analysis.js +9 -0
  166. package/lib/parsers/layout-section-analysis.js.map +1 -0
  167. package/lib/parsers/lwc-code-analysis.d.ts +10 -0
  168. package/lib/parsers/lwc-code-analysis.js +161 -0
  169. package/lib/parsers/lwc-code-analysis.js.map +1 -0
  170. package/lib/parsers/lwc-metadata-analysis.d.ts +6 -0
  171. package/lib/parsers/lwc-metadata-analysis.js +112 -0
  172. package/lib/parsers/lwc-metadata-analysis.js.map +1 -0
  173. package/lib/parsers/lwc-parser.d.ts +3 -27
  174. package/lib/parsers/lwc-parser.js +6 -377
  175. package/lib/parsers/lwc-parser.js.map +1 -1
  176. package/lib/parsers/lwc-result-assembly.d.ts +4 -0
  177. package/lib/parsers/lwc-result-assembly.js +47 -0
  178. package/lib/parsers/lwc-result-assembly.js.map +1 -0
  179. package/lib/presentation/status-command-presenter.d.ts +1 -0
  180. package/lib/presentation/status-command-presenter.js +20 -0
  181. package/lib/presentation/status-command-presenter.js.map +1 -1
  182. package/lib/scanner/forceignore-parser.d.ts +1 -0
  183. package/lib/scanner/forceignore-parser.js +14 -3
  184. package/lib/scanner/forceignore-parser.js.map +1 -1
  185. package/lib/scanner/structure-validator.js +1 -1
  186. package/lib/services/metadata-scanner-service.d.ts +2 -0
  187. package/lib/services/metadata-scanner-service.js +9 -2
  188. package/lib/services/metadata-scanner-service.js.map +1 -1
  189. package/lib/services/scanners/additional-metadata-scanner.d.ts +2 -0
  190. package/lib/services/scanners/additional-metadata-scanner.js +183 -0
  191. package/lib/services/scanners/additional-metadata-scanner.js.map +1 -0
  192. package/lib/services/scanners/automation-ai-metadata-scanner.d.ts +1 -0
  193. package/lib/services/scanners/automation-ai-metadata-scanner.js +11 -0
  194. package/lib/services/scanners/automation-ai-metadata-scanner.js.map +1 -1
  195. package/lib/services/scanners/code-metadata-scanner.js +14 -1
  196. package/lib/services/scanners/code-metadata-scanner.js.map +1 -1
  197. package/lib/services/scanners/data-metadata-scanner.js +24 -8
  198. package/lib/services/scanners/data-metadata-scanner.js.map +1 -1
  199. package/lib/types/metadata.d.ts +1 -1
  200. package/lib/utils/cache-entry-serializer.d.ts +7 -0
  201. package/lib/utils/cache-entry-serializer.js +15 -0
  202. package/lib/utils/cache-entry-serializer.js.map +1 -0
  203. package/lib/utils/cache-expiry-policy.d.ts +7 -0
  204. package/lib/utils/cache-expiry-policy.js +34 -0
  205. package/lib/utils/cache-expiry-policy.js.map +1 -0
  206. package/lib/utils/cache-key-derivation.d.ts +11 -0
  207. package/lib/utils/cache-key-derivation.js +28 -0
  208. package/lib/utils/cache-key-derivation.js.map +1 -0
  209. package/lib/utils/cache-lock-lifecycle.d.ts +15 -0
  210. package/lib/utils/cache-lock-lifecycle.js +84 -0
  211. package/lib/utils/cache-lock-lifecycle.js.map +1 -0
  212. package/lib/utils/cache-logger.d.ts +8 -0
  213. package/lib/utils/cache-logger.js +19 -0
  214. package/lib/utils/cache-logger.js.map +1 -0
  215. package/lib/utils/cache-manager.d.ts +1 -2
  216. package/lib/utils/cache-manager.js +7 -253
  217. package/lib/utils/cache-manager.js.map +1 -1
  218. package/lib/utils/cache-storage.d.ts +20 -0
  219. package/lib/utils/cache-storage.js +83 -0
  220. package/lib/utils/cache-storage.js.map +1 -0
  221. package/lib/validators/xml-metadata-validator.js +1 -1
  222. package/lib/waves/priority-wave-generator.js +8 -2
  223. package/lib/waves/priority-wave-generator.js.map +1 -1
  224. package/lib/waves/test-optimizer-discovery.d.ts +12 -0
  225. package/lib/waves/test-optimizer-discovery.js +46 -0
  226. package/lib/waves/test-optimizer-discovery.js.map +1 -0
  227. package/lib/waves/test-optimizer-matching.d.ts +6 -0
  228. package/lib/waves/test-optimizer-matching.js +43 -0
  229. package/lib/waves/test-optimizer-matching.js.map +1 -0
  230. package/lib/waves/test-optimizer-model.d.ts +92 -0
  231. package/lib/waves/test-optimizer-model.js +2 -0
  232. package/lib/waves/test-optimizer-model.js.map +1 -0
  233. package/lib/waves/test-optimizer-scoring.d.ts +11 -0
  234. package/lib/waves/test-optimizer-scoring.js +53 -0
  235. package/lib/waves/test-optimizer-scoring.js.map +1 -0
  236. package/lib/waves/test-optimizer.d.ts +2 -102
  237. package/lib/waves/test-optimizer.js +9 -154
  238. package/lib/waves/test-optimizer.js.map +1 -1
  239. package/lib/waves/wave-builder.d.ts +0 -11
  240. package/lib/waves/wave-builder.js +19 -193
  241. package/lib/waves/wave-builder.js.map +1 -1
  242. package/lib/waves/wave-graph.d.ts +25 -0
  243. package/lib/waves/wave-graph.js +138 -0
  244. package/lib/waves/wave-graph.js.map +1 -0
  245. package/lib/waves/wave-metadata.d.ts +4 -0
  246. package/lib/waves/wave-metadata.js +36 -0
  247. package/lib/waves/wave-metadata.js.map +1 -0
  248. package/lib/waves/wave-priority-policy.d.ts +5 -0
  249. package/lib/waves/wave-priority-policy.js +83 -0
  250. package/lib/waves/wave-priority-policy.js.map +1 -0
  251. package/lib/waves/wave-topology.d.ts +28 -0
  252. package/lib/waves/wave-topology.js +65 -0
  253. package/lib/waves/wave-topology.js.map +1 -0
  254. package/messages/start.json +5 -5
  255. package/messages/validate.json +1 -1
  256. package/npm-shrinkwrap.json +342 -751
  257. package/oclif.lock +83 -262
  258. package/oclif.manifest.json +7 -7
  259. package/package.json +6 -2
@@ -0,0 +1,122 @@
1
+ import { buildDependency, isStandardClass } from './apex-class-names.js';
2
+ /**
3
+ * Extract static method calls
4
+ *
5
+ * @ac US-013-AC-3: Extract static method calls
6
+ */
7
+ function extractStaticMethodCalls(code) {
8
+ const staticCallPattern = /([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)\s*\.\s*[a-zA-Z][a-zA-Z0-9_]*\s*\(/g;
9
+ const matches = code.matchAll(staticCallPattern);
10
+ const dependencies = [];
11
+ const seen = new Set();
12
+ for (const match of matches) {
13
+ const className = match[1];
14
+ if (seen.has(className) || isStandardClass(className)) {
15
+ continue;
16
+ }
17
+ seen.add(className);
18
+ dependencies.push(buildDependency('static_method', className));
19
+ }
20
+ return dependencies;
21
+ }
22
+ /**
23
+ * Extract object instantiations (new ClassName())
24
+ *
25
+ * @ac US-013-AC-4: Extract object instantiations
26
+ */
27
+ function extractInstantiations(code) {
28
+ const newPattern = /new\s+([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)\s*(?:<[^>]+>)?\s*\(/g;
29
+ const matches = code.matchAll(newPattern);
30
+ const dependencies = [];
31
+ const seen = new Set();
32
+ for (const match of matches) {
33
+ const className = match[1];
34
+ if (seen.has(className) || isStandardClass(className)) {
35
+ continue;
36
+ }
37
+ seen.add(className);
38
+ dependencies.push(buildDependency('instantiation', className));
39
+ }
40
+ return dependencies;
41
+ }
42
+ /**
43
+ * Extract variable declarations
44
+ *
45
+ * @ac US-013-AC-5: Extract variable declarations
46
+ */
47
+ function extractVariableDeclarations(code) {
48
+ const varPattern = /(?:^|[;\s{])\s*([A-Z][a-zA-Z0-9_]*(?:\.[A-Z][a-zA-Z0-9_]*)*)\s+[a-z][a-zA-Z0-9_]*\s*[=;]/gm;
49
+ const matches = code.matchAll(varPattern);
50
+ const dependencies = [];
51
+ const seen = new Set();
52
+ for (const match of matches) {
53
+ const className = match[1];
54
+ if (seen.has(className) || isStandardClass(className)) {
55
+ continue;
56
+ }
57
+ seen.add(className);
58
+ dependencies.push(buildDependency('variable_declaration', className));
59
+ }
60
+ return dependencies;
61
+ }
62
+ /**
63
+ * Extract Type.forName() dynamic instantiation
64
+ *
65
+ * @ac US-013-AC-10: Handle Type.forName() dynamic instantiation
66
+ */
67
+ function extractDynamicInstantiations(code) {
68
+ const typeForNamePattern = /Type\.forName\s*\(\s*['"]([a-zA-Z][a-zA-Z0-9_.]*)['"][\s)]/g;
69
+ const matches = code.matchAll(typeForNamePattern);
70
+ const dependencies = [];
71
+ const seen = new Set();
72
+ for (const match of matches) {
73
+ const className = match[1];
74
+ if (seen.has(className) || isStandardClass(className)) {
75
+ continue;
76
+ }
77
+ seen.add(className);
78
+ dependencies.push(buildDependency('dynamic_instantiation', className));
79
+ }
80
+ return dependencies;
81
+ }
82
+ function extractSignatureDependencies(symbols) {
83
+ const dependencies = [];
84
+ if (symbols.extendsClass && !isStandardClass(symbols.extendsClass)) {
85
+ dependencies.push(buildDependency('extends', symbols.extendsClass));
86
+ }
87
+ for (const iface of symbols.implementsList) {
88
+ if (!isStandardClass(iface)) {
89
+ dependencies.push(buildDependency('implements', iface));
90
+ }
91
+ }
92
+ return dependencies;
93
+ }
94
+ function extractReferenceDependencies(context) {
95
+ return {
96
+ staticMethodCalls: extractStaticMethodCalls(context.cleanCode),
97
+ instantiations: extractInstantiations(context.cleanCode),
98
+ variableDeclarations: extractVariableDeclarations(context.cleanCode),
99
+ dynamicInstantiations: extractDynamicInstantiations(context.cleanCode),
100
+ };
101
+ }
102
+ export function flattenReferenceDependencies(referenceDependencies) {
103
+ return [
104
+ ...referenceDependencies.staticMethodCalls,
105
+ ...referenceDependencies.instantiations,
106
+ ...referenceDependencies.variableDeclarations,
107
+ ...referenceDependencies.dynamicInstantiations,
108
+ ];
109
+ }
110
+ export function collectDependencyBuckets(context, symbols) {
111
+ return {
112
+ signatureDependencies: extractSignatureDependencies(symbols),
113
+ referenceDependencies: extractReferenceDependencies(context),
114
+ };
115
+ }
116
+ export function collectDependencies(dependencyBuckets) {
117
+ return [
118
+ ...dependencyBuckets.signatureDependencies,
119
+ ...flattenReferenceDependencies(dependencyBuckets.referenceDependencies),
120
+ ];
121
+ }
122
+ //# sourceMappingURL=apex-class-dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apex-class-dependencies.js","sourceRoot":"","sources":["../../src/parsers/apex-class-dependencies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ApexLexicalContext, ApexTestMetadata } from './apex-class-parser-model.js';
2
+ export declare function createLexicalContext(filePath: string, content: string): ApexLexicalContext;
3
+ export declare function detectTestMetadata(context: ApexLexicalContext): ApexTestMetadata;
@@ -0,0 +1,101 @@
1
+ import { ParsingError } from '../errors/parsing-error.js';
2
+ const TEST_ANNOTATION_PATTERN = /(?:^|\W)@isTest\b/i;
3
+ const TEST_METHOD_PATTERN = /\btestMethod\b/i;
4
+ /**
5
+ * Remove comments from Apex code
6
+ *
7
+ * @ac US-013-AC-9: Remove comments before parsing
8
+ */
9
+ function removeComments(code) {
10
+ let result = '';
11
+ let inSingleLineComment = false;
12
+ let inMultiLineComment = false;
13
+ let stringDelimiter = null;
14
+ let escapeNext = false;
15
+ for (let index = 0; index < code.length; index++) {
16
+ const current = code[index];
17
+ const next = code[index + 1];
18
+ if (inSingleLineComment) {
19
+ if (current === '\n') {
20
+ inSingleLineComment = false;
21
+ result += current;
22
+ }
23
+ continue;
24
+ }
25
+ if (inMultiLineComment) {
26
+ if (current === '*' && next === '/') {
27
+ inMultiLineComment = false;
28
+ index += 1;
29
+ }
30
+ else if (current === '\n') {
31
+ result += '\n';
32
+ }
33
+ continue;
34
+ }
35
+ if (stringDelimiter) {
36
+ result += current;
37
+ if (escapeNext) {
38
+ escapeNext = false;
39
+ }
40
+ else if (current === '\\') {
41
+ escapeNext = true;
42
+ }
43
+ else if (current === stringDelimiter) {
44
+ stringDelimiter = null;
45
+ }
46
+ continue;
47
+ }
48
+ if (current === '"' || current === "'") {
49
+ stringDelimiter = current;
50
+ result += current;
51
+ continue;
52
+ }
53
+ if (current === '/' && next === '/') {
54
+ inSingleLineComment = true;
55
+ index += 1;
56
+ continue;
57
+ }
58
+ if (current === '/' && next === '*') {
59
+ inMultiLineComment = true;
60
+ index += 1;
61
+ continue;
62
+ }
63
+ result += current;
64
+ }
65
+ return result;
66
+ }
67
+ function extractClassNameFromFilePath(filePath) {
68
+ const classNameMatch = filePath.match(/([a-zA-Z][a-zA-Z0-9_]*)\.cls$/);
69
+ if (!classNameMatch) {
70
+ throw new ParsingError(`Invalid Apex class file name: ${filePath}`, {
71
+ filePath,
72
+ suggestion: 'Apex class files must end with .cls',
73
+ });
74
+ }
75
+ return classNameMatch[1];
76
+ }
77
+ function prepareLexicalSource(content) {
78
+ return {
79
+ originalCode: content,
80
+ cleanCode: removeComments(content),
81
+ };
82
+ }
83
+ export function createLexicalContext(filePath, content) {
84
+ const className = extractClassNameFromFilePath(filePath);
85
+ const lexicalPreparation = prepareLexicalSource(content);
86
+ return {
87
+ filePath,
88
+ className,
89
+ ...lexicalPreparation,
90
+ };
91
+ }
92
+ export function detectTestMetadata(context) {
93
+ const usesIsTestAnnotation = TEST_ANNOTATION_PATTERN.test(context.originalCode);
94
+ const usesTestMethodKeyword = TEST_METHOD_PATTERN.test(context.cleanCode);
95
+ return {
96
+ isTestClass: usesIsTestAnnotation || usesTestMethodKeyword,
97
+ usesIsTestAnnotation,
98
+ usesTestMethodKeyword,
99
+ };
100
+ }
101
+ //# sourceMappingURL=apex-class-lexical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apex-class-lexical.js","sourceRoot":"","sources":["../../src/parsers/apex-class-lexical.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ApexDependency, ApexDependencyType } from './apex-class-parser-model.js';
2
+ /**
3
+ * Check if a class is a standard Apex class
4
+ *
5
+ * @ac US-013-AC-7: Ignore standard classes (System.*, etc.)
6
+ */
7
+ export declare function isStandardClass(className: string): boolean;
8
+ /**
9
+ * Extract namespace from a fully qualified class name
10
+ *
11
+ * @ac US-013-AC-8: Handle managed packages
12
+ */
13
+ export declare function extractNamespace(className: string): {
14
+ namespace?: string;
15
+ cleanName: string;
16
+ isManagedPackage: boolean;
17
+ };
18
+ export declare function buildDependency(type: ApexDependencyType, className: string): ApexDependency;
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Standard Apex classes that should be ignored
3
+ */
4
+ const STANDARD_APEX_CLASSES = new Set([
5
+ 'System',
6
+ 'String',
7
+ 'Integer',
8
+ 'Boolean',
9
+ 'Date',
10
+ 'Datetime',
11
+ 'Time',
12
+ 'Decimal',
13
+ 'Double',
14
+ 'Long',
15
+ 'Id',
16
+ 'Blob',
17
+ 'Object',
18
+ 'List',
19
+ 'Set',
20
+ 'Map',
21
+ 'SObject',
22
+ 'Database',
23
+ 'Schema',
24
+ 'Test',
25
+ 'Limits',
26
+ 'ApexPages',
27
+ 'PageReference',
28
+ 'Trigger',
29
+ 'UserInfo',
30
+ 'Math',
31
+ 'Messaging',
32
+ 'Http',
33
+ 'HttpRequest',
34
+ 'HttpResponse',
35
+ 'JsonParser',
36
+ 'JsonGenerator',
37
+ 'JSON',
38
+ 'Pattern',
39
+ 'Matcher',
40
+ 'Exception',
41
+ 'DmlException',
42
+ 'QueryException',
43
+ 'NullPointerException',
44
+ 'TypeException',
45
+ 'CalloutException',
46
+ 'LimitException',
47
+ ]);
48
+ /**
49
+ * Check if a class is a standard Apex class
50
+ *
51
+ * @ac US-013-AC-7: Ignore standard classes (System.*, etc.)
52
+ */
53
+ export function isStandardClass(className) {
54
+ const cleanName = className.includes('.') ? className.split('.').pop() : className;
55
+ if (STANDARD_APEX_CLASSES.has(cleanName)) {
56
+ return true;
57
+ }
58
+ if (cleanName.startsWith('System.') ||
59
+ cleanName.startsWith('Database.') ||
60
+ cleanName.startsWith('Schema.') ||
61
+ cleanName.startsWith('Test.') ||
62
+ cleanName.startsWith('ApexPages.')) {
63
+ return true;
64
+ }
65
+ return false;
66
+ }
67
+ /**
68
+ * Extract namespace from a fully qualified class name
69
+ *
70
+ * @ac US-013-AC-8: Handle managed packages
71
+ */
72
+ export function extractNamespace(className) {
73
+ const namespacePattern = /^([a-zA-Z][a-zA-Z0-9_]*(?:__|\.))(.+)$/;
74
+ const match = className.match(namespacePattern);
75
+ if (match) {
76
+ const namespace = match[1].replace(/__|\.$/g, '');
77
+ const cleanName = match[2];
78
+ const isManagedPackage = match[1].includes('__');
79
+ return { namespace, cleanName, isManagedPackage };
80
+ }
81
+ return { cleanName: className, isManagedPackage: false };
82
+ }
83
+ export function buildDependency(type, className) {
84
+ const { namespace, cleanName, isManagedPackage } = extractNamespace(className);
85
+ return {
86
+ type,
87
+ className: cleanName,
88
+ namespace,
89
+ isStandard: false,
90
+ isManagedPackage,
91
+ };
92
+ }
93
+ //# sourceMappingURL=apex-class-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apex-class-names.js","sourceRoot":"","sources":["../../src/parsers/apex-class-names.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,SAAS;IACT,MAAM;IACN,UAAU;IACV,MAAM;IACN,SAAS;IACT,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,MAAM;IACN,KAAK;IACL,KAAK;IACL,SAAS;IACT,UAAU;IACV,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,WAAW;IACX,eAAe;IACf,SAAS;IACT,UAAU;IACV,MAAM;IACN,WAAW;IACX,MAAM;IACN,aAAa;IACb,cAAc;IACd,YAAY;IACZ,eAAe;IACf,MAAM;IACN,SAAS;IACT,SAAS;IACT,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,sBAAsB;IACtB,eAAe;IACf,kBAAkB;IAClB,gBAAgB;CACjB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpF,IAAI,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;QAC/B,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC;QACjC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;QAC/B,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAC7B,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAKhD,MAAM,gBAAgB,GAAG,wCAAwC,CAAC;IAClE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAEhD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAwB,EAAE,SAAiB;IACzE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE/E,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,SAAS;QACpB,SAAS;QACT,UAAU,EAAE,KAAK;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { ApexClassMetadata } from '../types/salesforce/apex.js';
2
+ /**
3
+ * Apex class dependency types
4
+ */
5
+ import type { DynamicQueryReference } from './dynamic-query-reference.js';
6
+ export type ApexDependencyType = 'extends' | 'implements' | 'static_method' | 'instantiation' | 'variable_declaration' | 'inner_class' | 'dynamic_instantiation';
7
+ /**
8
+ * Represents a dependency found in an Apex class
9
+ */
10
+ export type ApexDependency = {
11
+ type: ApexDependencyType;
12
+ className: string;
13
+ lineNumber?: number;
14
+ isStandard: boolean;
15
+ isManagedPackage: boolean;
16
+ namespace?: string;
17
+ };
18
+ /**
19
+ * Result of parsing an Apex class
20
+ * Optionally includes metadata from .cls-meta.xml
21
+ */
22
+ export type ApexParseResult = {
23
+ className: string;
24
+ namespace?: string;
25
+ extends?: string;
26
+ implements: string[];
27
+ dependencies: ApexDependency[];
28
+ dynamicQueryReferences: DynamicQueryReference[];
29
+ innerClasses: string[];
30
+ metadata?: ApexClassMetadata;
31
+ };
32
+ export type ApexLexicalContext = {
33
+ filePath: string;
34
+ className: string;
35
+ originalCode: string;
36
+ cleanCode: string;
37
+ };
38
+ export type ApexLexicalPreparation = Pick<ApexLexicalContext, 'originalCode' | 'cleanCode'>;
39
+ export type ApexSymbolExtraction = {
40
+ namespace?: string;
41
+ extendsClass?: string;
42
+ implementsList: string[];
43
+ innerClasses: string[];
44
+ };
45
+ export type ApexTestMetadata = {
46
+ isTestClass: boolean;
47
+ usesIsTestAnnotation: boolean;
48
+ usesTestMethodKeyword: boolean;
49
+ };
50
+ export type ApexReferenceDependencyExtraction = {
51
+ staticMethodCalls: ApexDependency[];
52
+ instantiations: ApexDependency[];
53
+ variableDeclarations: ApexDependency[];
54
+ dynamicInstantiations: ApexDependency[];
55
+ };
56
+ export type ApexDependencyBuckets = {
57
+ signatureDependencies: ApexDependency[];
58
+ referenceDependencies: ApexReferenceDependencyExtraction;
59
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=apex-class-parser-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apex-class-parser-model.js","sourceRoot":"","sources":["../../src/parsers/apex-class-parser-model.ts"],"names":[],"mappings":""}
@@ -1,32 +1,6 @@
1
- import type { ApexClassMetadata } from '../types/salesforce/apex.js';
2
- /**
3
- * Apex class dependency types
4
- */
5
- export type ApexDependencyType = 'extends' | 'implements' | 'static_method' | 'instantiation' | 'variable_declaration' | 'inner_class' | 'dynamic_instantiation';
6
- /**
7
- * Represents a dependency found in an Apex class
8
- */
9
- export type ApexDependency = {
10
- type: ApexDependencyType;
11
- className: string;
12
- lineNumber?: number;
13
- isStandard: boolean;
14
- isManagedPackage: boolean;
15
- namespace?: string;
16
- };
17
- /**
18
- * Result of parsing an Apex class
19
- * Optionally includes metadata from .cls-meta.xml
20
- */
21
- export type ApexParseResult = {
22
- className: string;
23
- namespace?: string;
24
- extends?: string;
25
- implements: string[];
26
- dependencies: ApexDependency[];
27
- innerClasses: string[];
28
- metadata?: ApexClassMetadata;
29
- };
1
+ import type { ApexParseResult } from './apex-class-parser-model.js';
2
+ export type { DynamicQueryReference } from './dynamic-query-reference.js';
3
+ export type { ApexDependency, ApexDependencyType, ApexParseResult } from './apex-class-parser-model.js';
30
4
  /**
31
5
  * Parse an Apex class file and extract dependencies
32
6
  *