51 lines
2.0 KiB
JavaScript
51 lines
2.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.CreateFindingCommand = void 0;
|
|
const Result_1 = require("../../../../shared/domain/Result");
|
|
const Finding_1 = require("../../domain/entities/Finding");
|
|
const Severity_1 = require("../../domain/value-objects/Severity");
|
|
const FindingType_1 = require("../../domain/value-objects/FindingType");
|
|
const Evidence_1 = require("../../domain/value-objects/Evidence");
|
|
class CreateFindingCommand {
|
|
constructor(repository, eventBus) {
|
|
this.repository = repository;
|
|
this.eventBus = eventBus;
|
|
}
|
|
async execute(request) {
|
|
let severity;
|
|
let type;
|
|
try {
|
|
severity = Severity_1.Severity.fromString(request.anomaly.severity);
|
|
type = FindingType_1.FindingType.fromString(request.anomaly.type);
|
|
}
|
|
catch (e) {
|
|
return (0, Result_1.Err)(e instanceof Error ? e.message : String(e));
|
|
}
|
|
const evidence = Evidence_1.Evidence.create({
|
|
screenshotPath: request.anomaly.evidence.screenshotPath,
|
|
domSnapshotPath: request.anomaly.evidence.domSnapshotPath,
|
|
httpLog: request.anomaly.evidence.httpLog,
|
|
rawErrors: request.anomaly.evidence.rawErrors,
|
|
});
|
|
const finding = Finding_1.Finding.create({
|
|
sessionId: request.sessionId,
|
|
severity,
|
|
type,
|
|
description: request.anomaly.description,
|
|
evidence,
|
|
actionTrace: request.anomaly.actionTrace,
|
|
browser: request.anomaly.browser,
|
|
browserVersion: request.anomaly.browserVersion,
|
|
aiEnrichment: request.anomaly.aiEnrichment,
|
|
});
|
|
await this.repository.save(finding);
|
|
const events = finding.domainEvents;
|
|
for (const event of events) {
|
|
await this.eventBus.publish(event);
|
|
}
|
|
finding.clearEvents();
|
|
return (0, Result_1.Ok)({ findingId: finding.id.toString() });
|
|
}
|
|
}
|
|
exports.CreateFindingCommand = CreateFindingCommand;
|