@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.
- package/package.json +1 -1
- package/src/__fixtures__/issues.d.ts +3 -0
- package/src/__fixtures__/issues.js +1 -0
- package/src/__fixtures__/issues.js.map +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/reporters/github/GitHubCheckRunReporter.d.ts +3 -2
- package/src/reporters/github/GitHubCheckRunReporter.js +8 -21
- package/src/reporters/github/GitHubCheckRunReporter.js.map +1 -1
- package/src/reporters/gitlab/GitLabCodeQualityReporter.d.ts +12 -0
- package/src/reporters/gitlab/GitLabCodeQualityReporter.js +36 -0
- package/src/reporters/gitlab/GitLabCodeQualityReporter.js.map +1 -0
- package/src/reporters/gitlab/api/GitLabCIArtifacts.d.ts +5 -0
- package/src/reporters/gitlab/api/GitLabCIArtifacts.js +5 -0
- package/src/reporters/gitlab/api/GitLabCIArtifacts.js.map +1 -0
- package/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.d.ts +8 -0
- package/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.js +29 -0
- package/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.js.map +1 -0
- package/src/reporters/gitlab/api/GitLabConfig.d.ts +4 -0
- package/src/reporters/gitlab/api/GitLabConfig.js +5 -0
- package/src/reporters/gitlab/api/GitLabConfig.js.map +1 -0
- package/src/reporters/gitlab/api/index.d.ts +3 -0
- package/src/reporters/gitlab/api/index.js +10 -0
- package/src/reporters/gitlab/api/index.js.map +1 -0
- package/src/reporters/gitlab/api/register.d.ts +1 -0
- package/src/reporters/gitlab/api/register.js +17 -0
- package/src/reporters/gitlab/api/register.js.map +1 -0
- package/src/reporters/gitlab/builders/CodeQualityReportBuilder.d.ts +11 -0
- package/src/reporters/gitlab/builders/CodeQualityReportBuilder.js +53 -0
- package/src/reporters/gitlab/builders/CodeQualityReportBuilder.js.map +1 -0
- package/src/reporters/gitlab/builders/index.d.ts +1 -0
- package/src/reporters/gitlab/builders/index.js +6 -0
- package/src/reporters/gitlab/builders/index.js.map +1 -0
- package/src/reporters/gitlab/index.d.ts +2 -0
- package/src/reporters/gitlab/index.js +7 -0
- package/src/reporters/gitlab/index.js.map +1 -0
- package/src/reporters/gitlab/types/CodeQualityReport.d.ts +16 -0
- package/src/reporters/gitlab/types/CodeQualityReport.js +3 -0
- package/src/reporters/gitlab/types/CodeQualityReport.js.map +1 -0
- package/src/reporters/gitlab/types/index.d.ts +2 -0
- package/src/reporters/gitlab/types/index.js +3 -0
- package/src/reporters/gitlab/types/index.js.map +1 -0
- package/src/reporters/index.d.ts +1 -0
- package/src/reporters/index.js +1 -0
- package/src/reporters/index.js.map +1 -1
- package/src/utils/JestTestFilePathResolver.d.ts +4 -0
- package/src/utils/JestTestFilePathResolver.js +28 -0
- package/src/utils/JestTestFilePathResolver.js.map +1 -0
- package/src/utils/TestFilePathResolver.d.ts +4 -0
- package/src/utils/TestFilePathResolver.js +5 -0
- package/src/utils/TestFilePathResolver.js.map +1 -0
- package/src/utils/index.d.ts +3 -0
- package/src/utils/index.js +6 -1
- package/src/utils/index.js.map +1 -1
- package/src/utils/register.d.ts +1 -0
- package/src/utils/register.js +7 -0
- package/src/utils/register.js.map +1 -0
package/package.json
CHANGED
|
@@ -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
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,
|
|
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
|
-
|
|
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,
|
|
34
|
-
: new builders_1.MultiItemsPayloadBuilder(issues, this.config.commitSha,
|
|
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.
|
|
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,
|
|
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 @@
|
|
|
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 @@
|
|
|
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,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,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 @@
|
|
|
1
|
+
{"version":3,"file":"CodeQualityReport.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/types/CodeQualityReport.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/types/index.ts"],"names":[],"mappings":""}
|
package/src/reporters/index.d.ts
CHANGED
package/src/reporters/index.js
CHANGED
|
@@ -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,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 @@
|
|
|
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"}
|
package/src/utils/index.d.ts
CHANGED
package/src/utils/index.js
CHANGED
|
@@ -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
|
package/src/utils/index.js.map
CHANGED
|
@@ -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"}
|