// import { promises } from "fs"; // const { readdir, writeFile } = promises; // import { dirname, join } from "path"; // import { createGenerator } from "ts-json-schema-generator"; // async function genSchema(path: string, typename: string) { // const gen = createGenerator({ // path: path, // type: typename, // tsconfig: "tsconfig.json", // }); // const schema = gen.createSchema(typename); // if (schema.definitions != undefined) { // const definitions = schema.definitions; // const definition = definitions[typename]; // if (typeof definition == "object") { // let property = definition.properties; // if (property) { // property["$schema"] = { // type: "string", // }; // } // } // } // const text = JSON.stringify(schema); // await writeFile(join(dirname(path), `${typename}.schema.json`), text); // } // function capitalize(s: string) { // return s.charAt(0).toUpperCase() + s.slice(1); // } // async function setToALL(path: string) { // console.log(`scan ${path}`); // const direntry = await readdir(path, { withFileTypes: true }); // const works = direntry // .filter((x) => x.isFile() && x.name.endsWith("Config.ts")) // .map((x) => { // const name = x.name; // const m = /(.+)\.ts/.exec(name); // if (m !== null) { // const typename = m[1]; // return genSchema(join(path, typename), capitalize(typename)); // } // }); // await Promise.all(works); // const subdir = direntry.filter((x) => x.isDirectory()).map((x) => x.name); // for (const x of subdir) { // await setToALL(join(path, x)); // } // } // setToALL("src");