core/predicates/source.predicate.ts
core/predicates/source.predicate.ts is a file in GovLab Stats. 43 lines of code and 9 definitions.
import {
GENERATED_NAME_MARKER,
GENERATED_SEGMENT_MARKER,
HEAD_BYTES,
HEAD_MARKERS,
LOCKFILES,
MANIFEST_FILE,
README_FILE,
SNIFF_BYTES,
TEST_FOLDER,
TEST_NAME_MARKERS,
TEST_NAME_SUFFIX,
} from "#configuration/constants/source.constants";
import { existsSync } from "node:fs";
import path from "node:path";
const hasGeneratedSegment = function hasGeneratedSegment(rel: string): boolean {
return rel
.split(path.sep)
.slice(0, -1)
.some((segment) => segment.toLowerCase().includes(GENERATED_SEGMENT_MARKER));
};
export const isGeneratedHead = function isGeneratedHead(text: string): boolean {
const head = text.slice(0, HEAD_BYTES).toLowerCase();
return HEAD_MARKERS.some((marker) => head.includes(marker));
};
export const isGeneratedPath = function isGeneratedPath(abs: string, rel: string): boolean {
const base = path.basename(rel).toLowerCase();
if (base.includes(GENERATED_NAME_MARKER) || LOCKFILES.has(base) || hasGeneratedSegment(rel)) {
return true;
}
return base === README_FILE && existsSync(path.join(path.dirname(abs), MANIFEST_FILE));
};
export const isBinaryBuffer = function isBinaryBuffer(buffer: Buffer): boolean {
return buffer.subarray(0, SNIFF_BYTES).includes(0);
};
export const isTestFile = function isTestFile(name: string, rel: string, testMember: string): boolean {
const lower = name.toLowerCase();
if (TEST_NAME_MARKERS.some((marker) => lower.includes(marker)) || lower.endsWith(TEST_NAME_SUFFIX)) {
return true;
}
const segments = rel.split(path.sep);
return segments.includes(TEST_FOLDER) || segments.join("/").startsWith(`${testMember}/`);
};