@jterrats/smart-deployment 1.0.3 → 1.0.4

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 (257) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +6 -0
  3. package/lib/ai/wave-validation-service.d.ts +21 -0
  4. package/lib/ai/wave-validation-service.js +189 -114
  5. package/lib/ai/wave-validation-service.js.map +1 -1
  6. package/lib/analysis/analysis-reporter.d.ts +12 -0
  7. package/lib/analysis/analysis-reporter.js +61 -0
  8. package/lib/analysis/analysis-reporter.js.map +1 -1
  9. package/lib/analysis/analyze-artifact-service.d.ts +25 -0
  10. package/lib/analysis/analyze-artifact-service.js +50 -0
  11. package/lib/analysis/analyze-artifact-service.js.map +1 -0
  12. package/lib/analysis/analyze-context-service.d.ts +25 -0
  13. package/lib/analysis/analyze-context-service.js +28 -0
  14. package/lib/analysis/analyze-context-service.js.map +1 -0
  15. package/lib/analysis/project-analysis-service.d.ts +48 -0
  16. package/lib/analysis/project-analysis-service.js +134 -0
  17. package/lib/analysis/project-analysis-service.js.map +1 -0
  18. package/lib/commands/analyze.d.ts +0 -2
  19. package/lib/commands/analyze.js +31 -162
  20. package/lib/commands/analyze.js.map +1 -1
  21. package/lib/commands/config.d.ts +0 -4
  22. package/lib/commands/config.js +25 -95
  23. package/lib/commands/config.js.map +1 -1
  24. package/lib/commands/resume.js +6 -16
  25. package/lib/commands/resume.js.map +1 -1
  26. package/lib/commands/start.d.ts +0 -11
  27. package/lib/commands/start.js +38 -550
  28. package/lib/commands/start.js.map +1 -1
  29. package/lib/commands/status.js +36 -12
  30. package/lib/commands/status.js.map +1 -1
  31. package/lib/commands/validate.d.ts +3 -0
  32. package/lib/commands/validate.js +5 -7
  33. package/lib/commands/validate.js.map +1 -1
  34. package/lib/config/config-mutation-service.d.ts +21 -0
  35. package/lib/config/config-mutation-service.js +61 -0
  36. package/lib/config/config-mutation-service.js.map +1 -0
  37. package/lib/dependencies/circular-dependency-detector.d.ts +5 -0
  38. package/lib/dependencies/circular-dependency-detector.js +67 -72
  39. package/lib/dependencies/circular-dependency-detector.js.map +1 -1
  40. package/lib/dependencies/dependency-depth-calculator.d.ts +28 -0
  41. package/lib/dependencies/dependency-depth-calculator.js +86 -39
  42. package/lib/dependencies/dependency-depth-calculator.js.map +1 -1
  43. package/lib/dependencies/dependency-graph-builder.d.ts +45 -13
  44. package/lib/dependencies/dependency-graph-builder.js +228 -123
  45. package/lib/dependencies/dependency-graph-builder.js.map +1 -1
  46. package/lib/dependencies/dependency-impact-analyzer.d.ts +13 -0
  47. package/lib/dependencies/dependency-impact-analyzer.js +146 -102
  48. package/lib/dependencies/dependency-impact-analyzer.js.map +1 -1
  49. package/lib/dependencies/dependency-merger.d.ts +10 -0
  50. package/lib/dependencies/dependency-merger.js +123 -61
  51. package/lib/dependencies/dependency-merger.js.map +1 -1
  52. package/lib/dependencies/dependency-resolver.d.ts +34 -9
  53. package/lib/dependencies/dependency-resolver.js +181 -112
  54. package/lib/dependencies/dependency-resolver.js.map +1 -1
  55. package/lib/dependencies/dependency-semantics.d.ts +20 -0
  56. package/lib/dependencies/dependency-semantics.js +55 -0
  57. package/lib/dependencies/dependency-semantics.js.map +1 -0
  58. package/lib/dependencies/graph-visualizer.d.ts +6 -1
  59. package/lib/dependencies/graph-visualizer.js +38 -4
  60. package/lib/dependencies/graph-visualizer.js.map +1 -1
  61. package/lib/dependencies/heuristic-inference.d.ts +2 -53
  62. package/lib/dependencies/heuristic-inference.js +8 -317
  63. package/lib/dependencies/heuristic-inference.js.map +1 -1
  64. package/lib/dependencies/heuristic-patterns.d.ts +14 -0
  65. package/lib/dependencies/heuristic-patterns.js +247 -0
  66. package/lib/dependencies/heuristic-patterns.js.map +1 -0
  67. package/lib/deployment/cycle-remediation-runner.d.ts +36 -0
  68. package/lib/deployment/cycle-remediation-runner.js +262 -0
  69. package/lib/deployment/cycle-remediation-runner.js.map +1 -0
  70. package/lib/deployment/deployment-context-service.d.ts +24 -0
  71. package/lib/deployment/deployment-context-service.js +17 -0
  72. package/lib/deployment/deployment-context-service.js.map +1 -0
  73. package/lib/deployment/deployment-runner.d.ts +37 -0
  74. package/lib/deployment/deployment-runner.js +94 -0
  75. package/lib/deployment/deployment-runner.js.map +1 -0
  76. package/lib/deployment/deployment-status-service.d.ts +5 -0
  77. package/lib/deployment/deployment-status-service.js +39 -18
  78. package/lib/deployment/deployment-status-service.js.map +1 -1
  79. package/lib/deployment/deployment-validation-service.d.ts +5 -2
  80. package/lib/deployment/deployment-validation-service.js +48 -45
  81. package/lib/deployment/deployment-validation-service.js.map +1 -1
  82. package/lib/deployment/resume-deployment-service.d.ts +14 -0
  83. package/lib/deployment/resume-deployment-service.js +25 -0
  84. package/lib/deployment/resume-deployment-service.js.map +1 -0
  85. package/lib/deployment/start-execution-service.d.ts +44 -0
  86. package/lib/deployment/start-execution-service.js +94 -0
  87. package/lib/deployment/start-execution-service.js.map +1 -0
  88. package/lib/deployment/test-executor.d.ts +60 -1
  89. package/lib/deployment/test-executor.js +180 -12
  90. package/lib/deployment/test-executor.js.map +1 -1
  91. package/lib/deployment/test-plan-service.d.ts +8 -0
  92. package/lib/deployment/test-plan-service.js +26 -0
  93. package/lib/deployment/test-plan-service.js.map +1 -0
  94. package/lib/deployment/wave-manifest-service.d.ts +11 -0
  95. package/lib/deployment/wave-manifest-service.js +41 -0
  96. package/lib/deployment/wave-manifest-service.js.map +1 -0
  97. package/lib/parsers/apex-class-parser.js +180 -98
  98. package/lib/parsers/apex-class-parser.js.map +1 -1
  99. package/lib/parsers/apex-trigger-parser.js +56 -7
  100. package/lib/parsers/apex-trigger-parser.js.map +1 -1
  101. package/lib/parsers/aura-parser.js +2 -2
  102. package/lib/parsers/aura-parser.js.map +1 -1
  103. package/lib/parsers/bot-parser.js +31 -4
  104. package/lib/parsers/bot-parser.js.map +1 -1
  105. package/lib/parsers/custom-metadata-parser.js +37 -3
  106. package/lib/parsers/custom-metadata-parser.js.map +1 -1
  107. package/lib/parsers/custom-object-parser.js +284 -150
  108. package/lib/parsers/custom-object-parser.js.map +1 -1
  109. package/lib/parsers/email-template-parser.js +115 -58
  110. package/lib/parsers/email-template-parser.js.map +1 -1
  111. package/lib/parsers/flexipage-parser.js +41 -16
  112. package/lib/parsers/flexipage-parser.js.map +1 -1
  113. package/lib/parsers/flow-parser.js +73 -63
  114. package/lib/parsers/flow-parser.js.map +1 -1
  115. package/lib/parsers/genai-prompt-parser.js +16 -4
  116. package/lib/parsers/genai-prompt-parser.js.map +1 -1
  117. package/lib/parsers/layout-parser.d.ts +11 -0
  118. package/lib/parsers/layout-parser.js +143 -68
  119. package/lib/parsers/layout-parser.js.map +1 -1
  120. package/lib/parsers/lwc-parser.d.ts +0 -9
  121. package/lib/parsers/lwc-parser.js +245 -100
  122. package/lib/parsers/lwc-parser.js.map +1 -1
  123. package/lib/parsers/parser-utils.d.ts +3 -0
  124. package/lib/parsers/parser-utils.js +16 -0
  125. package/lib/parsers/parser-utils.js.map +1 -0
  126. package/lib/parsers/permission-set-parser.d.ts +6 -0
  127. package/lib/parsers/permission-set-parser.js +31 -40
  128. package/lib/parsers/permission-set-parser.js.map +1 -1
  129. package/lib/parsers/profile-parser.d.ts +13 -0
  130. package/lib/parsers/profile-parser.js +39 -34
  131. package/lib/parsers/profile-parser.js.map +1 -1
  132. package/lib/parsers/visualforce-parser.js +2 -1
  133. package/lib/parsers/visualforce-parser.js.map +1 -1
  134. package/lib/presentation/analyze-command-presenter.d.ts +10 -0
  135. package/lib/presentation/analyze-command-presenter.js +30 -0
  136. package/lib/presentation/analyze-command-presenter.js.map +1 -0
  137. package/lib/presentation/config-command-presenter.d.ts +15 -0
  138. package/lib/presentation/config-command-presenter.js +50 -0
  139. package/lib/presentation/config-command-presenter.js.map +1 -0
  140. package/lib/presentation/project-analysis-presenter.d.ts +9 -0
  141. package/lib/presentation/project-analysis-presenter.js +9 -0
  142. package/lib/presentation/project-analysis-presenter.js.map +1 -0
  143. package/lib/presentation/resume-command-presenter.d.ts +7 -0
  144. package/lib/presentation/resume-command-presenter.js +12 -0
  145. package/lib/presentation/resume-command-presenter.js.map +1 -0
  146. package/lib/presentation/start-command-presenter.d.ts +15 -0
  147. package/lib/presentation/start-command-presenter.js +29 -0
  148. package/lib/presentation/start-command-presenter.js.map +1 -0
  149. package/lib/presentation/status-command-presenter.d.ts +7 -0
  150. package/lib/presentation/status-command-presenter.js +16 -0
  151. package/lib/presentation/status-command-presenter.js.map +1 -0
  152. package/lib/presentation/validate-command-presenter.d.ts +9 -0
  153. package/lib/presentation/validate-command-presenter.js +50 -0
  154. package/lib/presentation/validate-command-presenter.js.map +1 -0
  155. package/lib/services/metadata-scanner-service.d.ts +8 -12
  156. package/lib/services/metadata-scanner-service.js +55 -533
  157. package/lib/services/metadata-scanner-service.js.map +1 -1
  158. package/lib/services/scanners/automation-ai-metadata-scanner.d.ts +4 -0
  159. package/lib/services/scanners/automation-ai-metadata-scanner.js +61 -0
  160. package/lib/services/scanners/automation-ai-metadata-scanner.js.map +1 -0
  161. package/lib/services/scanners/code-metadata-scanner.d.ts +23 -0
  162. package/lib/services/scanners/code-metadata-scanner.js +149 -0
  163. package/lib/services/scanners/code-metadata-scanner.js.map +1 -0
  164. package/lib/services/scanners/data-metadata-scanner.d.ts +3 -0
  165. package/lib/services/scanners/data-metadata-scanner.js +82 -0
  166. package/lib/services/scanners/data-metadata-scanner.js.map +1 -0
  167. package/lib/services/scanners/experience-metadata-scanner.d.ts +5 -0
  168. package/lib/services/scanners/experience-metadata-scanner.js +123 -0
  169. package/lib/services/scanners/experience-metadata-scanner.js.map +1 -0
  170. package/lib/services/scanners/scanner-runtime.d.ts +11 -0
  171. package/lib/services/scanners/scanner-runtime.js +115 -0
  172. package/lib/services/scanners/scanner-runtime.js.map +1 -0
  173. package/lib/services/scanners/security-metadata-scanner.d.ts +3 -0
  174. package/lib/services/scanners/security-metadata-scanner.js +71 -0
  175. package/lib/services/scanners/security-metadata-scanner.js.map +1 -0
  176. package/lib/types/dependency.d.ts +11 -1
  177. package/lib/types/metadata.d.ts +17 -0
  178. package/lib/types/salesforce/flow/actions.d.ts +108 -0
  179. package/lib/types/salesforce/flow/actions.js +2 -0
  180. package/lib/types/salesforce/flow/actions.js.map +1 -0
  181. package/lib/types/salesforce/flow/common.d.ts +36 -0
  182. package/lib/types/salesforce/flow/common.js +5 -0
  183. package/lib/types/salesforce/flow/common.js.map +1 -0
  184. package/lib/types/salesforce/flow/metadata.d.ts +37 -0
  185. package/lib/types/salesforce/flow/metadata.js +2 -0
  186. package/lib/types/salesforce/flow/metadata.js.map +1 -0
  187. package/lib/types/salesforce/flow/records.d.ts +38 -0
  188. package/lib/types/salesforce/flow/records.js +2 -0
  189. package/lib/types/salesforce/flow/records.js.map +1 -0
  190. package/lib/types/salesforce/flow/resources.d.ts +44 -0
  191. package/lib/types/salesforce/flow/resources.js +2 -0
  192. package/lib/types/salesforce/flow/resources.js.map +1 -0
  193. package/lib/types/salesforce/flow/screens.d.ts +56 -0
  194. package/lib/types/salesforce/flow/screens.js +2 -0
  195. package/lib/types/salesforce/flow/screens.js.map +1 -0
  196. package/lib/types/salesforce/flow/start.d.ts +24 -0
  197. package/lib/types/salesforce/flow/start.js +2 -0
  198. package/lib/types/salesforce/flow/start.js.map +1 -0
  199. package/lib/types/salesforce/flow.d.ts +9 -514
  200. package/lib/types/salesforce/flow.js +1 -1
  201. package/lib/types/salesforce/object/core.d.ts +68 -0
  202. package/lib/types/salesforce/object/core.js +5 -0
  203. package/lib/types/salesforce/object/core.js.map +1 -0
  204. package/lib/types/salesforce/object/field.d.ts +155 -0
  205. package/lib/types/salesforce/object/field.js +5 -0
  206. package/lib/types/salesforce/object/field.js.map +1 -0
  207. package/lib/types/salesforce/object/filter.d.ts +16 -0
  208. package/lib/types/salesforce/object/filter.js +5 -0
  209. package/lib/types/salesforce/object/filter.js.map +1 -0
  210. package/lib/types/salesforce/object/policy.d.ts +27 -0
  211. package/lib/types/salesforce/object/policy.js +5 -0
  212. package/lib/types/salesforce/object/policy.js.map +1 -0
  213. package/lib/types/salesforce/object/record.d.ts +44 -0
  214. package/lib/types/salesforce/object/record.js +5 -0
  215. package/lib/types/salesforce/object/record.js.map +1 -0
  216. package/lib/types/salesforce/object/view.d.ts +71 -0
  217. package/lib/types/salesforce/object/view.js +5 -0
  218. package/lib/types/salesforce/object/view.js.map +1 -0
  219. package/lib/types/salesforce/object/weblink.d.ts +70 -0
  220. package/lib/types/salesforce/object/weblink.js +5 -0
  221. package/lib/types/salesforce/object/weblink.js.map +1 -0
  222. package/lib/types/salesforce/object.d.ts +7 -423
  223. package/lib/types/salesforce/object.js +7 -1
  224. package/lib/types/salesforce/object.js.map +1 -1
  225. package/lib/utils/cache-manager.d.ts +16 -15
  226. package/lib/utils/cache-manager.js +290 -188
  227. package/lib/utils/cache-manager.js.map +1 -1
  228. package/lib/utils/logger.d.ts +8 -0
  229. package/lib/utils/logger.js +82 -69
  230. package/lib/utils/logger.js.map +1 -1
  231. package/lib/validators/xml/xml-reference-rules.d.ts +3 -0
  232. package/lib/validators/xml/xml-reference-rules.js +173 -0
  233. package/lib/validators/xml/xml-reference-rules.js.map +1 -0
  234. package/lib/validators/xml/xml-report-formatter.d.ts +2 -0
  235. package/lib/validators/xml/xml-report-formatter.js +47 -0
  236. package/lib/validators/xml/xml-report-formatter.js.map +1 -0
  237. package/lib/validators/xml/xml-schema-rules.d.ts +3 -0
  238. package/lib/validators/xml/xml-schema-rules.js +75 -0
  239. package/lib/validators/xml/xml-schema-rules.js.map +1 -0
  240. package/lib/validators/xml/xml-validation-types.d.ts +25 -0
  241. package/lib/validators/xml/xml-validation-types.js +2 -0
  242. package/lib/validators/xml/xml-validation-types.js.map +1 -0
  243. package/lib/validators/xml-metadata-validator.d.ts +2 -63
  244. package/lib/validators/xml-metadata-validator.js +7 -338
  245. package/lib/validators/xml-metadata-validator.js.map +1 -1
  246. package/lib/waves/test-optimizer.d.ts +13 -0
  247. package/lib/waves/test-optimizer.js +124 -63
  248. package/lib/waves/test-optimizer.js.map +1 -1
  249. package/lib/waves/wave-builder.d.ts +17 -21
  250. package/lib/waves/wave-builder.js +199 -135
  251. package/lib/waves/wave-builder.js.map +1 -1
  252. package/lib/waves/wave-splitter.d.ts +12 -8
  253. package/lib/waves/wave-splitter.js +156 -115
  254. package/lib/waves/wave-splitter.js.map +1 -1
  255. package/npm-shrinkwrap.json +2 -2
  256. package/oclif.manifest.json +1 -1
  257. package/package.json +1 -1
@@ -1,15 +1,68 @@
1
1
  import { getLogger } from '../utils/logger.js';
2
2
  import { ParsingError } from '../errors/parsing-error.js';
3
+ import { parseXml } from '../utils/xml.js';
4
+ import { normalizeArray } from './parser-utils.js';
3
5
  const logger = getLogger('LWCParser');
4
6
  /**
5
7
  * Remove comments from JavaScript/TypeScript code
6
8
  */
7
9
  function removeComments(code) {
8
- // Remove single-line comments (//)
9
- let cleaned = code.replace(/\/\/.*$/gm, '');
10
- // Remove multi-line comments (/* ... */)
11
- cleaned = cleaned.replace(/\/\*[\s\S]*?\*\//g, '');
12
- return cleaned;
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 === "'" || 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;
13
66
  }
14
67
  /**
15
68
  * Extract Apex imports
@@ -71,8 +124,7 @@ function extractWireAdapters(code) {
71
124
  * @ac US-016-AC-4: Extract @api property dependencies
72
125
  */
73
126
  function extractApiProperties(code) {
74
- // Pattern: @api propertyName
75
- const apiPattern = /@api\s+([a-zA-Z][a-zA-Z0-9_]*)/g;
127
+ const apiPattern = /@api\s+(?:(?:get|set)\s+)?([a-zA-Z][a-zA-Z0-9_]*)/g;
76
128
  const matches = code.matchAll(apiPattern);
77
129
  const properties = [];
78
130
  for (const match of matches) {
@@ -121,44 +173,194 @@ function isTypeScriptComponent(jsCode) {
121
173
  ];
122
174
  return tsPatterns.some((pattern) => pattern.test(jsCode));
123
175
  }
176
+ function parseBoolean(value) {
177
+ if (typeof value === 'boolean') {
178
+ return value;
179
+ }
180
+ if (typeof value === 'string') {
181
+ return value.trim().toLowerCase() === 'true';
182
+ }
183
+ return undefined;
184
+ }
185
+ function parseOptionalNumber(value) {
186
+ if (typeof value === 'number') {
187
+ return Number.isNaN(value) ? undefined : value;
188
+ }
189
+ if (typeof value === 'string' && value.trim() !== '') {
190
+ const parsed = Number(value);
191
+ return Number.isNaN(parsed) ? undefined : parsed;
192
+ }
193
+ return undefined;
194
+ }
195
+ function createCodeAnalysisContext(jsCode) {
196
+ const cleanCode = removeComments(jsCode);
197
+ return {
198
+ cleanCode,
199
+ isTypeScript: isTypeScriptComponent(cleanCode),
200
+ };
201
+ }
202
+ function extractImports(code) {
203
+ return {
204
+ apexImports: extractApexImports(code),
205
+ lwcImports: extractLWCImports(code),
206
+ };
207
+ }
208
+ function extractDecoratorsAndProperties(code) {
209
+ return {
210
+ wireAdapters: extractWireAdapters(code),
211
+ apiProperties: extractApiProperties(code),
212
+ navigationRefs: extractNavigationRefs(code),
213
+ };
214
+ }
215
+ function analyzeComponentCode(jsCode) {
216
+ const context = createCodeAnalysisContext(jsCode);
217
+ const imports = extractImports(context.cleanCode);
218
+ const decorators = extractDecoratorsAndProperties(context.cleanCode);
219
+ return {
220
+ ...context,
221
+ ...imports,
222
+ ...decorators,
223
+ };
224
+ }
225
+ function interpretProperty(property) {
226
+ if (property['@_name'] === undefined || property['@_type'] === undefined) {
227
+ return undefined;
228
+ }
229
+ return {
230
+ name: property['@_name'],
231
+ type: property['@_type'],
232
+ default: property['@_default'],
233
+ required: parseBoolean(property['@_required']),
234
+ label: property['@_label'],
235
+ description: property['@_description'],
236
+ placeholder: property['@_placeholder'],
237
+ role: property['@_role'],
238
+ datasource: property['@_datasource'],
239
+ min: parseOptionalNumber(property['@_min']),
240
+ max: parseOptionalNumber(property['@_max']),
241
+ };
242
+ }
243
+ function interpretSupportedFormFactors(targetConfig) {
244
+ if (targetConfig.supportedFormFactors === undefined) {
245
+ return undefined;
246
+ }
247
+ return normalizeArray(targetConfig.supportedFormFactors.supportedFormFactor)
248
+ .filter((formFactor) => formFactor['@_type'] !== undefined)
249
+ .map((formFactor) => ({
250
+ type: formFactor['@_type'],
251
+ }));
252
+ }
253
+ function interpretTargetConfig(targetConfig) {
254
+ const properties = normalizeArray(targetConfig.property)
255
+ .map(interpretProperty)
256
+ .filter((property) => property !== undefined);
257
+ return {
258
+ targets: targetConfig['@_targets'] ?? '',
259
+ configurationEditor: targetConfig.configurationEditor,
260
+ objects: targetConfig.objects === undefined
261
+ ? undefined
262
+ : normalizeArray(targetConfig.objects.object).map((object) => ({ object })),
263
+ property: properties,
264
+ supportedFormFactors: interpretSupportedFormFactors(targetConfig),
265
+ };
266
+ }
267
+ function interpretMetadataBundle(metadata) {
268
+ const targets = normalizeArray(metadata.targets?.target);
269
+ const targetConfigs = normalizeArray(metadata.targetConfigs?.targetConfig).map(interpretTargetConfig);
270
+ const capabilities = normalizeArray(metadata.capabilities?.capability);
271
+ return {
272
+ apiVersion: metadata.apiVersion !== undefined ? String(metadata.apiVersion) : '',
273
+ description: metadata.description,
274
+ isExposed: parseBoolean(metadata.isExposed) ?? false,
275
+ masterLabel: metadata.masterLabel,
276
+ targets: targets.length > 0 ? { target: targets } : undefined,
277
+ targetConfigs: targetConfigs.length > 0 ? targetConfigs : undefined,
278
+ capabilities: capabilities.length > 0 ? capabilities : undefined,
279
+ };
280
+ }
124
281
  /**
125
282
  * Parse LWC js-meta.xml file
126
283
  *
127
284
  * @ac US-016-AC-8: Parse js-meta.xml correctly
128
- * @deprecated - Will be refactored to return LWCMetadata type
129
- *
130
- * TODO: Refactor this function to properly parse and return LWCMetadata type
131
- * Currently commented out to avoid unused variable warnings during refactoring
132
285
  */
133
- /*
134
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
135
- function parseMetadataXml(metadataContent: string): { exposedAs?: string } {
136
- try {
137
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unnecessary-type-assertion
138
- const parsed = parseXml(metadataContent) as any;
139
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
286
+ function parseMetadataXml(metadataContent) {
287
+ const parsed = parseXml(metadataContent);
140
288
  const metadata = parsed.LightningComponentBundle;
141
-
142
289
  if (!metadata) {
143
- return {};
290
+ return undefined;
291
+ }
292
+ return interpretMetadataBundle(metadata);
293
+ }
294
+ function analyzeMetadataXml(componentName, metadataXml) {
295
+ if (!metadataXml) {
296
+ return {
297
+ hasMetadataXml: false,
298
+ metadata: undefined,
299
+ };
300
+ }
301
+ try {
302
+ return {
303
+ hasMetadataXml: true,
304
+ metadata: parseMetadataXml(metadataXml),
305
+ };
144
306
  }
145
-
146
- // Extract targets (where the component is exposed)
147
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
148
- const targets = metadata.targets;
149
- if (targets) {
150
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
151
- const targetList = Array.isArray(targets.target) ? targets.target : targets.target ? [targets.target] : [];
152
- // Targets are extracted but we don't use exposedAs anymore
153
- // Metadata will be parsed separately
307
+ catch (error) {
308
+ logger.warn(`Failed to parse js-meta.xml for ${componentName}`, {
309
+ componentName,
310
+ error: error instanceof Error ? error.message : String(error),
311
+ });
312
+ return {
313
+ hasMetadataXml: true,
314
+ metadata: undefined,
315
+ };
154
316
  }
155
-
156
- return {};
157
- } catch {
158
- return {};
159
- }
160
317
  }
161
- */
318
+ function buildDependencies(analysis) {
319
+ return [
320
+ ...analysis.apexImports.map((name) => ({
321
+ type: 'apex_import',
322
+ name,
323
+ source: '@salesforce/apex',
324
+ isTypeScript: analysis.isTypeScript,
325
+ })),
326
+ ...analysis.lwcImports.map((name) => ({
327
+ type: 'lwc_import',
328
+ name,
329
+ source: 'c',
330
+ isTypeScript: analysis.isTypeScript,
331
+ })),
332
+ ...analysis.wireAdapters.map((name) => ({
333
+ type: 'wire_adapter',
334
+ name,
335
+ isTypeScript: analysis.isTypeScript,
336
+ })),
337
+ ...analysis.apiProperties.map((name) => ({
338
+ type: 'api_property',
339
+ name,
340
+ isTypeScript: analysis.isTypeScript,
341
+ })),
342
+ ...analysis.navigationRefs.map((name) => ({
343
+ type: 'navigation',
344
+ name,
345
+ isTypeScript: analysis.isTypeScript,
346
+ })),
347
+ ];
348
+ }
349
+ function assembleParseResult(componentName, codeAnalysis, metadataAnalysis) {
350
+ const dependencies = buildDependencies(codeAnalysis);
351
+ return {
352
+ componentName,
353
+ isTypeScript: codeAnalysis.isTypeScript,
354
+ apexImports: codeAnalysis.apexImports,
355
+ lwcImports: codeAnalysis.lwcImports,
356
+ wireAdapters: codeAnalysis.wireAdapters,
357
+ apiProperties: codeAnalysis.apiProperties,
358
+ navigationRefs: codeAnalysis.navigationRefs,
359
+ dependencies,
360
+ hasMetadataXml: metadataAnalysis.hasMetadataXml,
361
+ metadata: metadataAnalysis.metadata,
362
+ };
363
+ }
162
364
  /**
163
365
  * Parse a Lightning Web Component and extract dependencies
164
366
  *
@@ -182,72 +384,15 @@ function parseMetadataXml(metadataContent: string): { exposedAs?: string } {
182
384
  export function parseLWC(componentName, jsCode, metadataXml) {
183
385
  try {
184
386
  logger.debug(`Parsing LWC: ${componentName}`);
185
- // Remove comments
186
- const cleanCode = removeComments(jsCode);
187
- // Detect TypeScript
188
- const isTS = isTypeScriptComponent(cleanCode);
189
- // Extract dependencies
190
- const apexImports = extractApexImports(cleanCode);
191
- const lwcImports = extractLWCImports(cleanCode);
192
- const wireAdapters = extractWireAdapters(cleanCode);
193
- const apiProperties = extractApiProperties(cleanCode);
194
- const navigationRefs = extractNavigationRefs(cleanCode);
195
- // Parse metadata XML if provided
196
- let metadata;
197
- let hasMetadataXml = false;
198
- if (metadataXml) {
199
- hasMetadataXml = true;
200
- // Parse the metadata but we don't have a parseMetadataXml that returns LWCMetadata yet
201
- // For now, we'll skip this part
202
- }
203
- // Build dependencies array
204
- const dependencies = [
205
- ...apexImports.map((name) => ({
206
- type: 'apex_import',
207
- name,
208
- source: '@salesforce/apex',
209
- isTypeScript: isTS,
210
- })),
211
- ...lwcImports.map((name) => ({
212
- type: 'lwc_import',
213
- name,
214
- source: 'c',
215
- isTypeScript: isTS,
216
- })),
217
- ...wireAdapters.map((name) => ({
218
- type: 'wire_adapter',
219
- name,
220
- isTypeScript: isTS,
221
- })),
222
- ...apiProperties.map((name) => ({
223
- type: 'api_property',
224
- name,
225
- isTypeScript: isTS,
226
- })),
227
- ...navigationRefs.map((name) => ({
228
- type: 'navigation',
229
- name,
230
- isTypeScript: isTS,
231
- })),
232
- ];
233
- const result = {
234
- componentName,
235
- isTypeScript: isTS,
236
- apexImports,
237
- lwcImports,
238
- wireAdapters,
239
- apiProperties,
240
- navigationRefs,
241
- dependencies,
242
- hasMetadataXml,
243
- metadata,
244
- };
387
+ const codeAnalysis = analyzeComponentCode(jsCode);
388
+ const metadataAnalysis = analyzeMetadataXml(componentName, metadataXml);
389
+ const result = assembleParseResult(componentName, codeAnalysis, metadataAnalysis);
245
390
  logger.debug(`Parsed LWC: ${componentName}`, {
246
- isTypeScript: isTS,
247
- apexImports: apexImports.length,
248
- lwcImports: lwcImports.length,
249
- wireAdapters: wireAdapters.length,
250
- dependencies: dependencies.length,
391
+ isTypeScript: result.isTypeScript,
392
+ apexImports: result.apexImports.length,
393
+ lwcImports: result.lwcImports.length,
394
+ wireAdapters: result.wireAdapters.length,
395
+ dependencies: result.dependencies.length,
251
396
  });
252
397
  return result;
253
398
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lwc-parser.js","sourceRoot":"","sources":["../../src/parsers/lwc-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;AAkCtC;;GAEG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,mCAAmC;IACnC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAE5C,yCAAyC;IACzC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAEnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,0EAA0E;IAC1E,MAAM,iBAAiB,GAAG,0FAA0F,CAAC;IACrH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACjD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC;QAC9D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,uDAAuD;IACvD,MAAM,gBAAgB,GAAG,yEAAyE,CAAC;IACnG,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,uCAAuC;IACvC,MAAM,WAAW,GAAG,uCAAuC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,6BAA6B;IAC7B,MAAM,UAAU,GAAG,iCAAiC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,2BAA2B;IAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IAED,0CAA0C;IAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxC,CAAC;IAED,kEAAkE;IAClE,MAAM,gBAAgB,GAAG,+EAA+E,CAAC;IACzG,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,MAAc;IAC3C,uCAAuC;IACvC,MAAM,UAAU,GAAG;QACjB,+DAA+D;QAC/D,qCAAqC;QACrC,+BAA+B;QAC/B,2BAA2B;QAC3B,sCAAsC;KACvC,CAAC;IAEF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;GAQG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BE;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,QAAQ,CAAC,aAAqB,EAAE,MAAc,EAAE,WAAoB;IAClF,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;QAE9C,kBAAkB;QAClB,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAEzC,oBAAoB;QACpB,MAAM,IAAI,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAE9C,uBAAuB;QACvB,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,cAAc,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAExD,iCAAiC;QACjC,IAAI,QAAiC,CAAC;QACtC,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,IAAI,WAAW,EAAE,CAAC;YAChB,cAAc,GAAG,IAAI,CAAC;YACtB,uFAAuF;YACvF,gCAAgC;QAClC,CAAC;QAED,2BAA2B;QAC3B,MAAM,YAAY,GAAoB;YACpC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5B,IAAI,EAAE,aAAkC;gBACxC,IAAI;gBACJ,MAAM,EAAE,kBAAkB;gBAC1B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,YAAiC;gBACvC,IAAI;gBACJ,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC7B,IAAI,EAAE,cAAmC;gBACzC,IAAI;gBACJ,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC9B,IAAI,EAAE,cAAmC;gBACzC,IAAI;gBACJ,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/B,IAAI,EAAE,YAAiC;gBACvC,IAAI;gBACJ,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;SACJ,CAAC;QAEF,MAAM,MAAM,GAAmB;YAC7B,aAAa;YACb,YAAY,EAAE,IAAI;YAClB,WAAW;YACX,UAAU;YACV,YAAY;YACZ,aAAa;YACb,cAAc;YACd,YAAY;YACZ,cAAc;YACd,QAAQ;SACT,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,eAAe,aAAa,EAAE,EAAE;YAC3C,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,WAAW,CAAC,MAAM;YAC/B,UAAU,EAAE,UAAU,CAAC,MAAM;YAC7B,YAAY,EAAE,YAAY,CAAC,MAAM;YACjC,YAAY,EAAE,YAAY,CAAC,MAAM;SAClC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,YAAY,CAAC,wBAAwB,aAAa,EAAE,EAAE;YAC9D,QAAQ,EAAE,aAAa;YACvB,aAAa,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SACtE,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lwc-parser.js","sourceRoot":"","sources":["../../src/parsers/lwc-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function normalizeArray<T>(value: T | T[] | undefined): T[];
2
+ export declare function normalizeOptionalArray<T>(value: T | T[] | undefined): T[] | undefined;
3
+ export declare function uniqueDefinedStrings(values: Array<string | undefined>): string[];
@@ -0,0 +1,16 @@
1
+ export function normalizeArray(value) {
2
+ if (value === undefined) {
3
+ return [];
4
+ }
5
+ return Array.isArray(value) ? value : [value];
6
+ }
7
+ export function normalizeOptionalArray(value) {
8
+ if (value === undefined) {
9
+ return undefined;
10
+ }
11
+ return Array.isArray(value) ? value : [value];
12
+ }
13
+ export function uniqueDefinedStrings(values) {
14
+ return [...new Set(values.filter((value) => Boolean(value)))];
15
+ }
16
+ //# sourceMappingURL=parser-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-utils.js","sourceRoot":"","sources":["../../src/parsers/parser-utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAI,KAA0B;IAC1D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAI,KAA0B;IAClE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiC;IACpE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC"}
@@ -67,6 +67,12 @@ export type PermissionSetParseResult = {
67
67
  customSettings: string[];
68
68
  recordTypes: string[];
69
69
  };
70
+ /** Soft dependencies that may not block deploy ordering */
71
+ optionalDependencies: {
72
+ visualforcePages: string[];
73
+ applications: string[];
74
+ tabs: string[];
75
+ };
70
76
  };
71
77
  /**
72
78
  * Parse a Permission Set metadata XML file
@@ -24,6 +24,19 @@ function normalizeArray(value) {
24
24
  return [];
25
25
  return Array.isArray(value) ? value : [value];
26
26
  }
27
+ function uniqueDefined(values) {
28
+ return [...new Set(values.filter((value) => Boolean(value)))];
29
+ }
30
+ function hasObjectAccess(permission) {
31
+ return [
32
+ permission.allowCreate,
33
+ permission.allowDelete,
34
+ permission.allowEdit,
35
+ permission.allowRead,
36
+ permission.modifyAllRecords,
37
+ permission.viewAllRecords,
38
+ ].some((value) => value === true);
39
+ }
27
40
  /**
28
41
  * Parse a Permission Set metadata XML file
29
42
  *
@@ -74,46 +87,19 @@ export async function parsePermissionSet(filePath, permissionSetName) {
74
87
  const customSettingAccesses = normalizeArray(metadata.customSettingAccesses);
75
88
  const userPermissions = normalizeArray(metadata.userPermissions);
76
89
  const recordTypeVisibilities = normalizeArray(metadata.recordTypeVisibilities);
77
- // Extract object names
78
- const objectNames = objectPermissions.map((perm) => perm.object);
79
- // Extract field names (format: ObjectName.FieldName)
80
- const fieldNames = fieldPermissions.map((perm) => perm.field);
81
- // Extract Apex class names
82
- const apexClassNames = classAccesses.map((access) => access.apexClass);
83
- // Extract Visualforce page names
84
- const visualforcePageNames = pageAccesses.map((access) => access.apexPage);
85
- // Extract custom permission names
86
- const customPermissionNames = customPermissions
87
- .filter((perm) => perm.enabled)
88
- .map((perm) => perm.name);
89
- // Extract application names
90
- const applicationNames = applicationVisibilities.map((app) => app.application);
91
- // Extract tab names
92
- const tabNames = tabSettings.map((tab) => tab.tab);
93
- // Extract custom metadata type names
94
- const customMetadataTypeNames = customMetadataTypeAccesses
95
- .filter((access) => access.enabled)
96
- .map((access) => access.name);
97
- // Extract flow names
98
- const flowNames = flowAccesses
99
- .filter((access) => access.enabled)
100
- .map((access) => access.flow);
101
- // Extract external data source names
102
- const externalDataSourceNames = externalDataSourceAccesses
103
- .filter((access) => access.enabled)
104
- .map((access) => access.externalDataSource);
105
- // Extract custom setting names
106
- const customSettingNames = customSettingAccesses
107
- .filter((access) => access.enabled)
108
- .map((access) => access.name);
109
- // Extract user permission names
110
- const userPermissionNames = userPermissions
111
- .filter((perm) => perm.enabled)
112
- .map((perm) => perm.name);
113
- // Extract record type names
114
- const recordTypeNames = recordTypeVisibilities
115
- .filter((rt) => rt.visible)
116
- .map((rt) => rt.recordType);
90
+ const objectNames = uniqueDefined(objectPermissions.filter((perm) => hasObjectAccess(perm)).map((perm) => perm.object));
91
+ const fieldNames = uniqueDefined(fieldPermissions.filter((perm) => perm.editable || perm.readable).map((perm) => perm.field));
92
+ const apexClassNames = uniqueDefined(classAccesses.filter((access) => access.enabled).map((access) => access.apexClass));
93
+ const visualforcePageNames = uniqueDefined(pageAccesses.filter((access) => access.enabled).map((access) => access.apexPage));
94
+ const customPermissionNames = uniqueDefined(customPermissions.filter((perm) => perm.enabled).map((perm) => perm.name));
95
+ const applicationNames = uniqueDefined(applicationVisibilities.filter((app) => app.visible).map((app) => app.application));
96
+ const tabNames = uniqueDefined(tabSettings.filter((tab) => tab.visibility !== 'None').map((tab) => tab.tab));
97
+ const customMetadataTypeNames = uniqueDefined(customMetadataTypeAccesses.filter((access) => access.enabled).map((access) => access.name));
98
+ const flowNames = uniqueDefined(flowAccesses.filter((access) => access.enabled).map((access) => access.flow));
99
+ const externalDataSourceNames = uniqueDefined(externalDataSourceAccesses.filter((access) => access.enabled).map((access) => access.externalDataSource));
100
+ const customSettingNames = uniqueDefined(customSettingAccesses.filter((access) => access.enabled).map((access) => access.name));
101
+ const userPermissionNames = uniqueDefined(userPermissions.filter((perm) => perm.enabled).map((perm) => perm.name));
102
+ const recordTypeNames = uniqueDefined(recordTypeVisibilities.filter((rt) => rt.visible).map((rt) => rt.recordType));
117
103
  // Build result
118
104
  return {
119
105
  name: permissionSetName,
@@ -147,6 +133,11 @@ export async function parsePermissionSet(filePath, permissionSetName) {
147
133
  customSettings: customSettingNames,
148
134
  recordTypes: recordTypeNames,
149
135
  },
136
+ optionalDependencies: {
137
+ visualforcePages: visualforcePageNames,
138
+ applications: applicationNames,
139
+ tabs: tabNames,
140
+ },
150
141
  };
151
142
  }
152
143
  //# sourceMappingURL=permission-set-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission-set-parser.js","sourceRoot":"","sources":["../../src/parsers/permission-set-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission-set-parser.js","sourceRoot":"","sources":["../../src/parsers/permission-set-parser.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,10 @@ export type ProfileParseResult = {
46
46
  customMetadataTypeAccesses: string[];
47
47
  /** Flows with access */
48
48
  flowAccesses: string[];
49
+ /** External data sources with access */
50
+ externalDataSourceAccesses: string[];
51
+ /** Custom settings with access */
52
+ customSettingAccesses: string[];
49
53
  /** User permissions granted */
50
54
  userPermissions: string[];
51
55
  /** All dependencies extracted from this profile */
@@ -61,6 +65,15 @@ export type ProfileParseResult = {
61
65
  customPermissions: string[];
62
66
  customMetadataTypes: string[];
63
67
  flows: string[];
68
+ externalDataSources: string[];
69
+ customSettings: string[];
70
+ };
71
+ /** Soft dependencies that may not block deploy ordering */
72
+ optionalDependencies: {
73
+ layouts: string[];
74
+ visualforcePages: string[];
75
+ applications: string[];
76
+ tabs: string[];
64
77
  };
65
78
  };
66
79
  /**