From aa2f942e3f379691dba0e02fd401fa6daf75e140 Mon Sep 17 00:00:00 2001 From: konard Date: Wed, 10 Sep 2025 19:43:10 +0300 Subject: [PATCH 1/3] Initial commit with task details for issue #381 Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: https://github.com/deep-assistant/GPTutor/issues/381 --- CLAUDE.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..2944ba00 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +Issue to solve: https://github.com/deep-assistant/GPTutor/issues/381 +Your prepared branch: issue-381-5f7ad0a4 +Your prepared working directory: /tmp/gh-issue-solver-1757522564698 + +Proceed. \ No newline at end of file From deb5aa8752fcdb94cbc88c625be4ce0db80dfc23 Mon Sep 17 00:00:00 2001 From: konard Date: Wed, 10 Sep 2025 19:43:28 +0300 Subject: [PATCH 2/3] Remove CLAUDE.md - PR created successfully --- CLAUDE.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 2944ba00..00000000 --- a/CLAUDE.md +++ /dev/null @@ -1,5 +0,0 @@ -Issue to solve: https://github.com/deep-assistant/GPTutor/issues/381 -Your prepared branch: issue-381-5f7ad0a4 -Your prepared working directory: /tmp/gh-issue-solver-1757522564698 - -Proceed. \ No newline at end of file From 76241fd3fd4151123cc5acf8cf161d2a4ad64405 Mon Sep 17 00:00:00 2001 From: konard Date: Wed, 10 Sep 2025 19:54:39 +0300 Subject: [PATCH 3/3] Add terminal trainer functionality MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add TERMINAL_TRAINING mode type to support terminal training - Create terminal trainer with Linux terminal simulation prompt - Add bash language support for code editor syntax highlighting - Initialize terminal trainer with 'ls -la' command example - Integrate terminal trainer into existing trainer system The terminal trainer acts as a Linux terminal simulator, allowing users to practice command line skills through an interactive training interface. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- GPTutor-Frontend/build/gptTutorBanner.png | Bin 0 -> 51101 bytes GPTutor-Frontend/package-lock.json | 369 ++++++++++++------ GPTutor-Frontend/src/entity/Trainers/index.ts | 12 +- .../src/entity/lessons/modeType.ts | 1 + 4 files changed, 251 insertions(+), 131 deletions(-) create mode 100644 GPTutor-Frontend/build/gptTutorBanner.png diff --git a/GPTutor-Frontend/build/gptTutorBanner.png b/GPTutor-Frontend/build/gptTutorBanner.png new file mode 100644 index 0000000000000000000000000000000000000000..86f5c9f8b8e6c1ccac5f2b89f78c34d08a2518ae GIT binary patch literal 51101 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

hX&|` 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 IWD)fL0lJ0c3jhEB literal 0 HcmV?d00001 diff --git a/GPTutor-Frontend/package-lock.json b/GPTutor-Frontend/package-lock.json index 62d85738..be258666 100644 --- a/GPTutor-Frontend/package-lock.json +++ b/GPTutor-Frontend/package-lock.json @@ -87,6 +87,7 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -2424,6 +2425,7 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", + "dev": true, "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" @@ -2437,6 +2439,7 @@ }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { "version": "3.4.0", + "dev": true, "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2449,6 +2452,7 @@ "version": "4.8.0", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -2457,6 +2461,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2478,12 +2483,14 @@ "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.21.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -2498,6 +2505,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -2509,6 +2517,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, "engines": { "node": ">=10" }, @@ -2520,6 +2529,7 @@ "version": "8.48.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -2579,6 +2589,7 @@ "version": "0.11.11", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -2590,6 +2601,7 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=12.22" @@ -2602,7 +2614,8 @@ "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -3527,6 +3540,7 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -3538,6 +3552,7 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -3545,6 +3560,7 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -5558,6 +5574,7 @@ "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -5597,6 +5614,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -5687,6 +5705,7 @@ }, "node_modules/ajv": { "version": "6.12.6", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -5778,6 +5797,7 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6947,6 +6967,7 @@ }, "node_modules/callsites": { "version": "3.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -7749,6 +7770,7 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -8924,6 +8946,7 @@ }, "node_modules/deep-is": { "version": "0.1.4", + "dev": true, "license": "MIT" }, "node_modules/default-gateway": { @@ -9139,6 +9162,7 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -9587,6 +9611,7 @@ "version": "8.48.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -10552,10 +10577,12 @@ "node_modules/eslint/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10570,6 +10597,7 @@ }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -10582,6 +10610,7 @@ "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -10597,6 +10626,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -10606,6 +10636,7 @@ }, "node_modules/eslint/node_modules/globals": { "version": "13.20.0", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.20.2" @@ -10621,6 +10652,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -10630,6 +10662,7 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -10650,6 +10683,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -10666,6 +10700,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -10687,6 +10722,7 @@ }, "node_modules/esquery": { "version": "1.5.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" @@ -10697,6 +10733,7 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -10906,6 +10943,7 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "dev": true, "license": "MIT" }, "node_modules/fast-glob": { @@ -10936,14 +10974,17 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", + "dev": true, "license": "MIT" }, "node_modules/fastq": { "version": "1.13.0", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -10975,6 +11016,7 @@ }, "node_modules/file-entry-cache": { "version": "6.0.1", + "dev": true, "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" @@ -11117,6 +11159,7 @@ }, "node_modules/find-up": { "version": "5.0.0", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -11131,6 +11174,7 @@ }, "node_modules/flat-cache": { "version": "3.0.4", + "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.1.0", @@ -11142,6 +11186,7 @@ }, "node_modules/flatted": { "version": "3.2.7", + "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { @@ -11518,6 +11563,7 @@ }, "node_modules/glob-parent": { "version": "6.0.2", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -11656,7 +11702,8 @@ "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "node_modules/graphlib": { "version": "2.1.8", @@ -12036,6 +12083,7 @@ "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, "engines": { "node": ">= 4" } @@ -12051,6 +12099,7 @@ }, "node_modules/import-fresh": { "version": "3.3.0", + "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -12065,6 +12114,7 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -12343,6 +12393,7 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12493,6 +12544,7 @@ }, "node_modules/isexe": { "version": "2.0.0", + "dev": true, "license": "ISC" }, "node_modules/isobject": { @@ -14349,10 +14401,12 @@ }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", + "dev": true, "license": "MIT" }, "node_modules/json5": { @@ -14481,6 +14535,7 @@ }, "node_modules/levn": { "version": "0.4.1", + "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", @@ -14534,6 +14589,7 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -14584,6 +14640,7 @@ }, "node_modules/lodash.merge": { "version": "4.6.2", + "dev": true, "license": "MIT" }, "node_modules/lodash.sortby": { @@ -15047,12 +15104,6 @@ "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.29.4.tgz", "integrity": "sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==" }, - "node_modules/monaco-editor": { - "version": "0.46.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.46.0.tgz", - "integrity": "sha512-ADwtLIIww+9FKybWscd7OCfm9odsFYHImBRI1v9AviGce55QY8raT+9ihH8jX/E/e6QVSGM+pKj4jSUSRmALNQ==", - "peer": true - }, "node_modules/ms": { "version": "2.1.2", "license": "MIT" @@ -15082,6 +15133,7 @@ }, "node_modules/natural-compare": { "version": "1.4.0", + "dev": true, "license": "MIT" }, "node_modules/natural-compare-lite": { @@ -15713,6 +15765,7 @@ "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -15727,6 +15780,7 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -15740,6 +15794,7 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -15782,6 +15837,7 @@ }, "node_modules/parent-module": { "version": "1.0.1", + "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -15838,6 +15894,7 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15852,6 +15909,7 @@ }, "node_modules/path-key": { "version": "3.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17217,6 +17275,7 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -17367,6 +17426,7 @@ }, "node_modules/punycode": { "version": "2.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -17424,6 +17484,7 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "dev": true, "funding": [ { "type": "github", @@ -18258,6 +18319,7 @@ }, "node_modules/reusify": { "version": "1.0.4", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -18266,6 +18328,7 @@ }, "node_modules/rimraf": { "version": "3.0.2", + "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -18333,6 +18396,7 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "dev": true, "funding": [ { "type": "github", @@ -18659,6 +18723,7 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -18669,6 +18734,7 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -19153,6 +19219,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -19187,6 +19254,7 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -19605,6 +19673,7 @@ }, "node_modules/text-table": { "version": "0.2.0", + "dev": true, "license": "MIT" }, "node_modules/throat": { @@ -19835,6 +19904,7 @@ }, "node_modules/type-check": { "version": "0.4.0", + "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -20029,6 +20099,7 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -20619,6 +20690,7 @@ }, "node_modules/which": { "version": "2.0.2", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -21132,6 +21204,7 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -21176,7 +21249,8 @@ "@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true }, "@ampproject/remapping": { "version": "2.1.2", @@ -22326,8 +22400,7 @@ } }, "@bugsnag/plugin-react": { - "version": "7.19.0", - "requires": {} + "version": "7.19.0" }, "@bugsnag/safe-json-stringify": { "version": "6.0.0" @@ -22550,34 +22623,36 @@ }, "@csstools/postcss-unset-value": { "version": "1.0.2", - "dev": true, - "requires": {} + "dev": true }, "@csstools/selector-specificity": { "version": "2.0.2", - "dev": true, - "requires": {} + "dev": true }, "@eslint-community/eslint-utils": { "version": "4.4.0", + "dev": true, "requires": { "eslint-visitor-keys": "^3.3.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "3.4.0" + "version": "3.4.0", + "dev": true } } }, "@eslint-community/regexpp": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==" + "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "dev": true }, "@eslint/eslintrc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -22593,12 +22668,14 @@ "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "globals": { "version": "13.21.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, "requires": { "type-fest": "^0.20.2" } @@ -22607,6 +22684,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "requires": { "argparse": "^2.0.1" } @@ -22614,14 +22692,16 @@ "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true } } }, "@eslint/js": { "version": "8.48.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==" + "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "dev": true }, "@floating-ui/core": { "version": "1.6.0", @@ -22670,6 +22750,7 @@ "version": "0.11.11", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -22677,12 +22758,14 @@ } }, "@humanwhocodes/module-importer": { - "version": "1.0.1" + "version": "1.0.1", + "dev": true }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -23340,16 +23423,19 @@ }, "@nodelib/fs.scandir": { "version": "2.1.5", + "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.5" + "version": "2.0.5", + "dev": true }, "@nodelib/fs.walk": { "version": "1.2.8", + "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -24483,8 +24569,7 @@ "@vkontakte/vk-bridge-react": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@vkontakte/vk-bridge-react/-/vk-bridge-react-1.0.1.tgz", - "integrity": "sha512-+r0zxh1UUDcok2VtsPDc6jWHQezfsqHK3M9LAnTpKI9XyZlrgfEQA8cYsc0F8urOXUJ3FhEHXuJQjQGgK0Z5PA==", - "requires": {} + "integrity": "sha512-+r0zxh1UUDcok2VtsPDc6jWHQezfsqHK3M9LAnTpKI9XyZlrgfEQA8cYsc0F8urOXUJ3FhEHXuJQjQGgK0Z5PA==" }, "@vkontakte/vk-miniapps-deploy": { "version": "0.0.25", @@ -24673,7 +24758,8 @@ "acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true }, "acorn-globals": { "version": "6.0.0", @@ -24691,14 +24777,13 @@ }, "acorn-import-assertions": { "version": "1.8.0", - "dev": true, - "requires": {} + "dev": true }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} + "dev": true }, "acorn-node": { "version": "1.8.2", @@ -24755,6 +24840,7 @@ }, "ajv": { "version": "6.12.6", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -24787,8 +24873,7 @@ }, "ajv-keywords": { "version": "3.5.2", - "dev": true, - "requires": {} + "dev": true }, "ansi-colors": { "version": "4.1.3", @@ -24807,7 +24892,8 @@ "dev": true }, "ansi-regex": { - "version": "5.0.1" + "version": "5.0.1", + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -25346,8 +25432,7 @@ }, "babel-plugin-named-asset-import": { "version": "0.3.8", - "dev": true, - "requires": {} + "dev": true }, "babel-plugin-polyfill-corejs2": { "version": "0.3.2", @@ -25590,7 +25675,8 @@ } }, "callsites": { - "version": "3.1.0" + "version": "3.1.0", + "dev": true }, "camel-case": { "version": "4.1.2", @@ -26098,6 +26184,7 @@ }, "cross-spawn": { "version": "7.0.3", + "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -26116,8 +26203,7 @@ }, "css-declaration-sorter": { "version": "6.3.1", - "dev": true, - "requires": {} + "dev": true }, "css-has-pseudo": { "version": "3.0.4", @@ -26200,8 +26286,7 @@ }, "css-prefers-color-scheme": { "version": "6.0.3", - "dev": true, - "requires": {} + "dev": true }, "css-select": { "version": "4.3.0", @@ -26288,8 +26373,7 @@ }, "cssnano-utils": { "version": "3.1.0", - "dev": true, - "requires": {} + "dev": true }, "csso": { "version": "4.2.0", @@ -26956,7 +27040,8 @@ "dev": true }, "deep-is": { - "version": "0.1.4" + "version": "0.1.4", + "dev": true }, "default-gateway": { "version": "6.0.3", @@ -27060,8 +27145,7 @@ "dignals-model": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dignals-model/-/dignals-model-0.1.0.tgz", - "integrity": "sha512-+LmMZ4JUWL8/pniuF7avMfhzr4inJYm386JmAOiM7eBYLwN541kL9LnOQFcY65JRI+u6X0Gt+/JMK4tAZtctfQ==", - "requires": {} + "integrity": "sha512-+LmMZ4JUWL8/pniuF7avMfhzr4inJYm386JmAOiM7eBYLwN541kL9LnOQFcY65JRI+u6X0Gt+/JMK4tAZtctfQ==" }, "dignals-react": { "version": "0.1.27", @@ -27097,6 +27181,7 @@ }, "doctrine": { "version": "3.0.0", + "dev": true, "requires": { "esutils": "^2.0.2" } @@ -27397,6 +27482,7 @@ "version": "8.48.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -27440,22 +27526,26 @@ "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "chalk": { "version": "4.1.2", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "escape-string-regexp": { - "version": "4.0.0" + "version": "4.0.0", + "dev": true }, "eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -27464,10 +27554,12 @@ "eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true }, "globals": { "version": "13.20.0", + "dev": true, "requires": { "type-fest": "^0.20.2" } @@ -27476,12 +27568,14 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "requires": { "argparse": "^2.0.1" } }, "type-fest": { - "version": "0.20.2" + "version": "0.20.2", + "dev": true } } }, @@ -27799,8 +27893,7 @@ } }, "eslint-plugin-promise": { - "version": "6.1.1", - "requires": {} + "version": "6.1.1" }, "eslint-plugin-react": { "version": "7.32.2", @@ -27948,12 +28041,10 @@ }, "eslint-plugin-react-hooks": { "version": "4.6.0", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-standard": { - "version": "5.0.0", - "requires": {} + "version": "5.0.0" }, "eslint-plugin-testing-library": { "version": "5.6.2", @@ -28048,6 +28139,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, "requires": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -28057,7 +28149,8 @@ "eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true } } }, @@ -28067,12 +28160,14 @@ }, "esquery": { "version": "1.5.0", + "dev": true, "requires": { "estraverse": "^5.1.0" } }, "esrecurse": { "version": "4.3.0", + "dev": true, "requires": { "estraverse": "^5.2.0" } @@ -28215,7 +28310,8 @@ } }, "fast-deep-equal": { - "version": "3.1.3" + "version": "3.1.3", + "dev": true }, "fast-glob": { "version": "3.2.11", @@ -28238,13 +28334,16 @@ } }, "fast-json-stable-stringify": { - "version": "2.1.0" + "version": "2.1.0", + "dev": true }, "fast-levenshtein": { - "version": "2.0.6" + "version": "2.0.6", + "dev": true }, "fastq": { "version": "1.13.0", + "dev": true, "requires": { "reusify": "^1.0.4" } @@ -28270,6 +28369,7 @@ }, "file-entry-cache": { "version": "6.0.1", + "dev": true, "requires": { "flat-cache": "^3.0.4" } @@ -28366,6 +28466,7 @@ }, "find-up": { "version": "5.0.0", + "dev": true, "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -28373,13 +28474,15 @@ }, "flat-cache": { "version": "3.0.4", + "dev": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" } }, "flatted": { - "version": "3.2.7" + "version": "3.2.7", + "dev": true }, "follow-redirects": { "version": "1.15.1", @@ -28593,6 +28696,7 @@ }, "glob-parent": { "version": "6.0.2", + "dev": true, "requires": { "is-glob": "^4.0.3" } @@ -28685,7 +28789,8 @@ "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "graphlib": { "version": "2.1.8", @@ -28887,8 +28992,7 @@ }, "icss-utils": { "version": "5.1.0", - "dev": true, - "requires": {} + "dev": true }, "idb": { "version": "7.0.2", @@ -28907,7 +29011,8 @@ "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true }, "immer": { "version": "9.0.15", @@ -28915,13 +29020,15 @@ }, "import-fresh": { "version": "3.3.0", + "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" }, "dependencies": { "resolve-from": { - "version": "4.0.0" + "version": "4.0.0", + "dev": true } } }, @@ -29067,7 +29174,8 @@ "version": "2.0.0" }, "is-path-inside": { - "version": "3.0.3" + "version": "3.0.3", + "dev": true }, "is-plain-object": { "version": "2.0.4", @@ -29150,7 +29258,8 @@ "version": "0.0.2" }, "isexe": { - "version": "2.0.0" + "version": "2.0.0", + "dev": true }, "isobject": { "version": "3.0.1", @@ -29792,8 +29901,7 @@ }, "jest-pnp-resolver": { "version": "1.2.2", - "dev": true, - "requires": {} + "dev": true }, "jest-regex-util": { "version": "27.5.1", @@ -30461,10 +30569,12 @@ "dev": true }, "json-schema-traverse": { - "version": "0.4.1" + "version": "0.4.1", + "dev": true }, "json-stable-stringify-without-jsonify": { - "version": "1.0.1" + "version": "1.0.1", + "dev": true }, "json5": { "version": "1.0.2", @@ -30551,6 +30661,7 @@ }, "levn": { "version": "0.4.1", + "dev": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -30587,6 +30698,7 @@ }, "locate-path": { "version": "6.0.0", + "dev": true, "requires": { "p-locate": "^5.0.0" } @@ -30620,7 +30732,8 @@ "dev": true }, "lodash.merge": { - "version": "4.6.2" + "version": "4.6.2", + "dev": true }, "lodash.sortby": { "version": "4.7.0", @@ -30952,12 +31065,6 @@ "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.29.4.tgz", "integrity": "sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==" }, - "monaco-editor": { - "version": "0.46.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.46.0.tgz", - "integrity": "sha512-ADwtLIIww+9FKybWscd7OCfm9odsFYHImBRI1v9AviGce55QY8raT+9ihH8jX/E/e6QVSGM+pKj4jSUSRmALNQ==", - "peer": true - }, "ms": { "version": "2.1.2" }, @@ -30974,7 +31081,8 @@ "dev": true }, "natural-compare": { - "version": "1.4.0" + "version": "1.4.0", + "dev": true }, "natural-compare-lite": { "version": "1.4.0", @@ -31384,6 +31492,7 @@ "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, "requires": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -31395,12 +31504,14 @@ }, "p-limit": { "version": "3.1.0", + "dev": true, "requires": { "yocto-queue": "^0.1.0" } }, "p-locate": { "version": "5.0.0", + "dev": true, "requires": { "p-limit": "^3.0.2" } @@ -31427,6 +31538,7 @@ }, "parent-module": { "version": "1.0.1", + "dev": true, "requires": { "callsites": "^3.0.0" } @@ -31465,13 +31577,15 @@ } }, "path-exists": { - "version": "4.0.0" + "version": "4.0.0", + "dev": true }, "path-is-absolute": { "version": "1.0.1" }, "path-key": { - "version": "3.1.1" + "version": "3.1.1", + "dev": true }, "path-parse": { "version": "1.0.7" @@ -31602,8 +31716,7 @@ }, "postcss-browser-comments": { "version": "4.0.0", - "dev": true, - "requires": {} + "dev": true }, "postcss-calc": { "version": "8.2.4", @@ -31689,23 +31802,19 @@ }, "postcss-discard-comments": { "version": "5.1.2", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-duplicates": { "version": "5.1.0", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-empty": { "version": "5.1.1", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-overridden": { "version": "5.1.0", - "dev": true, - "requires": {} + "dev": true }, "postcss-double-position-gradients": { "version": "3.1.2", @@ -31724,8 +31833,7 @@ }, "postcss-flexbugs-fixes": { "version": "5.0.2", - "dev": true, - "requires": {} + "dev": true }, "postcss-focus-visible": { "version": "6.0.4", @@ -31743,13 +31851,11 @@ }, "postcss-font-variant": { "version": "5.0.0", - "dev": true, - "requires": {} + "dev": true }, "postcss-gap-properties": { "version": "3.0.5", - "dev": true, - "requires": {} + "dev": true }, "postcss-image-set-function": { "version": "4.0.7", @@ -31769,8 +31875,7 @@ }, "postcss-initial": { "version": "4.0.1", - "dev": true, - "requires": {} + "dev": true }, "postcss-js": { "version": "4.0.0", @@ -31815,13 +31920,11 @@ }, "postcss-logical": { "version": "5.0.4", - "dev": true, - "requires": {} + "dev": true }, "postcss-media-minmax": { "version": "5.0.0", - "dev": true, - "requires": {} + "dev": true }, "postcss-merge-longhand": { "version": "5.1.6", @@ -31875,8 +31978,7 @@ }, "postcss-modules-extract-imports": { "version": "3.0.0", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -31927,8 +32029,7 @@ }, "postcss-normalize-charset": { "version": "5.1.0", - "dev": true, - "requires": {} + "dev": true }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -32009,8 +32110,7 @@ }, "postcss-page-break": { "version": "3.0.4", - "dev": true, - "requires": {} + "dev": true }, "postcss-place": { "version": "7.0.5", @@ -32098,8 +32198,7 @@ }, "postcss-replace-overflow-wrap": { "version": "4.0.0", - "dev": true, - "requires": {} + "dev": true }, "postcss-selector-not": { "version": "6.0.1", @@ -32171,7 +32270,8 @@ "dev": true }, "prelude-ls": { - "version": "1.2.1" + "version": "1.2.1", + "dev": true }, "prettier": { "version": "2.8.7", @@ -32266,7 +32366,8 @@ } }, "punycode": { - "version": "2.1.1" + "version": "2.1.1", + "dev": true }, "punycode.js": { "version": "2.3.1", @@ -32298,7 +32399,8 @@ "dev": true }, "queue-microtask": { - "version": "1.2.3" + "version": "1.2.3", + "dev": true }, "quick-lru": { "version": "5.1.1", @@ -32849,10 +32951,12 @@ "dev": true }, "reusify": { - "version": "1.0.4" + "version": "1.0.4", + "dev": true }, "rimraf": { "version": "3.0.2", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -32899,6 +33003,7 @@ }, "run-parallel": { "version": "1.2.0", + "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -33116,12 +33221,14 @@ }, "shebang-command": { "version": "2.0.0", + "dev": true, "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "3.0.0" + "version": "3.0.0", + "dev": true }, "shell-quote": { "version": "1.7.3", @@ -33460,6 +33567,7 @@ }, "strip-ansi": { "version": "6.0.1", + "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -33477,12 +33585,12 @@ "dev": true }, "strip-json-comments": { - "version": "3.1.1" + "version": "3.1.1", + "dev": true }, "style-loader": { "version": "3.3.1", - "dev": true, - "requires": {} + "dev": true }, "style-mod": { "version": "4.0.3" @@ -33744,7 +33852,8 @@ } }, "text-table": { - "version": "0.2.0" + "version": "0.2.0", + "dev": true }, "throat": { "version": "6.0.2", @@ -33792,8 +33901,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.2.tgz", "integrity": "sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==", - "dev": true, - "requires": {} + "dev": true }, "ts-jest": { "version": "29.1.0", @@ -33884,6 +33992,7 @@ }, "type-check": { "version": "0.4.0", + "dev": true, "requires": { "prelude-ls": "^1.2.1" } @@ -33987,6 +34096,7 @@ }, "uri-js": { "version": "4.4.1", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -34000,8 +34110,7 @@ } }, "use-sync-external-store": { - "version": "1.2.0", - "requires": {} + "version": "1.2.0" }, "util-deprecate": { "version": "1.0.2" @@ -34295,8 +34404,7 @@ }, "ws": { "version": "8.8.1", - "dev": true, - "requires": {} + "dev": true } } }, @@ -34385,6 +34493,7 @@ }, "which": { "version": "2.0.2", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -34701,8 +34810,7 @@ }, "ws": { "version": "7.5.9", - "dev": true, - "requires": {} + "dev": true }, "xdg-basedir": { "version": "4.0.0" @@ -34758,7 +34866,8 @@ "dev": true }, "yocto-queue": { - "version": "0.1.0" + "version": "0.1.0", + "dev": true }, "zip-a-folder": { "version": "0.0.12", diff --git a/GPTutor-Frontend/src/entity/Trainers/index.ts b/GPTutor-Frontend/src/entity/Trainers/index.ts index 5fcb4008..6134a8a8 100644 --- a/GPTutor-Frontend/src/entity/Trainers/index.ts +++ b/GPTutor-Frontend/src/entity/Trainers/index.ts @@ -16,18 +16,22 @@ func main() { } `; +const initialValueTerminal = `ls -la`; + const JSPrompt = "I want you to act as a javascript interpreter. I will type code and you will reply with what the javascript console should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. do not write explanations. do not type commands unless I instruct you to do so. Before you run the code, you must do the parsing. when I need to tell you something in russian, I will do so by putting text inside curly brackets {like this}. You should use markdown in your output. Mark output as javascript"; const PYTHONPrompt = "I want you to act as a python interpreter. I will type code and you will reply with what the python console should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. do not write explanations. do not type commands unless I instruct you to do so. Before you run the code, you must do the parsing. when I need to tell you something in russian, I will do so by putting text inside curly brackets {like this}. You should use markdown in your output. Mark output as python"; const GoPrompt = "I want you to act as a golang interpreter. I will type code and you will reply with what the python console should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. do not write explanations. do not type commands unless I instruct you to do so. Before you run the code, you must do the parsing. when I need to tell you something in russian, I will do so by putting text inside curly brackets {like this}. You should use markdown in your output. Mark output as go"; +const TerminalPrompt = + "I want you to act as a Linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. do not write explanations. do not type commands unless I instruct you to do so. when I need to tell you something in russian, I will do so by putting text inside curly brackets {like this}. You should use markdown in your output. Mark output as bash"; export enum Languages { Javascript = "javascript", Python = "python", - Go = "go", + Terminal = "bash", } class Trainers { @@ -63,4 +67,10 @@ export const trainers = new Trainers([ initialValuePython ), new TrainerItem(ModeType.GO_TRAINING, Languages.Go, GoPrompt, initialValueGo), + new TrainerItem( + ModeType.TERMINAL_TRAINING, + Languages.Terminal, + TerminalPrompt, + initialValueTerminal + ), ]); diff --git a/GPTutor-Frontend/src/entity/lessons/modeType.ts b/GPTutor-Frontend/src/entity/lessons/modeType.ts index 8f60632d..98495fe1 100644 --- a/GPTutor-Frontend/src/entity/lessons/modeType.ts +++ b/GPTutor-Frontend/src/entity/lessons/modeType.ts @@ -16,4 +16,5 @@ export enum ModeType { JS_TRAINING = "JS TRAINING", PYTHON_TRAINING = "PYTHON TRAINING", GO_TRAINING = "GO TRAINING", + TERMINAL_TRAINING = "TERMINAL TRAINING", }