@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
@@ -123,6 +123,10 @@ export declare class Logger {
123
123
  * Core logging method
124
124
  */
125
125
  private log;
126
+ private createConfig;
127
+ private resolveLogFilePath;
128
+ private createLogEntry;
129
+ private normalizeLogContext;
126
130
  /**
127
131
  * Log to console with color coding
128
132
  */
@@ -131,6 +135,7 @@ export declare class Logger {
131
135
  * Log to file asynchronously (queued to prevent race conditions)
132
136
  */
133
137
  private logToFileAsync;
138
+ private writeLogEntry;
134
139
  /**
135
140
  * Check file size and rotate if needed
136
141
  */
@@ -139,6 +144,9 @@ export declare class Logger {
139
144
  * Rotate log file
140
145
  */
141
146
  private rotateLogFile;
147
+ private findRotatedFiles;
148
+ private deleteOverflowRotations;
149
+ private bumpRotationIndexes;
142
150
  /**
143
151
  * Format log entry based on configured format
144
152
  */
@@ -71,15 +71,8 @@ export class Logger {
71
71
  * Private constructor - use getInstance() instead
72
72
  */
73
73
  constructor(config) {
74
- this.config = { ...DEFAULT_CONFIG, ...config };
75
- if (this.config.logToFile && !this.config.logDirectory) {
76
- this.config.logDirectory = path.join(os.homedir(), '.sf', 'smart-deployment', 'logs');
77
- }
78
- if (this.config.logToFile && this.config.logDirectory) {
79
- const sanitizedComponent = this.config.component.replaceAll(/[^\w-]/g, '_').toLowerCase();
80
- const date = new Date().toISOString().split('T')[0];
81
- this.logFilePath = path.join(this.config.logDirectory, `${sanitizedComponent}-${date}.log`);
82
- }
74
+ this.config = this.createConfig(config);
75
+ this.logFilePath = this.resolveLogFilePath(this.config);
83
76
  }
84
77
  /**
85
78
  * Get logger instance for component (one instance per component)
@@ -136,6 +129,7 @@ export class Logger {
136
129
  */
137
130
  configure(config) {
138
131
  this.config = { ...this.config, ...config };
132
+ this.logFilePath = this.resolveLogFilePath(this.config);
139
133
  }
140
134
  /**
141
135
  * Get current configuration
@@ -153,44 +147,59 @@ export class Logger {
153
147
  * Core logging method
154
148
  */
155
149
  log(level, message, context) {
156
- // Check if level is enabled
157
150
  if (LOG_LEVEL_VALUES[level] < LOG_LEVEL_VALUES[this.config.level]) {
158
151
  return;
159
152
  }
160
- const entry = {
153
+ const entry = this.createLogEntry(level, message, context);
154
+ if (this.config.logToConsole) {
155
+ this.logToConsoleOutput(entry);
156
+ }
157
+ if (this.config.logToFile && this.logFilePath) {
158
+ void this.logToFileAsync(entry);
159
+ }
160
+ }
161
+ createConfig(config) {
162
+ const mergedConfig = { ...DEFAULT_CONFIG, ...config };
163
+ if (mergedConfig.logToFile && !mergedConfig.logDirectory) {
164
+ mergedConfig.logDirectory = path.join(os.homedir(), '.sf', 'smart-deployment', 'logs');
165
+ }
166
+ return mergedConfig;
167
+ }
168
+ resolveLogFilePath(config) {
169
+ if (!config.logToFile || !config.logDirectory) {
170
+ return undefined;
171
+ }
172
+ const sanitizedComponent = config.component.replaceAll(/[^\w-]/g, '_').toLowerCase();
173
+ const date = new Date().toISOString().split('T')[0];
174
+ return path.join(config.logDirectory, `${sanitizedComponent}-${date}.log`);
175
+ }
176
+ createLogEntry(level, message, context) {
177
+ const normalizedContext = this.normalizeLogContext(context);
178
+ return {
161
179
  timestamp: new Date().toISOString(),
162
180
  level,
163
181
  component: this.config.component,
164
182
  message,
183
+ context: normalizedContext.context,
184
+ error: normalizedContext.error,
165
185
  };
166
- // Add context if provided
167
- if (context) {
168
- // Extract error if present
169
- if (context.error instanceof Error) {
170
- entry.error = {
171
- name: context.error.name,
172
- message: context.error.message,
173
- stack: context.error.stack,
174
- };
175
- // Remove error from context to avoid duplication
176
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
177
- const { error: _, ...restContext } = context;
178
- if (Object.keys(restContext).length > 0) {
179
- entry.context = restContext;
180
- }
181
- }
182
- else {
183
- entry.context = context;
184
- }
185
- }
186
- // Log to console
187
- if (this.config.logToConsole) {
188
- this.logToConsoleOutput(entry);
186
+ }
187
+ normalizeLogContext(context) {
188
+ if (!context) {
189
+ return {};
189
190
  }
190
- // Log to file (async, non-blocking)
191
- if (this.config.logToFile && this.logFilePath) {
192
- void this.logToFileAsync(entry);
191
+ if (!(context.error instanceof Error)) {
192
+ return { context };
193
193
  }
194
+ const { error, ...restContext } = context;
195
+ return {
196
+ error: {
197
+ name: error.name,
198
+ message: error.message,
199
+ stack: error.stack,
200
+ },
201
+ context: Object.keys(restContext).length > 0 ? restContext : undefined,
202
+ };
194
203
  }
195
204
  /**
196
205
  * Log to console with color coding
@@ -218,18 +227,9 @@ export class Logger {
218
227
  * Log to file asynchronously (queued to prevent race conditions)
219
228
  */
220
229
  async logToFileAsync(entry) {
221
- // Queue writes to prevent concurrent file access
222
230
  this.writeQueue = this.writeQueue.then(async () => {
223
231
  try {
224
- if (!this.logFilePath)
225
- return;
226
- // Create log directory if it doesn't exist
227
- await fs.mkdir(path.dirname(this.logFilePath), { recursive: true });
228
- // Check if rotation is needed
229
- await this.rotateIfNeeded();
230
- // Format and write log entry
231
- const formatted = this.formatEntry(entry);
232
- await fs.appendFile(this.logFilePath, `${formatted}\n`, 'utf-8');
232
+ await this.writeLogEntry(entry);
233
233
  }
234
234
  catch {
235
235
  // Silently ignore file write errors (don't block application)
@@ -237,6 +237,14 @@ export class Logger {
237
237
  });
238
238
  await this.writeQueue;
239
239
  }
240
+ async writeLogEntry(entry) {
241
+ if (!this.logFilePath) {
242
+ return;
243
+ }
244
+ await fs.mkdir(path.dirname(this.logFilePath), { recursive: true });
245
+ await this.rotateIfNeeded();
246
+ await fs.appendFile(this.logFilePath, `${this.formatEntry(entry)}\n`, 'utf-8');
247
+ }
240
248
  /**
241
249
  * Check file size and rotate if needed
242
250
  */
@@ -261,36 +269,41 @@ export class Logger {
261
269
  if (!this.logFilePath)
262
270
  return;
263
271
  try {
264
- // Find existing rotated files
265
272
  const dir = path.dirname(this.logFilePath);
266
273
  const baseFileName = path.basename(this.logFilePath, '.log');
267
- const files = await fs.readdir(dir);
268
- const rotatedFiles = files
269
- .filter((file) => file.startsWith(`${baseFileName}.`) && file.endsWith('.log'))
270
- .map((file) => {
271
- const match = /\.(\d+)\.log$/.exec(file);
272
- return {
273
- file,
274
- index: match ? Number.parseInt(match[1], 10) : 0,
275
- };
276
- })
277
- .sort((a, b) => b.index - a.index);
278
- // Delete oldest files if we have too many
279
- const filesToDelete = rotatedFiles.slice(this.config.maxLogFiles - 1);
280
- await Promise.all(filesToDelete.map((f) => fs.unlink(path.join(dir, f.file))));
281
- // Rotate existing files in parallel
282
- await Promise.all(rotatedFiles.slice(0, this.config.maxLogFiles - 1).map(({ file, index }) => {
283
- const oldPath = path.join(dir, file);
284
- const newPath = path.join(dir, `${baseFileName}.${index + 1}.log`);
285
- return fs.rename(oldPath, newPath);
286
- }));
287
- // Rotate current file to .1.log
274
+ const rotatedFiles = await this.findRotatedFiles(dir, baseFileName);
275
+ await this.deleteOverflowRotations(dir, rotatedFiles);
276
+ await this.bumpRotationIndexes(dir, baseFileName, rotatedFiles);
288
277
  await fs.rename(this.logFilePath, `${this.logFilePath.replace(/\.log$/, '')}.1.log`);
289
278
  }
290
279
  catch {
291
280
  // Rotation failed - continue with current file
292
281
  }
293
282
  }
283
+ async findRotatedFiles(dir, baseFileName) {
284
+ const files = await fs.readdir(dir);
285
+ return files
286
+ .filter((file) => file.startsWith(`${baseFileName}.`) && file.endsWith('.log'))
287
+ .map((file) => {
288
+ const match = /\.(\d+)\.log$/.exec(file);
289
+ return {
290
+ file,
291
+ index: match ? Number.parseInt(match[1], 10) : 0,
292
+ };
293
+ })
294
+ .sort((a, b) => b.index - a.index);
295
+ }
296
+ async deleteOverflowRotations(dir, rotatedFiles) {
297
+ const filesToDelete = rotatedFiles.slice(this.config.maxLogFiles - 1);
298
+ await Promise.all(filesToDelete.map((file) => fs.unlink(path.join(dir, file.file))));
299
+ }
300
+ async bumpRotationIndexes(dir, baseFileName, rotatedFiles) {
301
+ await Promise.all(rotatedFiles.slice(0, this.config.maxLogFiles - 1).map(({ file, index }) => {
302
+ const oldPath = path.join(dir, file);
303
+ const newPath = path.join(dir, `${baseFileName}.${index + 1}.log`);
304
+ return fs.rename(oldPath, newPath);
305
+ }));
306
+ }
294
307
  /**
295
308
  * Format log entry based on configured format
296
309
  */
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ValidationResult } from './xml-validation-types.js';
2
+ export declare function validateReferences(content: string, result: ValidationResult): void;
3
+ export declare function generateSuggestions(result: ValidationResult, maxApiVersion: number): void;
@@ -0,0 +1,173 @@
1
+ const RESERVED_KEYWORDS = new Set([
2
+ 'abstract',
3
+ 'activate',
4
+ 'and',
5
+ 'any',
6
+ 'array',
7
+ 'as',
8
+ 'asc',
9
+ 'autonomous',
10
+ 'begin',
11
+ 'bigdecimal',
12
+ 'blob',
13
+ 'break',
14
+ 'bulk',
15
+ 'by',
16
+ 'case',
17
+ 'cast',
18
+ 'catch',
19
+ 'char',
20
+ 'class',
21
+ 'collect',
22
+ 'commit',
23
+ 'const',
24
+ 'continue',
25
+ 'convertcurrency',
26
+ 'decimal',
27
+ 'default',
28
+ 'delete',
29
+ 'desc',
30
+ 'do',
31
+ 'else',
32
+ 'end',
33
+ 'enum',
34
+ 'exception',
35
+ 'exit',
36
+ 'export',
37
+ 'extends',
38
+ 'false',
39
+ 'final',
40
+ 'finally',
41
+ 'float',
42
+ 'for',
43
+ 'from',
44
+ 'future',
45
+ 'global',
46
+ 'goto',
47
+ 'group',
48
+ 'having',
49
+ 'hint',
50
+ 'if',
51
+ 'implements',
52
+ 'import',
53
+ 'in',
54
+ 'inner',
55
+ 'insert',
56
+ 'instanceof',
57
+ 'int',
58
+ 'interface',
59
+ 'into',
60
+ 'join',
61
+ 'like',
62
+ 'limit',
63
+ 'list',
64
+ 'long',
65
+ 'loop',
66
+ 'map',
67
+ 'merge',
68
+ 'new',
69
+ 'not',
70
+ 'null',
71
+ 'nulls',
72
+ 'number',
73
+ 'object',
74
+ 'of',
75
+ 'on',
76
+ 'or',
77
+ 'outer',
78
+ 'override',
79
+ 'package',
80
+ 'parallel',
81
+ 'pragma',
82
+ 'private',
83
+ 'protected',
84
+ 'public',
85
+ 'retrieve',
86
+ 'return',
87
+ 'rollback',
88
+ 'select',
89
+ 'set',
90
+ 'short',
91
+ 'sort',
92
+ 'static',
93
+ 'super',
94
+ 'switch',
95
+ 'synchronized',
96
+ 'system',
97
+ 'testmethod',
98
+ 'then',
99
+ 'this',
100
+ 'throw',
101
+ 'transaction',
102
+ 'trigger',
103
+ 'true',
104
+ 'try',
105
+ 'type',
106
+ 'undelete',
107
+ 'update',
108
+ 'upsert',
109
+ 'using',
110
+ 'virtual',
111
+ 'void',
112
+ 'webservice',
113
+ 'when',
114
+ 'where',
115
+ 'while',
116
+ ]);
117
+ export function validateReferences(content, result) {
118
+ const patterns = [
119
+ { regex: /<field>([^<]+)<\/field>/g, type: 'field' },
120
+ { regex: /<object>([^<]+)<\/object>/g, type: 'object' },
121
+ { regex: /<class>([^<]+)<\/class>/g, type: 'class' },
122
+ ];
123
+ for (const pattern of patterns) {
124
+ const matches = [...content.matchAll(pattern.regex)];
125
+ for (const match of matches) {
126
+ const reference = match[1];
127
+ if (!/^[a-zA-Z][a-zA-Z0-9_]*(__c)?$/.test(reference)) {
128
+ result.errors.push({
129
+ type: 'reference',
130
+ message: `Invalid ${pattern.type} name: ${reference}`,
131
+ severity: 'warning',
132
+ });
133
+ }
134
+ if (RESERVED_KEYWORDS.has(reference.toLowerCase())) {
135
+ result.errors.push({
136
+ type: 'reference',
137
+ message: `Reserved keyword used as ${pattern.type} name: ${reference}`,
138
+ severity: 'error',
139
+ });
140
+ }
141
+ }
142
+ }
143
+ }
144
+ export function generateSuggestions(result, maxApiVersion) {
145
+ for (const error of result.errors) {
146
+ if (error.type === 'version' && error.message.includes('too old')) {
147
+ result.suggestions.push({
148
+ issue: error.message,
149
+ fix: `Update API version to ${maxApiVersion}`,
150
+ autoFixable: true,
151
+ });
152
+ }
153
+ if (error.type === 'reference' && error.message.includes('Invalid')) {
154
+ const match = error.message.match(/: (.+)$/);
155
+ if (!match) {
156
+ continue;
157
+ }
158
+ result.suggestions.push({
159
+ issue: error.message,
160
+ fix: `Rename to: ${suggestFixedName(match[1])}`,
161
+ autoFixable: false,
162
+ });
163
+ }
164
+ }
165
+ }
166
+ function suggestFixedName(invalidName) {
167
+ let fixed = invalidName.replace(/[^a-zA-Z0-9_]/g, '_');
168
+ if (!/^[a-zA-Z]/.test(fixed)) {
169
+ fixed = `Field_${fixed}`;
170
+ }
171
+ return fixed;
172
+ }
173
+ //# sourceMappingURL=xml-reference-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-reference-rules.js","sourceRoot":"","sources":["../../../src/validators/xml/xml-reference-rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ValidationResult } from './xml-validation-types.js';
2
+ export declare function formatValidationReport(result: ValidationResult): string;
@@ -0,0 +1,47 @@
1
+ export function formatValidationReport(result) {
2
+ const lines = [];
3
+ lines.push('🔍 XML Validation Report');
4
+ lines.push('═══════════════════════════════════════');
5
+ lines.push(`File: ${result.filePath}`);
6
+ lines.push(`Status: ${result.isValid ? '✅ VALID' : '❌ INVALID'}`);
7
+ lines.push('');
8
+ if (result.errors.length > 0) {
9
+ const errors = result.errors.filter((error) => error.severity === 'error');
10
+ if (errors.length > 0) {
11
+ lines.push(`🔴 Errors (${errors.length}):`);
12
+ for (const error of errors) {
13
+ const location = error.line ? ` [Line ${error.line}]` : '';
14
+ lines.push(` ${error.type.toUpperCase()}${location}: ${error.message}`);
15
+ }
16
+ lines.push('');
17
+ }
18
+ const warnings = result.errors.filter((error) => error.severity === 'warning');
19
+ if (warnings.length > 0) {
20
+ lines.push(`🟡 Warnings (${warnings.length}):`);
21
+ for (const warning of warnings) {
22
+ lines.push(` ${warning.message}`);
23
+ }
24
+ lines.push('');
25
+ }
26
+ }
27
+ if (result.warnings.length > 0) {
28
+ lines.push(`⚠️ Additional Warnings (${result.warnings.length}):`);
29
+ for (const warning of result.warnings) {
30
+ lines.push(` ${warning.message}`);
31
+ if (warning.suggestion) {
32
+ lines.push(` 💡 ${warning.suggestion}`);
33
+ }
34
+ }
35
+ lines.push('');
36
+ }
37
+ if (result.suggestions.length > 0) {
38
+ lines.push(`💡 Suggestions (${result.suggestions.length}):`);
39
+ for (const suggestion of result.suggestions) {
40
+ const autofix = suggestion.autoFixable ? ' [Auto-fixable]' : '';
41
+ lines.push(` ${suggestion.issue}`);
42
+ lines.push(` → ${suggestion.fix}${autofix}`);
43
+ }
44
+ }
45
+ return lines.join('\n');
46
+ }
47
+ //# sourceMappingURL=xml-report-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-report-formatter.js","sourceRoot":"","sources":["../../../src/validators/xml/xml-report-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MetadataValidationType, ValidationResult } from './xml-validation-types.js';
2
+ export declare function detectMetadataType(filePath: string): MetadataValidationType;
3
+ export declare function validateSchema(content: string, filePath: string, result: ValidationResult): void;
@@ -0,0 +1,75 @@
1
+ export function detectMetadataType(filePath) {
2
+ if (filePath.includes('/classes/'))
3
+ return 'ApexClass';
4
+ if (filePath.includes('/triggers/'))
5
+ return 'ApexTrigger';
6
+ if (filePath.includes('/objects/'))
7
+ return 'CustomObject';
8
+ if (filePath.includes('/profiles/'))
9
+ return 'Profile';
10
+ if (filePath.includes('/permissionsets/'))
11
+ return 'PermissionSet';
12
+ return 'Unknown';
13
+ }
14
+ export function validateSchema(content, filePath, result) {
15
+ const metadataType = detectMetadataType(filePath);
16
+ if (metadataType === 'ApexClass' || metadataType === 'ApexTrigger') {
17
+ validateApexMetadata(content, result);
18
+ }
19
+ else if (metadataType === 'CustomObject') {
20
+ validateObjectMetadata(content, result);
21
+ }
22
+ else if (metadataType === 'Profile' || metadataType === 'PermissionSet') {
23
+ validateSecurityMetadata(content, result);
24
+ }
25
+ }
26
+ function validateApexMetadata(content, result) {
27
+ if (!content.includes('<ApexClass') && !content.includes('<ApexTrigger')) {
28
+ result.errors.push({
29
+ type: 'schema',
30
+ message: 'Missing ApexClass or ApexTrigger root element',
31
+ severity: 'error',
32
+ });
33
+ return;
34
+ }
35
+ if (!content.includes('<status>')) {
36
+ result.errors.push({
37
+ type: 'schema',
38
+ message: 'Missing required field: status',
39
+ severity: 'error',
40
+ });
41
+ }
42
+ }
43
+ function validateObjectMetadata(content, result) {
44
+ if (!content.includes('<CustomObject')) {
45
+ result.errors.push({
46
+ type: 'schema',
47
+ message: 'Missing CustomObject root element',
48
+ severity: 'error',
49
+ });
50
+ return;
51
+ }
52
+ if (!content.includes('<label>')) {
53
+ result.errors.push({
54
+ type: 'schema',
55
+ message: 'Missing required field: label',
56
+ severity: 'error',
57
+ });
58
+ }
59
+ if (!content.includes('<pluralLabel>')) {
60
+ result.warnings.push({
61
+ message: 'Missing pluralLabel field',
62
+ suggestion: 'Add pluralLabel for better user experience',
63
+ });
64
+ }
65
+ }
66
+ function validateSecurityMetadata(content, result) {
67
+ if (!content.includes('<Profile') && !content.includes('<PermissionSet')) {
68
+ result.errors.push({
69
+ type: 'schema',
70
+ message: 'Missing Profile or PermissionSet root element',
71
+ severity: 'error',
72
+ });
73
+ }
74
+ }
75
+ //# sourceMappingURL=xml-schema-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-schema-rules.js","sourceRoot":"","sources":["../../../src/validators/xml/xml-schema-rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export type ValidationResult = {
2
+ isValid: boolean;
3
+ errors: ValidationError[];
4
+ warnings: ValidationWarning[];
5
+ suggestions: ValidationSuggestion[];
6
+ filePath: string;
7
+ };
8
+ export type ValidationError = {
9
+ type: 'syntax' | 'schema' | 'reference' | 'version';
10
+ message: string;
11
+ line?: number;
12
+ column?: number;
13
+ severity: 'error' | 'warning';
14
+ };
15
+ export type ValidationWarning = {
16
+ message: string;
17
+ line?: number;
18
+ suggestion?: string;
19
+ };
20
+ export type ValidationSuggestion = {
21
+ issue: string;
22
+ fix: string;
23
+ autoFixable: boolean;
24
+ };
25
+ export type MetadataValidationType = 'ApexClass' | 'ApexTrigger' | 'CustomObject' | 'Profile' | 'PermissionSet' | 'Unknown';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=xml-validation-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-validation-types.js","sourceRoot":"","sources":["../../../src/validators/xml/xml-validation-types.ts"],"names":[],"mappings":""}