diff --git a/extension/bwcontest/package-lock.json b/extension/bwcontest/package-lock.json
index d64becd..baccdbd 100644
--- a/extension/bwcontest/package-lock.json
+++ b/extension/bwcontest/package-lock.json
@@ -8,7 +8,7 @@
"name": "bwcontest",
"version": "0.0.1",
"dependencies": {
- "@vscode/vsce": "^2.20.1",
+ "@vscode/vsce": "^2.21.0",
"axios": "^1.5.0",
"fs-extra": "^11.1.1",
"tree-kill": "^1.2.2"
@@ -24,20 +24,20 @@
"@types/mocha": "^10.0.1",
"@types/node": "20.x",
"@types/vscode": "^1.81.0",
- "@typescript-eslint/eslint-plugin": "^6.4.1",
- "@typescript-eslint/parser": "^6.4.1",
+ "@typescript-eslint/eslint-plugin": "^6.6.0",
+ "@typescript-eslint/parser": "^6.6.0",
"@vscode/test-electron": "^2.3.4",
"concurrently": "^8.2.1",
"esbuild": "^0.19.2",
"eslint": "^8.48.0",
- "glob": "^10.3.3",
+ "glob": "^10.3.4",
"mocha": "^10.2.0",
- "postcss": "^8.4.28",
+ "postcss": "^8.4.29",
"rollup-plugin-css-only": "^4.3.0",
"rollup-plugin-postcss": "^4.0.2",
"rollup-plugin-svelte": "^7.1.6",
"svelte": "^4.2.0",
- "svelte-check": "^3.5.0",
+ "svelte-check": "^3.5.1",
"svelte-preprocess": "^5.0.4",
"typescript": "^5.2.2"
},
@@ -990,9 +990,9 @@
"dev": true
},
"node_modules/@types/semver": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
- "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==",
"dev": true
},
"node_modules/@types/vscode": {
@@ -1002,16 +1002,16 @@
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz",
- "integrity": "sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.6.0.tgz",
+ "integrity": "sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.5.1",
- "@typescript-eslint/scope-manager": "6.4.1",
- "@typescript-eslint/type-utils": "6.4.1",
- "@typescript-eslint/utils": "6.4.1",
- "@typescript-eslint/visitor-keys": "6.4.1",
+ "@typescript-eslint/scope-manager": "6.6.0",
+ "@typescript-eslint/type-utils": "6.6.0",
+ "@typescript-eslint/utils": "6.6.0",
+ "@typescript-eslint/visitor-keys": "6.6.0",
"debug": "^4.3.4",
"graphemer": "^1.4.0",
"ignore": "^5.2.4",
@@ -1037,15 +1037,15 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.1.tgz",
- "integrity": "sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.6.0.tgz",
+ "integrity": "sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "6.4.1",
- "@typescript-eslint/types": "6.4.1",
- "@typescript-eslint/typescript-estree": "6.4.1",
- "@typescript-eslint/visitor-keys": "6.4.1",
+ "@typescript-eslint/scope-manager": "6.6.0",
+ "@typescript-eslint/types": "6.6.0",
+ "@typescript-eslint/typescript-estree": "6.6.0",
+ "@typescript-eslint/visitor-keys": "6.6.0",
"debug": "^4.3.4"
},
"engines": {
@@ -1065,13 +1065,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz",
- "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.6.0.tgz",
+ "integrity": "sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "6.4.1",
- "@typescript-eslint/visitor-keys": "6.4.1"
+ "@typescript-eslint/types": "6.6.0",
+ "@typescript-eslint/visitor-keys": "6.6.0"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
@@ -1082,13 +1082,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz",
- "integrity": "sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.6.0.tgz",
+ "integrity": "sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "6.4.1",
- "@typescript-eslint/utils": "6.4.1",
+ "@typescript-eslint/typescript-estree": "6.6.0",
+ "@typescript-eslint/utils": "6.6.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.0.1"
},
@@ -1109,9 +1109,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz",
- "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.6.0.tgz",
+ "integrity": "sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==",
"dev": true,
"engines": {
"node": "^16.0.0 || >=18.0.0"
@@ -1122,13 +1122,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz",
- "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.6.0.tgz",
+ "integrity": "sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "6.4.1",
- "@typescript-eslint/visitor-keys": "6.4.1",
+ "@typescript-eslint/types": "6.6.0",
+ "@typescript-eslint/visitor-keys": "6.6.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -1149,17 +1149,17 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz",
- "integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.6.0.tgz",
+ "integrity": "sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@types/json-schema": "^7.0.12",
"@types/semver": "^7.5.0",
- "@typescript-eslint/scope-manager": "6.4.1",
- "@typescript-eslint/types": "6.4.1",
- "@typescript-eslint/typescript-estree": "6.4.1",
+ "@typescript-eslint/scope-manager": "6.6.0",
+ "@typescript-eslint/types": "6.6.0",
+ "@typescript-eslint/typescript-estree": "6.6.0",
"semver": "^7.5.4"
},
"engines": {
@@ -1174,12 +1174,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz",
- "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.6.0.tgz",
+ "integrity": "sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "6.4.1",
+ "@typescript-eslint/types": "6.6.0",
"eslint-visitor-keys": "^3.4.1"
},
"engines": {
@@ -1206,14 +1206,14 @@
}
},
"node_modules/@vscode/vsce": {
- "version": "2.20.1",
- "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.20.1.tgz",
- "integrity": "sha512-ilbvoqvR/1/zseRPBAzYR6aKqSJ+jvda4/BqIwOqTxajpvLtEpK3kMLs77+dJdrlygS+VrP7Yhad8j0ukyD96g==",
+ "version": "2.21.0",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.21.0.tgz",
+ "integrity": "sha512-KuxYqScqUY/duJbkj9eE2tN2X/WJoGAy54hHtxT3ZBkM6IzrOg7H7CXGUPBxNlmqku2w/cAjOUSrgIHlzz0mbA==",
"dependencies": {
"azure-devops-node-api": "^11.0.1",
"chalk": "^2.4.2",
"cheerio": "^1.0.0-rc.9",
- "commander": "^6.1.0",
+ "commander": "^6.2.1",
"glob": "^7.0.6",
"hosted-git-info": "^4.0.2",
"jsonc-parser": "^3.2.0",
@@ -3027,9 +3027,9 @@
"optional": true
},
"node_modules/glob": {
- "version": "10.3.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz",
- "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==",
+ "version": "10.3.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz",
+ "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==",
"dev": true,
"dependencies": {
"foreground-child": "^3.1.0",
@@ -4462,9 +4462,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.28",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
- "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
+ "version": "8.4.29",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz",
+ "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
"dev": true,
"funding": [
{
@@ -5888,9 +5888,9 @@
}
},
"node_modules/svelte-check": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.5.0.tgz",
- "integrity": "sha512-KHujbn4k17xKYLmtCwv0sKKM7uiHTYcQvXnvrCcNU6a7hcszh99zFTIoiu/Sp/ewAw5aJmillJ1Cs8gKLmcX4A==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.5.1.tgz",
+ "integrity": "sha512-+Zb4iHxAhdUtcUg/WJPRjlS1RJalIsWAe9Mz6G1zyznSs7dDkT7VUBdXc3q7Iwg49O/VrZgyJRvOJkjuBfKjFA==",
"dev": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.17",
diff --git a/extension/bwcontest/package.json b/extension/bwcontest/package.json
index 617253c..1e05350 100644
--- a/extension/bwcontest/package.json
+++ b/extension/bwcontest/package.json
@@ -88,25 +88,25 @@
"@types/mocha": "^10.0.1",
"@types/node": "20.x",
"@types/vscode": "^1.81.0",
- "@typescript-eslint/eslint-plugin": "^6.4.1",
- "@typescript-eslint/parser": "^6.4.1",
+ "@typescript-eslint/eslint-plugin": "^6.6.0",
+ "@typescript-eslint/parser": "^6.6.0",
"@vscode/test-electron": "^2.3.4",
"concurrently": "^8.2.1",
"esbuild": "^0.19.2",
"eslint": "^8.48.0",
- "glob": "^10.3.3",
+ "glob": "^10.3.4",
"mocha": "^10.2.0",
- "postcss": "^8.4.28",
+ "postcss": "^8.4.29",
"rollup-plugin-css-only": "^4.3.0",
"rollup-plugin-postcss": "^4.0.2",
"rollup-plugin-svelte": "^7.1.6",
"svelte": "^4.2.0",
- "svelte-check": "^3.5.0",
+ "svelte-check": "^3.5.1",
"svelte-preprocess": "^5.0.4",
"typescript": "^5.2.2"
},
"dependencies": {
- "@vscode/vsce": "^2.20.1",
+ "@vscode/vsce": "^2.21.0",
"axios": "^1.5.0",
"fs-extra": "^11.1.1",
"tree-kill": "^1.2.2"
diff --git a/sandbox/.dockerignore b/sandbox/.dockerignore
new file mode 100644
index 0000000..c27e9ba
--- /dev/null
+++ b/sandbox/.dockerignore
@@ -0,0 +1,3 @@
+node_modules
+build
+.env
\ No newline at end of file
diff --git a/sandbox/.env.example b/sandbox/.env.example
new file mode 100644
index 0000000..3f8a0de
--- /dev/null
+++ b/sandbox/.env.example
@@ -0,0 +1,2 @@
+ADMIN_URL="http://localhost:5173"
+REPO_URL="http://localhost:7006"
\ No newline at end of file
diff --git a/sandbox/docker-compose.yml b/sandbox/docker-compose.yml
index f0713e3..c2791b6 100644
--- a/sandbox/docker-compose.yml
+++ b/sandbox/docker-compose.yml
@@ -3,6 +3,6 @@ services:
sandbox:
build: .
environment:
- - ADMIN_URL=http://localhost:5173
- - REPO_URL=http://localhost:7006
+ - ADMIN_URL=${ADMIN_URL}
+ - REPO_URL=${REPO_URL}
network_mode: 'host'
diff --git a/web/Dockerfile b/web/Dockerfile
index 1ad87c3..f940c55 100644
--- a/web/Dockerfile
+++ b/web/Dockerfile
@@ -6,7 +6,13 @@ RUN apt-get update
RUN apt-get install curl -y
-RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt-get install -y nodejs
+RUN apt-get install -y ca-certificates curl gnupg
+RUN mkdir -p /etc/apt/keyrings
+RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
+ENV NODE_MAJOR=20
+RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
+RUN apt-get update
+RUN apt-get install nodejs -y
RUN apt-get install git -y
diff --git a/web/src/routes/admin/contests/+page.svelte b/web/src/routes/admin/contests/+page.svelte
index 74760e4..62ff4f6 100644
--- a/web/src/routes/admin/contests/+page.svelte
+++ b/web/src/routes/admin/contests/+page.svelte
@@ -14,13 +14,36 @@
Create
-
- {#each data.contests as contest}
-
{contest.name}
- {/each}
+
+
+
+
+ Id |
+ Name |
+ Status |
+ Actions |
+
+
+
+ {#each data.contests as contest}
+
+ {contest.id} |
+ {contest.name} |
+
+ {#if contest.activeTeams === 0}
+ Inactive
+ {:else}
+ Active
+ {/if}
+ |
+ Details |
+
+ {/each}
+
+
diff --git a/web/src/routes/admin/contests/[contestId]/+page.svelte b/web/src/routes/admin/contests/[contestId]/+page.svelte
index 7179066..e066a1b 100644
--- a/web/src/routes/admin/contests/[contestId]/+page.svelte
+++ b/web/src/routes/admin/contests/[contestId]/+page.svelte
@@ -11,12 +11,12 @@
- {data.name}
+ Contest - {data.name}
-
{data.name}
+
Contest - {data.name}
diff --git a/web/src/routes/admin/contests/[contestId]/logins/+page.svelte b/web/src/routes/admin/contests/[contestId]/logins/+page.svelte
index 1c63772..2a55092 100644
--- a/web/src/routes/admin/contests/[contestId]/logins/+page.svelte
+++ b/web/src/routes/admin/contests/[contestId]/logins/+page.svelte
@@ -4,8 +4,12 @@
export let data: PageData;
+
+ Printable Logins
+
+
{#each data.teams as team}
-
+
ID |
diff --git a/web/src/routes/admin/contests/create/+page.svelte b/web/src/routes/admin/contests/create/+page.svelte
index 0b81b21..11b07f8 100644
--- a/web/src/routes/admin/contests/create/+page.svelte
+++ b/web/src/routes/admin/contests/create/+page.svelte
@@ -44,8 +44,6 @@
-Cancel
-