core/analyzers/credential.analyzer.ts
core/analyzers/credential.analyzer.ts is a file in Project Scripts. 26 lines of code and 5 definitions.
import { type Detector, detectedKinds } from "@ssot/secrets";
import { LINE_BREAK, TOKEN_BREAKS } from "#configuration/constants/credential.constants";
import type { CredentialFinding } from "#types/credential.types";
const tokensOf = function tokensOf(line: string): readonly string[] {
const found: string[] = [];
let current = "";
for (const character of line) {
if (TOKEN_BREAKS.has(character)) {
found.push(current);
current = "";
} else {
current += character;
}
}
return [...found, current].filter((token) => token.length > 0);
};
export const credentialFindings = function credentialFindings(
file: string,
text: string,
detectors: readonly Detector[],
): readonly CredentialFinding[] {
return text.split(LINE_BREAK).flatMap((line, index) => {
const kinds = [line, ...tokensOf(line)].flatMap((token) => detectedKinds(token, detectors));
return kinds.slice(0, 1).map((kind) => ({ file, kind, line: index + 1 }));
});
};