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" + } }