diff --git a/.github/workflows/DevelopServerDeploy.yml b/.github/workflows/DevelopServerDeploy.yml
index 39f8fbbb..320d46cd 100644
--- a/.github/workflows/DevelopServerDeploy.yml
+++ b/.github/workflows/DevelopServerDeploy.yml
@@ -27,7 +27,7 @@ jobs:
run: npm run lint
- name: Test
- run: npm run test
+ run: npm run test --workspaces --if-present
build:
needs: test
@@ -58,7 +58,7 @@ jobs:
docker run \
-v "/var/www/dev.wikigdrive.com:/usr/src/app/website/.vitepress/dist" \
-e "GIT_SHA=${{ github.sha }}" \
- "wikigdrive-develop:${{ github.sha }}" npm run docs:build
+ "wikigdrive-develop:${{ github.sha }}" npm run build --workspace website
- name: Stop and remove
run: docker stop wikigdrive-develop ; docker rm wikigdrive-develop
diff --git a/.github/workflows/ProdServerDeploy.yml b/.github/workflows/ProdServerDeploy.yml
index 66a36726..4c9ef19c 100644
--- a/.github/workflows/ProdServerDeploy.yml
+++ b/.github/workflows/ProdServerDeploy.yml
@@ -28,7 +28,7 @@ jobs:
run: npm run lint
- name: Test
- run: npm run test
+ run: npm run test --workspaces --if-present
build:
needs: test
@@ -59,7 +59,7 @@ jobs:
docker run \
-v "/var/www/wikigdrive.com:/usr/src/app/website/.vitepress/dist" \
-e "GIT_SHA=${{ github.sha }}" \
- "wikigdrive-prod:${{ github.sha }}" npm run docs:build
+ "wikigdrive-prod:${{ github.sha }}" npm run npm run build --workspace website
- name: Stop and remove
run: docker stop wikigdrive-prod ; docker rm wikigdrive-prod
diff --git a/.github/workflows/feat-deploy.yml b/.github/workflows/feat-deploy.yml
index 94e20986..8ebba47a 100644
--- a/.github/workflows/feat-deploy.yml
+++ b/.github/workflows/feat-deploy.yml
@@ -28,7 +28,7 @@ jobs:
run: npm run lint
- name: Test
- run: npm run test
+ run: npm run test --workspaces --if-present
build:
needs: test
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 01331738..12de2678 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -30,7 +30,7 @@ jobs:
run: npm run lint
- name: Test
- run: npm run test
+ run: npm run test --workspaces --if-present
build:
if: github.event.pull_request.head.ref != 'develop' && contains( github.event.pull_request.labels.*.name, 'deploy-pr')
@@ -63,14 +63,15 @@ jobs:
docker run \
-v "/var/www/pr-${{ github.event.number }}.wikigdrive.com:/usr/src/app/website/.vitepress/dist" \
-e "GIT_SHA=${{ github.sha }}" \
- "wikigdrive-feature:${{ github.sha }}" npm run docs:build
+ "wikigdrive-feature:${{ github.sha }}" npm run build --workspace website
- name: Stop and remove
run: docker stop "pr-${{ github.event.number }}" ; docker rm "pr-${{ github.event.number }}"
continue-on-error: true
- name: "Create empty volume"
- run: docker volume rm -f "pr-${{ github.event.number }}" ; docker volume create "pr-${{ github.event.number }}"
+ run: docker volume create "pr-${{ github.event.number }}"
+ continue-on-error: true
- name: Start
run: |
diff --git a/Dockerfile b/Dockerfile
index e935780e..2f027c66 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,25 +2,28 @@ FROM node:22-bookworm-slim
ARG BUILD_UI
ARG GIT_SHA
+EXPOSE 3000
+VOLUME /data
+WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install -yq bash git-lfs openssh-client curl unzip socat
RUN curl -fsSL https://deno.land/install.sh | DENO_INSTALL=/usr/local sh
-WORKDIR /usr/src/app
COPY package.json package-lock.json ./
-RUN npm install
-RUN npm install --location=global ts-node
-
-RUN if [ -z "$BUILD_UI" ] ; then cd /usr/src/app/apps/ui && npm run build ; fi
+COPY deno.json deno.lock ./
+#RUN npm install
+#RUN npm install --location=global ts-node
COPY . ./
-RUN npm link --location=user
-EXPOSE 3000
-VOLUME /data
+RUN deno install
+#RUN if [ -z "$BUILD_UI" ] ; then cd /usr/src/app/apps/ui && npm run build ; fi
+#RUN npm link --location=user
+RUN ln -sf /usr/src/app/src/wikigdrive.sh /usr/local/bin/wikigdrive
+RUN ln -sf /usr/src/app/src/wikigdrivectl.sh /usr/local/bin/wikigdrivectl
-RUN cd /usr/src/app/apps/ui && npm install && npm run build
+RUN npm install && npm run build --workspaces
WORKDIR "/usr/src/app"
diff --git a/apps/ui/index.html b/apps/ui/index.html
index 9aa6f096..a130bec7 100644
--- a/apps/ui/index.html
+++ b/apps/ui/index.html
@@ -16,7 +16,6 @@
-
diff --git a/apps/ui/package.json b/apps/ui/package.json
index d35aca84..64140b40 100644
--- a/apps/ui/package.json
+++ b/apps/ui/package.json
@@ -15,6 +15,7 @@
"build": "vue-tsc -b && vite build"
},
"dependencies": {
+ "bootstrap": "5.2.3",
"vue": "3.5.12",
"vue-prism-editor": "2.0.0-alpha.2",
"vue-router": "4.4.5"
@@ -22,7 +23,7 @@
"devDependencies": {
"@vitejs/plugin-vue": "5.1.4",
"eslint-plugin-vue": "9.31.0",
- "vite": "5.4.9",
+ "vite": "5.4.10",
"vue-tsc": "2.1.10"
}
}
diff --git a/apps/ui/src/main.ts b/apps/ui/src/main.ts
index fa0b6e84..d60c7b2e 100644
--- a/apps/ui/src/main.ts
+++ b/apps/ui/src/main.ts
@@ -1,10 +1,8 @@
import {Tooltip} from 'bootstrap';
import {createApp} from './app.ts';
import {addTelemetry} from './telemetry.ts';
-import {Emitter, EventType} from 'mitt';
const { app, router } = createApp();
-await router.isReady();
addTelemetry(app);
app.mixin({
@@ -27,48 +25,51 @@ if (!import.meta.env.SSR) {
}
}
-const vm= app.mount('#app', true);
-router.beforeEach(async (to, from, next) => {
- if (to.meta.ssg) {
- try {
- const response = await fetch(window.location.protocol + '//' + window.location.host + to.path);
- const html = await response.text();
+router.isReady().then(() => {
+ const vm = app.mount('#app', true);
+ router.beforeEach(async (to, from, next) => {
+ if (to.meta.ssg) {
+ try {
+ const protocol = window.location.host.indexOf('localhost') > -1 ? 'http:' : 'https:';
+ const response = await fetch(protocol + '//' + window.location.host + to.path);
+ const html = await response.text();
- const parser = new DOMParser();
- const r = parser.parseFromString(html, 'text/html');
- const titleElem = r.querySelector('title');
- if (titleElem) {
- document.title = titleElem.innerText;
+ const parser = new DOMParser();
+ const r = parser.parseFromString(html, 'text/html');
+ const titleElem = r.querySelector('title');
+ if (titleElem) {
+ document.title = titleElem.innerText;
+ }
+ const mainContent = r.querySelector('.mainbar__content');
+ const elemContent = document.querySelector('.mainbar__content');
+ if (mainContent && elemContent) {
+ setTimeout(() => {
+ const emitter = (vm as any).emitter;
+ emitter.emit('html_lazy_content', mainContent.innerHTML);
+ }, 100);
+ }
+ next(true);
+ return;
+ } catch (err) {
+ console.error(err);
}
- const mainContent = r.querySelector('.mainbar__content');
- const elemContent = document.querySelector('.mainbar__content');
- if (mainContent && elemContent) {
- setTimeout(() => {
- const emitter = (vm as any).emitter;
- emitter.emit('html_lazy_content', mainContent.innerHTML);
- }, 100);
- }
- next(true);
- return;
- } catch (err) {
- console.error(err);
}
- }
- const toDriveId = Array.isArray(to.params?.driveId) ? to.params.driveId[0] : to.params.driveId;
- const fromDriveId = Array.isArray(from.params?.driveId) ? from.params.driveId[0] : from.params.driveId;
- if (toDriveId !== fromDriveId) {
- await (vm as any).FileClientService.clearCache();
- await (vm as any).changeDrive(toDriveId);
- }
- next();
-});
-router.afterEach(() => {
- const elements = document.querySelectorAll('[data-bs-toggle=tooltip]');
- elements.forEach(element => {
- const tooltip = Tooltip.getInstance(element);
- if (tooltip) {
- tooltip.hide();
+ const toDriveId = Array.isArray(to.params?.driveId) ? to.params.driveId[0] : to.params.driveId;
+ const fromDriveId = Array.isArray(from.params?.driveId) ? from.params.driveId[0] : from.params.driveId;
+ if (toDriveId !== fromDriveId) {
+ await (vm as any).FileClientService.clearCache();
+ await (vm as any).changeDrive(toDriveId);
}
+ next();
+ });
+ router.afterEach(() => {
+ const elements = document.querySelectorAll('[data-bs-toggle=tooltip]');
+ elements.forEach(element => {
+ const tooltip = Tooltip.getInstance(element);
+ if (tooltip) {
+ tooltip.hide();
+ }
+ });
});
});
diff --git a/apps/ui/vite.config.ts b/apps/ui/vite.config.ts
index d47a0ffc..3031ade2 100644
--- a/apps/ui/vite.config.ts
+++ b/apps/ui/vite.config.ts
@@ -55,6 +55,7 @@ export function generateIndexHtml() {
WikiGDrive
+
${renderHead()}
@@ -90,6 +91,7 @@ export default defineConfig({
vue: 'vue/dist/vue.esm-bundler.js',
}
},
+ base: '/',
build: {
sourcemap: true,
manifest: true,
diff --git a/deno.lock b/deno.lock
index 26d77bec..1ba2c8de 100644
--- a/deno.lock
+++ b/deno.lock
@@ -40,8 +40,8 @@
"npm:domhandler@5.0.3": "5.0.3",
"npm:domutils@3.1.0": "3.1.0",
"npm:dotenv@^8.6.0": "8.6.0",
- "npm:env-paths@2.2.1": "2.2.1",
"npm:eslint-plugin-import@2.31.0": "2.31.0_eslint@9.14.0",
+ "npm:eslint-plugin-vue@9.31.0": "9.31.0_eslint@9.14.0",
"npm:eslint@9.14.0": "9.14.0",
"npm:express-jwt@8.2.1": "8.2.1",
"npm:express-rate-limit@^6.6.0": "6.11.2_express@4.21.1",
@@ -75,6 +75,10 @@
"npm:vite@5.4.10": "5.4.10_@types+node@22.10.1",
"npm:vitepress-sidebar@1.29.0": "1.29.0",
"npm:vitepress@1.5.0": "1.5.0_vite@5.4.10__@types+node@22.10.1_vue@3.5.13__typescript@5.3.3_focus-trap@7.6.2_@types+node@22.10.1_typescript@5.3.3",
+ "npm:vue-prism-editor@2.0.0-alpha.2": "2.0.0-alpha.2_vue@3.5.12__typescript@5.3.3_typescript@5.3.3",
+ "npm:vue-router@4.4.5": "4.4.5_vue@3.5.12__typescript@5.3.3_typescript@5.3.3",
+ "npm:vue-tsc@2.1.10": "2.1.10_typescript@5.3.3",
+ "npm:vue@3.5.12": "3.5.12_typescript@5.3.3",
"npm:winston-transport@4.5.0": "4.5.0",
"npm:winston@3.8.2": "3.8.2",
"npm:ws@8.18.0": "8.18.0",
@@ -375,8 +379,8 @@
"dependencies": [
"ajv",
"debug@4.3.7",
- "espree",
- "globals",
+ "espree@10.3.0_acorn@8.14.0",
+ "globals@14.0.0",
"ignore",
"import-fresh",
"js-yaml@4.1.0",
@@ -1112,47 +1116,112 @@
"integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==",
"dependencies": [
"vite",
- "vue"
+ "vue@3.5.13_typescript@5.3.3"
+ ]
+ },
+ "@volar/language-core@2.4.10": {
+ "integrity": "sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==",
+ "dependencies": [
+ "@volar/source-map"
+ ]
+ },
+ "@volar/source-map@2.4.10": {
+ "integrity": "sha512-OCV+b5ihV0RF3A7vEvNyHPi4G4kFa6ukPmyVocmqm5QzOd8r5yAtiNvaPEjl8dNvgC/lj4JPryeeHLdXd62rWA=="
+ },
+ "@volar/typescript@2.4.10": {
+ "integrity": "sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==",
+ "dependencies": [
+ "@volar/language-core",
+ "path-browserify",
+ "vscode-uri"
+ ]
+ },
+ "@vue/compiler-core@3.5.12": {
+ "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==",
+ "dependencies": [
+ "@babel/parser",
+ "@vue/shared@3.5.12",
+ "entities@4.5.0",
+ "estree-walker",
+ "source-map-js"
]
},
"@vue/compiler-core@3.5.13": {
"integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
"dependencies": [
"@babel/parser",
- "@vue/shared",
+ "@vue/shared@3.5.13",
"entities@4.5.0",
"estree-walker",
"source-map-js"
]
},
+ "@vue/compiler-dom@3.5.12": {
+ "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==",
+ "dependencies": [
+ "@vue/compiler-core@3.5.12",
+ "@vue/shared@3.5.12"
+ ]
+ },
"@vue/compiler-dom@3.5.13": {
"integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
"dependencies": [
- "@vue/compiler-core",
- "@vue/shared"
+ "@vue/compiler-core@3.5.13",
+ "@vue/shared@3.5.13"
+ ]
+ },
+ "@vue/compiler-sfc@3.5.12": {
+ "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==",
+ "dependencies": [
+ "@babel/parser",
+ "@vue/compiler-core@3.5.12",
+ "@vue/compiler-dom@3.5.12",
+ "@vue/compiler-ssr@3.5.12",
+ "@vue/shared@3.5.12",
+ "estree-walker",
+ "magic-string",
+ "postcss",
+ "source-map-js"
]
},
"@vue/compiler-sfc@3.5.13": {
"integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
"dependencies": [
"@babel/parser",
- "@vue/compiler-core",
- "@vue/compiler-dom",
- "@vue/compiler-ssr",
- "@vue/shared",
+ "@vue/compiler-core@3.5.13",
+ "@vue/compiler-dom@3.5.13",
+ "@vue/compiler-ssr@3.5.13",
+ "@vue/shared@3.5.13",
"estree-walker",
"magic-string",
"postcss",
"source-map-js"
]
},
+ "@vue/compiler-ssr@3.5.12": {
+ "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==",
+ "dependencies": [
+ "@vue/compiler-dom@3.5.12",
+ "@vue/shared@3.5.12"
+ ]
+ },
"@vue/compiler-ssr@3.5.13": {
"integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
"dependencies": [
- "@vue/compiler-dom",
- "@vue/shared"
+ "@vue/compiler-dom@3.5.13",
+ "@vue/shared@3.5.13"
]
},
+ "@vue/compiler-vue2@2.7.16": {
+ "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
+ "dependencies": [
+ "de-indent",
+ "he"
+ ]
+ },
+ "@vue/devtools-api@6.6.4": {
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
+ },
"@vue/devtools-api@7.6.7": {
"integrity": "sha512-PV4I31WaV2rfA8RGauM+69uFEzWkqtP561RiLU2wK+Ce85u3zyKW3aoESlLCNzkc4y0JaJyskH6zAE3xWOP8+Q==",
"dependencies": [
@@ -1177,36 +1246,83 @@
"rfdc"
]
},
+ "@vue/language-core@2.1.10_typescript@5.3.3": {
+ "integrity": "sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==",
+ "dependencies": [
+ "@volar/language-core",
+ "@vue/compiler-dom@3.5.13",
+ "@vue/compiler-vue2",
+ "@vue/shared@3.5.13",
+ "alien-signals",
+ "minimatch@9.0.5",
+ "muggle-string",
+ "path-browserify",
+ "typescript"
+ ]
+ },
+ "@vue/reactivity@3.5.12": {
+ "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==",
+ "dependencies": [
+ "@vue/shared@3.5.12"
+ ]
+ },
"@vue/reactivity@3.5.13": {
"integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",
"dependencies": [
- "@vue/shared"
+ "@vue/shared@3.5.13"
+ ]
+ },
+ "@vue/runtime-core@3.5.12": {
+ "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==",
+ "dependencies": [
+ "@vue/reactivity@3.5.12",
+ "@vue/shared@3.5.12"
]
},
"@vue/runtime-core@3.5.13": {
"integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
"dependencies": [
- "@vue/reactivity",
- "@vue/shared"
+ "@vue/reactivity@3.5.13",
+ "@vue/shared@3.5.13"
+ ]
+ },
+ "@vue/runtime-dom@3.5.12": {
+ "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==",
+ "dependencies": [
+ "@vue/reactivity@3.5.12",
+ "@vue/runtime-core@3.5.12",
+ "@vue/shared@3.5.12",
+ "csstype"
]
},
"@vue/runtime-dom@3.5.13": {
"integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",
"dependencies": [
- "@vue/reactivity",
- "@vue/runtime-core",
- "@vue/shared",
+ "@vue/reactivity@3.5.13",
+ "@vue/runtime-core@3.5.13",
+ "@vue/shared@3.5.13",
"csstype"
]
},
+ "@vue/server-renderer@3.5.12_vue@3.5.12__typescript@5.3.3": {
+ "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==",
+ "dependencies": [
+ "@vue/compiler-ssr@3.5.12",
+ "@vue/shared@3.5.12",
+ "vue@3.5.12_typescript@5.3.3"
+ ]
+ },
"@vue/server-renderer@3.5.13_vue@3.5.13__typescript@5.3.3": {
"integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",
"dependencies": [
- "@vue/compiler-ssr",
- "@vue/shared",
- "vue"
+ "@vue/compiler-ssr@3.5.13",
+ "@vue/shared@3.5.13",
+ "vue@3.5.13_typescript@5.3.3"
]
},
+ "@vue/shared@3.5.12": {
+ "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg=="
+ },
"@vue/shared@3.5.13": {
"integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ=="
},
@@ -1311,6 +1427,9 @@
"@algolia/requester-node-http"
]
},
+ "alien-signals@0.2.2": {
+ "integrity": "sha512-cZIRkbERILsBOXTQmMrxc9hgpxglstn69zm+F1ARf4aPAzdAFYd6sBq87ErO0Fj3DV94tglcyHG5kQz9nDC/8A=="
+ },
"ansi-escapes@4.3.2": {
"integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dependencies": [
@@ -1570,6 +1689,9 @@
"unpipe"
]
},
+ "boolbase@1.0.0": {
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+ },
"bootstrap@5.2.3_@popperjs+core@2.11.8": {
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
"dependencies": [
@@ -1886,6 +2008,9 @@
"which"
]
},
+ "cssesc@3.0.0": {
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+ },
"csstype@3.1.3": {
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
@@ -1931,6 +2056,9 @@
"dayjs@1.11.1": {
"integrity": "sha512-ER7EjqVAMkRRsxNCC5YqJ9d9VQYuWdGt7aiH2qA5R5wt8ZmWaP2dLUSIK6y/kVzLMlmh1Tvu5xUf4M/wdGJ5KA=="
},
+ "de-indent@1.0.2": {
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg=="
+ },
"debug@2.6.9": {
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": [
@@ -2135,9 +2263,6 @@
"entities@4.5.0": {
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
},
- "env-paths@2.2.1": {
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
- },
"es-abstract@1.23.5": {
"integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==",
"dependencies": [
@@ -2311,6 +2436,27 @@
"tsconfig-paths"
]
},
+ "eslint-plugin-vue@9.31.0_eslint@9.14.0": {
+ "integrity": "sha512-aYMUCgivhz1o4tLkRHj5oq9YgYPM4/EJc0M7TAKRLCUA5OYxRLAhYEVD2nLtTwLyixEFI+/QXSvKU9ESZFgqjQ==",
+ "dependencies": [
+ "@eslint-community/eslint-utils",
+ "eslint",
+ "globals@13.24.0",
+ "natural-compare",
+ "nth-check",
+ "postcss-selector-parser",
+ "semver@7.6.3",
+ "vue-eslint-parser",
+ "xml-name-validator"
+ ]
+ },
+ "eslint-scope@7.2.2": {
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dependencies": [
+ "esrecurse",
+ "estraverse"
+ ]
+ },
"eslint-scope@8.2.0": {
"integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==",
"dependencies": [
@@ -2344,9 +2490,9 @@
"cross-spawn",
"debug@4.3.7",
"escape-string-regexp@4.0.0",
- "eslint-scope",
+ "eslint-scope@8.2.0",
"eslint-visitor-keys@4.2.0",
- "espree",
+ "espree@10.3.0_acorn@8.14.0",
"esquery",
"esutils",
"fast-deep-equal",
@@ -2372,6 +2518,14 @@
"eslint-visitor-keys@4.2.0"
]
},
+ "espree@9.6.1_acorn@8.14.0": {
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dependencies": [
+ "acorn",
+ "acorn-jsx",
+ "eslint-visitor-keys@3.4.3"
+ ]
+ },
"esprima@4.0.1": {
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
@@ -2687,6 +2841,12 @@
"path-is-absolute"
]
},
+ "globals@13.24.0": {
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dependencies": [
+ "type-fest@0.20.2"
+ ]
+ },
"globals@14.0.0": {
"integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="
},
@@ -2787,6 +2947,9 @@
"@types/hast"
]
},
+ "he@1.2.0": {
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
+ },
"hookable@5.5.3": {
"integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
},
@@ -3491,6 +3654,9 @@
"ms@2.1.3": {
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
+ "muggle-string@0.4.1": {
+ "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ=="
+ },
"nan@2.22.0": {
"integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw=="
},
@@ -3552,6 +3718,12 @@
"set-blocking"
]
},
+ "nth-check@2.1.1": {
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dependencies": [
+ "boolbase"
+ ]
+ },
"object-assign@4.1.1": {
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
},
@@ -3694,6 +3866,9 @@
"parseurl@1.3.3": {
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
+ "path-browserify@1.0.1": {
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+ },
"path-exists@4.0.0": {
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
},
@@ -3743,6 +3918,13 @@
"possible-typed-array-names@1.0.0": {
"integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q=="
},
+ "postcss-selector-parser@6.1.2": {
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "dependencies": [
+ "cssesc",
+ "util-deprecate"
+ ]
+ },
"postcss@8.4.49": {
"integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
"dependencies": [
@@ -4540,6 +4722,9 @@
"type-fest@0.13.1": {
"integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg=="
},
+ "type-fest@0.20.2": {
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
+ },
"type-fest@0.21.3": {
"integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="
},
@@ -4716,8 +4901,8 @@
"@shikijs/types",
"@types/markdown-it",
"@vitejs/plugin-vue",
- "@vue/devtools-api",
- "@vue/shared",
+ "@vue/devtools-api@7.6.7",
+ "@vue/shared@3.5.13",
"@vueuse/core",
"@vueuse/integrations",
"focus-trap",
@@ -4725,23 +4910,72 @@
"minisearch",
"shiki",
"vite",
- "vue"
+ "vue@3.5.13_typescript@5.3.3"
]
},
+ "vscode-uri@3.0.8": {
+ "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw=="
+ },
"vue-demi@0.14.10_vue@3.5.13__typescript@5.3.3_typescript@5.3.3": {
"integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
"dependencies": [
- "vue"
+ "vue@3.5.13_typescript@5.3.3"
+ ]
+ },
+ "vue-eslint-parser@9.4.3_eslint@9.14.0": {
+ "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==",
+ "dependencies": [
+ "debug@4.3.7",
+ "eslint",
+ "eslint-scope@7.2.2",
+ "eslint-visitor-keys@3.4.3",
+ "espree@9.6.1_acorn@8.14.0",
+ "esquery",
+ "lodash",
+ "semver@7.6.3"
+ ]
+ },
+ "vue-prism-editor@2.0.0-alpha.2_vue@3.5.12__typescript@5.3.3_typescript@5.3.3": {
+ "integrity": "sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==",
+ "dependencies": [
+ "vue@3.5.12_typescript@5.3.3"
+ ]
+ },
+ "vue-router@4.4.5_vue@3.5.12__typescript@5.3.3_typescript@5.3.3": {
+ "integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==",
+ "dependencies": [
+ "@vue/devtools-api@6.6.4",
+ "vue@3.5.12_typescript@5.3.3"
+ ]
+ },
+ "vue-tsc@2.1.10_typescript@5.3.3": {
+ "integrity": "sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==",
+ "dependencies": [
+ "@volar/typescript",
+ "@vue/language-core",
+ "semver@7.6.3",
+ "typescript"
+ ]
+ },
+ "vue@3.5.12_typescript@5.3.3": {
+ "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==",
+ "dependencies": [
+ "@vue/compiler-dom@3.5.12",
+ "@vue/compiler-sfc@3.5.12",
+ "@vue/runtime-dom@3.5.12",
+ "@vue/server-renderer@3.5.12_vue@3.5.12__typescript@5.3.3",
+ "@vue/shared@3.5.12",
+ "typescript"
]
},
"vue@3.5.13_typescript@5.3.3": {
"integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
"dependencies": [
- "@vue/compiler-dom",
- "@vue/compiler-sfc",
- "@vue/runtime-dom",
- "@vue/server-renderer",
- "@vue/shared",
+ "@vue/compiler-dom@3.5.13",
+ "@vue/compiler-sfc@3.5.13",
+ "@vue/runtime-dom@3.5.13",
+ "@vue/server-renderer@3.5.13_vue@3.5.13__typescript@5.3.3",
+ "@vue/shared@3.5.13",
"typescript"
]
},
@@ -4887,6 +5121,9 @@
"sax"
]
},
+ "xml-name-validator@4.0.0": {
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="
+ },
"xmldoc@1.3.0": {
"integrity": "sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng==",
"dependencies": [
@@ -4941,6 +5178,7 @@
"dependencies": [
"npm:@opentelemetry/api@1.3.0",
"npm:@opentelemetry/context-zone@1.8.0",
+ "npm:@opentelemetry/core@1.28.0",
"npm:@opentelemetry/exporter-zipkin@1.8.0",
"npm:@opentelemetry/instrumentation-fetch@0.34.0",
"npm:@opentelemetry/instrumentation-http@0.34.0",
@@ -4965,7 +5203,6 @@
"npm:@vitejs/plugin-vue@5.2.1",
"npm:async@3.2.3",
"npm:ava@^6.2.0",
- "npm:bootstrap@5.2.3",
"npm:buffer@^5.7.1",
"npm:casual@1.6.2",
"npm:cli-progress@3.10.0",
@@ -4978,7 +5215,6 @@
"npm:domhandler@5.0.3",
"npm:domutils@3.1.0",
"npm:dotenv@^8.6.0",
- "npm:env-paths@2.2.1",
"npm:eslint-plugin-import@2.31.0",
"npm:eslint@9.14.0",
"npm:express-jwt@8.2.1",
@@ -5011,8 +5247,6 @@
"npm:typescript-eslint@8.14.0",
"npm:typescript@5.3.3",
"npm:vite@5.4.10",
- "npm:vitepress-sidebar@1.29.0",
- "npm:vitepress@1.5.0",
"npm:winston-transport@4.5.0",
"npm:winston@3.8.2",
"npm:ws@8.18.0",
@@ -5025,14 +5259,23 @@
"packageJson": {
"dependencies": [
"npm:@vitejs/plugin-vue@5.1.4",
+ "npm:bootstrap@5.2.3",
"npm:eslint-plugin-vue@9.31.0",
- "npm:vite@5.4.9",
+ "npm:vite@5.4.10",
"npm:vue-prism-editor@2.0.0-alpha.2",
"npm:vue-router@4.4.5",
"npm:vue-tsc@2.1.10",
"npm:vue@3.5.12"
]
}
+ },
+ "website": {
+ "packageJson": {
+ "dependencies": [
+ "npm:vitepress-sidebar@1.29.0",
+ "npm:vitepress@1.5.0"
+ ]
+ }
}
}
}
diff --git a/package-lock.json b/package-lock.json
index 7b7af0c9..35c54c4d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,11 +9,13 @@
"version": "2.12.1",
"license": "ISC",
"workspaces": [
- "apps/ui"
+ "apps/ui",
+ "website"
],
"dependencies": {
"@opentelemetry/api": "1.3.0",
"@opentelemetry/context-zone": "1.8.0",
+ "@opentelemetry/core": "1.28.0",
"@opentelemetry/exporter-zipkin": "1.8.0",
"@opentelemetry/instrumentation": "0.33.0",
"@opentelemetry/instrumentation-fetch": "0.34.0",
@@ -24,7 +26,6 @@
"@opentelemetry/sdk-trace-web": "1.8.0",
"@opentelemetry/semantic-conventions": "1.8.0",
"async": "3.2.3",
- "bootstrap": "5.2.3",
"buffer": "^5.7.1",
"casual": "1.6.2",
"cli-progress": "3.10.0",
@@ -36,7 +37,6 @@
"domhandler": "5.0.3",
"domutils": "3.1.0",
"dotenv": "^8.6.0",
- "env-paths": "2.2.1",
"express": "4.21.1",
"express-jwt": "8.2.1",
"express-rate-limit": "^6.6.0",
@@ -96,9 +96,7 @@
"jshint": "2.13.4",
"sinon": "13.0.1",
"typescript-eslint": "8.14.0",
- "vite": "5.4.10",
- "vitepress": "1.5.0",
- "vitepress-sidebar": "1.29.0"
+ "vite": "5.4.10"
},
"engines": {
"node": ">= 22.10.0",
@@ -110,6 +108,7 @@
"version": "2.0.0-alpha",
"license": "ISC",
"dependencies": {
+ "bootstrap": "5.2.3",
"vue": "3.5.12",
"vue-prism-editor": "2.0.0-alpha.2",
"vue-router": "4.4.5"
@@ -117,7 +116,7 @@
"devDependencies": {
"@vitejs/plugin-vue": "5.1.4",
"eslint-plugin-vue": "9.31.0",
- "vite": "5.4.9",
+ "vite": "5.4.10",
"vue-tsc": "2.1.10"
}
},
@@ -135,66 +134,6 @@
"vue": "^3.2.25"
}
},
- "apps/ui/node_modules/vite": {
- "version": "5.4.9",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz",
- "integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
"html": {
"extraneous": true
},
@@ -1472,17 +1411,27 @@
}
},
"node_modules/@opentelemetry/core": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
- "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "version": "1.28.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz",
+ "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@opentelemetry/semantic-conventions": "1.8.0"
+ "@opentelemetry/semantic-conventions": "1.27.0"
},
"engines": {
"node": ">=14"
},
"peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ "@opentelemetry/api": ">=1.0.0 <1.10.0"
+ }
+ },
+ "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz",
+ "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@opentelemetry/exporter-zipkin": {
@@ -1502,6 +1451,21 @@
"@opentelemetry/api": "^1.0.0"
}
},
+ "node_modules/@opentelemetry/exporter-zipkin/node_modules/@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ }
+ },
"node_modules/@opentelemetry/instrumentation": {
"version": "0.33.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.33.0.tgz",
@@ -1536,6 +1500,21 @@
"@opentelemetry/api": "^1.0.0"
}
},
+ "node_modules/@opentelemetry/instrumentation-fetch/node_modules/@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ }
+ },
"node_modules/@opentelemetry/instrumentation-fetch/node_modules/@opentelemetry/instrumentation": {
"version": "0.34.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.34.0.tgz",
@@ -1569,6 +1548,21 @@
"@opentelemetry/api": "^1.3.0"
}
},
+ "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ }
+ },
"node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation": {
"version": "0.34.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.34.0.tgz",
@@ -1599,6 +1593,21 @@
"@opentelemetry/api": ">=1.0.0 <1.4.0"
}
},
+ "node_modules/@opentelemetry/propagator-b3/node_modules/@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ }
+ },
"node_modules/@opentelemetry/propagator-jaeger": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.8.0.tgz",
@@ -1613,6 +1622,21 @@
"@opentelemetry/api": ">=1.0.0 <1.4.0"
}
},
+ "node_modules/@opentelemetry/propagator-jaeger/node_modules/@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ }
+ },
"node_modules/@opentelemetry/resources": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.8.0.tgz",
@@ -1628,6 +1652,21 @@
"@opentelemetry/api": ">=1.0.0 <1.4.0"
}
},
+ "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ }
+ },
"node_modules/@opentelemetry/sdk-trace-base": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.8.0.tgz",
@@ -1644,6 +1683,21 @@
"@opentelemetry/api": ">=1.0.0 <1.4.0"
}
},
+ "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ }
+ },
"node_modules/@opentelemetry/sdk-trace-node": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.8.0.tgz",
@@ -1663,6 +1717,21 @@
"@opentelemetry/api": ">=1.0.0 <1.4.0"
}
},
+ "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ }
+ },
"node_modules/@opentelemetry/sdk-trace-web": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.8.0.tgz",
@@ -1679,6 +1748,21 @@
"@opentelemetry/api": ">=1.0.0 <1.4.0"
}
},
+ "node_modules/@opentelemetry/sdk-trace-web/node_modules/@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.4.0"
+ }
+ },
"node_modules/@opentelemetry/semantic-conventions": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.8.0.tgz",
@@ -5381,14 +5465,6 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/es-abstract": {
"version": "1.23.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz",
@@ -11583,6 +11659,10 @@
"dev": true,
"license": "BSD-2-Clause"
},
+ "node_modules/website": {
+ "resolved": "website",
+ "link": true
+ },
"node_modules/well-known-symbols": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz",
@@ -11950,6 +12030,12 @@
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
+ },
+ "website": {
+ "devDependencies": {
+ "vitepress": "1.5.0",
+ "vitepress-sidebar": "1.29.0"
+ }
}
},
"dependencies": {
@@ -12652,8 +12738,9 @@
"version": "file:apps/ui",
"requires": {
"@vitejs/plugin-vue": "5.1.4",
+ "bootstrap": "5.2.3",
"eslint-plugin-vue": "9.31.0",
- "vite": "5.4.9",
+ "vite": "5.4.10",
"vue": "3.5.12",
"vue-prism-editor": "2.0.0-alpha.2",
"vue-router": "4.4.5",
@@ -12666,18 +12753,6 @@
"integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==",
"dev": true,
"requires": {}
- },
- "vite": {
- "version": "5.4.9",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz",
- "integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==",
- "dev": true,
- "requires": {
- "esbuild": "^0.21.3",
- "fsevents": "~2.3.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- }
}
}
},
@@ -12742,11 +12817,18 @@
"requires": {}
},
"@opentelemetry/core": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
- "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "version": "1.28.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz",
+ "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==",
"requires": {
- "@opentelemetry/semantic-conventions": "1.8.0"
+ "@opentelemetry/semantic-conventions": "1.27.0"
+ },
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz",
+ "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="
+ }
}
},
"@opentelemetry/exporter-zipkin": {
@@ -12758,6 +12840,16 @@
"@opentelemetry/resources": "1.8.0",
"@opentelemetry/sdk-trace-base": "1.8.0",
"@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "dependencies": {
+ "@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ }
+ }
}
},
"@opentelemetry/instrumentation": {
@@ -12782,6 +12874,14 @@
"@opentelemetry/semantic-conventions": "1.8.0"
},
"dependencies": {
+ "@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ }
+ },
"@opentelemetry/instrumentation": {
"version": "0.34.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.34.0.tgz",
@@ -12805,6 +12905,14 @@
"semver": "^7.3.5"
},
"dependencies": {
+ "@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ }
+ },
"@opentelemetry/instrumentation": {
"version": "0.34.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.34.0.tgz",
@@ -12823,6 +12931,16 @@
"integrity": "sha512-ffP6AVHyISqK1kiUY1MoVKt43Wp3FJXI8NOePqxBrAU7bRDJ13276VbSl4ugCZbZLTPrPhhSmvQh1WqlfUgcAg==",
"requires": {
"@opentelemetry/core": "1.8.0"
+ },
+ "dependencies": {
+ "@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ }
+ }
}
},
"@opentelemetry/propagator-jaeger": {
@@ -12831,6 +12949,16 @@
"integrity": "sha512-v6GA38k2cqeGAh3368prLW5MsuG2/KxpfWI/PxTPjCa9tThDPq0cvhKpk7cEma3y+F6rieMhwmzZhKQL5QVBzQ==",
"requires": {
"@opentelemetry/core": "1.8.0"
+ },
+ "dependencies": {
+ "@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ }
+ }
}
},
"@opentelemetry/resources": {
@@ -12840,6 +12968,16 @@
"requires": {
"@opentelemetry/core": "1.8.0",
"@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "dependencies": {
+ "@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ }
+ }
}
},
"@opentelemetry/sdk-trace-base": {
@@ -12850,6 +12988,16 @@
"@opentelemetry/core": "1.8.0",
"@opentelemetry/resources": "1.8.0",
"@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "dependencies": {
+ "@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ }
+ }
}
},
"@opentelemetry/sdk-trace-node": {
@@ -12863,6 +13011,16 @@
"@opentelemetry/propagator-jaeger": "1.8.0",
"@opentelemetry/sdk-trace-base": "1.8.0",
"semver": "^7.3.5"
+ },
+ "dependencies": {
+ "@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ }
+ }
}
},
"@opentelemetry/sdk-trace-web": {
@@ -12873,6 +13031,16 @@
"@opentelemetry/core": "1.8.0",
"@opentelemetry/sdk-trace-base": "1.8.0",
"@opentelemetry/semantic-conventions": "1.8.0"
+ },
+ "dependencies": {
+ "@opentelemetry/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.8.0"
+ }
+ }
}
},
"@opentelemetry/semantic-conventions": {
@@ -15421,11 +15589,6 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
},
- "env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
- },
"es-abstract": {
"version": "1.23.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz",
@@ -19660,6 +19823,13 @@
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
"dev": true
},
+ "website": {
+ "version": "file:website",
+ "requires": {
+ "vitepress": "1.5.0",
+ "vitepress-sidebar": "1.29.0"
+ }
+ },
"well-known-symbols": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz",
diff --git a/package.json b/package.json
index 27a07404..db65439d 100644
--- a/package.json
+++ b/package.json
@@ -26,10 +26,7 @@
"test:deno": "deno test test/*Test.ts test/**/*.ts",
"lint": "eslint ./apps/**/*.ts ./apps/**/*.vue ./src/**/*.ts ./test/**/*.ts",
"start": "wikigdrive server 3000",
- "build": "",
- "docs:dev": "vitepress dev website",
- "docs:build": "vitepress build website",
- "docs:preview": "vitepress preview website"
+ "build": ""
},
"repository": {
"type": "git",
@@ -66,9 +63,11 @@
},
"homepage": "https://github.com/mieweb/wikiGDrive#readme",
"workspaces": [
- "apps/ui"
+ "apps/ui",
+ "website"
],
"dependencies": {
+ "@opentelemetry/core": "1.28.0",
"@opentelemetry/api": "1.3.0",
"@opentelemetry/context-zone": "1.8.0",
"@opentelemetry/exporter-zipkin": "1.8.0",
@@ -81,7 +80,6 @@
"@opentelemetry/sdk-trace-web": "1.8.0",
"@opentelemetry/semantic-conventions": "1.8.0",
"async": "3.2.3",
- "bootstrap": "5.2.3",
"buffer": "^5.7.1",
"casual": "1.6.2",
"cli-progress": "3.10.0",
@@ -93,7 +91,6 @@
"domhandler": "5.0.3",
"domutils": "3.1.0",
"dotenv": "^8.6.0",
- "env-paths": "2.2.1",
"express": "4.21.1",
"express-jwt": "8.2.1",
"express-rate-limit": "^6.6.0",
@@ -147,9 +144,7 @@
"jshint": "2.13.4",
"sinon": "13.0.1",
"typescript-eslint": "8.14.0",
- "vite": "5.4.10",
- "vitepress": "1.5.0",
- "vitepress-sidebar": "1.29.0"
+ "vite": "5.4.10"
},
"husky": {
"hooks": {
diff --git a/src/cli/wikigdrive-server.ts b/src/cli/wikigdrive-server.ts
index b5f82ae0..2289f629 100644
--- a/src/cli/wikigdrive-server.ts
+++ b/src/cli/wikigdrive-server.ts
@@ -4,7 +4,6 @@ import {EventEmitter} from 'node:events';
import minimist from 'minimist';
import winston from 'winston';
import dotenv from 'dotenv';
-import {default as envPaths, type Paths} from 'env-paths';
import {addTelemetry} from '../telemetry.ts';
import type {CliParams} from '../model/CliParams.ts';
@@ -31,7 +30,6 @@ export class MainService {
private readonly eventBus: EventEmitter;
private readonly logger: winston.Logger;
private containerEngine: ContainerEngine;
- private paths: Paths;
private mainFileService: FileContentService;
private authConfig: AuthConfig;
@@ -42,7 +40,6 @@ export class MainService {
this.attachDebug();
}
- this.paths = envPaths('wikigdrive', {suffix: null});
this.logger = createLogger(this.params.workdir, this.eventBus);
}
diff --git a/src/containers/server/ServerContainer.ts b/src/containers/server/ServerContainer.ts
index 661f29d3..3040b298 100644
--- a/src/containers/server/ServerContainer.ts
+++ b/src/containers/server/ServerContainer.ts
@@ -49,7 +49,6 @@ import {WebHookController} from './routes/WebHookController.ts';
const __filename = import.meta.filename;
const __dirname = import.meta.dirname;
-const HTML_DIR = __dirname + '/../../../apps/ui';
const MAIN_DIR = __dirname + '/../../..';
function getDurationInMilliseconds(start) {
@@ -113,15 +112,17 @@ export class ServerContainer extends Container {
next();
});
- app.use(express.static(path.resolve(MAIN_DIR, 'website', '.vitepress', 'dist'), { extensions: ['html'] }));
- const distPath = path.resolve(HTML_DIR, 'dist');
- app.use(express.static(distPath));
-
await this.initRouter(app);
await this.initAuth(app);
- await initStaticDistPages(app);
- await initUiServer(app, this.logger);
+ if (process.env.GIT_SHA === 'dev') {
+ await initStaticDistPages(app);
+ await initUiServer(app, this.logger);
+ }
+
+ app.use(express.static(path.resolve(MAIN_DIR, 'website', '.vitepress', 'dist'), { extensions: ['html'] }));
+ app.use(express.static(path.resolve(MAIN_DIR, 'apps', 'ui', 'dist')));
+
await initErrorHandler(app, this.logger);
const server = http.createServer(app);
diff --git a/website/.vitepress/config.ts b/website/.vitepress/config.ts
index e63eb70e..3c11c3f4 100644
--- a/website/.vitepress/config.ts
+++ b/website/.vitepress/config.ts
@@ -1,8 +1,32 @@
+import fs from 'node:fs';
+import path from 'node:path';
+
import {defineConfig} from 'vitepress';
import type {HeadConfig, TransformContext} from 'vitepress';
-import { withSidebar } from 'vitepress-sidebar';
+import {withSidebar} from 'vitepress-sidebar';
import {generateHead} from '../generateHead.ts';
+const __dirname = import.meta.dirname;
+
+function viteManifestToHead() {
+ const head: HeadConfig[] = generateHead() as HeadConfig[];
+
+ try {
+ const buffer = fs.readFileSync(path.resolve(__dirname, '..', '..', 'apps', 'ui', 'dist', '.vite', 'manifest.json'));
+ const manifest = JSON.parse(new TextDecoder().decode(buffer));
+
+ if (manifest['index.html'] && manifest['index.html'].file) {
+ head.push(['script', { src: manifest['index.html'].file.replace(/^assets/, '/assets'), type: 'module', crossorigin: '' }]);
+ }
+ } catch (error) {
+ console.warn(error);
+ }
+
+ return head;
+}
+
+const head: HeadConfig[] = viteManifestToHead();
+
const vitePressConfigs = {
title: 'WikiGDrive',
// description: "A VitePress Site",
@@ -23,22 +47,26 @@ const vitePressConfigs = {
// We use `[!!code` in demo to prevent transformation, here we revert it back.
{
- postprocess(code) {
+ postprocess(code: string) {
return code
.replace(/\[!!code/g, '[!code');
}
}
]
},
- head: generateHead() as HeadConfig[],
+ head,
themeConfig: {
logo: './images/logo.svg'
+ },
+ buildEnd() {
+ fs.cpSync(path.resolve(__dirname, '..', '..', 'apps', 'ui', 'dist', 'assets'), path.resolve(__dirname, 'dist', 'assets'), {recursive: true});
+ console.log('buildEnd, copied vite UI assets');
}
};
// https://vitepress.dev/reference/site-config
export default defineConfig(withSidebar(vitePressConfigs, {
- documentRootPath: '/website/docs',
+ documentRootPath: '/docs',
includeRootIndexFile: false,
basePath: '/docs',
rootGroupText: 'Contents'
diff --git a/website/generateHead.ts b/website/generateHead.ts
index 013b1f54..cd824c45 100644
--- a/website/generateHead.ts
+++ b/website/generateHead.ts
@@ -17,7 +17,7 @@ export function generateHead(): unknown[] {
['link', { rel: 'icon', type: 'image/svg+xml', href: '/images/logo.svg?GIT_SHA' }],
['script', { src: '/assets/prism.js?GIT_SHA' }],
- ['script', { src: '/src/main.ts?GIT_SHA', type: 'module' }],
+ // ['script', { src: '/src/main.ts?GIT_SHA', type: 'module' }],
].map(header => {
if (header.length > 0) {
for (const key of Object.keys(header[1])) {
diff --git a/website/package.json b/website/package.json
index 3dbc1ca5..15419211 100644
--- a/website/package.json
+++ b/website/package.json
@@ -1,3 +1,12 @@
{
- "type": "module"
+ "type": "module",
+ "scripts": {
+ "dev": "vitepress dev",
+ "build": "vitepress build",
+ "preview": "vitepress preview"
+ },
+ "devDependencies": {
+ "vitepress": "1.5.0",
+ "vitepress-sidebar": "1.29.0"
+ }
}