From cbb4a1db0cfa73b4187560d88fda2cadcd153b8d Mon Sep 17 00:00:00 2001 From: Leah Tacke genannt Unterberg <leah.tgu@pads.rwth-aachen.de> Date: Tue, 12 Nov 2024 17:44:08 +0100 Subject: [PATCH] WIP adaptation of api --- openapi-ts.config.ts | 17 + package-lock.json | 2154 ++++++++++++++++- package.json | 9 +- src/App.vue | 1 - src/components/DBOverview.vue | 5 +- src/components/DBOverviewSideBar.vue | 2 - src/components/ExportView.vue | 11 +- src/components/MapView.vue | 12 +- src/components/SetupView.vue | 2 +- src/components/StatusBar.vue | 2 +- .../subcomponents/map/MappingsTable.vue | 2 +- .../subcomponents/transform/AddColumn.vue | 8 +- .../subcomponents/transform/AdvancedRaw.vue | 12 +- .../transform/CreateVirtualView.vue | 8 +- .../subcomponents/transform/EditColumns.vue | 16 +- .../subcomponents/transform/ExtractJson.vue | 6 +- .../subcomponents/transform/SimpleJoin.vue | 8 +- .../subcomponents/transform/SimpleWhere.vue | 8 +- .../subcomponents/transform/TableFilter.vue | 10 +- .../subcomponents/transform/TimeFilter.vue | 20 +- .../subcomponents/view/DBTreeView.vue | 2 +- src/components/subcomponents/view/MarkFK.vue | 6 +- .../subcomponents/view/QueryDBSchemaView.vue | 8 +- .../subcomponents/view/TableDetails.vue | 2 +- .../subcomponents/view/TablePreview.vue | 7 +- src/main.js | 2 - src/services/api-schema/openapi.json | 2 +- src/services/api-schema/openapi.yaml | 373 +-- src/services/api-v2.ts | 241 ++ src/services/api.ts | 3 - src/services/constantsStore.ts | 10 +- src/services/convenienceStore.ts | 19 +- src/services/exportStore.ts | 4 +- src/services/mainStore.ts | 18 +- src/services/mappingStore.ts | 2 +- src/services/mappingUtils.ts | 8 +- src/services/presetStore.ts | 6 +- src/services/selectionStore.ts | 6 +- src/services/utils.ts | 6 +- 39 files changed, 2694 insertions(+), 344 deletions(-) create mode 100644 openapi-ts.config.ts create mode 100644 src/services/api-v2.ts diff --git a/openapi-ts.config.ts b/openapi-ts.config.ts new file mode 100644 index 0000000..f83c6ee --- /dev/null +++ b/openapi-ts.config.ts @@ -0,0 +1,17 @@ +export default { + client: '@hey-api/client-axios', + experimentalParser: true, + input: 'src/services/api-schema/openapi.json', + output: 'src/services/api-schema/', + plugins: [ + '@hey-api/schemas', // preserves default output + { + name: '@hey-api/services', + asClass: true + }, + { + name: '@hey-api/types', + enums: 'javascript', + }, + ], +}; diff --git a/package-lock.json b/package-lock.json index cab8fc8..74e7798 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,17 @@ { - "name": "maed-extractor-frontend", + "name": "maed-exporter-frontend", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "maed-extractor-frontend", + "name": "maed-exporter-frontend", "version": "0.1.0", "dependencies": { + "@hey-api/client-axios": "^0.2.10", + "@hey-api/client-fetch": "^0.4.3", "@mdi/font": "7.0.96", + "@openapitools/openapi-generator-cli": "^2.15.3", "@popperjs/core": "^2.11.8", "@vuelidate/core": "^2.0.3", "@vuelidate/validators": "^2.0.4", @@ -32,6 +35,7 @@ "vuetify": "^3.7.1" }, "devDependencies": { + "@hey-api/openapi-ts": "^0.55.2", "@types/file-saver": "^2.0.7", "@types/luxon": "^3.4.2", "@vitejs/plugin-vue": "^5.0.4", @@ -78,6 +82,24 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz", + "integrity": "sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" + } + }, "node_modules/@babel/code-frame": { "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", @@ -789,6 +811,101 @@ "node": ">=14" } }, + "node_modules/@hey-api/client-axios": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@hey-api/client-axios/-/client-axios-0.2.10.tgz", + "integrity": "sha512-EXTf9WcZCyzRIi1JEbKbJ4JvB+TLy9WsSaBKRUwd7d8c6PYQ+MRJCTnkzGJk1wXkeBLqJEwyf2IZH/qmCkDhqg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/hey-api" + }, + "peerDependencies": { + "axios": ">= 1.0.0 < 2" + } + }, + "node_modules/@hey-api/client-fetch": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@hey-api/client-fetch/-/client-fetch-0.4.3.tgz", + "integrity": "sha512-Y0McgfJED/Iq6Tr8LgewFL+qrOpb87rUBUJkc6mLzxqTkqF52KcexYZPlKyjee0Qb/oUJOupFRpvUEWjH/339w==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/hey-api" + } + }, + "node_modules/@hey-api/openapi-ts": { + "version": "0.55.2", + "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.55.2.tgz", + "integrity": "sha512-EdVslFxtV27prj8oLWCm4ZOFAx+zGOqRVbDkKOcaYzg6wQQdvQ0j14LMapvhM0PtP2hkffh6PGeh6dt9aJORZQ==", + "dev": true, + "license": "FSL-1.1-MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "11.7.2", + "c12": "2.0.1", + "commander": "12.1.0", + "handlebars": "4.7.8" + }, + "bin": { + "openapi-ts": "bin/index.cjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + }, + "peerDependencies": { + "typescript": "^5.x" + } + }, + "node_modules/@hey-api/openapi-ts/node_modules/c12": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/c12/-/c12-2.0.1.tgz", + "integrity": "sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.1", + "confbox": "^0.1.7", + "defu": "^6.1.4", + "dotenv": "^16.4.5", + "giget": "^1.2.3", + "jiti": "^2.3.0", + "mlly": "^1.7.1", + "ohash": "^1.1.4", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.2.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "^0.3.5" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/@hey-api/openapi-ts/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@hey-api/openapi-ts/node_modules/jiti": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.0.tgz", + "integrity": "sha512-H5UpaUI+aHOqZXlYOaFP/8AzKsg+guWu+Pr3Y8i7+Y3zr1aXAvCvTAQ1RxSc6oVD8R8c7brgNtTVP91E7upH/g==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/@iconify/types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", @@ -858,6 +975,22 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@mdi/font": { "version": "7.0.96", "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.0.96.tgz", @@ -873,6 +1006,96 @@ "langium": "3.0.0" } }, + "node_modules/@nestjs/axios": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-3.1.1.tgz", + "integrity": "sha512-ySoxrzqX80P1q6LKLKGcgyBd2utg4gbC+4FsJNpXYvILorMlxss/ECNogD9EXLCE4JS5exVFD5ez0nK5hXcNTQ==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0", + "axios": "^1.3.1", + "rxjs": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/@nestjs/common": { + "version": "10.4.6", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.4.6.tgz", + "integrity": "sha512-KkezkZvU9poWaNq4L+lNvx+386hpOxPJkfXBBeSMrcqBOx8kVr36TGN2uYkF4Ta4zNu1KbCjmZbc0rhHSg296g==", + "license": "MIT", + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.7.0", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@nestjs/core": { + "version": "10.4.6", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.6.tgz", + "integrity": "sha512-zXVPxCNRfO6gAy0yvEDjUxE/8gfZICJFpsl2lZAUH31bPb6m+tXuhUq2mVCTEltyMYQ+DYtRe+fEYM2v152N1g==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "3.3.0", + "tslib": "2.7.0", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/microservices": "^10.0.0", + "@nestjs/platform-express": "^10.0.0", + "@nestjs/websockets": "^10.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -962,6 +1185,216 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@nuxtjs/opencollective/node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "license": "MIT" + }, + "node_modules/@nuxtjs/opencollective/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.15.3.tgz", + "integrity": "sha512-2UBnsDlMt36thhdXxisbA1qReVtbCaw+NCvXoslRXlaJBL4qkAmZUhNeDLNu3LCbwA2PASMWhJSqeLwgwMCitw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@nestjs/axios": "3.1.1", + "@nestjs/common": "10.4.6", + "@nestjs/core": "10.4.6", + "@nuxtjs/opencollective": "0.3.2", + "axios": "1.7.7", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.4", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.1.0", + "glob": "9.3.5", + "inquirer": "8.2.6", + "lodash": "4.17.21", + "proxy-agent": "6.4.0", + "reflect-metadata": "0.1.13", + "rxjs": "7.8.1", + "tslib": "2.8.1" + }, + "bin": { + "openapi-generator-cli": "main.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openapi_generator" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -1214,6 +1647,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "license": "MIT" + }, "node_modules/@types/d3-scale": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", @@ -1257,6 +1696,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/lodash": { "version": "4.17.9", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.9.tgz", @@ -1537,6 +1983,18 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -1547,20 +2005,44 @@ "node": ">=6" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/anymatch": { - "version": "3.1.3", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "license": "ISC", @@ -1578,6 +2060,18 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1599,9 +2093,37 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/bath-es5": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/bath-es5/-/bath-es5-3.0.3.tgz", @@ -1620,11 +2142,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -1674,6 +2206,30 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/c12": { "version": "1.11.2", "resolved": "https://registry.npmjs.org/c12/-/c12-1.11.2.tgz", @@ -1803,6 +2359,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "license": "MIT" + }, "node_modules/chevrotain": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", @@ -1863,6 +2425,109 @@ "consola": "^3.2.3" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -1899,12 +2564,143 @@ "node": ">= 10" } }, + "node_modules/compare-versions": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.4.tgz", + "integrity": "sha512-FemMreK9xNyL8gQevsdRMrvO4lFCkQP7qbuktn1q8ndcNk1+0mz7lgE7b/sNvbhVgY4w6tMN1FDp6aADjqw2rw==", + "license": "MIT" + }, "node_modules/compatx": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/compatx/-/compatx-0.1.8.tgz", "integrity": "sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==", "license": "MIT" }, + "node_modules/concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/confbox": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", @@ -1920,6 +2716,18 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "license": "MIT", + "dependencies": { + "easy-table": "1.1.0" + }, + "engines": { + "node": "> 0.10" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2454,6 +3262,15 @@ "lodash-es": "^4.17.21" } }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -2521,12 +3338,38 @@ "integrity": "sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==", "license": "MIT" }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/defu": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "license": "MIT" }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delaunator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", @@ -2593,6 +3436,15 @@ "url": "https://dotenvx.com" } }, + "node_modules/easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", + "license": "MIT", + "optionalDependencies": { + "wcwidth": ">=1.0.1" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.39", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.39.tgz", @@ -2605,6 +3457,12 @@ "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", "license": "EPL-2.0" }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -2677,12 +3535,64 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "license": "MIT" }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", @@ -2706,6 +3616,32 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -2722,6 +3658,12 @@ "node": ">=8.6.0" } }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -2731,6 +3673,30 @@ "reusify": "^1.0.4" } }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-saver": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", @@ -2783,6 +3749,20 @@ "node": ">= 6" } }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -2807,6 +3787,12 @@ "node": ">=8" } }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2840,6 +3826,15 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-stream": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", @@ -2852,6 +3847,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/giget": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz", @@ -2871,6 +3895,24 @@ "giget": "dist/cli.mjs" } }, + "node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -2883,6 +3925,30 @@ "node": ">= 6" } }, + "node_modules/glob/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -2912,12 +3978,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, "node_modules/hachure-fill": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", "license": "MIT" }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -2940,55 +4034,203 @@ "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12.0.0" } }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "license": "MIT" - }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "license": "Apache-2.0", + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=16.17.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 4" + "node": ">=7.0.0" } }, - "node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", - "devOptional": true, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", @@ -2998,6 +4240,19 @@ "node": ">=12" } }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3035,6 +4290,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3047,6 +4311,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3068,12 +4341,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, "node_modules/jiti": { "version": "1.21.6", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", @@ -3101,6 +4395,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -3125,6 +4425,18 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/katex": { "version": "0.16.11", "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz", @@ -3235,6 +4547,92 @@ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "license": "MIT" }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3863,6 +5261,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -3936,6 +5344,12 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "license": "ISC" + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -3954,6 +5368,42 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-fetch-native": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", @@ -4087,8 +5537,142 @@ "undici": "^5.28.4", "yargs-parser": "^21.1.1" }, - "bin": { - "openapi-typescript": "bin/cli.js" + "bin": { + "openapi-typescript": "bin/cli.js" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" } }, "node_modules/package-manager-detector": { @@ -4119,6 +5703,34 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", + "license": "MIT" + }, "node_modules/path-type": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", @@ -4337,6 +5949,34 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -4373,6 +6013,20 @@ "destr": "^2.0.3" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz", @@ -4387,12 +6041,27 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "license": "Apache-2.0" + }, "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "license": "MIT" }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -4411,6 +6080,49 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -4488,6 +6200,15 @@ "points-on-path": "^0.2.1" } }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4517,6 +6238,15 @@ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "license": "BSD-3-Clause" }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -4529,6 +6259,26 @@ "node": ">=6" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4616,6 +6366,54 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -4625,12 +6423,58 @@ "node": ">=0.10.0" } }, + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==" + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, "node_modules/std-env": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", "license": "MIT" }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", @@ -4704,12 +6548,30 @@ "node": ">=10" } }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, "node_modules/tinyexec": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", "license": "MIT" }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -4731,6 +6593,21 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", @@ -4740,12 +6617,71 @@ "node": ">=6.10" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/ufo": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", "license": "MIT" }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/uncrypto": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", @@ -4841,6 +6777,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/unplugin": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.14.1.tgz", @@ -5039,6 +6984,12 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, "node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -5368,18 +7319,43 @@ } } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/web-worker": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", "license": "Apache-2.0" }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, "node_modules/webpack-virtual-modules": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", "license": "MIT" }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5395,12 +7371,93 @@ "node": ">= 8" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -5410,6 +7467,15 @@ "engines": { "node": ">=12" } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } } } } diff --git a/package.json b/package.json index c65a163..e26836b 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,17 @@ { - "name": "maed-extractor-frontend", + "name": "maed-exporter-frontend", "version": "0.1.0", "scripts": { "dev": "vite", "build": "vite build", - "preview": "vite preview" + "preview": "vite preview", + "openapi-ts": "openapi-ts" }, "dependencies": { + "@hey-api/client-axios": "^0.2.10", + "@hey-api/client-fetch": "^0.4.3", "@mdi/font": "7.0.96", + "@openapitools/openapi-generator-cli": "^2.15.3", "@popperjs/core": "^2.11.8", "@vuelidate/core": "^2.0.3", "@vuelidate/validators": "^2.0.4", @@ -31,6 +35,7 @@ "vuetify": "^3.7.1" }, "devDependencies": { + "@hey-api/openapi-ts": "^0.55.2", "@types/file-saver": "^2.0.7", "@types/luxon": "^3.4.2", "@vitejs/plugin-vue": "^5.0.4", diff --git a/src/App.vue b/src/App.vue index 8dfcf25..a69b946 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,7 +2,6 @@ import SetupView from "@/components/SetupView.vue"; import MainView from "@/components/MainView.vue"; import {useMainStore} from "@/services/mainStore"; -import {useAPIClient} from "@/services/api"; import {storeToRefs} from "pinia"; import {useConstantsStore} from "@/services/constantsStore"; import {onMounted, ref} from "vue"; diff --git a/src/components/DBOverview.vue b/src/components/DBOverview.vue index 3588cdd..6b56b49 100644 --- a/src/components/DBOverview.vue +++ b/src/components/DBOverview.vue @@ -1,6 +1,6 @@ <script setup> -import {useAPI} from "@/services/api"; +import {useAPI} from "@/services/api-v2"; import {computed, onMounted, onUnmounted, ref, useTemplateRef} from "vue"; import VueMermaidString from "vue-mermaid-string"; import QueryDBSchemaView from "@/components/subcomponents/view/QueryDBSchemaView.vue"; @@ -25,8 +25,7 @@ const disabled = computed(() => !sourceDB.value) async function getMermaid(selection) { loading.value = true - const params = {source: sourceDB.value, version: "mermaid"}; - const r = selection == null ? await api.makeERD(params) : await api.makeERD(params, {selection}) + const r = selection == null ? await api.makeERD(sourceDB.value) : await api.makeERD(sourceDB.value, {selection}) if (r?.data) { console.log('updated mermaid text', r.data.mermaid) diff --git a/src/components/DBOverviewSideBar.vue b/src/components/DBOverviewSideBar.vue index e1ce085..11544f3 100644 --- a/src/components/DBOverviewSideBar.vue +++ b/src/components/DBOverviewSideBar.vue @@ -1,7 +1,6 @@ <script setup lang="ts"> import {useMainStore} from "@/services/mainStore" -import {useAPI} from "@/services/api" import {ref} from "vue" import {useSelectionStore} from "@/services/selectionStore" import {useConstantsStore} from "@/services/constantsStore"; @@ -10,7 +9,6 @@ import FavoritesList from "@/components/subcomponents/view/FavoritesList.vue"; const store = useMainStore() const selectionStore = useSelectionStore() -const api = useAPI() const constants = useConstantsStore() const loading = ref(false) diff --git a/src/components/ExportView.vue b/src/components/ExportView.vue index 1e22c8f..75d42c2 100644 --- a/src/components/ExportView.vue +++ b/src/components/ExportView.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> import {ref, useTemplateRef} from "vue"; -import {ExportRequest, useAPI, useAPIClient} from "@/services/api"; +import {MappingExportRequest, useAPI, useAPIClient} from "@/services/api-v2"; import {storeToRefs} from "pinia"; import {Duration} from "luxon"; import {useMappingStore} from "@/services/mappingStore"; @@ -26,12 +26,12 @@ const isStreaming = ref(true) const mappingsSelection = ref([]) const invisibleLinks = useTemplateRef("invisibleLinks") -function createRequest(): ExportRequest { +function createRequest(): MappingExportRequest { const mitm = selectedMitM.value const selectedMappings = mappingsSelection.value if (!mitm || !selectedMappings) return null const mappings = selectedMappings.map((item) => item.mapping) - return {mitm: mitm, mapped_concepts: mappings} as ExportRequest + return {mitm: mitm, mapped_concepts: mappings} as MappingExportRequest } function hackyStuff(response) { @@ -61,7 +61,10 @@ async function generate() { const client = useAPIClient() async function pollExport(url: string) { - const r = await client.get(url, {maxContentLength: 100}) + const r = await client.get({ + url: url, + maxContentLength: 100 + }) return r.status != 404 } diff --git a/src/components/MapView.vue b/src/components/MapView.vue index eb73d63..ac815b9 100644 --- a/src/components/MapView.vue +++ b/src/components/MapView.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> -import {ConceptMapping, Mappings, TableIdentifier} from "@/services/api" +import {ConceptMapping, ConceptProperties, ForeignRelation, OwnedRelations, TableIdentifier} from "@/services/api-v2" import {useSelectionStore} from "@/services/selectionStore"; import {computed, reactive, ref, watch, toValue} from "vue"; import TableSelector from "@/components/helpers/TableSelector.vue"; @@ -51,17 +51,17 @@ const conceptList = computed<{ title: string, value: string, properties: any }[] })) }) -const currentConceptProperties = computed<Mappings.ConceptProperties>(() => { +const currentConceptProperties = computed<ConceptProperties>(() => { const def = selectedMitMDef.value let c = concept.value - if (!def || !c) return null as Mappings.ConceptProperties + if (!def || !c) return null as ConceptProperties return def.concept_properties[c] }) -const currentConceptRelations = computed<Mappings.OwnedRelations>(() => { +const currentConceptRelations = computed<OwnedRelations>(() => { const def = selectedMitMDef.value let c = concept.value - if (!def || !c) return null as Mappings.OwnedRelations + if (!def || !c) return null as OwnedRelations if (c in def.parent_concepts_map) c = def.parent_concepts_map[c] return def.concept_relations[c] }) @@ -175,7 +175,7 @@ async function onSubmit() { const identity_columns = {} const inline_relations = {} - const foreign_relations: { [fkRelName: string]: Mappings.ForeignRelation } = {} + const foreign_relations: { [fkRelName: string]: ForeignRelation } = {} Object.entries(idCols.value).forEach(([name, colItem]) => { identity_columns[name] = colItem.name }) diff --git a/src/components/SetupView.vue b/src/components/SetupView.vue index 42e92fc..e95933e 100644 --- a/src/components/SetupView.vue +++ b/src/components/SetupView.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> -import {useAPI} from '@/services/api' +import {useAPI} from '@/services/api-v2' import {useMainStore} from "@/services/mainStore" import {reactive, ref} from "vue" import {useConstantsStore} from "@/services/constantsStore"; diff --git a/src/components/StatusBar.vue b/src/components/StatusBar.vue index 41a025f..33c2ed8 100644 --- a/src/components/StatusBar.vue +++ b/src/components/StatusBar.vue @@ -5,7 +5,7 @@ import {useConstantsStore} from "@/services/constantsStore"; import {useSelectionStore} from "@/services/selectionStore"; import {storeToRefs} from "pinia"; import {useMitMs} from "@/services/convenienceStore"; -import {useAPI} from "@/services/api"; +import {useAPI} from "@/services/api-v2"; import PresetMenu from "@/components/subcomponents/map/PresetMenu.vue"; import ConfirmDialog from "@/components/helpers/ConfirmDialog.vue"; import ReadinessPoller from "@/components/helpers/ReadinessPoller.vue"; diff --git a/src/components/subcomponents/map/MappingsTable.vue b/src/components/subcomponents/map/MappingsTable.vue index cdac89d..8366997 100644 --- a/src/components/subcomponents/map/MappingsTable.vue +++ b/src/components/subcomponents/map/MappingsTable.vue @@ -6,7 +6,7 @@ import {storeToRefs} from "pinia"; import {DateTime} from "luxon"; import {useSelectionStore} from "@/services/selectionStore"; import {ConceptMappingEntry, useMappingStore} from "@/services/mappingStore"; -import {ConceptMapping} from "@/services/api"; +import {ConceptMapping} from "@/services/api-v2"; const selection = useSelectionStore() const mappings = useMappingStore() diff --git a/src/components/subcomponents/transform/AddColumn.vue b/src/components/subcomponents/transform/AddColumn.vue index 8bd7106..f754ebf 100644 --- a/src/components/subcomponents/transform/AddColumn.vue +++ b/src/components/subcomponents/transform/AddColumn.vue @@ -3,22 +3,22 @@ import {rules} from "@/services/utils"; import {ref, watch} from "vue"; import {ColumnListItem, useMitMTypes} from "@/services/convenienceStore"; -import {MitMDataType, Transforms} from "@/services/api"; +import {MITMDataType, Transform, AddColumn} from "@/services/api-v2"; const {mitmTypes} = useMitMTypes() const props = defineProps<{ existingColumns: ColumnListItem[] }>() -const emit = defineEmits<{ closeMe: [], addColumn: [Transforms.AddColumn] }>() +const emit = defineEmits<{ closeMe: [], addColumn: [AddColumn] }>() const colName = ref<string>(null) const rawValue = ref<string>(null) -const targetType = ref<MitMDataType>(null) +const targetType = ref<MITMDataType>(null) const isValid = ref(false) watch([targetType, rawValue, colName], ([tt, vv, cn]) => isValid.value = !!tt && !!vv && !!cn) -function createAddColumn() : Transforms.AddColumn { +function createAddColumn(): AddColumn { return {operation: "add_column", col_name: colName.value, value: rawValue.value, target_type: targetType.value} // raw values have to be enclosed in quotes, otherwise sql assumes them to be names of existing columns } diff --git a/src/components/subcomponents/transform/AdvancedRaw.vue b/src/components/subcomponents/transform/AdvancedRaw.vue index 4d8feeb..4438c17 100644 --- a/src/components/subcomponents/transform/AdvancedRaw.vue +++ b/src/components/subcomponents/transform/AdvancedRaw.vue @@ -1,12 +1,12 @@ <script setup lang="ts"> import {computed, ref, watchEffect} from "vue"; -import {Transforms} from "@/services/api"; +import {Transform, TypedRawQuery, RawCompiled, Base} from "@/services/api-v2"; import {jsonToPrettyStr} from "@/services/utils"; const isValid = defineModel({type: Boolean, default: false, required: false}) -const placeHolderTypedQuery: Transforms.TypedRawQuery = { +const placeHolderTypedQuery: TypedRawQuery = { columns: ["A", "B"], column_dtypes: ["TEXT", "INTEGER"], dialect: "sqlite", @@ -14,7 +14,7 @@ const placeHolderTypedQuery: Transforms.TypedRawQuery = { } const text = ref<string>(jsonToPrettyStr(placeHolderTypedQuery)) -const typedQuery = computed<Transforms.TypedRawQuery | null>(() => { +const typedQuery = computed<TypedRawQuery | null>(() => { try { const tq = JSON.parse(text.value) if (Object.keys(placeHolderTypedQuery).every(k => k in tq)) @@ -44,14 +44,14 @@ function resetAll() { text.value = "" } -function createBase(): Transforms.Base { +function createBase(): Base { return { operation: "raw", typed_query: typedQuery.value - } as Transforms.RawCompiled + } as RawCompiled } -const createTransforms = () => [] as Transforms.Transform[] +const createTransforms = () => [] as Transform[] defineExpose({resetAll, createTransforms, createBase}) diff --git a/src/components/subcomponents/transform/CreateVirtualView.vue b/src/components/subcomponents/transform/CreateVirtualView.vue index eadb59f..9d98914 100644 --- a/src/components/subcomponents/transform/CreateVirtualView.vue +++ b/src/components/subcomponents/transform/CreateVirtualView.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> import {computed, reactive, Ref, ref, unref, watch} from "vue"; -import {TableIdentifier, Transforms, useAPI, VirtualViewCreation} from "@/services/api"; +import {TableIdentifier, Transform, useAPI, VirtualViewCreationRequest, Base, ExistingTable} from "@/services/api-v2"; import {useMainStore} from "@/services/mainStore"; import {useSelectionStore} from "@/services/selectionStore"; import SimpleJoin from "@/components/subcomponents/transform/SimpleJoin.vue"; @@ -90,7 +90,7 @@ const disabled = computed(() => { }) -function createRequest(base: Transforms.Base, transforms: Transforms.Transform[]): VirtualViewCreation { +function createRequest(base: Base, transforms: Transform[]): VirtualViewCreationRequest { return { name: viewIdentifier.name, schema: viewIdentifier.schema, @@ -99,7 +99,7 @@ function createRequest(base: Transforms.Base, transforms: Transforms.Transform[] } } -async function attemptCreation(request: VirtualViewCreation, options?: { +async function attemptCreation(request: VirtualViewCreationRequest, options?: { dropBase: boolean, base: TableIdentifier }): Promise<boolean> { @@ -132,7 +132,7 @@ async function attemptCreation(request: VirtualViewCreation, options?: { async function onSubmit() { const widget = widgetInstance.value if (!widget) return - let base = {operation: "existing", base_table: selectedTable.value} as Transforms.ExistingTable + let base = {operation: "existing", base_table: selectedTable.value} as ExistingTable let transforms = [] if (widget.kind === "base" || widget.kind === "advanced") base = widget.ref.createBase() diff --git a/src/components/subcomponents/transform/EditColumns.vue b/src/components/subcomponents/transform/EditColumns.vue index ce5b55a..765aaa8 100644 --- a/src/components/subcomponents/transform/EditColumns.vue +++ b/src/components/subcomponents/transform/EditColumns.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> import {Ref, ref, useTemplateRef, watch} from "vue"; import {useConstantsStore} from "@/services/constantsStore"; -import {TableIdentifier, Transforms} from "@/services/api"; +import {AddColumn, TableIdentifier, Transform, CastColumn, ReselectColumns, EditColumns} from "@/services/api-v2"; import {useMainStore} from "@/services/mainStore"; import {useColumnsOfTableWithProbe, useMitMTypes} from "@/services/convenienceStore"; import {rules} from "@/services/utils"; @@ -49,7 +49,7 @@ function transferAll() { sourceTableItems.value.forEach(item => addColumn(item)) } -function addArtificialColumn(artificialCol: Transforms.AddColumn) { +function addArtificialColumn(artificialCol: AddColumn) { const newColumn = { name: artificialCol.col_name, newName: ref(artificialCol.col_name), @@ -80,7 +80,7 @@ function resetAll() { targetTableItems.value = [] } -function createTransforms(): Transforms.Transform[] { +function createTransforms(): Transform[] { const additions = {0: []} const transforms = {} as { [k: string]: object } @@ -88,7 +88,7 @@ function createTransforms(): Transforms.Transform[] { const selection = [] targetTableItems.value.forEach((item, i) => { - const targetType = item.castedType?.wrapped + const targetType = item.castedType ? {mitm: item.castedType} : undefined // interpret as mitm type if it starts like this, else it is used verbatim, and thus assumed to be a SQL type //if (targetType.startsWith("mitm.")) @@ -101,11 +101,11 @@ function createTransforms(): Transforms.Transform[] { value: `"${item.rawValue}"`, target_type: targetType, operation: "add_column" - } as Transforms.AddColumn) + } as AddColumn) selection.push(item.name) } else { if (!!targetType) - transforms[item.name] = {target_type: targetType, operation: "cast_column"} as Transforms.CastColumn + transforms[item.name] = {target_type: targetType, operation: "cast_column"} as CastColumn if (!!item.newName) { renames[item.name] = item.newName selection.push(item.newName) @@ -114,14 +114,14 @@ function createTransforms(): Transforms.Transform[] { } }) - const edit: Transforms.EditColumns = { + const edit: EditColumns = { transforms, renames, additions, operation: "edit_columns" } - const reselect: Transforms.ReselectColumns = { + const reselect: ReselectColumns = { selection: selection, operation: "reselect_columns" } diff --git a/src/components/subcomponents/transform/ExtractJson.vue b/src/components/subcomponents/transform/ExtractJson.vue index b2284b0..a1e5d1f 100644 --- a/src/components/subcomponents/transform/ExtractJson.vue +++ b/src/components/subcomponents/transform/ExtractJson.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> import {ref, watch, watchEffect} from "vue"; import {useConstantsStore} from "@/services/constantsStore"; -import {TableIdentifier, Transforms} from "@/services/api"; +import {EditColumns, TableIdentifier, Transform} from "@/services/api-v2"; import {useMainStore} from "@/services/mainStore"; import {ExtendedColumnListItem, useColumnsOfTableWithProbe} from "@/services/convenienceStore"; import {jsonToPrettyStr, rules} from "@/services/utils"; @@ -66,7 +66,7 @@ function generateAttributes() { } } -function createTransforms(): Transforms.Transform[] { +function createTransforms(): Transform[] { const baseCol = jsonCol.value; if (!!baseCol && !!extractionPaths.value) { const attributes = {} @@ -78,7 +78,7 @@ function createTransforms(): Transforms.Transform[] { }) return [{ additions: {0: [{attributes, json_col: baseCol.name, operation: "extract_json"}]}, operation: "edit_columns" - } as Transforms.EditColumns] + } as EditColumns] } } diff --git a/src/components/subcomponents/transform/SimpleJoin.vue b/src/components/subcomponents/transform/SimpleJoin.vue index 1599b74..66b1fc8 100644 --- a/src/components/subcomponents/transform/SimpleJoin.vue +++ b/src/components/subcomponents/transform/SimpleJoin.vue @@ -2,7 +2,7 @@ import {reactive, ref, watch, watchEffect} from "vue"; import {useConstantsStore} from "@/services/constantsStore"; -import {TableIdentifier, Transforms} from "@/services/api"; +import {Base, ExistingTable, SimpleJoin, TableIdentifier, Transform} from "@/services/api-v2"; import {useMainStore} from "@/services/mainStore"; import TableSelector from "@/components/helpers/TableSelector.vue"; import {ColumnListItem, useColumnsOfTable} from "@/services/convenienceStore"; @@ -60,11 +60,11 @@ function resetAll() { rightTable.value = null } -function sameLengthOn(vs) { +function sameLengthOn() { return leftOn.value.length == rightOn.value.length || "ON column count differs" } -function createBase(): Transforms.Base { +function createBase(): Base { return { operation: "join", left_table: leftTable.value, @@ -77,7 +77,7 @@ function createBase(): Transforms.Base { on_cols_right: unpackColItems(rightOn.value), selected_cols_left: unpackColItems(selection.left), selected_cols_right: unpackColItems(selection.right) - } as Transforms.SimpleJoin + } as SimpleJoin } defineExpose({resetAll, createBase}) diff --git a/src/components/subcomponents/transform/SimpleWhere.vue b/src/components/subcomponents/transform/SimpleWhere.vue index d2bed45..4c1c42f 100644 --- a/src/components/subcomponents/transform/SimpleWhere.vue +++ b/src/components/subcomponents/transform/SimpleWhere.vue @@ -32,7 +32,13 @@ const {mitmTypes} = useMitMTypes() const {columnList} = useColumnsOfTableWithProbe(() => props.table) -const sqlOps: Transforms.SimpleSQLOperator[] = ["like", "ilike", "=", "<", "<=", ">=", ">", "in", "not in"] +const sqlOps: { title: string, value: Transforms.SimpleSQLOperator }[] = [{ + title: "like", + value: "like" +}, {title: "ilike", value: "ilike"}, {title: "=", value: "eq"}, {title: "<", value: "lt"}, { + title: "<=", + value: "le" +}, {title: ">=", value: "ge"}, {title: ">", value: "gt"}, {title: "in", value: "in"}, {title: "notin", value: ""}] function createWheres(): Transforms.SimpleWhere[] { diff --git a/src/components/subcomponents/transform/TableFilter.vue b/src/components/subcomponents/transform/TableFilter.vue index a659281..9f4eef3 100644 --- a/src/components/subcomponents/transform/TableFilter.vue +++ b/src/components/subcomponents/transform/TableFilter.vue @@ -1,11 +1,11 @@ <script setup lang="ts"> import {useMainStore} from "@/services/mainStore"; import {useConstantsStore} from "@/services/constantsStore"; -import {TableIdentifier, Transforms} from "@/services/api"; +import {TableFilter, TableIdentifier, Transform} from "@/services/api-v2"; import {Ref, ref, watchEffect} from "vue"; -import SimpleWhere from "@/components/subcomponents/transform/SimpleWhere.vue"; import {rules} from "@/services/utils"; import TimeFilter from "@/components/subcomponents/transform/TimeFilter.vue"; +import SimpleWhere from "@/components/subcomponents/transform/SimpleWhere.vue"; const store = useMainStore(); const constants = useConstantsStore(); @@ -20,7 +20,7 @@ const conditions = ref<{ clause: null, isValid: Ref<boolean>, clsName: string, - reference: SimpleWhere | TimeFilter + reference: typeof SimpleWhere | typeof TimeFilter }[]>([]) const limit = ref(null) @@ -36,12 +36,12 @@ function resetAll() { limit.value = null } -function createTransforms(): Transforms.Transform[] { +function createTransforms(): Transform[] { return [{ wheres: conditions.value.filter(item => item.isValid).flatMap(item => item.reference.createWheres()), ...limit.value != null && {limit: limit.value}, operation: "table_filter" - } as Transforms.TableFilter] + } as TableFilter] } function addSimpleWhere() { diff --git a/src/components/subcomponents/transform/TimeFilter.vue b/src/components/subcomponents/transform/TimeFilter.vue index 031e768..e08edc9 100644 --- a/src/components/subcomponents/transform/TimeFilter.vue +++ b/src/components/subcomponents/transform/TimeFilter.vue @@ -1,5 +1,5 @@ <script setup lang="ts"> -import {TableIdentifier, TableProbeResponse, Transforms} from "@/services/api"; +import {SimpleSQLOperator, SimpleWhere, TableIdentifier, TableProbeResponse} from "@/services/api-v2"; import TimeRangeInput from "@/components/helpers/TimeRangeInput.vue"; import {reactive, ref, watchEffect} from "vue"; import {useMainStore} from "@/services/mainStore"; @@ -12,8 +12,8 @@ import {DateTime, FixedOffsetZone, IANAZone} from "luxon"; const ianaTimeZones = Intl.supportedValuesOf('timeZone') // js is a pain const customTimeZones = [IANAZone.create("Europe/Berlin"), - ...Array(25).keys().map(o => - FixedOffsetZone.instance(o - 12))].map(z => ({title: z.name, value: z})) + ...Array(25).map((_, i) => + FixedOffsetZone.instance(i - 12))].map(z => ({title: z.name, value: z})) const store = useMainStore() const constants = useConstantsStore() @@ -44,17 +44,17 @@ watchEffect(() => { isValid.value = !!dtCol && ((comp !== "between" && !!dtp) || (comp === "between" && !!sdt && !!edt)) }) -function dtToCond(col: string, dt: DateTime, operator: Transforms.SimpleSQLOperator): Transforms.SimpleWhere { +function dtToCond(col: string, dt: DateTime, operator: SimpleSQLOperator): SimpleWhere { return {lhs: col, rhs: [dt.toISO(), {mitm: "datetime"}], operator} } -function createWheres(): Transforms.SimpleWhere[] { +function createWheres(): SimpleWhere[] { const dtCol = dateTimeCol.value const comp = comparator.value if (comp === "between") { - return [dtToCond(dtCol, startDateTime.value, ">="), dtToCond(dtCol, endDateTime.value, "<=")] + return [dtToCond(dtCol, startDateTime.value, "ge"), dtToCond(dtCol, endDateTime.value, "le")] } else { - return [dtToCond(dtCol, dateTimePoint.value, comp === "before" ? "<" : ">")] + return [dtToCond(dtCol, dateTimePoint.value, comp === "before" ? "lt" : "gt")] } } @@ -78,18 +78,18 @@ defineExpose({ </v-col> <v-col class="ma-2" cols="4"> - <v-select :items="customTimeZones" v-model="timeZone" label="Time Zone" return-object :rules="[rules.required]" validate-on="invalid-input eager"></v-select> + <v-select :items="customTimeZones" v-model="timeZone" label="Time Zone" :rules="[rules.required]" validate-on="invalid-input eager"></v-select> </v-col> </v-row> <v-row no-gutters class="d-flex flex-nowrap" justify="start"> <template v-if="comparator === 'between'"> <v-col class="ma-2" cols="12"> - <TimeRangeInput v-model:start-date-time="startDateTime" v-model:end-date-time="endDateTime" :timezone="timeZone.value"></TimeRangeInput> + <TimeRangeInput v-model:start-date-time="startDateTime" v-model:end-date-time="endDateTime" :timezone="timeZone"></TimeRangeInput> </v-col> </template> <template v-else> <v-col class="ma-2" cols="12"> - <TimePointInput v-model="dateTimePoint" :timezone="timeZone.value"></TimePointInput> + <TimePointInput v-model="dateTimePoint" :timezone="timeZone"></TimePointInput> </v-col> </template> </v-row> diff --git a/src/components/subcomponents/view/DBTreeView.vue b/src/components/subcomponents/view/DBTreeView.vue index 0ded7a8..6ffafd0 100644 --- a/src/components/subcomponents/view/DBTreeView.vue +++ b/src/components/subcomponents/view/DBTreeView.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> import {useMainStore} from "@/services/mainStore" -import {SourceDBType, TableIdentifier, useAPI} from "@/services/api" +import {SourceDBType, TableIdentifier, useAPI} from "@/services/api-v2" import {computed, ref, watch} from "vue" import {useSelectionStore} from "@/services/selectionStore" import {useConstantsStore} from "@/services/constantsStore"; diff --git a/src/components/subcomponents/view/MarkFK.vue b/src/components/subcomponents/view/MarkFK.vue index 26670ca..61be7a9 100644 --- a/src/components/subcomponents/view/MarkFK.vue +++ b/src/components/subcomponents/view/MarkFK.vue @@ -4,7 +4,7 @@ import TableSelector from "@/components/helpers/TableSelector.vue"; import {computed, reactive, ref, watch} from "vue"; import SourceDBSelector from "@/components/helpers/SourceDBSelector.vue"; import {ColumnListItem, useColumnsOfTable} from "@/services/convenienceStore"; -import {SourceDBType, TableIdentifier, useAPI} from "@/services/api"; +import {SourceDBType, TableIdentifier, useAPI} from "@/services/api-v2"; import {useMainStore} from "@/services/mainStore"; import InfoDialog from "@/components/helpers/InfoDialog.vue"; @@ -41,12 +41,12 @@ watch(rightColumnList, () => { async function markFK() { loading.value = true - const r = await api.markForeignKey({ + const r = await api.markForeignKey(sourceDB.value, { table: leftTable.value, target_table: rightTable.value, columns: leftFKCols.value, target_columns: rightFKCols.value - }, {source: sourceDB.value}) + }) loading.value = false diff --git a/src/components/subcomponents/view/QueryDBSchemaView.vue b/src/components/subcomponents/view/QueryDBSchemaView.vue index 86afcbf..f5211ce 100644 --- a/src/components/subcomponents/view/QueryDBSchemaView.vue +++ b/src/components/subcomponents/view/QueryDBSchemaView.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> -import {DBMetaInfoResponse, DBQueryBody, useAPI} from "@/services/api" +import {DBMetaInfoResponse, DBMetaQuery, DBSchemaQueryRequest, useAPI} from "@/services/api-v2" import {rules} from "@/services/utils" import {reactive, ref, watch} from "vue"; import {useMitMTypes, useSQLTypes} from "@/services/convenienceStore"; @@ -24,7 +24,7 @@ const smallOnly = ref(false) const {sqlTypes} = useSQLTypes() const {mitmTypes} = useMitMTypes() -const emit = defineEmits<{ filter: { [schema: string]: string[] } }>() +const emit = defineEmits<{ filter: [{ [schema: string]: string[] }] }>() const queryForm = reactive({valid: true}) const form = ref(null) @@ -53,9 +53,9 @@ async function search() { semantic_column_conditions: [{...(!!mitmDT.value && {inferred_data_type: mitmDT.value?.value})}] } - } as DBQueryBody + } as DBSchemaQueryRequest - const r = await api.searchDB(query) + const r = await api.searchDB("original", query) if (r?.data) { const selection = Object.fromEntries(Object.entries(r.data.db_structure).map(([schema, tables]) => [schema, Object.keys(tables)])) diff --git a/src/components/subcomponents/view/TableDetails.vue b/src/components/subcomponents/view/TableDetails.vue index 4b42bd5..366e0aa 100644 --- a/src/components/subcomponents/view/TableDetails.vue +++ b/src/components/subcomponents/view/TableDetails.vue @@ -2,7 +2,7 @@ import {useMainStore} from "@/services/mainStore" import {useSelectionStore} from "@/services/selectionStore" -import {TableMetaInfoResponse, TableProbeResponse, useAPI} from "@/services/api" +import {TableMetaInfoResponse, TableProbeResponse, useAPI} from "@/services/api-v2" import {computed, ref, shallowRef, watchEffect} from "vue" import {storeToRefs} from "pinia"; import TableLabel from "@/components/helpers/TableLabel.vue"; diff --git a/src/components/subcomponents/view/TablePreview.vue b/src/components/subcomponents/view/TablePreview.vue index 12da9a3..b829b42 100644 --- a/src/components/subcomponents/view/TablePreview.vue +++ b/src/components/subcomponents/view/TablePreview.vue @@ -3,13 +3,12 @@ import {useMainStore} from "@/services/mainStore"; import {useSelectionStore} from "@/services/selectionStore"; import {ref, watchEffect} from "vue"; -import {useAPI, useAPIClient} from "@/services/api"; +import {useAPI, useAPIClient} from "@/services/api-v2"; import {storeToRefs} from "pinia"; import TableLabel from "@/components/helpers/TableLabel.vue"; import {useFullTableInfo} from "@/services/convenienceStore"; const api = useAPI(); -const apiClient = useAPIClient(); const store = useMainStore() const selectionStore = useSelectionStore() const {selectedTable} = storeToRefs(selectionStore) @@ -31,12 +30,12 @@ function loadItems({page, itemsPerPage}) { const limit = Number(itemsPerPage ? itemsPerPage : 20) const offset = Math.max(0, page - 1) * limit - const table = t.name + const name = t.name const schema = t.schema const source = t.source api.queryTable({ - table, + name, schema, source, limit, diff --git a/src/main.js b/src/main.js index 9fb4eb1..a9666f0 100644 --- a/src/main.js +++ b/src/main.js @@ -12,13 +12,11 @@ import App from './App.vue'; import {createPinia} from "pinia"; import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'; import VueCookies from 'vue-cookies'; -import api from './services/api'; import { createApp } from 'vue'; const pinia = createPinia() pinia.use(piniaPluginPersistedstate) const app = createApp(App) -app.use(api) app.use(pinia) app.use(VueCookies, { expires: '7d'}) registerPlugins(app) diff --git a/src/services/api-schema/openapi.json b/src/services/api-schema/openapi.json index d208a55..b3a18f3 100644 --- a/src/services/api-schema/openapi.json +++ b/src/services/api-schema/openapi.json @@ -1 +1 @@ -{"openapi": "3.1.0", "info": {"title": "MitMExtractorBackend", "version": "0.1.0"}, "paths": {"/admin/clear-sessions": {"post": {"tags": ["admin"], "summary": "Clear Sessions", "operationId": "clear_sessions", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/admin/active-sessions": {"get": {"tags": ["admin"], "summary": "Get Active Sessions", "operationId": "get_active_sessions", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"additionalProperties": {"type": "string", "format": "date-time"}, "type": "object", "title": "Response Get Active Sessions Admin Active Sessions Get"}}}}}}}, "/admin/clear-exports": {"post": {"tags": ["admin"], "summary": "Clear Exports", "operationId": "clear_exports", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/definitions/mitms": {"get": {"tags": ["definitions"], "summary": "Get Mitms", "operationId": "get_mitms", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/MITM"}, "type": "array", "title": "Response Get Mitms Definitions Mitms Get"}}}}}}}, "/definitions/mitm-definition": {"get": {"tags": ["definitions"], "summary": "Get Mitm Definition", "operationId": "get_mitm_definition", "parameters": [{"name": "mitm", "in": "query", "required": true, "schema": {"$ref": "#/components/schemas/MITM"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MITMDefinition"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/definitions/mitm-data-types": {"get": {"tags": ["definitions"], "summary": "Get Mitm Data Types", "operationId": "get_mitm_data_types", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"additionalProperties": {"$ref": "#/components/schemas/MitMDataTypeInfos"}, "type": "object", "title": "Response Get Mitm Data Types Definitions Mitm Data Types Get"}}}}}}}, "/session/start-session": {"post": {"tags": ["session"], "summary": "Start Session", "operationId": "start_session", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SessionIdResponse"}}}}}}}, "/session/get-session": {"get": {"tags": ["session"], "summary": "Get Session", "operationId": "get_session", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SessionIdResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/stop-session": {"post": {"tags": ["session"], "summary": "Stop Session", "operationId": "stop_session", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/upload-db": {"post": {"tags": ["session"], "summary": "Upload Db", "operationId": "upload_db", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"multipart/form-data": {"schema": {"$ref": "#/components/schemas/Body_upload_db_session_upload_db_post"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/connect-db": {"post": {"tags": ["session"], "summary": "Connect Db", "operationId": "connect_db", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Body_connect_db_session_connect_db_post"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/test-db-conn": {"get": {"tags": ["session"], "summary": "Test Db Conn", "operationId": "test_db_conn", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBConnTestResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/keep-alive": {"get": {"tags": ["session"], "summary": "Keep Alive", "operationId": "keep_alive", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/KeepAliveResponse"}}}}}}}, "/control/reflect-db": {"post": {"tags": ["control"], "summary": "Reflect Db", "operationId": "reflect_db", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/init-working-db": {"post": {"tags": ["control"], "summary": "Init Working Db", "operationId": "init_working_db", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/mark-foreign-key": {"post": {"tags": ["control"], "summary": "Mark Foreign Key", "operationId": "mark_foreign_key", "parameters": [{"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ForeignKeyConstraintRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FKCreationResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/virtual-view": {"put": {"tags": ["control"], "summary": "Create Virtual View", "operationId": "create_virtual_view", "parameters": [{"name": "override_if_exists", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Override If Exists"}}, {"name": "verify_immediately", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Verify Immediately"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VirtualViewCreationRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VirtualViewResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "get": {"tags": ["control"], "summary": "Get Virtual View", "operationId": "get_virtual_view", "parameters": [{"name": "view", "in": "query", "required": true, "schema": {"type": "string", "title": "View"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "virtual", "title": "Schema"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VirtualViewResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["control"], "summary": "Drop Virtual View", "operationId": "drop_virtual_view", "parameters": [{"name": "view", "in": "query", "required": true, "schema": {"type": "string", "title": "View"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "virtual", "title": "Schema"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/virtual-views": {"get": {"tags": ["control"], "summary": "Get Virtual Views", "operationId": "get_virtual_views", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/VirtualViewResponse"}, "title": "Response Get Virtual Views Control Virtual Views Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/compiled-virtual-view": {"get": {"tags": ["control"], "summary": "Get Compiled Virtual View", "operationId": "get_compiled_virtual_view", "parameters": [{"name": "view", "in": "query", "required": true, "schema": {"type": "string", "title": "View"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "virtual", "title": "Schema"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompiledVirtualView"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/compiled-virtual-views": {"get": {"tags": ["control"], "summary": "Get Compiled Virtual Views", "operationId": "get_compiled_virtual_views", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/CompiledVirtualView"}, "title": "Response Get Compiled Virtual Views Control Compiled Virtual Views Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/virtual-views-batch": {"put": {"tags": ["control"], "summary": "Create Virtual Views Batch", "operationId": "create_virtual_views_batch", "parameters": [{"name": "override_if_exists", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Override If Exists"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/VirtualViewCreationRequest"}, "title": "Requests"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/VirtualViewResponse"}, "title": "Response Create Virtual Views Batch Control Virtual Views Batch Put"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/raw-query": {"post": {"tags": ["data"], "summary": "Raw Query", "operationId": "raw_query", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Body_raw_query_data_raw_query_post"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "array", "items": {}}, "title": "Response Raw Query Data Raw Query Post"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/query-table": {"get": {"tags": ["data"], "summary": "Query Table", "operationId": "query_table", "parameters": [{"name": "table", "in": "query", "required": true, "schema": {"type": "string", "title": "Table"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "offset", "in": "query", "required": false, "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Offset"}}, {"name": "limit", "in": "query", "required": false, "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Limit"}}, {"name": "include_table_meta", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Include Table Meta"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TableQueryResult"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/query-unique-values": {"get": {"tags": ["data"], "summary": "Query Unique Values", "operationId": "query_unique_values", "parameters": [{"name": "table", "in": "query", "required": true, "schema": {"type": "string", "title": "Table"}}, {"name": "column", "in": "query", "required": true, "schema": {"type": "string", "title": "Column"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {}, "title": "Response Query Unique Values Data Query Unique Values Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/er-diagram": {"get": {"tags": ["data"], "summary": "Make Erd", "operationId": "make_erd", "parameters": [{"name": "version", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/ERVariant"}], "default": "mermaid", "title": "Version"}}, {"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/filtered-er-diagram": {"post": {"tags": ["data"], "summary": "Make Filtered Erd", "operationId": "make_filtered_erd", "parameters": [{"name": "version", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/ERVariant"}], "default": "mermaid", "title": "Version"}}, {"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBSchemaSelectionRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/table-schema": {"get": {"tags": ["reflection"], "summary": "Get Table Schema", "operationId": "get_table_schema", "parameters": [{"name": "table", "in": "query", "required": true, "schema": {"type": "string", "title": "Table"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TableMetaInfoBase"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/db-schema": {"get": {"tags": ["reflection"], "summary": "Get Db Schema", "operationId": "get_db_schema", "parameters": [{"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBMetaInfoBase"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/filter-db-schema": {"post": {"tags": ["reflection"], "summary": "Filter Db Schema", "operationId": "filter_db_schema", "parameters": [{"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBSchemaSelectionRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBMetaInfoBase"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/query-db-schema": {"post": {"tags": ["reflection"], "summary": "Query Db Schema", "operationId": "query_db_schema", "parameters": [{"name": "store_intermediate_table_probes", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Store Intermediate Table Probes"}}, {"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBSchemaQueryRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBMetaInfoBase"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/suggest-joins": {"get": {"tags": ["reflection"], "summary": "Suggest Joins", "operationId": "suggest_joins", "parameters": [{"name": "table", "in": "query", "required": true, "schema": {"type": "string", "title": "Table"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "array", "prefixItems": [{"type": "string"}, {"type": "string"}], "minItems": 2, "maxItems": 2}, "title": "Response Suggest Joins Reflection Suggest Joins Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/probe-table": {"post": {"tags": ["reflection"], "summary": "Probe Table", "operationId": "probe_table", "parameters": [{"name": "table", "in": "query", "required": true, "schema": {"type": "string", "title": "Table"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "sample_size", "in": "query", "required": false, "schema": {"type": "integer", "default": 100, "title": "Sample Size"}}, {"name": "override_if_exists", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Override If Exists"}}, {"name": "store_results", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Store Results"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TableProbeBase"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/probe-db": {"post": {"tags": ["reflection"], "summary": "Probe Db", "operationId": "probe_db", "parameters": [{"name": "source", "in": "query", "required": false, "schema": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original", "title": "Source"}}, {"name": "sample_size", "in": "query", "required": false, "schema": {"type": "integer", "default": 100, "title": "Sample Size"}}, {"name": "override_if_exists", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Override If Exists"}}, {"name": "store_results", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Store Results"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "additionalProperties": {"type": "array", "uniqueItems": true, "items": {"type": "string"}}, "title": "Table Selection"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBProbeBase"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/validate-concept-mappings": {"post": {"tags": ["mitm"], "summary": "Validate Concept Mappings", "operationId": "validate_concept_mappings", "parameters": [{"name": "include_request", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Include Request"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ConceptMapping-Input"}, "title": "Concept Mappings"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MappingGroupValidationResult"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/export-mitm": {"post": {"tags": ["mitm"], "summary": "Export Mitm", "operationId": "export_mitm", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ExportRequest"}}}}, "responses": {"200": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/publish-mitm-export": {"post": {"tags": ["mitm"], "summary": "Publish Mitm Export", "operationId": "publish_mitm_export", "parameters": [{"name": "use_streaming_export", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Use Streaming Export"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ExportRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublishedMitMResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/delete-mitm-export": {"post": {"tags": ["mitm"], "summary": "Delete Mitm Export", "operationId": "delete_mitm_export", "parameters": [{"name": "export_id", "in": "query", "required": true, "schema": {"type": "integer", "title": "Export Id"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/delete-mitm-exports": {"post": {"tags": ["mitm"], "summary": "Delete Mitm Exports", "operationId": "delete_mitm_exports", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/": {"get": {"summary": "Root", "operationId": "root", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}}, "components": {"schemas": {"AddColumn": {"properties": {"operation": {"type": "string", "enum": ["add_column"], "const": "add_column", "title": "Operation", "default": "add_column"}, "col_name": {"type": "string", "title": "Col Name"}, "value": {"title": "Value"}, "target_type": {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}], "title": "Target Type"}}, "type": "object", "required": ["col_name", "value", "target_type"], "title": "AddColumn"}, "Body_connect_db_session_connect_db_post": {"properties": {"db_url": {"type": "string", "minLength": 1, "format": "uri", "title": "Db Url"}}, "type": "object", "required": ["db_url"], "title": "Body_connect_db_session_connect_db_post"}, "Body_raw_query_data_raw_query_post": {"properties": {"query": {"type": "string", "title": "Query"}}, "type": "object", "required": ["query"], "title": "Body_raw_query_data_raw_query_post"}, "Body_upload_db_session_upload_db_post": {"properties": {"sqlite": {"type": "string", "format": "binary", "title": "Sqlite", "description": "Upload a sqlite db file here."}}, "type": "object", "required": ["sqlite"], "title": "Body_upload_db_session_upload_db_post"}, "CastColumn": {"properties": {"operation": {"type": "string", "enum": ["cast_column"], "const": "cast_column", "title": "Operation", "default": "cast_column"}, "target_type": {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}], "title": "Target Type"}}, "type": "object", "required": ["target_type"], "title": "CastColumn"}, "CategoricalSummaryStatistics": {"properties": {"count": {"type": "integer", "minimum": 0.0, "title": "Count"}, "unique": {"type": "integer", "minimum": 0.0, "title": "Unique"}, "top": {"type": "string", "title": "Top"}, "freq": {"type": "integer", "minimum": 0.0, "title": "Freq"}}, "type": "object", "required": ["count", "unique", "top", "freq"], "title": "CategoricalSummaryStatistics"}, "ColumnProperties": {"properties": {"nullable": {"type": "boolean", "title": "Nullable"}, "unique": {"type": "boolean", "title": "Unique"}, "part_of_pk": {"type": "boolean", "title": "Part Of Pk"}, "part_of_fk": {"type": "boolean", "title": "Part Of Fk"}, "part_of_index": {"type": "boolean", "title": "Part Of Index"}, "mitm_data_type": {"$ref": "#/components/schemas/MITMDataType"}}, "type": "object", "required": ["nullable", "unique", "part_of_pk", "part_of_fk", "part_of_index", "mitm_data_type"], "title": "ColumnProperties"}, "CompiledVirtualView": {"properties": {"dialect": {"type": "string", "title": "Dialect"}, "compiled_sql": {"type": "string", "title": "Compiled Sql"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "column_dtypes": {"items": {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}]}, "type": "array", "title": "Column Dtypes"}, "name": {"type": "string", "title": "Name"}, "schema_name": {"type": "string", "title": "Schema Name"}}, "type": "object", "required": ["dialect", "compiled_sql", "columns", "column_dtypes", "name", "schema_name"], "title": "CompiledVirtualView"}, "ConceptKind": {"type": "string", "enum": ["concrete", "abstract"], "title": "ConceptKind"}, "ConceptLevel": {"type": "string", "enum": ["main", "sub", "weak"], "title": "ConceptLevel"}, "ConceptMapping-Input": {"properties": {"mitm": {"$ref": "#/components/schemas/MITM"}, "concept": {"type": "string", "title": "Concept"}, "base_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Base Table"}, "kind_col": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kind Col"}, "type_col": {"type": "string", "title": "Type Col"}, "identity_columns": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Identity Columns"}, "inline_relations": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Inline Relations"}, "foreign_relations": {"additionalProperties": {"$ref": "#/components/schemas/ForeignRelation-Input"}, "type": "object", "title": "Foreign Relations"}, "attributes": {"items": {"type": "string"}, "type": "array", "title": "Attributes"}, "attribute_dtypes": {"items": {"$ref": "#/components/schemas/MITMDataType"}, "type": "array", "title": "Attribute Dtypes"}}, "type": "object", "required": ["mitm", "concept", "base_table", "type_col"], "title": "ConceptMapping"}, "ConceptMapping-Output": {"properties": {"mitm": {"$ref": "#/components/schemas/MITM"}, "concept": {"type": "string", "title": "Concept"}, "base_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Base Table"}, "kind_col": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kind Col"}, "type_col": {"type": "string", "title": "Type Col"}, "identity_columns": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Identity Columns"}, "inline_relations": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Inline Relations"}, "foreign_relations": {"additionalProperties": {"$ref": "#/components/schemas/ForeignRelation-Output"}, "type": "object", "title": "Foreign Relations"}, "attributes": {"items": {"type": "string"}, "type": "array", "title": "Attributes"}, "attribute_dtypes": {"items": {"$ref": "#/components/schemas/MITMDataType"}, "type": "array", "title": "Attribute Dtypes"}}, "type": "object", "required": ["mitm", "concept", "base_table", "type_col"], "title": "ConceptMapping"}, "ConceptProperties": {"properties": {"nature": {"prefixItems": [{"$ref": "#/components/schemas/ConceptLevel"}, {"$ref": "#/components/schemas/ConceptKind"}], "type": "array", "maxItems": 2, "minItems": 2, "title": "Nature"}, "key": {"type": "string", "title": "Key"}, "plural": {"type": "string", "title": "Plural"}, "typing_concept": {"type": "string", "title": "Typing Concept", "default": "type"}, "column_group_ordering": {"items": {"type": "string", "enum": ["kind", "type", "identity-relations", "inline-relations", "foreign-relations", "attributes"]}, "type": "array", "title": "Column Group Ordering", "default": ["kind", "type", "identity-relations", "inline-relations", "foreign-relations", "attributes"]}, "permit_attributes": {"type": "boolean", "title": "Permit Attributes", "default": true}}, "type": "object", "required": ["nature", "key", "plural"], "title": "ConceptProperties"}, "DBConnTestResponse": {"properties": {"db_url": {"type": "string", "minLength": 1, "format": "uri", "title": "Db Url"}, "success": {"type": "boolean", "title": "Success"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}}, "type": "object", "required": ["db_url", "success"], "title": "DBConnTestResponse"}, "DBMetaInfoBase": {"properties": {"db_structure": {"additionalProperties": {"additionalProperties": {"$ref": "#/components/schemas/TableMetaInfoBase"}, "type": "object"}, "type": "object", "title": "Db Structure"}, "tables": {"additionalProperties": {"$ref": "#/components/schemas/TableMetaInfoBase"}, "type": "object", "title": "Tables", "readOnly": true}}, "type": "object", "required": ["db_structure", "tables"], "title": "DBMetaInfoBase"}, "DBMetaQuery": {"properties": {"syntactic_table_conditions": {"items": {"$ref": "#/components/schemas/SyntacticTableCondition"}, "type": "array", "title": "Syntactic Table Conditions"}, "semantic_table_conditions": {"items": {"$ref": "#/components/schemas/SemanticTableCondition"}, "type": "array", "title": "Semantic Table Conditions"}, "syntactic_column_conditions": {"items": {"$ref": "#/components/schemas/SyntacticColumnCondition"}, "type": "array", "title": "Syntactic Column Conditions"}, "semantic_column_conditions": {"items": {"$ref": "#/components/schemas/SemanticColumnCondition"}, "type": "array", "title": "Semantic Column Conditions"}}, "type": "object", "title": "DBMetaQuery"}, "DBProbeBase": {"properties": {"table_probes": {"additionalProperties": {"$ref": "#/components/schemas/TableProbeBase"}, "type": "object", "title": "Table Probes"}, "db_meta": {"$ref": "#/components/schemas/DBMetaInfoBase"}}, "type": "object", "required": ["db_meta"], "title": "DBProbeBase"}, "DBSchemaQueryRequest": {"properties": {"query": {"$ref": "#/components/schemas/DBMetaQuery"}, "filter_columns": {"type": "boolean", "title": "Filter Columns", "default": false}}, "type": "object", "required": ["query"], "title": "DBSchemaQueryRequest"}, "DBSchemaSelectionRequest": {"properties": {"selection": {"anyOf": [{"additionalProperties": {"items": {"type": "string"}, "type": "array", "uniqueItems": true}, "type": "object"}, {"additionalProperties": {"additionalProperties": {"items": {"type": "string"}, "type": "array", "uniqueItems": true}, "type": "object"}, "type": "object"}], "title": "Selection"}, "filter_columns": {"type": "boolean", "title": "Filter Columns", "default": false}}, "type": "object", "required": ["selection"], "title": "DBSchemaSelectionRequest"}, "DatetimeSummaryStatistics": {"properties": {"count": {"type": "integer", "title": "Count"}, "mean": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Mean"}, "min": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Min"}, "max": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Max"}, "percentile_25": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Percentile 25"}, "percentile_50": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Percentile 50"}, "percentile_75": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Percentile 75"}}, "type": "object", "required": ["count"], "title": "DatetimeSummaryStatistics"}, "ERVariant": {"type": "string", "enum": ["image", "mermaid"], "title": "ERVariant"}, "EditColumns": {"properties": {"operation": {"type": "string", "enum": ["edit_columns"], "const": "edit_columns", "title": "Operation", "default": "edit_columns"}, "transforms": {"additionalProperties": {"oneOf": [{"$ref": "#/components/schemas/CastColumn"}], "discriminator": {"propertyName": "operation", "mapping": {"cast_column": "#/components/schemas/CastColumn"}}}, "type": "object", "title": "Transforms"}, "renames": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Renames"}, "drops": {"items": {"type": "string"}, "type": "array", "uniqueItems": true, "title": "Drops"}, "additions": {"additionalProperties": {"items": {"oneOf": [{"$ref": "#/components/schemas/AddColumn"}, {"$ref": "#/components/schemas/ExtractJson"}], "discriminator": {"propertyName": "operation", "mapping": {"add_column": "#/components/schemas/AddColumn", "extract_json": "#/components/schemas/ExtractJson"}}}, "type": "array"}, "type": "object", "title": "Additions"}}, "type": "object", "title": "EditColumns"}, "ExistingTable": {"properties": {"operation": {"type": "string", "enum": ["existing"], "const": "existing", "title": "Operation", "default": "existing"}, "base_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Base Table"}}, "type": "object", "required": ["base_table"], "title": "ExistingTable"}, "ExportRequest": {"properties": {"mitm": {"$ref": "#/components/schemas/MITM"}, "mapped_concepts": {"items": {"$ref": "#/components/schemas/ConceptMapping-Input"}, "type": "array", "title": "Mapped Concepts"}, "post_processing": {"anyOf": [{"$ref": "#/components/schemas/PostProcessing"}, {"type": "null"}]}, "filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Filename"}}, "type": "object", "required": ["mitm", "mapped_concepts"], "title": "ExportRequest"}, "ExtractJson": {"properties": {"operation": {"type": "string", "enum": ["extract_json"], "const": "extract_json", "title": "Operation", "default": "extract_json"}, "json_col": {"type": "string", "title": "Json Col"}, "attributes": {"additionalProperties": {"items": {"type": "string"}, "type": "array"}, "type": "object", "title": "Attributes"}}, "type": "object", "required": ["json_col", "attributes"], "title": "ExtractJson"}, "FKCreationResponse": {"properties": {"status": {"type": "boolean", "title": "Status"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}}, "type": "object", "required": ["status"], "title": "FKCreationResponse"}, "ForeignKeyConstraintBase": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "table": {"anyOf": [{"$ref": "#/components/schemas/LocalTableIdentifier"}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Table"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "target_table": {"anyOf": [{"$ref": "#/components/schemas/LocalTableIdentifier"}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Target Table"}, "target_columns": {"items": {"type": "string"}, "type": "array", "title": "Target Columns"}}, "type": "object", "required": ["table", "columns", "target_table", "target_columns"], "title": "ForeignKeyConstraintBase"}, "ForeignKeyConstraintRequest": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "table": {"anyOf": [{"$ref": "#/components/schemas/LocalTableIdentifier"}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Table"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "target_table": {"anyOf": [{"$ref": "#/components/schemas/LocalTableIdentifier"}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Target Table"}, "target_columns": {"items": {"type": "string"}, "type": "array", "title": "Target Columns"}}, "type": "object", "required": ["table", "columns", "target_table", "target_columns"], "title": "ForeignKeyConstraintRequest"}, "ForeignRelation-Input": {"properties": {"fk_columns": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Fk Columns"}, "referred_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Referred Table"}}, "type": "object", "required": ["fk_columns", "referred_table"], "title": "ForeignRelation"}, "ForeignRelation-Output": {"properties": {"fk_columns": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Fk Columns"}, "referred_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Referred Table"}}, "type": "object", "required": ["fk_columns", "referred_table"], "title": "ForeignRelation"}, "ForeignRelationInfo": {"properties": {"target_concept": {"type": "string", "title": "Target Concept"}, "fk_relations": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Fk Relations"}}, "type": "object", "required": ["target_concept", "fk_relations"], "title": "ForeignRelationInfo"}, "GroupValidationResult": {"properties": {"individual_validations": {"additionalProperties": {"items": {"prefixItems": [{"$ref": "#/components/schemas/TableIdentifier"}, {"$ref": "#/components/schemas/IndividualValidationResult"}], "type": "array", "maxItems": 2, "minItems": 2}, "type": "array"}, "type": "object", "title": "Individual Validations"}, "is_valid": {"type": "boolean", "title": "Is Valid", "readOnly": true}}, "type": "object", "required": ["is_valid"], "title": "GroupValidationResult"}, "HTTPValidationError": {"properties": {"detail": {"items": {"$ref": "#/components/schemas/ValidationError"}, "type": "array", "title": "Detail"}}, "type": "object", "title": "HTTPValidationError"}, "IndividualValidationResult": {"properties": {"is_valid": {"type": "boolean", "title": "Is Valid", "default": true}, "violations": {"items": {"type": "string"}, "type": "array", "title": "Violations"}}, "type": "object", "title": "IndividualValidationResult"}, "KeepAliveResponse": {"properties": {"server_status": {"type": "string", "enum": ["available"], "const": "available", "title": "Server Status", "default": "available"}, "session_status": {"type": "string", "enum": ["missing session cookie", "session invalid", "session valid"], "title": "Session Status"}}, "type": "object", "required": ["session_status"], "title": "KeepAliveResponse"}, "Limit": {"properties": {"operation": {"type": "string", "enum": ["limit"], "const": "limit", "title": "Operation", "default": "limit"}, "limit": {"type": "integer", "title": "Limit"}}, "type": "object", "required": ["limit"], "title": "Limit"}, "LocalTableIdentifier": {"properties": {"name": {"type": "string", "title": "Name"}, "schema": {"type": "string", "title": "Schema", "default": "main"}}, "type": "object", "required": ["name"], "title": "LocalTableIdentifier"}, "MITM": {"type": "string", "enum": ["MAED"], "const": "MAED", "title": "MITM"}, "MITMDataType": {"type": "string", "enum": ["text", "json", "integer", "numeric", "boolean", "datetime", "unknown", "infer"], "title": "MITMDataType"}, "MITMDefinition": {"properties": {"main_concepts": {"items": {"type": "string"}, "type": "array", "uniqueItems": true, "title": "Main Concepts"}, "weak_concepts": {"additionalProperties": {"$ref": "#/components/schemas/MITMDataType"}, "type": "object", "title": "Weak Concepts"}, "sub_concepts": {"additionalProperties": {"items": {"type": "string"}, "type": "array", "uniqueItems": true}, "type": "object", "title": "Sub Concepts"}, "concept_relations": {"additionalProperties": {"$ref": "#/components/schemas/OwnedRelations"}, "type": "object", "title": "Concept Relations"}, "concept_properties": {"additionalProperties": {"$ref": "#/components/schemas/ConceptProperties"}, "type": "object", "title": "Concept Properties"}, "leaf_concepts": {"items": {"type": "string"}, "type": "array", "uniqueItems": true, "title": "Leaf Concepts", "readOnly": true}, "abstract_concepts": {"items": {"type": "string"}, "type": "array", "uniqueItems": true, "title": "Abstract Concepts", "readOnly": true}, "parent_concepts_map": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Parent Concepts Map", "readOnly": true}}, "type": "object", "required": ["main_concepts", "weak_concepts", "sub_concepts", "concept_relations", "concept_properties", "leaf_concepts", "abstract_concepts", "parent_concepts_map"], "title": "MITMDefinition"}, "MappingGroupValidationResult": {"properties": {"evaluated_mappings": {"anyOf": [{"items": {"$ref": "#/components/schemas/ConceptMapping-Output"}, "type": "array"}, {"type": "null"}], "title": "Evaluated Mappings"}, "validation_result": {"$ref": "#/components/schemas/GroupValidationResult"}}, "type": "object", "required": ["validation_result"], "title": "MappingGroupValidationResult"}, "MitMDataTypeInfos": {"properties": {"sql_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sql Type"}}, "type": "object", "required": ["sql_type"], "title": "MitMDataTypeInfos"}, "NumericSummaryStatistics": {"properties": {"count": {"type": "integer", "title": "Count"}, "mean": {"type": "number", "title": "Mean"}, "min": {"type": "number", "title": "Min"}, "max": {"type": "number", "title": "Max"}, "std": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Std"}, "percentile_25": {"type": "number", "title": "Percentile 25"}, "percentile_50": {"type": "number", "title": "Percentile 50"}, "percentile_75": {"type": "number", "title": "Percentile 75"}}, "type": "object", "required": ["count", "mean", "min", "max", "percentile_25", "percentile_50", "percentile_75"], "title": "NumericSummaryStatistics"}, "OwnedRelations": {"properties": {"identity": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Identity"}, "inline": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Inline"}, "foreign": {"additionalProperties": {"$ref": "#/components/schemas/ForeignRelationInfo"}, "type": "object", "title": "Foreign"}}, "type": "object", "required": ["identity", "inline", "foreign"], "title": "OwnedRelations"}, "PostProcessing": {"properties": {"table_postprocessing": {"items": {"$ref": "#/components/schemas/TablePostProcessing"}, "type": "array", "title": "Table Postprocessing"}}, "type": "object", "required": ["table_postprocessing"], "title": "PostProcessing"}, "PublishedMitMResponse": {"properties": {"url": {"type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Url"}, "relative_uri": {"type": "string", "title": "Relative Uri"}, "deletion_request_url": {"type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Deletion Request Url"}, "export_id": {"type": "integer", "title": "Export Id"}}, "type": "object", "required": ["url", "relative_uri", "deletion_request_url", "export_id"], "title": "PublishedMitMResponse"}, "RawCompiled": {"properties": {"operation": {"type": "string", "enum": ["raw"], "const": "raw", "title": "Operation", "default": "raw"}, "typed_query": {"$ref": "#/components/schemas/TypedRawQuery"}}, "type": "object", "required": ["typed_query"], "title": "RawCompiled"}, "ReselectColumns": {"properties": {"operation": {"type": "string", "enum": ["reselect_columns"], "const": "reselect_columns", "title": "Operation", "default": "reselect_columns"}, "selection": {"items": {"type": "string"}, "type": "array", "title": "Selection"}}, "type": "object", "required": ["selection"], "title": "ReselectColumns"}, "SampleSummary": {"properties": {"sample_size": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Sample Size"}, "na_fraction": {"anyOf": [{"type": "number", "maximum": 1.0, "minimum": 0.0}, {"type": "null"}], "title": "Na Fraction"}, "unique_fraction": {"anyOf": [{"type": "number", "maximum": 1.0, "minimum": 0.0}, {"type": "null"}], "title": "Unique Fraction"}, "value_counts": {"anyOf": [{"additionalProperties": {"type": "integer"}, "type": "object"}, {"type": "null"}], "title": "Value Counts"}, "summary_statistics": {"anyOf": [{"$ref": "#/components/schemas/NumericSummaryStatistics"}, {"$ref": "#/components/schemas/CategoricalSummaryStatistics"}, {"$ref": "#/components/schemas/DatetimeSummaryStatistics"}, {"type": "null"}], "title": "Summary Statistics"}, "json_schema": {"anyOf": [{"type": "object"}, {"type": "null"}], "title": "Json Schema"}}, "type": "object", "title": "SampleSummary"}, "SemanticColumnCondition": {"properties": {"inferred_data_type": {"anyOf": [{"$ref": "#/components/schemas/MITMDataType"}, {"type": "null"}]}, "max_na_fraction": {"anyOf": [{"type": "number", "maximum": 1.0, "minimum": 0.0}, {"type": "null"}], "title": "Max Na Fraction"}, "value_in_range": {"anyOf": [{}, {"type": "null"}], "title": "Value In Range"}, "contained_value": {"anyOf": [{}, {"type": "null"}], "title": "Contained Value"}, "contained_datetime": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Contained Datetime"}}, "type": "object", "title": "SemanticColumnCondition"}, "SemanticTableCondition": {"properties": {"min_row_count": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Min Row Count"}, "max_row_count": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Max Row Count"}}, "type": "object", "title": "SemanticTableCondition"}, "SessionIdResponse": {"properties": {"session_id": {"type": "string", "format": "uuid", "title": "Session Id"}}, "type": "object", "required": ["session_id"], "title": "SessionIdResponse"}, "SimpleJoin": {"properties": {"operation": {"type": "string", "enum": ["join"], "const": "join", "title": "Operation", "default": "join"}, "left_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Left Table"}, "right_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Right Table"}, "on_cols_left": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "On Cols Left"}, "on_cols_right": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "On Cols Right"}, "is_outer": {"type": "boolean", "title": "Is Outer", "default": false}, "full": {"type": "boolean", "title": "Full", "default": false}, "selected_cols_left": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Selected Cols Left"}, "selected_cols_right": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Selected Cols Right"}, "left_alias": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Left Alias"}, "right_alias": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Right Alias"}}, "type": "object", "required": ["left_table", "right_table"], "title": "SimpleJoin"}, "SimpleSQLOperator": {"type": "string", "enum": ["ilike", "like", "=", ">=", ">", "<=", "<", "in", "notin"], "title": "SimpleSQLOperator"}, "SimpleWhere": {"properties": {"lhs": {"type": "string", "title": "Lhs"}, "operator": {"$ref": "#/components/schemas/SimpleSQLOperator"}, "rhs": {"anyOf": [{"type": "string"}, {"prefixItems": [{}, {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}]}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Rhs"}}, "type": "object", "required": ["lhs", "operator", "rhs"], "title": "SimpleWhere"}, "SourceDBType": {"type": "string", "enum": ["original", "working", "virtual"], "title": "SourceDBType"}, "SyntacticColumnCondition": {"properties": {"name_regex": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name Regex"}, "sql_data_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sql Data Type"}, "mitm_data_type": {"anyOf": [{"$ref": "#/components/schemas/MITMDataType"}, {"type": "null"}]}}, "type": "object", "title": "SyntacticColumnCondition"}, "SyntacticTableCondition": {"properties": {"schema_regex": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Schema Regex"}, "name_regex": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name Regex"}, "min_col_count": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Min Col Count"}, "max_col_count": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Max Col Count"}, "has_foreign_key": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Foreign Key"}}, "type": "object", "title": "SyntacticTableCondition"}, "TableFilter": {"properties": {"operation": {"type": "string", "enum": ["table_filter"], "const": "table_filter", "title": "Operation", "default": "table_filter"}, "wheres": {"items": {"$ref": "#/components/schemas/SimpleWhere"}, "type": "array", "title": "Wheres"}, "limit": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Limit"}}, "type": "object", "required": ["wheres"], "title": "TableFilter"}, "TableIdentifier": {"properties": {"source": {"allOf": [{"$ref": "#/components/schemas/SourceDBType"}], "default": "original"}, "schema": {"type": "string", "title": "Schema", "default": "main"}, "name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["name"], "title": "TableIdentifier"}, "TableMetaInfoBase": {"properties": {"schema_name": {"type": "string", "title": "Schema Name", "default": "main"}, "name": {"type": "string", "title": "Name"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "sql_column_types": {"items": {"type": "string"}, "type": "array", "title": "Sql Column Types"}, "primary_key": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Primary Key"}, "indexes": {"anyOf": [{"items": {"items": {"type": "string"}, "type": "array"}, "type": "array"}, {"type": "null"}], "title": "Indexes"}, "foreign_key_constraints": {"items": {"$ref": "#/components/schemas/ForeignKeyConstraintBase"}, "type": "array", "title": "Foreign Key Constraints"}, "column_properties": {"additionalProperties": {"$ref": "#/components/schemas/ColumnProperties"}, "type": "object", "title": "Column Properties"}}, "type": "object", "required": ["name", "columns", "sql_column_types"], "title": "TableMetaInfoBase"}, "TablePostProcessing": {"properties": {"target_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Target Table"}, "transforms": {"items": {"oneOf": [{"$ref": "#/components/schemas/EditColumns"}, {"$ref": "#/components/schemas/ReselectColumns"}, {"$ref": "#/components/schemas/TableFilter"}, {"$ref": "#/components/schemas/Limit"}], "discriminator": {"propertyName": "operation", "mapping": {"edit_columns": "#/components/schemas/EditColumns", "limit": "#/components/schemas/Limit", "reselect_columns": "#/components/schemas/ReselectColumns", "table_filter": "#/components/schemas/TableFilter"}}}, "type": "array", "title": "Transforms"}}, "type": "object", "required": ["target_table", "transforms"], "title": "TablePostProcessing"}, "TableProbeBase": {"properties": {"row_count": {"type": "integer", "minimum": 0.0, "title": "Row Count"}, "inferred_types": {"additionalProperties": {"$ref": "#/components/schemas/MITMDataType"}, "type": "object", "title": "Inferred Types"}, "sample_summaries": {"additionalProperties": {"$ref": "#/components/schemas/SampleSummary"}, "type": "object", "title": "Sample Summaries"}, "table_meta": {"$ref": "#/components/schemas/TableMetaInfoBase"}, "sampled_values": {"additionalProperties": {"items": {}, "type": "array"}, "type": "object", "title": "Sampled Values"}}, "type": "object", "required": ["row_count", "inferred_types", "sample_summaries", "table_meta", "sampled_values"], "title": "TableProbeBase"}, "TableQueryResult": {"properties": {"table_info": {"anyOf": [{"$ref": "#/components/schemas/TableMetaInfoBase"}, {"type": "null"}]}, "rows": {"items": {"items": {}, "type": "array"}, "type": "array", "title": "Rows"}}, "type": "object", "required": ["table_info", "rows"], "title": "TableQueryResult"}, "TypedRawQuery": {"properties": {"dialect": {"type": "string", "title": "Dialect"}, "compiled_sql": {"type": "string", "title": "Compiled Sql"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "column_dtypes": {"items": {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}]}, "type": "array", "title": "Column Dtypes"}}, "type": "object", "required": ["dialect", "compiled_sql", "columns", "column_dtypes"], "title": "TypedRawQuery"}, "ValidationError": {"properties": {"loc": {"items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, "type": "array", "title": "Location"}, "msg": {"type": "string", "title": "Message"}, "type": {"type": "string", "title": "Error Type"}}, "type": "object", "required": ["loc", "msg", "type"], "title": "ValidationError"}, "VirtualViewCreationRequest": {"properties": {"name": {"type": "string", "title": "Name"}, "table_creation": {"oneOf": [{"$ref": "#/components/schemas/SimpleJoin"}, {"$ref": "#/components/schemas/ExistingTable"}, {"$ref": "#/components/schemas/RawCompiled"}], "title": "Table Creation", "discriminator": {"propertyName": "operation", "mapping": {"existing": "#/components/schemas/ExistingTable", "join": "#/components/schemas/SimpleJoin", "raw": "#/components/schemas/RawCompiled"}}}, "transforms": {"anyOf": [{"items": {"oneOf": [{"$ref": "#/components/schemas/EditColumns"}, {"$ref": "#/components/schemas/ReselectColumns"}, {"$ref": "#/components/schemas/TableFilter"}, {"$ref": "#/components/schemas/Limit"}], "discriminator": {"propertyName": "operation", "mapping": {"edit_columns": "#/components/schemas/EditColumns", "limit": "#/components/schemas/Limit", "reselect_columns": "#/components/schemas/ReselectColumns", "table_filter": "#/components/schemas/TableFilter"}}}, "type": "array"}, {"type": "null"}], "title": "Transforms"}, "schema": {"type": "string", "title": "Schema", "default": "virtual"}}, "type": "object", "required": ["name", "table_creation"], "title": "VirtualViewCreationRequest"}, "VirtualViewResponse": {"properties": {"table_meta": {"$ref": "#/components/schemas/TableMetaInfoBase"}}, "type": "object", "required": ["table_meta"], "title": "VirtualViewResponse"}, "WrappedMITMDataType": {"properties": {"mitm": {"$ref": "#/components/schemas/MITMDataType"}}, "type": "object", "required": ["mitm"], "title": "WrappedMITMDataType"}}}} \ No newline at end of file +{"openapi": "3.1.0", "info": {"title": "MitMExtractorBackend", "version": "0.1.0"}, "paths": {"/admin/clear-sessions": {"post": {"tags": ["admin"], "summary": "Clear Sessions", "operationId": "clear_sessions", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/admin/active-sessions": {"get": {"tags": ["admin"], "summary": "Get Active Sessions", "operationId": "get_active_sessions", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"additionalProperties": {"type": "string", "format": "date-time"}, "type": "object", "title": "Response Get Active Sessions Admin Active Sessions Get"}}}}}}}, "/admin/clear-exports": {"post": {"tags": ["admin"], "summary": "Clear Exports", "operationId": "clear_exports", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/definitions/mitms": {"get": {"tags": ["definitions"], "summary": "Get Mitms", "operationId": "get_mitms", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/MITM"}, "type": "array", "title": "Response Get Mitms Definitions Mitms Get"}}}}}}}, "/definitions/mitm-definition": {"get": {"tags": ["definitions"], "summary": "Get Mitm Definition", "operationId": "get_mitm_definition", "parameters": [{"name": "mitm", "in": "query", "required": true, "schema": {"$ref": "#/components/schemas/MITM"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MITMDefinition"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/definitions/mitm-data-types": {"get": {"tags": ["definitions"], "summary": "Get Mitm Data Types", "operationId": "get_mitm_data_types", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"additionalProperties": {"$ref": "#/components/schemas/MitMDataTypeInfo"}, "type": "object", "title": "Response Get Mitm Data Types Definitions Mitm Data Types Get"}}}}}}}, "/session/start-session": {"post": {"tags": ["session"], "summary": "Start Session", "operationId": "start_session", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SessionIdResponse"}}}}}}}, "/session/get-session": {"get": {"tags": ["session"], "summary": "Get Session", "operationId": "get_session", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SessionIdResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/stop-session": {"post": {"tags": ["session"], "summary": "Stop Session", "operationId": "stop_session", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/upload-db": {"post": {"tags": ["session"], "summary": "Upload Db", "operationId": "upload_db", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"multipart/form-data": {"schema": {"$ref": "#/components/schemas/Body_upload_db_session_upload_db_post"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/connect-db": {"post": {"tags": ["session"], "summary": "Connect Db", "operationId": "connect_db", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Body_connect_db_session_connect_db_post"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/test-db-conn": {"get": {"tags": ["session"], "summary": "Test Db Conn", "operationId": "test_db_conn", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBConnTestResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/session/keep-alive": {"get": {"tags": ["session"], "summary": "Keep Alive", "operationId": "keep_alive", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/KeepAliveResponse"}}}}}}}, "/control/reflect-db": {"post": {"tags": ["control"], "summary": "Reflect Db", "operationId": "reflect_db", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/init-working-db": {"post": {"tags": ["control"], "summary": "Init Working Db", "operationId": "init_working_db", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/mark-foreign-key": {"post": {"tags": ["control"], "summary": "Mark Foreign Key", "operationId": "mark_foreign_key", "parameters": [{"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FKCreationRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FKCreationResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/virtual-view": {"put": {"tags": ["control"], "summary": "Create Virtual View", "operationId": "create_virtual_view", "parameters": [{"name": "override_if_exists", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Override If Exists"}}, {"name": "verify_immediately", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Verify Immediately"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VirtualViewCreationRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VirtualViewResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "get": {"tags": ["control"], "summary": "Get Virtual View", "operationId": "get_virtual_view", "parameters": [{"name": "view", "in": "query", "required": true, "schema": {"type": "string", "title": "View"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "virtual", "title": "Schema"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VirtualViewResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["control"], "summary": "Drop Virtual View", "operationId": "drop_virtual_view", "parameters": [{"name": "view", "in": "query", "required": true, "schema": {"type": "string", "title": "View"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "virtual", "title": "Schema"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/virtual-views": {"get": {"tags": ["control"], "summary": "Get Virtual Views", "operationId": "get_virtual_views", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/VirtualViewResponse"}, "title": "Response Get Virtual Views Control Virtual Views Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/compiled-virtual-view": {"get": {"tags": ["control"], "summary": "Get Compiled Virtual View", "operationId": "get_compiled_virtual_view", "parameters": [{"name": "view", "in": "query", "required": true, "schema": {"type": "string", "title": "View"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "virtual", "title": "Schema"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompiledVirtualView"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/compiled-virtual-views": {"get": {"tags": ["control"], "summary": "Get Compiled Virtual Views", "operationId": "get_compiled_virtual_views", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/CompiledVirtualView"}, "title": "Response Get Compiled Virtual Views Control Compiled Virtual Views Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/control/virtual-views-batch": {"put": {"tags": ["control"], "summary": "Create Virtual Views Batch", "operationId": "create_virtual_views_batch", "parameters": [{"name": "override_if_exists", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Override If Exists"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/VirtualViewCreationRequest"}, "title": "Requests"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/VirtualViewResponse"}, "title": "Response Create Virtual Views Batch Control Virtual Views Batch Put"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/raw-query": {"post": {"tags": ["data"], "summary": "Raw Query", "operationId": "raw_query", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Body_raw_query_data_raw_query_post"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "array", "items": {}}, "title": "Response Raw Query Data Raw Query Post"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/query-table": {"get": {"tags": ["data"], "summary": "Query Table", "operationId": "query_table", "parameters": [{"name": "name", "in": "query", "required": true, "schema": {"type": "string", "title": "Name"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "offset", "in": "query", "required": false, "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Offset"}}, {"name": "limit", "in": "query", "required": false, "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Limit"}}, {"name": "include_table_meta", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Include Table Meta"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TableQueryResult"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/query-unique-values": {"get": {"tags": ["data"], "summary": "Query Unique Values", "operationId": "query_unique_values", "parameters": [{"name": "table", "in": "query", "required": true, "schema": {"type": "string", "title": "Table"}}, {"name": "column", "in": "query", "required": true, "schema": {"type": "string", "title": "Column"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {}, "title": "Response Query Unique Values Data Query Unique Values Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/er-diagram": {"get": {"tags": ["data"], "summary": "Make Erd", "operationId": "make_erd", "parameters": [{"name": "version", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/ERVariant", "default": "mermaid"}}, {"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/data/filtered-er-diagram": {"post": {"tags": ["data"], "summary": "Make Filtered Erd", "operationId": "make_filtered_erd", "parameters": [{"name": "version", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/ERVariant", "default": "mermaid"}}, {"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBSchemaSelectionRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/table-schema": {"get": {"tags": ["reflection"], "summary": "Get Table Schema", "operationId": "get_table_schema", "parameters": [{"name": "name", "in": "query", "required": true, "schema": {"type": "string", "title": "Name"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TableMetaInfoResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/db-schema": {"get": {"tags": ["reflection"], "summary": "Get Db Schema", "operationId": "get_db_schema", "parameters": [{"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBMetaInfoResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/filter-db-schema": {"post": {"tags": ["reflection"], "summary": "Filter Db Schema", "operationId": "filter_db_schema", "parameters": [{"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBSchemaSelectionRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBMetaInfoResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/query-db-schema": {"post": {"tags": ["reflection"], "summary": "Query Db Schema", "operationId": "query_db_schema", "parameters": [{"name": "store_intermediate_table_probes", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Store Intermediate Table Probes"}}, {"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBSchemaQueryRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBMetaInfoResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/suggest-joins": {"get": {"tags": ["reflection"], "summary": "Suggest Joins", "operationId": "suggest_joins", "parameters": [{"name": "name", "in": "query", "required": true, "schema": {"type": "string", "title": "Name"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "array", "prefixItems": [{"type": "string"}, {"type": "string"}], "minItems": 2, "maxItems": 2}, "title": "Response Suggest Joins Reflection Suggest Joins Get"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/probe-table": {"post": {"tags": ["reflection"], "summary": "Probe Table", "operationId": "probe_table", "parameters": [{"name": "name", "in": "query", "required": true, "schema": {"type": "string", "title": "Name"}}, {"name": "schema", "in": "query", "required": false, "schema": {"type": "string", "default": "main", "title": "Schema"}}, {"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "sample_size", "in": "query", "required": false, "schema": {"type": "integer", "default": 100, "title": "Sample Size"}}, {"name": "override_if_exists", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Override If Exists"}}, {"name": "store_results", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Store Results"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TableProbeResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/reflection/probe-db": {"post": {"tags": ["reflection"], "summary": "Probe Db", "operationId": "probe_db", "parameters": [{"name": "source", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}}, {"name": "sample_size", "in": "query", "required": false, "schema": {"type": "integer", "default": 100, "title": "Sample Size"}}, {"name": "override_if_exists", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Override If Exists"}}, {"name": "store_results", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Store Results"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "additionalProperties": {"type": "array", "uniqueItems": true, "items": {"type": "string"}}, "title": "Table Selection"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DBProbeResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/validate-concept-mappings": {"post": {"tags": ["mitm"], "summary": "Validate Concept Mappings", "operationId": "validate_concept_mappings", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ConceptMappingRequest"}, "title": "Concept Mappings"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MappingGroupValidationResult"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/export-mitm": {"post": {"tags": ["mitm"], "summary": "Export Mitm", "operationId": "export_mitm", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MappingExportRequest"}}}}, "responses": {"200": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/publish-mitm-export": {"post": {"tags": ["mitm"], "summary": "Publish Mitm Export", "operationId": "publish_mitm_export", "parameters": [{"name": "use_streaming_export", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Use Streaming Export"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MappingExportRequest"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublishedMitMResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/delete-mitm-export": {"post": {"tags": ["mitm"], "summary": "Delete Mitm Export", "operationId": "delete_mitm_export", "parameters": [{"name": "export_id", "in": "query", "required": true, "schema": {"type": "integer", "title": "Export Id"}}, {"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mitm/delete-mitm-exports": {"post": {"tags": ["mitm"], "summary": "Delete Mitm Exports", "operationId": "delete_mitm_exports", "parameters": [{"name": "simple_session", "in": "cookie", "required": true, "schema": {"type": "string", "title": "Simple Session"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/health": {"get": {"summary": "Check Health", "operationId": "check_health", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}}, "components": {"schemas": {"AddColumn": {"properties": {"operation": {"type": "string", "enum": ["add_column"], "const": "add_column", "title": "Operation", "default": "add_column"}, "col_name": {"type": "string", "title": "Col Name"}, "value": {"title": "Value"}, "target_type": {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}], "title": "Target Type"}}, "type": "object", "required": ["col_name", "value", "target_type"], "title": "AddColumn"}, "Body_connect_db_session_connect_db_post": {"properties": {"db_url": {"type": "string", "minLength": 1, "format": "uri", "title": "Db Url"}}, "type": "object", "required": ["db_url"], "title": "Body_connect_db_session_connect_db_post"}, "Body_raw_query_data_raw_query_post": {"properties": {"query": {"type": "string", "title": "Query"}}, "type": "object", "required": ["query"], "title": "Body_raw_query_data_raw_query_post"}, "Body_upload_db_session_upload_db_post": {"properties": {"sqlite": {"type": "string", "format": "binary", "title": "Sqlite", "description": "Upload a sqlite db file here."}}, "type": "object", "required": ["sqlite"], "title": "Body_upload_db_session_upload_db_post"}, "CastColumn": {"properties": {"operation": {"type": "string", "enum": ["cast_column"], "const": "cast_column", "title": "Operation", "default": "cast_column"}, "target_type": {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}], "title": "Target Type"}}, "type": "object", "required": ["target_type"], "title": "CastColumn"}, "CategoricalSummaryStatistics": {"properties": {"count": {"type": "integer", "minimum": 0.0, "title": "Count"}, "unique": {"type": "integer", "minimum": 0.0, "title": "Unique"}, "top": {"type": "string", "title": "Top"}, "freq": {"type": "integer", "minimum": 0.0, "title": "Freq"}}, "type": "object", "required": ["count", "unique", "top", "freq"], "title": "CategoricalSummaryStatistics"}, "ColumnProperties": {"properties": {"nullable": {"type": "boolean", "title": "Nullable"}, "unique": {"type": "boolean", "title": "Unique"}, "part_of_pk": {"type": "boolean", "title": "Part Of Pk"}, "part_of_fk": {"type": "boolean", "title": "Part Of Fk"}, "part_of_index": {"type": "boolean", "title": "Part Of Index"}, "mitm_data_type": {"$ref": "#/components/schemas/MITMDataType"}}, "type": "object", "required": ["nullable", "unique", "part_of_pk", "part_of_fk", "part_of_index", "mitm_data_type"], "title": "ColumnProperties"}, "CompiledVirtualView": {"properties": {"dialect": {"type": "string", "title": "Dialect"}, "compiled_sql": {"type": "string", "title": "Compiled Sql"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "column_dtypes": {"items": {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}]}, "type": "array", "title": "Column Dtypes"}, "name": {"type": "string", "title": "Name"}, "schema_name": {"type": "string", "title": "Schema Name"}}, "type": "object", "required": ["dialect", "compiled_sql", "columns", "column_dtypes", "name", "schema_name"], "title": "CompiledVirtualView"}, "ConceptKind": {"type": "string", "enum": ["concrete", "abstract"], "title": "ConceptKind"}, "ConceptLevel": {"type": "string", "enum": ["main", "sub", "weak"], "title": "ConceptLevel"}, "ConceptMapping": {"properties": {"mitm": {"$ref": "#/components/schemas/MITM"}, "concept": {"type": "string", "title": "Concept"}, "base_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Base Table"}, "kind_col": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kind Col"}, "type_col": {"type": "string", "title": "Type Col"}, "identity_columns": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Identity Columns"}, "inline_relations": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Inline Relations"}, "foreign_relations": {"additionalProperties": {"$ref": "#/components/schemas/ForeignRelation"}, "type": "object", "title": "Foreign Relations"}, "attributes": {"items": {"type": "string"}, "type": "array", "title": "Attributes"}, "attribute_dtypes": {"items": {"$ref": "#/components/schemas/MITMDataType"}, "type": "array", "title": "Attribute Dtypes"}}, "type": "object", "required": ["mitm", "concept", "base_table", "type_col"], "title": "ConceptMapping"}, "ConceptMappingRequest": {"properties": {"mitm": {"$ref": "#/components/schemas/MITM"}, "concept": {"type": "string", "title": "Concept"}, "base_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Base Table"}, "kind_col": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kind Col"}, "type_col": {"type": "string", "title": "Type Col"}, "identity_columns": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Identity Columns"}, "inline_relations": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Inline Relations"}, "foreign_relations": {"additionalProperties": {"$ref": "#/components/schemas/ForeignRelation"}, "type": "object", "title": "Foreign Relations"}, "attributes": {"items": {"type": "string"}, "type": "array", "title": "Attributes"}, "attribute_dtypes": {"items": {"$ref": "#/components/schemas/MITMDataType"}, "type": "array", "title": "Attribute Dtypes"}}, "type": "object", "required": ["mitm", "concept", "base_table", "type_col"], "title": "ConceptMappingRequest"}, "ConceptProperties": {"properties": {"nature": {"prefixItems": [{"$ref": "#/components/schemas/ConceptLevel"}, {"$ref": "#/components/schemas/ConceptKind"}], "type": "array", "maxItems": 2, "minItems": 2, "title": "Nature"}, "key": {"type": "string", "title": "Key"}, "plural": {"type": "string", "title": "Plural"}, "typing_concept": {"type": "string", "title": "Typing Concept", "default": "type"}, "column_group_ordering": {"items": {"type": "string", "enum": ["kind", "type", "identity-relations", "inline-relations", "foreign-relations", "attributes"]}, "type": "array", "title": "Column Group Ordering", "default": ["kind", "type", "identity-relations", "inline-relations", "foreign-relations", "attributes"]}, "permit_attributes": {"type": "boolean", "title": "Permit Attributes", "default": true}}, "type": "object", "required": ["nature", "key", "plural"], "title": "ConceptProperties"}, "DBConnTestResponse": {"properties": {"db_url": {"type": "string", "minLength": 1, "format": "uri", "title": "Db Url"}, "success": {"type": "boolean", "title": "Success"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}}, "type": "object", "required": ["db_url", "success"], "title": "DBConnTestResponse"}, "DBMetaInfoBase": {"properties": {"db_structure": {"additionalProperties": {"additionalProperties": {"$ref": "#/components/schemas/TableMetaInfoBase"}, "type": "object"}, "type": "object", "title": "Db Structure"}, "tables": {"additionalProperties": {"$ref": "#/components/schemas/TableMetaInfoBase"}, "type": "object", "title": "Tables", "readOnly": true}}, "type": "object", "required": ["db_structure", "tables"], "title": "DBMetaInfoBase"}, "DBMetaInfoResponse": {"properties": {"db_structure": {"additionalProperties": {"additionalProperties": {"$ref": "#/components/schemas/TableMetaInfoBase"}, "type": "object"}, "type": "object", "title": "Db Structure"}, "tables": {"additionalProperties": {"$ref": "#/components/schemas/TableMetaInfoBase"}, "type": "object", "title": "Tables", "readOnly": true}}, "type": "object", "required": ["db_structure", "tables"], "title": "DBMetaInfoResponse"}, "DBMetaQuery": {"properties": {"syntactic_table_conditions": {"items": {"$ref": "#/components/schemas/SyntacticTableCondition"}, "type": "array", "title": "Syntactic Table Conditions"}, "semantic_table_conditions": {"items": {"$ref": "#/components/schemas/SemanticTableCondition"}, "type": "array", "title": "Semantic Table Conditions"}, "syntactic_column_conditions": {"items": {"$ref": "#/components/schemas/SyntacticColumnCondition"}, "type": "array", "title": "Syntactic Column Conditions"}, "semantic_column_conditions": {"items": {"$ref": "#/components/schemas/SemanticColumnCondition"}, "type": "array", "title": "Semantic Column Conditions"}}, "type": "object", "title": "DBMetaQuery"}, "DBProbeResponse": {"properties": {"table_probes": {"additionalProperties": {"$ref": "#/components/schemas/TableProbeBase"}, "type": "object", "title": "Table Probes"}, "db_meta": {"$ref": "#/components/schemas/DBMetaInfoBase"}}, "type": "object", "required": ["db_meta"], "title": "DBProbeResponse"}, "DBSchemaQueryRequest": {"properties": {"query": {"$ref": "#/components/schemas/DBMetaQuery"}, "filter_columns": {"type": "boolean", "title": "Filter Columns", "default": false}}, "type": "object", "required": ["query"], "title": "DBSchemaQueryRequest"}, "DBSchemaSelectionRequest": {"properties": {"selection": {"anyOf": [{"additionalProperties": {"items": {"type": "string"}, "type": "array", "uniqueItems": true}, "type": "object"}, {"additionalProperties": {"additionalProperties": {"items": {"type": "string"}, "type": "array", "uniqueItems": true}, "type": "object"}, "type": "object"}], "title": "Selection"}, "filter_columns": {"type": "boolean", "title": "Filter Columns", "default": false}}, "type": "object", "required": ["selection"], "title": "DBSchemaSelectionRequest"}, "DatetimeSummaryStatistics": {"properties": {"count": {"type": "integer", "title": "Count"}, "mean": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Mean"}, "min": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Min"}, "max": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Max"}, "percentile_25": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Percentile 25"}, "percentile_50": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Percentile 50"}, "percentile_75": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Percentile 75"}}, "type": "object", "required": ["count"], "title": "DatetimeSummaryStatistics"}, "ERVariant": {"type": "string", "enum": ["image", "mermaid"], "title": "ERVariant"}, "EditColumns": {"properties": {"operation": {"type": "string", "enum": ["edit_columns"], "const": "edit_columns", "title": "Operation", "default": "edit_columns"}, "transforms": {"additionalProperties": {"oneOf": [{"$ref": "#/components/schemas/CastColumn"}], "discriminator": {"propertyName": "operation", "mapping": {"cast_column": "#/components/schemas/CastColumn"}}}, "type": "object", "title": "Transforms"}, "renames": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Renames"}, "drops": {"items": {"type": "string"}, "type": "array", "uniqueItems": true, "title": "Drops"}, "additions": {"additionalProperties": {"items": {"oneOf": [{"$ref": "#/components/schemas/AddColumn"}, {"$ref": "#/components/schemas/ExtractJson"}], "discriminator": {"propertyName": "operation", "mapping": {"add_column": "#/components/schemas/AddColumn", "extract_json": "#/components/schemas/ExtractJson"}}}, "type": "array"}, "type": "object", "title": "Additions"}}, "type": "object", "title": "EditColumns"}, "ExistingTable": {"properties": {"operation": {"type": "string", "enum": ["existing"], "const": "existing", "title": "Operation", "default": "existing"}, "base_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Base Table"}}, "type": "object", "required": ["base_table"], "title": "ExistingTable"}, "ExtractJson": {"properties": {"operation": {"type": "string", "enum": ["extract_json"], "const": "extract_json", "title": "Operation", "default": "extract_json"}, "json_col": {"type": "string", "title": "Json Col"}, "attributes": {"additionalProperties": {"items": {"type": "string"}, "type": "array"}, "type": "object", "title": "Attributes"}}, "type": "object", "required": ["json_col", "attributes"], "title": "ExtractJson"}, "FKCreationRequest": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "table": {"anyOf": [{"$ref": "#/components/schemas/LocalTableIdentifier"}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Table"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "target_table": {"anyOf": [{"$ref": "#/components/schemas/LocalTableIdentifier"}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Target Table"}, "target_columns": {"items": {"type": "string"}, "type": "array", "title": "Target Columns"}}, "type": "object", "required": ["table", "columns", "target_table", "target_columns"], "title": "FKCreationRequest"}, "FKCreationResponse": {"properties": {"status": {"type": "boolean", "title": "Status"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}}, "type": "object", "required": ["status"], "title": "FKCreationResponse"}, "ForeignKeyConstraintBase": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "table": {"anyOf": [{"$ref": "#/components/schemas/LocalTableIdentifier"}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Table"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "target_table": {"anyOf": [{"$ref": "#/components/schemas/LocalTableIdentifier"}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Target Table"}, "target_columns": {"items": {"type": "string"}, "type": "array", "title": "Target Columns"}}, "type": "object", "required": ["table", "columns", "target_table", "target_columns"], "title": "ForeignKeyConstraintBase"}, "ForeignRelation": {"properties": {"fk_columns": {"anyOf": [{"additionalProperties": {"type": "string"}, "type": "object"}, {"items": {"type": "string"}, "type": "array"}], "title": "Fk Columns"}, "referred_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Referred Table"}}, "type": "object", "required": ["fk_columns", "referred_table"], "title": "ForeignRelation"}, "ForeignRelationInfo": {"properties": {"target_concept": {"type": "string", "title": "Target Concept"}, "fk_relations": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Fk Relations"}}, "type": "object", "required": ["target_concept", "fk_relations"], "title": "ForeignRelationInfo"}, "GroupValidationResult": {"properties": {"individual_validations": {"additionalProperties": {"items": {"prefixItems": [{"$ref": "#/components/schemas/TableIdentifier"}, {"$ref": "#/components/schemas/IndividualValidationResult"}], "type": "array", "maxItems": 2, "minItems": 2}, "type": "array"}, "type": "object", "title": "Individual Validations"}, "is_valid": {"type": "boolean", "title": "Is Valid", "readOnly": true}}, "type": "object", "required": ["is_valid"], "title": "GroupValidationResult"}, "HTTPValidationError": {"properties": {"detail": {"items": {"$ref": "#/components/schemas/ValidationError"}, "type": "array", "title": "Detail"}}, "type": "object", "title": "HTTPValidationError"}, "IndividualValidationResult": {"properties": {"is_valid": {"type": "boolean", "title": "Is Valid", "default": true}, "violations": {"items": {"type": "string"}, "type": "array", "title": "Violations"}}, "type": "object", "title": "IndividualValidationResult"}, "KeepAliveResponse": {"properties": {"server_status": {"type": "string", "enum": ["available"], "const": "available", "title": "Server Status", "default": "available"}, "session_status": {"type": "string", "enum": ["missing session cookie", "session invalid", "session valid"], "title": "Session Status"}}, "type": "object", "required": ["session_status"], "title": "KeepAliveResponse"}, "Limit": {"properties": {"operation": {"type": "string", "enum": ["limit"], "const": "limit", "title": "Operation", "default": "limit"}, "limit": {"type": "integer", "title": "Limit"}}, "type": "object", "required": ["limit"], "title": "Limit"}, "LocalTableIdentifier": {"properties": {"name": {"type": "string", "title": "Name"}, "schema": {"type": "string", "title": "Schema", "default": "main"}}, "type": "object", "required": ["name"], "title": "LocalTableIdentifier"}, "MITM": {"type": "string", "enum": ["MAED", "OCEL2"], "title": "MITM"}, "MITMDataType": {"type": "string", "enum": ["text", "json", "integer", "numeric", "boolean", "datetime", "unknown", "infer"], "title": "MITMDataType"}, "MITMDefinition": {"properties": {"main_concepts": {"items": {"type": "string"}, "type": "array", "uniqueItems": true, "title": "Main Concepts"}, "weak_concepts": {"additionalProperties": {"$ref": "#/components/schemas/MITMDataType"}, "type": "object", "title": "Weak Concepts"}, "sub_concepts": {"additionalProperties": {"items": {"type": "string"}, "type": "array", "uniqueItems": true}, "type": "object", "title": "Sub Concepts"}, "concept_relations": {"additionalProperties": {"$ref": "#/components/schemas/OwnedRelations"}, "type": "object", "title": "Concept Relations"}, "concept_properties": {"additionalProperties": {"$ref": "#/components/schemas/ConceptProperties"}, "type": "object", "title": "Concept Properties"}, "leaf_concepts": {"items": {"type": "string"}, "type": "array", "uniqueItems": true, "title": "Leaf Concepts", "readOnly": true}, "abstract_concepts": {"items": {"type": "string"}, "type": "array", "uniqueItems": true, "title": "Abstract Concepts", "readOnly": true}, "parent_concepts_map": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Parent Concepts Map", "readOnly": true}}, "type": "object", "required": ["main_concepts", "weak_concepts", "sub_concepts", "concept_relations", "concept_properties", "leaf_concepts", "abstract_concepts", "parent_concepts_map"], "title": "MITMDefinition"}, "MappingExportRequest": {"properties": {"mitm": {"$ref": "#/components/schemas/MITM"}, "mapped_concepts": {"items": {"$ref": "#/components/schemas/ConceptMapping"}, "type": "array", "title": "Mapped Concepts"}, "post_processing": {"anyOf": [{"$ref": "#/components/schemas/PostProcessing"}, {"type": "null"}]}, "filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Filename"}}, "type": "object", "required": ["mitm", "mapped_concepts"], "title": "MappingExportRequest"}, "MappingGroupValidationResult": {"properties": {"validation_result": {"$ref": "#/components/schemas/GroupValidationResult"}}, "type": "object", "required": ["validation_result"], "title": "MappingGroupValidationResult"}, "MitMDataTypeInfo": {"properties": {"sql_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sql Type"}}, "type": "object", "required": ["sql_type"], "title": "MitMDataTypeInfo"}, "NumericSummaryStatistics": {"properties": {"count": {"type": "integer", "title": "Count"}, "mean": {"type": "number", "title": "Mean"}, "min": {"type": "number", "title": "Min"}, "max": {"type": "number", "title": "Max"}, "std": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Std"}, "percentile_25": {"type": "number", "title": "Percentile 25"}, "percentile_50": {"type": "number", "title": "Percentile 50"}, "percentile_75": {"type": "number", "title": "Percentile 75"}}, "type": "object", "required": ["count", "mean", "min", "max", "percentile_25", "percentile_50", "percentile_75"], "title": "NumericSummaryStatistics"}, "OwnedRelations": {"properties": {"identity": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Identity"}, "inline": {"additionalProperties": {"type": "string"}, "type": "object", "title": "Inline"}, "foreign": {"additionalProperties": {"$ref": "#/components/schemas/ForeignRelationInfo"}, "type": "object", "title": "Foreign"}}, "type": "object", "required": ["identity", "inline", "foreign"], "title": "OwnedRelations"}, "PostProcessing": {"properties": {"table_postprocessing": {"items": {"$ref": "#/components/schemas/TablePostProcessing"}, "type": "array", "title": "Table Postprocessing"}}, "type": "object", "required": ["table_postprocessing"], "title": "PostProcessing"}, "PublishedMitMResponse": {"properties": {"url": {"type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Url"}, "relative_uri": {"type": "string", "title": "Relative Uri"}, "deletion_request_url": {"type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Deletion Request Url"}, "export_id": {"type": "integer", "title": "Export Id"}}, "type": "object", "required": ["url", "relative_uri", "deletion_request_url", "export_id"], "title": "PublishedMitMResponse"}, "RawCompiled": {"properties": {"operation": {"type": "string", "enum": ["raw"], "const": "raw", "title": "Operation", "default": "raw"}, "typed_query": {"$ref": "#/components/schemas/TypedRawQuery"}}, "type": "object", "required": ["typed_query"], "title": "RawCompiled"}, "ReselectColumns": {"properties": {"operation": {"type": "string", "enum": ["reselect_columns"], "const": "reselect_columns", "title": "Operation", "default": "reselect_columns"}, "selection": {"items": {"type": "string"}, "type": "array", "title": "Selection"}}, "type": "object", "required": ["selection"], "title": "ReselectColumns"}, "SampleSummary": {"properties": {"sample_size": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Sample Size"}, "na_fraction": {"anyOf": [{"type": "number", "maximum": 1.0, "minimum": 0.0}, {"type": "null"}], "title": "Na Fraction"}, "unique_fraction": {"anyOf": [{"type": "number", "maximum": 1.0, "minimum": 0.0}, {"type": "null"}], "title": "Unique Fraction"}, "value_counts": {"anyOf": [{"additionalProperties": {"type": "integer"}, "type": "object"}, {"type": "null"}], "title": "Value Counts"}, "summary_statistics": {"anyOf": [{"$ref": "#/components/schemas/NumericSummaryStatistics"}, {"$ref": "#/components/schemas/CategoricalSummaryStatistics"}, {"$ref": "#/components/schemas/DatetimeSummaryStatistics"}, {"type": "null"}], "title": "Summary Statistics"}, "json_schema": {"anyOf": [{"type": "object"}, {"type": "null"}], "title": "Json Schema"}}, "type": "object", "title": "SampleSummary"}, "SemanticColumnCondition": {"properties": {"inferred_data_type": {"anyOf": [{"$ref": "#/components/schemas/MITMDataType"}, {"type": "null"}]}, "max_na_fraction": {"anyOf": [{"type": "number", "maximum": 1.0, "minimum": 0.0}, {"type": "null"}], "title": "Max Na Fraction"}, "value_in_range": {"anyOf": [{}, {"type": "null"}], "title": "Value In Range"}, "contained_value": {"anyOf": [{}, {"type": "null"}], "title": "Contained Value"}, "contained_datetime": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Contained Datetime"}}, "type": "object", "title": "SemanticColumnCondition"}, "SemanticTableCondition": {"properties": {"min_row_count": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Min Row Count"}, "max_row_count": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Max Row Count"}}, "type": "object", "title": "SemanticTableCondition"}, "SessionIdResponse": {"properties": {"session_id": {"type": "string", "format": "uuid", "title": "Session Id"}}, "type": "object", "required": ["session_id"], "title": "SessionIdResponse"}, "SimpleJoin": {"properties": {"operation": {"type": "string", "enum": ["join"], "const": "join", "title": "Operation", "default": "join"}, "left_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Left Table"}, "right_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Right Table"}, "on_cols_left": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "On Cols Left"}, "on_cols_right": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "On Cols Right"}, "is_outer": {"type": "boolean", "title": "Is Outer", "default": false}, "full": {"type": "boolean", "title": "Full", "default": false}, "selected_cols_left": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Selected Cols Left"}, "selected_cols_right": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Selected Cols Right"}, "left_alias": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Left Alias"}, "right_alias": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Right Alias"}}, "type": "object", "required": ["left_table", "right_table"], "title": "SimpleJoin"}, "SimpleSQLOperator": {"type": "string", "enum": ["ilike", "like", "=", ">=", ">", "<=", "<", "in", "notin"], "title": "SimpleSQLOperator"}, "SimpleWhere": {"properties": {"lhs": {"type": "string", "title": "Lhs"}, "operator": {"$ref": "#/components/schemas/SimpleSQLOperator"}, "rhs": {"anyOf": [{"type": "string"}, {"prefixItems": [{}, {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}]}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Rhs"}}, "type": "object", "required": ["lhs", "operator", "rhs"], "title": "SimpleWhere"}, "SourceDBType": {"type": "string", "enum": ["original", "working", "virtual"], "title": "SourceDBType"}, "SyntacticColumnCondition": {"properties": {"name_regex": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name Regex"}, "sql_data_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sql Data Type"}, "mitm_data_type": {"anyOf": [{"$ref": "#/components/schemas/MITMDataType"}, {"type": "null"}]}}, "type": "object", "title": "SyntacticColumnCondition"}, "SyntacticTableCondition": {"properties": {"schema_regex": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Schema Regex"}, "name_regex": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name Regex"}, "min_col_count": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Min Col Count"}, "max_col_count": {"anyOf": [{"type": "integer", "minimum": 0.0}, {"type": "null"}], "title": "Max Col Count"}, "has_foreign_key": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Foreign Key"}}, "type": "object", "title": "SyntacticTableCondition"}, "TableFilter": {"properties": {"operation": {"type": "string", "enum": ["table_filter"], "const": "table_filter", "title": "Operation", "default": "table_filter"}, "wheres": {"items": {"$ref": "#/components/schemas/SimpleWhere"}, "type": "array", "title": "Wheres"}, "limit": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Limit"}}, "type": "object", "required": ["wheres"], "title": "TableFilter"}, "TableIdentifier": {"properties": {"source": {"$ref": "#/components/schemas/SourceDBType", "default": "original"}, "schema": {"type": "string", "title": "Schema", "default": "main"}, "name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["name"], "title": "TableIdentifier"}, "TableMetaInfoBase": {"properties": {"schema_name": {"type": "string", "title": "Schema Name", "default": "main"}, "name": {"type": "string", "title": "Name"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "sql_column_types": {"items": {"type": "string"}, "type": "array", "title": "Sql Column Types"}, "primary_key": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Primary Key"}, "indexes": {"anyOf": [{"items": {"items": {"type": "string"}, "type": "array"}, "type": "array"}, {"type": "null"}], "title": "Indexes"}, "foreign_key_constraints": {"items": {"$ref": "#/components/schemas/ForeignKeyConstraintBase"}, "type": "array", "title": "Foreign Key Constraints"}, "column_properties": {"additionalProperties": {"$ref": "#/components/schemas/ColumnProperties"}, "type": "object", "title": "Column Properties"}}, "type": "object", "required": ["name", "columns", "sql_column_types"], "title": "TableMetaInfoBase"}, "TableMetaInfoResponse": {"properties": {"schema_name": {"type": "string", "title": "Schema Name", "default": "main"}, "name": {"type": "string", "title": "Name"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "sql_column_types": {"items": {"type": "string"}, "type": "array", "title": "Sql Column Types"}, "primary_key": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Primary Key"}, "indexes": {"anyOf": [{"items": {"items": {"type": "string"}, "type": "array"}, "type": "array"}, {"type": "null"}], "title": "Indexes"}, "foreign_key_constraints": {"items": {"$ref": "#/components/schemas/ForeignKeyConstraintBase"}, "type": "array", "title": "Foreign Key Constraints"}, "column_properties": {"additionalProperties": {"$ref": "#/components/schemas/ColumnProperties"}, "type": "object", "title": "Column Properties"}}, "type": "object", "required": ["name", "columns", "sql_column_types"], "title": "TableMetaInfoResponse"}, "TablePostProcessing": {"properties": {"target_table": {"anyOf": [{"$ref": "#/components/schemas/TableIdentifier"}, {"prefixItems": [{"$ref": "#/components/schemas/SourceDBType"}, {"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 3, "minItems": 3}, {"prefixItems": [{"type": "string"}, {"type": "string"}], "type": "array", "maxItems": 2, "minItems": 2}], "title": "Target Table"}, "transforms": {"items": {"oneOf": [{"$ref": "#/components/schemas/EditColumns"}, {"$ref": "#/components/schemas/ReselectColumns"}, {"$ref": "#/components/schemas/TableFilter"}, {"$ref": "#/components/schemas/Limit"}], "discriminator": {"propertyName": "operation", "mapping": {"edit_columns": "#/components/schemas/EditColumns", "limit": "#/components/schemas/Limit", "reselect_columns": "#/components/schemas/ReselectColumns", "table_filter": "#/components/schemas/TableFilter"}}}, "type": "array", "title": "Transforms"}}, "type": "object", "required": ["target_table", "transforms"], "title": "TablePostProcessing"}, "TableProbeBase": {"properties": {"row_count": {"type": "integer", "minimum": 0.0, "title": "Row Count"}, "inferred_types": {"additionalProperties": {"$ref": "#/components/schemas/MITMDataType"}, "type": "object", "title": "Inferred Types"}, "sample_summaries": {"additionalProperties": {"$ref": "#/components/schemas/SampleSummary"}, "type": "object", "title": "Sample Summaries"}, "table_meta": {"$ref": "#/components/schemas/TableMetaInfoBase"}, "sampled_values": {"additionalProperties": {"items": {}, "type": "array"}, "type": "object", "title": "Sampled Values"}}, "type": "object", "required": ["row_count", "inferred_types", "sample_summaries", "table_meta", "sampled_values"], "title": "TableProbeBase"}, "TableProbeResponse": {"properties": {"row_count": {"type": "integer", "minimum": 0.0, "title": "Row Count"}, "inferred_types": {"additionalProperties": {"$ref": "#/components/schemas/MITMDataType"}, "type": "object", "title": "Inferred Types"}, "sample_summaries": {"additionalProperties": {"$ref": "#/components/schemas/SampleSummary"}, "type": "object", "title": "Sample Summaries"}, "table_meta": {"$ref": "#/components/schemas/TableMetaInfoBase"}, "sampled_values": {"additionalProperties": {"items": {}, "type": "array"}, "type": "object", "title": "Sampled Values"}}, "type": "object", "required": ["row_count", "inferred_types", "sample_summaries", "table_meta", "sampled_values"], "title": "TableProbeResponse"}, "TableQueryResult": {"properties": {"table_info": {"anyOf": [{"$ref": "#/components/schemas/TableMetaInfoResponse"}, {"type": "null"}]}, "rows": {"items": {"items": {}, "type": "array"}, "type": "array", "title": "Rows"}}, "type": "object", "required": ["table_info", "rows"], "title": "TableQueryResult"}, "TypedRawQuery": {"properties": {"dialect": {"type": "string", "title": "Dialect"}, "compiled_sql": {"type": "string", "title": "Compiled Sql"}, "columns": {"items": {"type": "string"}, "type": "array", "title": "Columns"}, "column_dtypes": {"items": {"anyOf": [{"$ref": "#/components/schemas/WrappedMITMDataType"}, {"type": "string"}]}, "type": "array", "title": "Column Dtypes"}}, "type": "object", "required": ["dialect", "compiled_sql", "columns", "column_dtypes"], "title": "TypedRawQuery"}, "ValidationError": {"properties": {"loc": {"items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, "type": "array", "title": "Location"}, "msg": {"type": "string", "title": "Message"}, "type": {"type": "string", "title": "Error Type"}}, "type": "object", "required": ["loc", "msg", "type"], "title": "ValidationError"}, "VirtualViewCreationRequest": {"properties": {"name": {"type": "string", "title": "Name"}, "table_creation": {"oneOf": [{"$ref": "#/components/schemas/SimpleJoin"}, {"$ref": "#/components/schemas/ExistingTable"}, {"$ref": "#/components/schemas/RawCompiled"}], "title": "Table Creation", "discriminator": {"propertyName": "operation", "mapping": {"existing": "#/components/schemas/ExistingTable", "join": "#/components/schemas/SimpleJoin", "raw": "#/components/schemas/RawCompiled"}}}, "transforms": {"anyOf": [{"items": {"oneOf": [{"$ref": "#/components/schemas/EditColumns"}, {"$ref": "#/components/schemas/ReselectColumns"}, {"$ref": "#/components/schemas/TableFilter"}, {"$ref": "#/components/schemas/Limit"}], "discriminator": {"propertyName": "operation", "mapping": {"edit_columns": "#/components/schemas/EditColumns", "limit": "#/components/schemas/Limit", "reselect_columns": "#/components/schemas/ReselectColumns", "table_filter": "#/components/schemas/TableFilter"}}}, "type": "array"}, {"type": "null"}], "title": "Transforms"}, "schema": {"type": "string", "title": "Schema", "default": "virtual"}}, "type": "object", "required": ["name", "table_creation"], "title": "VirtualViewCreationRequest"}, "VirtualViewResponse": {"properties": {"table_meta": {"$ref": "#/components/schemas/TableMetaInfoResponse"}}, "type": "object", "required": ["table_meta"], "title": "VirtualViewResponse"}, "WrappedMITMDataType": {"properties": {"mitm": {"$ref": "#/components/schemas/MITMDataType"}}, "type": "object", "required": ["mitm"], "title": "WrappedMITMDataType"}}}} \ No newline at end of file diff --git a/src/services/api-schema/openapi.yaml b/src/services/api-schema/openapi.yaml index d6ba74d..ec3a375 100644 --- a/src/services/api-schema/openapi.yaml +++ b/src/services/api-schema/openapi.yaml @@ -174,7 +174,7 @@ components: - weak title: ConceptLevel type: string - ConceptMapping-Input: + ConceptMapping: properties: attribute_dtypes: items: @@ -208,7 +208,7 @@ components: type: string foreign_relations: additionalProperties: - $ref: '#/components/schemas/ForeignRelation-Input' + $ref: '#/components/schemas/ForeignRelation' title: Foreign Relations type: object identity_columns: @@ -246,7 +246,7 @@ components: - type_col title: ConceptMapping type: object - ConceptMapping-Output: + ConceptMappingRequest: properties: attribute_dtypes: items: @@ -280,7 +280,7 @@ components: type: string foreign_relations: additionalProperties: - $ref: '#/components/schemas/ForeignRelation-Output' + $ref: '#/components/schemas/ForeignRelation' title: Foreign Relations type: object identity_columns: @@ -316,7 +316,7 @@ components: - concept - base_table - type_col - title: ConceptMapping + title: ConceptMappingRequest type: object ConceptProperties: properties: @@ -407,6 +407,26 @@ components: - tables title: DBMetaInfoBase type: object + DBMetaInfoResponse: + properties: + db_structure: + additionalProperties: + additionalProperties: + $ref: '#/components/schemas/TableMetaInfoBase' + type: object + title: Db Structure + type: object + tables: + additionalProperties: + $ref: '#/components/schemas/TableMetaInfoBase' + readOnly: true + title: Tables + type: object + required: + - db_structure + - tables + title: DBMetaInfoResponse + type: object DBMetaQuery: properties: semantic_column_conditions: @@ -431,7 +451,7 @@ components: type: array title: DBMetaQuery type: object - DBProbeBase: + DBProbeResponse: properties: db_meta: $ref: '#/components/schemas/DBMetaInfoBase' @@ -442,7 +462,7 @@ components: type: object required: - db_meta - title: DBProbeBase + title: DBProbeResponse type: object DBSchemaQueryRequest: properties: @@ -610,29 +630,6 @@ components: - base_table title: ExistingTable type: object - ExportRequest: - properties: - filename: - anyOf: - - type: string - - type: 'null' - title: Filename - mapped_concepts: - items: - $ref: '#/components/schemas/ConceptMapping-Input' - title: Mapped Concepts - type: array - mitm: - $ref: '#/components/schemas/MITM' - post_processing: - anyOf: - - $ref: '#/components/schemas/PostProcessing' - - type: 'null' - required: - - mitm - - mapped_concepts - title: ExportRequest - type: object ExtractJson: properties: attributes: @@ -657,21 +654,7 @@ components: - attributes title: ExtractJson type: object - FKCreationResponse: - properties: - error: - anyOf: - - type: string - - type: 'null' - title: Error - status: - title: Status - type: boolean - required: - - status - title: FKCreationResponse - type: object - ForeignKeyConstraintBase: + FKCreationRequest: properties: columns: items: @@ -713,9 +696,23 @@ components: - columns - target_table - target_columns - title: ForeignKeyConstraintBase + title: FKCreationRequest + type: object + FKCreationResponse: + properties: + error: + anyOf: + - type: string + - type: 'null' + title: Error + status: + title: Status + type: boolean + required: + - status + title: FKCreationResponse type: object - ForeignKeyConstraintRequest: + ForeignKeyConstraintBase: properties: columns: items: @@ -757,42 +754,9 @@ components: - columns - target_table - target_columns - title: ForeignKeyConstraintRequest - type: object - ForeignRelation-Input: - properties: - fk_columns: - anyOf: - - additionalProperties: - type: string - type: object - - items: - type: string - type: array - title: Fk Columns - referred_table: - anyOf: - - $ref: '#/components/schemas/TableIdentifier' - - maxItems: 3 - minItems: 3 - prefixItems: - - $ref: '#/components/schemas/SourceDBType' - - type: string - - type: string - type: array - - maxItems: 2 - minItems: 2 - prefixItems: - - type: string - - type: string - type: array - title: Referred Table - required: - - fk_columns - - referred_table - title: ForeignRelation + title: ForeignKeyConstraintBase type: object - ForeignRelation-Output: + ForeignRelation: properties: fk_columns: anyOf: @@ -934,9 +898,9 @@ components: title: LocalTableIdentifier type: object MITM: - const: MAED enum: - MAED + - OCEL2 title: MITM type: string MITMDataType: @@ -1013,22 +977,38 @@ components: - parent_concepts_map title: MITMDefinition type: object - MappingGroupValidationResult: + MappingExportRequest: properties: - evaluated_mappings: + filename: anyOf: - - items: - $ref: '#/components/schemas/ConceptMapping-Output' - type: array + - type: string + - type: 'null' + title: Filename + mapped_concepts: + items: + $ref: '#/components/schemas/ConceptMapping' + title: Mapped Concepts + type: array + mitm: + $ref: '#/components/schemas/MITM' + post_processing: + anyOf: + - $ref: '#/components/schemas/PostProcessing' - type: 'null' - title: Evaluated Mappings + required: + - mitm + - mapped_concepts + title: MappingExportRequest + type: object + MappingGroupValidationResult: + properties: validation_result: $ref: '#/components/schemas/GroupValidationResult' required: - validation_result title: MappingGroupValidationResult type: object - MitMDataTypeInfos: + MitMDataTypeInfo: properties: sql_type: anyOf: @@ -1037,7 +1017,7 @@ components: title: Sql Type required: - sql_type - title: MitMDataTypeInfos + title: MitMDataTypeInfo type: object NumericSummaryStatistics: properties: @@ -1492,8 +1472,7 @@ components: title: Schema type: string source: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original required: - name @@ -1550,6 +1529,57 @@ components: - sql_column_types title: TableMetaInfoBase type: object + TableMetaInfoResponse: + properties: + column_properties: + additionalProperties: + $ref: '#/components/schemas/ColumnProperties' + title: Column Properties + type: object + columns: + items: + type: string + title: Columns + type: array + foreign_key_constraints: + items: + $ref: '#/components/schemas/ForeignKeyConstraintBase' + title: Foreign Key Constraints + type: array + indexes: + anyOf: + - items: + items: + type: string + type: array + type: array + - type: 'null' + title: Indexes + name: + title: Name + type: string + primary_key: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Primary Key + schema_name: + default: main + title: Schema Name + type: string + sql_column_types: + items: + type: string + title: Sql Column Types + type: array + required: + - name + - columns + - sql_column_types + title: TableMetaInfoResponse + type: object TablePostProcessing: properties: target_table: @@ -1622,6 +1652,38 @@ components: - sampled_values title: TableProbeBase type: object + TableProbeResponse: + properties: + inferred_types: + additionalProperties: + $ref: '#/components/schemas/MITMDataType' + title: Inferred Types + type: object + row_count: + minimum: 0.0 + title: Row Count + type: integer + sample_summaries: + additionalProperties: + $ref: '#/components/schemas/SampleSummary' + title: Sample Summaries + type: object + sampled_values: + additionalProperties: + items: {} + type: array + title: Sampled Values + type: object + table_meta: + $ref: '#/components/schemas/TableMetaInfoBase' + required: + - row_count + - inferred_types + - sample_summaries + - table_meta + - sampled_values + title: TableProbeResponse + type: object TableQueryResult: properties: rows: @@ -1632,7 +1694,7 @@ components: type: array table_info: anyOf: - - $ref: '#/components/schemas/TableMetaInfoBase' + - $ref: '#/components/schemas/TableMetaInfoResponse' - type: 'null' required: - table_info @@ -1734,7 +1796,7 @@ components: VirtualViewResponse: properties: table_meta: - $ref: '#/components/schemas/TableMetaInfoBase' + $ref: '#/components/schemas/TableMetaInfoResponse' required: - table_meta title: VirtualViewResponse @@ -1752,16 +1814,6 @@ info: version: 0.1.0 openapi: 3.1.0 paths: - /: - get: - operationId: root - responses: - '200': - content: - application/json: - schema: {} - description: Successful Response - summary: Root /admin/active-sessions: get: operationId: get_active_sessions @@ -1905,10 +1957,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: cookie name: simple_session required: true @@ -1919,7 +1969,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ForeignKeyConstraintRequest' + $ref: '#/components/schemas/FKCreationRequest' required: true responses: '200': @@ -2166,18 +2216,14 @@ paths: name: version required: false schema: - allOf: - - $ref: '#/components/schemas/ERVariant' + $ref: '#/components/schemas/ERVariant' default: mermaid - title: Version - in: query name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: cookie name: simple_session required: true @@ -2207,18 +2253,14 @@ paths: name: version required: false schema: - allOf: - - $ref: '#/components/schemas/ERVariant' + $ref: '#/components/schemas/ERVariant' default: mermaid - title: Version - in: query name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: cookie name: simple_session required: true @@ -2251,10 +2293,10 @@ paths: operationId: query_table parameters: - in: query - name: table + name: name required: true schema: - title: Table + title: Name type: string - in: query name: schema @@ -2267,10 +2309,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: query name: offset required: false @@ -2343,10 +2383,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: cookie name: simple_session required: true @@ -2416,7 +2454,7 @@ paths: application/json: schema: additionalProperties: - $ref: '#/components/schemas/MitMDataTypeInfos' + $ref: '#/components/schemas/MitMDataTypeInfo' title: Response Get Mitm Data Types Definitions Mitm Data Types Get type: object description: Successful Response @@ -2464,6 +2502,16 @@ paths: summary: Get Mitms tags: - definitions + /health: + get: + operationId: check_health + responses: + '200': + content: + application/json: + schema: {} + description: Successful Response + summary: Check Health /mitm/delete-mitm-export: post: operationId: delete_mitm_export @@ -2534,7 +2582,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ExportRequest' + $ref: '#/components/schemas/MappingExportRequest' required: true responses: '200': @@ -2569,7 +2617,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ExportRequest' + $ref: '#/components/schemas/MappingExportRequest' required: true responses: '200': @@ -2591,13 +2639,6 @@ paths: post: operationId: validate_concept_mappings parameters: - - in: query - name: include_request - required: false - schema: - default: false - title: Include Request - type: boolean - in: cookie name: simple_session required: true @@ -2609,7 +2650,7 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/ConceptMapping-Input' + $ref: '#/components/schemas/ConceptMappingRequest' title: Concept Mappings type: array required: true @@ -2637,10 +2678,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: cookie name: simple_session required: true @@ -2652,7 +2691,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DBMetaInfoBase' + $ref: '#/components/schemas/DBMetaInfoResponse' description: Successful Response '422': content: @@ -2671,10 +2710,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: cookie name: simple_session required: true @@ -2692,7 +2729,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DBMetaInfoBase' + $ref: '#/components/schemas/DBMetaInfoResponse' description: Successful Response '422': content: @@ -2711,10 +2748,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: query name: sample_size required: false @@ -2759,7 +2794,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DBProbeBase' + $ref: '#/components/schemas/DBProbeResponse' description: Successful Response '422': content: @@ -2775,10 +2810,10 @@ paths: operationId: probe_table parameters: - in: query - name: table + name: name required: true schema: - title: Table + title: Name type: string - in: query name: schema @@ -2791,10 +2826,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: query name: sample_size required: false @@ -2827,7 +2860,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/TableProbeBase' + $ref: '#/components/schemas/TableProbeResponse' description: Successful Response '422': content: @@ -2853,10 +2886,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: cookie name: simple_session required: true @@ -2874,7 +2905,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DBMetaInfoBase' + $ref: '#/components/schemas/DBMetaInfoResponse' description: Successful Response '422': content: @@ -2890,10 +2921,10 @@ paths: operationId: suggest_joins parameters: - in: query - name: table + name: name required: true schema: - title: Table + title: Name type: string - in: query name: schema @@ -2906,10 +2937,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: cookie name: simple_session required: true @@ -2945,10 +2974,10 @@ paths: operationId: get_table_schema parameters: - in: query - name: table + name: name required: true schema: - title: Table + title: Name type: string - in: query name: schema @@ -2961,10 +2990,8 @@ paths: name: source required: false schema: - allOf: - - $ref: '#/components/schemas/SourceDBType' + $ref: '#/components/schemas/SourceDBType' default: original - title: Source - in: cookie name: simple_session required: true @@ -2976,7 +3003,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/TableMetaInfoBase' + $ref: '#/components/schemas/TableMetaInfoResponse' description: Successful Response '422': content: diff --git a/src/services/api-v2.ts b/src/services/api-v2.ts new file mode 100644 index 0000000..bc839dc --- /dev/null +++ b/src/services/api-v2.ts @@ -0,0 +1,241 @@ +import {MITM, MITMDataType, SourceDBType, SimpleSQLOperator, FKCreationRequest} from "@/services/api-schema" +import * as apiTypes from "./api-schema/types.gen" + +export { + MITM as MITMs, + MITMDataType as MITMDataTypes, + SourceDBType as SourceDBTypes, + SimpleSQLOperator as SimpleSQLOperators +} from "./api-schema/types.gen" +export * from "./api-schema/types.gen" + +export type Base = apiTypes.ExistingTable | apiTypes.SimpleJoin | apiTypes.RawCompiled +export type Transform = apiTypes.EditColumns | apiTypes.ReselectColumns | apiTypes.TableFilter | apiTypes.Limit +export type ColumnCreations = apiTypes.AddColumn | apiTypes.ExtractJson + +import { + client, + SessionService, + AdminService, + DataService, + ControlService, + DefaultService, + DefinitionsService, + MitmService, + ReflectionService +} from "@/services/api-schema"; + + +const backendUrl = (process.env.VITE_API_HOST ?? window.location.origin) + (process.env.VITE_API_PREFIX ?? '/api') // process.env.API_URL ?? 'http://localhost:8080' // import.meta.env?.VITE_API_URL || +console.log(`Using following (backend) API_URL: ${backendUrl}`) + +client.setConfig({ + withCredentials: true, + baseURL: backendUrl +}) + +function errorHandler(msg?) { + return err => { + console.log(msg ?? "Request failed:", err); + return null as undefined + } +} + + +async function keepAlive() { + return await SessionService.keepAlive().catch(errorHandler('API is unreachable')) +} + +async function startSession() { + return await SessionService.startSession().catch(errorHandler()) +} + + +async function stopSession() { + return await SessionService.stopSession({}).catch(errorHandler()) +} + +async function uploadDB(sqliteFile) { + return await SessionService.uploadDb({body: {sqlite: sqliteFile}}).catch(errorHandler('Error uploading file')) + /* + const formData = new FormData(); + formData.append('sqlite', sqliteFile); + return apiConnection.post('/setup/upload-db', formData, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + }) + */ +} + +async function connectDB(url: string) { + return await SessionService.connectDb({body: {db_url: url}}).catch(errorHandler('Error connecting to DB')) +} + +async function testDBConn() { + return await SessionService.testDbConn({}).catch(errorHandler()) +} + +// + +async function getMitMs() { + return await DefinitionsService.getMitms().catch(errorHandler()) +} + +async function getMitMDefinition(mitm: MITM) { + return await DefinitionsService.getMitmDefinition({query: {mitm}}).catch(errorHandler()) +} + +async function getMitMDataTypes() { + return await DefinitionsService.getMitmDataTypes().catch(errorHandler()) +} + +// + +async function reflectDB() { + return await ControlService.reflectDb({}).catch(errorHandler('Error reflecting DB schema')) +} + +async function getDBSchema(source?: apiTypes.SourceDBType) { + return await ReflectionService.getDbSchema({query: {source}}).catch(errorHandler('Error retrieving DB schema')) +} + +async function getTableSchema(tid: apiTypes.TableIdentifier) { + return await ReflectionService.getTableSchema({query: {...tid}}).catch(errorHandler('Error retrieving Table schema')) +} + +async function queryTable(params: apiTypes.QueryTableData["query"]) { + return await DataService.queryTable({query: {...params}}).catch(errorHandler()) +} + +async function probeTable(tid: apiTypes.TableIdentifier) { + return await ReflectionService.probeTable({query: {...tid}}).catch(errorHandler()) +} + +async function probeDB(tid: apiTypes.TableIdentifier, body: apiTypes.ProbeDbData["body"]) { + return await ReflectionService.probeDb({ + body, + query: {...tid, override_if_exists: true} + }).catch(errorHandler()) +} + +async function searchDB(source: SourceDBType, body: apiTypes.DBSchemaQueryRequest) { + return await ReflectionService.queryDbSchema({body, query: {source}}).catch(errorHandler()) +} + +async function makeERD(source?: SourceDBType, body?: apiTypes.DBSchemaSelectionRequest) { + if (!body) + return await DataService.makeErd({query: {source, version: "mermaid"}}).catch(errorHandler()) + else + return await DataService.makeFilteredErd({query: {source, version: "mermaid"}, body}).catch(errorHandler()) +} + +// + +async function markForeignKey(source: SourceDBType, body: apiTypes.FKCreationRequest) { + return await ControlService.markForeignKey({ + query: {source}, + body + }).catch(errorHandler('Foreign key constraint could not be created')) +} + +async function createVirtualView(body: apiTypes.VirtualViewCreationRequest, params?: apiTypes.CreateVirtualViewData["query"]) { + return await ControlService.createVirtualView({ + query: {...params}, + body + }).catch(errorHandler('Error creating virtual view')) +} + +async function createVirtualViewsBatch(body: apiTypes.VirtualViewCreationRequest[], params?: apiTypes.CreateVirtualViewsBatchData["query"]) { + return await ControlService.createVirtualViewsBatch({ + query: {...params}, + body + }).catch(errorHandler('Error creating virtual views')) +} + +async function dropVirtualView(params: apiTypes.DropVirtualViewData["query"]) { + return await ControlService.dropVirtualView({query: {...params}}).catch(errorHandler('Error dropping virtual view')) +} + +async function getCompiledView(params: apiTypes.GetCompiledVirtualViewData["query"]) { + return await ControlService.getCompiledVirtualView({query: {...params}}).catch(errorHandler('Requested virtual view could not be compiled')) +} + +async function getCompiledViews() { + return await ControlService.getCompiledVirtualViews({}).catch(errorHandler('Virtual views could not be compiled')) +} + +async function validateMappings(body: apiTypes.ConceptMappingRequest[]) { + return await MitmService.validateConceptMappings({ + body + }).catch(errorHandler('Error validating MitM concept mappings')) +} + +// +async function exportMitM(body: apiTypes.MappingExportRequest) { + return await MitmService.exportMitm({ + body, + params: {responseType: "blob"} + }).catch(errorHandler('Error exporting MitM mapped dataset')) +} + +async function publishMitMExport(body: apiTypes.MappingExportRequest, use_streaming_export: boolean) { + return await MitmService.publishMitmExport({ + query: {use_streaming_export: use_streaming_export}, + body + }).catch(errorHandler('Error publishing MitM mapped dataset export')) +} + +async function deleteMitMExport(exportID: number) { + return await MitmService.deleteMitmExport({ + query: {export_id: exportID} + }).catch(errorHandler('Error deleting MitM dataset export')) +} + +async function deleteMitMExports() { + return await MitmService.deleteMitmExports({}).catch(errorHandler('Error deleting MitM dataset exports')) +} + +export function useAPIClient() { + return client +} + +export function useAPI() { + return { + AdminService, + SessionService, + ControlService, + ReflectionService, + DataService, + MitmService, + DefinitionsService, + keepAlive, + startSession, + stopSession, + getDBSchema, + uploadDB, + connectDB, + getMitMs, + getMitMDefinition, + getMitMDataTypes, + reflectDB, + testDBConn, + queryTable, + probeTable, + probeDB, + searchDB, + makeERD, + getTableSchema, + markForeignKey, + createVirtualView, + createVirtualViewsBatch, + dropVirtualView, + validateMappings, + exportMitM, + publishMitMExport, + deleteMitMExport, + deleteMitMExports, + getCompiledView, + getCompiledViews + } +} diff --git a/src/services/api.ts b/src/services/api.ts index 1555ce8..8ad54c1 100644 --- a/src/services/api.ts +++ b/src/services/api.ts @@ -1,6 +1,5 @@ import {AxiosResponse, OpenAPIClientAxios, OpenAPIV3} from 'openapi-client-axios'; import {Client as MyBackendClient} from './api-schema/openapi'; -import {handleError, inject, provide} from "vue"; import APISpec from './api-schema/openapi.json' import type {Components, Paths} from './api-schema/openapi'; @@ -78,10 +77,8 @@ export namespace Transforms { export type ColumnCreations = AddColumn | ExtractJson } - const backendUrl = (process.env.VITE_API_HOST ?? window.location.origin) + (process.env.VITE_API_PREFIX ?? '/api') // process.env.API_URL ?? 'http://localhost:8080' // import.meta.env?.VITE_API_URL || console.log(`Using following (backend) API_URL: ${backendUrl}`) -// const f = jsYaml.loadAll('./api-schema/openapi.yaml') const openAPIClient = new OpenAPIClientAxios({ definition: APISpec as OpenAPIV3.Document, diff --git a/src/services/constantsStore.ts b/src/services/constantsStore.ts index 147cdc8..1b78ea3 100644 --- a/src/services/constantsStore.ts +++ b/src/services/constantsStore.ts @@ -1,8 +1,8 @@ import {defineStore} from "pinia"; import {ref} from "vue"; -import {MitM, MitMDefinition, SourceDBType, useAPI, MitMDataType} from "@/services/api"; +import {useAPI, MITMDataTypes, SourceDBTypes, MITMs, MITMDefinition} from "@/services/api-v2"; -export const mitmDataTypeProperties: { [k: MitMDataType]: any } = { +export const mitmDataTypeProperties: { [k: string]: any } = { text: {icon: 'mdi-alphabetical'}, integer: {icon: 'mdi-numeric'}, numeric: {icon: 'mdi-fraction-one-half'}, @@ -24,13 +24,13 @@ export const sqlDataTypeProperties: { [k: string]: any } = { } export const useConstantsStore = defineStore('constants', () => { - const dbSources: SourceDBType[] = ["original", "virtual"] + const dbSources: SourceDBTypes[] = ["original", "virtual"] const isInitialized = ref(false) const isLoading = ref(false) const mitms = ref([] as string[]) - const mitmDefs = ref({} as { [mitm: string]: MitMDefinition }) + const mitmDefs = ref({} as { [mitm: string]: MITMDefinition }) const mitmDataTypes = ref({}) async function initViaAPI() { @@ -44,7 +44,7 @@ export const useConstantsStore = defineStore('constants', () => { if (!!r?.data) { mitms.value = r.data - const rs = await Promise.all(mitms.value.map((mitm) => api.getMitMDefinition(mitm as MitM))) + const rs = await Promise.all(mitms.value.map((mitm) => api.getMitMDefinition(mitm as MITMs))) mitms.value.forEach((mitm, i) => mitmDefs.value[mitm] = rs.at(i)?.data) const r3 = await api.getMitMDataTypes(); diff --git a/src/services/convenienceStore.ts b/src/services/convenienceStore.ts index 205f202..c08ac4e 100644 --- a/src/services/convenienceStore.ts +++ b/src/services/convenienceStore.ts @@ -1,18 +1,20 @@ import {storeToRefs} from "pinia"; import {useMainStore} from "@/services/mainStore"; +import {computed, MaybeRefOrGetter, ref, shallowRef, toValue, watchEffect} from "vue"; +import {tmToIdentifier} from "@/services/utils"; +import {useConstantsStore} from "@/services/constantsStore"; import { ColumnProperties, DBMetaInfoResponse, - MitMDataType, + MITMDataType, SampleSummary, SourceDBType, TableIdentifier, TableMetaInfoResponse, TableProbeResponse -} from "@/services/api"; -import {computed, MaybeRefOrGetter, ref, shallowRef, toValue, watchEffect} from "vue"; -import {tmToIdentifier} from "@/services/utils"; -import {useConstantsStore} from "@/services/constantsStore"; +} from "@/services/api-v2"; +import {TableProbeResponseSchema} from "@/services/api-schema"; + export interface ColumnListItem { name: string, @@ -29,7 +31,7 @@ export interface ExtendedColumnListItem { value: string, sqlType: string, column_properties: ColumnProperties, - inferredType: MitMDataType, + inferredType: MITMDataType, sampleSummary: SampleSummary, props: object } @@ -38,7 +40,7 @@ export function useTableProbe(table: MaybeRefOrGetter<TableIdentifier>) { const store = useMainStore() - const tableProbe = ref(null as TableProbeResponse) + const tableProbe = ref<TableProbeResponse>(null as TableProbeResponse) watchEffect(async () => { const t: TableIdentifier = toValue(table) @@ -99,6 +101,7 @@ export function useColumnsOfTable(table: MaybeRefOrGetter<TableIdentifier>, { return {columnList} } +type FilterFunc = (TableMetaInfoResponse, TableProbeResponse, string) => boolean export function useColumnsOfTableWithProbe(table: MaybeRefOrGetter<TableIdentifier>, { deriveProps = (tm: TableMetaInfoResponse, tp: TableProbeResponse, c: string) => ({}), @@ -220,7 +223,7 @@ export function useMitMTypes() { value: key, props: {prepend_icon: constants.mitmDataTypeProperties[key]}, wrapped: {mitm: key}, - raw: key as MitMDataType, + raw: key as MITMDataType, //raw_sql_type: properties.sql_type }) )) diff --git a/src/services/exportStore.ts b/src/services/exportStore.ts index 727846e..b22531f 100644 --- a/src/services/exportStore.ts +++ b/src/services/exportStore.ts @@ -1,5 +1,5 @@ import {defineStore} from "pinia"; -import {ExportRequest, useAPI} from "@/services/api"; +import {MappingExportRequest, useAPI} from "@/services/api-v2"; import {ref} from "vue"; import {DateTime} from "luxon"; @@ -22,7 +22,7 @@ export const useExportStore = defineStore('exports', () => { const api = useAPI() const publishedExports = ref<PublishedExportEntry[]>([] as PublishedExportEntry[]) - async function publishExport(exportRequest: ExportRequest, use_streaming_export:boolean): Promise<PublishedExportEntry | null> { + async function publishExport(exportRequest: MappingExportRequest, use_streaming_export:boolean): Promise<PublishedExportEntry | null> { const r = await api.publishMitMExport(exportRequest, use_streaming_export) if (r?.data) { const apiResponse = r.data diff --git a/src/services/mainStore.ts b/src/services/mainStore.ts index 93cd395..070b40b 100644 --- a/src/services/mainStore.ts +++ b/src/services/mainStore.ts @@ -1,5 +1,5 @@ import {defineStore} from 'pinia' -import {DBMetaInfoResponse, keepAlive, KeepAliveResponse, TableIdentifier, useAPI} from "@/services/api"; +import {DBMetaInfoResponse, KeepAliveResponse, TableIdentifier, useAPI} from "@/services/api-v2"; import {computed, Ref, ref, shallowReactive} from "vue"; export type APIStatus = "connecting" | "disconnected" | KeepAliveResponse @@ -25,7 +25,7 @@ export const useMainStore = defineStore('main', () => { async function testAPI() { if (apiStatus.value === "disconnected") apiStatus.value = "connecting" - const r = await keepAlive() + const r = await api.keepAlive() if (r?.data) { if (r.data.session_status !== "session valid") reset() apiStatus.value = r.data @@ -88,7 +88,7 @@ export const useMainStore = defineStore('main', () => { } async function retrieveAndStoreVirtualDBInfo() { - const r = await api.getDBSchema({source: 'virtual'}); + const r = await api.getDBSchema("virtual"); if (r?.data) { virtualDBSchema.value = r.data @@ -97,22 +97,14 @@ export const useMainStore = defineStore('main', () => { async function getTableMeta(tableIdentifier: TableIdentifier, useCache = false) { if (!!tableIdentifier) { - const r = await api.getTableSchema({ - source: tableIdentifier.source, - schema: tableIdentifier.schema, - table: tableIdentifier.name - }) + const r = await api.getTableSchema(tableIdentifier) return r?.data } } async function getTableProbe(tableIdentifier: TableIdentifier) { if (!!tableIdentifier) { - const r = await api.probeTable({ - source: tableIdentifier.source, - schema: tableIdentifier.schema, - table: tableIdentifier.name - }) + const r = await api.probeTable(tableIdentifier) return r?.data } } diff --git a/src/services/mappingStore.ts b/src/services/mappingStore.ts index 9d88c27..5b2b2b7 100644 --- a/src/services/mappingStore.ts +++ b/src/services/mappingStore.ts @@ -1,6 +1,6 @@ import {defineStore} from "pinia"; import {ref} from "vue"; -import {ConceptMapping, MappingGroupValidationResult, useAPI} from "@/services/api"; +import {ConceptMapping, MappingGroupValidationResult, useAPI} from "@/services/api-v2"; import {saveAs} from "file-saver"; import {DateTime} from "luxon"; diff --git a/src/services/mappingUtils.ts b/src/services/mappingUtils.ts index e924350..dc47ddc 100644 --- a/src/services/mappingUtils.ts +++ b/src/services/mappingUtils.ts @@ -1,6 +1,6 @@ import {ExtendedColumnListItem} from "@/services/convenienceStore"; import {Ref} from "vue"; -import {MitMDataType, MitMDefinition, TableIdentifier} from "@/services/api"; +import {MITMDataType, MITMDefinition, TableIdentifier} from "@/services/api-v2"; export type WithinTableMappings = { [key: string]: ExtendedColumnListItem } export type ForeignRelationMappings = { @@ -9,7 +9,7 @@ export type ForeignRelationMappings = { referred_table: Ref<TableIdentifier | null> } } -export type TypedColumnSelection = { [key: string]: { selected: boolean, declaredType: MitMDataType | null } } +export type TypedColumnSelection = { [key: string]: { selected: boolean, declaredType: MITMDataType | null } } export function colMapFromNames(columns?: ExtendedColumnListItem[], nameColumnMapping?: { [key: string]: string }): { [key: string]: ExtendedColumnListItem @@ -18,10 +18,10 @@ export function colMapFromNames(columns?: ExtendedColumnListItem[], nameColumnMa else return Object.fromEntries(Object.entries(nameColumnMapping).map(([k, v]) => [k, columns?.find(item => item.name.toLowerCase() === v.toLowerCase())]).filter(([k, v]) => !!v)) } -export function suggestCol(columns?: ExtendedColumnListItem[], name?: string, mitmType?: MitMDataType): ExtendedColumnListItem | null { +export function suggestCol(columns?: ExtendedColumnListItem[], name?: string, mitmType?: MITMDataType): ExtendedColumnListItem | null { return columns?.find(item => item.name.toLowerCase() === name?.toLowerCase() && item.inferredType === mitmType) ?? null } -export function getRequiredType(mitmDef: MitMDefinition, concept: string): MitMDataType | null { +export function getRequiredType(mitmDef: MITMDefinition, concept: string): MITMDataType | null { return mitmDef?.weak_concepts[concept] ?? null } diff --git a/src/services/presetStore.ts b/src/services/presetStore.ts index d8de7ef..8fa339f 100644 --- a/src/services/presetStore.ts +++ b/src/services/presetStore.ts @@ -1,6 +1,6 @@ import {defineStore} from "pinia"; import {shallowRef} from "vue"; -import {ConceptMapping, useAPI, VirtualViewCreation} from "@/services/api"; +import {ConceptMapping, useAPI, VirtualViewCreationRequest} from "@/services/api-v2"; import {useMainStore} from "@/services/mainStore"; import {useSelectionStore} from "@/services/selectionStore"; import {useMappingStore} from "@/services/mappingStore"; @@ -8,7 +8,7 @@ import {useMappingStore} from "@/services/mappingStore"; import {hardcodedPresets} from "@/services/preset-definitions/hardcoded-presets" export type PresetDefinition = { - virtual_views: VirtualViewCreation[], + virtual_views: VirtualViewCreationRequest[], concept_mappings: ConceptMapping[] } @@ -65,7 +65,7 @@ export const usePresetStore = defineStore('presets', () => { name: view.name, schema: view.schema_name, table_creation: {operation: 'raw', typed_query: view} - } as VirtualViewCreation)) + } as VirtualViewCreationRequest)) const concept_mappings = [...Object.values(mapping.currentMappings).map(cm => cm.mapping)] diff --git a/src/services/selectionStore.ts b/src/services/selectionStore.ts index e0e57b8..0599bf1 100644 --- a/src/services/selectionStore.ts +++ b/src/services/selectionStore.ts @@ -1,6 +1,6 @@ import {defineStore} from "pinia"; import {computed, ref} from "vue"; -import {MitM, MitMDefinition, TableIdentifier, useAPI} from "@/services/api"; +import {MITM, MITMDefinition, TableIdentifier, useAPI} from "@/services/api-v2"; import {useConstantsStore} from "@/services/constantsStore"; import {isSameTID} from "@/services/utils"; @@ -12,8 +12,8 @@ export const useSelectionStore = defineStore('selection', () => { const selectedTable = ref<TableIdentifier>(null as TableIdentifier) const favoritedTables = ref<TableIdentifier[]>([] as TableIdentifier[]) - const selectedMitM = ref<MitM>("MAED" as MitM) - const selectedMitMDef = computed(() => constants.mitmDefs[selectedMitM.value] as MitMDefinition) + const selectedMitM = ref<MITM>("MAED" as MITM) + const selectedMitMDef = computed(() => constants.mitmDefs[selectedMitM.value] as MITMDefinition) function selectTable(tid: TableIdentifier) { selectedTable.value = tid diff --git a/src/services/utils.ts b/src/services/utils.ts index 4b69bad..1208482 100644 --- a/src/services/utils.ts +++ b/src/services/utils.ts @@ -1,4 +1,4 @@ -import {SourceDBType, TableIdentifier, TableMetaInfoResponse} from "@/services/api"; +import {SourceDBType, TableIdentifier, TableMetaInfoResponse} from "@/services/api-v2"; import {MaybeRef, toValue} from "vue"; import {useMainStore} from "@/services/mainStore"; import {useMappingStore} from "@/services/mappingStore"; @@ -32,7 +32,7 @@ export function tmToIdentifier(source: SourceDBType, tm: TableMetaInfoResponse): export function jsonToPrettyStr(obj) { try { - return JSON.stringify(obj instanceof String ? JSON.parse(obj) : obj, null, 2) + return JSON.stringify(typeof obj == "string" ? JSON.parse(obj) : obj, null, 2) } catch (e) { return `Unparsable JSON:\n${obj}` } @@ -46,7 +46,7 @@ export const rules = { required: v => !!v || "required", isInt: v => v == null || Number.parseInt(v) == Number.parseFloat(v) || "must be an integer", isNonNeg: v => v == null || Number.parseInt(v) >= 0 || "must be non-negative", - uniqueWithin<T>(collection: MaybeRef<Array<T>>, accessor: ((arg0: T) => string) = item => item, errMsg = "name already exists") { + uniqueWithin<T>(collection: MaybeRef<Array<T>>, accessor: ((arg0: T) => string) = item => String(item), errMsg = "name already exists") { return v => v == null || !toValue(collection).some((item) => accessor(item) === v) || errMsg }, url: v => { -- GitLab