From acb51971e84eed8bab210afd77f29a3e5e1a636b Mon Sep 17 00:00:00 2001 From: Yechan Lee Date: Wed, 15 Nov 2023 17:25:48 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20docker=EC=97=90=EC=84=9C=20stdout,=20st?= =?UTF-8?q?derr,=20time=20=EA=B2=B0=EA=B3=BC=EB=A5=BC=20=EB=82=B4=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=A7=8C=EB=93=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- be/algo-with-me-docker/.dockerignore | 2 + be/algo-with-me-docker/.gitignore | 132 --- be/algo-with-me-docker/Dockerfile | 9 +- .../docker-sh/createNetwork.sh | 1 + be/algo-with-me-docker/docker-sh/prune.sh | 3 + be/algo-with-me-docker/docker-sh/run.sh | 14 + .../{ => docker-sh}/stop.sh | 0 be/algo-with-me-docker/node-sh/run.sh | 30 + be/algo-with-me-docker/node-sh/runJs.sh | 19 + be/algo-with-me-docker/node-sh/time | Bin 0 -> 27160 bytes be/algo-with-me-docker/package-lock.json | 760 ------------------ be/algo-with-me-docker/package.json | 9 - be/algo-with-me-docker/run.sh | 4 - be/algo-with-me-docker/src/app.ts | 23 - be/algo-with-me-docker/tsconfig.json | 24 - 15 files changed, 73 insertions(+), 957 deletions(-) create mode 100644 be/algo-with-me-docker/.dockerignore delete mode 100644 be/algo-with-me-docker/.gitignore create mode 100644 be/algo-with-me-docker/docker-sh/createNetwork.sh create mode 100755 be/algo-with-me-docker/docker-sh/prune.sh create mode 100755 be/algo-with-me-docker/docker-sh/run.sh rename be/algo-with-me-docker/{ => docker-sh}/stop.sh (100%) create mode 100755 be/algo-with-me-docker/node-sh/run.sh create mode 100755 be/algo-with-me-docker/node-sh/runJs.sh create mode 100755 be/algo-with-me-docker/node-sh/time delete mode 100644 be/algo-with-me-docker/package-lock.json delete mode 100644 be/algo-with-me-docker/package.json delete mode 100755 be/algo-with-me-docker/run.sh delete mode 100644 be/algo-with-me-docker/src/app.ts delete mode 100644 be/algo-with-me-docker/tsconfig.json diff --git a/be/algo-with-me-docker/.dockerignore b/be/algo-with-me-docker/.dockerignore new file mode 100644 index 0000000..4921d12 --- /dev/null +++ b/be/algo-with-me-docker/.dockerignore @@ -0,0 +1,2 @@ +docker-sh/ +build.sh \ No newline at end of file diff --git a/be/algo-with-me-docker/.gitignore b/be/algo-with-me-docker/.gitignore deleted file mode 100644 index 6d2198e..0000000 --- a/be/algo-with-me-docker/.gitignore +++ /dev/null @@ -1,132 +0,0 @@ -### Node template -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* - diff --git a/be/algo-with-me-docker/Dockerfile b/be/algo-with-me-docker/Dockerfile index 9498897..40348d5 100644 --- a/be/algo-with-me-docker/Dockerfile +++ b/be/algo-with-me-docker/Dockerfile @@ -1,4 +1,4 @@ -ARG NODE_VERSION=18.16.0 +ARG NODE_VERSION=20.9.0 ARG ALPINE_VERSION=3.18 FROM node:${NODE_VERSION}-alpine @@ -7,9 +7,8 @@ MAINTAINER Yechan Lee CMD "mkdir -p /algo-with-me" WORKDIR /algo-with-me -COPY . /algo-with-me -RUN npm install +COPY --chmod=555 ./node-sh /algo-with-me/node-sh -EXPOSE 3000 +# EXPOSE 3000 -CMD ["node", "./dist/app.js"] +CMD ./node-sh/run.sh $COMPETITION_ID $USER_ID $PROBLEM_ID diff --git a/be/algo-with-me-docker/docker-sh/createNetwork.sh b/be/algo-with-me-docker/docker-sh/createNetwork.sh new file mode 100644 index 0000000..ea461bb --- /dev/null +++ b/be/algo-with-me-docker/docker-sh/createNetwork.sh @@ -0,0 +1 @@ +sudo docker network create --driver bridge isolatedNetwork \ No newline at end of file diff --git a/be/algo-with-me-docker/docker-sh/prune.sh b/be/algo-with-me-docker/docker-sh/prune.sh new file mode 100755 index 0000000..f1caedd --- /dev/null +++ b/be/algo-with-me-docker/docker-sh/prune.sh @@ -0,0 +1,3 @@ +sudo docker container stop algo-with-me-judge +sudo docker container prune --force +sudo docker image prune --force diff --git a/be/algo-with-me-docker/docker-sh/run.sh b/be/algo-with-me-docker/docker-sh/run.sh new file mode 100755 index 0000000..da553f0 --- /dev/null +++ b/be/algo-with-me-docker/docker-sh/run.sh @@ -0,0 +1,14 @@ +sudo docker run \ +-p 3000:3000 \ +-e COMPETITION_ID=$1 \ +-e USER_ID=$2 \ +-e PROBLEM_ID=$3 \ +-v $HOME/algo-with-me/problems:/algo-with-me/problems:ro \ +-v $HOME/algo-with-me/testcases:/algo-with-me/testcases:ro \ +-v $HOME/algo-with-me/submissions:/algo-with-me/submissions \ +--user $(id -u):$(id -g) \ +--name algo-with-me-judge \ +algo-with-me-judge:latest + +#--network none \ +#--network isolatedNetwork \ \ No newline at end of file diff --git a/be/algo-with-me-docker/stop.sh b/be/algo-with-me-docker/docker-sh/stop.sh similarity index 100% rename from be/algo-with-me-docker/stop.sh rename to be/algo-with-me-docker/docker-sh/stop.sh diff --git a/be/algo-with-me-docker/node-sh/run.sh b/be/algo-with-me-docker/node-sh/run.sh new file mode 100755 index 0000000..96b6914 --- /dev/null +++ b/be/algo-with-me-docker/node-sh/run.sh @@ -0,0 +1,30 @@ +# PARAM +# $1 COMPETITION_ID +# $2 USER_ID +# $3 PROBLEM_ID + +# DESCRIPTION +# SUBMISSION_JS_FILE에서 파일을 읽어, node로 실행한다. +# DETAIL_FILE에는 사용한 시간(sec)과 최대 memory 메모리 사용량(KB)이 공백(' ')으로 분리되어 기록된다. + +mkdir -p "/algo-with-me/submissions/$1/$2/" + +SUBMISSION_JS_FILE="/algo-with-me/submissions/$1/$2/$3.js" +DETAIL_FILE="/algo-with-me/submissions/$1/$2/$3.detail" + +# 제출된 js 파일이 있으면 node로 js 파일 실행 +# 주의: judge.sh와 run.sh는 execute 권한이 부여되어야 함 +if [ -f "$SUBMISSION_JS_FILE" ]; then + echo "[algo-with-me] run.sh: started running $SUBMISSION_JS_FILE" + # -o FILE Write result to FILE + # -f FMT Custom format + # U Total number of CPU-seconds that the process used directly (in user mode), in seconds. + # e Elapsed real (wall clock) time used by the process, in seconds. + # M Maximum resident set size of the process during its lifetime, in Kilobytes. + /usr/bin/time -o "$DETAIL_FILE" -f "%e %M" /algo-with-me/node-sh/runJs.sh "$1" "$2" "$3" + echo "[algo-with-me] run.sh: successfully ran $SUBMISSION_JS_FILE" +else + echo "[algo-with-me] run.sh: cannot find submitted js file $SUBMISSION_JS_FILE" +fi + +exit diff --git a/be/algo-with-me-docker/node-sh/runJs.sh b/be/algo-with-me-docker/node-sh/runJs.sh new file mode 100755 index 0000000..7d67e73 --- /dev/null +++ b/be/algo-with-me-docker/node-sh/runJs.sh @@ -0,0 +1,19 @@ +# PARAM +# $1 COMPETITION_ID +# $2 USER_ID +# $3 PROBLEM_ID + +# DESCRIPTION +# node로 제출한 파일을 실행한다. +# stdout, stderr는 각각 STDOUT_FILE, STDERR_FILE에 기록된다. +# RESULT_FILE에는 제출한 파일의 solution() 값이 기록되는데, shell script 상에서는 할 수 없어 템플릿 코드에서 기록해주어야 한다. +# node 실행할 때 첫번째 인자로 RESULT_FILE의 파일 경로를 입력해준다. + +SUBMISSION_JS_FILE="/algo-with-me/submissions/$1/$2/$3.js" +STDOUT_FILE="/algo-with-me/submissions/$1/$2/$3.stdout" +STDERR_FILE="/algo-with-me/submissions/$1/$2/$3.stderr" +RESULT_FILE="/algo-with-me/submissions/$1/$2/$3.result" + +node "$SUBMISSION_JS_FILE" "$RESULT_FILE" 1> "$STDOUT_FILE" 2> "$STDERR_FILE" + +exit diff --git a/be/algo-with-me-docker/node-sh/time b/be/algo-with-me-docker/node-sh/time new file mode 100755 index 0000000000000000000000000000000000000000..ad798ce30e1769b19bf9de7ff88c94c3f6680f15 GIT binary patch literal 27160 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

sjs{Yw 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 Dk6&l` literal 0 HcmV?d00001 diff --git a/be/algo-with-me-docker/package-lock.json b/be/algo-with-me-docker/package-lock.json deleted file mode 100644 index ad508b5..0000000 --- a/be/algo-with-me-docker/package-lock.json +++ /dev/null @@ -1,760 +0,0 @@ -{ - "name": "algo-with-me-docker", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "express": "^4.18.2" - }, - "devDependencies": { - "@types/express": "^4.17.21", - "@types/node": "^20.9.0" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.41", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", - "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", - "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/qs": { - "version": "6.9.10", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", - "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", - "dev": true, - "dependencies": { - "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - } - } -} diff --git a/be/algo-with-me-docker/package.json b/be/algo-with-me-docker/package.json deleted file mode 100644 index e7d570e..0000000 --- a/be/algo-with-me-docker/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "devDependencies": { - "@types/express": "^4.17.21", - "@types/node": "^20.9.0" - }, - "dependencies": { - "express": "^4.18.2" - } -} diff --git a/be/algo-with-me-docker/run.sh b/be/algo-with-me-docker/run.sh deleted file mode 100755 index 8ab3733..0000000 --- a/be/algo-with-me-docker/run.sh +++ /dev/null @@ -1,4 +0,0 @@ -sudo docker run -d \ --p 3000:3000 \ ---name algo-with-me-judge \ -algo-with-me-judge:latest \ No newline at end of file diff --git a/be/algo-with-me-docker/src/app.ts b/be/algo-with-me-docker/src/app.ts deleted file mode 100644 index 70b88b9..0000000 --- a/be/algo-with-me-docker/src/app.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as express from 'express'; - -import fs from 'node:fs'; - -const PORT = process.env.PORT || 3000; -const app = express(); -app.use(express.json()); - -app.get('/', (req, res) => { - res.send('Hello, Docker!'); -}); - -app.post('/', (req, res) => { - const {code, a, b} = req.body; - - const result = eval(`${code} solve(${a}, ${b})`); - - res.send(JSON.stringify(result)); -}) - -app.listen(PORT, () => { - console.log(`Server running on port ${PORT}`); -}); diff --git a/be/algo-with-me-docker/tsconfig.json b/be/algo-with-me-docker/tsconfig.json deleted file mode 100644 index f52a0b1..0000000 --- a/be/algo-with-me-docker/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "declaration": true, - "removeComments": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "allowSyntheticDefaultImports": true, - "target": "ES2021", - "sourceMap": true, - "outDir": "./dist", - "baseUrl": "./", - "incremental": true, - "skipLibCheck": true, - "strictNullChecks": false, - "noImplicitAny": false, - "strictBindCallApply": false, - "forceConsistentCasingInFileNames": false, - "noFallthroughCasesInSwitch": false, - "paths": { - "@src/*": ["./src/*"], - } - } -}