basant307/AI_Governance_Project
048
1import { EventEmitter } from "./helper/promise-event-emitter.js";2import { createTranslator } from "./helper/SecretLintRuleMessageTranslator.js";3export const createContextEvents = () => {4 const contextEvents = new EventEmitter();5 const REPORT_SYMBOL = Symbol("report");6 const IGNORE_SYMBOL = Symbol("ignore");7 return {8 report(descriptor) {9 contextEvents.emit(REPORT_SYMBOL, descriptor);10 },11 onReport(handler) {12 const listener = (descriptor) => {13 handler(descriptor);14 };15 contextEvents.on(REPORT_SYMBOL, listener);16 return () => {17 contextEvents.off(REPORT_SYMBOL, listener);18 };19 },20 ignore(descriptor) {21 contextEvents.emit(IGNORE_SYMBOL, descriptor);22 },23 onIgnore(handler) {24 const listener = (descriptor) => {25 handler(descriptor);26 };27 contextEvents.on(IGNORE_SYMBOL, listener);28 return () => {29 contextEvents.off(IGNORE_SYMBOL, listener);30 };31 },32 };33};34export const createRuleContext = ({ ruleId, ruleParentId, meta, severity, sourceCode, contextEvents, sharedOptions, locale, }) => {35 return {36 sharedOptions: sharedOptions,37 createTranslator: (messages) => {38 return createTranslator(messages, {39 defaultLocale: locale,40 });41 },42 ignore(descriptor) {43 const { message } = descriptor.message;44 contextEvents.ignore({45 type: "ignore",46 ruleId: ruleId,47 ruleParentId,48 range: descriptor.range,49 targetRuleId: descriptor.targetRuleId,50 loc: sourceCode.rangeToLocation(descriptor.range),51 message: message,52 });53 },54 report(descriptor) {55 const { message, messageId, data } = descriptor.message;56 // Default severity level is "error"57 const severityLevel = severity ?? "error";58 if (ruleParentId) {59 contextEvents.report({60 ...descriptor,61 type: "message",62 ruleId: ruleId,63 ruleParentId,64 loc: sourceCode.rangeToLocation(descriptor.range),65 severity: severityLevel,66 message,67 messageId,68 docsUrl: meta.docs?.url ? `${meta.docs.url}#${messageId}` : undefined,69 data,70 });71 }72 else {73 contextEvents.report({74 ...descriptor,75 type: "message",76 ruleId: ruleId,77 loc: sourceCode.rangeToLocation(descriptor.range),78 severity: severityLevel,79 message,80 messageId,81 docsUrl: meta.docs?.url ? `${meta.docs.url}#${messageId}` : undefined,82 data,83 });84 }85 },86 };87};88//# sourceMappingURL=RuleContext.js.map