replace old vue app with vue-vite

This commit is contained in:
[ Taha. Dostifam‍ ] 2024-06-23 23:21:00 +03:30
parent 2a36b5bb76
commit d45292fb34
75 changed files with 1280 additions and 4228 deletions

View file

@ -1,23 +0,0 @@
# Description
> Please include a summary of the changes and the related issue. Please also include relevant motivation and context. List any dependencies that are required for this change. Write even the smallest details!
This PR Fixes Issue #(issue_number)
## Type of change
Please delete options that are not relevant.
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update
- [ ] Other: ?
## Checklist
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings or errors.

View file

@ -1,98 +0,0 @@
name: Docker
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
on:
# schedule:
# - cron: '42 17 * * *'
push:
branches: [ "main" ]
# Publish semver tags as releases.
# tags: [ 'v*.*.*' ]
pull_request:
branches: [ "main" ]
env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Install the cosign tool except on PR
# https://github.com/sigstore/cosign-installer
- name: Install cosign
if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@6e04d228eb30da1757ee4e1dd75a0ec73a653e06 #v3.1.1
with:
cosign-release: 'v2.1.1'
# Set up BuildKit Docker container builder to be able to build
# multi-platform images and export cache
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
# cache-from: type=gha
# cache-to: type=gha,mode=max
# Sign the resulting Docker image digest except on PRs.
# This will only write to the public Rekor transparency log when the Docker
# repository is public to avoid leaking data. If you would like to publish
# transparency data even for private images, pass --force to cosign below.
# https://github.com/sigstore/cosign
# - name: Sign the published Docker image
# if: ${{ github.event_name != 'pull_request' }}
# env:
# # https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
# TAGS: ${{ steps.meta.outputs.tags }}
# DIGEST: ${{ steps.build-and-push.outputs.digest }}
# # This step uses the identity token to provision an ephemeral certificate
# # against the sigstore community Fulcio instance.
# run: echo "${TAGS}" | xargs -I {} cosign sign --yes {}@${DIGEST}

9
.gitignore vendored
View file

@ -7,21 +7,16 @@ yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
yarn.lock
node_modules
.DS_Store
dist/
dist
dist-ssr
coverage
*.local
/cypress/videos/
/cypress/screenshots/
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj

View file

@ -1,4 +1,6 @@
{
"tabWidth": 2,
"useTabs": false
"useTabs": false,
"semi": true,
"singleQuote": false
}

11
Dockerfile copy Normal file
View file

@ -0,0 +1,11 @@
FROM node:20.10.0
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
EXPOSE 6080
CMD ["npm", "run", "start"]

5
README copy.md Normal file
View file

@ -0,0 +1,5 @@
# Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
Learn more about the recommended Project Setup and IDE Support in the [Vue Docs TypeScript Guide](https://vuejs.org/guide/typescript/overview.html#project-setup).

View file

@ -1,11 +1,10 @@
# Parch Linux Official Website
Forked From [Vanilla OS website](https://github.com/vanilla-os).
## Setup Development
```bash
```bash
npm install
npm run dev

View file

@ -1,37 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<base href="/" target="_blank" />
<link
rel="apple-touch-icon"
type="image/png"
sizes="180x180"
href="https://parchlinux.com/img/apple-touch-icon.png"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="https://parchlinux.com/img/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="https://parchlinux.com/img/favicon-16x16.png"
/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="/assets/css/index.css" />
<title>Parch Linux</title>
<meta
name="description"
content="Parch Linux is an open-source, Arch-based Linux distribution, that tried to be pretty, easy to use, light, fast and stable."
/>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/entry-client.ts"></script>
</body>
</html>
<head>
<meta charset="UTF-8" />
<base href="/" />
<link rel="apple-touch-icon" type="image/png" sizes="180x180"
href="https://parchlinux.com/img/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Parch Linux</title>
<meta name="description"
content="Parch Linux is an open-source, Arch-based Linux distribution, that tried to be pretty, easy to use, light, fast and stable." />
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

3623
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,37 +1,23 @@
{
"name": "parchlinux-website",
"version": "2.0.0",
"type": "module",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "node server",
"build": "npm run build:client && npm run build:server",
"build:client": "vite build --ssrManifest --outDir dist/client",
"build:server": "vite build --ssr src/entry-server.ts --outDir dist/server",
"start": "NODE_ENV=production node server"
"dev": "vite",
"build": "vue-tsc -b && vite build",
"preview": "vite preview"
},
"dependencies": {
"@types/marked": "^5.0.1",
"@vueuse/head": "^1.1.26",
"compression": "^1.7.4",
"express": "^4.19.2",
"js-yaml": "^4.1.0",
"marked": "^5.1.1",
"md-block": "^0.0.1",
"sirv": "^2.0.4",
"slugify": "^1.6.6",
"vue": "^3.4.21",
"vue-router": "^4.1.6"
"path": "^0.12.7",
"unhead": "^1.9.14",
"vue": "^3.4.29",
"vue-router": "^4.4.0"
},
"devDependencies": {
"@types/node": "^18.17.0",
"@vitejs/plugin-vue": "^4.0.0",
"@vue/tsconfig": "^0.1.3",
"glob": "^10.3.3",
"npm-run-all": "^4.1.5",
"ts-node": "^10.9.1",
"typescript": "~4.8.4",
"vite": "^4.5.2",
"vue-tsc": "^1.2.0"
"@vitejs/plugin-vue": "^5.0.5",
"typescript": "^5.2.2",
"vite": "^5.3.1",
"vue-tsc": "^2.0.21"
}
}

899
pnpm-lock.yaml generated Normal file
View file

@ -0,0 +1,899 @@
lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
.:
dependencies:
path:
specifier: ^0.12.7
version: 0.12.7
unhead:
specifier: ^1.9.14
version: 1.9.14
vue:
specifier: ^3.4.29
version: 3.4.30(typescript@5.5.2)
vue-router:
specifier: ^4.4.0
version: 4.4.0(vue@3.4.30(typescript@5.5.2))
devDependencies:
'@vitejs/plugin-vue':
specifier: ^5.0.5
version: 5.0.5(vite@5.3.1)(vue@3.4.30(typescript@5.5.2))
typescript:
specifier: ^5.2.2
version: 5.5.2
vite:
specifier: ^5.3.1
version: 5.3.1
vue-tsc:
specifier: ^2.0.21
version: 2.0.22(typescript@5.5.2)
packages:
'@babel/helper-string-parser@7.24.7':
resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.24.7':
resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.24.7':
resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/types@7.24.7':
resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==}
engines: {node: '>=6.9.0'}
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.21.5':
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.21.5':
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.21.5':
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.21.5':
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.21.5':
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.21.5':
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.21.5':
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.21.5':
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.21.5':
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.21.5':
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.21.5':
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.21.5':
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.21.5':
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.21.5':
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.21.5':
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.21.5':
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
'@esbuild/netbsd-x64@0.21.5':
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-x64@0.21.5':
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
'@esbuild/sunos-x64@0.21.5':
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.21.5':
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.21.5':
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.21.5':
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
'@jridgewell/sourcemap-codec@1.4.15':
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
'@rollup/rollup-android-arm-eabi@4.18.0':
resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.18.0':
resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.18.0':
resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.18.0':
resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-linux-arm-gnueabihf@4.18.0':
resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.18.0':
resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.18.0':
resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.18.0':
resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.18.0':
resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.18.0':
resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.18.0':
resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.18.0':
resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==}
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.18.0':
resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.18.0':
resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.18.0':
resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==}
cpu: [x64]
os: [win32]
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
'@unhead/dom@1.9.14':
resolution: {integrity: sha512-XZSZ2Wmm1Sv7k9scSFGrarbteSIl3p3I3oOUprKPDboBTvuG5q81Qz8O99NKUGKGJ8BKUkxCqE982eH3S8DKJA==}
'@unhead/schema@1.9.14':
resolution: {integrity: sha512-60NYSM6QjfK/wx4/QfaYyZ3XnNtwxS9a1oij2abEkGHPmA2/fqBOXeuHtnBo4eD42/Eg+owcS5s3mClPL8AkXw==}
'@unhead/shared@1.9.14':
resolution: {integrity: sha512-7ZIC7uDV8gp3KHm5JxJ/NXMENQgkh+SCyTcsILSpOhkAGeszMHABrB6vjeZDGM4J9mRUxwyPn24KI2zG/R+XiQ==}
'@vitejs/plugin-vue@5.0.5':
resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0
vue: ^3.2.25
'@volar/language-core@2.3.1':
resolution: {integrity: sha512-25CZ3ulM6jWgQsPQjKb7maKDlryvXWvsl7ytw4uj1Yyy17BgdiTWqMuNSxIODC3+/7IBOOGYoINC/1OOLACLLw==}
'@volar/source-map@2.3.1':
resolution: {integrity: sha512-fU3IL19wRy5S5OaGq67ejSl+/xdMuOHgp9Rsp3OiOhLyg25CctLYDdGZ9Y3+MJ1iqTLDh94PdvdR1BZX6I0hNQ==}
'@volar/typescript@2.3.1':
resolution: {integrity: sha512-OrUV6dYt/1h92+aWElexra6dp++gF/IEddvwyxeobyYfKAoKDUMsWU0iJCj0clZlfdyYaLmNEAkulJlVimxnOw==}
'@vue/compiler-core@3.4.30':
resolution: {integrity: sha512-ZL8y4Xxdh8O6PSwfdZ1IpQ24PjTAieOz3jXb/MDTfDtANcKBMxg1KLm6OX2jofsaQGYfIVzd3BAG22i56/cF1w==}
'@vue/compiler-dom@3.4.30':
resolution: {integrity: sha512-+16Sd8lYr5j/owCbr9dowcNfrHd+pz+w2/b5Lt26Oz/kB90C9yNbxQ3bYOvt7rI2bxk0nqda39hVcwDFw85c2Q==}
'@vue/compiler-sfc@3.4.30':
resolution: {integrity: sha512-8vElKklHn/UY8+FgUFlQrYAPbtiSB2zcgeRKW7HkpSRn/JjMRmZvuOtwDx036D1aqKNSTtXkWRfqx53Qb+HmMg==}
'@vue/compiler-ssr@3.4.30':
resolution: {integrity: sha512-ZJ56YZGXJDd6jky4mmM0rNaNP6kIbQu9LTKZDhcpddGe/3QIalB1WHHmZ6iZfFNyj5mSypTa4+qDJa5VIuxMSg==}
'@vue/devtools-api@6.6.3':
resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==}
'@vue/language-core@2.0.22':
resolution: {integrity: sha512-dNTAAtEOuMiz7N1s5tKpypnVVCtawxVSF5BukD0ELcYSw+DSbrSlYYSw8GuwvurodCeYFSHsmslE+c2sYDNoiA==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
'@vue/reactivity@3.4.30':
resolution: {integrity: sha512-bVJurnCe3LS0JII8PPoAA63Zd2MBzcKrEzwdQl92eHCcxtIbxD2fhNwJpa+KkM3Y/A4T5FUnmdhgKwOf6BfbcA==}
'@vue/runtime-core@3.4.30':
resolution: {integrity: sha512-qaFEbnNpGz+tlnkaualomogzN8vBLkgzK55uuWjYXbYn039eOBZrWxyXWq/7qh9Bz2FPifZqGjVDl/FXiq9L2g==}
'@vue/runtime-dom@3.4.30':
resolution: {integrity: sha512-tV6B4YiZRj5QsaJgw2THCy5C1H+2UeywO9tqgWEc21tn85qHEERndHN/CxlyXvSBFrpmlexCIdnqPuR9RM9thw==}
'@vue/server-renderer@3.4.30':
resolution: {integrity: sha512-TBD3eqR1DeDc0cMrXS/vEs/PWzq1uXxnvjoqQuDGFIEHFIwuDTX/KWAQKIBjyMWLFHEeTDGYVsYci85z2UbTDg==}
peerDependencies:
vue: 3.4.30
'@vue/shared@3.4.30':
resolution: {integrity: sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
brace-expansion@2.0.1:
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
computeds@0.0.1:
resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
hasBin: true
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
inherits@2.0.3:
resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
magic-string@0.30.10:
resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
minimatch@9.0.4:
resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
engines: {node: '>=16 || 14 >=14.17'}
muggle-string@0.4.1:
resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
path@0.12.7:
resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==}
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
postcss@8.4.38:
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
engines: {node: ^10 || ^12 || >=14}
process@0.11.10:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
rollup@4.18.0:
resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
semver@7.6.2:
resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
hasBin: true
source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
to-fast-properties@2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
typescript@5.5.2:
resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==}
engines: {node: '>=14.17'}
hasBin: true
unhead@1.9.14:
resolution: {integrity: sha512-npdYu6CfasX/IhB8OO27e3u4A1zhAY77T1FwWDIIUaJvugYTte5hjsolPX0/fG5jmjnWTFTuIkmbCSfj7bfIkg==}
util@0.10.4:
resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==}
vite@5.3.1:
resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || >=20.0.0
less: '*'
lightningcss: ^1.21.0
sass: '*'
stylus: '*'
sugarss: '*'
terser: ^5.4.0
peerDependenciesMeta:
'@types/node':
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
vscode-uri@3.0.8:
resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
vue-router@4.4.0:
resolution: {integrity: sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==}
peerDependencies:
vue: ^3.2.0
vue-template-compiler@2.7.16:
resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==}
vue-tsc@2.0.22:
resolution: {integrity: sha512-lMBIwPBO0sxCcmvu45yt1b035AaQ8/XSXQDk8m75y4j0jSXY/y/XzfEtssQ9JMS47lDaR10O3/926oCs8OeGUw==}
hasBin: true
peerDependencies:
typescript: '*'
vue@3.4.30:
resolution: {integrity: sha512-NcxtKCwkdf1zPsr7Y8+QlDBCGqxvjLXF2EX+yi76rV5rrz90Y6gK1cq0olIhdWGgrlhs9ElHuhi9t3+W5sG5Xw==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
zhead@2.2.4:
resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==}
snapshots:
'@babel/helper-string-parser@7.24.7': {}
'@babel/helper-validator-identifier@7.24.7': {}
'@babel/parser@7.24.7':
dependencies:
'@babel/types': 7.24.7
'@babel/types@7.24.7':
dependencies:
'@babel/helper-string-parser': 7.24.7
'@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
'@esbuild/aix-ppc64@0.21.5':
optional: true
'@esbuild/android-arm64@0.21.5':
optional: true
'@esbuild/android-arm@0.21.5':
optional: true
'@esbuild/android-x64@0.21.5':
optional: true
'@esbuild/darwin-arm64@0.21.5':
optional: true
'@esbuild/darwin-x64@0.21.5':
optional: true
'@esbuild/freebsd-arm64@0.21.5':
optional: true
'@esbuild/freebsd-x64@0.21.5':
optional: true
'@esbuild/linux-arm64@0.21.5':
optional: true
'@esbuild/linux-arm@0.21.5':
optional: true
'@esbuild/linux-ia32@0.21.5':
optional: true
'@esbuild/linux-loong64@0.21.5':
optional: true
'@esbuild/linux-mips64el@0.21.5':
optional: true
'@esbuild/linux-ppc64@0.21.5':
optional: true
'@esbuild/linux-riscv64@0.21.5':
optional: true
'@esbuild/linux-s390x@0.21.5':
optional: true
'@esbuild/linux-x64@0.21.5':
optional: true
'@esbuild/netbsd-x64@0.21.5':
optional: true
'@esbuild/openbsd-x64@0.21.5':
optional: true
'@esbuild/sunos-x64@0.21.5':
optional: true
'@esbuild/win32-arm64@0.21.5':
optional: true
'@esbuild/win32-ia32@0.21.5':
optional: true
'@esbuild/win32-x64@0.21.5':
optional: true
'@jridgewell/sourcemap-codec@1.4.15': {}
'@rollup/rollup-android-arm-eabi@4.18.0':
optional: true
'@rollup/rollup-android-arm64@4.18.0':
optional: true
'@rollup/rollup-darwin-arm64@4.18.0':
optional: true
'@rollup/rollup-darwin-x64@4.18.0':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.18.0':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.18.0':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.18.0':
optional: true
'@rollup/rollup-linux-arm64-musl@4.18.0':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.18.0':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.18.0':
optional: true
'@rollup/rollup-linux-x64-gnu@4.18.0':
optional: true
'@rollup/rollup-linux-x64-musl@4.18.0':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.18.0':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.18.0':
optional: true
'@rollup/rollup-win32-x64-msvc@4.18.0':
optional: true
'@types/estree@1.0.5': {}
'@unhead/dom@1.9.14':
dependencies:
'@unhead/schema': 1.9.14
'@unhead/shared': 1.9.14
'@unhead/schema@1.9.14':
dependencies:
hookable: 5.5.3
zhead: 2.2.4
'@unhead/shared@1.9.14':
dependencies:
'@unhead/schema': 1.9.14
'@vitejs/plugin-vue@5.0.5(vite@5.3.1)(vue@3.4.30(typescript@5.5.2))':
dependencies:
vite: 5.3.1
vue: 3.4.30(typescript@5.5.2)
'@volar/language-core@2.3.1':
dependencies:
'@volar/source-map': 2.3.1
'@volar/source-map@2.3.1': {}
'@volar/typescript@2.3.1':
dependencies:
'@volar/language-core': 2.3.1
path-browserify: 1.0.1
vscode-uri: 3.0.8
'@vue/compiler-core@3.4.30':
dependencies:
'@babel/parser': 7.24.7
'@vue/shared': 3.4.30
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.0
'@vue/compiler-dom@3.4.30':
dependencies:
'@vue/compiler-core': 3.4.30
'@vue/shared': 3.4.30
'@vue/compiler-sfc@3.4.30':
dependencies:
'@babel/parser': 7.24.7
'@vue/compiler-core': 3.4.30
'@vue/compiler-dom': 3.4.30
'@vue/compiler-ssr': 3.4.30
'@vue/shared': 3.4.30
estree-walker: 2.0.2
magic-string: 0.30.10
postcss: 8.4.38
source-map-js: 1.2.0
'@vue/compiler-ssr@3.4.30':
dependencies:
'@vue/compiler-dom': 3.4.30
'@vue/shared': 3.4.30
'@vue/devtools-api@6.6.3': {}
'@vue/language-core@2.0.22(typescript@5.5.2)':
dependencies:
'@volar/language-core': 2.3.1
'@vue/compiler-dom': 3.4.30
'@vue/shared': 3.4.30
computeds: 0.0.1
minimatch: 9.0.4
muggle-string: 0.4.1
path-browserify: 1.0.1
vue-template-compiler: 2.7.16
optionalDependencies:
typescript: 5.5.2
'@vue/reactivity@3.4.30':
dependencies:
'@vue/shared': 3.4.30
'@vue/runtime-core@3.4.30':
dependencies:
'@vue/reactivity': 3.4.30
'@vue/shared': 3.4.30
'@vue/runtime-dom@3.4.30':
dependencies:
'@vue/reactivity': 3.4.30
'@vue/runtime-core': 3.4.30
'@vue/shared': 3.4.30
csstype: 3.1.3
'@vue/server-renderer@3.4.30(vue@3.4.30(typescript@5.5.2))':
dependencies:
'@vue/compiler-ssr': 3.4.30
'@vue/shared': 3.4.30
vue: 3.4.30(typescript@5.5.2)
'@vue/shared@3.4.30': {}
balanced-match@1.0.2: {}
brace-expansion@2.0.1:
dependencies:
balanced-match: 1.0.2
computeds@0.0.1: {}
csstype@3.1.3: {}
de-indent@1.0.2: {}
entities@4.5.0: {}
esbuild@0.21.5:
optionalDependencies:
'@esbuild/aix-ppc64': 0.21.5
'@esbuild/android-arm': 0.21.5
'@esbuild/android-arm64': 0.21.5
'@esbuild/android-x64': 0.21.5
'@esbuild/darwin-arm64': 0.21.5
'@esbuild/darwin-x64': 0.21.5
'@esbuild/freebsd-arm64': 0.21.5
'@esbuild/freebsd-x64': 0.21.5
'@esbuild/linux-arm': 0.21.5
'@esbuild/linux-arm64': 0.21.5
'@esbuild/linux-ia32': 0.21.5
'@esbuild/linux-loong64': 0.21.5
'@esbuild/linux-mips64el': 0.21.5
'@esbuild/linux-ppc64': 0.21.5
'@esbuild/linux-riscv64': 0.21.5
'@esbuild/linux-s390x': 0.21.5
'@esbuild/linux-x64': 0.21.5
'@esbuild/netbsd-x64': 0.21.5
'@esbuild/openbsd-x64': 0.21.5
'@esbuild/sunos-x64': 0.21.5
'@esbuild/win32-arm64': 0.21.5
'@esbuild/win32-ia32': 0.21.5
'@esbuild/win32-x64': 0.21.5
estree-walker@2.0.2: {}
fsevents@2.3.3:
optional: true
he@1.2.0: {}
hookable@5.5.3: {}
inherits@2.0.3: {}
magic-string@0.30.10:
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
minimatch@9.0.4:
dependencies:
brace-expansion: 2.0.1
muggle-string@0.4.1: {}
nanoid@3.3.7: {}
path-browserify@1.0.1: {}
path@0.12.7:
dependencies:
process: 0.11.10
util: 0.10.4
picocolors@1.0.1: {}
postcss@8.4.38:
dependencies:
nanoid: 3.3.7
picocolors: 1.0.1
source-map-js: 1.2.0
process@0.11.10: {}
rollup@4.18.0:
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.18.0
'@rollup/rollup-android-arm64': 4.18.0
'@rollup/rollup-darwin-arm64': 4.18.0
'@rollup/rollup-darwin-x64': 4.18.0
'@rollup/rollup-linux-arm-gnueabihf': 4.18.0
'@rollup/rollup-linux-arm-musleabihf': 4.18.0
'@rollup/rollup-linux-arm64-gnu': 4.18.0
'@rollup/rollup-linux-arm64-musl': 4.18.0
'@rollup/rollup-linux-powerpc64le-gnu': 4.18.0
'@rollup/rollup-linux-riscv64-gnu': 4.18.0
'@rollup/rollup-linux-s390x-gnu': 4.18.0
'@rollup/rollup-linux-x64-gnu': 4.18.0
'@rollup/rollup-linux-x64-musl': 4.18.0
'@rollup/rollup-win32-arm64-msvc': 4.18.0
'@rollup/rollup-win32-ia32-msvc': 4.18.0
'@rollup/rollup-win32-x64-msvc': 4.18.0
fsevents: 2.3.3
semver@7.6.2: {}
source-map-js@1.2.0: {}
to-fast-properties@2.0.0: {}
typescript@5.5.2: {}
unhead@1.9.14:
dependencies:
'@unhead/dom': 1.9.14
'@unhead/schema': 1.9.14
'@unhead/shared': 1.9.14
hookable: 5.5.3
util@0.10.4:
dependencies:
inherits: 2.0.3
vite@5.3.1:
dependencies:
esbuild: 0.21.5
postcss: 8.4.38
rollup: 4.18.0
optionalDependencies:
fsevents: 2.3.3
vscode-uri@3.0.8: {}
vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)):
dependencies:
'@vue/devtools-api': 6.6.3
vue: 3.4.30(typescript@5.5.2)
vue-template-compiler@2.7.16:
dependencies:
de-indent: 1.0.2
he: 1.2.0
vue-tsc@2.0.22(typescript@5.5.2):
dependencies:
'@volar/typescript': 2.3.1
'@vue/language-core': 2.0.22(typescript@5.5.2)
semver: 7.6.2
typescript: 5.5.2
vue@3.4.30(typescript@5.5.2):
dependencies:
'@vue/compiler-dom': 3.4.30
'@vue/compiler-sfc': 3.4.30
'@vue/runtime-dom': 3.4.30
'@vue/server-renderer': 3.4.30(vue@3.4.30(typescript@5.5.2))
'@vue/shared': 3.4.30
optionalDependencies:
typescript: 5.5.2
zhead@2.2.4: {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
public/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
public/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

BIN
public/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 15 KiB

19
public/site.webmanifest Normal file
View file

@ -0,0 +1,19 @@
{
"name": "Parch Linux",
"short_name": "Parch Linux",
"icons": [
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#0d0d0d",
"background_color": "#0d0d0d",
"display": "standalone"
}

View file

@ -1,84 +0,0 @@
import fs from "node:fs/promises";
import express from "express";
// Constants
const isProduction = process.env.NODE_ENV === "production";
const port = process.env.PORT || 6080;
const base = process.env.BASE || "/";
// Cached production assets
const templateHtml = isProduction
? await fs.readFile("./dist/client/index.html", "utf-8")
: "";
const ssrManifest = isProduction
? await fs.readFile("./dist/client//ssr-manifest.json", "utf-8")
: undefined;
const app = express();
let vite;
if (!isProduction) {
console.log("Starting Vite server in dev mode...");
const { createServer } = await import("vite");
vite = await createServer({
server: { middlewareMode: true },
appType: "custom",
base,
});
app.use(vite.middlewares);
console.log("Vite server started.");
} else {
console.log("Starting production server...");
const compression = (await import("compression")).default;
const sirv = (await import("sirv")).default;
app.use(compression());
app.use(base, sirv("./dist/client", { extensions: [] }));
console.log("Production server started.");
}
// Serve HTML
app.use("*", async (req, res) => {
try {
const url = req.originalUrl.replace(base, "");
let template;
let render;
if (!isProduction) {
// Always read fresh template in development
template = await fs.readFile("./index.html", "utf-8");
template = await vite.transformIndexHtml(url, template);
render = (await vite.ssrLoadModule("/src/entry-server.ts")).render;
} else {
template = templateHtml;
render = (await import("./dist/server/entry-server.js")).render;
}
const rendered = await render(url, ssrManifest);
const html = template
.replace(`<!--app-head-->`, rendered.head ?? "")
.replace(`<!--app-html-->`, rendered.html ?? "");
res.status(200).set({ "Content-Type": "text/html" }).end(html);
} catch (e) {
vite?.ssrFixStacktrace(e);
console.log(e.stack);
res.status(500).end(e.stack);
}
});
// Start http server
const server = app.listen(port, () => {
console.log(`Server started at http://localhost:${port}`);
});
// Handle process termination (Ctrl+C)
process.on("SIGINT", () => {
console.log("Stopping server...");
// Close the server gracefully
server.close(() => {
console.log("Server stopped.");
process.exit(0);
});
});

View file

@ -1,16 +1,3 @@
<template>
<router-view />
</template>
<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
name: "App",
data() {
return {
title: "",
};
},
});
</script>
<RouterView/>
</template>

View file

@ -33,7 +33,6 @@
@import url('components/toolBox.css');
@import url('components/topBar.css');
@import url('colors/default.css');
@import url('colors/dark.css');
@import url('colors/classes.css');
@import url('print.css');

View file

@ -1,5 +1,5 @@
<template>
<footer class="siteFooter ">
<footer class="siteFooter">
<section class="siteFooter-wrapper container">
<article class="siteFooter-header">
<div class="siteFooter-logo">

View file

@ -1,5 +0,0 @@
import { createApp } from './main'
const { app } = createApp("client")
app.mount('#app')

View file

@ -1,10 +0,0 @@
import { renderToString } from 'vue/server-renderer'
import { createApp } from './main'
export async function render() {
const { app } = createApp("server")
const ctx = {}
const html = await renderToString(app, ctx)
return { html }
}

View file

@ -1,6 +1,6 @@
<template>
<div>
<topbar />
<Topbar />
<main class="page">
<div class="page-wrapper container">
<section class="page-header">
@ -18,15 +18,22 @@
</section>
</div>
</main>
<site-footer />
<Footer />
</div>
</template>
<script lang="ts">
import { defineComponent } from "vue";
import Footer from '@/components/Footer.vue';
import Topbar from '@/components/Topbar.vue';
export default defineComponent({
name: "layout-page",
name: "context-provider",
components: {
Topbar,
Footer
},
computed: {
parentRoute() {
if (!this.$route.meta.parent) return null;

22
src/layouts/Default.vue Normal file
View file

@ -0,0 +1,22 @@
<template>
<Topbar />
<main>
<router-view />
</main>
<Footer />
</template>
<script lang="ts">
import { defineComponent } from "vue";
import Topbar from "@/components/Topbar.vue"
import Footer from "@/components/Footer.vue"
export default defineComponent({
name: "default",
components: {
Topbar,
Footer
}
});
</script>

View file

@ -1,8 +0,0 @@
<template>
<topbar />
<main>
<router-view />
</main>
<site-footer />
</template>

View file

@ -1,18 +1,7 @@
import { createSSRApp } from 'vue'
import { createHead } from "@vueuse/head"
import { createApp } from 'vue'
import App from './App.vue'
import createRouterInstance from './router'
import ComponentLoader from "@/components/loader";
import router from "./router"
export function createApp(clientType: string) {
const app = createSSRApp(App)
const head = createHead()
const router = createRouterInstance(clientType)
import "./assets/css/index.css"
app.use(router)
app.use(head)
app.use(ComponentLoader)
return { app, router }
}
createApp(App).use(router).mount('#app')

145
src/router/context_pages.ts Normal file
View file

@ -0,0 +1,145 @@
const contextPages = [
{
path: "/whitepaper",
name: "whitepaper",
component: () =>// @ts-ignore
import("../views/Whitepaper.vue"),
meta: {
title: "Whitepaper",
description: "Everything about Parch Linux.",
},
},
{
path: "/privacy-policy",
name: "privacy-policy",
component: () =>// @ts-ignore
import("../views/PrivacyPolicy.vue"),
meta: {
title: "Privacy Policy",
description: "Check out our Privacy Policy.",
},
},
{
path: "/os-privacy-policy",
name: "os-privacy-policy",
component: () =>// @ts-ignore
import("../views/OSPrivacyPolicy.vue"),
meta: {
title: "OS Privacy Policy",
description: "Check out the Privacy Policy of Parch Linux (the operating system).",
},
},
{
path: "/cookies-policy",
name: "cookies-policy",
component: () =>// @ts-ignore
import("../views/CookiesPolicy.vue"),
meta: {
title: "Cookies Policy",
description: "Check out our Cookies Policy.",
},
},
{
path: "/licenses",
name: "licenses",
component: () => // @ts-ignore
import("../views/Licenses.vue") ,
meta: {
title: "Licenses",
description: "Parch Linux is built on top of many technologies. Check out the licenses.",
},
},
{
path: "/team",
name: "team",
component: () =>// @ts-ignore
import("../views/Team.vue"),
meta: {
title: "Team",
description: "Meet the people behind Parch Linux.💙🪼",
},
},
{
path: "/team/contributors",
name: "team-contributors",
component: () =>// @ts-ignore
import("../views/Contributors.vue"),
meta: {
title: "Contributors",
description: "Meet the people who contributed to Parch Linux.✨",
parent: "team",
},
},
{
path: "/contribution",
name: "contribution",
component: () =>// @ts-ignore
import("../views/Contribution.vue"),
meta: {
title: "Contribution",
description: "How to contribute in Parch Linux.",
},
},
{
path: "/code-of-conduct",
name: "code-of-conduct",
component: () =>// @ts-ignore
import("../views/CodeOfConduct.vue"),
meta: {
title: "Code of Conduct",
description: "Everyone must follow our Code of Conduct to be part of Parch Linux.",
},
},
{
path: "/technologies-and-credits",
name: "technologies-and-credits",
component: () =>// @ts-ignore
import("../views/TechnologiesAndCredits.vue"),
meta: {
title: "Technologies and Credits",
description: "Parch Linux is built on top of many technologies.",
},
},
{
path: "/community",
name: "community",
component: () =>// @ts-ignore
import("../views/Community.vue"),
meta: {
title: "Community",
description: "Join our community of users and developers.",
},
},
{
path: "/developers-program",
name: "developers-program",
component: () =>// @ts-ignore
import("../views/DevelopersProgram.vue"),
meta: {
title: "Developers Program",
description: "Join our Developers Program and get access to exclusive content.",
},
},
{
path: "/download",
name: "download",
component: () =>// @ts-ignore
import("../views/Download.vue"),
meta: {
title: "Get Parch Linux",
description: "Get the latest version.",
},
},
{
path: "/nerd-info",
name: "nerd-info",
component: () =>// @ts-ignore
import("../views/NerdInfo.vue"),
meta: {
title: "Information for Nerds",
description: "What is Parch Linux from a technical point of view.",
},
},
]
export default contextPages;

View file

@ -0,0 +1,13 @@
const defaultPages = [
{
path: "",
name: "home",
component: () =>// @ts-ignore
import("../views/Home.vue"),
meta: {
description: "Parch Linux is an operating system built with simplicity in mind. It's fast, lightweight, beautiful and ready for all your daily tasks.",
},
},
]
export default defaultPages

View file

@ -1,258 +1,85 @@
import { createRouter, createMemoryHistory, createWebHistory } from 'vue-router'
import { useHead } from 'unhead'
import contextPages from "./context_pages"
import defaultPages from './default_pages';
export default function createRouterInstance(clientType: string) {
const history = clientType === 'server'
? createMemoryHistory(import.meta.env.BASE_URL)
: createWebHistory(import.meta.env.BASE_URL);
// const history = createMemoryHistory(import.meta.env.BASE_URL);
const history = createWebHistory(import.meta.env.BASE_URL);
const router = createRouter({
history,
routes: [
{
path: '/',
component: () =>// @ts-ignore
import(/* webpackChunkName: "Main" */ "@/layouts/Main.vue"),
children: [
{
path: "",
name: "home",
component: () =>// @ts-ignore
import(/* webpackChunkName: "Home" */ "@/views/Home.vue"),
meta: {
description: "Parch Linux is an operating system built with simplicity in mind. It's fast, lightweight, beautiful and ready for all your daily tasks.",
},
const router = createRouter({
history,
routes: [
{
path: '/',
component: () =>// @ts-ignore
import("../layouts/Default.vue"),
children: defaultPages
},
{
path: '/',
component: () =>// @ts-ignore
import("../layouts/ContextProvider.vue"),
children: contextPages
},
{
path: '/:notFound',
name: 'not-found',
component: () =>// @ts-ignore
import("../layouts/ContextProvider.vue"),
children: [
{
path: "",
name: "404",
component: () =>// @ts-ignore
import("../views/404.vue"),
meta: {
title: "404 - Page not found",
description: "The page you are looking for does not exist.",
},
]
},
]
},
],
scrollBehavior(to: any, from: any, savedPosition: any) {
return { top: 0 }
},
})
router.beforeEach((to: { meta: { title: string; description: any; }; path: string; } | undefined, from: any, next: () => void) => {
if (to === undefined) {
next();
return;
}
useHead({// @ts-ignore
title: to.meta.title ? to.meta.title + " - Parch Linux" : "Parch Linux",
meta: [
{
name: "description",// @ts-ignore
content: to.meta.description,
},
{
path: '/',
component: () =>// @ts-ignore
import(/* webpackChunkName: "Pages" */ "@/layouts/Page.vue"),
children: [
{
path: "/whitepaper",
name: "whitepaper",
component: () =>// @ts-ignore
import(/* webpackChunkName: "PrivacyPolicy" */ "@/views/Whitepaper.vue"),
meta: {
title: "Whitepaper",
description: "Everything about Parch Linux.",
},
},
{
path: "/privacy-policy",
name: "privacy-policy",
component: () =>// @ts-ignore
import(/* webpackChunkName: "PrivacyPolicy" */ "@/views/PrivacyPolicy.vue"),
meta: {
title: "Privacy Policy",
description: "Check out our Privacy Policy.",
},
},
{
path: "/os-privacy-policy",
name: "os-privacy-policy",
component: () =>// @ts-ignore
import(/* webpackChunkName: "PrivacyPolicy" */ "@/views/OSPrivacyPolicy.vue"),
meta: {
title: "OS Privacy Policy",
description: "Check out the Privacy Policy of Parch Linux (the operating system).",
},
},
{
path: "/cookies-policy",
name: "cookies-policy",
component: () =>// @ts-ignore
import(/* webpackChunkName: "CookiesPolicy" */ "@/views/CookiesPolicy.vue"),
meta: {
title: "Cookies Policy",
description: "Check out our Cookies Policy.",
},
},
{
path: "/licenses",
name: "licenses",
component: () =>// @ts-ignore
import(/* webpackChunkName: "Licenses" */ "@/views/Licenses.vue"),
meta: {
title: "Licenses",
description: "Parch Linux is built on top of many technologies. Check out the licenses.",
},
},
{
path: "/team",
name: "team",
component: () =>// @ts-ignore
import(/* webpackChunkName: "Team" */ "@/views/Team.vue"),
meta: {
title: "Team",
description: "Meet the people behind Parch Linux.💙🪼",
},
},
{
path: "/team/contributors",
name: "team-contributors",
component: () =>// @ts-ignore
import(/* webpackChunkName: "Contributors" */ "@/views/Contributors.vue"),
meta: {
title: "Contributors",
description: "Meet the people who contributed to Parch Linux.✨",
parent: "team",
},
},
{
path: "/contribution",
name: "contribution",
component: () =>// @ts-ignore
import(/* webpackChunkName: "Contributors" */ "@/views/Contribution.vue"),
meta: {
title: "Contribution",
description: "How to contribute in Parch Linux.",
},
},
{
path: "/code-of-conduct",
name: "code-of-conduct",
component: () =>// @ts-ignore
import(/* webpackChunkName: "CodeOfConduct" */ "@/views/CodeOfConduct.vue"),
meta: {
title: "Code of Conduct",
description: "Everyone must follow our Code of Conduct to be part of Parch Linux.",
},
},
{
path: "/technologies-and-credits",
name: "technologies-and-credits",
component: () =>// @ts-ignore
import(/* webpackChunkName: "TechnologiesAndCredits" */ "@/views/TechnologiesAndCredits.vue"),
meta: {
title: "Technologies and Credits",
description: "Parch Linux is built on top of many technologies.",
},
},
{
path: "/community",
name: "community",
component: () =>// @ts-ignore
import(/* webpackChunkName: "Community" */ "@/views/Community.vue"),
meta: {
title: "Community",
description: "Join our community of users and developers.",
},
},
{
path: "/developers-program",
name: "developers-program",
component: () =>// @ts-ignore
import(/* webpackChunkName: "DevelopersProgram" */ "@/views/DevelopersProgram.vue"),
meta: {
title: "Developers Program",
description: "Join our Developers Program and get access to exclusive content.",
},
},
{
path: "/download",
name: "download",
component: () =>// @ts-ignore
import(/* webpackChunkName: "Download" */ "@/views/Download.vue"),
meta: {
title: "Get Parch Linux",
description: "Get the latest version.",
},
},
{
path: "/nerd-info",
name: "nerd-info",
component: () =>// @ts-ignore
import(/* webpackChunkName: "Download" */ "@/views/NerdInfo.vue"),
meta: {
title: "Information for Nerds",
description: "What is Parch Linux from a technical point of view.",
},
},
]
name: "og:title",// @ts-ignore
content: to.meta.title,
},
{
path: '/:notFound',
name: 'not-found',
component: () =>// @ts-ignore
import(/* webpackChunkName: "Errors" */ "@/layouts/Page.vue"),
children: [
{
path: "",
name: "404",
component: () =>// @ts-ignore
import(/* webpackChunkName: "404" */ "@/views/404.vue"),
meta: {
title: "404 - Page not found",
description: "The page you are looking for does not exist.",
},
},
]
name: "og:description",// @ts-ignore
content: to.meta.description,
},
{
name: "og:image",
content: "/img/favicon-32x32.png",
},
{
name: "og:url",
content: "https://parchlinux.com" + to.path,
},
],
scrollBehavior(to, from, savedPosition) {
return { top: 0 }
},
})
router.beforeEach((to, from, next) => {
if (to === undefined) {
next();
return;
}
useHead({// @ts-ignore
title: to.meta.title ? to.meta.title + " - Parch Linux" : "Parch Linux",
meta: [
{
name: "description",// @ts-ignore
content: to.meta.description,
},
{
name: "og:title",// @ts-ignore
content: to.meta.title,
},
{
name: "og:description",// @ts-ignore
content: to.meta.description,
},
{
name: "og:image",
content: "/img/favicon-32x32.png",
},
{
name: "og:url",
content: "https://parchlinux.com" + to.path,
},
{
name: 'twitter:card',
content: 'summary_large_image',
},
{
name: 'twitter:title',
content: 'Parch Linux- Your next Operating System',
},
{
name: 'twitter:description',// @ts-ignore
content: to.meta.description,
},
{
name: 'twitter:image',
content: 'https://parchlinux.com/img/favicon-32x32.png',
},
{
name: 'twitter:url',
content: 'https://parchlinux.com' + to.path,
},
],
});
next();
});
return router;
}
next();
});
export default router;

View file

27
tsconfig.app.json Normal file
View file

@ -0,0 +1,27 @@
{
"compilerOptions": {
"composite": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
"jsx": "preserve",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
}

View file

@ -1,17 +1,9 @@
{
"extends": "@vue/tsconfig/tsconfig.web.json",
"include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
},
"files": [],
"references": [
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.node.json"
}

View file

@ -1,17 +1,12 @@
{
"extends": "@vue/tsconfig/tsconfig.node.json",
"include": [
"vite.config.*",
"vitest.config.*",
"cypress.config.*",
"playwright.config.*"
],
"compilerOptions": {
"composite": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
"skipLibCheck": true,
"module": "ESNext",
"moduleResolution": "Bundler",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true,
"types": ["node"]
}
"noEmit": true
},
"include": ["vite.config.ts"]
}

View file

@ -1,14 +1,13 @@
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import {resolve} from "path"
// https://vitejs.dev/config/
export default defineConfig({
base: './',
plugins: [vue()],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
"@": resolve(__dirname, "src")
}
}
})