mirror of
https://github.com/Tonejs/Tone.js
synced 2024-12-28 12:33:12 +00:00
69 lines
1.6 KiB
JavaScript
69 lines
1.6 KiB
JavaScript
/* eslint-disable no-console */
|
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
const { JSDOM } = require("jsdom");
|
|
const glob = require("glob");
|
|
const { resolve } = require("path");
|
|
const { readFile, writeFile } = require("fs-extra");
|
|
const { exec } = require("child_process");
|
|
const { file } = require("tmp-promise");
|
|
|
|
/**
|
|
* 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, "../../")}"
|
|
let ui: any;
|
|
let drawer: any;
|
|
let meter: any;
|
|
let piano: any;
|
|
let fft: any;
|
|
let waveform: any;
|
|
let document: any;
|
|
let p5: any;
|
|
${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();
|
|
}
|
|
}
|
|
|
|
const htmlFiles = glob.sync(resolve(__dirname, "../../examples/*.html"));
|
|
|
|
async function main() {
|
|
for (let i = 0; i < htmlFiles.length; i++) {
|
|
const path = htmlFiles[i];
|
|
const fileAsString = (await readFile(path)).toString();
|
|
const dom = new JSDOM(fileAsString);
|
|
const scriptTag = dom.window.document.querySelector("body script");
|
|
if (scriptTag) {
|
|
try {
|
|
await testExampleString(scriptTag.textContent);
|
|
console.log("passed", path);
|
|
} catch (e) {
|
|
console.log("failed", path);
|
|
console.log(e);
|
|
throw new Error(e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
main();
|