From a8857a30329bf297795354dcc7757aa03d1b52f0 Mon Sep 17 00:00:00 2001 From: cxy <1276771477@qq.com> Date: Wed, 13 Nov 2024 22:03:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 + .idea/compiler.xml | 19 + .idea/dataSources.xml | 17 + .idea/encodings.xml | 6 + .idea/jarRepositories.xml | 20 + .idea/misc.xml | 14 + .idea/modules.xml | 9 + .idea/uiDesigner.xml | 124 +++ .idea/vcs.xml | 6 + backend/.gitattributes | 2 + backend/.gitignore | 33 + backend/.mvn/wrapper/maven-wrapper.properties | 19 + backend/mvnw | 259 ++++++ backend/mvnw.cmd | 149 ++++ backend/pom.xml | 85 ++ .../example/backend/BackendApplication.java | 20 + .../src/main/resources/application.properties | 7 + .../BackendBackendApplicationTests.java | 13 + frontend/.gitignore | 24 + frontend/.vscode/extensions.json | 3 + frontend/README.md | 5 + frontend/frontend.iml | 9 + frontend/index.html | 14 + frontend/package.json | 23 + frontend/public/logo.png | Bin 0 -> 24400 bytes frontend/public/user.jpg | Bin 0 -> 19728 bytes frontend/public/vite.svg | 1 + frontend/src/App.vue | 30 + frontend/src/View/Address.vue | 9 + frontend/src/View/Expressform.vue | 13 + frontend/src/View/Login.vue | 114 +++ frontend/src/View/Page1.vue | 9 + frontend/src/View/Page2.vue | 9 + frontend/src/View/Register.vue | 97 +++ frontend/src/View/user/ExpressList.vue | 153 ++++ frontend/src/View/user/Index.vue | 162 ++++ frontend/src/View/user/MyInfo.vue | 88 +++ frontend/src/View/user/sendPackage.vue | 80 ++ frontend/src/assets/vue.svg | 1 + frontend/src/components/Home.vue | 14 + frontend/src/main.js | 19 + frontend/src/request.js | 5 + frontend/src/router.js | 65 ++ frontend/src/store/index.js | 14 + frontend/src/style.css | 79 ++ frontend/vite.config.js | 7 + frontend/yarn.lock | 748 ++++++++++++++++++ project-express.iml | 8 + 48 files changed, 2613 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/dataSources.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 backend/.gitattributes create mode 100644 backend/.gitignore create mode 100644 backend/.mvn/wrapper/maven-wrapper.properties create mode 100644 backend/mvnw create mode 100644 backend/mvnw.cmd create mode 100644 backend/pom.xml create mode 100644 backend/src/main/java/org/example/backend/BackendApplication.java create mode 100644 backend/src/main/resources/application.properties create mode 100644 backend/src/test/java/org/example/backend/BackendBackendApplicationTests.java create mode 100644 frontend/.gitignore create mode 100644 frontend/.vscode/extensions.json create mode 100644 frontend/README.md create mode 100644 frontend/frontend.iml create mode 100644 frontend/index.html create mode 100644 frontend/package.json create mode 100644 frontend/public/logo.png create mode 100644 frontend/public/user.jpg create mode 100644 frontend/public/vite.svg create mode 100644 frontend/src/App.vue create mode 100644 frontend/src/View/Address.vue create mode 100644 frontend/src/View/Expressform.vue create mode 100644 frontend/src/View/Login.vue create mode 100644 frontend/src/View/Page1.vue create mode 100644 frontend/src/View/Page2.vue create mode 100644 frontend/src/View/Register.vue create mode 100644 frontend/src/View/user/ExpressList.vue create mode 100644 frontend/src/View/user/Index.vue create mode 100644 frontend/src/View/user/MyInfo.vue create mode 100644 frontend/src/View/user/sendPackage.vue create mode 100644 frontend/src/assets/vue.svg create mode 100644 frontend/src/components/Home.vue create mode 100644 frontend/src/main.js create mode 100644 frontend/src/request.js create mode 100644 frontend/src/router.js create mode 100644 frontend/src/store/index.js create mode 100644 frontend/src/style.css create mode 100644 frontend/vite.config.js create mode 100644 frontend/yarn.lock create mode 100644 project-express.iml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..66bc19f --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..24738f4 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,17 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306/express_management + + + + + + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..dfc8d74 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..5a2f139 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..5ac9743 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..196b142 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/backend/.gitattributes b/backend/.gitattributes new file mode 100644 index 0000000..3b41682 --- /dev/null +++ b/backend/.gitattributes @@ -0,0 +1,2 @@ +/mvnw text eol=lf +*.cmd text eol=crlf diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/backend/.mvn/wrapper/maven-wrapper.properties b/backend/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..d58dfb7 --- /dev/null +++ b/backend/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +wrapperVersion=3.3.2 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/backend/mvnw b/backend/mvnw new file mode 100644 index 0000000..19529dd --- /dev/null +++ b/backend/mvnw @@ -0,0 +1,259 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.3.2 +# +# Optional ENV vars +# ----------------- +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output +# ---------------------------------------------------------------------------- + +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x + +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + if [ -n "${JAVA_HOME-}" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" + + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/backend/mvnw.cmd b/backend/mvnw.cmd new file mode 100644 index 0000000..249bdf3 --- /dev/null +++ b/backend/mvnw.cmd @@ -0,0 +1,149 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' +$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" +if ($env:MAVEN_USER_HOME) { + $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" +} +$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/backend/pom.xml b/backend/pom.xml new file mode 100644 index 0000000..fe28dcb --- /dev/null +++ b/backend/pom.xml @@ -0,0 +1,85 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.5 + + + org.example + backend + 0.0.1-SNAPSHOT + backend + backend + + + + + + + + + + + + + + + 17 + + + + org.springframework.boot + spring-boot-starter-data-jdbc + + + org.springframework.boot + spring-boot-starter-web + + + javax.persistence + javax.persistence-api + 2.2 + + + + com.mysql + mysql-connector-j + runtime + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/backend/src/main/java/org/example/backend/BackendApplication.java b/backend/src/main/java/org/example/backend/BackendApplication.java new file mode 100644 index 0000000..5b6f6d8 --- /dev/null +++ b/backend/src/main/java/org/example/backend/BackendApplication.java @@ -0,0 +1,20 @@ +package org.example.backend; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class BackendApplication { + + @RequestMapping("/") + public String hello() { + return "Hello, World!"; + } + public static void main(String[] args) { + SpringApplication.run(BackendApplication.class, args); + } +} diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties new file mode 100644 index 0000000..2966c80 --- /dev/null +++ b/backend/src/main/resources/application.properties @@ -0,0 +1,7 @@ +spring.application.name=backend +server.port=8888 +spring.datasource.url=jdbc:mysql://localhost:3306/express_management +spring.datasource.username=root +spring.datasource.password=123456 +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true \ No newline at end of file diff --git a/backend/src/test/java/org/example/backend/BackendBackendApplicationTests.java b/backend/src/test/java/org/example/backend/BackendBackendApplicationTests.java new file mode 100644 index 0000000..92ecd03 --- /dev/null +++ b/backend/src/test/java/org/example/backend/BackendBackendApplicationTests.java @@ -0,0 +1,13 @@ +package org.example.backend; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class BackendBackendApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/.vscode/extensions.json b/frontend/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/frontend/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..1511959 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,5 @@ +# Vue 3 + Vite + +This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` + + diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..39449c9 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,23 @@ +{ + "name": "lesson1_vite", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "axios": "1.2.1", + "element-plus": "^2.8.6", + "pinia": "2.0.27", + "save": "^2.9.0", + "vue": "^3.4.37", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.1.2", + "vite": "^5.4.1" + } +} diff --git a/frontend/public/logo.png b/frontend/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ed2aa6f08ebc7515409923547a91d4cb22ae24 GIT binary patch literal 24400 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 literal 0 HcmV?d00001 diff --git a/frontend/public/user.jpg b/frontend/public/user.jpg new file mode 100644 index 0000000000000000000000000000000000000000..02492872bdf417f2d2f88a8f637b4dd6aea91287 GIT binary patch literal 19728 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

J1)Sf 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 WWahC#1MF~|)-g%VdnewZ5&zj=9(ySO literal 0 HcmV?d00001 diff --git a/frontend/public/vite.svg b/frontend/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/frontend/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/App.vue b/frontend/src/App.vue new file mode 100644 index 0000000..341dbf0 --- /dev/null +++ b/frontend/src/App.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/frontend/src/View/Address.vue b/frontend/src/View/Address.vue new file mode 100644 index 0000000..2cffc21 --- /dev/null +++ b/frontend/src/View/Address.vue @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/View/Expressform.vue b/frontend/src/View/Expressform.vue new file mode 100644 index 0000000..b53aa94 --- /dev/null +++ b/frontend/src/View/Expressform.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/View/Login.vue b/frontend/src/View/Login.vue new file mode 100644 index 0000000..dc9bbfb --- /dev/null +++ b/frontend/src/View/Login.vue @@ -0,0 +1,114 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/View/Page1.vue b/frontend/src/View/Page1.vue new file mode 100644 index 0000000..9f19e8f --- /dev/null +++ b/frontend/src/View/Page1.vue @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/View/Page2.vue b/frontend/src/View/Page2.vue new file mode 100644 index 0000000..9cd9eb6 --- /dev/null +++ b/frontend/src/View/Page2.vue @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/View/Register.vue b/frontend/src/View/Register.vue new file mode 100644 index 0000000..e9388ca --- /dev/null +++ b/frontend/src/View/Register.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/frontend/src/View/user/ExpressList.vue b/frontend/src/View/user/ExpressList.vue new file mode 100644 index 0000000..dcf612f --- /dev/null +++ b/frontend/src/View/user/ExpressList.vue @@ -0,0 +1,153 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/View/user/Index.vue b/frontend/src/View/user/Index.vue new file mode 100644 index 0000000..98014f5 --- /dev/null +++ b/frontend/src/View/user/Index.vue @@ -0,0 +1,162 @@ + + + + + + \ No newline at end of file diff --git a/frontend/src/View/user/MyInfo.vue b/frontend/src/View/user/MyInfo.vue new file mode 100644 index 0000000..305323d --- /dev/null +++ b/frontend/src/View/user/MyInfo.vue @@ -0,0 +1,88 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/View/user/sendPackage.vue b/frontend/src/View/user/sendPackage.vue new file mode 100644 index 0000000..3a72838 --- /dev/null +++ b/frontend/src/View/user/sendPackage.vue @@ -0,0 +1,80 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/assets/vue.svg b/frontend/src/assets/vue.svg new file mode 100644 index 0000000..770e9d3 --- /dev/null +++ b/frontend/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/components/Home.vue b/frontend/src/components/Home.vue new file mode 100644 index 0000000..f74d1e3 --- /dev/null +++ b/frontend/src/components/Home.vue @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/main.js b/frontend/src/main.js new file mode 100644 index 0000000..31b294d --- /dev/null +++ b/frontend/src/main.js @@ -0,0 +1,19 @@ +//引入createApp用于创建应用 +import { createApp } from 'vue' +import './style.css' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' +//引入App根组件 +import App from './components/Home.vue' +//引入路由器 +import router from './router' +import { createPinia } from 'pinia' +//创建一个应用 +const app=createApp(App) +//使用路由器 +app.use(router) +app.use(ElementPlus) +const pinia=createPinia() +app.use(pinia) +//挂载整个应用 +app.mount('#app') \ No newline at end of file diff --git a/frontend/src/request.js b/frontend/src/request.js new file mode 100644 index 0000000..3448403 --- /dev/null +++ b/frontend/src/request.js @@ -0,0 +1,5 @@ +import axios from "axios"; +const request=axios.create({ + timeout:2000 +}) +export default request \ No newline at end of file diff --git a/frontend/src/router.js b/frontend/src/router.js new file mode 100644 index 0000000..31acbe8 --- /dev/null +++ b/frontend/src/router.js @@ -0,0 +1,65 @@ +import { + createRouter, + createWebHashHistory +} from "vue-router" +import {userStore} from "./store" +import {storeToRefs} from "pinia" + + +const router = createRouter({ + history: createWebHashHistory(), + routes: [{ + path: '/', + redirect: '/login' + }, + { + path: '/login', + name: 'Login', + component: () => import('./View/Login.vue') + }, + { + path: '/user', + name: 'User', + component: () => import('./View/user/index.vue'), + redirect: "/user/myInfo", + children:[ + { + path: 'myInfo', + component: () => import('./View/user/MyInfo.vue'), + }, + { + path: 'expressList', + component: () => import('./View/user/ExpressList.vue'), + }, + { + path: 'sendPackage', + component: () => import('./View/user/SendPackage.vue'), + } + ] + }, + { + path: '/register', + name: 'Register', + component: () => import('./View/Register.vue') + } + ] +}) + +router.beforeEach((to,from,next)=>{ + const store = userStore() + const {loginState} = storeToRefs(store) + console.log("路由守卫:",loginState.value) + if(to.name == "Login"){ + next() + }else{ + if(loginState.value){ + next() + }else{ + next({ + name:'Login' + }) + } + } +}) + +export default router \ No newline at end of file diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js new file mode 100644 index 0000000..1f5bc35 --- /dev/null +++ b/frontend/src/store/index.js @@ -0,0 +1,14 @@ +import { defineStore } from "pinia"; +export const userStore=defineStore('storeId',{ + state(){ + return{ + loginState:false//已登录为true,未登录为false + } + }, + getters:{}, + actions:{ + setLoginState(state){ + this.loginState=state + } + } +}) \ No newline at end of file diff --git a/frontend/src/style.css b/frontend/src/style.css new file mode 100644 index 0000000..bb131d6 --- /dev/null +++ b/frontend/src/style.css @@ -0,0 +1,79 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +.card { + padding: 2em; +} + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/frontend/vite.config.js b/frontend/vite.config.js new file mode 100644 index 0000000..05c1740 --- /dev/null +++ b/frontend/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], +}) diff --git a/frontend/yarn.lock b/frontend/yarn.lock new file mode 100644 index 0000000..cc1380e --- /dev/null +++ b/frontend/yarn.lock @@ -0,0 +1,748 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/parser@^7.24.7": + version "7.25.6" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" + integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== + dependencies: + "@babel/types" "^7.25.6" + +"@babel/types@^7.25.6": + version "7.25.6" + resolved "https://registry.npmmirror.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" + integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + +"@ctrl/tinycolor@^3.4.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31" + integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA== + +"@element-plus/icons-vue@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz#1f635ad5fdd5c85ed936481525570e82b5a8307a" + integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg== + +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + +"@floating-ui/core@^1.6.0": + version "1.6.8" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12" + integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA== + dependencies: + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/dom@^1.0.1": + version "1.6.11" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.11.tgz#8631857838d34ee5712339eb7cbdfb8ad34da723" + integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/utils@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" + integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== + +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.0" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@popperjs/core@npm:@sxzz/popperjs-es@^2.11.7": + version "2.11.7" + resolved "https://registry.yarnpkg.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz#a7f69e3665d3da9b115f9e71671dae1b97e13671" + integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ== + +"@rollup/rollup-android-arm-eabi@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz#c3a7938551273a2b72820cf5d22e54cf41dc206e" + integrity sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg== + +"@rollup/rollup-android-arm64@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz#fa3693e4674027702c42fcbbb86bbd0c635fd3b9" + integrity sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g== + +"@rollup/rollup-darwin-arm64@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.1.tgz#e19922f4ac1e4552a230ff8f49d5688c5c07d284" + integrity sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA== + +"@rollup/rollup-darwin-x64@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz#897f8d47b115ea84692a29cf2366899499d4d915" + integrity sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg== + +"@rollup/rollup-linux-arm-gnueabihf@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz#7d1e2a542f3a5744f5c24320067bd5af99ec9d62" + integrity sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ== + +"@rollup/rollup-linux-arm-musleabihf@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz#88bec1c9df85fc5e24d49f783e19934717dd69b5" + integrity sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew== + +"@rollup/rollup-linux-arm64-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz#6dc60f0fe7bd49ed07a2d4d9eab15e671b3bd59d" + integrity sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow== + +"@rollup/rollup-linux-arm64-musl@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz#a03b78775c129e8333aca9e1e420e8e217ee99b9" + integrity sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz#ee3810647faf2c105a5a4e71260bb90b96bf87bc" + integrity sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ== + +"@rollup/rollup-linux-riscv64-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz#385d76a088c27db8054d9f3f28d64d89294f838e" + integrity sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg== + +"@rollup/rollup-linux-s390x-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz#daa2b62a6e6f737ebef6700a12a93c9764e18583" + integrity sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA== + +"@rollup/rollup-linux-x64-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz#790ae96118cc892464e9f10da358c0c8a6b9acdd" + integrity sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w== + +"@rollup/rollup-linux-x64-musl@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz#d613147f7ac15fafe2a0b6249e8484e161ca2847" + integrity sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA== + +"@rollup/rollup-win32-arm64-msvc@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz#18349db8250559a5460d59eb3575f9781be4ab98" + integrity sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g== + +"@rollup/rollup-win32-ia32-msvc@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz#199648b68271f7ab9d023f5c077725d51d12d466" + integrity sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw== + +"@rollup/rollup-win32-x64-msvc@4.21.1": + version "4.21.1" + resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz#4d3ec02dbf280c20bfeac7e50cd5669b66f9108f" + integrity sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg== + +"@types/estree@1.0.5": + version "1.0.5" + resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/lodash-es@^4.17.6": + version "4.17.12" + resolved "https://registry.yarnpkg.com/@types/lodash-es/-/lodash-es-4.17.12.tgz#65f6d1e5f80539aa7cfbfc962de5def0cf4f341b" + integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*", "@types/lodash@^4.14.182": + version "4.17.12" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.12.tgz#25d71312bf66512105d71e55d42e22c36bcfc689" + integrity sha512-sviUmCE8AYdaF/KIHLDJBQgeYzPBI0vf/17NaYehBJfYD1j6/L95Slh07NlyK2iNyBNaEkb3En2jRt+a8y3xZQ== + +"@types/web-bluetooth@^0.0.16": + version "0.0.16" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz#1d12873a8e49567371f2a75fe3e7f7edca6662d8" + integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ== + +"@vitejs/plugin-vue@^5.1.2": + version "5.1.2" + resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz#f11091e0130eca6c1ca8cfb85ee71ea53b255d31" + integrity sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A== + +"@vue/compiler-core@3.4.38": + version "3.4.38" + resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.38.tgz#326dfe3c92fa2b0f1dc9b39a948a231980253496" + integrity sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A== + dependencies: + "@babel/parser" "^7.24.7" + "@vue/shared" "3.4.38" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.2.0" + +"@vue/compiler-dom@3.4.38": + version "3.4.38" + resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz#90348fac1130e0bbd408b650635cb626b3b9df06" + integrity sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ== + dependencies: + "@vue/compiler-core" "3.4.38" + "@vue/shared" "3.4.38" + +"@vue/compiler-sfc@3.4.38": + version "3.4.38" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz#954c3f6777bbbcca28771ba59b795f12f76ef188" + integrity sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ== + dependencies: + "@babel/parser" "^7.24.7" + "@vue/compiler-core" "3.4.38" + "@vue/compiler-dom" "3.4.38" + "@vue/compiler-ssr" "3.4.38" + "@vue/shared" "3.4.38" + estree-walker "^2.0.2" + magic-string "^0.30.10" + postcss "^8.4.40" + source-map-js "^1.2.0" + +"@vue/compiler-ssr@3.4.38": + version "3.4.38" + resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz#9ded18f6d9c8b2440039a58492cfff36fa1a7774" + integrity sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw== + dependencies: + "@vue/compiler-dom" "3.4.38" + "@vue/shared" "3.4.38" + +"@vue/devtools-api@^6.4.5", "@vue/devtools-api@^6.6.4": + version "6.6.4" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343" + integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g== + +"@vue/reactivity@3.4.38": + version "3.4.38" + resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.38.tgz#ec2d549f4b831cd03d0baabf7d77e840b8536000" + integrity sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw== + dependencies: + "@vue/shared" "3.4.38" + +"@vue/runtime-core@3.4.38": + version "3.4.38" + resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.38.tgz#bead9085e9a1c5a446e27d74ffb450f9261cf097" + integrity sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA== + dependencies: + "@vue/reactivity" "3.4.38" + "@vue/shared" "3.4.38" + +"@vue/runtime-dom@3.4.38": + version "3.4.38" + resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz#52678ba0b85f94400a0a9c8dd23ddef4dd65657d" + integrity sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA== + dependencies: + "@vue/reactivity" "3.4.38" + "@vue/runtime-core" "3.4.38" + "@vue/shared" "3.4.38" + csstype "^3.1.3" + +"@vue/server-renderer@3.4.38": + version "3.4.38" + resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.38.tgz#457401ef2b0f969156702061e56915acecc9fe2c" + integrity sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA== + dependencies: + "@vue/compiler-ssr" "3.4.38" + "@vue/shared" "3.4.38" + +"@vue/shared@3.4.38": + version "3.4.38" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.38.tgz#552a6770098bfd556fa3e2c686c9d3b4f4cd94c2" + integrity sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw== + +"@vueuse/core@^9.1.0": + version "9.13.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-9.13.0.tgz#2f69e66d1905c1e4eebc249a01759cf88ea00cf4" + integrity sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw== + dependencies: + "@types/web-bluetooth" "^0.0.16" + "@vueuse/metadata" "9.13.0" + "@vueuse/shared" "9.13.0" + vue-demi "*" + +"@vueuse/metadata@9.13.0": + version "9.13.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-9.13.0.tgz#bc25a6cdad1b1a93c36ce30191124da6520539ff" + integrity sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ== + +"@vueuse/shared@9.13.0": + version "9.13.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-9.13.0.tgz#089ff4cc4e2e7a4015e57a8f32e4b39d096353b9" + integrity sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw== + dependencies: + vue-demi "*" + +async-validator@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== + +async@^3.2.2: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.1.tgz#44cf04a3c9f0c2252ebd85975361c026cb9f864a" + integrity sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +dayjs@^1.11.3: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +duplexer@^0.1.1, duplexer@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +element-plus@^2.8.6: + version "2.8.6" + resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-2.8.6.tgz#af4b106610caa550444a2b318a20792f0e1af8c5" + integrity sha512-fk5jB8V3efM02/4roZ5SWOLArgaYXbxEydZLlXSr+KPAwjNyHBlk2+HO5em8YKo5+RLBoHnn6BaThj6IE4nXoQ== + dependencies: + "@ctrl/tinycolor" "^3.4.1" + "@element-plus/icons-vue" "^2.3.1" + "@floating-ui/dom" "^1.0.1" + "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7" + "@types/lodash" "^4.14.182" + "@types/lodash-es" "^4.17.6" + "@vueuse/core" "^9.1.0" + async-validator "^4.2.5" + dayjs "^1.11.3" + escape-html "^1.0.3" + lodash "^4.17.21" + lodash-es "^4.17.21" + lodash-unified "^1.0.2" + memoize-one "^6.0.0" + normalize-wheel-es "^1.2.0" + +entities@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + 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" + +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +event-stream@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-4.0.1.tgz#4092808ec995d0dd75ea4580c1df6a74db2cde65" + integrity sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA== + dependencies: + duplexer "^0.1.1" + from "^0.1.7" + map-stream "0.0.7" + pause-stream "^0.0.11" + split "^1.0.1" + stream-combiner "^0.2.2" + through "^2.3.8" + +follow-redirects@^1.15.0: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +from@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash-unified@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894" + integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ== + +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +magic-string@^0.30.10: + version "0.30.11" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" + integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + +map-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" + integrity sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ== + +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mingo@^6.1.0: + version "6.4.15" + resolved "https://registry.yarnpkg.com/mingo/-/mingo-6.4.15.tgz#5c617888a24b2333cbd59e0486ba6d9727a3ead2" + integrity sha512-fKUCGr7fUxrb7YBK6whm5O5VouXfKAVtxnb+6g3Xuwsj9Jt9u8hhMOgiUoKO4kp3DmuiN0qgpYX2H/nP3zD1Hw== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +normalize-wheel-es@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz#0fa2593d619f7245a541652619105ab076acf09e" + integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw== + +pause-stream@^0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== + dependencies: + through "~2.3" + +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + +pinia@2.0.27: + version "2.0.27" + resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.0.27.tgz#cf13a8dca2792a613c1d8bb8ef50707756e5a6ef" + integrity sha512-nOnXP0OFeL8R4WjAHsterU+11vptda643gH02xKNtSCDPiRzVfRYodOLihLDoa0gL1KKuQKV+KOzEgdt3YvqEw== + dependencies: + "@vue/devtools-api" "^6.4.5" + vue-demi "*" + +postcss@^8.4.40, postcss@^8.4.41: + version "8.4.41" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" + integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.1" + source-map-js "^1.2.0" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +rollup@^4.20.0: + version "4.21.1" + resolved "https://registry.npmmirror.com/rollup/-/rollup-4.21.1.tgz#65b9b9e9de9a64604fab083fb127f3e9eac2935d" + integrity sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.21.1" + "@rollup/rollup-android-arm64" "4.21.1" + "@rollup/rollup-darwin-arm64" "4.21.1" + "@rollup/rollup-darwin-x64" "4.21.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.21.1" + "@rollup/rollup-linux-arm-musleabihf" "4.21.1" + "@rollup/rollup-linux-arm64-gnu" "4.21.1" + "@rollup/rollup-linux-arm64-musl" "4.21.1" + "@rollup/rollup-linux-powerpc64le-gnu" "4.21.1" + "@rollup/rollup-linux-riscv64-gnu" "4.21.1" + "@rollup/rollup-linux-s390x-gnu" "4.21.1" + "@rollup/rollup-linux-x64-gnu" "4.21.1" + "@rollup/rollup-linux-x64-musl" "4.21.1" + "@rollup/rollup-win32-arm64-msvc" "4.21.1" + "@rollup/rollup-win32-ia32-msvc" "4.21.1" + "@rollup/rollup-win32-x64-msvc" "4.21.1" + fsevents "~2.3.2" + +save@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/save/-/save-2.9.0.tgz#6659375fadeaf58e4abc6a90ec6b0fb2e2232e0f" + integrity sha512-eg8+g8CjvehE/2C6EbLdtK1pINVD27pcJLj4M9PjWWhoeha/y5bWf4dp/0RF+OzbKTcG1bae9qi3PAqiR8CJTg== + dependencies: + async "^3.2.2" + event-stream "^4.0.1" + lodash.assign "^4.2.0" + mingo "^6.1.0" + +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +split@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +stream-combiner@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" + integrity sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ== + dependencies: + duplexer "~0.1.1" + through "~2.3.4" + +through@2, through@^2.3.8, through@~2.3, through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +vite@^5.4.1: + version "5.4.2" + resolved "https://registry.npmmirror.com/vite/-/vite-5.4.2.tgz#8acb6ec4bfab823cdfc1cb2d6c53ed311bc4e47e" + integrity sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.41" + rollup "^4.20.0" + optionalDependencies: + fsevents "~2.3.3" + +vue-demi@*: + version "0.14.10" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04" + integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg== + +vue-router@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.4.5.tgz#bdf535e4cf32414ebdea6b4b403593efdb541388" + integrity sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q== + dependencies: + "@vue/devtools-api" "^6.6.4" + +vue@^3.4.37: + version "3.4.38" + resolved "https://registry.npmmirror.com/vue/-/vue-3.4.38.tgz#0ccbb64ed03ef3c4ab73e540793290b18e7c4236" + integrity sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw== + dependencies: + "@vue/compiler-dom" "3.4.38" + "@vue/compiler-sfc" "3.4.38" + "@vue/runtime-dom" "3.4.38" + "@vue/server-renderer" "3.4.38" + "@vue/shared" "3.4.38" diff --git a/project-express.iml b/project-express.iml new file mode 100644 index 0000000..9a5cfce --- /dev/null +++ b/project-express.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file