mirror of
https://github.com/Tonejs/Tone.js
synced 2024-12-29 04:53:10 +00:00
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
|
/* eslint-disable no-console */
|
||
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
||
|
const { JSDOM } = require("jsdom");
|
||
|
const { resolve } = require("path");
|
||
|
const { readFile, writeFile } = require("fs-extra");
|
||
|
const { exec } = require("child_process");
|
||
|
const { file } = require("tmp-promise");
|
||
|
const { Converter } = require("showdown");
|
||
|
|
||
|
/**
|
||
|
* A promise version of exec
|
||
|
*/
|
||
|
function execPromise(cmd) {
|
||
|
return new Promise((done, error) => {
|
||
|
exec(cmd, (e, output) => {
|
||
|
if (e) {
|
||
|
error(output);
|
||
|
} else {
|
||
|
done();
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
async function testExampleString(str) {
|
||
|
// str = str.replace("from \"tone\"", `from "${resolve(__dirname, "../../")}"`);
|
||
|
str = `
|
||
|
import * as Tone from "${resolve(__dirname, "../../")}"
|
||
|
${str}
|
||
|
`;
|
||
|
const { path, cleanup } = await file({ postfix: ".ts" });
|
||
|
// work with file here in fd
|
||
|
await writeFile(path, str);
|
||
|
try {
|
||
|
await execPromise(`tsc --noEmit --target es5 --lib dom,ES2015 ${path}`);
|
||
|
} finally {
|
||
|
cleanup();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async function main() {
|
||
|
const readme = (await readFile(resolve(__dirname, "../../README.md"))).toString();
|
||
|
const html = new Converter().makeHtml(readme);
|
||
|
const dom = new JSDOM(html);
|
||
|
const scripts = dom.window.document.querySelectorAll("code.javascript");
|
||
|
for (let i = 0; i < scripts.length; i++) {
|
||
|
try {
|
||
|
await testExampleString(scripts[i].textContent);
|
||
|
process.stdout.write(".");
|
||
|
} catch (e) {
|
||
|
console.log("\nfailed", scripts[i].textContent);
|
||
|
console.log(e);
|
||
|
throw new Error(e);
|
||
|
}
|
||
|
}
|
||
|
console.log("\n");
|
||
|
}
|
||
|
main();
|