Amp-Thread-ID: https://ampcode.com/threads/T-019f9d91-77c1-7206-a60f-ed6554ce92ab Co-authored-by: Heaust Azure <heaust.azure@gmail.com>
46 lines
1.9 KiB
TypeScript
46 lines
1.9 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import { join } from "node:path";
|
|
|
|
const root = new URL("..", import.meta.url).pathname;
|
|
const readme = readFileSync(join(root, "README.md"), "utf8");
|
|
const fixture = readFileSync(join(root, "test/readme-snippets.compile.ts"), "utf8");
|
|
const links = [...readme.matchAll(/!?\[[^\]]*\]\(([^)]+)\)/g)].map((match) => match[1]!);
|
|
for (const link of links) {
|
|
if (/^(?:https:\/\/|LICENSE$|NOTICE\.md$)/.test(link)) continue;
|
|
assert.fail(`README link is not package-safe: ${link}`);
|
|
}
|
|
for (const stale of ["docs/reference/generated", "docs/.vitepress", "](docs/", "](examples/", "](src/"]) {
|
|
assert(!readme.includes(stale), `README contains generated, VitePress-root, or unpacked path: ${stale}`);
|
|
}
|
|
for (const required of [
|
|
"theme: exampleTheme",
|
|
"createFxNodeHeadless({",
|
|
"api.composeSocket(...numberSocket)",
|
|
"api.composeNode(...valueNode)",
|
|
'window.addEventListener("pagehide", cleanup)',
|
|
"if (cleaned) created.destroy()",
|
|
"api = null",
|
|
"host.destroy()",
|
|
"const gradingWheelsRow = {",
|
|
'satisfies FxNodeDefinition["ui"][number]',
|
|
"async function installColorBalance(api: FxNode)",
|
|
]) {
|
|
assert(readme.includes(required), `README current-API regression: ${required}`);
|
|
if (
|
|
["theme: exampleTheme", "const gradingWheelsRow = {", "async function installColorBalance(api: FxNode)"].includes(
|
|
required,
|
|
)
|
|
)
|
|
assert(
|
|
fixture.includes(
|
|
required
|
|
.replace("const gradingWheelsRow", "export const gradingWheelsRow")
|
|
.replace("async function", "export async function"),
|
|
),
|
|
`compile fixture is not synchronized: ${required}`,
|
|
);
|
|
}
|
|
assert(!readme.includes("Immutable current graph snapshot"), "getState must not claim runtime immutability");
|
|
console.log(`README checks passed (${readme.split("\n").length - 1} lines, ${links.length} links).`);
|