replace old vue app with vue-vite
23
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -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.
|
98
.github/workflows/docker-publish.yml
vendored
|
@ -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
|
@ -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
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
"tabWidth": 2,
|
||||
"useTabs": false
|
||||
"useTabs": false,
|
||||
"semi": true,
|
||||
"singleQuote": false
|
||||
}
|
||||
|
|
11
Dockerfile copy
Normal 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
|
@ -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).
|
|
@ -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
|
||||
|
||||
|
|
53
index.html
|
@ -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
40
package.json
|
@ -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
|
@ -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: {}
|
BIN
public/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
public/android-chrome-512x512.png
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
public/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
public/favicon-16x16.png
Normal file
After Width: | Height: | Size: 648 B |
BIN
public/favicon-32x32.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 15 KiB |
19
public/site.webmanifest
Normal 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"
|
||||
}
|
84
server.js
|
@ -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);
|
||||
});
|
||||
});
|
17
src/App.vue
|
@ -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>
|
|
@ -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');
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<footer class="siteFooter ">
|
||||
<footer class="siteFooter">
|
||||
<section class="siteFooter-wrapper container">
|
||||
<article class="siteFooter-header">
|
||||
<div class="siteFooter-logo">
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
import { createApp } from './main'
|
||||
|
||||
const { app } = createApp("client")
|
||||
|
||||
app.mount('#app')
|
|
@ -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 }
|
||||
}
|
|
@ -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
|
@ -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>
|
|
@ -1,8 +0,0 @@
|
|||
<template>
|
||||
<topbar />
|
||||
<main>
|
||||
<router-view />
|
||||
</main>
|
||||
<site-footer />
|
||||
</template>
|
||||
|
19
src/main.ts
|
@ -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
|
@ -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;
|
13
src/router/default_pages.ts
Normal 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
|
|
@ -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;
|
0
env.d.ts → src/vite-env.d.ts
vendored
27
tsconfig.app.json
Normal 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"]
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"]
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|