@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,16 @@
1
+ export type DynamicQueryReferenceOrigin = 'apex-string' | 'apex-constant' | 'custom-metadata-value';
2
+ export type DynamicQueryReferenceConfidence = 'high' | 'medium' | 'low';
3
+ export type DynamicQueryReferenceSource = {
4
+ recordName?: string;
5
+ fieldName?: string;
6
+ };
7
+ export type DynamicQueryReference = {
8
+ objectName?: string;
9
+ fieldNames: string[];
10
+ rawQuery: string;
11
+ confidence: DynamicQueryReferenceConfidence;
12
+ origin: DynamicQueryReferenceOrigin;
13
+ source?: DynamicQueryReferenceSource;
14
+ };
15
+ export declare function parseSoqlReference(rawValue: string, origin: DynamicQueryReferenceOrigin, source?: DynamicQueryReferenceSource): DynamicQueryReference | null;
16
+ export declare function buildFieldListReference(objectName: string | undefined, rawFieldList: string, origin: DynamicQueryReferenceOrigin, source?: DynamicQueryReferenceSource): DynamicQueryReference | null;
@@ -0,0 +1,65 @@
1
+ export function parseSoqlReference(rawValue, origin, source) {
2
+ const query = normalizeQueryWhitespace(rawValue);
3
+ if (!/\bselect\b/i.test(query) || !/\bfrom\b/i.test(query)) {
4
+ return null;
5
+ }
6
+ const soql = /\bselect\s+(.+?)\s+from\s+([a-zA-Z][a-zA-Z0-9_]*(?:__c|__mdt)?)/i.exec(query);
7
+ if (!soql) {
8
+ return withOptionalSource({
9
+ rawQuery: query,
10
+ fieldNames: [],
11
+ confidence: 'low',
12
+ origin,
13
+ }, source);
14
+ }
15
+ const fieldNames = extractFieldNames(soql[1]);
16
+ return withOptionalSource({
17
+ objectName: soql[2],
18
+ fieldNames,
19
+ rawQuery: query,
20
+ confidence: fieldNames.length > 0 ? 'high' : 'low',
21
+ origin,
22
+ }, source);
23
+ }
24
+ export function buildFieldListReference(objectName, rawFieldList, origin, source) {
25
+ const fieldNames = extractFieldNames(rawFieldList);
26
+ if (fieldNames.length === 0) {
27
+ return null;
28
+ }
29
+ return withOptionalSource({
30
+ objectName,
31
+ fieldNames,
32
+ rawQuery: normalizeQueryWhitespace(rawFieldList),
33
+ confidence: objectName ? 'medium' : 'low',
34
+ origin,
35
+ }, source);
36
+ }
37
+ function withOptionalSource(reference, source) {
38
+ if (!source) {
39
+ return reference;
40
+ }
41
+ return {
42
+ ...reference,
43
+ source,
44
+ };
45
+ }
46
+ function extractFieldNames(selectClause) {
47
+ const fields = [];
48
+ const seen = new Set();
49
+ for (const candidate of selectClause.split(',')) {
50
+ const fieldName = candidate.trim().split(/\s+/)[0];
51
+ if (!isSimpleFieldReference(fieldName) || seen.has(fieldName)) {
52
+ continue;
53
+ }
54
+ seen.add(fieldName);
55
+ fields.push(fieldName);
56
+ }
57
+ return fields;
58
+ }
59
+ function isSimpleFieldReference(fieldName) {
60
+ return fieldName !== 'Id' && /^[a-zA-Z][a-zA-Z0-9_]*(?:__c)?$/.test(fieldName);
61
+ }
62
+ function normalizeQueryWhitespace(query) {
63
+ return query.replace(/\s+/g, ' ').trim();
64
+ }
65
+ //# sourceMappingURL=dynamic-query-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-query-reference.js","sourceRoot":"","sources":["../../src/parsers/dynamic-query-reference.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,MAAmC,EACnC,MAAoC;IAEpC,MAAM,KAAK,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,kEAAkE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5F,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,kBAAkB,CACvB;YACE,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,KAAK;YACjB,MAAM;SACP,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,OAAO,kBAAkB,CACvB;QACE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QACnB,UAAU;QACV,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;QAClD,MAAM;KACP,EACD,MAAM,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,UAA8B,EAC9B,YAAoB,EACpB,MAAmC,EACnC,MAAoC;IAEpC,MAAM,UAAU,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,kBAAkB,CACvB;QACE,UAAU;QACV,UAAU;QACV,QAAQ,EAAE,wBAAwB,CAAC,YAAY,CAAC;QAChD,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;QACzC,MAAM;KACP,EACD,MAAM,CACP,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,SAAgD,EAChD,MAAoC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAoB;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9D,SAAS;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAiB;IAC/C,OAAO,SAAS,KAAK,IAAI,IAAI,iCAAiC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { LayoutMetadata } from '../types/salesforce/layout.js';
2
+ export type LayoutActionAnalysis = {
3
+ customButtons: string[];
4
+ quickActions: string[];
5
+ };
6
+ export declare function analyzeLayoutActions(metadata: LayoutMetadata): LayoutActionAnalysis;
@@ -0,0 +1,36 @@
1
+ import { normalizeArray, uniqueDefinedStrings } from './parser-utils.js';
2
+ export function analyzeLayoutActions(metadata) {
3
+ return {
4
+ customButtons: extractCustomButtons(metadata),
5
+ quickActions: extractQuickActions(metadata),
6
+ };
7
+ }
8
+ function extractCustomButtons(metadata) {
9
+ const layoutCustomButtons = normalizeArray(metadata.customButtons);
10
+ const relatedListCustomButtons = [];
11
+ const platformActionCustomButtons = [];
12
+ const relatedLists = normalizeArray(metadata.relatedLists);
13
+ for (const relatedList of relatedLists) {
14
+ relatedListCustomButtons.push(...normalizeArray(relatedList.customButtons));
15
+ }
16
+ const actionItems = normalizeArray(metadata.platformActionList?.platformActionListItems);
17
+ for (const item of actionItems) {
18
+ if (item.actionType === 'CustomButton') {
19
+ platformActionCustomButtons.push(item.actionName);
20
+ }
21
+ }
22
+ return uniqueDefinedStrings([...layoutCustomButtons, ...relatedListCustomButtons, ...platformActionCustomButtons]);
23
+ }
24
+ function extractQuickActions(metadata) {
25
+ const quickActions = [];
26
+ const quickActionItems = normalizeArray(metadata.quickActionList?.quickActionListItems);
27
+ quickActions.push(...quickActionItems.map((item) => item.quickActionName));
28
+ const actionItems = normalizeArray(metadata.platformActionList?.platformActionListItems);
29
+ for (const item of actionItems) {
30
+ if (item.actionType === 'QuickAction') {
31
+ quickActions.push(item.actionName);
32
+ }
33
+ }
34
+ return uniqueDefinedStrings(quickActions);
35
+ }
36
+ //# sourceMappingURL=layout-action-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-action-analysis.js","sourceRoot":"","sources":["../../src/parsers/layout-action-analysis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAOzE,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,OAAO;QACL,aAAa,EAAE,oBAAoB,CAAC,QAAQ,CAAC;QAC7C,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAwB;IACpD,MAAM,mBAAmB,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACnE,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAC9C,MAAM,2BAA2B,GAAa,EAAE,CAAC;IAEjD,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,wBAAwB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;IACzF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;YACvC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC,CAAC,GAAG,mBAAmB,EAAE,GAAG,wBAAwB,EAAE,GAAG,2BAA2B,CAAC,CAAC,CAAC;AACrH,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAwB;IACnD,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IACxF,YAAY,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAE3E,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;IACzF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC5C,CAAC"}
@@ -13,7 +13,10 @@
13
13
  */
14
14
  import { readFile } from 'node:fs/promises';
15
15
  import { XMLParser } from 'fast-xml-parser';
16
- import { normalizeArray, uniqueDefinedStrings } from './parser-utils.js';
16
+ import { analyzeLayoutActions } from './layout-action-analysis.js';
17
+ import { analyzeLayoutReferences } from './layout-reference-analysis.js';
18
+ import { assembleLayoutResult } from './layout-result-assembly.js';
19
+ import { analyzeLayoutSections } from './layout-section-analysis.js';
17
20
  /**
18
21
  * Extract object name from layout filename
19
22
  * Examples:
@@ -43,277 +46,6 @@ function parseLayoutMetadata(filePath, xmlContent) {
43
46
  }
44
47
  return root.Layout;
45
48
  }
46
- function analyzeLayoutSections(metadata) {
47
- return {
48
- layoutSections: normalizeArray(metadata.layoutSections),
49
- relatedLists: normalizeArray(metadata.relatedLists),
50
- relatedObjects: uniqueDefinedStrings(normalizeArray(metadata.relatedObjects)),
51
- };
52
- }
53
- /**
54
- * Extract custom buttons from layout and related lists
55
- */
56
- function extractCustomButtons(metadata) {
57
- const layoutCustomButtons = normalizeArray(metadata.customButtons);
58
- const relatedListCustomButtons = [];
59
- const platformActionCustomButtons = [];
60
- const relatedLists = normalizeArray(metadata.relatedLists);
61
- for (const relatedList of relatedLists) {
62
- const buttons = normalizeArray(relatedList.customButtons);
63
- relatedListCustomButtons.push(...buttons);
64
- }
65
- if (metadata.platformActionList) {
66
- const actionItems = normalizeArray(metadata.platformActionList.platformActionListItems);
67
- for (const item of actionItems) {
68
- if (item.actionType === 'CustomButton') {
69
- platformActionCustomButtons.push(item.actionName);
70
- }
71
- }
72
- }
73
- return uniqueDefinedStrings([...layoutCustomButtons, ...relatedListCustomButtons, ...platformActionCustomButtons]);
74
- }
75
- function analyzeLayoutActions(metadata) {
76
- return {
77
- customButtons: extractCustomButtons(metadata),
78
- quickActions: extractQuickActions(metadata),
79
- };
80
- }
81
- /**
82
- * Extract Visualforce pages from layout sections
83
- */
84
- function extractVFPagesFromSections(sections) {
85
- const pages = [];
86
- for (const section of sections) {
87
- const columns = normalizeArray(section.layoutColumns);
88
- for (const column of columns) {
89
- const items = normalizeArray(column.layoutItems);
90
- for (const item of items) {
91
- if (item.page) {
92
- pages.push(item.page);
93
- }
94
- }
95
- }
96
- }
97
- return pages;
98
- }
99
- /**
100
- * Extract Visualforce pages from feed layout
101
- */
102
- function extractVFPagesFromFeedLayout(feedLayout) {
103
- if (!feedLayout)
104
- return [];
105
- const pages = [];
106
- const leftComponents = normalizeArray(feedLayout.leftComponents);
107
- const rightComponents = normalizeArray(feedLayout.rightComponents);
108
- for (const component of [...leftComponents, ...rightComponents]) {
109
- if (component.componentType === 'Visualforce' && component.page) {
110
- pages.push(component.page);
111
- }
112
- }
113
- return uniqueDefinedStrings(pages);
114
- }
115
- /**
116
- * Extract fields from layout sections
117
- */
118
- function extractFieldsFromSections(sections) {
119
- const fields = [];
120
- for (const section of sections) {
121
- const columns = normalizeArray(section.layoutColumns);
122
- for (const column of columns) {
123
- const items = normalizeArray(column.layoutItems);
124
- for (const item of items) {
125
- if (item.field) {
126
- fields.push(item.field);
127
- }
128
- }
129
- }
130
- }
131
- return fields;
132
- }
133
- /**
134
- * Extract fields from various layout components
135
- */
136
- function extractFields(metadata, layoutSections) {
137
- const fields = [];
138
- // From sections
139
- fields.push(...extractFieldsFromSections(layoutSections));
140
- // From related lists
141
- const relatedLists = normalizeArray(metadata.relatedLists);
142
- for (const relatedList of relatedLists) {
143
- const listFields = normalizeArray(relatedList.fields);
144
- fields.push(...listFields);
145
- }
146
- // From mini layout
147
- if (metadata.miniLayout) {
148
- const miniFields = normalizeArray(metadata.miniLayout.fields);
149
- fields.push(...miniFields);
150
- }
151
- // From summary layout
152
- if (metadata.summaryLayout) {
153
- const summaryItems = normalizeArray(metadata.summaryLayout.summaryLayoutItems);
154
- for (const item of summaryItems) {
155
- if (item.field) {
156
- fields.push(item.field);
157
- }
158
- }
159
- }
160
- const multilineFields = normalizeArray(metadata.multilineLayoutFields);
161
- fields.push(...multilineFields);
162
- const relatedContentItems = normalizeArray(metadata.relatedContent?.relatedContentItems);
163
- for (const item of relatedContentItems) {
164
- if (item.layoutItem.field) {
165
- fields.push(item.layoutItem.field);
166
- }
167
- }
168
- return uniqueDefinedStrings(fields);
169
- }
170
- /**
171
- * Extract quick actions from layout
172
- */
173
- function extractQuickActions(metadata) {
174
- const quickActions = [];
175
- if (metadata.quickActionList) {
176
- const quickActionItems = normalizeArray(metadata.quickActionList.quickActionListItems);
177
- quickActions.push(...quickActionItems.map((item) => item.quickActionName));
178
- }
179
- if (metadata.platformActionList) {
180
- const actionItems = normalizeArray(metadata.platformActionList.platformActionListItems);
181
- for (const item of actionItems) {
182
- if (item.actionType === 'QuickAction') {
183
- quickActions.push(item.actionName);
184
- }
185
- }
186
- }
187
- return uniqueDefinedStrings(quickActions);
188
- }
189
- /**
190
- * Extract canvas apps from layout sections
191
- */
192
- function extractCanvasApps(sections) {
193
- const apps = [];
194
- for (const section of sections) {
195
- const columns = normalizeArray(section.layoutColumns);
196
- for (const column of columns) {
197
- const items = normalizeArray(column.layoutItems);
198
- for (const item of items) {
199
- if (item.canvas) {
200
- apps.push(item.canvas);
201
- }
202
- }
203
- }
204
- }
205
- return uniqueDefinedStrings(apps);
206
- }
207
- /**
208
- * Extract custom links from layout
209
- */
210
- function extractCustomLinks(metadata, layoutSections) {
211
- const links = [];
212
- // From layout sections
213
- for (const section of layoutSections) {
214
- const columns = normalizeArray(section.layoutColumns);
215
- for (const column of columns) {
216
- const items = normalizeArray(column.layoutItems);
217
- for (const item of items) {
218
- if (item.customLink) {
219
- links.push(item.customLink);
220
- }
221
- }
222
- }
223
- }
224
- // From summary layout
225
- if (metadata.summaryLayout) {
226
- const summaryItems = normalizeArray(metadata.summaryLayout.summaryLayoutItems);
227
- for (const item of summaryItems) {
228
- if (item.customLink) {
229
- links.push(item.customLink);
230
- }
231
- }
232
- }
233
- if (metadata.platformActionList) {
234
- const actionItems = normalizeArray(metadata.platformActionList.platformActionListItems);
235
- for (const item of actionItems) {
236
- if (item.actionType === 'ActionLink') {
237
- links.push(item.actionName);
238
- }
239
- }
240
- }
241
- const relatedContentItems = normalizeArray(metadata.relatedContent?.relatedContentItems);
242
- for (const item of relatedContentItems) {
243
- if (item.layoutItem.customLink) {
244
- links.push(item.layoutItem.customLink);
245
- }
246
- }
247
- return uniqueDefinedStrings(links);
248
- }
249
- function extractVFPages(metadata, layoutSections) {
250
- const pages = [...extractVFPagesFromSections(layoutSections), ...extractVFPagesFromFeedLayout(metadata.feedLayout)];
251
- const relatedContentItems = normalizeArray(metadata.relatedContent?.relatedContentItems);
252
- for (const item of relatedContentItems) {
253
- if (item.layoutItem.page) {
254
- pages.push(item.layoutItem.page);
255
- }
256
- }
257
- return uniqueDefinedStrings(pages);
258
- }
259
- function extractCanvasAppsFromFeedLayout(feedLayout) {
260
- if (!feedLayout) {
261
- return [];
262
- }
263
- const components = [...normalizeArray(feedLayout.leftComponents), ...normalizeArray(feedLayout.rightComponents)];
264
- return uniqueDefinedStrings(components.filter((component) => component.componentType === 'Canvas').map((component) => component.page));
265
- }
266
- function extractCanvasAppsWithRelatedContent(metadata, layoutSections) {
267
- const apps = [...extractCanvasApps(layoutSections), ...extractCanvasAppsFromFeedLayout(metadata.feedLayout)];
268
- const relatedContentItems = normalizeArray(metadata.relatedContent?.relatedContentItems);
269
- for (const item of relatedContentItems) {
270
- if (item.layoutItem.canvas) {
271
- apps.push(item.layoutItem.canvas);
272
- }
273
- }
274
- return uniqueDefinedStrings(apps);
275
- }
276
- function analyzeLayoutReferences(metadata, sectionAnalysis) {
277
- return {
278
- fields: extractFields(metadata, sectionAnalysis.layoutSections),
279
- visualforcePages: extractVFPages(metadata, sectionAnalysis.layoutSections),
280
- canvasApps: extractCanvasAppsWithRelatedContent(metadata, sectionAnalysis.layoutSections),
281
- customLinks: extractCustomLinks(metadata, sectionAnalysis.layoutSections),
282
- };
283
- }
284
- function assembleLayoutResult(layoutName, objectName, sectionAnalysis, actionAnalysis, referenceAnalysis) {
285
- const relatedListNames = uniqueDefinedStrings(sectionAnalysis.relatedLists.map((list) => list.relatedList));
286
- return {
287
- name: layoutName,
288
- object: objectName,
289
- customButtons: actionAnalysis.customButtons,
290
- visualforcePages: referenceAnalysis.visualforcePages,
291
- fields: referenceAnalysis.fields,
292
- relatedLists: [...new Set(relatedListNames)],
293
- quickActions: actionAnalysis.quickActions,
294
- canvasApps: referenceAnalysis.canvasApps,
295
- customLinks: referenceAnalysis.customLinks,
296
- relatedObjects: sectionAnalysis.relatedObjects,
297
- dependencies: {
298
- object: objectName,
299
- customButtons: actionAnalysis.customButtons,
300
- visualforcePages: referenceAnalysis.visualforcePages,
301
- fields: referenceAnalysis.fields,
302
- relatedLists: relatedListNames,
303
- quickActions: actionAnalysis.quickActions,
304
- canvasApps: referenceAnalysis.canvasApps,
305
- customLinks: referenceAnalysis.customLinks,
306
- relatedObjects: sectionAnalysis.relatedObjects,
307
- },
308
- optionalDependencies: {
309
- customButtons: actionAnalysis.customButtons,
310
- visualforcePages: referenceAnalysis.visualforcePages,
311
- quickActions: actionAnalysis.quickActions,
312
- canvasApps: referenceAnalysis.canvasApps,
313
- customLinks: referenceAnalysis.customLinks,
314
- },
315
- };
316
- }
317
49
  /**
318
50
  * Parse a Layout metadata XML file
319
51
  *
@@ -1 +1 @@
1
- {"version":3,"file":"layout-parser.js","sourceRoot":"","sources":["../../src/parsers/layout-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout-parser.js","sourceRoot":"","sources":["../../src/parsers/layout-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAgDrE;;;;;GAKG;AACH,SAAS,2BAA2B,CAAC,UAAkB;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB,EAAE,UAAkB;IAC/D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,IAAI;QACzB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,iCAAiC,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACvG,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAqC,CAAC;IACnD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,+BAA+B,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,UAAkB;IACpE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAE7E,OAAO,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAC1G,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { LayoutMetadata } from '../types/salesforce/layout.js';
2
+ import type { LayoutSectionAnalysis } from './layout-section-analysis.js';
3
+ export type LayoutReferenceAnalysis = {
4
+ fields: string[];
5
+ visualforcePages: string[];
6
+ canvasApps: string[];
7
+ customLinks: string[];
8
+ };
9
+ export declare function analyzeLayoutReferences(metadata: LayoutMetadata, sectionAnalysis: LayoutSectionAnalysis): LayoutReferenceAnalysis;
@@ -0,0 +1,70 @@
1
+ import { normalizeArray, uniqueDefinedStrings } from './parser-utils.js';
2
+ export function analyzeLayoutReferences(metadata, sectionAnalysis) {
3
+ const sectionItems = collectSectionItems(sectionAnalysis.layoutSections);
4
+ const relatedContentItems = normalizeArray(metadata.relatedContent?.relatedContentItems).map((item) => item.layoutItem);
5
+ return {
6
+ fields: extractFields(metadata, sectionItems, relatedContentItems),
7
+ visualforcePages: extractVisualforcePages(metadata, sectionItems, relatedContentItems),
8
+ canvasApps: extractCanvasApps(metadata, sectionItems, relatedContentItems),
9
+ customLinks: extractCustomLinks(metadata, sectionItems, relatedContentItems),
10
+ };
11
+ }
12
+ function collectSectionItems(sections) {
13
+ const items = [];
14
+ for (const section of sections) {
15
+ const columns = normalizeArray(section.layoutColumns);
16
+ for (const column of columns) {
17
+ items.push(...normalizeArray(column.layoutItems));
18
+ }
19
+ }
20
+ return items;
21
+ }
22
+ function extractFields(metadata, sectionItems, relatedContentItems) {
23
+ const fields = sectionItems.map((item) => item.field);
24
+ const relatedLists = normalizeArray(metadata.relatedLists);
25
+ for (const relatedList of relatedLists) {
26
+ fields.push(...normalizeArray(relatedList.fields));
27
+ }
28
+ fields.push(...normalizeArray(metadata.miniLayout?.fields));
29
+ const summaryItems = normalizeArray(metadata.summaryLayout?.summaryLayoutItems);
30
+ for (const item of summaryItems) {
31
+ fields.push(item.field);
32
+ }
33
+ fields.push(...normalizeArray(metadata.multilineLayoutFields));
34
+ fields.push(...relatedContentItems.map((item) => item.field));
35
+ return uniqueDefinedStrings(fields);
36
+ }
37
+ function extractVisualforcePages(metadata, sectionItems, relatedContentItems) {
38
+ return uniqueDefinedStrings([
39
+ ...sectionItems.map((item) => item.page),
40
+ ...extractFeedLayoutPages(metadata.feedLayout, 'Visualforce'),
41
+ ...relatedContentItems.map((item) => item.page),
42
+ ]);
43
+ }
44
+ function extractCanvasApps(metadata, sectionItems, relatedContentItems) {
45
+ return uniqueDefinedStrings([
46
+ ...sectionItems.map((item) => item.canvas),
47
+ ...extractFeedLayoutPages(metadata.feedLayout, 'Canvas'),
48
+ ...relatedContentItems.map((item) => item.canvas),
49
+ ]);
50
+ }
51
+ function extractCustomLinks(metadata, sectionItems, relatedContentItems) {
52
+ const links = [...sectionItems.map((item) => item.customLink)];
53
+ const summaryItems = normalizeArray(metadata.summaryLayout?.summaryLayoutItems);
54
+ for (const item of summaryItems) {
55
+ links.push(item.customLink);
56
+ }
57
+ const actionItems = normalizeArray(metadata.platformActionList?.platformActionListItems);
58
+ for (const item of actionItems) {
59
+ if (item.actionType === 'ActionLink') {
60
+ links.push(item.actionName);
61
+ }
62
+ }
63
+ links.push(...relatedContentItems.map((item) => item.customLink));
64
+ return uniqueDefinedStrings(links);
65
+ }
66
+ function extractFeedLayoutPages(feedLayout, componentType) {
67
+ const components = [...normalizeArray(feedLayout?.leftComponents), ...normalizeArray(feedLayout?.rightComponents)];
68
+ return uniqueDefinedStrings(components.filter((component) => component.componentType === componentType).map((component) => component.page));
69
+ }
70
+ //# sourceMappingURL=layout-reference-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-reference-analysis.js","sourceRoot":"","sources":["../../src/parsers/layout-reference-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { LayoutParseResult } from './layout-parser.js';
2
+ import type { LayoutActionAnalysis } from './layout-action-analysis.js';
3
+ import type { LayoutReferenceAnalysis } from './layout-reference-analysis.js';
4
+ import type { LayoutSectionAnalysis } from './layout-section-analysis.js';
5
+ export declare function assembleLayoutResult(layoutName: string, objectName: string, sectionAnalysis: LayoutSectionAnalysis, actionAnalysis: LayoutActionAnalysis, referenceAnalysis: LayoutReferenceAnalysis): LayoutParseResult;
@@ -0,0 +1,35 @@
1
+ import { uniqueDefinedStrings } from './parser-utils.js';
2
+ export function assembleLayoutResult(layoutName, objectName, sectionAnalysis, actionAnalysis, referenceAnalysis) {
3
+ const relatedListNames = uniqueDefinedStrings(sectionAnalysis.relatedLists.map((list) => list.relatedList));
4
+ return {
5
+ name: layoutName,
6
+ object: objectName,
7
+ customButtons: actionAnalysis.customButtons,
8
+ visualforcePages: referenceAnalysis.visualforcePages,
9
+ fields: referenceAnalysis.fields,
10
+ relatedLists: [...new Set(relatedListNames)],
11
+ quickActions: actionAnalysis.quickActions,
12
+ canvasApps: referenceAnalysis.canvasApps,
13
+ customLinks: referenceAnalysis.customLinks,
14
+ relatedObjects: sectionAnalysis.relatedObjects,
15
+ dependencies: {
16
+ object: objectName,
17
+ customButtons: actionAnalysis.customButtons,
18
+ visualforcePages: referenceAnalysis.visualforcePages,
19
+ fields: referenceAnalysis.fields,
20
+ relatedLists: relatedListNames,
21
+ quickActions: actionAnalysis.quickActions,
22
+ canvasApps: referenceAnalysis.canvasApps,
23
+ customLinks: referenceAnalysis.customLinks,
24
+ relatedObjects: sectionAnalysis.relatedObjects,
25
+ },
26
+ optionalDependencies: {
27
+ customButtons: actionAnalysis.customButtons,
28
+ visualforcePages: referenceAnalysis.visualforcePages,
29
+ quickActions: actionAnalysis.quickActions,
30
+ canvasApps: referenceAnalysis.canvasApps,
31
+ customLinks: referenceAnalysis.customLinks,
32
+ },
33
+ };
34
+ }
35
+ //# sourceMappingURL=layout-result-assembly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-result-assembly.js","sourceRoot":"","sources":["../../src/parsers/layout-result-assembly.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,UAAkB,EAClB,eAAsC,EACtC,cAAoC,EACpC,iBAA0C;IAE1C,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5G,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,cAAc,CAAC,aAAa;QAC3C,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;QACpD,MAAM,EAAE,iBAAiB,CAAC,MAAM;QAChC,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5C,YAAY,EAAE,cAAc,CAAC,YAAY;QACzC,UAAU,EAAE,iBAAiB,CAAC,UAAU;QACxC,WAAW,EAAE,iBAAiB,CAAC,WAAW;QAC1C,cAAc,EAAE,eAAe,CAAC,cAAc;QAC9C,YAAY,EAAE;YACZ,MAAM,EAAE,UAAU;YAClB,aAAa,EAAE,cAAc,CAAC,aAAa;YAC3C,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;YACpD,MAAM,EAAE,iBAAiB,CAAC,MAAM;YAChC,YAAY,EAAE,gBAAgB;YAC9B,YAAY,EAAE,cAAc,CAAC,YAAY;YACzC,UAAU,EAAE,iBAAiB,CAAC,UAAU;YACxC,WAAW,EAAE,iBAAiB,CAAC,WAAW;YAC1C,cAAc,EAAE,eAAe,CAAC,cAAc;SAC/C;QACD,oBAAoB,EAAE;YACpB,aAAa,EAAE,cAAc,CAAC,aAAa;YAC3C,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;YACpD,YAAY,EAAE,cAAc,CAAC,YAAY;YACzC,UAAU,EAAE,iBAAiB,CAAC,UAAU;YACxC,WAAW,EAAE,iBAAiB,CAAC,WAAW;SAC3C;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { LayoutMetadata, LayoutSection } from '../types/salesforce/layout.js';
2
+ export type LayoutSectionAnalysis = {
3
+ layoutSections: LayoutSection[];
4
+ relatedLists: NonNullable<LayoutMetadata['relatedLists']>;
5
+ relatedObjects: string[];
6
+ };
7
+ export declare function analyzeLayoutSections(metadata: LayoutMetadata): LayoutSectionAnalysis;
@@ -0,0 +1,9 @@
1
+ import { normalizeArray, uniqueDefinedStrings } from './parser-utils.js';
2
+ export function analyzeLayoutSections(metadata) {
3
+ return {
4
+ layoutSections: normalizeArray(metadata.layoutSections),
5
+ relatedLists: normalizeArray(metadata.relatedLists),
6
+ relatedObjects: uniqueDefinedStrings(normalizeArray(metadata.relatedObjects)),
7
+ };
8
+ }
9
+ //# sourceMappingURL=layout-section-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-section-analysis.js","sourceRoot":"","sources":["../../src/parsers/layout-section-analysis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAQzE,MAAM,UAAU,qBAAqB,CAAC,QAAwB;IAC5D,OAAO;QACL,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC;QACvD,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;QACnD,cAAc,EAAE,oBAAoB,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;KAC9E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type LwcCodeAnalysis = {
2
+ cleanCode: string;
3
+ isTypeScript: boolean;
4
+ apexImports: string[];
5
+ lwcImports: string[];
6
+ wireAdapters: string[];
7
+ apiProperties: string[];
8
+ navigationRefs: string[];
9
+ };
10
+ export declare function analyzeComponentCode(jsCode: string): LwcCodeAnalysis;