@sectester/reporter 0.44.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/package.json +1 -1
  2. package/src/__fixtures__/issues.d.ts +3 -0
  3. package/src/__fixtures__/issues.js +1 -0
  4. package/src/__fixtures__/issues.js.map +1 -1
  5. package/src/index.d.ts +1 -1
  6. package/src/index.js +2 -1
  7. package/src/index.js.map +1 -1
  8. package/src/reporters/github/GitHubCheckRunReporter.d.ts +3 -2
  9. package/src/reporters/github/GitHubCheckRunReporter.js +8 -21
  10. package/src/reporters/github/GitHubCheckRunReporter.js.map +1 -1
  11. package/src/reporters/gitlab/GitLabCodeQualityReporter.d.ts +12 -0
  12. package/src/reporters/gitlab/GitLabCodeQualityReporter.js +36 -0
  13. package/src/reporters/gitlab/GitLabCodeQualityReporter.js.map +1 -0
  14. package/src/reporters/gitlab/api/GitLabCIArtifacts.d.ts +5 -0
  15. package/src/reporters/gitlab/api/GitLabCIArtifacts.js +5 -0
  16. package/src/reporters/gitlab/api/GitLabCIArtifacts.js.map +1 -0
  17. package/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.d.ts +8 -0
  18. package/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.js +29 -0
  19. package/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.js.map +1 -0
  20. package/src/reporters/gitlab/api/GitLabConfig.d.ts +4 -0
  21. package/src/reporters/gitlab/api/GitLabConfig.js +5 -0
  22. package/src/reporters/gitlab/api/GitLabConfig.js.map +1 -0
  23. package/src/reporters/gitlab/api/index.d.ts +3 -0
  24. package/src/reporters/gitlab/api/index.js +10 -0
  25. package/src/reporters/gitlab/api/index.js.map +1 -0
  26. package/src/reporters/gitlab/api/register.d.ts +1 -0
  27. package/src/reporters/gitlab/api/register.js +17 -0
  28. package/src/reporters/gitlab/api/register.js.map +1 -0
  29. package/src/reporters/gitlab/builders/CodeQualityReportBuilder.d.ts +11 -0
  30. package/src/reporters/gitlab/builders/CodeQualityReportBuilder.js +53 -0
  31. package/src/reporters/gitlab/builders/CodeQualityReportBuilder.js.map +1 -0
  32. package/src/reporters/gitlab/builders/index.d.ts +1 -0
  33. package/src/reporters/gitlab/builders/index.js +6 -0
  34. package/src/reporters/gitlab/builders/index.js.map +1 -0
  35. package/src/reporters/gitlab/index.d.ts +2 -0
  36. package/src/reporters/gitlab/index.js +7 -0
  37. package/src/reporters/gitlab/index.js.map +1 -0
  38. package/src/reporters/gitlab/types/CodeQualityReport.d.ts +16 -0
  39. package/src/reporters/gitlab/types/CodeQualityReport.js +3 -0
  40. package/src/reporters/gitlab/types/CodeQualityReport.js.map +1 -0
  41. package/src/reporters/gitlab/types/index.d.ts +2 -0
  42. package/src/reporters/gitlab/types/index.js +3 -0
  43. package/src/reporters/gitlab/types/index.js.map +1 -0
  44. package/src/reporters/index.d.ts +1 -0
  45. package/src/reporters/index.js +1 -0
  46. package/src/reporters/index.js.map +1 -1
  47. package/src/utils/JestTestFilePathResolver.d.ts +4 -0
  48. package/src/utils/JestTestFilePathResolver.js +28 -0
  49. package/src/utils/JestTestFilePathResolver.js.map +1 -0
  50. package/src/utils/TestFilePathResolver.d.ts +4 -0
  51. package/src/utils/TestFilePathResolver.js +5 -0
  52. package/src/utils/TestFilePathResolver.js.map +1 -0
  53. package/src/utils/index.d.ts +3 -0
  54. package/src/utils/index.js +6 -1
  55. package/src/utils/index.js.map +1 -1
  56. package/src/utils/register.d.ts +1 -0
  57. package/src/utils/register.js +7 -0
  58. package/src/utils/register.js.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sectester/reporter",
3
- "version": "0.44.0",
3
+ "version": "0.46.0",
4
4
  "description": "Provide an abstraction for generating test results as part of the particular test frameworks.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -2,6 +2,7 @@ import { HttpMethod, Severity } from '@sectester/scan';
2
2
  export declare const issueWithoutResourcesText = "Issue in Bright UI: http://app.brightsec.com/scans/pDzxcEXQC8df1fcz1QwPf9/issues/pDzxcEXQC8df1fcz1QwPf9\nName: Database connection crashed\nSeverity: Medium\nRemediation:\nThe best way to protect against those kind of issues is making sure the Database resources are sufficient\nDetails:\nCross-site request forgery is a type of malicious website exploit.";
3
3
  export declare const issueWithoutResources: {
4
4
  id: `${string}-${string}-${string}-${string}-${string}`;
5
+ entryPointId: string;
5
6
  details: string;
6
7
  name: string;
7
8
  severity: Severity.MEDIUM;
@@ -29,6 +30,7 @@ export declare const fullyDescribedIssue: {
29
30
  }[];
30
31
  resources: string[];
31
32
  id: `${string}-${string}-${string}-${string}-${string}`;
33
+ entryPointId: string;
32
34
  details: string;
33
35
  name: string;
34
36
  severity: Severity.MEDIUM;
@@ -51,6 +53,7 @@ export declare const issueWithoutExtraInfoText = "Issue in Bright UI: http://a
51
53
  export declare const issueWithoutExtraInfo: {
52
54
  resources: string[];
53
55
  id: `${string}-${string}-${string}-${string}-${string}`;
56
+ entryPointId: string;
54
57
  details: string;
55
58
  name: string;
56
59
  severity: Severity.MEDIUM;
@@ -12,6 +12,7 @@ Details:
12
12
  Cross-site request forgery is a type of malicious website exploit.`;
13
13
  exports.issueWithoutResources = {
14
14
  id: (0, crypto_1.randomUUID)(),
15
+ entryPointId: 'upmVm5iPkddvzY6RisT7Cr',
15
16
  details: 'Cross-site request forgery is a type of malicious website exploit.',
16
17
  name: 'Database connection crashed',
17
18
  severity: scan_1.Severity.MEDIUM,
@@ -1 +1 @@
1
- {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/__fixtures__/issues.ts"],"names":[],"mappings":";;;AAAA,0CAA8D;AAC9D,mCAAoC;AAEvB,QAAA,yBAAyB,GAAG;;;;;;mEAM0B,CAAC;AACvD,QAAA,qBAAqB,GAAG;IACnC,EAAE,EAAE,IAAA,mBAAU,GAAE;IAChB,OAAO,EAAE,oEAAoE;IAC7E,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,eAAQ,CAAC,MAAM;IACzB,QAAQ,EAAE,MAAM;IAChB,MAAM,EACJ,2GAA2G;IAC7G,IAAI,EAAE,8CAA8C;IACpD,IAAI,EAAE,IAAI,IAAI,EAAE;IAChB,eAAe,EAAE;QACf,MAAM,EAAE,iBAAU,CAAC,GAAG;QACtB,GAAG,EAAE,6BAA6B;KACnC;IACD,OAAO,EAAE;QACP,MAAM,EAAE,iBAAU,CAAC,GAAG;QACtB,GAAG,EAAE,6BAA6B;KACnC;IACD,IAAI,EAAE,qFAAqF;IAC3F,SAAS,EAAE,IAAI;CACA,CAAC;AAEL,QAAA,uBAAuB,GAAG,GAAG,iCAAyB;;;;;;;oEAOC,CAAC;AACxD,QAAA,mBAAmB,GAAG;IACjC,GAAG,6BAAqB;IACxB,QAAQ,EAAE;QACR;YACE,QAAQ,EAAE,0CAA0C;YACpD,IAAI,EAAE,6IAA6I;YACnJ,KAAK,EAAE;gBACL,mEAAmE;aACpE;SACF;KACF;IACD,SAAS,EAAE;QACT,mEAAmE;KACpE;CACF,CAAC;AACW,QAAA,yBAAyB,GAAG,GAAG,iCAAyB;;qEAEA,CAAC;AACzD,QAAA,qBAAqB,GAAG;IACnC,GAAG,6BAAqB;IACxB,SAAS,EAAE;QACT,mEAAmE;KACpE;CACc,CAAC"}
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/__fixtures__/issues.ts"],"names":[],"mappings":";;;AAAA,0CAA8D;AAC9D,mCAAoC;AAEvB,QAAA,yBAAyB,GAAG;;;;;;mEAM0B,CAAC;AACvD,QAAA,qBAAqB,GAAG;IACnC,EAAE,EAAE,IAAA,mBAAU,GAAE;IAChB,YAAY,EAAE,wBAAwB;IACtC,OAAO,EAAE,oEAAoE;IAC7E,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,eAAQ,CAAC,MAAM;IACzB,QAAQ,EAAE,MAAM;IAChB,MAAM,EACJ,2GAA2G;IAC7G,IAAI,EAAE,8CAA8C;IACpD,IAAI,EAAE,IAAI,IAAI,EAAE;IAChB,eAAe,EAAE;QACf,MAAM,EAAE,iBAAU,CAAC,GAAG;QACtB,GAAG,EAAE,6BAA6B;KACnC;IACD,OAAO,EAAE;QACP,MAAM,EAAE,iBAAU,CAAC,GAAG;QACtB,GAAG,EAAE,6BAA6B;KACnC;IACD,IAAI,EAAE,qFAAqF;IAC3F,SAAS,EAAE,IAAI;CACA,CAAC;AAEL,QAAA,uBAAuB,GAAG,GAAG,iCAAyB;;;;;;;oEAOC,CAAC;AACxD,QAAA,mBAAmB,GAAG;IACjC,GAAG,6BAAqB;IACxB,QAAQ,EAAE;QACR;YACE,QAAQ,EAAE,0CAA0C;YACpD,IAAI,EAAE,6IAA6I;YACnJ,KAAK,EAAE;gBACL,mEAAmE;aACpE;SACF;KACF;IACD,SAAS,EAAE;QACT,mEAAmE;KACpE;CACF,CAAC;AACW,QAAA,yBAAyB,GAAG,GAAG,iCAAyB;;qEAEA,CAAC;AACzD,QAAA,qBAAqB,GAAG;IACnC,GAAG,6BAAqB;IACxB,SAAS,EAAE;QACT,mEAAmE;KACpE;CACc,CAAC"}
package/src/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { PlainTextFormatter } from './formatters';
2
2
  export { Reporter, Formatter } from './lib';
3
- export { GitHubCheckRunReporter, StdReporter } from './reporters';
3
+ export { GitHubCheckRunReporter, GitLabCodeQualityReporter, StdReporter } from './reporters';
package/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StdReporter = exports.GitHubCheckRunReporter = exports.Formatter = exports.Reporter = exports.PlainTextFormatter = void 0;
3
+ exports.StdReporter = exports.GitLabCodeQualityReporter = exports.GitHubCheckRunReporter = exports.Formatter = exports.Reporter = exports.PlainTextFormatter = void 0;
4
4
  var formatters_1 = require("./formatters");
5
5
  Object.defineProperty(exports, "PlainTextFormatter", { enumerable: true, get: function () { return formatters_1.PlainTextFormatter; } });
6
6
  var lib_1 = require("./lib");
@@ -8,5 +8,6 @@ Object.defineProperty(exports, "Reporter", { enumerable: true, get: function ()
8
8
  Object.defineProperty(exports, "Formatter", { enumerable: true, get: function () { return lib_1.Formatter; } });
9
9
  var reporters_1 = require("./reporters");
10
10
  Object.defineProperty(exports, "GitHubCheckRunReporter", { enumerable: true, get: function () { return reporters_1.GitHubCheckRunReporter; } });
11
+ Object.defineProperty(exports, "GitLabCodeQualityReporter", { enumerable: true, get: function () { return reporters_1.GitLabCodeQualityReporter; } });
11
12
  Object.defineProperty(exports, "StdReporter", { enumerable: true, get: function () { return reporters_1.StdReporter; } });
12
13
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/reporter/src/index.ts"],"names":[],"mappings":";;;AAAA,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAC3B,6BAA4C;AAAnC,+FAAA,QAAQ,OAAA;AAAE,gGAAA,SAAS,OAAA;AAC5B,yCAAkE;AAAzD,mHAAA,sBAAsB,OAAA;AAAE,wGAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/reporter/src/index.ts"],"names":[],"mappings":";;;AAAA,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAC3B,6BAA4C;AAAnC,+FAAA,QAAQ,OAAA;AAAE,gGAAA,SAAS,OAAA;AAC5B,yCAIqB;AAHnB,mHAAA,sBAAsB,OAAA;AACtB,sHAAA,yBAAyB,OAAA;AACzB,wGAAA,WAAW,OAAA"}
@@ -1,12 +1,13 @@
1
1
  import { Reporter } from '../../lib';
2
2
  import type { GitHubClient } from './api';
3
3
  import type { GitHubConfig } from './types';
4
+ import { TestFilePathResolver } from '../../utils';
4
5
  import type { Scan } from '@sectester/scan';
5
6
  export declare class GitHubCheckRunReporter implements Reporter {
6
7
  private readonly config;
7
8
  private readonly githubClient;
8
- constructor(config: GitHubConfig, githubClient: GitHubClient);
9
+ private readonly testFilePathResolver;
10
+ constructor(config: GitHubConfig, githubClient: GitHubClient, testFilePathResolver: TestFilePathResolver);
9
11
  report(scan: Scan): Promise<void>;
10
12
  private createCheckRunPayloadBuilder;
11
- private getTestFilePath;
12
13
  }
@@ -4,13 +4,14 @@ exports.GitHubCheckRunReporter = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const api_1 = require("./api");
6
6
  const builders_1 = require("./builders");
7
+ const utils_1 = require("../../utils");
7
8
  const tsyringe_1 = require("tsyringe");
8
- const node_path_1 = tslib_1.__importDefault(require("node:path"));
9
9
  // TODO add `GitHubCheckRunReporter` description to README
10
10
  let GitHubCheckRunReporter = class GitHubCheckRunReporter {
11
- constructor(config, githubClient) {
11
+ constructor(config, githubClient, testFilePathResolver) {
12
12
  this.config = config;
13
13
  this.githubClient = githubClient;
14
+ this.testFilePathResolver = testFilePathResolver;
14
15
  if (!this.config.token) {
15
16
  throw new Error('GitHub token is not set');
16
17
  }
@@ -29,25 +30,10 @@ let GitHubCheckRunReporter = class GitHubCheckRunReporter {
29
30
  await this.githubClient.createCheckRun(checkRunPayload);
30
31
  }
31
32
  createCheckRunPayloadBuilder(issues) {
33
+ const testFilePath = this.testFilePathResolver.getTestFilePath();
32
34
  return issues.length === 1
33
- ? new builders_1.SingleItemPayloadBuilder(issues[0], this.config.commitSha, this.getTestFilePath())
34
- : new builders_1.MultiItemsPayloadBuilder(issues, this.config.commitSha, this.getTestFilePath());
35
- }
36
- // TODO subject to improvement
37
- getTestFilePath() {
38
- var _a;
39
- // Check if running in Jest environment
40
- const jestState = (_a = global.expect) === null || _a === void 0 ? void 0 : _a.getState();
41
- if (jestState) {
42
- const testPath = jestState.testPath;
43
- const rootDir = jestState.snapshotState._rootDir;
44
- return node_path_1.default.join(node_path_1.default.basename(rootDir), node_path_1.default.relative(rootDir, testPath));
45
- }
46
- // Relies on `TestContext` from Node.js built-in test runner appearing in the stack
47
- const matchRes = String(new Error().stack).match(/\n\s+at (?:async )?TestContext.* \((.*):\d+:\d+\)\n/);
48
- return (matchRes === null || matchRes === void 0 ? void 0 : matchRes[1])
49
- ? node_path_1.default.relative(process.cwd(), matchRes[1] || '')
50
- : 'unknown';
35
+ ? new builders_1.SingleItemPayloadBuilder(issues[0], this.config.commitSha, testFilePath)
36
+ : new builders_1.MultiItemsPayloadBuilder(issues, this.config.commitSha, testFilePath);
51
37
  }
52
38
  };
53
39
  exports.GitHubCheckRunReporter = GitHubCheckRunReporter;
@@ -55,6 +41,7 @@ exports.GitHubCheckRunReporter = GitHubCheckRunReporter = tslib_1.__decorate([
55
41
  (0, tsyringe_1.injectable)(),
56
42
  tslib_1.__param(0, (0, tsyringe_1.inject)(api_1.GITHUB_CONFIG)),
57
43
  tslib_1.__param(1, (0, tsyringe_1.inject)(api_1.GITHUB_CLIENT)),
58
- tslib_1.__metadata("design:paramtypes", [Object, Object])
44
+ tslib_1.__param(2, (0, tsyringe_1.inject)(utils_1.TEST_FILE_PATH_RESOLVER)),
45
+ tslib_1.__metadata("design:paramtypes", [Object, Object, Object])
59
46
  ], GitHubCheckRunReporter);
60
47
  //# sourceMappingURL=GitHubCheckRunReporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubCheckRunReporter.js","sourceRoot":"","sources":["../../../../../../packages/reporter/src/reporters/github/GitHubCheckRunReporter.ts"],"names":[],"mappings":";;;;AACA,+BAAqD;AAErD,yCAAgF;AAGhF,uCAA8C;AAE9C,kEAA6B;AAE7B,0DAA0D;AAEnD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAC0C,MAAoB,EACpB,YAA0B;QAD1B,WAAM,GAAN,MAAM,CAAc;QACpB,iBAAY,GAAZ,YAAY,CAAc;QAElE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAAU;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEhC,MAAM,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1E,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC1D,CAAC;IAEO,4BAA4B,CAClC,MAAe;QAEf,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,IAAI,mCAAwB,CAC1B,MAAM,CAAC,CAAC,CAAC,EACT,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,IAAI,CAAC,eAAe,EAAE,CACvB;YACH,CAAC,CAAC,IAAI,mCAAwB,CAC1B,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC;IACR,CAAC;IAED,8BAA8B;IACtB,eAAe;;QACrB,uCAAuC;QACvC,MAAM,SAAS,GAAG,MAAC,MAAc,CAAC,MAAM,0CAAE,QAAQ,EAAE,CAAC;QACrD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YACpC,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;YAEjD,OAAO,mBAAI,CAAC,IAAI,CACd,mBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EACtB,mBAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CACjC,CAAC;QACJ,CAAC;QAED,mFAAmF;QACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAC9C,qDAAqD,CACtD,CAAC;QAEF,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,CAAC;YAClB,CAAC,CAAC,mBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;CACF,CAAA;AAjEY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,qBAAU,GAAE;IAGR,mBAAA,IAAA,iBAAM,EAAC,mBAAa,CAAC,CAAA;IACrB,mBAAA,IAAA,iBAAM,EAAC,mBAAa,CAAC,CAAA;;GAHb,sBAAsB,CAiElC"}
1
+ {"version":3,"file":"GitHubCheckRunReporter.js","sourceRoot":"","sources":["../../../../../../packages/reporter/src/reporters/github/GitHubCheckRunReporter.ts"],"names":[],"mappings":";;;;AACA,+BAAqD;AAErD,yCAAgF;AAGhF,uCAA4E;AAC5E,uCAA8C;AAG9C,0DAA0D;AAEnD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAC0C,MAAoB,EACpB,YAA0B,EAEjD,oBAA0C;QAHnB,WAAM,GAAN,MAAM,CAAc;QACpB,iBAAY,GAAZ,YAAY,CAAc;QAEjD,yBAAoB,GAApB,oBAAoB,CAAsB;QAE3D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAAU;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEhC,MAAM,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1E,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC1D,CAAC;IAEO,4BAA4B,CAClC,MAAe;QAEf,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QAEjE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,IAAI,mCAAwB,CAC1B,MAAM,CAAC,CAAC,CAAC,EACT,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,YAAY,CACb;YACH,CAAC,CAAC,IAAI,mCAAwB,CAC1B,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,YAAY,CACb,CAAC;IACR,CAAC;CACF,CAAA;AA7CY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,qBAAU,GAAE;IAGR,mBAAA,IAAA,iBAAM,EAAC,mBAAa,CAAC,CAAA;IACrB,mBAAA,IAAA,iBAAM,EAAC,mBAAa,CAAC,CAAA;IACrB,mBAAA,IAAA,iBAAM,EAAC,+BAAuB,CAAC,CAAA;;GAJvB,sBAAsB,CA6ClC"}
@@ -0,0 +1,12 @@
1
+ import { Reporter } from '../../lib';
2
+ import type { GitLabCIArtifacts } from './api';
3
+ import { TestFilePathResolver } from '../../utils';
4
+ import type { Scan } from '@sectester/scan';
5
+ export declare class GitLabCodeQualityReporter implements Reporter {
6
+ private readonly gitlabCIArtifacts;
7
+ private readonly testFilePathResolver;
8
+ constructor(gitlabCIArtifacts: GitLabCIArtifacts, testFilePathResolver: TestFilePathResolver);
9
+ report(scan: Scan): Promise<void>;
10
+ private generateCodeQualityReport;
11
+ private createCodeQualityReportBuilder;
12
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitLabCodeQualityReporter = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const api_1 = require("./api");
6
+ const builders_1 = require("./builders");
7
+ const utils_1 = require("../../utils");
8
+ const tsyringe_1 = require("tsyringe");
9
+ let GitLabCodeQualityReporter = class GitLabCodeQualityReporter {
10
+ constructor(gitlabCIArtifacts, testFilePathResolver) {
11
+ this.gitlabCIArtifacts = gitlabCIArtifacts;
12
+ this.testFilePathResolver = testFilePathResolver;
13
+ }
14
+ async report(scan) {
15
+ const issues = await scan.issues();
16
+ if (issues.length > 0) {
17
+ await this.generateCodeQualityReport(issues);
18
+ }
19
+ }
20
+ async generateCodeQualityReport(issues) {
21
+ const testFilePath = this.testFilePathResolver.getTestFilePath();
22
+ const codeQualityReport = this.createCodeQualityReportBuilder(issues, testFilePath).build();
23
+ await this.gitlabCIArtifacts.writeCodeQualityReport(codeQualityReport);
24
+ }
25
+ createCodeQualityReportBuilder(issues, testFilePath) {
26
+ return new builders_1.CodeQualityReportBuilder(issues, testFilePath);
27
+ }
28
+ };
29
+ exports.GitLabCodeQualityReporter = GitLabCodeQualityReporter;
30
+ exports.GitLabCodeQualityReporter = GitLabCodeQualityReporter = tslib_1.__decorate([
31
+ (0, tsyringe_1.injectable)(),
32
+ tslib_1.__param(0, (0, tsyringe_1.inject)(api_1.GITLAB_CI_ARTIFACTS)),
33
+ tslib_1.__param(1, (0, tsyringe_1.inject)(utils_1.TEST_FILE_PATH_RESOLVER)),
34
+ tslib_1.__metadata("design:paramtypes", [Object, Object])
35
+ ], GitLabCodeQualityReporter);
36
+ //# sourceMappingURL=GitLabCodeQualityReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitLabCodeQualityReporter.js","sourceRoot":"","sources":["../../../../../../packages/reporter/src/reporters/gitlab/GitLabCodeQualityReporter.ts"],"names":[],"mappings":";;;;AACA,+BAA4C;AAE5C,yCAAsD;AACtD,uCAA4E;AAC5E,uCAA8C;AAIvC,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAEmB,iBAAoC,EAEpC,oBAA0C;QAF1C,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpC,yBAAoB,GAApB,oBAAoB,CAAsB;IAC1D,CAAC;IAEG,KAAK,CAAC,MAAM,CAAC,IAAU;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEnC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,MAAe;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,8BAA8B,CAC3D,MAAM,EACN,YAAY,CACb,CAAC,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IACzE,CAAC;IAEO,8BAA8B,CACpC,MAAe,EACf,YAAoB;QAEpB,OAAO,IAAI,mCAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;CACF,CAAA;AA/BY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,qBAAU,GAAE;IAGR,mBAAA,IAAA,iBAAM,EAAC,yBAAmB,CAAC,CAAA;IAE3B,mBAAA,IAAA,iBAAM,EAAC,+BAAuB,CAAC,CAAA;;GAJvB,yBAAyB,CA+BrC"}
@@ -0,0 +1,5 @@
1
+ import type { CodeQualityReport } from '../types';
2
+ export interface GitLabCIArtifacts {
3
+ writeCodeQualityReport(report: CodeQualityReport): Promise<void>;
4
+ }
5
+ export declare const GITLAB_CI_ARTIFACTS: unique symbol;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GITLAB_CI_ARTIFACTS = void 0;
4
+ exports.GITLAB_CI_ARTIFACTS = Symbol('GITLAB_CI_ARTIFACTS');
5
+ //# sourceMappingURL=GitLabCIArtifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitLabCIArtifacts.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/api/GitLabCIArtifacts.ts"],"names":[],"mappings":";;;AAMa,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CodeQualityReport } from '../types';
2
+ import type { GitLabCIArtifacts } from './GitLabCIArtifacts';
3
+ import type { GitLabConfig } from './GitLabConfig';
4
+ export declare class GitLabCIArtifactsFileWriter implements GitLabCIArtifacts {
5
+ private readonly config;
6
+ constructor(config: GitLabConfig);
7
+ writeCodeQualityReport(report: CodeQualityReport): Promise<void>;
8
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitLabCIArtifactsFileWriter = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const GitLabConfig_1 = require("./GitLabConfig");
6
+ const tsyringe_1 = require("tsyringe");
7
+ const promises_1 = require("node:fs/promises");
8
+ let GitLabCIArtifactsFileWriter = class GitLabCIArtifactsFileWriter {
9
+ constructor(config) {
10
+ this.config = config;
11
+ }
12
+ async writeCodeQualityReport(report) {
13
+ // This method writes GitLab Code Quality reports to a file.
14
+ // To display these reports in GitLab merge requests, you need to configure your .gitlab-ci.yml:
15
+ // artifacts:
16
+ // reports:
17
+ // codequality: gl-code-quality-report.json
18
+ const reportJson = JSON.stringify(report, null, 2);
19
+ const filename = this.config.codeQualityReportFilename;
20
+ await (0, promises_1.writeFile)(filename, reportJson, 'utf-8');
21
+ }
22
+ };
23
+ exports.GitLabCIArtifactsFileWriter = GitLabCIArtifactsFileWriter;
24
+ exports.GitLabCIArtifactsFileWriter = GitLabCIArtifactsFileWriter = tslib_1.__decorate([
25
+ (0, tsyringe_1.injectable)(),
26
+ tslib_1.__param(0, (0, tsyringe_1.inject)(GitLabConfig_1.GITLAB_CONFIG)),
27
+ tslib_1.__metadata("design:paramtypes", [Object])
28
+ ], GitLabCIArtifactsFileWriter);
29
+ //# sourceMappingURL=GitLabCodeQualityFileWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitLabCodeQualityFileWriter.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.ts"],"names":[],"mappings":";;;;AAGA,iDAA+C;AAC/C,uCAA8C;AAC9C,+CAA6C;AAGtC,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,YAAoD,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAErE,KAAK,CAAC,sBAAsB,CACjC,MAAyB;QAEzB,4DAA4D;QAC5D,gGAAgG;QAChG,eAAe;QACf,eAAe;QACf,iDAAiD;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACvD,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAfY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,qBAAU,GAAE;IAEE,mBAAA,IAAA,iBAAM,EAAC,4BAAa,CAAC,CAAA;;GADvB,2BAA2B,CAevC"}
@@ -0,0 +1,4 @@
1
+ export interface GitLabConfig {
2
+ codeQualityReportFilename: string;
3
+ }
4
+ export declare const GITLAB_CONFIG: unique symbol;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GITLAB_CONFIG = void 0;
4
+ exports.GITLAB_CONFIG = Symbol('GITLAB_CONFIG');
5
+ //# sourceMappingURL=GitLabConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitLabConfig.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/api/GitLabConfig.ts"],"names":[],"mappings":";;;AAIa,QAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { GitLabCIArtifacts, GITLAB_CI_ARTIFACTS } from './GitLabCIArtifacts';
2
+ export { GitLabCIArtifactsFileWriter } from './GitLabCodeQualityFileWriter';
3
+ export { GitLabConfig, GITLAB_CONFIG } from './GitLabConfig';
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GITLAB_CONFIG = exports.GitLabCIArtifactsFileWriter = exports.GITLAB_CI_ARTIFACTS = void 0;
4
+ var GitLabCIArtifacts_1 = require("./GitLabCIArtifacts");
5
+ Object.defineProperty(exports, "GITLAB_CI_ARTIFACTS", { enumerable: true, get: function () { return GitLabCIArtifacts_1.GITLAB_CI_ARTIFACTS; } });
6
+ var GitLabCodeQualityFileWriter_1 = require("./GitLabCodeQualityFileWriter");
7
+ Object.defineProperty(exports, "GitLabCIArtifactsFileWriter", { enumerable: true, get: function () { return GitLabCodeQualityFileWriter_1.GitLabCIArtifactsFileWriter; } });
8
+ var GitLabConfig_1 = require("./GitLabConfig");
9
+ Object.defineProperty(exports, "GITLAB_CONFIG", { enumerable: true, get: function () { return GitLabConfig_1.GITLAB_CONFIG; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/api/index.ts"],"names":[],"mappings":";;;AAAA,yDAA6E;AAAjD,wHAAA,mBAAmB,OAAA;AAC/C,6EAA4E;AAAnE,0IAAA,2BAA2B,OAAA;AACpC,+CAA6D;AAAtC,6GAAA,aAAa,OAAA"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ const GitLabCodeQualityFileWriter_1 = require("./GitLabCodeQualityFileWriter");
5
+ const GitLabCIArtifacts_1 = require("./GitLabCIArtifacts");
6
+ const GitLabConfig_1 = require("./GitLabConfig");
7
+ const tsyringe_1 = require("tsyringe");
8
+ tsyringe_1.container.register(GitLabConfig_1.GITLAB_CONFIG, {
9
+ useValue: {
10
+ codeQualityReportFilename: process.env.GITLAB_CODE_QUALITY_REPORT_FILENAME ||
11
+ 'gl-code-quality-report.json'
12
+ }
13
+ });
14
+ tsyringe_1.container.register(GitLabCIArtifacts_1.GITLAB_CI_ARTIFACTS, {
15
+ useClass: GitLabCodeQualityFileWriter_1.GitLabCIArtifactsFileWriter
16
+ });
17
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/api/register.ts"],"names":[],"mappings":";;AAAA,4BAA0B;AAC1B,+EAA4E;AAC5E,2DAA0D;AAC1D,iDAA+C;AAC/C,uCAAqC;AAErC,oBAAS,CAAC,QAAQ,CAAC,4BAAa,EAAE;IAChC,QAAQ,EAAE;QACR,yBAAyB,EACvB,OAAO,CAAC,GAAG,CAAC,mCAAmC;YAC/C,6BAA6B;KAChC;CACF,CAAC,CAAC;AAEH,oBAAS,CAAC,QAAQ,CAAC,uCAAmB,EAAE;IACtC,QAAQ,EAAE,yDAA2B;CACtC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CodeQualityReport } from '../types';
2
+ import { Issue } from '@sectester/scan';
3
+ export declare class CodeQualityReportBuilder {
4
+ private readonly issues;
5
+ private readonly testFilePath;
6
+ constructor(issues: Issue[], testFilePath: string);
7
+ build(): CodeQualityReport;
8
+ private convertIssueToCodeQualityIssue;
9
+ private createFingerprint;
10
+ private mapSeverity;
11
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeQualityReportBuilder = void 0;
4
+ const scan_1 = require("@sectester/scan");
5
+ const node_crypto_1 = require("node:crypto");
6
+ class CodeQualityReportBuilder {
7
+ constructor(issues, testFilePath) {
8
+ this.issues = issues;
9
+ this.testFilePath = testFilePath;
10
+ }
11
+ build() {
12
+ return this.issues.map(issue => this.convertIssueToCodeQualityIssue(issue));
13
+ }
14
+ convertIssueToCodeQualityIssue(issue) {
15
+ const { originalRequest, name, severity } = issue;
16
+ const description = `${name} vulnerability found at ${originalRequest.method.toUpperCase()} ${originalRequest.url}`;
17
+ const fingerprint = this.createFingerprint(issue);
18
+ const gitlabSeverity = this.mapSeverity(severity);
19
+ return {
20
+ description,
21
+ fingerprint,
22
+ check_name: name,
23
+ severity: gitlabSeverity,
24
+ raw_details: JSON.stringify(issue, null, 2),
25
+ location: {
26
+ path: this.testFilePath,
27
+ lines: {
28
+ begin: 1
29
+ }
30
+ }
31
+ };
32
+ }
33
+ createFingerprint(issue) {
34
+ const content = `${issue.name}-${issue.entryPointId}`;
35
+ return (0, node_crypto_1.createHash)('md5').update(content).digest('hex');
36
+ }
37
+ mapSeverity(severity) {
38
+ switch (severity) {
39
+ case scan_1.Severity.LOW:
40
+ return 'minor';
41
+ case scan_1.Severity.MEDIUM:
42
+ return 'major';
43
+ case scan_1.Severity.HIGH:
44
+ return 'critical';
45
+ case scan_1.Severity.CRITICAL:
46
+ return 'blocker';
47
+ default:
48
+ return 'info';
49
+ }
50
+ }
51
+ }
52
+ exports.CodeQualityReportBuilder = CodeQualityReportBuilder;
53
+ //# sourceMappingURL=CodeQualityReportBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeQualityReportBuilder.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/builders/CodeQualityReportBuilder.ts"],"names":[],"mappings":";;;AAKA,0CAAkD;AAClD,6CAAyC;AAEzC,MAAa,wBAAwB;IACnC,YACmB,MAAe,EACf,YAAoB;QADpB,WAAM,GAAN,MAAM,CAAS;QACf,iBAAY,GAAZ,YAAY,CAAQ;IACpC,CAAC;IAEG,KAAK;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEO,8BAA8B,CAAC,KAAY;QACjD,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAClD,MAAM,WAAW,GAAG,GAAG,IAAI,2BAA2B,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;QAEpH,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAElD,OAAO;YACL,WAAW;YACX,WAAW;YACX,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,cAAc;YACxB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC;iBACT;aACF;SACF,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,KAAY;QACpC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAEtD,OAAO,IAAA,wBAAU,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAEO,WAAW,CAAC,QAAkB;QACpC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,eAAQ,CAAC,GAAG;gBACf,OAAO,OAAO,CAAC;YACjB,KAAK,eAAQ,CAAC,MAAM;gBAClB,OAAO,OAAO,CAAC;YACjB,KAAK,eAAQ,CAAC,IAAI;gBAChB,OAAO,UAAU,CAAC;YACpB,KAAK,eAAQ,CAAC,QAAQ;gBACpB,OAAO,SAAS,CAAC;YACnB;gBACE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;CACF;AArDD,4DAqDC"}
@@ -0,0 +1 @@
1
+ export { CodeQualityReportBuilder } from './CodeQualityReportBuilder';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeQualityReportBuilder = void 0;
4
+ var CodeQualityReportBuilder_1 = require("./CodeQualityReportBuilder");
5
+ Object.defineProperty(exports, "CodeQualityReportBuilder", { enumerable: true, get: function () { return CodeQualityReportBuilder_1.CodeQualityReportBuilder; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/builders/index.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA"}
@@ -0,0 +1,2 @@
1
+ import './api/register';
2
+ export { GitLabCodeQualityReporter } from './GitLabCodeQualityReporter';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitLabCodeQualityReporter = void 0;
4
+ require("./api/register");
5
+ var GitLabCodeQualityReporter_1 = require("./GitLabCodeQualityReporter");
6
+ Object.defineProperty(exports, "GitLabCodeQualityReporter", { enumerable: true, get: function () { return GitLabCodeQualityReporter_1.GitLabCodeQualityReporter; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/reporter/src/reporters/gitlab/index.ts"],"names":[],"mappings":";;;AAAA,0BAAwB;AACxB,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA"}
@@ -0,0 +1,16 @@
1
+ export interface CodeQualityIssue {
2
+ description: string;
3
+ check_name: string;
4
+ raw_details: string;
5
+ fingerprint: string;
6
+ severity: CodeQualitySeverity;
7
+ location: {
8
+ path: string;
9
+ lines: {
10
+ begin: number;
11
+ end?: number;
12
+ };
13
+ };
14
+ }
15
+ export type CodeQualityReport = CodeQualityIssue[];
16
+ export type CodeQualitySeverity = 'info' | 'minor' | 'major' | 'critical' | 'blocker';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=CodeQualityReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeQualityReport.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/types/CodeQualityReport.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { GitLabConfig } from '../api/GitLabConfig';
2
+ export { CodeQualityReport, CodeQualityIssue, CodeQualitySeverity } from './CodeQualityReport';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/types/index.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  export * from './github';
2
+ export * from './gitlab';
2
3
  export * from './std';
@@ -2,5 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./github"), exports);
5
+ tslib_1.__exportStar(require("./gitlab"), exports);
5
6
  tslib_1.__exportStar(require("./std"), exports);
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/reporters/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,gDAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/reporters/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,mDAAyB;AACzB,gDAAsB"}
@@ -0,0 +1,4 @@
1
+ import { TestFilePathResolver } from './TestFilePathResolver';
2
+ export declare class JestTestFilePathResolver implements TestFilePathResolver {
3
+ getTestFilePath(): string;
4
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JestTestFilePathResolver = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const tsyringe_1 = require("tsyringe");
6
+ const node_path_1 = require("node:path");
7
+ let JestTestFilePathResolver = class JestTestFilePathResolver {
8
+ getTestFilePath() {
9
+ var _a, _b;
10
+ // Check if running in Jest environment
11
+ const jestState = (_b = (_a = global.expect) === null || _a === void 0 ? void 0 : _a.getState) === null || _b === void 0 ? void 0 : _b.call(_a);
12
+ if (jestState) {
13
+ const testPath = jestState.testPath;
14
+ const rootDir = jestState.snapshotState._rootDir;
15
+ return (0, node_path_1.join)((0, node_path_1.basename)(rootDir), (0, node_path_1.relative)(rootDir, testPath));
16
+ }
17
+ // Relies on `TestContext` from Node.js built-in test runner appearing in the stack
18
+ const matchRes = String(new Error().stack).match(/\n\s+at (?:async )?TestContext.* \((.*):\d+:\d+\)\n/);
19
+ return (matchRes === null || matchRes === void 0 ? void 0 : matchRes[1])
20
+ ? (0, node_path_1.relative)(process.cwd(), matchRes[1] || '')
21
+ : 'unknown';
22
+ }
23
+ };
24
+ exports.JestTestFilePathResolver = JestTestFilePathResolver;
25
+ exports.JestTestFilePathResolver = JestTestFilePathResolver = tslib_1.__decorate([
26
+ (0, tsyringe_1.injectable)()
27
+ ], JestTestFilePathResolver);
28
+ //# sourceMappingURL=JestTestFilePathResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JestTestFilePathResolver.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/utils/JestTestFilePathResolver.ts"],"names":[],"mappings":";;;;AACA,uCAAsC;AACtC,yCAAqD;AAG9C,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAC5B,eAAe;;QACpB,uCAAuC;QACvC,MAAM,SAAS,GAAG,MAAA,MAAC,MAAc,CAAC,MAAM,0CAAE,QAAQ,kDAAI,CAAC;QACvD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YACpC,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;YAEjD,OAAO,IAAA,gBAAI,EAAC,IAAA,oBAAQ,EAAC,OAAO,CAAC,EAAE,IAAA,oBAAQ,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,mFAAmF;QACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAC9C,qDAAqD,CACtD,CAAC;QAEF,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,CAAC;YAClB,CAAC,CAAC,IAAA,oBAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;CACF,CAAA;AApBY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,qBAAU,GAAE;GACA,wBAAwB,CAoBpC"}
@@ -0,0 +1,4 @@
1
+ export interface TestFilePathResolver {
2
+ getTestFilePath(): string;
3
+ }
4
+ export declare const TEST_FILE_PATH_RESOLVER: unique symbol;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TEST_FILE_PATH_RESOLVER = void 0;
4
+ exports.TEST_FILE_PATH_RESOLVER = Symbol('TEST_FILE_PATH_RESOLVER');
5
+ //# sourceMappingURL=TestFilePathResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestFilePathResolver.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/utils/TestFilePathResolver.ts"],"names":[],"mappings":";;;AAIa,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC"}
@@ -1 +1,4 @@
1
+ import './register';
1
2
  export { IssuesGrouper } from './issues-grouper';
3
+ export { TEST_FILE_PATH_RESOLVER, TestFilePathResolver } from './TestFilePathResolver';
4
+ export { JestTestFilePathResolver } from './JestTestFilePathResolver';
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IssuesGrouper = void 0;
3
+ exports.JestTestFilePathResolver = exports.TEST_FILE_PATH_RESOLVER = exports.IssuesGrouper = void 0;
4
+ require("./register");
4
5
  var issues_grouper_1 = require("./issues-grouper");
5
6
  Object.defineProperty(exports, "IssuesGrouper", { enumerable: true, get: function () { return issues_grouper_1.IssuesGrouper; } });
7
+ var TestFilePathResolver_1 = require("./TestFilePathResolver");
8
+ Object.defineProperty(exports, "TEST_FILE_PATH_RESOLVER", { enumerable: true, get: function () { return TestFilePathResolver_1.TEST_FILE_PATH_RESOLVER; } });
9
+ var JestTestFilePathResolver_1 = require("./JestTestFilePathResolver");
10
+ Object.defineProperty(exports, "JestTestFilePathResolver", { enumerable: true, get: function () { return JestTestFilePathResolver_1.JestTestFilePathResolver; } });
6
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/utils/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/utils/index.ts"],"names":[],"mappings":";;;AAAA,sBAAoB;AACpB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,+DAGgC;AAF9B,+HAAA,uBAAuB,OAAA;AAGzB,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const TestFilePathResolver_1 = require("./TestFilePathResolver");
4
+ const JestTestFilePathResolver_1 = require("./JestTestFilePathResolver");
5
+ const tsyringe_1 = require("tsyringe");
6
+ tsyringe_1.container.registerSingleton(TestFilePathResolver_1.TEST_FILE_PATH_RESOLVER, JestTestFilePathResolver_1.JestTestFilePathResolver);
7
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/utils/register.ts"],"names":[],"mappings":";;AAAA,iEAAiE;AACjE,yEAAsE;AACtE,uCAAqC;AAErC,oBAAS,CAAC,iBAAiB,CAAC,8CAAuB,EAAE,mDAAwB,CAAC,CAAC"}