summary refs log tree commit diff
path: root/scripts/generate_schema.js
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-09-26 13:25:32 +1000
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-09-26 13:30:47 +1000
commit5f46f559b727c05d3dd846c2fc7345933d5fbc5a (patch)
tree93c14b4159717d5563f7a730263436288e22fe7d /scripts/generate_schema.js
parentFix and remove some scripts + use ajv/typescript-json-schema required by patches (diff)
downloadserver-5f46f559b727c05d3dd846c2fc7345933d5fbc5a.tar.xz
Remove import to class-validator, fix listening on port message in bundle
Diffstat (limited to 'scripts/generate_schema.js')
-rw-r--r--scripts/generate_schema.js89
1 files changed, 0 insertions, 89 deletions
diff --git a/scripts/generate_schema.js b/scripts/generate_schema.js
deleted file mode 100644

index 01dd2146..00000000 --- a/scripts/generate_schema.js +++ /dev/null
@@ -1,89 +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 program = TJS.programFromConfig("tsconfig.json") - 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; -}