diff --git a/web/.prettierrc b/web/.prettierrc
index a77fdde..1176c1f 100644
--- a/web/.prettierrc
+++ b/web/.prettierrc
@@ -1,4 +1,5 @@
{
+ "tabWidth": 2,
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
diff --git a/web/package-lock.json b/web/package-lock.json
index beb2b02..1408309 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -9,25 +9,28 @@
"version": "0.0.1",
"dependencies": {
"@sveltejs/adapter-node": "^1.2.3",
- "bootstrap-dark-5": "^1.1.3",
- "diff2html": "^3.4.35"
+ "bootstrap": "^5.2.3",
+ "diff": "^5.1.0",
+ "diff2html": "^3.4.35",
+ "highlight.js": "^11.7.0"
},
"devDependencies": {
- "@sveltejs/adapter-auto": "^2.0.0",
- "@sveltejs/kit": "^1.5.0",
+ "@sveltejs/adapter-auto": "^2.0.1",
+ "@sveltejs/kit": "^1.15.9",
"@types/bootstrap": "^5.2.6",
- "@typescript-eslint/eslint-plugin": "^5.45.0",
- "@typescript-eslint/parser": "^5.45.0",
- "eslint": "^8.28.0",
- "eslint-config-prettier": "^8.5.0",
+ "@types/diff": "^5.0.3",
+ "@typescript-eslint/eslint-plugin": "^5.59.1",
+ "@typescript-eslint/parser": "^5.59.1",
+ "eslint": "^8.39.0",
+ "eslint-config-prettier": "^8.8.0",
"eslint-plugin-svelte3": "^4.0.0",
- "prettier": "^2.8.0",
- "prettier-plugin-svelte": "^2.8.1",
- "svelte": "^3.54.0",
- "svelte-check": "^3.0.1",
- "tslib": "^2.4.1",
- "typescript": "^5.0.0",
- "vite": "^4.3.0"
+ "prettier": "^2.8.8",
+ "prettier-plugin-svelte": "^2.10.0",
+ "svelte": "^3.58.0",
+ "svelte-check": "^3.2.0",
+ "tslib": "^2.5.0",
+ "typescript": "^5.0.4",
+ "vite": "^4.3.3"
}
},
"node_modules/@esbuild/android-arm": {
@@ -691,12 +694,12 @@
}
},
"node_modules/@sveltejs/kit": {
- "version": "1.15.8",
- "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.15.8.tgz",
- "integrity": "sha512-xPIF3UbFEA5BBZWFTGGUtSZ0O3DAtmzIp/yZZVdLIfzZ9+geKG3iGSVFnOUdYstjU7JcvJg12UC5MD5xoED59A==",
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.15.9.tgz",
+ "integrity": "sha512-Og+4WlguPVPS0PmAHefp4KxvTVZfyDN09aORVXIdKSzqzodSJiLs7Fhi/Q0z0YjmcoNLWF24tI0a6mTusL6Yfg==",
"hasInstallScript": true,
"dependencies": {
- "@sveltejs/vite-plugin-svelte": "^2.1.0",
+ "@sveltejs/vite-plugin-svelte": "^2.1.1",
"@types/cookie": "^0.5.1",
"cookie": "^0.5.0",
"devalue": "^4.3.0",
@@ -755,6 +758,12 @@
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz",
"integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g=="
},
+ "node_modules/@types/diff": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.3.tgz",
+ "integrity": "sha512-amrLbRqTU9bXMCc6uX0sWpxsQzRIo9z6MJPkH1pkez/qOxuqSZVuryJAWoBRq94CeG8JxY+VK4Le9HtjQR5T9A==",
+ "dev": true
+ },
"node_modules/@types/estree": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
@@ -1097,17 +1106,6 @@
"@popperjs/core": "^2.11.6"
}
},
- "node_modules/bootstrap-dark-5": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/bootstrap-dark-5/-/bootstrap-dark-5-1.1.3.tgz",
- "integrity": "sha512-3Paopsp8wyOM1oeaLWLFuUZThhRc3tBYKUnoF+uwrU/xN4G47MCLZlALBJNqYqAecg7dSln9vgaYK1CwPnTeBw==",
- "dependencies": {
- "bootstrap": "^5.1.3"
- },
- "peerDependencies": {
- "@popperjs/core": "^2.10.2"
- }
- },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -1343,6 +1341,15 @@
"highlight.js": "11.6.0"
}
},
+ "node_modules/diff2html/node_modules/highlight.js": {
+ "version": "11.6.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz",
+ "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==",
+ "optional": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -1884,10 +1891,9 @@
}
},
"node_modules/highlight.js": {
- "version": "11.6.0",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz",
- "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==",
- "optional": true,
+ "version": "11.7.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.7.0.tgz",
+ "integrity": "sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==",
"engines": {
"node": ">=12.0.0"
}
diff --git a/web/package.json b/web/package.json
index 5f3e60e..9b1eee9 100644
--- a/web/package.json
+++ b/web/package.json
@@ -12,26 +12,29 @@
"format": "prettier --plugin-search-dir . --write ."
},
"devDependencies": {
- "@sveltejs/adapter-auto": "^2.0.0",
- "@sveltejs/kit": "^1.5.0",
+ "@sveltejs/adapter-auto": "^2.0.1",
+ "@sveltejs/kit": "^1.15.9",
"@types/bootstrap": "^5.2.6",
- "@typescript-eslint/eslint-plugin": "^5.45.0",
- "@typescript-eslint/parser": "^5.45.0",
- "eslint": "^8.28.0",
- "eslint-config-prettier": "^8.5.0",
+ "@types/diff": "^5.0.3",
+ "@typescript-eslint/eslint-plugin": "^5.59.1",
+ "@typescript-eslint/parser": "^5.59.1",
+ "eslint": "^8.39.0",
+ "eslint-config-prettier": "^8.8.0",
"eslint-plugin-svelte3": "^4.0.0",
- "prettier": "^2.8.0",
- "prettier-plugin-svelte": "^2.8.1",
- "svelte": "^3.54.0",
- "svelte-check": "^3.0.1",
- "tslib": "^2.4.1",
- "typescript": "^5.0.0",
- "vite": "^4.3.0"
+ "prettier": "^2.8.8",
+ "prettier-plugin-svelte": "^2.10.0",
+ "svelte": "^3.58.0",
+ "svelte-check": "^3.2.0",
+ "tslib": "^2.5.0",
+ "typescript": "^5.0.4",
+ "vite": "^4.3.3"
},
"type": "module",
"dependencies": {
"@sveltejs/adapter-node": "^1.2.3",
- "bootstrap-dark-5": "^1.1.3",
- "diff2html": "^3.4.35"
+ "bootstrap": "^5.2.3",
+ "diff": "^5.1.0",
+ "diff2html": "^3.4.35",
+ "highlight.js": "^11.7.0"
}
}
diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte
index 10c0d30..f906b51 100644
--- a/web/src/routes/+layout.svelte
+++ b/web/src/routes/+layout.svelte
@@ -1,10 +1,7 @@
-