From f76ebb247a97c4be34670ef47b7d219622ea4bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <git@minelli.me> Date: Thu, 28 Mar 2024 21:26:01 +0100 Subject: [PATCH] Move project to ESM only --- ExerciseChecker/.idea/jetbrainsConfiguration | 2 +- ExerciseChecker/package-lock.json | 469 +++++++++++++++++- ExerciseChecker/package.json | 6 +- ExerciseChecker/src/app.ts | 49 +- ExerciseChecker/src/init.ts | 10 + .../src/managers/DojoBackendManager.ts | 14 +- ExerciseChecker/src/managers/GitlabManager.ts | 2 +- ExerciseChecker/src/managers/HttpManager.ts | 10 +- ExerciseChecker/src/shared | 2 +- ExerciseChecker/src/sharedByClients | 2 +- ExerciseChecker/tsconfig.json | 16 +- 11 files changed, 527 insertions(+), 55 deletions(-) create mode 100644 ExerciseChecker/src/init.ts diff --git a/ExerciseChecker/.idea/jetbrainsConfiguration b/ExerciseChecker/.idea/jetbrainsConfiguration index f572bf3..ef5c7bd 160000 --- a/ExerciseChecker/.idea/jetbrainsConfiguration +++ b/ExerciseChecker/.idea/jetbrainsConfiguration @@ -1 +1 @@ -Subproject commit f572bf3afa0a98675247df85c599b5d1e5a62d0d +Subproject commit ef5c7bd49a57bc28db77bad797de4980133d6523 diff --git a/ExerciseChecker/package-lock.json b/ExerciseChecker/package-lock.json index 4a01732..ec4521d 100644 --- a/ExerciseChecker/package-lock.json +++ b/ExerciseChecker/package-lock.json @@ -42,7 +42,8 @@ "pkg": "^5.8.1", "tiny-typed-emitter": "^2.1.0", "ts-node": "^10.9.2", - "typescript": "^5.3.3" + "tsx": "^4.7.1", + "typescript": "^5.4.3" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -153,6 +154,374 @@ "kuler": "^2.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -820,9 +1189,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.10.tgz", - "integrity": "sha512-PiaIWIoPvO6qm6t114ropMCagj6YAF24j9OkCA2mJDXFnlionEwhsBCJ8yek4aib575BI3OkART/90WsgHgLWw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", "dev": true }, "node_modules/@tsconfig/node12": { @@ -1927,6 +2296,44 @@ "node": ">= 0.4" } }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -2486,6 +2893,20 @@ "dev": true, "peer": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -2547,6 +2968,18 @@ "node": ">=8.0.0" } }, + "node_modules/get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -4065,6 +4498,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve/node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -4663,6 +5105,25 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, + "node_modules/tsx": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", + "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==", + "dev": true, + "dependencies": { + "esbuild": "~0.19.10", + "get-tsconfig": "^4.7.2" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", diff --git a/ExerciseChecker/package.json b/ExerciseChecker/package.json index 33f73f8..9216c9e 100644 --- a/ExerciseChecker/package.json +++ b/ExerciseChecker/package.json @@ -4,6 +4,7 @@ "version" : "4.0.0", "license" : "AGPLv3", "author" : "Michaƫl Minelli <dojo@minelli.me>", + "type" : "module", "main" : "dist/app.js", "bin" : { "dirmanager": "./dist/app.js" @@ -25,7 +26,7 @@ "lint" : "npx eslint .", "genversion" : "npx genversion -s -e src/config/Version.ts", "build" : "npm run genversion; npx tsc", - "start:dev" : "npm run genversion; npm run lint; npx ts-node src/app.ts", + "start:dev" : "npm run genversion; npm run lint; tsc --noEmit && npx tsx dist/app.js", "test" : "echo \"Error: no test specified\" && exit 1" }, "dependencies" : { @@ -58,7 +59,8 @@ "genversion" : "^3.2.0", "pkg" : "^5.8.1", "tiny-typed-emitter" : "^2.1.0", + "tsx" : "^4.7.1", "ts-node" : "^10.9.2", - "typescript" : "^5.3.3" + "typescript" : "^5.4.3" } } diff --git a/ExerciseChecker/src/app.ts b/ExerciseChecker/src/app.ts index 4ffeb03..b71cc6f 100644 --- a/ExerciseChecker/src/app.ts +++ b/ExerciseChecker/src/app.ts @@ -1,33 +1,22 @@ -// Read from the .env file -// ATTENTION : These lines MUST be the first of this file (except for the path import) -import path = require('node:path'); -import myEnv = require('dotenv'); -import dotenvExpand = require('dotenv-expand'); - - -dotenvExpand.expand(myEnv.config({ - path : path.join(__dirname, '../.env'), - DOTENV_KEY: 'dotenv://:key_bebfddf18e3dd9a0bafafe0e383313f75add1da6fbe41ea5fde51f37ef1776aa@dotenv.local/vault/.env.vault?environment=development' - })); - -require('./shared/helpers/TypeScriptExtensions'); // ATTENTION : This line MUST be the second of this file - - -import ClientsSharedConfig from './sharedByClients/config/ClientsSharedConfig'; -import Styles from './types/Style'; -import RecursiveFilesStats from './shared/helpers/recursiveFilesStats/RecursiveFilesStats'; -import Toolbox from './shared/helpers/Toolbox'; -import ExerciseCheckerError from './shared/types/Dojo/ExerciseCheckerError'; +// ATTENTION : This line MUST be the first of this file +import './init.js'; +import ClientsSharedConfig from './sharedByClients/config/ClientsSharedConfig.js'; +import Styles from './types/Style.js'; +import RecursiveFilesStats from './shared/helpers/recursiveFilesStats/RecursiveFilesStats.js'; +import Toolbox from './shared/helpers/Toolbox.js'; +import ExerciseCheckerError from './shared/types/Dojo/ExerciseCheckerError.js'; import fs from 'fs-extra'; -import HttpManager from './managers/HttpManager'; -import DojoBackendManager from './managers/DojoBackendManager'; -import Config from './config/Config'; -import ArchiveHelper from './shared/helpers/ArchiveHelper'; -import ExerciseDockerCompose from './sharedByClients/helpers/Dojo/ExerciseDockerCompose'; -import ExerciseResultsSanitizerAndValidator from './sharedByClients/helpers/Dojo/ExerciseResultsSanitizerAndValidator'; -import ExerciseAssignment from './sharedByClients/models/ExerciseAssignment'; -import ClientsSharedExerciseHelper from './sharedByClients/helpers/Dojo/ClientsSharedExerciseHelper'; -import Icon from './shared/types/Icon'; +import HttpManager from './managers/HttpManager.js'; +import DojoBackendManager from './managers/DojoBackendManager.js'; +import Config from './config/Config.js'; +import ArchiveHelper from './shared/helpers/ArchiveHelper.js'; +import ExerciseDockerCompose from './sharedByClients/helpers/Dojo/ExerciseDockerCompose.js'; +import ExerciseResultsSanitizerAndValidator from './sharedByClients/helpers/Dojo/ExerciseResultsSanitizerAndValidator.js'; +import ExerciseAssignment from './sharedByClients/models/ExerciseAssignment.js'; +import ClientsSharedExerciseHelper from './sharedByClients/helpers/Dojo/ClientsSharedExerciseHelper.js'; +import Icon from './shared/types/Icon.js'; +import path from 'node:path'; +import { fileURLToPath } from 'url'; let exerciseAssignment: ExerciseAssignment | undefined; @@ -71,7 +60,7 @@ async function runDockerCompose() { let composeFileOverride: string[] = []; const composeOverridePath: string = path.join(Config.folders.project, 'docker-compose-override.yml'); if ( haveResultsVolume ) { - const composeOverride = fs.readFileSync(path.join(__dirname, '../assets/docker-compose-override.yml'), 'utf8').replace('{{VOLUME_NAME}}', exerciseAssignment!.assignmentFile.result.volume!).replace('{{MOUNT_PATH}}', Config.folders.resultsExercise); + const composeOverride = fs.readFileSync(path.join(path.dirname(fileURLToPath(import.meta.url)), '../assets/docker-compose-override.yml'), 'utf8').replace('{{VOLUME_NAME}}', exerciseAssignment!.assignmentFile.result.volume!).replace('{{MOUNT_PATH}}', Config.folders.resultsExercise); fs.writeFileSync(composeOverridePath, composeOverride); composeFileOverride = [ composeOverridePath ]; diff --git a/ExerciseChecker/src/init.ts b/ExerciseChecker/src/init.ts new file mode 100644 index 0000000..1095916 --- /dev/null +++ b/ExerciseChecker/src/init.ts @@ -0,0 +1,10 @@ +import path from 'node:path'; +import dotenv from 'dotenv'; +import dotenvExpand from 'dotenv-expand'; +import { fileURLToPath } from 'url'; +import './shared/helpers/TypeScriptExtensions.js'; // ATTENTION : This line MUST be the second of this file + +dotenvExpand.expand(dotenv.config({ + path : path.join(path.dirname(fileURLToPath(import.meta.url)), '../.env'), + DOTENV_KEY: 'dotenv://:key_bebfddf18e3dd9a0bafafe0e383313f75add1da6fbe41ea5fde51f37ef1776aa@dotenv.local/vault/.env.vault?environment=development' + })); \ No newline at end of file diff --git a/ExerciseChecker/src/managers/DojoBackendManager.ts b/ExerciseChecker/src/managers/DojoBackendManager.ts index 76e3390..162d8f8 100644 --- a/ExerciseChecker/src/managers/DojoBackendManager.ts +++ b/ExerciseChecker/src/managers/DojoBackendManager.ts @@ -1,11 +1,11 @@ import axios from 'axios'; -import DojoBackendResponse from '../shared/types/Dojo/DojoBackendResponse'; -import ExerciseAssignment from '../sharedByClients/models/ExerciseAssignment'; -import Config from '../config/Config'; -import ExerciseResultsFile from '../shared/types/Dojo/ExerciseResultsFile'; -import ApiRoute from '../sharedByClients/types/Dojo/ApiRoute'; -import { IFileDirStat } from '../shared/helpers/recursiveFilesStats/RecursiveFilesStats'; -import DojoBackendHelper from '../sharedByClients/helpers/Dojo/DojoBackendHelper'; +import DojoBackendResponse from '../shared/types/Dojo/DojoBackendResponse.js'; +import ExerciseAssignment from '../sharedByClients/models/ExerciseAssignment.js'; +import Config from '../config/Config.js'; +import ExerciseResultsFile from '../shared/types/Dojo/ExerciseResultsFile.js'; +import ApiRoute from '../sharedByClients/types/Dojo/ApiRoute.js'; +import { IFileDirStat } from '../shared/helpers/recursiveFilesStats/RecursiveFilesStats.js'; +import DojoBackendHelper from '../sharedByClients/helpers/Dojo/DojoBackendHelper.js'; class DojoBackendManager { diff --git a/ExerciseChecker/src/managers/GitlabManager.ts b/ExerciseChecker/src/managers/GitlabManager.ts index 3d1c050..2228dec 100644 --- a/ExerciseChecker/src/managers/GitlabManager.ts +++ b/ExerciseChecker/src/managers/GitlabManager.ts @@ -1,4 +1,4 @@ -import SharedGitlabManager from '../shared/managers/SharedGitlabManager'; +import SharedGitlabManager from '../shared/managers/SharedGitlabManager.js'; // NOT USED // File present only for prevent errors from shared submodules diff --git a/ExerciseChecker/src/managers/HttpManager.ts b/ExerciseChecker/src/managers/HttpManager.ts index 0f25bea..426ead1 100644 --- a/ExerciseChecker/src/managers/HttpManager.ts +++ b/ExerciseChecker/src/managers/HttpManager.ts @@ -1,11 +1,11 @@ import axios, { AxiosRequestHeaders } from 'axios'; import FormData from 'form-data'; -import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig'; -import Config from '../config/Config'; -import { version } from '../config/Version'; +import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig.js'; +import Config from '../config/Config.js'; +import { version } from '../config/Version.js'; import boxen from 'boxen'; -import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; -import DojoBackendResponse from '../shared/types/Dojo/DojoBackendResponse'; +import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode.js'; +import DojoBackendResponse from '../shared/types/Dojo/DojoBackendResponse.js'; import { StatusCodes } from 'http-status-codes'; diff --git a/ExerciseChecker/src/shared b/ExerciseChecker/src/shared index 6e78095..021300d 160000 --- a/ExerciseChecker/src/shared +++ b/ExerciseChecker/src/shared @@ -1 +1 @@ -Subproject commit 6e78095b3fe73f2c2987de1a3d3b55511335a2bf +Subproject commit 021300d29473dee2ad229384d22a521c0e5c14aa diff --git a/ExerciseChecker/src/sharedByClients b/ExerciseChecker/src/sharedByClients index 8ae82ab..8514d5e 160000 --- a/ExerciseChecker/src/sharedByClients +++ b/ExerciseChecker/src/sharedByClients @@ -1 +1 @@ -Subproject commit 8ae82abcc7f11e595060b1a48f340290e7b2ebac +Subproject commit 8514d5ef589a8aa34e4d2260c618781d81368c22 diff --git a/ExerciseChecker/tsconfig.json b/ExerciseChecker/tsconfig.json index 6dd8b7e..3976c4d 100644 --- a/ExerciseChecker/tsconfig.json +++ b/ExerciseChecker/tsconfig.json @@ -4,13 +4,23 @@ "outDir" : "dist", "strict" : true, "target" : "ES2022", - "module" : "commonjs", + "module" : "ES2022", "sourceMap" : true, + "moduleResolution": "bundler", + "noImplicitAny" : true, "esModuleInterop" : true, - "moduleResolution": "node", - "noImplicitAny" : true + "lib" : [ + "ES2022", + "DOM" + ], + "types" : [ + "node" + ] }, "exclude" : [ "node_modules" + ], + "include" : [ + "src/**/*.ts" ] } \ No newline at end of file -- GitLab