sfdx-hardis 6.6.1-alpha202510111519.0 → 6.7.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.
package/CHANGELOG.md CHANGED
@@ -4,12 +4,24 @@
4
4
 
5
5
  Note: Can be used with `sfdx plugins:install sfdx-hardis@beta` and docker image `hardisgroupcom/sfdx-hardis@beta`
6
6
 
7
- - Cast descriptions to string before formatting
8
- - Add a message in case Pull Requests app requires to be installed on BitBucket
9
- - Update CI/CD documentation
10
- - Update JSON Schema
11
- - New command [hardis:project:metadata:activate-decomposed](https://sfdx-hardis.cloudity.com/hardis/project/metadata/activate-decomposed/) to activate decomposed metadata types in sfdx-project.json and convert existing sources
12
- - Azure Comment Reporter: Create a new Work Item to attach images in case the found one is close to the limit of number of attachments
7
+ ## [6.7.0] 2025-10-12
8
+
9
+ - New command: [hardis:project:metadata:activate-decomposed](https://sfdx-hardis.cloudity.com/hardis/project/metadata/activate-decomposed/): Activate decomposed metadata types in `sfdx-project.json` and convert existing sources.
10
+
11
+ - Improvements & Fixes
12
+ - Cast descriptions to string before formatting to avoid rendering issues.
13
+ - Avoid unnecessary file writes during builds to improve performance and CI speed.
14
+ - Update JSON Schema to reflect new features and validation rules.
15
+ - Add support for **Vector** (vector.dev) to enable ingestion by DataDog and other observability platforms.
16
+
17
+ - Integrations
18
+ - BitBucket: show a clear message when the Pull Requests app must be installed.
19
+ - Azure Comment Reporter: create a Work Item and attach images when an item approaches the attachments limit.
20
+
21
+ - Documentation
22
+ - Update CI/CD documentation with the latest integration and workflow changes.
23
+ - Update contributing documentation to include guidance for the vscode-sfdx-hardis extension.
24
+ - Ensure docs reference the new JSON Schema and decomposed metadata command where relevant.
13
25
 
14
26
  ## [6.6.0] 2025-10-05
15
27
 
package/README.md CHANGED
@@ -346,19 +346,35 @@ Here are some articles about [sfdx-hardis](https://sfdx-hardis.cloudity.com/)
346
346
  ## Contributing
347
347
 
348
348
  <!-- contributing.md start -->
349
-
350
349
  Everyone is welcome to contribute to sfdx-hardis (even juniors: we'll assist you !)
351
350
 
351
+ ### Salesforce CLI Plugin: sfdx-hardis
352
+
352
353
  - Install Node.js ([recommended version](https://nodejs.org/en/))
353
354
  - Install typescript by running `npm install typescript --global`
354
355
  - Install yarn by running `npm install yarn --global`
355
356
  - Install Salesforce DX by running `npm install @salesforce/cli --global` command line
356
- - Fork this repo and clone it (or just clone if you are an internal contributor)
357
+ - Fork <https://github.com/hardisgroupcom/sfdx-hardis> and clone it (or just clone if you are an internal contributor)
357
358
  - At the root of the repository:
358
359
  - Run `yarn` to install dependencies
359
360
  - Run `sf plugins link` to link the local sfdx-hardis to SFDX CLI
360
361
  - Run `tsc --watch` to transpile typescript into js everytime you update a TS file
361
- - Debug commands using `NODE_OPTIONS=--inspect-brk sf hardis:somecommand -someparameter somevalue`
362
+ - Debug commands using `NODE_OPTIONS=--inspect-brk sf hardis:somecommand --someparameter somevalue` (you can also debug commands using VsCode Sfdx-Hardis setting)
363
+
364
+ ### VsCode Extension: vscode-sfdx-hardis
365
+
366
+ - Install Node.js ([recommended version](https://nodejs.org/en/))
367
+ - Install typescript by running `npm install typescript --global`
368
+ - Install yarn by running `npm install yarn --global`
369
+ - Install Visual Studio Code Insiders ([download here](https://code.visualstudio.com/insiders/))
370
+ - Fork <https://github.com/hardisgroupcom/vscode-sfdx-hardis> and clone it (or just clone if you are an internal contributor)
371
+ - At the root of the repository:
372
+ - Run `yarn` to install dependencies
373
+ - To test your code in the VsCode Extension:
374
+ - Open the `vscode-sfdx-hardis` folder in VsCode Insiders
375
+ - Press `F5` to open a new VsCode window with the extension loaded (or menu Run -> Start Debugging)
376
+ - In the new window, open a Salesforce DX project
377
+ - Run commands from the command palette (Ctrl+Shift+P) or use the buttons in the panel or webviews
362
378
 
363
379
  <!-- contributing.md end -->
364
380
 
@@ -393,6 +409,8 @@ sfdx-hardis is primarily led by Nicolas Vuillamy & [Cloudity](https://www.cloudi
393
409
  - [Anush Poudel](https://www.linkedin.com/in/anushpoudel/), for integrating sfdx-hardis with multiple LLMs using langchainJs
394
410
  - [Sebastien Colladon](https://www.linkedin.com/in/sebastien-colladon/), for providing sfdx-git-delta which is highly used within sfdx-hardis
395
411
  - [Stepan Stepanov](https://www.linkedin.com/in/stepan-stepanov-79a48734/), for implementing the deployment mode _delta with dependencies_
412
+ - [Shamina Mossodeean](https://www.linkedin.com/in/shaminam/), for automating SF decomposed metadata
413
+ - [Michael Havrilla](https://www.linkedin.com/in/%F0%9F%92%BB-michael-havrilla-69063036/), for the integration with Vector.dev allowing to provide monitoring logs to external systems like DataDog
396
414
 
397
415
  <!-- contributors.md end -->
398
416
 
@@ -5,7 +5,9 @@ export declare class ApiProvider extends NotifProviderRoot {
5
5
  payload: ApiNotifMessage;
6
6
  payloadFormatted: any;
7
7
  protected metricsApiUrl: string | null;
8
+ protected jsonLogsFile: string | null;
8
9
  metricsPayload: string;
10
+ protected metricsFormat: 'influx' | 'prometheus';
9
11
  getLabel(): string;
10
12
  isApplicableForNotif(notifMessage: NotifMessage): boolean;
11
13
  isUserNotifProvider(): boolean;
@@ -14,7 +16,11 @@ export declare class ApiProvider extends NotifProviderRoot {
14
16
  private formatPayload;
15
17
  private formatPayloadLoki;
16
18
  private sendToApi;
19
+ private writeLogsToJsonFile;
20
+ private detectMetricsFormat;
17
21
  private buildMetricsPayload;
22
+ private buildMetricsPayloadInflux;
23
+ private buildMetricsPayloadPrometheus;
18
24
  private sendToMetricsApi;
19
25
  }
20
26
  export interface ApiNotifMessage {
@@ -7,6 +7,8 @@ import { CONSTANTS, getEnvVar } from "../../config/index.js";
7
7
  import { getSeverityIcon, removeMarkdown } from "../utils/notifUtils.js";
8
8
  import { GitProvider } from "../gitProvider/index.js";
9
9
  import axios from "axios";
10
+ import fs from "fs-extra";
11
+ import * as path from "path";
10
12
  const MAX_LOKI_LOG_LENGTH = Number(process.env.MAX_LOKI_LOG_LENGTH || 200000);
11
13
  const TRUNCATE_LOKI_ELEMENTS_LENGTH = Number(process.env.TRUNCATE_LOKI_ELEMENTS_LENGTH || 500);
12
14
  export class ApiProvider extends NotifProviderRoot {
@@ -14,7 +16,9 @@ export class ApiProvider extends NotifProviderRoot {
14
16
  payload;
15
17
  payloadFormatted;
16
18
  metricsApiUrl;
19
+ jsonLogsFile;
17
20
  metricsPayload;
21
+ metricsFormat = 'influx';
18
22
  getLabel() {
19
23
  return "sfdx-hardis Api connector";
20
24
  }
@@ -30,18 +34,27 @@ export class ApiProvider extends NotifProviderRoot {
30
34
  async postNotification(notifMessage) {
31
35
  const apiPromises = []; // Use Promises to optimize performances with api calls
32
36
  this.apiUrl = getEnvVar("NOTIF_API_URL");
33
- if (this.apiUrl == null) {
34
- throw new SfError("[ApiProvider] You need to define a variable NOTIF_API_URL to use sfdx-hardis Api notifications");
37
+ this.jsonLogsFile = getEnvVar("NOTIF_API_LOGS_JSON_FILE");
38
+ if (this.apiUrl == null && this.jsonLogsFile == null) {
39
+ throw new SfError("[ApiProvider] You need to define a variable NOTIF_API_URL or NOTIF_API_LOGS_JSON_FILE to use sfdx-hardis Api notifications");
35
40
  }
36
41
  // Build initial payload data from notifMessage
37
42
  await this.buildPayload(notifMessage);
38
43
  // Format payload according to API endpoint: for example, Grafana loki
39
44
  await this.formatPayload();
40
45
  // Send notif
41
- apiPromises.push(this.sendToApi());
46
+ if (this.apiUrl !== null) {
47
+ apiPromises.push(this.sendToApi());
48
+ }
49
+ // Write logs to JSON file if configured
50
+ if (this.jsonLogsFile !== null) {
51
+ apiPromises.push(this.writeLogsToJsonFile(this.jsonLogsFile));
52
+ }
42
53
  // Handle Metrics API if provided
43
54
  this.metricsApiUrl = getEnvVar("NOTIF_API_METRICS_URL");
44
55
  if (this.metricsApiUrl !== null) {
56
+ // Detect metrics format based on URL
57
+ this.detectMetricsFormat();
45
58
  this.buildMetricsPayload();
46
59
  if (this.metricsPayload.length > 0) {
47
60
  apiPromises.push(this.sendToMetricsApi());
@@ -170,9 +183,9 @@ export class ApiProvider extends NotifProviderRoot {
170
183
  const axiosResponse = await axios.post(this.apiUrl || "", this.payloadFormatted, axiosConfig);
171
184
  const httpStatus = axiosResponse.status;
172
185
  if (httpStatus > 200 && httpStatus < 300) {
173
- uxLog("action", this, c.cyan(`[ApiProvider] Posted message to API ${this.apiUrl} (${httpStatus})`));
186
+ uxLog("log", this, c.cyan(`[ApiProvider] Posted message to API ${this.apiUrl} (${httpStatus})`));
174
187
  if (getEnvVar("NOTIF_API_DEBUG") === "true") {
175
- uxLog("action", this, c.cyan(JSON.stringify(this.payloadFormatted, null, 2)));
188
+ uxLog("log", this, c.cyan(JSON.stringify(this.payloadFormatted, null, 2)));
176
189
  }
177
190
  }
178
191
  }
@@ -182,8 +195,75 @@ export class ApiProvider extends NotifProviderRoot {
182
195
  uxLog("log", this, c.grey("Response body: \n" + JSON.stringify(e?.response?.data || {})));
183
196
  }
184
197
  }
185
- // Build something like MetricName,source=sfdx-hardis,orgIdentifier=hardis-group metric=12.7,min=0,max=70,percent=0.63
198
+ // Write logs to JSON file in Loki-compatible newline-delimited JSON (NDJSON) format
199
+ // Writes one line per log element in full Loki push format for easy ingestion
200
+ async writeLogsToJsonFile(filePath) {
201
+ try {
202
+ await fs.ensureDir(path.dirname(filePath));
203
+ const timestamp = new Date().toISOString();
204
+ // Always write flat aggregate format
205
+ const logEntry = {
206
+ timestamp: timestamp,
207
+ source: this.payload.source,
208
+ type: this.payload.type,
209
+ severity: this.payload.severity,
210
+ orgIdentifier: this.payload.orgIdentifier,
211
+ gitIdentifier: this.payload.gitIdentifier,
212
+ metric: this.payload.data.metric,
213
+ _metrics: this.payload.data._metrics,
214
+ _metricsKeys: this.payload.data._metricsKeys,
215
+ _logElements: this.payload.data._logElements || [],
216
+ _title: this.payload.data._title,
217
+ _jobUrl: this.payload.data._jobUrl,
218
+ ...(this.payload.data.limits && { limits: this.payload.data.limits }),
219
+ };
220
+ await fs.appendFile(filePath, JSON.stringify(logEntry) + '\n');
221
+ uxLog("log", this, c.cyan(`[ApiProvider] Appended log entry to file ${filePath}`));
222
+ const elementCount = this.payload.data._logElements?.length || 0;
223
+ const metricValue = this.payload.data.metric || 0;
224
+ uxLog("log", this, c.cyan(`[ApiProvider] Appended aggregate log entry (metric: ${metricValue}, elements: ${elementCount})`));
225
+ if (getEnvVar("NOTIF_API_DEBUG") === "true") {
226
+ uxLog("log", this, c.grey(`Log elements count: ${elementCount}`));
227
+ uxLog("log", this, c.grey(`Metric value: ${metricValue}`));
228
+ }
229
+ }
230
+ catch (e) {
231
+ uxLog("warning", this, c.yellow(`[ApiProvider] Error writing logs: ${e.message}`));
232
+ }
233
+ }
234
+ // Detect metrics format based on URL pattern
235
+ detectMetricsFormat() {
236
+ const metricsUrl = this.metricsApiUrl || "";
237
+ // Force prometheus format if explicitly set
238
+ const forceFormat = getEnvVar("NOTIF_API_METRICS_FORMAT");
239
+ if (forceFormat === "prometheus" || forceFormat === "influx") {
240
+ this.metricsFormat = forceFormat;
241
+ return;
242
+ }
243
+ // Auto-detect based on URL patterns
244
+ if (metricsUrl.includes("/metrics/job/") || metricsUrl.includes("pushgateway")) {
245
+ this.metricsFormat = "prometheus";
246
+ }
247
+ else if (metricsUrl.includes("influx") || metricsUrl.includes("grafana.net")) {
248
+ this.metricsFormat = "influx";
249
+ }
250
+ else {
251
+ // Default to influx for backward compatibility
252
+ this.metricsFormat = "influx";
253
+ }
254
+ uxLog("log", this, c.grey(`[ApiProvider] Detected metrics format: ${this.metricsFormat}`));
255
+ }
256
+ // Build metrics payload in either InfluxDB or Prometheus format
186
257
  buildMetricsPayload() {
258
+ if (this.metricsFormat === "prometheus") {
259
+ this.buildMetricsPayloadPrometheus();
260
+ }
261
+ else {
262
+ this.buildMetricsPayloadInflux();
263
+ }
264
+ }
265
+ // Build InfluxDB line protocol: MetricName,source=sfdx-hardis,orgIdentifier=hardis-group metric=12.7,min=0,max=70,percent=0.63
266
+ buildMetricsPayloadInflux() {
187
267
  // Build tag field
188
268
  const metricTags = `source=${this.payload.source},` +
189
269
  `type=${this.payload.type},` +
@@ -217,11 +297,53 @@ export class ApiProvider extends NotifProviderRoot {
217
297
  // Result as single string with carriage returns
218
298
  this.metricsPayload = metricsPayloadLines.join("\n");
219
299
  }
300
+ // Build Prometheus format
301
+ buildMetricsPayloadPrometheus() {
302
+ // Build labels
303
+ const labels = `source="${this.payload.source}",` +
304
+ `type="${this.payload.type}",` +
305
+ `orgIdentifier="${this.payload.orgIdentifier}",` +
306
+ `gitIdentifier="${this.payload.gitIdentifier}"`;
307
+ const metricsPayloadLines = [];
308
+ for (const metricId of Object.keys(this.payload.data._metrics)) {
309
+ const metricData = this.payload.data._metrics[metricId];
310
+ const sanitizedMetricName = metricId.replace(/[^a-zA-Z0-9_]/g, '_');
311
+ if (typeof metricData === "number") {
312
+ // Simple metric
313
+ metricsPayloadLines.push(`# TYPE ${sanitizedMetricName} gauge`);
314
+ metricsPayloadLines.push(`${sanitizedMetricName}{${labels}} ${metricData.toFixed(2)}`);
315
+ }
316
+ else if (typeof metricData === "object") {
317
+ // Complex metric with multiple values
318
+ if (metricData.value !== undefined) {
319
+ metricsPayloadLines.push(`# TYPE ${sanitizedMetricName} gauge`);
320
+ metricsPayloadLines.push(`${sanitizedMetricName}{${labels}} ${metricData.value.toFixed(2)}`);
321
+ }
322
+ if (metricData.min !== undefined) {
323
+ metricsPayloadLines.push(`# TYPE ${sanitizedMetricName}_min gauge`);
324
+ metricsPayloadLines.push(`${sanitizedMetricName}_min{${labels}} ${metricData.min.toFixed(2)}`);
325
+ }
326
+ if (metricData.max !== undefined) {
327
+ metricsPayloadLines.push(`# TYPE ${sanitizedMetricName}_max gauge`);
328
+ metricsPayloadLines.push(`${sanitizedMetricName}_max{${labels}} ${metricData.max.toFixed(2)}`);
329
+ }
330
+ if (metricData.percent !== undefined) {
331
+ metricsPayloadLines.push(`# TYPE ${sanitizedMetricName}_percent gauge`);
332
+ metricsPayloadLines.push(`${sanitizedMetricName}_percent{${labels}} ${metricData.percent.toFixed(2)}`);
333
+ }
334
+ }
335
+ }
336
+ this.metricsPayload = metricsPayloadLines.join("\n") + "\n";
337
+ }
220
338
  // Call remote API
221
339
  async sendToMetricsApi() {
222
340
  const axiosConfig = {
223
341
  responseType: "json",
224
342
  };
343
+ // Set content type based on format
344
+ if (this.metricsFormat === "prometheus") {
345
+ axiosConfig.headers = { 'Content-Type': 'text/plain; version=0.0.4' };
346
+ }
225
347
  // Basic Auth
226
348
  if (getEnvVar("NOTIF_API_METRICS_BASIC_AUTH_USERNAME") != null) {
227
349
  axiosConfig.auth = {
@@ -231,23 +353,26 @@ export class ApiProvider extends NotifProviderRoot {
231
353
  }
232
354
  // Bearer token
233
355
  else if (getEnvVar("NOTIF_API_METRICS_BEARER_TOKEN") != null) {
234
- axiosConfig.headers = { Authorization: `Bearer ${getEnvVar("NOTIF_API_METRICS_BEARER_TOKEN")}` };
356
+ if (!axiosConfig.headers) {
357
+ axiosConfig.headers = {};
358
+ }
359
+ axiosConfig.headers.Authorization = `Bearer ${getEnvVar("NOTIF_API_METRICS_BEARER_TOKEN")}`;
235
360
  }
236
361
  // POST message
237
362
  try {
238
363
  const axiosResponse = await axios.post(this.metricsApiUrl || "", this.metricsPayload, axiosConfig);
239
364
  const httpStatus = axiosResponse.status;
240
- if (httpStatus > 200 && httpStatus < 300) {
241
- uxLog("action", this, c.cyan(`[ApiMetricProvider] Posted message to API ${this.metricsApiUrl} (${httpStatus})`));
365
+ if (httpStatus >= 200 && httpStatus < 300) {
366
+ uxLog("log", this, c.cyan(`[ApiMetricProvider] Posted metrics to API ${this.metricsApiUrl} (${httpStatus}) [format: ${this.metricsFormat}]`));
242
367
  if (getEnvVar("NOTIF_API_DEBUG") === "true") {
243
- uxLog("action", this, c.cyan(JSON.stringify(this.metricsPayload, null, 2)));
368
+ uxLog("log", this, c.cyan("Metrics payload:\n" + this.metricsPayload));
244
369
  }
245
370
  }
246
371
  }
247
372
  catch (e) {
248
- uxLog("warning", this, c.yellow(`[ApiMetricProvider] Error while sending message to API ${this.metricsApiUrl}: ${e.message}`));
249
- uxLog("log", this, c.grey("Request body: \n" + JSON.stringify(this.metricsPayload)));
250
- uxLog("log", this, c.grey("Response body: \n" + JSON.stringify(e?.response?.data || {})));
373
+ uxLog("warning", this, c.yellow(`[ApiMetricProvider] Error while sending metrics to API ${this.metricsApiUrl}: ${e.message}`));
374
+ uxLog("log", this, c.grey("Request body:\n" + this.metricsPayload));
375
+ uxLog("log", this, c.grey("Response body: " + JSON.stringify(e?.response?.data || {})));
251
376
  }
252
377
  }
253
378
  }
@@ -1 +1 @@
1
- {"version":3,"file":"apiProvider.js","sourceRoot":"","sources":["../../../src/common/notifProvider/apiProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiProvider.js","sourceRoot":"","sources":["../../../src/common/notifProvider/apiProvider.ts"],"names":[],"mappings":"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"}