typescript-docs-verifier
Version:
Verifies that typescript examples in markdown files actually compile.
31 lines • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CodeBlockExtractor = void 0;
const promises_1 = require("fs/promises");
const TYPESCRIPT_CODE_PATTERN = /(?<!(?:<!--\s*ts-docs-verifier:ignore\s*-->[\r?\n]*))(?:```(?:(?:typescript)|(tsx?))\r?\n)((?:\r?\n|.)*?)(?:(?=```))/gi;
exports.CodeBlockExtractor = {
extract: async (markdownFilePath) => {
try {
const contents = await exports.CodeBlockExtractor.readFile(markdownFilePath);
return exports.CodeBlockExtractor.extractCodeBlocksFromMarkdown(contents);
}
catch (error) {
throw new Error(`Error extracting code blocks from ${markdownFilePath}: ${error instanceof Error ? error.message : error}`, { cause: error });
}
},
readFile: async (path) => {
return await (0, promises_1.readFile)(path, "utf-8");
},
extractCodeBlocksFromMarkdown: (markdown) => {
const codeBlocks = [];
markdown.replace(TYPESCRIPT_CODE_PATTERN, (_, type, code) => {
codeBlocks.push({
code: code,
type: type === "tsx" ? "tsx" : "ts",
});
return code;
});
return codeBlocks;
},
};
//# sourceMappingURL=CodeBlockExtractor.js.map