From f44f5d7ac2d24ff836c2e1d4b2fa58da04b13052 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 25 Sep 2022 18:24:21 +1000 Subject: Refactor to mono-repo + upgrade packages --- api/scripts/generate_schema.js | 96 ------------------------------------------ 1 file changed, 96 deletions(-) delete mode 100644 api/scripts/generate_schema.js (limited to 'api/scripts/generate_schema.js') diff --git a/api/scripts/generate_schema.js b/api/scripts/generate_schema.js deleted file mode 100644 index b56c3fbc..00000000 --- a/api/scripts/generate_schema.js +++ /dev/null @@ -1,96 +0,0 @@ -// https://mermade.github.io/openapi-gui/# -// https://editor.swagger.io/ -const path = require("path"); -const fs = require("fs"); -const TJS = require("typescript-json-schema"); -require("missing-native-js-functions"); -const schemaPath = path.join(__dirname, "..", "assets", "schemas.json"); - -const settings = { - required: true, - ignoreErrors: true, - excludePrivate: true, - defaultNumberType: "integer", - noExtraProps: true, - defaultProps: false -}; -const compilerOptions = { - strictNullChecks: true -}; -const Excluded = [ - "DefaultSchema", - "Schema", - "EntitySchema", - "ServerResponse", - "Http2ServerResponse", - "global.Express.Response", - "Response", - "e.Response", - "request.Response", - "supertest.Response", - - // TODO: Figure out how to exclude schemas from node_modules? - "SomeJSONSchema", - "UncheckedPartialSchema", - "PartialSchema", - "UncheckedPropertiesSchema", - "PropertiesSchema", - "AsyncSchema", - "AnySchema", -]; - -function modify(obj) { - for (var k in obj) { - if (typeof obj[k] === "object" && obj[k] !== null) { - modify(obj[k]); - } - } -} - -function main() { - const files = [ - ...walk(path.join(__dirname, "..", "src", "routes")), - ...walk(path.join(__dirname, "..", "..", "util", "src")), - ]; - const program = TJS.getProgramFromFiles( - files, - compilerOptions - ); - const generator = TJS.buildGenerator(program, settings); - if (!generator || !program) return; - - let schemas = generator.getUserSymbols().filter((x) => (x.endsWith("Schema") || x.endsWith("Response")) && !Excluded.includes(x)); - console.log(schemas); - - var definitions = {}; - - for (const name of schemas) { - const part = TJS.generateSchema(program, name, settings, [], generator); - if (!part) continue; - - definitions = { ...definitions, [name]: { ...part } }; - } - - modify(definitions); - - fs.writeFileSync(schemaPath, JSON.stringify(definitions, null, 4)); -} - -main(); - -function walk(dir) { - var results = []; - var list = fs.readdirSync(dir); - list.forEach(function (file) { - file = dir + "/" + file; - var stat = fs.statSync(file); - if (stat && stat.isDirectory()) { - /* Recurse into a subdirectory */ - results = results.concat(walk(file)); - } else { - if (!file.endsWith(".ts")) return; - results.push(file); - } - }); - return results; -} -- cgit 1.5.1