@sava-info-systems/api-maker-with-extensions 1.17.2 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +1 -0
- package/3rdpartylicenses.txt +18 -18
- package/assets-deployment/.env +42 -41
- package/assets-deployment/config/keyfile +16 -16
- package/assets-deployment/config/mongodb_api_maker.yml +33 -33
- package/assets-deployment/config/redis_api_maker.yml +26 -26
- package/assets-deployment/installation_steps.sh +184 -184
- package/assets-deployment/mongo_script.js +33 -33
- package/dist/{1617.5e0016e4b9a7942e.js → 1351.c372d4232c6551fb.js} +1 -1
- package/dist/1417.336e9ca469a92f03.js +1 -0
- package/dist/1468.7643522cc3e89857.js +1 -0
- package/dist/1959.59ee99be25f59755.js +1 -0
- package/dist/2162.bb1f670dabb5c84a.js +1 -0
- package/dist/{7436.7567f48d90151049.js → 2442.18887167a25c7dee.js} +1 -1
- package/dist/2818.dd50a60acfbaad6b.js +1 -0
- package/dist/3488.7052042211d08d07.js +1 -0
- package/dist/3545.d415d4baf2d79163.js +1 -0
- package/dist/3605.e398ec79072f4bf2.js +1 -0
- package/dist/{2735.43de9171c8b9d084.js → 3611.59468f2dba2cd6df.js} +1 -1
- package/dist/3621.43633d73990c0546.js +1 -0
- package/dist/{8374.fa20d95bc952f56d.js → 3732.d698a74f1f0e24e6.js} +1 -1
- package/dist/379.0d35e4e001b196b4.js +1 -0
- package/dist/3929.a017182a7e24cf7f.js +1 -0
- package/dist/4092.b7a59976bb87bf26.js +1 -0
- package/dist/4124.1dab3feb76c9c039.js +1 -0
- package/dist/4316.3745e74e3d9c2865.js +1 -0
- package/dist/4344.b6f194f896eb2205.js +1 -0
- package/dist/4689.4f5958fddadc577e.js +1 -0
- package/dist/4709.bd58a5ca8c74f29c.js +1 -0
- package/dist/4774.088c1fbbb2988ee5.js +1 -0
- package/dist/4880.968e1ffff2f417d9.js +1 -0
- package/dist/5011.f661999b271a98de.js +1 -0
- package/dist/5090.fb3787137ba94607.js +1 -0
- package/dist/5140.05120f243608b828.js +1 -0
- package/dist/5362.4514e2ffb27ce0ac.js +1 -0
- package/dist/5442.454ac3ebe7c10659.js +1 -0
- package/dist/5455.c1f4f3493ea016d4.js +1 -0
- package/dist/5729.9b201708284e16bc.js +1 -0
- package/dist/5826.650d402e8a957ea3.js +1 -0
- package/dist/6053.fa624fe98db9a213.js +1 -0
- package/dist/6220.7d7df941537ed662.js +1 -0
- package/dist/6415.6b8243526609c494.js +1 -0
- package/dist/{6925.2135c4ac170fd066.js → 6589.1003b792dd929437.js} +1 -1
- package/dist/6679.e71f655f0e7e3e6c.js +1 -0
- package/dist/6828.e0cfd2be83bbc047.js +1 -0
- package/dist/6866.2b7ff38ea0ea8d8f.js +1 -0
- package/dist/6882.c12e0aff75132b05.js +1 -0
- package/dist/7014.8aa576d25335a412.js +1 -0
- package/dist/7152.4f047369765b7ac5.js +1 -0
- package/dist/7367.bd5d43e22b265555.js +1 -0
- package/dist/7374.b0ad763987f68749.js +1 -0
- package/dist/7597.9fe66d68836d18f4.js +1 -0
- package/dist/7759.6c363b1156e3658a.js +1 -0
- package/dist/807.2ba5cc740aa4efa0.js +1 -0
- package/dist/8219.46ff63825141f651.js +1 -0
- package/dist/8447.17357e24b9438857.js +1 -0
- package/dist/{8682.ac569b2306382d34.js → 8970.3abda875c6d7de4f.js} +1 -1
- package/dist/9036.18609df03a18bbdb.js +1 -0
- package/dist/9347.cb017d6396c7f64e.js +1 -0
- package/dist/9429.3ce31b960b639d09.js +1 -0
- package/dist/{891.4a43f95d77122674.js → 9785.edd131cfe4b5abdb.js} +1 -1
- package/dist/9882.1e4cda6c65811bb5.js +1 -0
- package/dist/9957.baf57c960e56a490.js +1 -0
- package/dist/assets/images/banner/default_package_banner.jpg +0 -0
- package/dist/assets/images/bg/world.svg +0 -0
- package/dist/assets/images/icons/adminuser.png +0 -0
- package/dist/assets/images/icons/api-group.svg +0 -0
- package/dist/assets/images/icons/api-maker-deployment.svg +0 -0
- package/dist/assets/images/icons/api-user.svg +0 -0
- package/dist/assets/images/icons/aws.svg +0 -0
- package/dist/assets/images/icons/bug.svg +0 -0
- package/dist/assets/images/icons/bulkschema.svg +0 -0
- package/dist/assets/images/icons/comparator.svg +0 -0
- package/dist/assets/images/icons/custom.svg +0 -0
- package/dist/assets/images/icons/database.svg +0 -0
- package/dist/assets/images/icons/db-m.svg +0 -0
- package/dist/assets/images/icons/default_package_icon.svg +0 -0
- package/dist/assets/images/icons/deployset.png +0 -0
- package/dist/assets/images/icons/dev.svg +0 -0
- package/dist/assets/images/icons/diagram.svg +0 -0
- package/dist/assets/images/icons/event.svg +0 -0
- package/dist/assets/images/icons/film-movies-icon.svg +0 -0
- package/dist/assets/images/icons/finder.svg +0 -0
- package/dist/assets/images/icons/git.svg +0 -0
- package/dist/assets/images/icons/house.svg +0 -0
- package/dist/assets/images/icons/i18n.svg +0 -0
- package/dist/assets/images/icons/increment.svg +0 -0
- package/dist/assets/images/icons/license.svg +0 -0
- package/dist/assets/images/icons/log-profile.svg +0 -0
- package/dist/assets/images/icons/log.svg +0 -0
- package/dist/assets/images/icons/masters.svg +0 -0
- package/dist/assets/images/icons/native-process-logs.svg +0 -0
- package/dist/assets/images/icons/nodes.svg +0 -0
- package/dist/assets/images/icons/notes.svg +0 -0
- package/dist/assets/images/icons/npm.svg +0 -0
- package/dist/assets/images/icons/process_initializers.svg +0 -0
- package/dist/assets/images/icons/redis.png +0 -0
- package/dist/assets/images/icons/redis.svg +0 -0
- package/dist/assets/images/icons/sandbox.svg +0 -0
- package/dist/assets/images/icons/schedulers.svg +0 -0
- package/dist/assets/images/icons/secret.svg +0 -0
- package/dist/assets/images/icons/swagger-logo.svg +0 -0
- package/dist/assets/images/icons/systems.svg +0 -0
- package/dist/assets/images/icons/testing.svg +0 -0
- package/dist/assets/images/icons/third-party.svg +0 -0
- package/dist/assets/images/icons/typescript.svg +0 -0
- package/dist/assets/images/icons/ui-maker.svg +0 -0
- package/dist/assets/images/icons/utility.svg +0 -0
- package/dist/assets/images/icons/vulnerability.svg +0 -0
- package/dist/assets/images/icons/web.svg +0 -0
- package/dist/assets/images/instancesIcon/mariadb.png +0 -0
- package/dist/assets/images/instancesIcon/microsoft-sql-server.png +0 -0
- package/dist/assets/images/instancesIcon/mongodb.png +0 -0
- package/dist/assets/images/instancesIcon/my-sql.svg +0 -0
- package/dist/assets/images/instancesIcon/oracle.png +0 -0
- package/dist/assets/images/instancesIcon/postgresql.png +0 -0
- package/dist/assets/images/logo/API Maker Logo 2021 black.svg +0 -0
- package/dist/assets/images/logo/API Maker Logo 2021.svg +0 -0
- package/dist/assets/images/logo/discord-icon.svg +0 -0
- package/dist/assets/images/logo/dollar.svg +0 -0
- package/dist/assets/images/logo/logo.svg +0 -0
- package/dist/assets/images/logo/logo_docs.svg +0 -0
- package/dist/assets/images/logo/logo_store.svg +0 -0
- package/dist/assets/images/logo/logo_store_new.svg +0 -0
- package/dist/assets/images/logo/rupee.svg +0 -0
- package/dist/assets/images/logo/sava-logo.png +0 -0
- package/dist/assets/images/logo/store_logo.svg +0 -0
- package/dist/assets/images/payment/failed.svg +0 -0
- package/dist/assets/images/payment/success.svg +0 -0
- package/dist/assets/images/svg/MARIA_DB.svg +0 -0
- package/dist/assets/images/svg/MONGO_DB.svg +0 -0
- package/dist/assets/images/svg/MYSQL_DB.svg +0 -0
- package/dist/assets/images/svg/Microsoft_SQL_Server_DB_No_Logo.svg +0 -0
- package/dist/assets/images/svg/Oracle_DB_No_Logo.svg +0 -0
- package/dist/assets/images/svg/POSTGRE_SQL_DB.svg +0 -0
- package/dist/assets/images/svg/Ti_DB.svg +0 -0
- package/dist/assets/images/svg/Xtra_DB.svg +0 -0
- package/dist/assets/images/svg/placeholder_thumbnail_json.svg +0 -0
- package/dist/assets/images/svg/serve_static_website_icon.svg +0 -0
- package/dist/assets/images/svg/single_obj.svg +0 -0
- package/dist/assets/json/am_docs.json +0 -0
- package/dist/assets/lib/svg-pan-zoom.d.ts +0 -0
- package/dist/assets/lib/svg-pan-zoom.min.js +0 -0
- package/dist/assets/monaco-assets/configurations/cpp.json +0 -0
- package/dist/assets/monaco-assets/configurations/csharp.json +0 -0
- package/dist/assets/monaco-assets/configurations/dart.json +0 -0
- package/dist/assets/monaco-assets/configurations/go.json +0 -0
- package/dist/assets/monaco-assets/configurations/java.json +0 -0
- package/dist/assets/monaco-assets/configurations/javascript.json +0 -0
- package/dist/assets/monaco-assets/configurations/json.json +0 -0
- package/dist/assets/monaco-assets/configurations/python.json +0 -0
- package/dist/assets/monaco-assets/configurations/ruby.json +0 -0
- package/dist/assets/monaco-assets/configurations/rust.json +0 -0
- package/dist/assets/monaco-assets/configurations/swift.json +0 -0
- package/dist/assets/monaco-assets/configurations/typescript.json +0 -0
- package/dist/assets/monaco-assets/configurations/xml.json +0 -0
- package/dist/assets/monaco-assets/configurations/yaml.json +0 -0
- package/dist/assets/monaco-assets/grammars/cpp.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/csharp.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/dart.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/go.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/java.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/javascript.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/json.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/magicpython.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/ruby.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/rust.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/swift.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/typescript.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/xml.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/grammars/yaml.tmLanguage.json +0 -0
- package/dist/assets/monaco-assets/onig.wasm +0 -0
- package/dist/assets/music/notification.mp3 +0 -0
- package/dist/assets/primeng-theme/primeng-theme-overrides.scss +0 -0
- package/dist/assets/primeng-theme/theme.css +0 -0
- package/dist/assets/schema-types/InterfaceProps.ts +31 -1
- package/dist/assets/schema-types/store-types.ts +1 -0
- package/dist/assets/schema-types/types.ts +50 -1
- package/dist/assets/styles/bootstrap-overrides.scss +0 -0
- package/dist/assets/styles/colors-dark.scss +0 -0
- package/dist/assets/styles/colors-light.scss +0 -0
- package/dist/assets/styles/fonts/JetBrainsMonoRegular.ttf +0 -0
- package/dist/assets/styles/fonts/Verdana.ttf +0 -0
- package/dist/assets/styles/monaco-editor-overrides.scss +0 -0
- package/dist/assets/styles/out/bootstrap-overrides.css +0 -0
- package/dist/assets/styles/out/bootstrap-overrides.css.map +0 -0
- package/dist/assets/styles/out/colors-dark.css +0 -0
- package/dist/assets/styles/out/colors-dark.css.map +0 -0
- package/dist/assets/styles/out/colors-light.css +0 -0
- package/dist/assets/styles/out/colors-light.css.map +0 -0
- package/dist/assets/styles/out/monaco-editor-overrides.css +0 -0
- package/dist/assets/styles/out/monaco-editor-overrides.css.map +0 -0
- package/dist/assets/styles/out/variables.css +0 -0
- package/dist/assets/styles/out/variables.css.map +0 -0
- package/dist/assets/styles/root-styles.css +0 -0
- package/dist/assets/styles/variables.scss +0 -0
- package/dist/assets/swagger/favicon-16x16.png +0 -0
- package/dist/assets/swagger/favicon-32x32.png +0 -0
- package/dist/assets/swagger/index.css +0 -0
- package/dist/assets/swagger/index.html +0 -0
- package/dist/assets/swagger/oauth2-redirect.html +0 -0
- package/dist/assets/swagger/swagger-initializer.js +0 -0
- package/dist/assets/swagger/swagger-ui-bundle.js +0 -0
- package/dist/assets/swagger/swagger-ui-es-bundle-core.js +0 -0
- package/dist/assets/swagger/swagger-ui-es-bundle.js +0 -0
- package/dist/assets/swagger/swagger-ui-standalone-preset.js +0 -0
- package/dist/assets/swagger/swagger-ui.css +0 -0
- package/dist/assets/swagger/swagger-ui.js +0 -0
- package/dist/common.2e05fdf2a25495d6.js +1 -0
- package/dist/favicon.ico +0 -0
- package/dist/index.html +17 -1
- package/dist/main.b85e625cdc44b214.js +1 -0
- package/dist/polyfills.9cbb1c8222a6b6c3.js +1 -0
- package/dist/runtime.f9839e08ff0d235d.js +1 -0
- package/main.js +1 -1
- package/package.json +5 -4
- package/sandbox/.dockerignore +2 -2
- package/sandbox/Dockerfile +32 -32
- package/sandbox/assets/schema-types/store-types.js +1 -0
- package/sandbox/assets/schema-types/types.js +27 -0
- package/sandbox/sandbox.js +1 -1
- package/sandbox/src/utils/VmInit.js +11 -11
- package/src/assets/schema-types/store-types.ts +1 -0
- package/src/assets/schema-types/types.ts +50 -1
- package/src/json/DefaultUsers.json +18 -18
- package/src/public/css/bootstrap-slate.min.css +11 -11
- package/src/public/css/styles.css +4 -4
- package/src/public/dist-db-masters/3rdpartylicenses.txt +0 -0
- package/src/public/dist-db-masters/browser/assets/data/mime_types.json +0 -0
- package/src/public/dist-db-masters/browser/assets/iframe_test.html +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-blue/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-blue/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-green/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-green/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-green/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-orange/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-orange/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-orange/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-purple/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-purple/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/arya-purple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-amber/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-amber/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-amber/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-blue/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-blue/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-cyan/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-cyan/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-cyan/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-green/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-green/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-green/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-indigo/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-indigo/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-indigo/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-lime/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-lime/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-lime/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-noir/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-noir/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-noir/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-pink/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-pink/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-pink/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-purple/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-purple/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-purple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-teal/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-teal/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-dark-teal/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-amber/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-amber/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-amber/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-blue/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-blue/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-cyan/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-cyan/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-cyan/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-green/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-green/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-green/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-indigo/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-indigo/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-indigo/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-lime/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-lime/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-lime/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-noir/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-noir/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-noir/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-pink/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-pink/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-pink/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-purple/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-purple/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-purple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-teal/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-teal/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/aura-light-teal/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/bootstrap4-dark-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/bootstrap4-dark-purple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/bootstrap4-light-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/bootstrap4-light-purple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/fluent-light/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-amber/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-amber/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-blue/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-blue/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-cyan/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-cyan/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-green/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-green/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-indigo/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-indigo/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-indigo/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-pink/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-pink/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-purple/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-purple/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-purple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-teal/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-teal/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-dark-teal/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-amber/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-amber/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-blue/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-blue/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-cyan/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-cyan/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-green/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-green/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-indigo/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-indigo/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-indigo/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-pink/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-pink/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-purple/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-purple/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-purple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-teal/fonts/Inter-italic.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-teal/fonts/Inter-roman.var.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/lara-light-teal/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/luna-amber/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/luna-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/luna-green/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/luna-pink/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-deeppurple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-dark-indigo/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-deeppurple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/md-light-indigo/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-deeppurple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-dark-indigo/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-deeppurple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mdc-light-indigo/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mira/fonts/Inter-Bold.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mira/fonts/Inter-Bold.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mira/fonts/Inter-Medium.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mira/fonts/Inter-Medium.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mira/fonts/Inter-Regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mira/fonts/Inter-Regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mira/fonts/Inter-SemiBold.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mira/fonts/Inter-SemiBold.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/mira/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/nano/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/nova/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/nova-accent/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/nova-alt/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/rhea/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/saga-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/saga-green/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/saga-orange/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/saga-purple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-dark/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-dark/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-dark/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-dark/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-dark/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-dark/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-dark/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-light/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-light/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-light/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-light/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-light/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-light/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/soho-light/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-Bold.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-Bold.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-Light.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-Light.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-Medium.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-Medium.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-Regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-Regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-SemiBold.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/fonts/Inter-SemiBold.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/tailwind-light/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/vela-blue/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/vela-green/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/vela-orange/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/vela-purple/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-300.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-300.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-600.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-600.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-dark/theme.css +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-light/fonts/poppins-v15-latin-ext_latin-300.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-light/fonts/poppins-v15-latin-ext_latin-300.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-light/fonts/poppins-v15-latin-ext_latin-600.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-light/fonts/poppins-v15-latin-ext_latin-600.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-light/fonts/poppins-v15-latin-ext_latin-700.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-light/fonts/poppins-v15-latin-ext_latin-700.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-light/fonts/poppins-v15-latin-ext_latin-regular.woff +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-light/fonts/poppins-v15-latin-ext_latin-regular.woff2 +0 -0
- package/src/public/dist-db-masters/browser/assets/themes/viva-light/theme.css +0 -0
- package/src/public/dist-db-masters/browser/chunk-MON7YFGF.js +0 -0
- package/src/public/dist-db-masters/browser/chunk-YFZ444RX.js +0 -0
- package/src/public/dist-db-masters/browser/favicon.ico +0 -0
- package/src/public/dist-db-masters/browser/index.html +1 -1
- package/src/public/dist-db-masters/browser/{main-IBAM6XPA.js → main-E76YJGUR.js} +45 -45
- package/src/public/dist-db-masters/browser/media/color-3LUHUBGQ.png +0 -0
- package/src/public/dist-db-masters/browser/media/color.png +0 -0
- package/src/public/dist-db-masters/browser/media/hue-RMMBQOAC.png +0 -0
- package/src/public/dist-db-masters/browser/media/hue.png +0 -0
- package/src/public/dist-db-masters/browser/media/primeicons-4GST5W3O.woff2 +0 -0
- package/src/public/dist-db-masters/browser/media/primeicons-DHQU4SEP.svg +0 -0
- package/src/public/dist-db-masters/browser/media/primeicons-GEFHGEHP.ttf +0 -0
- package/src/public/dist-db-masters/browser/media/primeicons-P53SE5CV.woff +0 -0
- package/src/public/dist-db-masters/browser/media/primeicons-RSSEDYLY.eot +0 -0
- package/src/public/dist-db-masters/browser/media/primeicons.eot +0 -0
- package/src/public/dist-db-masters/browser/media/primeicons.svg +344 -344
- package/src/public/dist-db-masters/browser/media/primeicons.ttf +0 -0
- package/src/public/dist-db-masters/browser/media/primeicons.woff +0 -0
- package/src/public/dist-db-masters/browser/media/primeicons.woff2 +0 -0
- package/src/public/dist-db-masters/browser/polyfills-6EAL64PA.js +0 -0
- package/src/public/index.hbs +0 -0
- package/src/tools/install_utils/SetEnvInFrontend.js +9 -0
- package/src/tools/local-client-sample.config.js +7 -0
- package/src/tools/local-client.js +1215 -0
- package/dist/1025.eda8c1a3396273e7.js +0 -1
- package/dist/1097.a379bf7f8a734471.js +0 -1
- package/dist/148.ec88bcd3e3f20575.js +0 -1
- package/dist/1558.939ac758cd13195b.js +0 -1
- package/dist/1678.5a2deb6af166e856.js +0 -1
- package/dist/1754.9e41b76a3386cae8.js +0 -1
- package/dist/1928.d60b4d9b240da409.js +0 -1
- package/dist/1957.54a0763de04d98f4.js +0 -1
- package/dist/2140.98fd5a7996c0bb46.js +0 -1
- package/dist/2295.df48af7c1949d583.js +0 -1
- package/dist/238.7774d44951038aef.js +0 -1
- package/dist/2473.d934970e79ae8da4.js +0 -1
- package/dist/2714.6d2824a01fe8069c.js +0 -1
- package/dist/2908.1bf54119db1c0387.js +0 -1
- package/dist/3081.036f51c622139e2b.js +0 -1
- package/dist/3139.7affade6c2d6398e.js +0 -1
- package/dist/3450.717bbbbe9983d36e.js +0 -1
- package/dist/4110.98896ce3f53cda24.js +0 -1
- package/dist/4186.7bc2dcf9efa9b2f2.js +0 -1
- package/dist/4211.982cb41fe043e117.js +0 -1
- package/dist/4575.f2aa50bc44c89e38.js +0 -1
- package/dist/4842.0193581bd67ed602.js +0 -1
- package/dist/485.7d7f8d40f752527b.js +0 -1
- package/dist/4895.df8df6fbb9612b1a.js +0 -1
- package/dist/5249.56d7d31ad405def9.js +0 -1
- package/dist/5334.4acf3d5504b04b16.js +0 -1
- package/dist/5421.e768cc14f2572282.js +0 -1
- package/dist/5679.2c1768ec1a69b6af.js +0 -1
- package/dist/5761.a694c888855aa9f4.js +0 -1
- package/dist/5765.1f6a809df411f41b.js +0 -1
- package/dist/6236.398ab7444da39d54.js +0 -1
- package/dist/6393.249487638df29b1e.js +0 -1
- package/dist/6401.cb9dea45f5c08188.js +0 -1
- package/dist/7368.63acbc73c0d7e644.js +0 -1
- package/dist/7470.53b9a7d41e5c86c1.js +0 -1
- package/dist/7649.7d058810b1c747f6.js +0 -1
- package/dist/7975.df512d5178ba001c.js +0 -1
- package/dist/7977.e79c874512c8828e.js +0 -1
- package/dist/7987.85e030bb9177b882.js +0 -1
- package/dist/8125.5423cbe9088fc925.js +0 -1
- package/dist/8266.4bf02925174f068a.js +0 -1
- package/dist/8296.127ddd37f859d575.js +0 -1
- package/dist/8841.e938757b4153a60d.js +0 -1
- package/dist/885.678c6bff1cbcf490.js +0 -1
- package/dist/913.f9567f3639a57393.js +0 -1
- package/dist/9243.841dae0ce64c872e.js +0 -1
- package/dist/9575.1d23b73a597339bb.js +0 -1
- package/dist/9939.655323acc05a9812.js +0 -1
- package/dist/common.b28228b192a5bb73.js +0 -1
- package/dist/main.e4498d2115f483ed.js +0 -1
- package/dist/polyfills.a6d93c3e94967b29.js +0 -1
- package/dist/runtime.774a8bbd76c257e7.js +0 -1
- package/src/public/dist-db-masters/browser/main-CEUXXN7K.js +0 -139
- package/src/public/dist-db-masters/browser/main-IXQPPNH5.js +0 -139
- package/src/public/dist-db-masters/browser/main-JX3OMKWB.js +0 -139
- package/src/public/dist-db-masters/browser/main-TYGVEM3B.js +0 -139
- package/src/public/dist-db-masters/browser/main.js +0 -139
- package/src/public/dist-db-masters/browser/polyfills.js +0 -2
- package/src/public/dist-db-masters/browser/styles-2H2JU2BI.css +0 -1
- package/src/public/dist-db-masters/browser/styles.css +0 -1
|
@@ -0,0 +1,1215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EGitSyncType = exports.EAMModelNames = exports.EMongooseHookMethods = exports.EAPICategory = void 0;
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const https = require("node:https");
|
|
8
|
+
const http = require("node:http");
|
|
9
|
+
// $$$$_change
|
|
10
|
+
class LocalClient {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.EL = false; // enable logs // $$$$_change
|
|
13
|
+
this.projectDirectory = '';
|
|
14
|
+
this.C = {
|
|
15
|
+
localClientPath: './local-client.config',
|
|
16
|
+
src: 'src',
|
|
17
|
+
repo: 'repo',
|
|
18
|
+
types: 'types',
|
|
19
|
+
amTypes: 'am-types',
|
|
20
|
+
versions: 'versions',
|
|
21
|
+
apis: 'apis',
|
|
22
|
+
listeners: 'listeners',
|
|
23
|
+
postHooks: 'post-hooks',
|
|
24
|
+
preHooks: 'pre-hooks',
|
|
25
|
+
dbInterfacesFile: 'db-interfaces.d.ts',
|
|
26
|
+
// Read
|
|
27
|
+
UtilityClassesReadF: 'Utility classes',
|
|
28
|
+
CustomApiReadF: 'Custom APIs',
|
|
29
|
+
SchedulersReadF: 'Schedulers',
|
|
30
|
+
WebSocketEventsReadF: 'WebSocket events',
|
|
31
|
+
SchemaReadF: 'Schemas',
|
|
32
|
+
DBMigrationsReadF: 'Database migrations',
|
|
33
|
+
ProcessInitializersReadF: 'Process initializers',
|
|
34
|
+
ProcessI18NReadF: 'i18ns',
|
|
35
|
+
DBMastersReadF: 'DB masters',
|
|
36
|
+
DBMasterStylesReadF: 'UI maker styles',
|
|
37
|
+
DBMasterUtilsReadF: 'DB master utils',
|
|
38
|
+
TestCasesReadF: 'Test cases',
|
|
39
|
+
ThirdPartyApiReadF: 'Third party APIs',
|
|
40
|
+
EventsReadF: 'Events',
|
|
41
|
+
InstanceApiHooksReadF: 'Instance API hooks',
|
|
42
|
+
SystemApiHooksReadF: 'System API hooks',
|
|
43
|
+
CollectionHooksReadF: 'Collection hooks',
|
|
44
|
+
DatabaseHooksReadF: 'Database hooks',
|
|
45
|
+
InstanceHooksReadF: 'Instance hooks',
|
|
46
|
+
// Write
|
|
47
|
+
CustomApisWriteF: 'custom-apis',
|
|
48
|
+
SchedulersWriteF: 'schedulers',
|
|
49
|
+
WebSocketEventsWriteF: 'web-socket-events',
|
|
50
|
+
SchemaWriteF: 'schemas',
|
|
51
|
+
DBMigrationsWriteF: 'db-migrations',
|
|
52
|
+
ProcessInitializersWriteF: 'process-initializers',
|
|
53
|
+
ProcessI18NWriteF: 'i18ns',
|
|
54
|
+
DBMastersWriteF: 'ui-maker-pages',
|
|
55
|
+
DBMasterStylesWriteF: 'ui-maker-styles',
|
|
56
|
+
DBMasterUtilsWriteF: 'ui-maker-utils',
|
|
57
|
+
TestCasesWriteF: 'tests',
|
|
58
|
+
ThirdPartyApiWriteF: 'third-party-apis',
|
|
59
|
+
EventsWriteF: 'events',
|
|
60
|
+
InstanceApiHooksWriteF: 'instance-api-hooks',
|
|
61
|
+
SystemApiHooksWriteF: 'system-api-hooks',
|
|
62
|
+
CollectionHooksWriteF: 'collection-hooks',
|
|
63
|
+
DatabaseHooksWriteF: 'database-hooks',
|
|
64
|
+
InstanceHooksWriteF: 'instance-hooks',
|
|
65
|
+
};
|
|
66
|
+
this.globalObj = {};
|
|
67
|
+
this.skipWatchInputs = false;
|
|
68
|
+
this.skipFileWritingForLocal = {};
|
|
69
|
+
this.nodeModulesCopied = false;
|
|
70
|
+
this.spinner = null;
|
|
71
|
+
this.sendDeletedEventToServerDebounce = this.debounce(this.sendDeletedEventToServerInternal, 500);
|
|
72
|
+
}
|
|
73
|
+
async start() {
|
|
74
|
+
if (!fs.existsSync(this.C.localClientPath + '.js')) {
|
|
75
|
+
this.printNotesToProvideLocalClient();
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
this.spinner = this.createSpinner();
|
|
79
|
+
this.config = require(this.C.localClientPath)();
|
|
80
|
+
await this.printNotes();
|
|
81
|
+
this.removeEmptyDirsSync(path.join(__dirname, this.C.src));
|
|
82
|
+
await this.createLCProjectDirectory();
|
|
83
|
+
setTimeout(this.startWatch.bind(this), 100);
|
|
84
|
+
await this.connectToServerViaWS();
|
|
85
|
+
console.log(`Open in IDE : ${this.projectDirectory}`);
|
|
86
|
+
}
|
|
87
|
+
async printNotes() {
|
|
88
|
+
console.log('\x1b[38;2;255;165;0m');
|
|
89
|
+
console.log('—————————————————————————————— Note ——————————————————————————————');
|
|
90
|
+
console.log(' Local client will push your local changes to API Maker server.');
|
|
91
|
+
console.log(' If you have any changes on server, they will be overridden.');
|
|
92
|
+
console.log('——————————————————————————————————————————————————————————————————');
|
|
93
|
+
console.log('\x1b[0m');
|
|
94
|
+
console.log('');
|
|
95
|
+
}
|
|
96
|
+
printNotesToProvideLocalClient() {
|
|
97
|
+
console.log('\x1b[38;2;255;165;0m');
|
|
98
|
+
console.log(` Please provide settings in : ${this.C.localClientPath}.js`);
|
|
99
|
+
console.log('\x1b[0m');
|
|
100
|
+
console.log('');
|
|
101
|
+
}
|
|
102
|
+
createSpinner() {
|
|
103
|
+
const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
104
|
+
let i = 0;
|
|
105
|
+
let timer = null;
|
|
106
|
+
const classThis = this;
|
|
107
|
+
return {
|
|
108
|
+
start(label = 'Syncing..') {
|
|
109
|
+
if (timer)
|
|
110
|
+
return;
|
|
111
|
+
timer = setInterval(() => {
|
|
112
|
+
process.stdout.write(`\r${frames[i++ % frames.length]} ${label}`);
|
|
113
|
+
}, 100);
|
|
114
|
+
},
|
|
115
|
+
stop(finalMessage = 'Sync') {
|
|
116
|
+
if (timer) {
|
|
117
|
+
clearInterval(timer);
|
|
118
|
+
timer = null;
|
|
119
|
+
if (finalMessage)
|
|
120
|
+
process.stdout.write(`\r[${classThis.getCurrentTime()}] : ${finalMessage}\n`);
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
async createLCProjectDirectory() {
|
|
126
|
+
const mainFolder = path.basename(__dirname);
|
|
127
|
+
const createFolder = path.join(__dirname, '..', `${mainFolder}-lc`);
|
|
128
|
+
this.projectDirectory = createFolder;
|
|
129
|
+
fs.rmSync(createFolder, {
|
|
130
|
+
recursive: true,
|
|
131
|
+
force: true,
|
|
132
|
+
});
|
|
133
|
+
await fs.promises.mkdir(createFolder, { recursive: true });
|
|
134
|
+
}
|
|
135
|
+
async copyFilesToProjectDir(performNpmInstall) {
|
|
136
|
+
await this.createLCProjectDirectory();
|
|
137
|
+
// Create src folder
|
|
138
|
+
fs.mkdirSync(path.join(this.projectDirectory, this.C.src), { recursive: true });
|
|
139
|
+
// Copy package.json file
|
|
140
|
+
fs.cpSync(path.join(__dirname, 'package.json'), path.join(this.projectDirectory, 'package.json'));
|
|
141
|
+
// Copy .gitignore file
|
|
142
|
+
fs.cpSync(path.join(__dirname, '.gitignore'), path.join(this.projectDirectory, '.gitignore'));
|
|
143
|
+
// Copy tsconfig.json file
|
|
144
|
+
const tsConfigReadPath = path.join(__dirname, 'tsconfig.json');
|
|
145
|
+
const tsConfigObj = JSON.parse(await fs.promises.readFile(tsConfigReadPath, { encoding: 'utf8' }));
|
|
146
|
+
tsConfigObj.compilerOptions.baseUrl = './src';
|
|
147
|
+
tsConfigObj.compilerOptions.paths['*'].push('*');
|
|
148
|
+
await fs.promises.writeFile(path.join(this.projectDirectory, 'tsconfig.json'), JSON.stringify(tsConfigObj, null, 4), { encoding: 'utf8' });
|
|
149
|
+
// Copy am-types
|
|
150
|
+
await fs.promises.cp(path.join(__dirname, this.C.amTypes), path.join(this.projectDirectory, this.C.src, this.C.amTypes), { recursive: true });
|
|
151
|
+
// Copy db-interfaces
|
|
152
|
+
await fs.promises.cp(path.join(__dirname, this.C.src, this.config.adminUserPath, this.C.types, this.C.dbInterfacesFile), path.join(this.projectDirectory, this.C.src, this.C.amTypes, this.C.dbInterfacesFile), { recursive: true });
|
|
153
|
+
await this.copyUtilityClassesToAnotherDir();
|
|
154
|
+
await this.copyCustomApisToAnotherDir();
|
|
155
|
+
await this.copySchedulersToAnotherDir();
|
|
156
|
+
await this.copySchemasToAnotherDir();
|
|
157
|
+
await this.copyDBMigrationsToAnotherDir();
|
|
158
|
+
await this.copyProcessInitializersToAnotherDir();
|
|
159
|
+
await this.copyI18NToAnotherDir();
|
|
160
|
+
await this.copyTestCasesToAnotherDir();
|
|
161
|
+
await this.copyThirdPartyApisToAnotherDir();
|
|
162
|
+
await this.copyEventsToAnotherDir();
|
|
163
|
+
await this.copyInstanceApiHooksToAnotherDir();
|
|
164
|
+
await this.copySystemApiHooksToAnotherDir();
|
|
165
|
+
await this.copyWebSocketEventsToAnotherDir();
|
|
166
|
+
await this.copyCollectionHooksToAnotherDir();
|
|
167
|
+
await this.copyDatabaseHooksToAnotherDir();
|
|
168
|
+
await this.copyInstanceHooksToAnotherDir();
|
|
169
|
+
await this.copyDBMastersToAnotherDir();
|
|
170
|
+
await this.copyDBMasterStylesToAnotherDir();
|
|
171
|
+
await this.copyDBMasterUtilsToAnotherDir();
|
|
172
|
+
if (performNpmInstall)
|
|
173
|
+
await this.executeNpmRun('npm', ['install', '--force']);
|
|
174
|
+
fs.symlinkSync(path.join(__dirname, 'node_modules'), path.join(this.projectDirectory, 'node_modules'), 'dir'); // link "node_modules" directory
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* src/admin/Utility classes/utils - aws-s3-bucket - 1.0.0 - -- S3BucketUtility/utils - aws-s3-bucket - 1.0.0 - -- S3BucketUtility.yaml
|
|
178
|
+
* src/admin/Utility classes/utils - -- GeneralUtils/utils - -- GeneralUtils.yaml
|
|
179
|
+
* src/admin/Utility classes/utils - -- GeneralUtils/versions/-1/Original.ts
|
|
180
|
+
* src/admin/Utility classes/utils - -- GeneralUtils/versions/1.0.0/Second Utils.ts
|
|
181
|
+
*/
|
|
182
|
+
async copyUtilityClassesToAnotherDir() {
|
|
183
|
+
const readFolderName = this.C.UtilityClassesReadF;
|
|
184
|
+
const utilsBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
185
|
+
const utils = await this.readDirCustom(utilsBasePath, null);
|
|
186
|
+
for (const utilName of utils) {
|
|
187
|
+
const utilConfigPath = path.join(utilsBasePath, utilName, `${utilName}.yaml`);
|
|
188
|
+
if (!fs.existsSync(utilConfigPath))
|
|
189
|
+
continue;
|
|
190
|
+
const utilConfigContent = await fs.promises.readFile(utilConfigPath, { encoding: 'utf8' });
|
|
191
|
+
const utilsConfig = await this.parseYaml(utilConfigContent);
|
|
192
|
+
for (const version of utilsConfig.versions || []) {
|
|
193
|
+
if (version.isActive === true) {
|
|
194
|
+
const codeFilePath = path.join(utilsBasePath, utilName, this.C.versions, version.version, `${version.name}.ts`);
|
|
195
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, utilsConfig.folderPath, `${utilsConfig.name}.ts`);
|
|
196
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
197
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* src/admin/Custom APIs/Hello World/Hello World.yaml
|
|
204
|
+
* src/admin/Custom APIs/Hello World/Hello World.config.ts
|
|
205
|
+
* src/admin/Custom APIs/Hello World/versions/-1/Original.ts
|
|
206
|
+
* src/admin/Custom APIs/Hello World/versions/1.0.0/Second Version.ts
|
|
207
|
+
* src/admin/Custom APIs/Hello World/versions/1.0.0/pre-hooks/Hello world pre hook 1.ts
|
|
208
|
+
* src/admin/Custom APIs/Hello World/versions/1.0.0/post-hooks/Hello world post hook 1.ts
|
|
209
|
+
*/
|
|
210
|
+
async copyCustomApisToAnotherDir() {
|
|
211
|
+
const readFolderName = this.C.CustomApiReadF;
|
|
212
|
+
const writeFolderName = this.C.CustomApisWriteF;
|
|
213
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
214
|
+
const itemFolderNames = await this.readDirCustom(itemBasePath, null);
|
|
215
|
+
for (const itemFolderName of itemFolderNames) {
|
|
216
|
+
const itemConfigPath = path.join(itemBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
217
|
+
if (!fs.existsSync(itemConfigPath))
|
|
218
|
+
continue;
|
|
219
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
220
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
221
|
+
for (const version of itemConfig.versions || []) {
|
|
222
|
+
if (version.isActive === true) {
|
|
223
|
+
// Write code file
|
|
224
|
+
const versionBasePath = path.join(itemBasePath, itemFolderName, this.C.versions, version.version);
|
|
225
|
+
const codeFilePath = path.join(versionBasePath, `${version.name}.ts`);
|
|
226
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, itemConfig.path, `${itemConfig.name}.ts`);
|
|
227
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
228
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
229
|
+
// Write config file
|
|
230
|
+
const configFilePath = path.join(itemBasePath, itemFolderName, `${itemFolderName}.config.ts`);
|
|
231
|
+
const targetConfigFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, itemConfig.path, `${itemConfig.name}.config.ts`);
|
|
232
|
+
await fs.promises.link(configFilePath, targetConfigFilePath);
|
|
233
|
+
// Write pre hooks
|
|
234
|
+
for (const hookObj of version.preHooks) {
|
|
235
|
+
// Write code file
|
|
236
|
+
const codeFilePathHook = path.join(versionBasePath, this.C.preHooks, `${hookObj.name}.ts`);
|
|
237
|
+
const targetFilePathHook = path.join(this.projectDirectory, this.C.src, writeFolderName, itemConfig.path, this.C.preHooks, `${hookObj.name}.ts`);
|
|
238
|
+
await fs.promises.mkdir(path.dirname(targetFilePathHook), { recursive: true });
|
|
239
|
+
await fs.promises.link(codeFilePathHook, targetFilePathHook);
|
|
240
|
+
}
|
|
241
|
+
// Write post hooks
|
|
242
|
+
for (const hookObj of version.postHooks) {
|
|
243
|
+
// Write code file
|
|
244
|
+
const codeFilePathHook = path.join(versionBasePath, this.C.postHooks, `${hookObj.name}.ts`);
|
|
245
|
+
const targetFilePathHook = path.join(this.projectDirectory, this.C.src, writeFolderName, itemConfig.path, this.C.postHooks, `${hookObj.name}.ts`);
|
|
246
|
+
await fs.promises.mkdir(path.dirname(targetFilePathHook), { recursive: true });
|
|
247
|
+
await fs.promises.link(codeFilePathHook, targetFilePathHook);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* src/admin/Schedulers/Scheduler 1/Scheduler 1.yaml
|
|
255
|
+
* src/admin/Schedulers/Scheduler 1/versions/-1/Original.ts
|
|
256
|
+
*/
|
|
257
|
+
async copySchedulersToAnotherDir() {
|
|
258
|
+
const readFolderName = this.C.SchedulersReadF;
|
|
259
|
+
const writeFolderName = this.C.SchedulersWriteF;
|
|
260
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
261
|
+
const itemFolderNames = await this.readDirCustom(itemBasePath, null);
|
|
262
|
+
for (const itemFolderName of itemFolderNames) {
|
|
263
|
+
const itemConfigPath = path.join(itemBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
264
|
+
if (!fs.existsSync(itemConfigPath))
|
|
265
|
+
continue;
|
|
266
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
267
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
268
|
+
for (const version of itemConfig.versions || []) {
|
|
269
|
+
if (version.isActive === true) {
|
|
270
|
+
// Write code file
|
|
271
|
+
const codeFilePath = path.join(itemBasePath, itemFolderName, this.C.versions, version.version, `${version.name}.ts`);
|
|
272
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, `${itemConfig.name}.ts`);
|
|
273
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
274
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* src/admin/Schemas/mongodb -- test -- default/default.config.ts
|
|
281
|
+
* src/admin/Schemas/mongodb -- test -- default/mongodb -- test -- default.yaml
|
|
282
|
+
*/
|
|
283
|
+
async copySchemasToAnotherDir() {
|
|
284
|
+
const readFolderName = this.C.SchemaReadF;
|
|
285
|
+
const writeFolderName = this.C.SchemaWriteF;
|
|
286
|
+
const schemaBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
287
|
+
const itemFolderNames = await this.readDirCustom(schemaBasePath, null);
|
|
288
|
+
for (const itemFolderName of itemFolderNames) {
|
|
289
|
+
const itemConfigPath = path.join(schemaBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
290
|
+
if (!fs.existsSync(itemConfigPath))
|
|
291
|
+
continue;
|
|
292
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
293
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
294
|
+
const insAndDBFolderPath = path.join(this.projectDirectory, this.C.src, writeFolderName, itemConfig.instanceName, itemConfig.databaseName);
|
|
295
|
+
await fs.promises.mkdir(insAndDBFolderPath, { recursive: true });
|
|
296
|
+
const collectionReadPath = path.join(schemaBasePath, itemFolderName, `${itemConfig.collectionName}.config.ts`);
|
|
297
|
+
const collectionWritePath = path.join(insAndDBFolderPath, `${itemConfig.collectionName}.config.ts`);
|
|
298
|
+
await fs.promises.link(collectionReadPath, collectionWritePath);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* src/admin/Database migrations/Migration 1/Migration 1.ts
|
|
303
|
+
* src/admin/Database migrations/Migration 1/Migration 1.yaml
|
|
304
|
+
*/
|
|
305
|
+
async copyDBMigrationsToAnotherDir() {
|
|
306
|
+
const readFolderName = this.C.DBMigrationsReadF;
|
|
307
|
+
const writeFolderName = this.C.DBMigrationsWriteF;
|
|
308
|
+
const schemaBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
309
|
+
const itemFolderNames = await this.readDirCustom(schemaBasePath, null);
|
|
310
|
+
for (const itemFolderName of itemFolderNames) {
|
|
311
|
+
const itemConfigPath = path.join(schemaBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
312
|
+
if (!fs.existsSync(itemConfigPath))
|
|
313
|
+
continue;
|
|
314
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
315
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
316
|
+
const migrationFolderPath = path.join(this.projectDirectory, this.C.src, writeFolderName);
|
|
317
|
+
await fs.promises.mkdir(migrationFolderPath, { recursive: true });
|
|
318
|
+
const migrationReadPath = path.join(schemaBasePath, itemFolderName, `${itemConfig.name}.ts`);
|
|
319
|
+
const migrationWritePath = path.join(migrationFolderPath, `${itemConfig.name}.ts`);
|
|
320
|
+
await fs.promises.link(migrationReadPath, migrationWritePath);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* src/admin/Database migrations/Migration 1/Migration 1.ts
|
|
325
|
+
* src/admin/Database migrations/Migration 1/Migration 1.yaml
|
|
326
|
+
*/
|
|
327
|
+
async copyProcessInitializersToAnotherDir() {
|
|
328
|
+
const readFolderName = this.C.ProcessInitializersReadF;
|
|
329
|
+
const writeFolderName = this.C.ProcessInitializersWriteF;
|
|
330
|
+
const schemaBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
331
|
+
const itemFolderNames = await this.readDirCustom(schemaBasePath, null);
|
|
332
|
+
for (const itemFolderName of itemFolderNames) {
|
|
333
|
+
const itemConfigPath = path.join(schemaBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
334
|
+
if (!fs.existsSync(itemConfigPath))
|
|
335
|
+
continue;
|
|
336
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
337
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
338
|
+
const piFolderPath = path.join(this.projectDirectory, this.C.src, writeFolderName);
|
|
339
|
+
await fs.promises.mkdir(piFolderPath, { recursive: true });
|
|
340
|
+
const piReadPath = path.join(schemaBasePath, itemFolderName, `${itemConfig.name}.ts`);
|
|
341
|
+
const piWritePath = path.join(piFolderPath, `${itemConfig.name}.ts`);
|
|
342
|
+
await fs.promises.link(piReadPath, piWritePath);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* src/admin/Database migrations/Migration 1/Migration 1.ts
|
|
347
|
+
* src/admin/Database migrations/Migration 1/Migration 1.yaml
|
|
348
|
+
*/
|
|
349
|
+
async copyI18NToAnotherDir() {
|
|
350
|
+
const readFolderName = this.C.ProcessI18NReadF;
|
|
351
|
+
const writeFolderName = this.C.ProcessI18NWriteF;
|
|
352
|
+
const schemaBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
353
|
+
const itemFolderNames = await this.readDirCustom(schemaBasePath, null);
|
|
354
|
+
for (const itemFolderName of itemFolderNames) {
|
|
355
|
+
const itemConfigPath = path.join(schemaBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
356
|
+
if (!fs.existsSync(itemConfigPath))
|
|
357
|
+
continue;
|
|
358
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
359
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
360
|
+
const piFolderPath = path.join(this.projectDirectory, this.C.src, writeFolderName);
|
|
361
|
+
await fs.promises.mkdir(piFolderPath, { recursive: true });
|
|
362
|
+
const piReadPath = path.join(schemaBasePath, itemFolderName, `${itemConfig.name}.ts`);
|
|
363
|
+
const piWritePath = path.join(piFolderPath, `${itemConfig.name}.ts`);
|
|
364
|
+
await fs.promises.link(piReadPath, piWritePath);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* src/admin/DB masters/ui_page_1/ui_page_1.config.ts
|
|
369
|
+
* src/admin/DB masters/ui_page_1/ui_page_1.yaml
|
|
370
|
+
* src/admin/DB masters/ui_page_1/ui_page_1.ts
|
|
371
|
+
*/
|
|
372
|
+
async copyDBMastersToAnotherDir() {
|
|
373
|
+
const readFolderName = this.C.DBMastersReadF;
|
|
374
|
+
const writeFolderName = this.C.DBMastersWriteF;
|
|
375
|
+
const schemaBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
376
|
+
const itemFolderNames = await this.readDirCustom(schemaBasePath, null);
|
|
377
|
+
for (const itemFolderName of itemFolderNames) {
|
|
378
|
+
const itemConfigPath = path.join(schemaBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
379
|
+
if (!fs.existsSync(itemConfigPath))
|
|
380
|
+
continue;
|
|
381
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
382
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
383
|
+
const dbMasterFolderPath = path.join(this.projectDirectory, this.C.src, writeFolderName, itemConfig.name);
|
|
384
|
+
await fs.promises.mkdir(dbMasterFolderPath, { recursive: true });
|
|
385
|
+
// Write code file
|
|
386
|
+
const dbMasterReadPath = path.join(schemaBasePath, itemFolderName, `${itemConfig.name}.ts`);
|
|
387
|
+
const dbMasterWritePath = path.join(dbMasterFolderPath, `${itemConfig.name}.ts`);
|
|
388
|
+
await fs.promises.link(dbMasterReadPath, dbMasterWritePath);
|
|
389
|
+
// Write config file
|
|
390
|
+
const dbMasterConfigReadPath = path.join(schemaBasePath, itemFolderName, `${itemConfig.name}.config.ts`);
|
|
391
|
+
const dbMasterConfigWritePath = path.join(dbMasterFolderPath, `${itemConfig.name}.config.ts`);
|
|
392
|
+
await fs.promises.link(dbMasterConfigReadPath, dbMasterConfigWritePath);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* src/admin/UI maker styles/Style 1/Style 1.css
|
|
397
|
+
* src/admin/UI maker styles/Style 1/Style 1.yaml
|
|
398
|
+
*/
|
|
399
|
+
async copyDBMasterStylesToAnotherDir() {
|
|
400
|
+
const readFolderName = this.C.DBMasterStylesReadF;
|
|
401
|
+
const writeFolderName = this.C.DBMasterStylesWriteF;
|
|
402
|
+
const schemaBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
403
|
+
const itemFolderNames = await this.readDirCustom(schemaBasePath, null);
|
|
404
|
+
for (const itemFolderName of itemFolderNames) {
|
|
405
|
+
const itemConfigPath = path.join(schemaBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
406
|
+
if (!fs.existsSync(itemConfigPath))
|
|
407
|
+
continue;
|
|
408
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
409
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
410
|
+
const dbMasterFolderPath = path.join(this.projectDirectory, this.C.src, writeFolderName);
|
|
411
|
+
await fs.promises.mkdir(dbMasterFolderPath, { recursive: true });
|
|
412
|
+
// Write code file
|
|
413
|
+
const dbMasterReadPath = path.join(schemaBasePath, itemFolderName, `${itemConfig.name}.css`);
|
|
414
|
+
const dbMasterWritePath = path.join(dbMasterFolderPath, `${itemConfig.name}.css`);
|
|
415
|
+
await fs.promises.link(dbMasterReadPath, dbMasterWritePath);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* src/admin/DB master utils/Utility 1/Utility 1.ts
|
|
420
|
+
* src/admin/DB master utils/Utility 1/Utility 1.yaml
|
|
421
|
+
*/
|
|
422
|
+
async copyDBMasterUtilsToAnotherDir() {
|
|
423
|
+
const readFolderName = this.C.DBMasterUtilsReadF;
|
|
424
|
+
const writeFolderName = this.C.DBMasterUtilsWriteF;
|
|
425
|
+
const schemaBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
426
|
+
const itemFolderNames = await this.readDirCustom(schemaBasePath, null);
|
|
427
|
+
for (const itemFolderName of itemFolderNames) {
|
|
428
|
+
const itemConfigPath = path.join(schemaBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
429
|
+
if (!fs.existsSync(itemConfigPath))
|
|
430
|
+
continue;
|
|
431
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
432
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
433
|
+
const dbMasterFolderPath = path.join(this.projectDirectory, this.C.src, writeFolderName);
|
|
434
|
+
await fs.promises.mkdir(dbMasterFolderPath, { recursive: true });
|
|
435
|
+
// Write code file
|
|
436
|
+
const dbMasterReadPath = path.join(schemaBasePath, itemFolderName, `${itemConfig.name}.ts`);
|
|
437
|
+
const dbMasterWritePath = path.join(dbMasterFolderPath, `${itemConfig.name}.ts`);
|
|
438
|
+
await fs.promises.link(dbMasterReadPath, dbMasterWritePath);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* src/admin/Test cases/test1/test1.ts
|
|
443
|
+
* src/admin/Test cases/test1/test1.yaml
|
|
444
|
+
*/
|
|
445
|
+
async copyTestCasesToAnotherDir() {
|
|
446
|
+
const readFolderName = this.C.TestCasesReadF;
|
|
447
|
+
const writeFolderName = this.C.TestCasesWriteF;
|
|
448
|
+
const schemaBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
449
|
+
const itemFolderNames = await this.readDirCustom(schemaBasePath, null);
|
|
450
|
+
for (const itemFolderName of itemFolderNames) {
|
|
451
|
+
const itemConfigPath = path.join(schemaBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
452
|
+
if (!fs.existsSync(itemConfigPath))
|
|
453
|
+
continue;
|
|
454
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
455
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
456
|
+
const piFolderPath = path.join(this.projectDirectory, this.C.src, writeFolderName);
|
|
457
|
+
await fs.promises.mkdir(piFolderPath, { recursive: true });
|
|
458
|
+
const piReadPath = path.join(schemaBasePath, itemFolderName, `${itemConfig.name}.ts`);
|
|
459
|
+
const piWritePath = path.join(piFolderPath, `${itemConfig.name}.ts`);
|
|
460
|
+
await fs.promises.link(piReadPath, piWritePath);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* src/admin/Third party APIs/ftp-utility -- 1.0.0/apis/Append File/Append File.yaml
|
|
465
|
+
* src/admin/Third party APIs/ftp-utility -- 1.0.0/apis/Append File/Append File.config.ts
|
|
466
|
+
* src/admin/Third party APIs/ftp-utility -- 1.0.0/apis/Append File/versions/-1/Original.ts
|
|
467
|
+
*
|
|
468
|
+
* src/admin/Third party APIs/aws-s3-bucket -- 1.0.0/apis/Delete File/versions/-1/pre-hooks/delete file pre hook 1.ts
|
|
469
|
+
* src/admin/Third party APIs/aws-s3-bucket -- 1.0.0/apis/Delete File/versions/-1/post-hooks/delete file post hook 1.ts
|
|
470
|
+
*/
|
|
471
|
+
async copyThirdPartyApisToAnotherDir() {
|
|
472
|
+
const readFolderName = this.C.ThirdPartyApiReadF;
|
|
473
|
+
const writeFolderName = this.C.ThirdPartyApiWriteF;
|
|
474
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
475
|
+
if (!fs.existsSync(itemBasePath))
|
|
476
|
+
return;
|
|
477
|
+
const bundleNames = await this.readDirCustom(itemBasePath, null);
|
|
478
|
+
for (const bundleName of bundleNames) {
|
|
479
|
+
const itemBasePathApis = path.join(itemBasePath, bundleName, this.C.apis);
|
|
480
|
+
const apiNames = await this.readDirCustom(itemBasePathApis, null);
|
|
481
|
+
for (const apiName of apiNames) {
|
|
482
|
+
const itemConfigPath = path.join(itemBasePathApis, apiName, `${apiName}.yaml`);
|
|
483
|
+
if (!fs.existsSync(itemConfigPath))
|
|
484
|
+
continue;
|
|
485
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
486
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
487
|
+
for (const version of itemConfig.versions || []) {
|
|
488
|
+
if (version.isActive === true) {
|
|
489
|
+
// Write code file
|
|
490
|
+
const versionBasePath = path.join(itemBasePathApis, apiName, this.C.versions, version.version);
|
|
491
|
+
const codeFilePath = path.join(versionBasePath, `${version.name}.ts`);
|
|
492
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, bundleName, itemConfig.path, `${itemConfig.name}.ts`);
|
|
493
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
494
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
495
|
+
// Write config file
|
|
496
|
+
const configFilePath = path.join(itemBasePathApis, apiName, `${apiName}.config.ts`);
|
|
497
|
+
const targetConfigFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, bundleName, itemConfig.path, `${itemConfig.name}.config.ts`);
|
|
498
|
+
await fs.promises.link(configFilePath, targetConfigFilePath);
|
|
499
|
+
// Write pre hooks
|
|
500
|
+
for (const hookObj of version.preHooks) {
|
|
501
|
+
// Write code file
|
|
502
|
+
const codeFilePathHook = path.join(versionBasePath, this.C.preHooks, `${hookObj.name}.ts`);
|
|
503
|
+
const targetFilePathHook = path.join(this.projectDirectory, this.C.src, writeFolderName, bundleName, itemConfig.path, this.C.preHooks, `${hookObj.name}.ts`);
|
|
504
|
+
await fs.promises.mkdir(path.dirname(targetFilePathHook), { recursive: true });
|
|
505
|
+
await fs.promises.link(codeFilePathHook, targetFilePathHook);
|
|
506
|
+
}
|
|
507
|
+
// Write post hooks
|
|
508
|
+
for (const hookObj of version.postHooks) {
|
|
509
|
+
// Write code file
|
|
510
|
+
const codeFilePathHook = path.join(versionBasePath, this.C.postHooks, `${hookObj.name}.ts`);
|
|
511
|
+
const targetFilePathHook = path.join(this.projectDirectory, this.C.src, writeFolderName, bundleName, itemConfig.path, this.C.postHooks, `${hookObj.name}.ts`);
|
|
512
|
+
await fs.promises.mkdir(path.dirname(targetFilePathHook), { recursive: true });
|
|
513
|
+
await fs.promises.link(codeFilePathHook, targetFilePathHook);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* src/admin/Events/test - event/test - event.yaml
|
|
522
|
+
* src/admin/Events/test - event/listeners/One/versions/1.0.0/1.0.0.ts
|
|
523
|
+
*/
|
|
524
|
+
async copyEventsToAnotherDir() {
|
|
525
|
+
const readFolderName = this.C.EventsReadF;
|
|
526
|
+
const writeFolderName = this.C.EventsWriteF;
|
|
527
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
528
|
+
const eventNames = await this.readDirCustom(itemBasePath, null);
|
|
529
|
+
for (const eventName of eventNames) {
|
|
530
|
+
const itemConfigPath = path.join(itemBasePath, eventName, `${eventName}.yaml`);
|
|
531
|
+
if (!fs.existsSync(itemConfigPath))
|
|
532
|
+
continue;
|
|
533
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
534
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
535
|
+
const eventListenersPath = path.join(itemBasePath, eventName, this.C.listeners);
|
|
536
|
+
for (const eventListenerObj of itemConfig.eventListeners) {
|
|
537
|
+
for (const version of eventListenerObj.versions || []) {
|
|
538
|
+
if (version.isActive === true) {
|
|
539
|
+
// Write code file
|
|
540
|
+
const codeFilePath = path.join(eventListenersPath, eventListenerObj.name, this.C.versions, version.version, `${version.name}.ts`);
|
|
541
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, itemConfig.name, `${eventListenerObj.name}.ts`);
|
|
542
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
543
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* src/admin/Instance API hooks/mongodb -- test -- default -- GEN_GET_ALL/mongodb -- test -- default -- GEN_GET_ALL.yaml
|
|
551
|
+
* src/admin/Instance API hooks/mongodb -- test -- default -- GEN_GET_ALL/pre-hooks/Hook 1.ts
|
|
552
|
+
* src/admin/Instance API hooks/mongodb -- test -- default -- GEN_GET_ALL/post-hooks/Post hook 1.ts
|
|
553
|
+
*/
|
|
554
|
+
async copyInstanceApiHooksToAnotherDir() {
|
|
555
|
+
const readFolderName = this.C.InstanceApiHooksReadF;
|
|
556
|
+
const writeFolderName = this.C.InstanceApiHooksWriteF;
|
|
557
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
558
|
+
const hookNames = await this.readDirCustom(itemBasePath, null);
|
|
559
|
+
for (const hookName of hookNames) {
|
|
560
|
+
const itemConfigPath = path.join(itemBasePath, hookName, `${hookName}.yaml`);
|
|
561
|
+
if (!fs.existsSync(itemConfigPath))
|
|
562
|
+
continue;
|
|
563
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
564
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
565
|
+
const apiNamePath = path.join(itemBasePath, hookName);
|
|
566
|
+
const newFileName = `${itemConfig.instanceName}/${itemConfig.databaseName}/${itemConfig.collectionName}/${itemConfig.apiId.toLowerCase()}`;
|
|
567
|
+
for (const hookObj of itemConfig.preHooks) {
|
|
568
|
+
// Write code file
|
|
569
|
+
const codeFilePath = path.join(apiNamePath, this.C.preHooks, `${hookObj.name}.ts`);
|
|
570
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.preHooks, `${hookObj.name}.ts`);
|
|
571
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
572
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
573
|
+
}
|
|
574
|
+
for (const hookObj of itemConfig.postHooks) {
|
|
575
|
+
// Write code file
|
|
576
|
+
const codeFilePath = path.join(apiNamePath, this.C.postHooks, `${hookObj.name}.ts`);
|
|
577
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.postHooks, `${hookObj.name}.ts`);
|
|
578
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
579
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* src/admin/System API hooks/ENCRYPT_DATA/ENCRYPT_DATA.yaml
|
|
585
|
+
* src/admin/System API hooks/ENCRYPT_DATA/pre-hooks/System api pre hook 1.ts
|
|
586
|
+
* src/admin/System API hooks/ENCRYPT_DATA/post-hooks/System api post hook 1.ts
|
|
587
|
+
*/
|
|
588
|
+
async copySystemApiHooksToAnotherDir() {
|
|
589
|
+
const readFolderName = this.C.SystemApiHooksReadF;
|
|
590
|
+
const writeFolderName = this.C.SystemApiHooksWriteF;
|
|
591
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
592
|
+
const hookNames = await this.readDirCustom(itemBasePath, null);
|
|
593
|
+
for (const hookName of hookNames) {
|
|
594
|
+
const itemConfigPath = path.join(itemBasePath, hookName, `${hookName}.yaml`);
|
|
595
|
+
if (!fs.existsSync(itemConfigPath))
|
|
596
|
+
continue;
|
|
597
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
598
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
599
|
+
const apiNamePath = path.join(itemBasePath, hookName);
|
|
600
|
+
const newFileName = itemConfig.apiId.toLowerCase();
|
|
601
|
+
for (const hookObj of itemConfig.preHooks) {
|
|
602
|
+
// Write code file
|
|
603
|
+
const codeFilePath = path.join(apiNamePath, this.C.preHooks, `${hookObj.name}.ts`);
|
|
604
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.preHooks, `${hookObj.name}.ts`);
|
|
605
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
606
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
607
|
+
}
|
|
608
|
+
for (const hookObj of itemConfig.postHooks) {
|
|
609
|
+
// Write code file
|
|
610
|
+
const codeFilePath = path.join(apiNamePath, this.C.postHooks, `${hookObj.name}.ts`);
|
|
611
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.postHooks, `${hookObj.name}.ts`);
|
|
612
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
613
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* src/admin/WebSocket events/Custom APIs -- Hello World/versions/-1/Original.ts
|
|
619
|
+
* src/admin/WebSocket events/Custom APIs -- Hello World/Custom APIs -- Hello World.yaml
|
|
620
|
+
*/
|
|
621
|
+
async copyWebSocketEventsToAnotherDir() {
|
|
622
|
+
const readFolderName = this.C.WebSocketEventsReadF;
|
|
623
|
+
const writeFolderName = this.C.WebSocketEventsWriteF;
|
|
624
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
625
|
+
const itemFolderNames = await this.readDirCustom(itemBasePath, null);
|
|
626
|
+
for (const itemFolderName of itemFolderNames) {
|
|
627
|
+
const itemConfigPath = path.join(itemBasePath, itemFolderName, `${itemFolderName}.yaml`);
|
|
628
|
+
if (!fs.existsSync(itemConfigPath))
|
|
629
|
+
continue;
|
|
630
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
631
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
632
|
+
for (const version of itemConfig.versions || []) {
|
|
633
|
+
if (version.isActive === true) {
|
|
634
|
+
const codeFilePath = path.join(itemBasePath, itemFolderName, this.C.versions, version.version, `${version.name}.ts`);
|
|
635
|
+
let newFileName = '';
|
|
636
|
+
let category = '';
|
|
637
|
+
if (itemConfig.apiCategory === EAPICategory.INSTANCES) {
|
|
638
|
+
category = 'instances';
|
|
639
|
+
newFileName = `${itemConfig.instanceName}/${itemConfig.databaseName}/${itemConfig.collectionName}/${itemConfig.instanceApiName.toLowerCase()}`;
|
|
640
|
+
}
|
|
641
|
+
else if (itemConfig.apiCategory === EAPICategory.THIRD_PARTY_APIS) {
|
|
642
|
+
category = 'third-party-apis';
|
|
643
|
+
newFileName = `${itemConfig.tpInstalledApiBundleName}/${itemConfig.tpInstalledApiName}`;
|
|
644
|
+
}
|
|
645
|
+
else if (itemConfig.apiCategory === EAPICategory.CUSTOM_APIS) {
|
|
646
|
+
category = 'custom-apis';
|
|
647
|
+
newFileName = itemConfig.customApiName;
|
|
648
|
+
}
|
|
649
|
+
else if (itemConfig.apiCategory === EAPICategory.SYSTEM_APIS) {
|
|
650
|
+
category = 'system-apis';
|
|
651
|
+
newFileName = itemConfig.systemApiName.toLowerCase();
|
|
652
|
+
}
|
|
653
|
+
else if (itemConfig.apiCategory === EAPICategory.WEB_SOCKET_EVENT) {
|
|
654
|
+
category = 'ws-events';
|
|
655
|
+
newFileName = itemConfig.name;
|
|
656
|
+
}
|
|
657
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, category, `${newFileName}.ts`);
|
|
658
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
659
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
/**
|
|
665
|
+
* src/admin/Collection hooks/mongodb -- test -- default/mongodb -- test -- default.yaml
|
|
666
|
+
* src/admin/Collection hooks/mongodb -- test -- default/post-hooks/collection post hook 1.ts
|
|
667
|
+
* src/admin/Collection hooks/mongodb -- test -- default/pre-hooks/collection pre hook 1.ts
|
|
668
|
+
*/
|
|
669
|
+
async copyCollectionHooksToAnotherDir() {
|
|
670
|
+
const readFolderName = this.C.CollectionHooksReadF;
|
|
671
|
+
const writeFolderName = this.C.CollectionHooksWriteF;
|
|
672
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
673
|
+
const hookNames = await this.readDirCustom(itemBasePath, null);
|
|
674
|
+
for (const hookName of hookNames) {
|
|
675
|
+
const itemConfigPath = path.join(itemBasePath, hookName, `${hookName}.yaml`);
|
|
676
|
+
if (!fs.existsSync(itemConfigPath))
|
|
677
|
+
continue;
|
|
678
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
679
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
680
|
+
const apiNamePath = path.join(itemBasePath, hookName);
|
|
681
|
+
const newFileName = `${itemConfig.instanceName}/${itemConfig.databaseName}/${itemConfig.collectionName}`;
|
|
682
|
+
for (const hookObj of itemConfig.preHooks) {
|
|
683
|
+
// Write code file
|
|
684
|
+
const codeFilePath = path.join(apiNamePath, this.C.preHooks, `${hookObj.name}.ts`);
|
|
685
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.preHooks, `${hookObj.name}.ts`);
|
|
686
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
687
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
688
|
+
}
|
|
689
|
+
for (const hookObj of itemConfig.postHooks) {
|
|
690
|
+
// Write code file
|
|
691
|
+
const codeFilePath = path.join(apiNamePath, this.C.postHooks, `${hookObj.name}.ts`);
|
|
692
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.postHooks, `${hookObj.name}.ts`);
|
|
693
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
694
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
* src/admin/Database hooks/mongodb -- test/mongodb -- test.yaml
|
|
700
|
+
* src/admin/Database hooks/mongodb -- test/pre-hooks/database pre hook 1.ts
|
|
701
|
+
* src/admin/Database hooks/mongodb -- test/post-hooks/database post hook 1.ts
|
|
702
|
+
*/
|
|
703
|
+
async copyDatabaseHooksToAnotherDir() {
|
|
704
|
+
const readFolderName = this.C.DatabaseHooksReadF;
|
|
705
|
+
const writeFolderName = this.C.DatabaseHooksWriteF;
|
|
706
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
707
|
+
const hookNames = await this.readDirCustom(itemBasePath, null);
|
|
708
|
+
for (const hookName of hookNames) {
|
|
709
|
+
const itemConfigPath = path.join(itemBasePath, hookName, `${hookName}.yaml`);
|
|
710
|
+
if (!fs.existsSync(itemConfigPath))
|
|
711
|
+
continue;
|
|
712
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
713
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
714
|
+
const apiNamePath = path.join(itemBasePath, hookName);
|
|
715
|
+
const newFileName = `${itemConfig.instanceName}/${itemConfig.databaseName}`;
|
|
716
|
+
for (const hookObj of itemConfig.preHooks) {
|
|
717
|
+
// Write code file
|
|
718
|
+
const codeFilePath = path.join(apiNamePath, this.C.preHooks, `${hookObj.name}.ts`);
|
|
719
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.preHooks, `${hookObj.name}.ts`);
|
|
720
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
721
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
722
|
+
}
|
|
723
|
+
for (const hookObj of itemConfig.postHooks) {
|
|
724
|
+
// Write code file
|
|
725
|
+
const codeFilePath = path.join(apiNamePath, this.C.postHooks, `${hookObj.name}.ts`);
|
|
726
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.postHooks, `${hookObj.name}.ts`);
|
|
727
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
728
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* src/admin/Instance hooks/mongodb/mongodb.yaml
|
|
734
|
+
* src/admin/Instance hooks/mongodb/pre-hooks/Mongodb instance pre hook.ts
|
|
735
|
+
* src/admin/Instance hooks/mongodb/post-hooks/Mongo instance post hook 1.ts
|
|
736
|
+
*/
|
|
737
|
+
async copyInstanceHooksToAnotherDir() {
|
|
738
|
+
const readFolderName = this.C.InstanceHooksReadF;
|
|
739
|
+
const writeFolderName = this.C.InstanceHooksWriteF;
|
|
740
|
+
const itemBasePath = path.join(__dirname, this.C.src, this.config.adminUserPath, readFolderName);
|
|
741
|
+
const hookNames = await this.readDirCustom(itemBasePath, null);
|
|
742
|
+
for (const hookName of hookNames) {
|
|
743
|
+
const itemConfigPath = path.join(itemBasePath, hookName, `${hookName}.yaml`);
|
|
744
|
+
if (!fs.existsSync(itemConfigPath))
|
|
745
|
+
continue;
|
|
746
|
+
const itemConfigContent = await fs.promises.readFile(itemConfigPath, { encoding: 'utf8' });
|
|
747
|
+
const itemConfig = await this.parseYaml(itemConfigContent);
|
|
748
|
+
const apiNamePath = path.join(itemBasePath, hookName);
|
|
749
|
+
const newFileName = `${itemConfig.instanceName}`;
|
|
750
|
+
for (const hookObj of itemConfig.preHooks) {
|
|
751
|
+
// Write code file
|
|
752
|
+
const codeFilePath = path.join(apiNamePath, this.C.preHooks, `${hookObj.name}.ts`);
|
|
753
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.preHooks, `${hookObj.name}.ts`);
|
|
754
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
755
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
756
|
+
}
|
|
757
|
+
for (const hookObj of itemConfig.postHooks) {
|
|
758
|
+
// Write code file
|
|
759
|
+
const codeFilePath = path.join(apiNamePath, this.C.postHooks, `${hookObj.name}.ts`);
|
|
760
|
+
const targetFilePath = path.join(this.projectDirectory, this.C.src, writeFolderName, newFileName, this.C.postHooks, `${hookObj.name}.ts`);
|
|
761
|
+
await fs.promises.mkdir(path.dirname(targetFilePath), { recursive: true });
|
|
762
|
+
await fs.promises.link(codeFilePath, targetFilePath);
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
async executeNpmRun(command, args) {
|
|
767
|
+
return new Promise((resolve, reject) => {
|
|
768
|
+
const childProcess = (0, child_process_1.spawn)(command, args, {
|
|
769
|
+
stdio: 'inherit',
|
|
770
|
+
shell: true, // Allows execution in the system shell, which helps locate 'npm'
|
|
771
|
+
});
|
|
772
|
+
childProcess.on('close', (code) => {
|
|
773
|
+
if (code === 0)
|
|
774
|
+
resolve();
|
|
775
|
+
else {
|
|
776
|
+
const errorMsg = `'${command} ${args.join(' ')}' exited with code ${code}.`;
|
|
777
|
+
reject(new Error(errorMsg));
|
|
778
|
+
}
|
|
779
|
+
});
|
|
780
|
+
childProcess.on('error', (err) => {
|
|
781
|
+
console.error(`Failed to start the npm process: ${err.message}`);
|
|
782
|
+
reject(err);
|
|
783
|
+
});
|
|
784
|
+
});
|
|
785
|
+
}
|
|
786
|
+
async parseYaml(text) {
|
|
787
|
+
if (!this.globalObj.jsyaml) {
|
|
788
|
+
let cdnContent = await this.getContentFromWebURL('https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.1.0/js-yaml.js');
|
|
789
|
+
const globalObj = {};
|
|
790
|
+
cdnContent = cdnContent.replace(`Object.defineProperty(exports, '__esModule', { value: true });`, `Object.defineProperty(exports, '__esModule', { value: true }); globalObj.jsyaml = jsYaml;`);
|
|
791
|
+
// eslint-disable-next-line no-eval
|
|
792
|
+
eval(cdnContent);
|
|
793
|
+
this.globalObj.jsyaml = globalObj.jsyaml;
|
|
794
|
+
}
|
|
795
|
+
return this.globalObj.jsyaml.load(text);
|
|
796
|
+
}
|
|
797
|
+
getContentFromWebURL(fileUrl) {
|
|
798
|
+
return new Promise((resolve, reject) => {
|
|
799
|
+
const urlObj = new URL(fileUrl);
|
|
800
|
+
const client = urlObj.protocol === 'https:' ? https : http;
|
|
801
|
+
client.get(fileUrl, (res) => {
|
|
802
|
+
let data = '';
|
|
803
|
+
res.on('data', chunk => {
|
|
804
|
+
data += chunk;
|
|
805
|
+
});
|
|
806
|
+
res.on('end', () => {
|
|
807
|
+
resolve(data);
|
|
808
|
+
});
|
|
809
|
+
}).on('error', (err) => {
|
|
810
|
+
reject(err);
|
|
811
|
+
});
|
|
812
|
+
});
|
|
813
|
+
}
|
|
814
|
+
startWatch() {
|
|
815
|
+
const basePath = __dirname;
|
|
816
|
+
fs.watch(basePath, { recursive: true }, async (eventType, filename) => {
|
|
817
|
+
if (this.skipWatchInputs)
|
|
818
|
+
return; // It will be true when we are writing all data to disk
|
|
819
|
+
if (!filename || filename.endsWith('~') || filename.startsWith('.'))
|
|
820
|
+
return;
|
|
821
|
+
if (!filename.startsWith(this.C.src))
|
|
822
|
+
return;
|
|
823
|
+
if (this.EL)
|
|
824
|
+
console.log(`✓ Send : [${this.getCurrentTime()}] : ${filename}`);
|
|
825
|
+
const category = this.getCategoryOfPath(filename);
|
|
826
|
+
const changedFolder = this.getChangedFolder(category, filename);
|
|
827
|
+
if (!changedFolder)
|
|
828
|
+
return;
|
|
829
|
+
let folderChangedObj;
|
|
830
|
+
let shouldReplaceAllItemsOfCategory = false;
|
|
831
|
+
if (fs.existsSync(changedFolder)) {
|
|
832
|
+
if (!fs.existsSync(filename)) { // some file removed.
|
|
833
|
+
this.syncAllDataWithServer();
|
|
834
|
+
}
|
|
835
|
+
else {
|
|
836
|
+
const keysPrefix = path.join('/' + this.C.repo, changedFolder);
|
|
837
|
+
folderChangedObj = await this.serializeFolderWithBinary(changedFolder, keysPrefix);
|
|
838
|
+
this.sendToServer({
|
|
839
|
+
objType: EWSObjectType.LC_DATA_REQ_RES,
|
|
840
|
+
localClientWSReqRes: {
|
|
841
|
+
eventType: ELocalClientSubEventType.LC_FOLDER_CHANGED_ON_LOCAL_SYSTEM,
|
|
842
|
+
folderChangedOnLocalSystem: folderChangedObj,
|
|
843
|
+
category,
|
|
844
|
+
shouldReplaceAllItemsOfCategory,
|
|
845
|
+
},
|
|
846
|
+
});
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
else {
|
|
850
|
+
const changedFolderDeleted = this.getChangedFolderForDeleted(category, filename);
|
|
851
|
+
const keysPrefix = path.join('/' + this.C.repo, changedFolderDeleted);
|
|
852
|
+
folderChangedObj = await this.serializeFolderWithBinary(changedFolderDeleted, keysPrefix);
|
|
853
|
+
shouldReplaceAllItemsOfCategory = true;
|
|
854
|
+
this.sendDeletedEventToServerDebounce(folderChangedObj, category, shouldReplaceAllItemsOfCategory);
|
|
855
|
+
}
|
|
856
|
+
});
|
|
857
|
+
}
|
|
858
|
+
getCurrentTime() {
|
|
859
|
+
const now = new Date();
|
|
860
|
+
const hours = String(now.getHours()).padStart(2, '0');
|
|
861
|
+
const minutes = String(now.getMinutes()).padStart(2, '0');
|
|
862
|
+
const seconds = String(now.getSeconds()).padStart(2, '0');
|
|
863
|
+
return `${hours}:${minutes}:${seconds}`;
|
|
864
|
+
}
|
|
865
|
+
sendDeletedEventToServerInternal(folderChangedObj, category, shouldReplaceAllItemsOfCategory) {
|
|
866
|
+
this.sendToServer({
|
|
867
|
+
objType: EWSObjectType.LC_DATA_REQ_RES,
|
|
868
|
+
localClientWSReqRes: {
|
|
869
|
+
eventType: ELocalClientSubEventType.LC_FOLDER_CHANGED_ON_LOCAL_SYSTEM,
|
|
870
|
+
folderChangedOnLocalSystem: folderChangedObj,
|
|
871
|
+
category,
|
|
872
|
+
shouldReplaceAllItemsOfCategory,
|
|
873
|
+
},
|
|
874
|
+
});
|
|
875
|
+
}
|
|
876
|
+
debounce(fn, delay) {
|
|
877
|
+
let timer = null;
|
|
878
|
+
return function (...args) {
|
|
879
|
+
clearTimeout(timer);
|
|
880
|
+
timer = setTimeout(() => {
|
|
881
|
+
fn.apply(this, args);
|
|
882
|
+
}, delay);
|
|
883
|
+
};
|
|
884
|
+
}
|
|
885
|
+
getCategoryOfPath(filename) {
|
|
886
|
+
const changeBase = path.join(this.C.src, this.config.adminUserPath);
|
|
887
|
+
if (!filename.startsWith(changeBase))
|
|
888
|
+
return; // ignore files outside of src folder.
|
|
889
|
+
const segments = filename.split(path.sep).filter(o => !!o);
|
|
890
|
+
const category = segments[2];
|
|
891
|
+
for (const key in EGitSyncType)
|
|
892
|
+
if (EGitSyncType[key] === category)
|
|
893
|
+
return category;
|
|
894
|
+
}
|
|
895
|
+
getChangedFolder(category, filename) {
|
|
896
|
+
const segments = filename.split(path.sep);
|
|
897
|
+
let changedFolderPath = '';
|
|
898
|
+
if (category === EGitSyncType.THIRD_PARTY_APIS)
|
|
899
|
+
changedFolderPath = segments.slice(0, 6).join(path.sep);
|
|
900
|
+
else
|
|
901
|
+
changedFolderPath = segments.slice(0, 4).join(path.sep);
|
|
902
|
+
return changedFolderPath;
|
|
903
|
+
}
|
|
904
|
+
getChangedFolderForDeleted(category, filename) {
|
|
905
|
+
const segments = filename.split(path.sep);
|
|
906
|
+
return segments.slice(0, 3).join(path.sep);
|
|
907
|
+
}
|
|
908
|
+
async serializeFolderWithBinary(dirPath, pathPrefix) {
|
|
909
|
+
const result = {};
|
|
910
|
+
const localClient = this;
|
|
911
|
+
async function walk(currentPath) {
|
|
912
|
+
const entries = await localClient.readDirCustom(currentPath, { withFileTypes: true });
|
|
913
|
+
for (const entry of entries) {
|
|
914
|
+
const fullPath = path.join(currentPath, entry.name);
|
|
915
|
+
if (entry.isDirectory())
|
|
916
|
+
await walk(fullPath);
|
|
917
|
+
else { // Read as buffer and encode to base64
|
|
918
|
+
const content = fs.readFileSync(fullPath);
|
|
919
|
+
const relativePath = path.relative(dirPath, fullPath);
|
|
920
|
+
const objectKey = path.join(pathPrefix, relativePath);
|
|
921
|
+
result[objectKey] = {
|
|
922
|
+
encoding: 'base64',
|
|
923
|
+
content: content.toString('base64'),
|
|
924
|
+
};
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
await walk(dirPath);
|
|
929
|
+
return result;
|
|
930
|
+
}
|
|
931
|
+
startWatch_bak() {
|
|
932
|
+
const basePath = this.projectDirectory;
|
|
933
|
+
fs.watch(basePath, { recursive: true }, async (eventType, filename) => {
|
|
934
|
+
if (!filename || filename.endsWith('~'))
|
|
935
|
+
return;
|
|
936
|
+
if (this.skipWatchInputs)
|
|
937
|
+
return; // It will be true when we are writing all data to disk
|
|
938
|
+
const fullPath = path.join(basePath, filename);
|
|
939
|
+
console.log(`Event Type: ${eventType}, File: ${fullPath}`);
|
|
940
|
+
try {
|
|
941
|
+
const stats = await fs.promises.stat(fullPath);
|
|
942
|
+
if (stats.isFile()) {
|
|
943
|
+
if (eventType === 'rename') {
|
|
944
|
+
console.log(`🧩 ${filename} file was added.`);
|
|
945
|
+
}
|
|
946
|
+
else if (eventType === 'change') {
|
|
947
|
+
console.log(`✏️ ${filename} file was modified.`);
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
else if (stats.isDirectory()) {
|
|
951
|
+
if (eventType === 'rename') {
|
|
952
|
+
console.log(`🧩 ${filename} directory was added.`);
|
|
953
|
+
}
|
|
954
|
+
else if (eventType === 'change') {
|
|
955
|
+
console.log(`✏️ ${filename} directory was modified.`);
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
catch (e) {
|
|
960
|
+
if (e.code === 'ENOENT') {
|
|
961
|
+
if (fullPath.endsWith('~')) { // Do nothing as it is temporary file.
|
|
962
|
+
}
|
|
963
|
+
else {
|
|
964
|
+
console.log(`❌ Deleted: ${fullPath}`);
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
});
|
|
969
|
+
}
|
|
970
|
+
sendToServer(data) {
|
|
971
|
+
this.spinner.start();
|
|
972
|
+
try {
|
|
973
|
+
this.ws.send(JSON.stringify(data));
|
|
974
|
+
}
|
|
975
|
+
catch (e) {
|
|
976
|
+
console.log(e);
|
|
977
|
+
}
|
|
978
|
+
this.spinner.stop();
|
|
979
|
+
}
|
|
980
|
+
async connectToServerViaWS() {
|
|
981
|
+
console.log('Connecting to server...');
|
|
982
|
+
const authTokenInfo = 'ws-local-client-sync';
|
|
983
|
+
const am_authorization = this.config.syncToken;
|
|
984
|
+
const adminUserPath = this.config.adminUserPath;
|
|
985
|
+
const webSocketURL = this.config.webSocketURL;
|
|
986
|
+
this.ws = new WebSocket(`${webSocketURL}?authTokenInfo=${authTokenInfo}&authorization=${am_authorization}&user-path=${adminUserPath}`);
|
|
987
|
+
const registeredEvents = [];
|
|
988
|
+
const sendRegisterEvent = () => {
|
|
989
|
+
this.sendToServer({
|
|
990
|
+
objType: EWSObjectType.REGISTER,
|
|
991
|
+
onEvents: [{
|
|
992
|
+
eventType: 'LOCAL_CLIENT_SYNC_EVENTS',
|
|
993
|
+
}],
|
|
994
|
+
});
|
|
995
|
+
};
|
|
996
|
+
function cleanWS(wsTemp) {
|
|
997
|
+
wsTemp.onopen = null;
|
|
998
|
+
wsTemp.onmessage = null;
|
|
999
|
+
wsTemp.onerror = null;
|
|
1000
|
+
wsTemp.onclose = null;
|
|
1001
|
+
wsTemp.close();
|
|
1002
|
+
}
|
|
1003
|
+
this.ws.onmessage = async (event) => {
|
|
1004
|
+
const serverResp = JSON.parse(event.data);
|
|
1005
|
+
if (serverResp.type === EWSObjectType.CONNECTED && serverResp.response.connected)
|
|
1006
|
+
sendRegisterEvent();
|
|
1007
|
+
else if (serverResp.type === EWSObjectType.REGISTER) {
|
|
1008
|
+
if (serverResp?.response?.validOnEvents?.length) {
|
|
1009
|
+
for (const validEvent of serverResp.response.validOnEvents)
|
|
1010
|
+
registeredEvents.push(validEvent);
|
|
1011
|
+
console.log(`✅ Connected to server via WS`);
|
|
1012
|
+
this.syncAllDataWithServer();
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
else
|
|
1016
|
+
await this.processReceivedEvent(serverResp);
|
|
1017
|
+
};
|
|
1018
|
+
this.ws.onclose = (event) => {
|
|
1019
|
+
console.log('Connection closed.');
|
|
1020
|
+
cleanWS(this.ws);
|
|
1021
|
+
setTimeout(this.connectToServerViaWS.bind(this), 3000);
|
|
1022
|
+
};
|
|
1023
|
+
this.ws.onerror = () => {
|
|
1024
|
+
cleanWS(this.ws);
|
|
1025
|
+
setTimeout(this.connectToServerViaWS.bind(this), 3000);
|
|
1026
|
+
};
|
|
1027
|
+
}
|
|
1028
|
+
syncAllDataWithServer() {
|
|
1029
|
+
this.sendToServer({
|
|
1030
|
+
objType: EWSObjectType.LC_DATA_REQ_RES,
|
|
1031
|
+
localClientWSReqRes: {
|
|
1032
|
+
eventType: ELocalClientSubEventType.LC_SEND_ALL_DATA,
|
|
1033
|
+
},
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
async processReceivedEvent(serverResp) {
|
|
1037
|
+
if (this.EL)
|
|
1038
|
+
console.log(serverResp);
|
|
1039
|
+
if (serverResp.type === EWSObjectType.LC_DATA_REQ_RES) {
|
|
1040
|
+
if (serverResp.errors?.length) {
|
|
1041
|
+
console.error(serverResp.errors);
|
|
1042
|
+
return;
|
|
1043
|
+
}
|
|
1044
|
+
this.spinner.start();
|
|
1045
|
+
if (serverResp.response.eventType === ELocalClientSubEventType.LC_SEND_ALL_DATA) {
|
|
1046
|
+
fs.rmSync(path.join(__dirname, this.C.src), {
|
|
1047
|
+
recursive: true,
|
|
1048
|
+
force: true,
|
|
1049
|
+
});
|
|
1050
|
+
fs.mkdirSync(path.join(__dirname, this.C.src), { recursive: true });
|
|
1051
|
+
const resp = serverResp.response.eventData;
|
|
1052
|
+
await this.writeMemfsJsonToDisk(resp, __dirname);
|
|
1053
|
+
}
|
|
1054
|
+
else if (serverResp.response.eventType === ELocalClientSubEventType.LC_DATA_MODIFIED_IN_DATABASE) {
|
|
1055
|
+
const resp = serverResp.response.eventData;
|
|
1056
|
+
await this.writeMemfsJsonToDisk(resp.data, __dirname);
|
|
1057
|
+
}
|
|
1058
|
+
if (this.nodeModulesCopied === true)
|
|
1059
|
+
await this.copyFilesToProjectDir(false);
|
|
1060
|
+
else {
|
|
1061
|
+
await this.copyFilesToProjectDir(true);
|
|
1062
|
+
this.nodeModulesCopied = true;
|
|
1063
|
+
}
|
|
1064
|
+
this.spinner.stop();
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
async writeMemfsJsonToDisk(jsonData, targetRoot) {
|
|
1068
|
+
this.skipWatchInputs = true;
|
|
1069
|
+
const BATCH_SIZE = 1000;
|
|
1070
|
+
let batch = [];
|
|
1071
|
+
const flushBatch = async () => {
|
|
1072
|
+
if (batch.length > 0) {
|
|
1073
|
+
await Promise.all(batch);
|
|
1074
|
+
batch = [];
|
|
1075
|
+
}
|
|
1076
|
+
};
|
|
1077
|
+
for (const [filePath, contentObjTemp] of Object.entries(jsonData)) {
|
|
1078
|
+
if (!filePath.startsWith(`/${this.C.repo}/${this.C.src}`))
|
|
1079
|
+
continue;
|
|
1080
|
+
const contentObj = contentObjTemp;
|
|
1081
|
+
const filePathRepoRemoved = filePath.replace(`/${this.C.repo}`, '');
|
|
1082
|
+
if (this.skipFileWritingForLocal[filePathRepoRemoved])
|
|
1083
|
+
continue;
|
|
1084
|
+
const resolvedPath = path.join(targetRoot, filePathRepoRemoved.replace(/^\//, ''));
|
|
1085
|
+
const dir = path.dirname(resolvedPath);
|
|
1086
|
+
const task = async () => {
|
|
1087
|
+
await fs.promises.mkdir(dir, { recursive: true });
|
|
1088
|
+
await fs.promises.writeFile(resolvedPath, contentObj.content, { encoding: 'base64' });
|
|
1089
|
+
if (this.EL)
|
|
1090
|
+
console.log(`✓ Receive : [${this.getCurrentTime()}] : ${resolvedPath.replace(targetRoot, '')}`);
|
|
1091
|
+
};
|
|
1092
|
+
batch.push(task());
|
|
1093
|
+
if (batch.length >= BATCH_SIZE)
|
|
1094
|
+
await flushBatch();
|
|
1095
|
+
}
|
|
1096
|
+
await flushBatch(); // Flush any remaining tasks
|
|
1097
|
+
setTimeout(() => {
|
|
1098
|
+
this.skipWatchInputs = false;
|
|
1099
|
+
}, 1000);
|
|
1100
|
+
}
|
|
1101
|
+
removeEmptyDirsSync(dirPath) {
|
|
1102
|
+
if (!fs.existsSync(dirPath))
|
|
1103
|
+
return false;
|
|
1104
|
+
const entries = fs.readdirSync(dirPath);
|
|
1105
|
+
let isEmpty = true;
|
|
1106
|
+
for (const entry of entries) {
|
|
1107
|
+
const fullPath = path.join(dirPath, entry);
|
|
1108
|
+
const stat = fs.statSync(fullPath);
|
|
1109
|
+
if (stat.isDirectory()) {
|
|
1110
|
+
const removed = this.removeEmptyDirsSync(fullPath);
|
|
1111
|
+
if (!removed)
|
|
1112
|
+
isEmpty = false;
|
|
1113
|
+
}
|
|
1114
|
+
else
|
|
1115
|
+
isEmpty = false;
|
|
1116
|
+
}
|
|
1117
|
+
if (isEmpty) {
|
|
1118
|
+
fs.rmdirSync(dirPath);
|
|
1119
|
+
return true;
|
|
1120
|
+
}
|
|
1121
|
+
return false;
|
|
1122
|
+
}
|
|
1123
|
+
async readDirCustom(dirPath, options) {
|
|
1124
|
+
if (!fs.existsSync(dirPath))
|
|
1125
|
+
return [];
|
|
1126
|
+
return await fs.promises.readdir(dirPath, options);
|
|
1127
|
+
}
|
|
1128
|
+
}
|
|
1129
|
+
new LocalClient().start().then();
|
|
1130
|
+
var EAPICategory;
|
|
1131
|
+
(function (EAPICategory) {
|
|
1132
|
+
EAPICategory["INSTANCES"] = "INSTANCES";
|
|
1133
|
+
EAPICategory["THIRD_PARTY_APIS"] = "THIRD_PARTY_APIS";
|
|
1134
|
+
EAPICategory["CUSTOM_APIS"] = "CUSTOM_APIS";
|
|
1135
|
+
EAPICategory["SYSTEM_APIS"] = "SYSTEM_APIS";
|
|
1136
|
+
EAPICategory["WEB_SOCKET_EVENT"] = "WEB_SOCKET_EVENT";
|
|
1137
|
+
})(EAPICategory = exports.EAPICategory || (exports.EAPICategory = {}));
|
|
1138
|
+
var EWSObjectType;
|
|
1139
|
+
(function (EWSObjectType) {
|
|
1140
|
+
EWSObjectType["REGISTER"] = "REGISTER";
|
|
1141
|
+
EWSObjectType["UNREGISTER"] = "UNREGISTER";
|
|
1142
|
+
EWSObjectType["CONNECTED"] = "CONNECTED";
|
|
1143
|
+
EWSObjectType["UNKNOWN"] = "UNKNOWN";
|
|
1144
|
+
EWSObjectType["TOKEN_VALIDATION"] = "TOKEN_VALIDATION";
|
|
1145
|
+
EWSObjectType["NOTIFICATION"] = "NOTIFICATION";
|
|
1146
|
+
// Below is only used for local client sync
|
|
1147
|
+
EWSObjectType["LC_DATA_REQ_RES"] = "LC_DATA_REQ_RES";
|
|
1148
|
+
})(EWSObjectType || (EWSObjectType = {}));
|
|
1149
|
+
var ELocalClientSubEventType;
|
|
1150
|
+
(function (ELocalClientSubEventType) {
|
|
1151
|
+
ELocalClientSubEventType["LC_SEND_ALL_DATA"] = "LC_SEND_ALL_DATA";
|
|
1152
|
+
ELocalClientSubEventType["LC_DATA_MODIFIED_IN_DATABASE"] = "LC_DATA_MODIFIED_IN_DATABASE";
|
|
1153
|
+
ELocalClientSubEventType["LC_FOLDER_CHANGED_ON_LOCAL_SYSTEM"] = "LC_FOLDER_CHANGED_ON_LOCAL_SYSTEM";
|
|
1154
|
+
})(ELocalClientSubEventType || (ELocalClientSubEventType = {}));
|
|
1155
|
+
var EMongooseHookMethods;
|
|
1156
|
+
(function (EMongooseHookMethods) {
|
|
1157
|
+
EMongooseHookMethods["POST"] = "POST";
|
|
1158
|
+
EMongooseHookMethods["PUT"] = "PUT";
|
|
1159
|
+
EMongooseHookMethods["PUT_REPLACE"] = "PUT_REPLACE";
|
|
1160
|
+
EMongooseHookMethods["DELETE"] = "DELETE";
|
|
1161
|
+
EMongooseHookMethods["DELETE_ALL"] = "DELETE_ALL";
|
|
1162
|
+
})(EMongooseHookMethods = exports.EMongooseHookMethods || (exports.EMongooseHookMethods = {}));
|
|
1163
|
+
// It only includes required
|
|
1164
|
+
var EAMModelNames;
|
|
1165
|
+
(function (EAMModelNames) {
|
|
1166
|
+
EAMModelNames["AmEvents"] = "am_events";
|
|
1167
|
+
EAMModelNames["WebSocketEvents"] = "am_web_socket_events";
|
|
1168
|
+
EAMModelNames["DBMasters"] = "am_db_masters";
|
|
1169
|
+
EAMModelNames["CustomApis"] = "am_custom_apis";
|
|
1170
|
+
EAMModelNames["InstanceApiSettings"] = "am_instance_api_settings";
|
|
1171
|
+
EAMModelNames["InstanceApiHooks"] = "am_instance_api_hooks";
|
|
1172
|
+
EAMModelNames["InstanceHooks"] = "am_instance_hooks";
|
|
1173
|
+
EAMModelNames["DatabaseHooks"] = "am_database_hooks";
|
|
1174
|
+
EAMModelNames["CollectionHooks"] = "am_collection_hooks";
|
|
1175
|
+
EAMModelNames["Schedulers"] = "am_schedulers";
|
|
1176
|
+
EAMModelNames["Schemas"] = "am_schemas";
|
|
1177
|
+
EAMModelNames["I18Ns"] = "am_i18ns";
|
|
1178
|
+
EAMModelNames["SystemApiSettings"] = "am_system_api_settings";
|
|
1179
|
+
EAMModelNames["SystemApiHooks"] = "am_system_api_hooks";
|
|
1180
|
+
EAMModelNames["am_tp_api_settings"] = "am_tp_api_settings";
|
|
1181
|
+
EAMModelNames["am_tp_installed_apis"] = "am_tp_installed_apis";
|
|
1182
|
+
EAMModelNames["am_tp_api_versions"] = "am_tp_api_versions";
|
|
1183
|
+
EAMModelNames["UtilityClasses"] = "am_utility_classes";
|
|
1184
|
+
EAMModelNames["DatabasesMigrations"] = "am_database_migrations";
|
|
1185
|
+
EAMModelNames["ProcessInitializers"] = "am_process_initializers";
|
|
1186
|
+
EAMModelNames["UIMakerUtils"] = "am_ui_maker_utils";
|
|
1187
|
+
EAMModelNames["UIMakerStyles"] = "am_ui_maker_styles";
|
|
1188
|
+
EAMModelNames["AmTestCases"] = "am_test_cases";
|
|
1189
|
+
})(EAMModelNames = exports.EAMModelNames || (exports.EAMModelNames = {}));
|
|
1190
|
+
// It includes required
|
|
1191
|
+
var EGitSyncType;
|
|
1192
|
+
(function (EGitSyncType) {
|
|
1193
|
+
EGitSyncType["CUSTOM_APIS"] = "Custom APIs";
|
|
1194
|
+
EGitSyncType["DB_MIGRATIONS"] = "Database migrations";
|
|
1195
|
+
EGitSyncType["PROCESS_INITIALIZERS"] = "Process initializers";
|
|
1196
|
+
EGitSyncType["EVENTS"] = "Events";
|
|
1197
|
+
EGitSyncType["I18NS"] = "i18ns";
|
|
1198
|
+
EGitSyncType["INSTANCE_API_HOOKS"] = "Instance API hooks";
|
|
1199
|
+
EGitSyncType["INSTANCE_HOOKS"] = "Instance hooks";
|
|
1200
|
+
EGitSyncType["DATABASE_HOOKS"] = "Database hooks";
|
|
1201
|
+
EGitSyncType["COLLECTION_HOOKS"] = "Collection hooks";
|
|
1202
|
+
EGitSyncType["INSTANCE_API_SETTINGS"] = "Instance API settings";
|
|
1203
|
+
EGitSyncType["SCHEDULERS"] = "Schedulers";
|
|
1204
|
+
EGitSyncType["SCHEMAS"] = "Schemas";
|
|
1205
|
+
EGitSyncType["SYSTEM_API_HOOKS"] = "System API hooks";
|
|
1206
|
+
EGitSyncType["SYSTEM_API_SETTINGS"] = "System API settings";
|
|
1207
|
+
EGitSyncType["TEST_CASES"] = "Test cases";
|
|
1208
|
+
EGitSyncType["THIRD_PARTY_APIS"] = "Third party APIs";
|
|
1209
|
+
EGitSyncType["THIRD_PARTY_API_SETTINGS"] = "Third party API settings";
|
|
1210
|
+
EGitSyncType["UTILITY_CLASSES"] = "Utility classes";
|
|
1211
|
+
EGitSyncType["EVENTS_WS"] = "WebSocket events";
|
|
1212
|
+
EGitSyncType["DB_MASTERS"] = "DB masters";
|
|
1213
|
+
EGitSyncType["UI_MAKER_UTILITY_CLASS"] = "DB master utils";
|
|
1214
|
+
EGitSyncType["UI_MAKER_STYLES"] = "UI maker styles";
|
|
1215
|
+
})(EGitSyncType = exports.EGitSyncType || (exports.EGitSyncType = {}));
|