Initial Commit

This commit is contained in:
2026-05-27 23:47:53 +01:00
parent fbc70f96e6
commit 9b28db724f
18103 changed files with 1600554 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
import { readdirSync, readFileSync, statSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "@suaveplan/testing/runner";
const DISALLOWED_PATTERNS = [
"node:fs",
"node:path",
"node:url",
"process.env",
"Buffer",
"document.",
"window.",
];
// Allow ReadableStream (Web Streams API — explicitly permitted)
function walkDir(dir: string, results: string[] = []): string[] {
for (const entry of readdirSync(dir)) {
const full = join(dir, entry);
if (statSync(full).isDirectory()) {
if (
entry !== "__benchmarks__" &&
entry !== "node_modules" &&
entry !== "dist"
) {
walkDir(full, results);
}
} else if (
full.endsWith(".ts") &&
!full.endsWith(".test.ts") &&
!full.endsWith(".bench.ts") &&
!full.endsWith(".types.ts")
) {
results.push(full);
}
}
return results;
}
describe("no-disallowed: source files must not use banned APIs", () => {
it("source files do not use node:fs, node:path, node:url, process.env, Buffer, document, window", {
timeout: 10000,
}, () => {
const srcDir = join(import.meta.dirname, "..", "src");
const files = walkDir(srcDir);
const violations: string[] = [];
for (const file of files) {
const content = readFileSync(file, "utf-8");
const relativePath = file.split("/src/")[1] ?? file;
for (const pattern of DISALLOWED_PATTERNS) {
if (content.includes(pattern)) {
violations.push(`${relativePath}: contains "${pattern}"`);
}
}
}
if (violations.length > 0) {
throw new Error(
`Disallowed patterns found in source:\n${violations.join("\n")}`
);
}
// At least checked one file
expect(files.length).toBeGreaterThan(0);
});
});