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