From 90d88541b945ada99250901543faac77272bfb91 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 14:11:45 +0900 Subject: [PATCH 01/23] deploy test --- .github/workflows/deploy.yml | 64 + .gitignore | 30 + .vscode/extensions.json | 3 + Procfile | 1 + README.md | 30 +- index.html | 13 + jsconfig.json | 8 + package-lock.json | 2771 ++++++++++++++++++++ package.json | 21 + public/favicon.ico | Bin 0 -> 4286 bytes server.js | 21 + src/App.vue | 85 + src/assets/base.css | 86 + src/assets/logo.svg | 1 + src/assets/main.css | 35 + src/components/HelloWorld.vue | 44 + src/components/TheWelcome.vue | 90 + src/components/WelcomeItem.vue | 86 + src/components/icons/IconCommunity.vue | 7 + src/components/icons/IconDocumentation.vue | 7 + src/components/icons/IconEcosystem.vue | 7 + src/components/icons/IconSupport.vue | 7 + src/components/icons/IconTooling.vue | 19 + src/main.js | 11 + src/router/index.js | 23 + src/views/AboutView.vue | 15 + src/views/HomeView.vue | 9 + vite.config.js | 18 + 28 files changed, 3511 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/deploy.yml create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 Procfile create mode 100644 index.html create mode 100644 jsconfig.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 server.js create mode 100644 src/App.vue create mode 100644 src/assets/base.css create mode 100644 src/assets/logo.svg create mode 100644 src/assets/main.css create mode 100644 src/components/HelloWorld.vue create mode 100644 src/components/TheWelcome.vue create mode 100644 src/components/WelcomeItem.vue create mode 100644 src/components/icons/IconCommunity.vue create mode 100644 src/components/icons/IconDocumentation.vue create mode 100644 src/components/icons/IconEcosystem.vue create mode 100644 src/components/icons/IconSupport.vue create mode 100644 src/components/icons/IconTooling.vue create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/views/AboutView.vue create mode 100644 src/views/HomeView.vue create mode 100644 vite.config.js diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..512440d --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,64 @@ +name: Deploy to AWS Elastic Beanstalk + +permissions: + contents: read + pull-requests: write + +on: + pull_request: + types: [opened, reopened, synchronize] + push: + branches: + - "main" + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: "16" + + - name: Install dependencies + run: npm install + + - name: Build project + run: npm run build + + - name: Install AWS CLI + run: | + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install --update + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ap-northeast-2 + + - name: Generate deployment package + run: | + mkdir -p deploy + cp -r dist deploy/ # dist 디렉토리를 포함 + cp package.json deploy/ + cp server.js deploy/ + cp Procfile deploy/Procfile + cd deploy && zip -r deploy.zip . + + - name: Beanstalk Deploy + uses: einaregilsson/beanstalk-deploy@v22 + with: + aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + application_name: inflow-v3 + environment_name: Inflow-v3-env + version_label: github-action-${{ github.sha }} + region: ap-northeast-2 + deployment_package: deploy/deploy.zip diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..7ac4dbc --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: npm install express && npm start \ No newline at end of file diff --git a/README.md b/README.md index 8f425fd..4623fe2 100644 --- a/README.md +++ b/README.md @@ -1 +1,29 @@ -# Front-Deploy-Test +# inflow + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Compile and Minify for Production + +```sh +npm run build +``` diff --git a/index.html b/index.html new file mode 100644 index 0000000..b19040a --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..5a1f2d2 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..836400b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2771 @@ +{ + "name": "inflow", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "inflow", + "version": "0.0.0", + "dependencies": { + "vue": "^3.5.13", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.1", + "vite": "^6.0.1", + "vite-plugin-vue-devtools": "^7.6.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", + "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", + "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz", + "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz", + "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz", + "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz", + "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz", + "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz", + "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz", + "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz", + "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz", + "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz", + "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz", + "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz", + "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz", + "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz", + "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz", + "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz", + "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz", + "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz", + "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz", + "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", + "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz", + "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz", + "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.6", + "@babel/types": "^7.25.6", + "@vue/babel-helper-vue-transform-on": "1.2.5", + "@vue/babel-plugin-resolve-type": "1.2.5", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz", + "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/parser": "^7.25.6", + "@vue/compiler-sfc": "^3.5.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/devtools-core": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.6.7.tgz", + "integrity": "sha512-6fW8Q0H1NHDXdEcuV6dylT5U2Yxg3SdMnVCey99Y6S4R2PNgFL2vC+VU9U9rHIiaoEUkeza42S7FfHxV4VI3Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.6.7", + "@vue/devtools-shared": "^7.6.7", + "mitt": "^3.0.1", + "nanoid": "^5.0.9", + "pathe": "^1.1.2", + "vite-hot-client": "^0.2.4" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-core/node_modules/nanoid": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.6.7.tgz", + "integrity": "sha512-V8/jrXY/swHgnblABG9U4QCbE60c6RuPasmv2d9FvVqc5d94t1vDiESuvRmdNJBdWz4/D3q6ffgyAfRVjwHYEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.6.7", + "birpc": "^0.2.19", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.1" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.6.7.tgz", + "integrity": "sha512-QggO6SviAsolrePAXZ/sA1dSicSPt4TueZibCvydfhNDieL1lAuyMTgQDGst7TEvMGb4vgYv2I+1sDkO4jWNnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, + "node_modules/birpc": { + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz", + "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001687", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", + "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.71", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", + "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", + "dev": true, + "license": "ISC" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-stack-parser-es": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz", + "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/execa": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.14", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", + "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz", + "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.28.1", + "@rollup/rollup-android-arm64": "4.28.1", + "@rollup/rollup-darwin-arm64": "4.28.1", + "@rollup/rollup-darwin-x64": "4.28.1", + "@rollup/rollup-freebsd-arm64": "4.28.1", + "@rollup/rollup-freebsd-x64": "4.28.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.1", + "@rollup/rollup-linux-arm-musleabihf": "4.28.1", + "@rollup/rollup-linux-arm64-gnu": "4.28.1", + "@rollup/rollup-linux-arm64-musl": "4.28.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.28.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1", + "@rollup/rollup-linux-riscv64-gnu": "4.28.1", + "@rollup/rollup-linux-s390x-gnu": "4.28.1", + "@rollup/rollup-linux-x64-gnu": "4.28.1", + "@rollup/rollup-linux-x64-musl": "4.28.1", + "@rollup/rollup-win32-arm64-msvc": "4.28.1", + "@rollup/rollup-win32-ia32-msvc": "4.28.1", + "@rollup/rollup-win32-x64-msvc": "4.28.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.3.tgz", + "integrity": "sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.24.0", + "postcss": "^8.4.49", + "rollup": "^4.23.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-hot-client": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.4.tgz", + "integrity": "sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vite-plugin-vue-devtools": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.6.7.tgz", + "integrity": "sha512-H1ZyjtpWjP5mHA5R15sQeYgAARuh2Myg3TDFXWZK6QOQRy8s3XjTIt319DogVjU/x3rC3L/jJQjIasRU04mWXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-core": "^7.6.7", + "@vue/devtools-kit": "^7.6.7", + "@vue/devtools-shared": "^7.6.7", + "execa": "^9.5.1", + "sirv": "^3.0.0", + "vite-plugin-inspect": "0.8.8", + "vite-plugin-vue-inspector": "^5.3.1" + }, + "engines": { + "node": ">=v14.21.3" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/vite-plugin-inspect": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.8.tgz", + "integrity": "sha512-aZlBuXsWUPJFmMK92GIv6lH7LrwG2POu4KJ+aEdcqnu92OAf+rhBnfMDQvxIJPEB7hE2t5EyY/PMgf5aDLT8EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.10", + "@rollup/pluginutils": "^5.1.3", + "debug": "^4.3.7", + "error-stack-parser-es": "^0.1.5", + "fs-extra": "^11.2.0", + "open": "^10.1.0", + "perfect-debounce": "^1.0.0", + "picocolors": "^1.1.1", + "sirv": "^3.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/vite-plugin-vue-inspector": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.1.tgz", + "integrity": "sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/plugin-proposal-decorators": "^7.23.0", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.22.15", + "@vue/babel-plugin-jsx": "^1.1.5", + "@vue/compiler-dom": "^3.3.4", + "kolorist": "^1.8.0", + "magic-string": "^0.30.4" + }, + "peerDependencies": { + "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", + "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..51c5f15 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "inflow", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "start": "node server.js" + }, + "dependencies": { + "express": "^4.19.2", + "vue": "^3.5.13", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.1", + "vite": "^6.0.1" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/server.js b/server.js new file mode 100644 index 0000000..c1fc40a --- /dev/null +++ b/server.js @@ -0,0 +1,21 @@ +import express from 'express'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; + +const app = express(); +const port = process.env.PORT || 8080; // Elastic Beanstalk가 사용하는 포트 + +// __dirname을 ES 모듈에서 사용할 수 있도록 설정 +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +app.use(express.static(path.join(__dirname, 'dist'))); + +app.get('*', (req, res) => { + res.sendFile(path.resolve(__dirname, 'dist', 'index.html')); +}); + +app.listen(port, () => { + console.log(`Server is running on port ${port}`); +}); diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..e864195 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/assets/base.css b/src/assets/base.css new file mode 100644 index 0000000..8816868 --- /dev/null +++ b/src/assets/base.css @@ -0,0 +1,86 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + } +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: + color 0.5s, + background-color 0.5s; + line-height: 1.6; + font-family: + Inter, + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Oxygen, + Ubuntu, + Cantarell, + 'Fira Sans', + 'Droid Sans', + 'Helvetica Neue', + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/src/assets/main.css b/src/assets/main.css new file mode 100644 index 0000000..36fb845 --- /dev/null +++ b/src/assets/main.css @@ -0,0 +1,35 @@ +@import './base.css'; + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; + padding: 3px; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} + +@media (min-width: 1024px) { + body { + display: flex; + place-items: center; + } + + #app { + display: grid; + grid-template-columns: 1fr 1fr; + padding: 0 2rem; + } +} diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue new file mode 100644 index 0000000..eff59f1 --- /dev/null +++ b/src/components/HelloWorld.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/TheWelcome.vue b/src/components/TheWelcome.vue new file mode 100644 index 0000000..acb6a2d --- /dev/null +++ b/src/components/TheWelcome.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/components/WelcomeItem.vue b/src/components/WelcomeItem.vue new file mode 100644 index 0000000..ac366d0 --- /dev/null +++ b/src/components/WelcomeItem.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/components/icons/IconCommunity.vue b/src/components/icons/IconCommunity.vue new file mode 100644 index 0000000..2dc8b05 --- /dev/null +++ b/src/components/icons/IconCommunity.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconDocumentation.vue b/src/components/icons/IconDocumentation.vue new file mode 100644 index 0000000..6d4791c --- /dev/null +++ b/src/components/icons/IconDocumentation.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconEcosystem.vue b/src/components/icons/IconEcosystem.vue new file mode 100644 index 0000000..c3a4f07 --- /dev/null +++ b/src/components/icons/IconEcosystem.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconSupport.vue b/src/components/icons/IconSupport.vue new file mode 100644 index 0000000..7452834 --- /dev/null +++ b/src/components/icons/IconSupport.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconTooling.vue b/src/components/icons/IconTooling.vue new file mode 100644 index 0000000..660598d --- /dev/null +++ b/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..5a5dbdb --- /dev/null +++ b/src/main.js @@ -0,0 +1,11 @@ +import './assets/main.css' + +import { createApp } from 'vue' +import App from './App.vue' +import router from './router' + +const app = createApp(App) + +app.use(router) + +app.mount('#app') diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..3e49915 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,23 @@ +import { createRouter, createWebHistory } from 'vue-router' +import HomeView from '../views/HomeView.vue' + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: '/', + name: 'home', + component: HomeView, + }, + { + path: '/about', + name: 'about', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/AboutView.vue'), + }, + ], +}) + +export default router diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue new file mode 100644 index 0000000..756ad2a --- /dev/null +++ b/src/views/AboutView.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue new file mode 100644 index 0000000..6bb706f --- /dev/null +++ b/src/views/HomeView.vue @@ -0,0 +1,9 @@ + + + diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..4217010 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,18 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueDevTools from 'vite-plugin-vue-devtools' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + vueDevTools(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + }, + }, +}) From 2aeca06991fad22c834bc996d81b803236e4aa52 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 14:15:59 +0900 Subject: [PATCH 02/23] deploy test --- package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 51c5f15..c9d5e76 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,13 @@ "start": "node server.js" }, "dependencies": { - "express": "^4.19.2", "vue": "^3.5.13", - "vue-router": "^4.4.5" + "vue-router": "^4.4.5", + "express": "^4.19.2" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", - "vite": "^6.0.1" + "vite": "^6.0.1", + "vite-plugin-vue-devtools": "^7.6.5" } } From d558dd2e85eddacb9b4bf15ca61e7537701f0a21 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 14:18:31 +0900 Subject: [PATCH 03/23] deploy test --- package-lock.json | 816 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 815 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 836400b..ef3a466 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "inflow", "version": "0.0.0", "dependencies": { + "express": "^4.19.2", "vue": "^3.5.13", "vue-router": "^4.4.5" }, @@ -1503,6 +1504,25 @@ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", "license": "MIT" }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, "node_modules/birpc": { "version": "0.2.19", "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz", @@ -1513,6 +1533,45 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/browserslist": { "version": "4.24.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", @@ -1562,6 +1621,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.0.tgz", + "integrity": "sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001687", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", @@ -1583,6 +1682,27 @@ ], "license": "CC-BY-4.0" }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -1590,6 +1710,21 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, "node_modules/copy-anything": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", @@ -1675,6 +1810,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", @@ -1688,6 +1840,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.5.71", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", @@ -1695,6 +1886,15 @@ "dev": true, "license": "ISC" }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1717,6 +1917,24 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.24.0", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", @@ -1767,12 +1985,27 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "license": "MIT" }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/execa": { "version": "9.5.2", "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", @@ -1800,6 +2033,67 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/figures": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", @@ -1816,6 +2110,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -1846,6 +2191,15 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -1856,6 +2210,28 @@ "node": ">=6.9.0" } }, + "node_modules/get-intrinsic": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", + "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-stream": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", @@ -1883,6 +2259,18 @@ "node": ">=4" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -1890,6 +2278,42 @@ "dev": true, "license": "ISC" }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hookable": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", @@ -1910,6 +2334,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/human-signals": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", @@ -1920,6 +2360,33 @@ "node": ">=18.18.0" } }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-docker": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", @@ -2102,6 +2569,66 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", @@ -2123,7 +2650,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/nanoid": { @@ -2144,6 +2670,15 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", @@ -2181,6 +2716,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/open": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", @@ -2213,6 +2772,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -2223,6 +2791,12 @@ "node": ">=8" } }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, "node_modules/pathe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", @@ -2300,6 +2874,58 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/rfdc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", @@ -2359,6 +2985,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -2369,6 +3021,92 @@ "semver": "bin/semver.js" } }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2392,6 +3130,24 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -2439,6 +3195,15 @@ "node": ">=0.10.0" } }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/strip-final-newline": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", @@ -2471,6 +3236,15 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, "node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", @@ -2481,6 +3255,19 @@ "node": ">=6" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/unicorn-magic": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", @@ -2504,6 +3291,15 @@ "node": ">= 10.0.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", @@ -2535,6 +3331,24 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vite": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.3.tgz", From 2367d00bd63262d970ab7a5805285270d3f3774b Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 14:23:26 +0900 Subject: [PATCH 04/23] deploy test --- package-lock.json | 164 +++++++++++++++++++++++++--------------------- 1 file changed, 88 insertions(+), 76 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef3a466..0c06c48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -98,6 +98,31 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/generator": { "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", @@ -474,6 +499,31 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/types": { "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", @@ -1557,21 +1607,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/browserslist": { "version": "4.24.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", @@ -1763,21 +1798,12 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "ms": "2.0.0" } }, "node_modules/default-browser": { @@ -2079,21 +2105,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/figures": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", @@ -2128,21 +2139,6 @@ "node": ">= 0.8" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2647,9 +2643,9 @@ } }, "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/nanoid": { @@ -3045,21 +3041,6 @@ "node": ">= 0.8.0" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/send/node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -3069,6 +3050,12 @@ "node": ">= 0.8" } }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/serve-static": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", @@ -3456,6 +3443,31 @@ "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" } }, + "node_modules/vite-plugin-vue-devtools/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/vite-plugin-vue-devtools/node_modules/vite-plugin-inspect": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.8.tgz", From 1a9c17069f341446423ec0b33bdf27db031471f5 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 14:25:28 +0900 Subject: [PATCH 05/23] deploy test --- package-lock.json | 2 +- package.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0c06c48..1f9ca1e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", - "vite": "^6.0.1", + "vite": "^6.0.3", "vite-plugin-vue-devtools": "^7.6.5" } }, diff --git a/package.json b/package.json index c9d5e76..45e0891 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "inflow", + "name": "deploy-test", "version": "0.0.0", "private": true, "type": "module", @@ -10,13 +10,13 @@ "start": "node server.js" }, "dependencies": { + "express": "^4.19.2", "vue": "^3.5.13", - "vue-router": "^4.4.5", - "express": "^4.19.2" + "vue-router": "^4.4.5" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", - "vite": "^6.0.1", + "vite": "^6.0.3", "vite-plugin-vue-devtools": "^7.6.5" } } From 6455ac728005d63852c91fc2bf2aeaaa66cb874b Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 14:26:38 +0900 Subject: [PATCH 06/23] deploy test --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 512440d..037fe8c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,7 +22,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v2 with: - node-version: "16" + node-version: "20" - name: Install dependencies run: npm install From d7c89c56f66391d866c2b1b8c95b6e75da646ce2 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 15:13:06 +0900 Subject: [PATCH 07/23] dadfad --- .github/workflows/deploy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 037fe8c..c2d3a15 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,7 +22,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v2 with: - node-version: "20" + node-version: "16" - name: Install dependencies run: npm install @@ -57,8 +57,8 @@ jobs: with: aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - application_name: inflow-v3 - environment_name: Inflow-v3-env + application_name: inflow-v4 + environment_name: Inflow-v4-env version_label: github-action-${{ github.sha }} region: ap-northeast-2 deployment_package: deploy/deploy.zip From 4420925021acf12a65eca19965dadc23804f9540 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 15:17:42 +0900 Subject: [PATCH 08/23] deploy test --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c2d3a15..a34cba8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,7 +22,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v2 with: - node-version: "16" + node-version: "20" - name: Install dependencies run: npm install From 23f658783517eda2e7e6630063a7886bbd2d2981 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 15:22:31 +0900 Subject: [PATCH 09/23] deploy test --- .github/workflows/deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a34cba8..187ac57 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -62,3 +62,4 @@ jobs: version_label: github-action-${{ github.sha }} region: ap-northeast-2 deployment_package: deploy/deploy.zip + wait_for_environment_recovery: 180 From 10442088742f59d79eefef4cbd35f9aecb5059d1 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 15:32:14 +0900 Subject: [PATCH 10/23] deploy test --- src/App.vue | 78 +------------------ src/assets/base.css | 86 --------------------- src/assets/logo.svg | 1 - src/assets/main.css | 35 --------- src/components/HelloWorld.vue | 44 ----------- src/components/TheWelcome.vue | 90 ---------------------- src/components/WelcomeItem.vue | 86 --------------------- src/components/icons/IconCommunity.vue | 7 -- src/components/icons/IconDocumentation.vue | 7 -- src/components/icons/IconEcosystem.vue | 7 -- src/components/icons/IconSupport.vue | 7 -- src/components/icons/IconTooling.vue | 19 ----- src/main.js | 5 -- src/router/index.js | 23 ------ src/views/AboutView.vue | 15 ---- src/views/HomeView.vue | 9 --- 16 files changed, 2 insertions(+), 517 deletions(-) delete mode 100644 src/assets/base.css delete mode 100644 src/assets/logo.svg delete mode 100644 src/assets/main.css delete mode 100644 src/components/HelloWorld.vue delete mode 100644 src/components/TheWelcome.vue delete mode 100644 src/components/WelcomeItem.vue delete mode 100644 src/components/icons/IconCommunity.vue delete mode 100644 src/components/icons/IconDocumentation.vue delete mode 100644 src/components/icons/IconEcosystem.vue delete mode 100644 src/components/icons/IconSupport.vue delete mode 100644 src/components/icons/IconTooling.vue delete mode 100644 src/router/index.js delete mode 100644 src/views/AboutView.vue delete mode 100644 src/views/HomeView.vue diff --git a/src/App.vue b/src/App.vue index e864195..067bda3 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,85 +1,11 @@ diff --git a/src/assets/base.css b/src/assets/base.css deleted file mode 100644 index 8816868..0000000 --- a/src/assets/base.css +++ /dev/null @@ -1,86 +0,0 @@ -/* color palette from */ -:root { - --vt-c-white: #ffffff; - --vt-c-white-soft: #f8f8f8; - --vt-c-white-mute: #f2f2f2; - - --vt-c-black: #181818; - --vt-c-black-soft: #222222; - --vt-c-black-mute: #282828; - - --vt-c-indigo: #2c3e50; - - --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); - --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); - --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); - --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); - - --vt-c-text-light-1: var(--vt-c-indigo); - --vt-c-text-light-2: rgba(60, 60, 60, 0.66); - --vt-c-text-dark-1: var(--vt-c-white); - --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); -} - -/* semantic color variables for this project */ -:root { - --color-background: var(--vt-c-white); - --color-background-soft: var(--vt-c-white-soft); - --color-background-mute: var(--vt-c-white-mute); - - --color-border: var(--vt-c-divider-light-2); - --color-border-hover: var(--vt-c-divider-light-1); - - --color-heading: var(--vt-c-text-light-1); - --color-text: var(--vt-c-text-light-1); - - --section-gap: 160px; -} - -@media (prefers-color-scheme: dark) { - :root { - --color-background: var(--vt-c-black); - --color-background-soft: var(--vt-c-black-soft); - --color-background-mute: var(--vt-c-black-mute); - - --color-border: var(--vt-c-divider-dark-2); - --color-border-hover: var(--vt-c-divider-dark-1); - - --color-heading: var(--vt-c-text-dark-1); - --color-text: var(--vt-c-text-dark-2); - } -} - -*, -*::before, -*::after { - box-sizing: border-box; - margin: 0; - font-weight: normal; -} - -body { - min-height: 100vh; - color: var(--color-text); - background: var(--color-background); - transition: - color 0.5s, - background-color 0.5s; - line-height: 1.6; - font-family: - Inter, - -apple-system, - BlinkMacSystemFont, - 'Segoe UI', - Roboto, - Oxygen, - Ubuntu, - Cantarell, - 'Fira Sans', - 'Droid Sans', - 'Helvetica Neue', - sans-serif; - font-size: 15px; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} diff --git a/src/assets/logo.svg b/src/assets/logo.svg deleted file mode 100644 index 7565660..0000000 --- a/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/assets/main.css b/src/assets/main.css deleted file mode 100644 index 36fb845..0000000 --- a/src/assets/main.css +++ /dev/null @@ -1,35 +0,0 @@ -@import './base.css'; - -#app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - font-weight: normal; -} - -a, -.green { - text-decoration: none; - color: hsla(160, 100%, 37%, 1); - transition: 0.4s; - padding: 3px; -} - -@media (hover: hover) { - a:hover { - background-color: hsla(160, 100%, 37%, 0.2); - } -} - -@media (min-width: 1024px) { - body { - display: flex; - place-items: center; - } - - #app { - display: grid; - grid-template-columns: 1fr 1fr; - padding: 0 2rem; - } -} diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue deleted file mode 100644 index eff59f1..0000000 --- a/src/components/HelloWorld.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - - diff --git a/src/components/TheWelcome.vue b/src/components/TheWelcome.vue deleted file mode 100644 index acb6a2d..0000000 --- a/src/components/TheWelcome.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - diff --git a/src/components/WelcomeItem.vue b/src/components/WelcomeItem.vue deleted file mode 100644 index ac366d0..0000000 --- a/src/components/WelcomeItem.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - diff --git a/src/components/icons/IconCommunity.vue b/src/components/icons/IconCommunity.vue deleted file mode 100644 index 2dc8b05..0000000 --- a/src/components/icons/IconCommunity.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconDocumentation.vue b/src/components/icons/IconDocumentation.vue deleted file mode 100644 index 6d4791c..0000000 --- a/src/components/icons/IconDocumentation.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconEcosystem.vue b/src/components/icons/IconEcosystem.vue deleted file mode 100644 index c3a4f07..0000000 --- a/src/components/icons/IconEcosystem.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconSupport.vue b/src/components/icons/IconSupport.vue deleted file mode 100644 index 7452834..0000000 --- a/src/components/icons/IconSupport.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconTooling.vue b/src/components/icons/IconTooling.vue deleted file mode 100644 index 660598d..0000000 --- a/src/components/icons/IconTooling.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/src/main.js b/src/main.js index 5a5dbdb..8c39520 100644 --- a/src/main.js +++ b/src/main.js @@ -1,11 +1,6 @@ -import './assets/main.css' import { createApp } from 'vue' import App from './App.vue' -import router from './router' const app = createApp(App) - -app.use(router) - app.mount('#app') diff --git a/src/router/index.js b/src/router/index.js deleted file mode 100644 index 3e49915..0000000 --- a/src/router/index.js +++ /dev/null @@ -1,23 +0,0 @@ -import { createRouter, createWebHistory } from 'vue-router' -import HomeView from '../views/HomeView.vue' - -const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), - routes: [ - { - path: '/', - name: 'home', - component: HomeView, - }, - { - path: '/about', - name: 'about', - // route level code-splitting - // this generates a separate chunk (About.[hash].js) for this route - // which is lazy-loaded when the route is visited. - component: () => import('../views/AboutView.vue'), - }, - ], -}) - -export default router diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue deleted file mode 100644 index 756ad2a..0000000 --- a/src/views/AboutView.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue deleted file mode 100644 index 6bb706f..0000000 --- a/src/views/HomeView.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - From a98ece1639d5dd955760b3750c2eb4aa52f7d2c0 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 15:53:46 +0900 Subject: [PATCH 11/23] deploy test --- README.md | 29 - package-lock.json | 2307 ++++++--------------------------------------- package.json | 14 +- src/App.vue | 19 +- src/main.js | 4 +- vite.config.js | 2 - 6 files changed, 315 insertions(+), 2060 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 4623fe2..0000000 --- a/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# inflow - -This template should help get you started developing with Vue 3 in Vite. - -## Recommended IDE Setup - -[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). - -## Customize configuration - -See [Vite Configuration Reference](https://vite.dev/config/). - -## Project Setup - -```sh -npm install -``` - -### Compile and Hot-Reload for Development - -```sh -npm run dev -``` - -### Compile and Minify for Production - -```sh -npm run build -``` diff --git a/package-lock.json b/package-lock.json index 1f9ca1e..9be8835 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,296 +1,19 @@ { - "name": "inflow", + "name": "veb_proj", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "inflow", + "name": "veb_proj", "version": "0.0.0", "dependencies": { "express": "^4.19.2", - "vue": "^3.5.13", - "vue-router": "^4.4.5" + "vue": "^3.5.12" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.2.1", - "vite": "^6.0.3", - "vite-plugin-vue-devtools": "^7.6.5" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "@vitejs/plugin-vue": "^5.1.4", + "vite": "^5.4.10" } }, "node_modules/@babel/helper-string-parser": { @@ -311,37 +34,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.26.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -350,184 +49,10 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", - "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-syntax-decorators": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", - "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", - "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-syntax-typescript": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -538,9 +63,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -551,13 +76,13 @@ "aix" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -568,13 +93,13 @@ "android" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -585,13 +110,13 @@ "android" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -602,13 +127,13 @@ "android" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -619,13 +144,13 @@ "darwin" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -636,13 +161,13 @@ "darwin" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -653,13 +178,13 @@ "freebsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -670,13 +195,13 @@ "freebsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -687,13 +212,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -704,13 +229,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -721,13 +246,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -738,13 +263,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -755,13 +280,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -772,13 +297,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -789,13 +314,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -806,13 +331,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -823,13 +348,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -840,30 +365,13 @@ "netbsd" ], "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -874,13 +382,13 @@ "openbsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -891,13 +399,13 @@ "sunos" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -908,13 +416,13 @@ "win32" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -925,13 +433,13 @@ "win32" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -942,42 +450,7 @@ "win32" ], "engines": { - "node": ">=18" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -986,51 +459,10 @@ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.28", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", - "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", - "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz", - "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz", + "integrity": "sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==", "cpu": [ "arm" ], @@ -1042,9 +474,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz", - "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz", + "integrity": "sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==", "cpu": [ "arm64" ], @@ -1056,9 +488,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz", - "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz", + "integrity": "sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==", "cpu": [ "arm64" ], @@ -1070,9 +502,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz", - "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz", + "integrity": "sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==", "cpu": [ "x64" ], @@ -1084,9 +516,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz", - "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz", + "integrity": "sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==", "cpu": [ "arm64" ], @@ -1098,9 +530,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz", - "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz", + "integrity": "sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==", "cpu": [ "x64" ], @@ -1112,9 +544,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz", - "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz", + "integrity": "sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==", "cpu": [ "arm" ], @@ -1126,9 +558,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz", - "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz", + "integrity": "sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==", "cpu": [ "arm" ], @@ -1140,9 +572,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz", - "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz", + "integrity": "sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==", "cpu": [ "arm64" ], @@ -1154,9 +586,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz", - "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz", + "integrity": "sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==", "cpu": [ "arm64" ], @@ -1167,24 +599,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz", - "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz", - "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz", + "integrity": "sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==", "cpu": [ "ppc64" ], @@ -1196,9 +614,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz", - "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz", + "integrity": "sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==", "cpu": [ "riscv64" ], @@ -1210,9 +628,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz", - "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz", + "integrity": "sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==", "cpu": [ "s390x" ], @@ -1224,9 +642,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz", - "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz", + "integrity": "sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==", "cpu": [ "x64" ], @@ -1238,9 +656,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz", - "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz", + "integrity": "sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==", "cpu": [ "x64" ], @@ -1252,9 +670,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz", - "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz", + "integrity": "sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==", "cpu": [ "arm64" ], @@ -1266,9 +684,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz", - "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz", + "integrity": "sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==", "cpu": [ "ia32" ], @@ -1280,9 +698,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz", - "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz", + "integrity": "sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==", "cpu": [ "x64" ], @@ -1293,26 +711,6 @@ "win32" ] }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -1321,237 +719,117 @@ "license": "MIT" }, "node_modules/@vitejs/plugin-vue": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", - "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz", + "integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==", "dev": true, "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0", + "vite": "^5.0.0", "vue": "^3.2.25" } }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz", - "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz", - "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.6", - "@babel/types": "^7.25.6", - "@vue/babel-helper-vue-transform-on": "1.2.5", - "@vue/babel-plugin-resolve-type": "1.2.5", - "html-tags": "^3.3.1", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - } - } - }, - "node_modules/@vue/babel-plugin-resolve-type": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz", - "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/parser": "^7.25.6", - "@vue/compiler-sfc": "^3.5.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz", + "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", + "@vue/shared": "3.5.12", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", + "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", + "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.13", - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13", + "@vue/compiler-core": "3.5.12", + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12", "estree-walker": "^2.0.2", "magic-string": "^0.30.11", - "postcss": "^8.4.48", + "postcss": "^8.4.47", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, - "node_modules/@vue/devtools-core": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.6.7.tgz", - "integrity": "sha512-6fW8Q0H1NHDXdEcuV6dylT5U2Yxg3SdMnVCey99Y6S4R2PNgFL2vC+VU9U9rHIiaoEUkeza42S7FfHxV4VI3Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-kit": "^7.6.7", - "@vue/devtools-shared": "^7.6.7", - "mitt": "^3.0.1", - "nanoid": "^5.0.9", - "pathe": "^1.1.2", - "vite-hot-client": "^0.2.4" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/@vue/devtools-core/node_modules/nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^18 || >=20" - } - }, - "node_modules/@vue/devtools-kit": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.6.7.tgz", - "integrity": "sha512-V8/jrXY/swHgnblABG9U4QCbE60c6RuPasmv2d9FvVqc5d94t1vDiESuvRmdNJBdWz4/D3q6ffgyAfRVjwHYEw==", - "dev": true, + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", + "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", "license": "MIT", "dependencies": { - "@vue/devtools-shared": "^7.6.7", - "birpc": "^0.2.19", - "hookable": "^5.5.3", - "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", - "speakingurl": "^14.0.1", - "superjson": "^2.2.1" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.6.7.tgz", - "integrity": "sha512-QggO6SviAsolrePAXZ/sA1dSicSPt4TueZibCvydfhNDieL1lAuyMTgQDGst7TEvMGb4vgYv2I+1sDkO4jWNnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "rfdc": "^1.4.1" + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/reactivity": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz", + "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.13" + "@vue/shared": "3.5.12" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz", + "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/reactivity": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz", + "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", + "@vue/reactivity": "3.5.12", + "@vue/runtime-core": "3.5.12", + "@vue/shared": "3.5.12", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz", + "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12" }, "peerDependencies": { - "vue": "3.5.13" + "vue": "3.5.12" } }, "node_modules/@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz", + "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==", "license": "MIT" }, "node_modules/accepts": { @@ -1573,16 +851,6 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "license": "MIT" }, - "node_modules/birpc": { - "version": "0.2.19", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz", - "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/body-parser": { "version": "1.20.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", @@ -1607,55 +875,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -1684,9 +903,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.0.tgz", - "integrity": "sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -1696,27 +915,6 @@ "node": ">= 0.4" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001687", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", - "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1734,16 +932,9 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" + "engines": { + "node": ">= 0.6" + } }, "node_modules/cookie": { "version": "0.7.1", @@ -1760,37 +951,6 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "license": "MIT" }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -1806,36 +966,6 @@ "ms": "2.0.0" } }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -1853,19 +983,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1905,13 +1022,6 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, - "node_modules/electron-to-chromium": { - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", - "dev": true, - "license": "ISC" - }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -1933,16 +1043,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/error-stack-parser-es": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz", - "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -1962,9 +1062,9 @@ } }, "node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1972,43 +1072,32 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=18" + "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "@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" } }, "node_modules/escape-html": { @@ -2032,33 +1121,6 @@ "node": ">= 0.6" } }, - "node_modules/execa": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", - "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.3", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.0", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/express": { "version": "4.21.2", "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", @@ -2105,22 +1167,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/finalhandler": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", @@ -2157,21 +1203,6 @@ "node": ">= 0.6" } }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2196,16 +1227,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/get-intrinsic": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", @@ -2228,33 +1249,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -2267,13 +1261,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -2310,26 +1297,6 @@ "node": ">= 0.4" } }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -2346,16 +1313,6 @@ "node": ">= 0.8" } }, - "node_modules/human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2383,183 +1340,10 @@ "node": ">= 0.10" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, "node_modules/magic-string": { - "version": "0.30.14", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", - "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -2625,23 +1409,6 @@ "node": ">= 0.6" } }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true, - "license": "MIT" - }, - "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -2649,9 +1416,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -2666,50 +1433,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true, - "license": "MIT" - }, - "node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, "node_modules/object-inspect": { @@ -2736,38 +1466,6 @@ "node": ">= 0.8" } }, - "node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2777,59 +1475,22 @@ "node": ">= 0.8" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "license": "MIT" }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true, - "license": "MIT" - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -2847,29 +1508,13 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.1", + "picocolors": "^1.1.0", "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, - "node_modules/pretty-ms": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", - "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -2922,17 +1567,10 @@ "node": ">= 0.8" } }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" - }, "node_modules/rollup": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz", - "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz", + "integrity": "sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==", "dev": true, "license": "MIT", "dependencies": { @@ -2946,41 +1584,27 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.28.1", - "@rollup/rollup-android-arm64": "4.28.1", - "@rollup/rollup-darwin-arm64": "4.28.1", - "@rollup/rollup-darwin-x64": "4.28.1", - "@rollup/rollup-freebsd-arm64": "4.28.1", - "@rollup/rollup-freebsd-x64": "4.28.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.28.1", - "@rollup/rollup-linux-arm-musleabihf": "4.28.1", - "@rollup/rollup-linux-arm64-gnu": "4.28.1", - "@rollup/rollup-linux-arm64-musl": "4.28.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.28.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1", - "@rollup/rollup-linux-riscv64-gnu": "4.28.1", - "@rollup/rollup-linux-s390x-gnu": "4.28.1", - "@rollup/rollup-linux-x64-gnu": "4.28.1", - "@rollup/rollup-linux-x64-musl": "4.28.1", - "@rollup/rollup-win32-arm64-msvc": "4.28.1", - "@rollup/rollup-win32-ia32-msvc": "4.28.1", - "@rollup/rollup-win32-x64-msvc": "4.28.1", + "@rollup/rollup-android-arm-eabi": "4.24.4", + "@rollup/rollup-android-arm64": "4.24.4", + "@rollup/rollup-darwin-arm64": "4.24.4", + "@rollup/rollup-darwin-x64": "4.24.4", + "@rollup/rollup-freebsd-arm64": "4.24.4", + "@rollup/rollup-freebsd-x64": "4.24.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.4", + "@rollup/rollup-linux-arm-musleabihf": "4.24.4", + "@rollup/rollup-linux-arm64-gnu": "4.24.4", + "@rollup/rollup-linux-arm64-musl": "4.24.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.4", + "@rollup/rollup-linux-riscv64-gnu": "4.24.4", + "@rollup/rollup-linux-s390x-gnu": "4.24.4", + "@rollup/rollup-linux-x64-gnu": "4.24.4", + "@rollup/rollup-linux-x64-musl": "4.24.4", + "@rollup/rollup-win32-arm64-msvc": "4.24.4", + "@rollup/rollup-win32-ia32-msvc": "4.24.4", + "@rollup/rollup-win32-x64-msvc": "4.24.4", "fsevents": "~2.3.2" } }, - "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -3007,16 +1631,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -3094,29 +1708,6 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", @@ -3135,34 +1726,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sirv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", - "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -3172,16 +1735,6 @@ "node": ">=0.10.0" } }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -3191,38 +1744,6 @@ "node": ">= 0.8" } }, - "node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/superjson": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", - "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -3232,16 +1753,6 @@ "node": ">=0.6" } }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -3255,29 +1766,6 @@ "node": ">= 0.6" } }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -3287,37 +1775,6 @@ "node": ">= 0.8" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -3337,21 +1794,21 @@ } }, "node_modules/vite": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.3.tgz", - "integrity": "sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==", + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.24.0", - "postcss": "^8.4.49", - "rollup": "^4.23.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -3360,25 +1817,19 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" + "terser": "^5.4.0" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, - "jiti": { - "optional": true - }, "less": { "optional": true }, @@ -3399,139 +1850,20 @@ }, "terser": { "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-hot-client": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.4.tgz", - "integrity": "sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" - } - }, - "node_modules/vite-plugin-vue-devtools": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.6.7.tgz", - "integrity": "sha512-H1ZyjtpWjP5mHA5R15sQeYgAARuh2Myg3TDFXWZK6QOQRy8s3XjTIt319DogVjU/x3rC3L/jJQjIasRU04mWXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-core": "^7.6.7", - "@vue/devtools-kit": "^7.6.7", - "@vue/devtools-shared": "^7.6.7", - "execa": "^9.5.1", - "sirv": "^3.0.0", - "vite-plugin-inspect": "0.8.8", - "vite-plugin-vue-inspector": "^5.3.1" - }, - "engines": { - "node": ">=v14.21.3" - }, - "peerDependencies": { - "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/vite-plugin-vue-devtools/node_modules/vite-plugin-inspect": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.8.tgz", - "integrity": "sha512-aZlBuXsWUPJFmMK92GIv6lH7LrwG2POu4KJ+aEdcqnu92OAf+rhBnfMDQvxIJPEB7hE2t5EyY/PMgf5aDLT8EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/utils": "^0.7.10", - "@rollup/pluginutils": "^5.1.3", - "debug": "^4.3.7", - "error-stack-parser-es": "^0.1.5", - "fs-extra": "^11.2.0", - "open": "^10.1.0", - "perfect-debounce": "^1.0.0", - "picocolors": "^1.1.1", - "sirv": "^3.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "@nuxt/kit": { - "optional": true } } }, - "node_modules/vite-plugin-vue-inspector": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.1.tgz", - "integrity": "sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.23.0", - "@babel/plugin-proposal-decorators": "^7.23.0", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.22.15", - "@vue/babel-plugin-jsx": "^1.1.5", - "@vue/compiler-dom": "^3.3.4", - "kolorist": "^1.8.0", - "magic-string": "^0.30.4" - }, - "peerDependencies": { - "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" - } - }, "node_modules/vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", + "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-sfc": "3.5.13", - "@vue/runtime-dom": "3.5.13", - "@vue/server-renderer": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-sfc": "3.5.12", + "@vue/runtime-dom": "3.5.12", + "@vue/server-renderer": "3.5.12", + "@vue/shared": "3.5.12" }, "peerDependencies": { "typescript": "*" @@ -3541,57 +1873,6 @@ "optional": true } } - }, - "node_modules/vue-router": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", - "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.6.4" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yoctocolors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/package.json b/package.json index 45e0891..abec838 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "deploy-test", + "name": "veb_proj", "version": "0.0.0", "private": true, "type": "module", @@ -7,16 +7,14 @@ "dev": "vite", "build": "vite build", "preview": "vite preview", - "start": "node server.js" + "start": "node server.js" }, "dependencies": { - "express": "^4.19.2", - "vue": "^3.5.13", - "vue-router": "^4.4.5" + "express": "^4.19.2", + "vue": "^3.5.12" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.2.1", - "vite": "^6.0.3", - "vite-plugin-vue-devtools": "^7.6.5" + "@vitejs/plugin-vue": "^5.1.4", + "vite": "^5.4.10" } } diff --git a/src/App.vue b/src/App.vue index 067bda3..16d444c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,11 +1,20 @@ + + +const test = ref(''); - +const move = () => { + location.href='http://' + test.value + '.shop/health'; +} + + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 8c39520..01433bc 100644 --- a/src/main.js +++ b/src/main.js @@ -1,6 +1,4 @@ - import { createApp } from 'vue' import App from './App.vue' -const app = createApp(App) -app.mount('#app') +createApp(App).mount('#app') diff --git a/vite.config.js b/vite.config.js index 4217010..63d1997 100644 --- a/vite.config.js +++ b/vite.config.js @@ -2,13 +2,11 @@ import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' -import vueDevTools from 'vite-plugin-vue-devtools' // https://vite.dev/config/ export default defineConfig({ plugins: [ vue(), - vueDevTools(), ], resolve: { alias: { From 43f9e014440e7e14f102d28e408bb51ca101a28b Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 16:13:54 +0900 Subject: [PATCH 12/23] deploy test --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 187ac57..edb90f3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -57,8 +57,8 @@ jobs: with: aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - application_name: inflow-v4 - environment_name: Inflow-v4-env + application_name: inflow-v5 + environment_name: Inflow-v5-env version_label: github-action-${{ github.sha }} region: ap-northeast-2 deployment_package: deploy/deploy.zip From b6e79cff321aa7dc5851e9ac8187585d60f112ae Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 16:52:05 +0900 Subject: [PATCH 13/23] deploy test --- src/App.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.vue b/src/App.vue index 16d444c..c941233 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,6 @@ From bfd8f3586d031f921d75c431e3012454029cf46f Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 17:01:20 +0900 Subject: [PATCH 14/23] deploy test --- package.json | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index abec838..08a2dbd 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,37 @@ "scripts": { "dev": "vite", "build": "vite build", + "start": "node server.js", "preview": "vite preview", - "start": "node server.js" + "lint": "eslint . --fix", + "format": "prettier --write src/" }, "dependencies": { - "express": "^4.19.2", - "vue": "^3.5.12" + "axios": "^1.7.7", + "express": "^4.21.2", + "fastapi": "^0.0.8", + "html2canvas": "^1.4.1", + "html2pdf.js": "^0.10.2", + "jspdf": "^2.5.2", + "marked": "^15.0.3", + "pdfmake": "^0.2.15", + "pinia": "^2.2.6", + "prismjs": "^1.29.0", + "vue": "^3.5.12", + "vue-password-toggle": "^1.3.3", + "vue-router": "^4.4.5", + "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz" }, "devDependencies": { + "@eslint/js": "^9.14.0", + "@types/pdfmake": "^0.2.9", + "@types/prismjs": "^1.26.5", "@vitejs/plugin-vue": "^5.1.4", + "@vue/eslint-config-prettier": "^10.1.0", + "eslint": "^9.14.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-vue": "^9.30.0", + "prettier": "^3.3.3", "vite": "^5.4.10" } } From f8bd3a27b8f4c6915093430712a0ca03302e448d Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 17:09:02 +0900 Subject: [PATCH 15/23] deploy test --- package.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/package.json b/package.json index 08a2dbd..fea257d 100644 --- a/package.json +++ b/package.json @@ -32,11 +32,6 @@ "@types/pdfmake": "^0.2.9", "@types/prismjs": "^1.26.5", "@vitejs/plugin-vue": "^5.1.4", - "@vue/eslint-config-prettier": "^10.1.0", - "eslint": "^9.14.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-vue": "^9.30.0", - "prettier": "^3.3.3", "vite": "^5.4.10" } } From 3f5759a76165c371f2978a802a3f8734e5d0f1be Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 17:25:55 +0900 Subject: [PATCH 16/23] deploy test --- index.html | 14 +- package-lock.json | 908 +++++++++++++++++- package.json | 1 - public/favicon.ico | Bin 4286 -> 267326 bytes src/App.vue | 21 +- src/api/attendance.js | 327 +++++++ src/api/axios.js | 80 ++ src/api/chatbot.js | 12 + src/api/department.js | 53 + src/api/emp_attach.js | 261 +++++ src/api/emp_info.js | 251 +++++ src/api/evaluation.js | 434 +++++++++ src/api/payroll.js | 147 +++ src/api/statistics.js | 0 src/api/vacation.js | 161 ++++ src/assets/Inflow_profile_img.png | Bin 0 -> 37363 bytes src/assets/admin_default_profile.png | Bin 0 -> 54993 bytes src/assets/company_logo.svg | 17 + src/assets/emp_basic_profile.png | Bin 0 -> 2172 bytes src/assets/icons/company_icon.png | Bin 0 -> 328 bytes src/assets/icons/excel_icon.png | Bin 0 -> 537 bytes src/assets/icons/eye_closed.png | Bin 0 -> 1333 bytes src/assets/icons/eye_open.png | Bin 0 -> 1243 bytes src/assets/icons/file_close.png | Bin 0 -> 270 bytes src/assets/icons/file_open.png | Bin 0 -> 451 bytes src/assets/icons/fold.png | Bin 0 -> 186 bytes src/assets/icons/minus_icon.png | Bin 0 -> 263 bytes src/assets/icons/plus_icon.png | Bin 0 -> 321 bytes src/assets/icons/unfold.png | Bin 0 -> 195 bytes src/assets/logo.svg | 1 + src/assets/main.css | 133 +++ .../attendance/CancelRequestModal.vue | 169 ++++ src/components/buttons/ArrowLeftButton.vue | 27 + src/components/buttons/ArrowUpButton.vue | 27 + src/components/buttons/CaretLeftButton.vue | 27 + src/components/buttons/CaretRightButton.vue | 27 + src/components/buttons/CheckButton.vue | 27 + src/components/buttons/ChevronLeftButton.vue | 27 + src/components/buttons/ChevronRightButton.vue | 27 + src/components/buttons/CopyButton.vue | 27 + src/components/buttons/HomeButton.vue | 35 + src/components/buttons/MoreListButton.vue | 27 + src/components/buttons/SearchButton.vue | 27 + src/components/buttons/SettingButton.vue | 33 + src/components/buttons/XmarkButton.vue | 27 + src/components/common/BubbleBackground.vue | 148 +++ .../common/ChangeMonthComponent.vue | 100 ++ src/components/common/ChangeYearComponent.vue | 74 ++ src/components/common/CheckCircle.vue | 33 + src/components/common/CommonArticle.vue | 72 ++ src/components/common/CommonHeader.vue | 200 ++++ src/components/common/CommonMenu.vue | 43 + src/components/common/CommonNav.vue | 91 ++ src/components/common/CompanyLogo.vue | 21 + src/components/common/CompanyName.vue | 34 + .../common/DepartmentMemberInfoComponent.vue | 104 ++ src/components/common/FileItem.vue | 56 ++ src/components/common/InfoCircle.vue | 92 ++ src/components/common/LoadingOverlay.vue | 62 ++ src/components/common/LoginSection.vue | 201 ++++ src/components/common/MyInfoComponent.vue | 82 ++ src/components/common/PaginationComponent.vue | 86 ++ .../common/SearchEmployeeComponent.vue | 168 ++++ .../common/SelectAppTypeComponent.vue | 52 + .../common/SelectPeriodComponent.vue | 114 +++ .../common/SelectYearMonthComponent.vue | 39 + src/components/dropdowns/AccountDropdown.vue | 123 +++ .../dropdowns/AppointmentHisDropDown.vue | 130 +++ src/components/dropdowns/DateDropDown.vue | 107 +++ .../DisciplineRewardTypeDropDown.vue | 54 ++ src/components/dropdowns/DropdownItem.vue | 121 +++ src/components/dropdowns/HalfDropdown.vue | 29 + src/components/dropdowns/PeriodDropDown.vue | 84 ++ .../dropdowns/ThirtyMinuteDropDown.vue | 82 ++ src/components/dropdowns/TimeDropDown.vue | 76 ++ src/components/dropdowns/YearDropDown.vue | 71 ++ .../dropdowns/YearMonthDropDown.vue | 95 ++ .../employee-search/DepartmentHeirarchy.vue | 60 ++ .../employee-search/EmployeeDetail.vue | 143 +++ .../employee-search/EmployeeList.vue | 125 +++ src/components/employee-search/SearchBar.vue | 54 ++ src/components/employee-search/TreeNode.vue | 127 +++ src/components/icons/AddressBookIcon.vue | 3 + src/components/icons/ArrowLeftIcon.vue | 3 + src/components/icons/ArrowUpIcon.vue | 3 + src/components/icons/BuildingIcon.vue | 3 + src/components/icons/CaretDownIcon.vue | 3 + src/components/icons/CaretLeftIcon.vue | 3 + src/components/icons/CaretRightIcon.vue | 3 + src/components/icons/CaretUpIcon.vue | 3 + src/components/icons/ChartIcon.vue | 3 + src/components/icons/CheckIcon.vue | 3 + src/components/icons/ChevronDownIcon.vue | 3 + src/components/icons/ChevronLeftIcon.vue | 3 + src/components/icons/ChevronRightIcon.vue | 3 + src/components/icons/ChevronUpIcon.vue | 3 + src/components/icons/ClockIcon.vue | 3 + src/components/icons/CopyIcon.vue | 3 + src/components/icons/EvaluationIcon.vue | 3 + src/components/icons/ExcelIcon.vue | 3 + src/components/icons/FolderCloseIcon.vue | 3 + src/components/icons/FolerOpenIcon.vue | 3 + src/components/icons/GearIcon.vue | 3 + src/components/icons/HomeIcon.vue | 3 + src/components/icons/MenuIcon.vue | 3 + src/components/icons/MinusIcon.vue | 3 + src/components/icons/PaperClipIcon.vue | 3 + src/components/icons/PlusIcon.vue | 3 + src/components/icons/QuestionIcon.vue | 3 + src/components/icons/RobotIcon.vue | 3 + src/components/icons/SearchIcon.vue | 3 + src/components/icons/UserIcon.vue | 3 + src/components/icons/XmarkIcon.vue | 3 + src/components/modals/CrudModal.vue | 108 +++ src/components/modals/ModalBackground.vue | 21 + src/components/modals/ModalItem.vue | 40 + src/components/modals/NoticeModal.vue | 37 + src/components/modals/ResetPasswordModal.vue | 268 ++++++ src/components/modals/SettingModal.vue | 59 ++ src/components/nav/MenuNav.vue | 60 ++ src/components/nav/MonthSelectNav.vue | 101 ++ src/components/nav/SubMenuNav.vue | 88 ++ src/components/salarytable/SalaryTable.vue | 260 +++++ src/components/semantic/ArticleItem.vue | 81 ++ src/components/semantic/ButtonItem.vue | 83 ++ src/components/semantic/FigcaptionItem.vue | 81 ++ src/components/semantic/FigureItem.vue | 81 ++ src/components/semantic/FlexItem.vue | 86 ++ src/components/semantic/FooterItem.vue | 81 ++ src/components/semantic/GridItem.vue | 81 ++ src/components/semantic/HeaderItem.vue | 81 ++ src/components/semantic/LiItem.vue | 69 ++ src/components/semantic/MainItem.vue | 92 ++ src/components/semantic/NavItem.vue | 81 ++ src/components/semantic/SectionItem.vue | 81 ++ src/components/semantic/TableCell.vue | 97 ++ src/components/semantic/TableItem.vue | 44 + src/components/semantic/TableRow.vue | 11 + src/components/semantic/UlItem.vue | 81 ++ src/components/widgets/MyAttendanceWidget.vue | 182 ++++ src/components/widgets/MyScheduleWidget.vue | 183 ++++ src/components/widgets/MyTeamMemberWidget.vue | 132 +++ src/components/widgets/ScheduleDdayWidget.vue | 87 ++ src/components/widgets/WidgetItem.vue | 55 ++ src/main.js | 19 +- src/router/index.js | 661 +++++++++++++ src/stores/counter.js | 12 + src/views/chatbot/ChatbotView.vue | 359 +++++++ src/views/emp-search/EmployeeSearchView.vue | 170 ++++ .../evaluation/EvalGradeUpdateModalView.vue | 218 +++++ src/views/evaluation/EvalGradeView.vue | 408 ++++++++ .../evaluation/EvalPolicyManagementView.vue | 545 +++++++++++ .../EvalPolicyUpdateAndViewModal.vue | 387 ++++++++ src/views/evaluation/EvalPolicyView.vue | 95 ++ src/views/evaluation/EvalTaskView.vue | 118 +++ .../evaluation/EvalTypeManagementView.vue | 229 +++++ src/views/evaluation/LeaderEvalView.vue | 96 ++ .../PersonalEvalCreateAndFindView.vue | 366 +++++++ src/views/evaluation/PersonalEvalFindView.vue | 212 ++++ src/views/evaluation/PersonalEvalView.vue | 103 ++ src/views/evaluation/TaskEvalModal.vue | 255 +++++ src/views/evaluation/TaskPolicyView.vue | 115 +++ .../evaluation/leader/DeptTaskAssignView.vue | 390 ++++++++ .../evaluation/leader/DeptTaskUploadView.vue | 347 +++++++ .../evaluation/leader/FeedbackManageView.vue | 488 ++++++++++ .../evaluation/leader/LeaderEvalListView.vue | 244 +++++ .../leader/TaskEvalCreateAndUpdateModal.vue | 172 ++++ src/views/home/HomeView.vue | 110 +++ src/views/hr-basic/AttendanceView.vue | 103 ++ src/views/hr-basic/ContractView.vue | 95 ++ src/views/hr-basic/MyDepartmentView.vue | 163 ++++ src/views/hr-basic/MyInfoView.vue | 108 +++ src/views/hr-basic/SalaryView.vue | 119 +++ .../attendance/BusinessTripRequestsView.vue | 274 ++++++ .../hr-basic/attendance/BusinessTripView.vue | 349 +++++++ src/views/hr-basic/attendance/CommuteView.vue | 203 ++++ .../attendance/DispatchRequestsView.vue | 274 ++++++ .../hr-basic/attendance/DispatchView.vue | 349 +++++++ .../hr-basic/attendance/LeaveRequestsView.vue | 272 ++++++ src/views/hr-basic/attendance/LeaveView.vue | 413 ++++++++ .../attendance/OvertimeRequestsView.vue | 283 ++++++ .../hr-basic/attendance/OvertimeView.vue | 539 +++++++++++ .../attendance/RemoteRequestsView.vue | 270 ++++++ src/views/hr-basic/attendance/RemoteView.vue | 295 ++++++ .../attendance/ReturnRequestsView.vue | 270 ++++++ src/views/hr-basic/attendance/ReturnView.vue | 430 +++++++++ .../attendance/VacationRequestsView.vue | 272 ++++++ .../hr-basic/attendance/VacationView.vue | 456 +++++++++ .../hr-basic/document/CertificateModal.vue | 608 ++++++++++++ .../hr-basic/document/CertificateView.vue | 150 +++ .../hr-basic/document/ContractSignView.vue | 206 ++++ .../document/EmployeeContractModal.vue | 871 +++++++++++++++++ .../document/SecurityContractModal.vue | 724 ++++++++++++++ .../employee/CareerInfoUpdateVIew.vue | 431 +++++++++ .../hr-basic/employee/CareerInfoVIew.vue | 181 ++++ .../employee/DisciplineRewardInfoView.vue | 182 ++++ .../employee/EducationInfoUpdateVIew.vue | 436 +++++++++ .../hr-basic/employee/EducationInfoView.vue | 170 ++++ .../employee/FamilyMemberInfoUpdateView.vue | 449 +++++++++ .../employee/FamilyMemberInfoView.vue | 164 ++++ .../employee/LanguageTestInfoUpdateView.vue | 480 +++++++++ .../employee/LanguageTestInfoView.vue | 177 ++++ src/views/hr-basic/employee/ProfileView.vue | 751 +++++++++++++++ .../employee/QualificationInfoUpdateView.vue | 446 +++++++++ .../employee/QualificationInfoView.vue | 171 ++++ .../my-department/MyDepartmentAttendance.vue | 44 + .../my-department/SearchDepartmentMember.vue | 294 ++++++ .../hr-basic/salary/PeriodicSalaryView.vue | 152 +++ .../hr-basic/salary/SalaryDetailView.vue | 444 +++++++++ src/views/hr-basic/salary/SalaryListView.vue | 146 +++ .../hr-basic/salary/SeverancePayView.vue | 282 ++++++ .../AppointmentManagementView.vue | 109 +++ .../hr-management/ContractManagementView.vue | 38 + .../DepartmentManagementView .vue | 190 ++++ src/views/hr-management/EmployeeInfoView.vue | 126 +++ .../hr-management/EmployeeUploadView.vue | 115 +++ .../Salary/EmployeeSalaryListView.vue | 206 ++++ .../Salary/IrregularAllowanceView.vue | 167 ++++ .../hr-management/Salary/NonTaxableView.vue | 164 ++++ .../hr-management/SalaryManagementView.vue | 103 ++ .../hr-management/VacationManagementView.vue | 96 ++ .../appointment/AppointmentHistoryView.vue | 349 +++++++ .../appointment/AppointmentUploadView.vue | 535 +++++++++++ .../DepartmentManagementAddView.vue | 310 ++++++ .../DepartmentManagementInformationView.vue | 449 +++++++++ .../department/DepartmentSearch.vue | 187 ++++ .../employee-upload/CareerInfoUploadView.vue | 496 ++++++++++ .../DisciplineRewardInfoUploadView.vue | 495 ++++++++++ .../EducationInfoUploadView.vue | 498 ++++++++++ .../EmployeeInfoUploadView.vue | 524 ++++++++++ .../FamilyMemberInfoUploadView.vue | 520 ++++++++++ .../LanguageTestInfoUploadView.vue | 537 +++++++++++ .../QualificationInfoUploadView.vue | 511 ++++++++++ .../vacation/VacationPaymentView.vue | 252 +++++ .../vacation/VacationPolicyView.vue | 419 ++++++++ src/views/login/LoginView.vue | 116 +++ 236 files changed, 36790 insertions(+), 30 deletions(-) create mode 100644 src/api/attendance.js create mode 100644 src/api/axios.js create mode 100644 src/api/chatbot.js create mode 100644 src/api/department.js create mode 100644 src/api/emp_attach.js create mode 100644 src/api/emp_info.js create mode 100644 src/api/evaluation.js create mode 100644 src/api/payroll.js create mode 100644 src/api/statistics.js create mode 100644 src/api/vacation.js create mode 100644 src/assets/Inflow_profile_img.png create mode 100644 src/assets/admin_default_profile.png create mode 100644 src/assets/company_logo.svg create mode 100644 src/assets/emp_basic_profile.png create mode 100644 src/assets/icons/company_icon.png create mode 100644 src/assets/icons/excel_icon.png create mode 100644 src/assets/icons/eye_closed.png create mode 100644 src/assets/icons/eye_open.png create mode 100644 src/assets/icons/file_close.png create mode 100644 src/assets/icons/file_open.png create mode 100644 src/assets/icons/fold.png create mode 100644 src/assets/icons/minus_icon.png create mode 100644 src/assets/icons/plus_icon.png create mode 100644 src/assets/icons/unfold.png create mode 100644 src/assets/logo.svg create mode 100644 src/assets/main.css create mode 100644 src/components/attendance/CancelRequestModal.vue create mode 100644 src/components/buttons/ArrowLeftButton.vue create mode 100644 src/components/buttons/ArrowUpButton.vue create mode 100644 src/components/buttons/CaretLeftButton.vue create mode 100644 src/components/buttons/CaretRightButton.vue create mode 100644 src/components/buttons/CheckButton.vue create mode 100644 src/components/buttons/ChevronLeftButton.vue create mode 100644 src/components/buttons/ChevronRightButton.vue create mode 100644 src/components/buttons/CopyButton.vue create mode 100644 src/components/buttons/HomeButton.vue create mode 100644 src/components/buttons/MoreListButton.vue create mode 100644 src/components/buttons/SearchButton.vue create mode 100644 src/components/buttons/SettingButton.vue create mode 100644 src/components/buttons/XmarkButton.vue create mode 100644 src/components/common/BubbleBackground.vue create mode 100644 src/components/common/ChangeMonthComponent.vue create mode 100644 src/components/common/ChangeYearComponent.vue create mode 100644 src/components/common/CheckCircle.vue create mode 100644 src/components/common/CommonArticle.vue create mode 100644 src/components/common/CommonHeader.vue create mode 100644 src/components/common/CommonMenu.vue create mode 100644 src/components/common/CommonNav.vue create mode 100644 src/components/common/CompanyLogo.vue create mode 100644 src/components/common/CompanyName.vue create mode 100644 src/components/common/DepartmentMemberInfoComponent.vue create mode 100644 src/components/common/FileItem.vue create mode 100644 src/components/common/InfoCircle.vue create mode 100644 src/components/common/LoadingOverlay.vue create mode 100644 src/components/common/LoginSection.vue create mode 100644 src/components/common/MyInfoComponent.vue create mode 100644 src/components/common/PaginationComponent.vue create mode 100644 src/components/common/SearchEmployeeComponent.vue create mode 100644 src/components/common/SelectAppTypeComponent.vue create mode 100644 src/components/common/SelectPeriodComponent.vue create mode 100644 src/components/common/SelectYearMonthComponent.vue create mode 100644 src/components/dropdowns/AccountDropdown.vue create mode 100644 src/components/dropdowns/AppointmentHisDropDown.vue create mode 100644 src/components/dropdowns/DateDropDown.vue create mode 100644 src/components/dropdowns/DisciplineRewardTypeDropDown.vue create mode 100644 src/components/dropdowns/DropdownItem.vue create mode 100644 src/components/dropdowns/HalfDropdown.vue create mode 100644 src/components/dropdowns/PeriodDropDown.vue create mode 100644 src/components/dropdowns/ThirtyMinuteDropDown.vue create mode 100644 src/components/dropdowns/TimeDropDown.vue create mode 100644 src/components/dropdowns/YearDropDown.vue create mode 100644 src/components/dropdowns/YearMonthDropDown.vue create mode 100644 src/components/employee-search/DepartmentHeirarchy.vue create mode 100644 src/components/employee-search/EmployeeDetail.vue create mode 100644 src/components/employee-search/EmployeeList.vue create mode 100644 src/components/employee-search/SearchBar.vue create mode 100644 src/components/employee-search/TreeNode.vue create mode 100644 src/components/icons/AddressBookIcon.vue create mode 100644 src/components/icons/ArrowLeftIcon.vue create mode 100644 src/components/icons/ArrowUpIcon.vue create mode 100644 src/components/icons/BuildingIcon.vue create mode 100644 src/components/icons/CaretDownIcon.vue create mode 100644 src/components/icons/CaretLeftIcon.vue create mode 100644 src/components/icons/CaretRightIcon.vue create mode 100644 src/components/icons/CaretUpIcon.vue create mode 100644 src/components/icons/ChartIcon.vue create mode 100644 src/components/icons/CheckIcon.vue create mode 100644 src/components/icons/ChevronDownIcon.vue create mode 100644 src/components/icons/ChevronLeftIcon.vue create mode 100644 src/components/icons/ChevronRightIcon.vue create mode 100644 src/components/icons/ChevronUpIcon.vue create mode 100644 src/components/icons/ClockIcon.vue create mode 100644 src/components/icons/CopyIcon.vue create mode 100644 src/components/icons/EvaluationIcon.vue create mode 100644 src/components/icons/ExcelIcon.vue create mode 100644 src/components/icons/FolderCloseIcon.vue create mode 100644 src/components/icons/FolerOpenIcon.vue create mode 100644 src/components/icons/GearIcon.vue create mode 100644 src/components/icons/HomeIcon.vue create mode 100644 src/components/icons/MenuIcon.vue create mode 100644 src/components/icons/MinusIcon.vue create mode 100644 src/components/icons/PaperClipIcon.vue create mode 100644 src/components/icons/PlusIcon.vue create mode 100644 src/components/icons/QuestionIcon.vue create mode 100644 src/components/icons/RobotIcon.vue create mode 100644 src/components/icons/SearchIcon.vue create mode 100644 src/components/icons/UserIcon.vue create mode 100644 src/components/icons/XmarkIcon.vue create mode 100644 src/components/modals/CrudModal.vue create mode 100644 src/components/modals/ModalBackground.vue create mode 100644 src/components/modals/ModalItem.vue create mode 100644 src/components/modals/NoticeModal.vue create mode 100644 src/components/modals/ResetPasswordModal.vue create mode 100644 src/components/modals/SettingModal.vue create mode 100644 src/components/nav/MenuNav.vue create mode 100644 src/components/nav/MonthSelectNav.vue create mode 100644 src/components/nav/SubMenuNav.vue create mode 100644 src/components/salarytable/SalaryTable.vue create mode 100644 src/components/semantic/ArticleItem.vue create mode 100644 src/components/semantic/ButtonItem.vue create mode 100644 src/components/semantic/FigcaptionItem.vue create mode 100644 src/components/semantic/FigureItem.vue create mode 100644 src/components/semantic/FlexItem.vue create mode 100644 src/components/semantic/FooterItem.vue create mode 100644 src/components/semantic/GridItem.vue create mode 100644 src/components/semantic/HeaderItem.vue create mode 100644 src/components/semantic/LiItem.vue create mode 100644 src/components/semantic/MainItem.vue create mode 100644 src/components/semantic/NavItem.vue create mode 100644 src/components/semantic/SectionItem.vue create mode 100644 src/components/semantic/TableCell.vue create mode 100644 src/components/semantic/TableItem.vue create mode 100644 src/components/semantic/TableRow.vue create mode 100644 src/components/semantic/UlItem.vue create mode 100644 src/components/widgets/MyAttendanceWidget.vue create mode 100644 src/components/widgets/MyScheduleWidget.vue create mode 100644 src/components/widgets/MyTeamMemberWidget.vue create mode 100644 src/components/widgets/ScheduleDdayWidget.vue create mode 100644 src/components/widgets/WidgetItem.vue create mode 100644 src/router/index.js create mode 100644 src/stores/counter.js create mode 100644 src/views/chatbot/ChatbotView.vue create mode 100644 src/views/emp-search/EmployeeSearchView.vue create mode 100644 src/views/evaluation/EvalGradeUpdateModalView.vue create mode 100644 src/views/evaluation/EvalGradeView.vue create mode 100644 src/views/evaluation/EvalPolicyManagementView.vue create mode 100644 src/views/evaluation/EvalPolicyUpdateAndViewModal.vue create mode 100644 src/views/evaluation/EvalPolicyView.vue create mode 100644 src/views/evaluation/EvalTaskView.vue create mode 100644 src/views/evaluation/EvalTypeManagementView.vue create mode 100644 src/views/evaluation/LeaderEvalView.vue create mode 100644 src/views/evaluation/PersonalEvalCreateAndFindView.vue create mode 100644 src/views/evaluation/PersonalEvalFindView.vue create mode 100644 src/views/evaluation/PersonalEvalView.vue create mode 100644 src/views/evaluation/TaskEvalModal.vue create mode 100644 src/views/evaluation/TaskPolicyView.vue create mode 100644 src/views/evaluation/leader/DeptTaskAssignView.vue create mode 100644 src/views/evaluation/leader/DeptTaskUploadView.vue create mode 100644 src/views/evaluation/leader/FeedbackManageView.vue create mode 100644 src/views/evaluation/leader/LeaderEvalListView.vue create mode 100644 src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue create mode 100644 src/views/home/HomeView.vue create mode 100644 src/views/hr-basic/AttendanceView.vue create mode 100644 src/views/hr-basic/ContractView.vue create mode 100644 src/views/hr-basic/MyDepartmentView.vue create mode 100644 src/views/hr-basic/MyInfoView.vue create mode 100644 src/views/hr-basic/SalaryView.vue create mode 100644 src/views/hr-basic/attendance/BusinessTripRequestsView.vue create mode 100644 src/views/hr-basic/attendance/BusinessTripView.vue create mode 100644 src/views/hr-basic/attendance/CommuteView.vue create mode 100644 src/views/hr-basic/attendance/DispatchRequestsView.vue create mode 100644 src/views/hr-basic/attendance/DispatchView.vue create mode 100644 src/views/hr-basic/attendance/LeaveRequestsView.vue create mode 100644 src/views/hr-basic/attendance/LeaveView.vue create mode 100644 src/views/hr-basic/attendance/OvertimeRequestsView.vue create mode 100644 src/views/hr-basic/attendance/OvertimeView.vue create mode 100644 src/views/hr-basic/attendance/RemoteRequestsView.vue create mode 100644 src/views/hr-basic/attendance/RemoteView.vue create mode 100644 src/views/hr-basic/attendance/ReturnRequestsView.vue create mode 100644 src/views/hr-basic/attendance/ReturnView.vue create mode 100644 src/views/hr-basic/attendance/VacationRequestsView.vue create mode 100644 src/views/hr-basic/attendance/VacationView.vue create mode 100644 src/views/hr-basic/document/CertificateModal.vue create mode 100644 src/views/hr-basic/document/CertificateView.vue create mode 100644 src/views/hr-basic/document/ContractSignView.vue create mode 100644 src/views/hr-basic/document/EmployeeContractModal.vue create mode 100644 src/views/hr-basic/document/SecurityContractModal.vue create mode 100644 src/views/hr-basic/employee/CareerInfoUpdateVIew.vue create mode 100644 src/views/hr-basic/employee/CareerInfoVIew.vue create mode 100644 src/views/hr-basic/employee/DisciplineRewardInfoView.vue create mode 100644 src/views/hr-basic/employee/EducationInfoUpdateVIew.vue create mode 100644 src/views/hr-basic/employee/EducationInfoView.vue create mode 100644 src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue create mode 100644 src/views/hr-basic/employee/FamilyMemberInfoView.vue create mode 100644 src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue create mode 100644 src/views/hr-basic/employee/LanguageTestInfoView.vue create mode 100644 src/views/hr-basic/employee/ProfileView.vue create mode 100644 src/views/hr-basic/employee/QualificationInfoUpdateView.vue create mode 100644 src/views/hr-basic/employee/QualificationInfoView.vue create mode 100644 src/views/hr-basic/my-department/MyDepartmentAttendance.vue create mode 100644 src/views/hr-basic/my-department/SearchDepartmentMember.vue create mode 100644 src/views/hr-basic/salary/PeriodicSalaryView.vue create mode 100644 src/views/hr-basic/salary/SalaryDetailView.vue create mode 100644 src/views/hr-basic/salary/SalaryListView.vue create mode 100644 src/views/hr-basic/salary/SeverancePayView.vue create mode 100644 src/views/hr-management/AppointmentManagementView.vue create mode 100644 src/views/hr-management/ContractManagementView.vue create mode 100644 src/views/hr-management/DepartmentManagementView .vue create mode 100644 src/views/hr-management/EmployeeInfoView.vue create mode 100644 src/views/hr-management/EmployeeUploadView.vue create mode 100644 src/views/hr-management/Salary/EmployeeSalaryListView.vue create mode 100644 src/views/hr-management/Salary/IrregularAllowanceView.vue create mode 100644 src/views/hr-management/Salary/NonTaxableView.vue create mode 100644 src/views/hr-management/SalaryManagementView.vue create mode 100644 src/views/hr-management/VacationManagementView.vue create mode 100644 src/views/hr-management/appointment/AppointmentHistoryView.vue create mode 100644 src/views/hr-management/appointment/AppointmentUploadView.vue create mode 100644 src/views/hr-management/department/DepartmentManagementAddView.vue create mode 100644 src/views/hr-management/department/DepartmentManagementInformationView.vue create mode 100644 src/views/hr-management/department/DepartmentSearch.vue create mode 100644 src/views/hr-management/employee-upload/CareerInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/EducationInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/QualificationInfoUploadView.vue create mode 100644 src/views/hr-management/vacation/VacationPaymentView.vue create mode 100644 src/views/hr-management/vacation/VacationPolicyView.vue create mode 100644 src/views/login/LoginView.vue diff --git a/index.html b/index.html index b19040a..ed72939 100644 --- a/index.html +++ b/index.html @@ -1,10 +1,14 @@ - + - - - - Vite App + + + + + Inflow
diff --git a/package-lock.json b/package-lock.json index 9be8835..130b379 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,10 +8,24 @@ "name": "veb_proj", "version": "0.0.0", "dependencies": { - "express": "^4.19.2", - "vue": "^3.5.12" + "axios": "^1.7.7", + "express": "^4.21.2", + "fastapi": "^0.0.8", + "html2canvas": "^1.4.1", + "html2pdf.js": "^0.10.2", + "jspdf": "^2.5.2", + "marked": "^15.0.3", + "pdfmake": "^0.2.15", + "pinia": "^2.2.6", + "prismjs": "^1.29.0", + "vue": "^3.5.12", + "vue-password-toggle": "^1.3.3", + "vue-router": "^4.4.5", + "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz" }, "devDependencies": { + "@types/pdfmake": "^0.2.9", + "@types/prismjs": "^1.26.5", "@vitejs/plugin-vue": "^5.1.4", "vite": "^5.4.10" } @@ -49,6 +63,18 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/types": { "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", @@ -453,6 +479,51 @@ "node": ">=12" } }, + "node_modules/@foliojs-fork/fontkit": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.2.tgz", + "integrity": "sha512-IfB5EiIb+GZk+77TRB86AHroVaqfq8JRFlUbz0WEwsInyCG0epX2tCPOy+UfaWPju30DeVoUAXfzWXmhn753KA==", + "license": "MIT", + "dependencies": { + "@foliojs-fork/restructure": "^2.0.2", + "brotli": "^1.2.0", + "clone": "^1.0.4", + "deep-equal": "^1.0.0", + "dfa": "^1.2.0", + "tiny-inflate": "^1.0.2", + "unicode-properties": "^1.2.2", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/@foliojs-fork/linebreak": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.2.tgz", + "integrity": "sha512-ZPohpxxbuKNE0l/5iBJnOAfUaMACwvUIKCvqtWGKIMv1lPYoNjYXRfhi9FeeV9McBkBLxsMFWTVVhHJA8cyzvg==", + "license": "MIT", + "dependencies": { + "base64-js": "1.3.1", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/@foliojs-fork/pdfkit": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.15.1.tgz", + "integrity": "sha512-4Cq2onHZAhThIfzv3/AFTPALqHzbmV8uNvgRELULWNbsZATgVeqEL4zHOzCyblLfX6tMXVO2BVaPcXboIxGjiw==", + "license": "MIT", + "dependencies": { + "@foliojs-fork/fontkit": "^1.9.2", + "@foliojs-fork/linebreak": "^1.1.1", + "crypto-js": "^4.2.0", + "jpeg-exif": "^1.1.4", + "png-js": "^1.0.0" + } + }, + "node_modules/@foliojs-fork/restructure": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz", + "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==", + "license": "MIT" + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", @@ -718,6 +789,51 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/pdfkit": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.13.7.tgz", + "integrity": "sha512-qIV2V2cnunHEVa51ISkoXlTsAnuQpTXhE7is3CWvV5lKSItRDLL7VLg/j0AkvAr3lG5ZBK2IWIl5iTfqf+obuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/pdfmake": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@types/pdfmake/-/pdfmake-0.2.10.tgz", + "integrity": "sha512-6EV2+hiYqXO4/INnGObeXgTvzh2DuwiPkfjqYppHmKSgyVcXFvraLLNKFdvJEbrCoe0HqsKFDHc0I7M50hn4/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/pdfkit": "*" + } + }, + "node_modules/@types/prismjs": { + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", + "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/raf": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", + "license": "MIT", + "optional": true + }, "node_modules/@vitejs/plugin-vue": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz", @@ -782,6 +898,12 @@ "@vue/shared": "3.5.12" } }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, "node_modules/@vue/reactivity": { "version": "3.5.12", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz", @@ -851,6 +973,74 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, "node_modules/body-parser": { "version": "1.20.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", @@ -875,6 +1065,27 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -915,6 +1126,60 @@ "node": ">= 0.4" } }, + "node_modules/canvg": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz", + "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/canvg/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT", + "optional": true + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -951,6 +1216,33 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "license": "MIT" }, + "node_modules/core-js": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", + "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "license": "MIT", + "dependencies": { + "utrie": "^1.0.2" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -966,6 +1258,26 @@ "ms": "2.0.0" } }, + "node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "license": "MIT", + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -983,6 +1295,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1002,6 +1340,19 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, + "node_modules/dompurify": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.7.tgz", + "integrity": "sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optional": true + }, "node_modules/dunder-proto": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", @@ -1061,6 +1412,12 @@ "node": ">= 0.4" } }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -1167,6 +1524,29 @@ "url": "https://opencollective.com/express" } }, + "node_modules/fastapi": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/fastapi/-/fastapi-0.0.8.tgz", + "integrity": "sha512-I3nKZeqsvHIirIvkZrH+kpRZUE3YMvQ+wumC5KTn2pgOEI8SzC7NW8S4Fv83+ZD/93PRelIJfxybzF1P4tLS/Q==", + "license": "ISC", + "dependencies": { + "bluebird": "^3.4.6", + "body-parser": "^1.15.2", + "commander": "^2.9.0", + "express": "^4.14.0", + "lodash": "^4.15.0", + "morgan": "^1.7.0" + }, + "bin": { + "fastapi": "lib/cli.js" + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" + }, "node_modules/finalhandler": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", @@ -1185,6 +1565,40 @@ "node": ">= 0.8" } }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -1227,6 +1641,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-intrinsic": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", @@ -1285,6 +1708,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -1297,6 +1735,30 @@ "node": ">= 0.4" } }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "license": "MIT", + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/html2pdf.js": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/html2pdf.js/-/html2pdf.js-0.10.2.tgz", + "integrity": "sha512-WyHVeMb18Bp7vYTmBv1GVsThH//K7SRfHdSdhHPkl4JvyQarNQXnailkYn0QUbRRmnN5rdbbmSIGEsPZtzPy2Q==", + "license": "MIT", + "dependencies": { + "es6-promise": "^4.2.5", + "html2canvas": "^1.0.0", + "jspdf": "^2.3.1" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -1340,6 +1802,85 @@ "node": ">= 0.10" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz", + "integrity": "sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "gopd": "^1.1.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jpeg-exif": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/jpeg-exif/-/jpeg-exif-1.1.4.tgz", + "integrity": "sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ==", + "license": "MIT" + }, + "node_modules/jspdf": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.2.tgz", + "integrity": "sha512-myeX9c+p7znDWPk0eTrujCzNjT+CXdXyk7YmJq5nD5V7uLLKmSXnlQ/Jn/kuo3X09Op70Apm0rQSnFWyGK8uEQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "fflate": "^0.8.1" + }, + "optionalDependencies": { + "canvg": "^3.0.6", + "core-js": "^3.6.0", + "dompurify": "^2.5.4", + "html2canvas": "^1.0.0-rc.5" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/magic-string": { "version": "0.30.12", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", @@ -1349,6 +1890,18 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/marked": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.3.tgz", + "integrity": "sha512-Ai0cepvl2NHnTcO9jYDtcOEtVBNVYR31XnEA3BndO7f5As1wzpcOceSUM8FDkNLJNIODcLpDTWay/qQhqbuMvg==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1409,6 +1962,34 @@ "node": ">= 0.6" } }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "license": "MIT", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1454,6 +2035,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -1466,6 +2072,21 @@ "node": ">= 0.8" } }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1481,12 +2102,73 @@ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "license": "MIT" }, + "node_modules/pdfmake": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.15.tgz", + "integrity": "sha512-Ryef9mjxo6q8dthhbssAK0zwCsPZ6Pl7kCHnIEXOvQdd79LUGZD6SHGi21YryFXczPjvw6V009uxQwp5iritcA==", + "license": "MIT", + "dependencies": { + "@foliojs-fork/linebreak": "^1.1.2", + "@foliojs-fork/pdfkit": "^0.15.1", + "iconv-lite": "^0.6.3", + "xmldoc": "^1.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/pdfmake/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT", + "optional": true + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, + "node_modules/pinia": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.0.tgz", + "integrity": "sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" + }, "node_modules/postcss": { "version": "8.4.47", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", @@ -1515,6 +2197,15 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -1528,6 +2219,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/qs": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", @@ -1543,6 +2240,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "license": "MIT", + "optional": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -1567,6 +2274,40 @@ "node": ">= 0.8" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "license": "MIT OR SEE LICENSE IN FEEL-FREE.md", + "optional": true, + "engines": { + "node": ">= 0.8.15" + } + }, "node_modules/rollup": { "version": "4.24.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz", @@ -1631,6 +2372,12 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -1702,6 +2449,21 @@ "node": ">= 0.4" } }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -1735,6 +2497,16 @@ "node": ">=0.10.0" } }, + "node_modules/stackblur-canvas": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.14" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -1744,6 +2516,31 @@ "node": ">= 0.8" } }, + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "license": "MIT", + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -1766,6 +2563,33 @@ "node": ">= 0.6" } }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -1784,6 +2608,15 @@ "node": ">= 0.4.0" } }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "license": "MIT", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -1873,6 +2706,77 @@ "optional": true } } + }, + "node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-password-toggle": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/vue-password-toggle/-/vue-password-toggle-1.3.3.tgz", + "integrity": "sha512-nfsiG81tv7c+okcgzm9QvyqkGqblZBqr+0IVkSXB9aOulM1le9T/CyI0RQcTqHMT+p4cREOIrgHFqSVYTbFjTg==", + "license": "MIT", + "dependencies": { + "vue": "^3.3.11" + } + }, + "node_modules/vue-router": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", + "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/xlsx": { + "version": "0.20.3", + "resolved": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz", + "integrity": "sha512-oLDq3jw7AcLqKWH2AhCpVTZl8mf6X2YReP+Neh0SJUzV/BdZYjth94tG5toiMB1PPrYtxOCfaoUCkvtuH+3AJA==", + "license": "Apache-2.0", + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xmldoc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.3.0.tgz", + "integrity": "sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + } } } } diff --git a/package.json b/package.json index fea257d..dc5628a 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,6 @@ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz" }, "devDependencies": { - "@eslint/js": "^9.14.0", "@types/pdfmake": "^0.2.9", "@types/prismjs": "^1.26.5", "@vitejs/plugin-vue": "^5.1.4", diff --git a/public/favicon.ico b/public/favicon.ico index df36fcfb72584e00488330b560ebcf34a41c64c2..7857c559799f5e90ae5c9e988b59161cf8ee5b22 100644 GIT binary patch literal 267326 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 Mrtq@Gw~M0x2NTRqxBvhE literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S diff --git a/src/App.vue b/src/App.vue index c941233..ba32c22 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,20 +1,3 @@ - - - - \ No newline at end of file + + \ No newline at end of file diff --git a/src/api/attendance.js b/src/api/attendance.js new file mode 100644 index 0000000..a1727d4 --- /dev/null +++ b/src/api/attendance.js @@ -0,0 +1,327 @@ +import apiClient from '@/api/axios'; // Axios 설정이 적용된 apiClient 사용 + +// 1. 사원 ID와 날짜(yyyy-MM)로 월별 출퇴근 내역 조회 +export const getCommutesByEmployeeId = async (eid, date) => { + try { + const response = await apiClient.get(`/commutes?eid=${eid}&date=${date}`); + return response.data; + } catch (error) { + console.error('getCommutesByEmployeeId 에러:', error); + throw error; + } +}; + +// 2. 재택근무 신청 +export const createRemoteRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/commute/remote`, + formData + ); + return response.data; + } catch (error) { + console.error('createRemoteRequest 에러:', error); + throw error; + } +}; + +// 3. 사원 ID로 재택근무 최근 신청 내역 조회 +export const getRemoteRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/commute/remote/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getRemoteRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 4. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 재택근무 전체 신청 내역 페이지별 조회 +export const getRemoteRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/commute/remote?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getRemoteRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 5. 초과근무 신청 +export const createOvertimeRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/commute/overtime`, + formData + ); + return response.data; + } catch (error) { + console.error('createOvertimeRequest 에러:', error); + throw error; + } +}; + +// 6. 사원 ID로 초과근무 최근 신청 내역 조회 +export const getOvertimeRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/commute/overtime/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getOvertimeRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 7. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 초과근무 전체 신청 내역 페이지별 조회 +export const getOvertimeRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/commute/overtime?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getOvertimeRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 8. 출장 신청 +export const createBusinessTripRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/business-trip`, + formData + ); + return response.data; + } catch (error) { + console.error('createBusinessTripRequest 에러:', error); + throw error; + } +}; + +// 9. 사원 ID로 출장 최근 신청 내역 조회 +export const getBusinessTripRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/business-trip/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getBusinessTripRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 10. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 출장 전체 신청 내역 페이지별 조회 +export const getBusinessTripRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/business-trip?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getBusinessTripRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 11. 파견 신청 +export const createDispatchRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/dispatch`, + formData + ); + return response.data; + } catch (error) { + console.error('createDispatchRequest 에러:', error); + throw error; + } +}; + +// 12. 사원 ID로 파견 최근 신청 내역 조회 +export const getDispatchRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/dispatch/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getDispatchRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 13. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 파견 전체 신청 내역 페이지별 조회 +export const getDispatchRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/dispatch?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getDispatchRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 14. 휴직 신청 +export const createLeaveRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/leave`, + formData, + { + headers: { + 'Content-Type': 'multipart/form-data', + }, + } + ); + return response.data; + } catch (error) { + console.error('createLeaveRequest 에러:', error); + throw error; + } +}; + +// 15. 사원 ID로 휴직 최근 신청 내역 조회 +export const getLeaveRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/leave/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getLeaveRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 16. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 휴직 전체 신청 내역 페이지별 조회 +export const getLeaveRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/leave?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getLeaveRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 17. 복직 신청 +export const createReturnRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/return`, + formData, + { + headers: { + 'Content-Type': 'multipart/form-data', + }, + } + ); + return response.data; + } catch (error) { + console.error('createReturnRequest 에러:', error); + throw error; + } +}; + +// 18. 사원 ID로 복직 최근 신청 내역 조회 +export const getReturnRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/return/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getReturnRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 19. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 복직 전체 신청 내역 페이지별 조회 +export const getReturnRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/return?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getReturnRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 20. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 휴복직 전체 내역 페이지별 조회 +export const getLeaveReturnsByEmployeeId = async (eid, page) => { + try { + const response = await apiClient.get( + `/leave-returns?eid=${eid}&page=${page}` + ); + return response.data; + } catch (error) { + console.error('getLeaveReturnsByEmployeeId 에러:', error); + throw error; + } +}; + +// 21. 근태 취소 신청 +export const cancelAttendanceRequest = async (id, formData) => { + try { + const response = await apiClient.patch( + `/attendance-requests/${id}`, + formData + ); + return response.data; + } catch (error) { + console.error('cancelAttendanceRequest 에러:', error); + throw error; + } +}; + +// 22. 초과근무 연장 신청 +export const extendOvertime = async (id, formData) => { + try { + const response = await apiClient.patch( + `/attendance-requests/commute/overtime/${id}`, + formData + ); + return response.data; + } catch (error) { + console.error('extendOvertime 에러:', error); + throw error; + } +}; + +// 23. 사원 ID와 날짜(yyyy-MM)로 월별 초과근무 내역 조회 +export const getOvertimesByEmployeeId = async (eid, date) => { + try { + const response = await apiClient.get( + `/commutes/overtime?eid=${eid}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getOvertimesByEmployeeId 에러:', error); + throw error; + } +}; + +// 24. 출근 +export const checkAndUpdateCommute = async (eid) => { + try { + const response = await apiClient.post(`/commutes?eid=${eid}`); + return response.data; + } catch (error) { + console.error('checkAndUpdateCommute 에러:', error); + throw error; + } +}; diff --git a/src/api/axios.js b/src/api/axios.js new file mode 100644 index 0000000..11acf96 --- /dev/null +++ b/src/api/axios.js @@ -0,0 +1,80 @@ +import axios from 'axios'; + +// Axios 인스턴스 생성 +const apiClient = axios.create({ + baseURL: 'http://localhost:5000/api', // API 기본 경로 +}); + +// 요청 인터셉터: 모든 요청에 Authorization 헤더 추가 +apiClient.interceptors.request.use( + (config) => { + const token = localStorage.getItem('accessToken'); + console.log('인터셉터에서 읽어온 토큰:', token); + + // 액세스 토큰이 있는 경우 Authorization 헤더에 추가 + if (token) { + config.headers.Authorization = `Bearer ${token}`; + } + return config; + }, + (error) => Promise.reject(error) +); + +// 응답 인터셉터: 401 오류 시 리프레시 토큰으로 재발급 처리 +apiClient.interceptors.response.use( + (response) => response, // 응답이 성공적인 경우 그대로 반환 + async (error) => { + const originalRequest = error.config; + + // 401 Unauthorized 에러 처리 + if ( + error.response && + error.response.status === 401 && + !originalRequest._retry + ) { + originalRequest._retry = true; // 무한 루프 방지 + + try { + const refreshToken = localStorage.getItem('refreshToken'); + + if (!refreshToken) { + console.error('리프레시 토큰이 없습니다.'); + return Promise.reject(error); + } + + // 리프레시 토큰으로 새로운 액세스 토큰 요청 + const { data } = await axios.post( + 'http://localhost:5000/api/auth/refresh-token', + { refresh_token: refreshToken }, // JSON 형식으로 데이터 전달 + { + headers: { + 'Content-Type': 'application/json', + }, + } + ); + + const { access_token: newAccessToken, refresh_token: newRefreshToken } = + data.content; + + // 새로운 토큰 저장 + if (newAccessToken) { + localStorage.setItem('accessToken', newAccessToken); + } + if (newRefreshToken) { + localStorage.setItem('refreshToken', newRefreshToken); + } + + // 원래 요청을 새로운 액세스 토큰으로 재시도 + originalRequest.headers.Authorization = `Bearer ${newAccessToken}`; + return apiClient(originalRequest); // 재요청 + } catch (refreshError) { + console.error('리프레시 토큰 요청 실패:', refreshError); + return Promise.reject(refreshError); + } + } + + return Promise.reject(error); // 다른 오류는 그대로 반환 + } +); + +export default apiClient; diff --git a/src/api/chatbot.js b/src/api/chatbot.js new file mode 100644 index 0000000..ceb77b7 --- /dev/null +++ b/src/api/chatbot.js @@ -0,0 +1,12 @@ +import apiClient from '@/api/axios'; + +// 챗봇 질문 +export const chatbotQuery = async (formData) => { + try { + const response = await apiClient.post(`/chatbot/query`, formData); + return response.data; + } catch (error) { + console.error('chatbotQuery 에러:', error); + throw error; + } +}; diff --git a/src/api/department.js b/src/api/department.js new file mode 100644 index 0000000..7f96076 --- /dev/null +++ b/src/api/department.js @@ -0,0 +1,53 @@ +import apiClient from '@/api/axios'; + +// 1. 사원 전체 조회(검색) +export const getAllDepartmentMembers = async () => { + try { + const response = await apiClient.get(`/departments/search/all-members`); + return response.data; + } catch (error) { + console.error('getAllDepartmentMembers 에러:', error); + throw error; + } +}; + +// 2. 키워드로 사원 검색 +export const getEmployeesByKeywordOrDepartmentCode = async (keyword) => { + try { + const response = await apiClient.get( + `/departments/search/members?keyword=${keyword}` + ); + return response.data; + } catch (error) { + console.error('getEmployeesByKeywordOrDepartmentCode 에러:', error); + throw error; + } +}; + +// 3. 부서 구성원 조회(일반) +export const getEmployeesByDepartmentCode = async (dcode) => { + try { + const response = await apiClient.get( + `/departments/search/members?departmentCode=${dcode}` + ); + return response.data; + } catch (error) { + console.error('getEmployeesByDepartmentCode 에러:', error); + throw error; + } +}; + +// 4. 부서 구성원 조회(팀장) +export const getMyDepartmentMemberListByDepartmentCode = async ( + departmentCode +) => { + try { + const response = await apiClient.get( + `/departments/my-department/${departmentCode}/members` + ); + return response.data; + } catch (error) { + console.error('getMyDepartmentMemberListByDepartmentCode 에러:', error); + throw error; + } +}; diff --git a/src/api/emp_attach.js b/src/api/emp_attach.js new file mode 100644 index 0000000..bc82566 --- /dev/null +++ b/src/api/emp_attach.js @@ -0,0 +1,261 @@ +import apiClient from '@/api/axios'; + +export const getDoc = async (fileType) => { + try { + const response = await apiClient.get( + `/forms/download?file_type=${fileType}` + ); + return response.data; + } catch (error) { + console.error('양식 다운로드 에러:', error.response?.data || error.message); + throw error; + } +}; + +export const saveData = async (data, name) => { + try { + let response; + if (name !== null) { + if (name === 'appointments') + response = await apiClient.post(`/appointments`, data); + else response = await apiClient.post(`/employees/${name}`, data); + } else { + response = await apiClient.post(`/employees`, data); + } + return response.data.content; + } catch (error) { + console.error( + '사원 정보 등록 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const updateData = async (list, data, name) => { + try { + let response; + await apiClient.delete(`/employees/${name}`, { + data: list, + }); + response = await apiClient.post(`/employees/${name}`, data); + return response.data.content; + } catch (error) { + console.error('수정 요청 에러:', error.response?.data || error.message); + throw error; + } +}; + +export const getValidData = async () => { + try { + const response = await apiClient.get(`/validations/`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getAllEmpId = async () => { + try { + const response = await apiClient.get(`/employees/`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getEmpByNum = async (empNum) => { + try { + const response = await apiClient.get(`/employees/number/${empNum}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getEmpId = async (empCodes) => { + try { + const response = await apiClient.post(`/employees/numbers`, empCodes); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getEducationsById = async (empId) => { + try { + const response = await apiClient.get(`/employees/educations/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getQualifications = async () => { + try { + const response = await apiClient.get(`/employees/qualifications`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getQualificationsById = async (empId) => { + try { + const response = await apiClient.get(`/employees/qualifications/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getLanguageTests = async () => { + try { + const response = await apiClient.get(`/employees/language-tests`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getLanguageTestsById = async (empId) => { + try { + const response = await apiClient.get(`/employees/language-tests/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getLangCode = async () => { + try { + const response = await apiClient.get(`/employees/language-tests/languages`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getRelationships = async () => { + try { + const response = await apiClient.get( + `/employees/family-members/relationships` + ); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getFamilyById = async (empId) => { + try { + const response = await apiClient.get(`/employees/family-members/${empId}`); + return response.data; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getAppHistoryByMonth = async (year, month) => { + try { + const response = await apiClient.get( + `/appointments/history?year=${year}&month=${month}&appointment_item_code=all` + ); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getAppHistoryByPeriod = async (year, month, type) => { + try { + const response = await apiClient.get( + `/appointments/history?year=${year}&month=${month}&appointment_item_code=${type}` + ); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getCareersById = async (empId) => { + try { + const response = await apiClient.get(`/employees/careers/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getDisciplineReward = async (empId) => { + try { + const response = await apiClient.get(`/employees/attached/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; diff --git a/src/api/emp_info.js b/src/api/emp_info.js new file mode 100644 index 0000000..7d141a4 --- /dev/null +++ b/src/api/emp_info.js @@ -0,0 +1,251 @@ +// 사원 기본 관련 api 모음 + +import apiClient from '@/api/axios'; // Axios 설정이 적용된 apiClient 사용 +import router from '@/router'; + +// 설명. 홈 화면 일정 조회 +export const getHomeInfo = async (employeeId, month) => { + try { + const response = await apiClient.get( + `/home?employeeId=${employeeId}&month=${month}` + ); + return response.data; + } catch (error) { + console.error('getHomeInfo 에러:', error); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 1. 사원 ID로 사원 정보 조회하기 +export const getEmployeeById = async (employeeId, token) => { + try { + console.log('사원 ID로 조회 시작, 전달된 토큰:', token); + const response = await apiClient.get(`/employees/id/${employeeId}`, { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + }, + }); + console.log('사원 조회 응답 데이터:', response.data); + return response.data.content; // 사원 정보를 반환 + } catch (error) { + console.error('getEmployeeById 에러:', error.response?.data || error); + router.push("/login"); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 1.1. 사원 ID로 사원 정보 조인해서 상세 조회하기 +export const getEmployeeDetailById = async (employeeId, token) => { + try { + const response = await apiClient.get(`/employees/detail/${employeeId}`, { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + }, + }); + return response.data.content; // 상세 사원 정보 반환 + } catch (error) { + console.error('getEmployeeDetailById 에러:', error); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 2. 비밀번호 재설정하기 +export const resetEmployeePassword = async (employeeId, newPassword, token) => { + try { + const response = await apiClient.patch( + '/employees/re-password', + { + employee_id: employeeId, // 사원 ID + new_password: newPassword, // 새 비밀번호 + }, + { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + }, + } + ); + + return response.data; // API 응답 데이터를 반환 + } catch (error) { + console.error('resetEmployeePassword 에러:', error.response || error); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 3. 사원 리스트 전체 조회하기 +export const getAllEmployees = async (token) => { + try { + const response = await apiClient.get('/employees/', { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + }, + }); + return response.data.content; // 사원 리스트 반환 + } catch (error) { + console.error('getAllEmployees 에러:', error); + throw error; + } +}; + +// 설명. 4. 이름으로 사원 리스트 조회하기 +export const getEmployeesByName = async (name, token) => { + try { + const response = await apiClient.get(`/employees/name`, { + params: { name }, // 이름을 파라미터로 추가 + headers: { + Authorization: `Bearer ${token}`, + }, + }); + return response.data.content; // 사원 리스트 반환 + } catch (error) { + console.error('getEmployeesByName 에러:', error); + throw error; + } +}; + +// 설명. 5. 사번으로 사원 정보 조회하기 +export const getEmployeeByNumber = async (employeeNumber, token) => { + try { + const response = await apiClient.get( + `/employees/number/${employeeNumber}`, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.content; // 사원 정보 반환 + } catch (error) { + console.error('getEmployeeByNumber 에러:', error); + throw error; + } +}; + +// 설명. 6. 재직증명서 정보 조회하기 +export const getEmploymentCertificate = async (employeeId, purpose, token) => { + try { + const response = await apiClient.post( + '/employees/employment-certificate', + { + employee_id: employeeId, // 사원 id + purpose: purpose, // 증명서 용도 + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.content; // 재직증명서 정보 반환 + } catch (error) { + console.error('getEmploymentCertificate 에러:', error); + throw error; + } +}; + +// 설명. 7. 근로 계약서 정보 조회하기 +export const getEmploymentContract = async (employeeId, token) => { + try { + const response = await apiClient.get( + `/employees/${employeeId}/employment-contract`, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.content; // 근로 계약서 정보 반환 + } catch (error) { + console.error('getEmploymentContract 에러:', error); + throw error; + } +}; + +// 설명. 8. 비밀 유지 서약서 정보 조회하기 +export const getSecurityAgreement = async (employeeId, token) => { + try { + const response = await apiClient.get( + `/employees/${employeeId}/security-agreement`, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.content; // 비밀 유지 서약서 정보 반환 + } catch (error) { + console.error('getSecurityAgreement 에러:', error); + throw error; + } +}; + +// 설명. 9. 서명된 계약서 리스트 조회하기 +export const getContractList = async (employeeId, token) => { + try { + const response = await apiClient.get(`/employees/${employeeId}/contracts`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + return response.data.content; // 계약서 리스트 반환 + } catch (error) { + console.error('getContractList 에러:', error); + throw error; + } +}; + +// 설명. 10. 특정 계약서 정보 조회하기 +export const getContract = async (contractId, token) => { + try { + const response = await apiClient.get(`/employees/contracts/${contractId}`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + return response.data.content; // 계약서 정보 반환 + } catch (error) { + console.error('getContract 에러:', error); + throw error; + } +}; + +// 설명. 11. 사원 정보 수정하기 +export const updateEmployeeInfo = async (employeeId, formData, token) => { + try { + const response = await apiClient.patch( + `/employees/employee-id/${employeeId}`, + formData, + { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + 'Content-Type': 'multipart/form-data', // form-data 처리 + }, + } + ); + return response.data.content; // 수정된 사원 정보 반환 + } catch (error) { + console.error('updateEmployeeInfo 에러:', error.response || error); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 12. 사원별 계약서 등록 +export const registerEmployeeContract = async (contractId, file, token) => { + try { + const formData = new FormData(); + formData.append('contract_id', contractId); // 계약서 ID + formData.append('contract_file', file); // 파일 + + const response = await apiClient.post('/employees/contracts', formData, { + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'multipart/form-data', // form-data 처리 + }, + }); + + return response.data; // 성공 메시지 반환 + } catch (error) { + console.error('registerEmployeeContract 에러:', error.response || error); + throw error; // 에러 전달 + } +}; diff --git a/src/api/evaluation.js b/src/api/evaluation.js new file mode 100644 index 0000000..2ebe8b8 --- /dev/null +++ b/src/api/evaluation.js @@ -0,0 +1,434 @@ +// evaluation.js +import apiClient from '@/api/axios'; + +// 과제별 평가 조회 - ( 자기평가&리더평가에 해당하는 과제별 평가 리스트 모두 조회 ) +export const getTaskEvaluation = async (empId, year, half) => { + try { + const response = await apiClient.get(`/evaluations/taskEval/find`, { + params: { + empId, + year, + half, + }, + }); + return response.data; + } catch (error) { + console.error('getTaskEvaluation 에러:', error); + throw error; + } +}; + +// 평가ID로 과제별 평가 List 조회 ( 개인평가 조회에 사용 ) +export const findIndividualTaskListByEvaluationId = async ( + empId, + year, + half +) => { + try { + const response = await apiClient.get( + '/evaluations/taskEval/individualTaskList', + { + params: { + year: year, + half: half, + empId: empId, + }, + } + ); + return response.data; + } catch (error) { + console.error('자기평가 과제 리스트 조회 중 에러 발생:', error); + throw error; + } +}; + +// 평가ID로 과제별 평가 List 조회 ( 리더평가 조회에 사용 ) +export const findTaskEvalByEvaluationId = async (evaluationId) => { + try { + const response = await apiClient.get( + `/evaluations/taskEval/byEvaluationId/${evaluationId}` + ); + return response.data; + } catch (error) { + console.error('평가ID로 과제별 평가 리스트 조회 중 에러 발생:', error); + throw error; + } +}; + +// 과제별 평가 수정 +export const updateTaskEval = async (taskEvalId, updateTaskEvalRequestDTO) => { + try { + const response = await apiClient.patch( + `/evaluations/taskEval/${taskEvalId}`, + updateTaskEvalRequestDTO + ); + return response.data; + } catch (error) { + console.error('과제별 평가 수정 중 에러 발생:', error); + throw error; + } +}; + +// 모든 과제 유형 조회 +export const getAllTaskTypes = async () => { + try { + const response = await apiClient.get(`/evaluations/taskType/allTaskType`); + return response.data; + } catch (error) { + console.error('getAllTaskTypes 에러:', error); + throw error; + } +}; + +// 과제 유형 삭제 함수 +export const deleteTaskTypeById = async (taskTypeId) => { + try { + const response = await apiClient.delete( + `/evaluations/taskType/${taskTypeId}` + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('deleteTaskTypeById 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 개인 과제 항목 리스트 조회 +export const getIndividualTaskItems = async (empId, year, half) => { + try { + const response = await apiClient.get( + `/evaluations/taskItem/individualTasks`, + { + params: { + empId, + year, + half, + }, + } + ); + return response.data; + } catch (error) { + console.error('getIndividualTaskItems 에러:', error); + throw error; + } +}; + +// 부서 과제 항목 리스트 조회 +export const findDepartmentTaskItems = async (year, half, empId) => { + try { + const response = await apiClient.get( + '/evaluations/taskItem/departmentTasks', + { + params: { + year, + half, + empId, + }, + } + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findDepartmentTaskItems 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 과제 생성 +export const createTaskItem = async ( + year, + half, + taskTypeId, + createTaskItemRequestDTO +) => { + try { + const response = await apiClient.post( + `/evaluations/taskItem/taskItemCreation`, + createTaskItemRequestDTO, + { + params: { + year, + half, + taskTypeId, + }, + } + ); + return response.data; + } catch (error) { + console.error('createTaskItem 에러:', error); + throw error; + } +}; + +// 모든 과제 유형에 대한 과제 리스트 조회 +export const findAllTaskItemsByEmpId = async (empId, year, half) => { + try { + const response = await apiClient.get(`/evaluations/taskItem/AllTaskItems`, { + params: { + empId, + year, + half, + }, + }); + return response.data; + } catch (error) { + console.error('findAllTaskItemsByEmpId 에러:', error); + throw error; + } +}; + +// 과제 항목별 평가 생성 +export const createTaskEval = async ( + createTaskEvalRequestDTO, + year, + half, + employeeId +) => { + try { + const response = await apiClient.post( + '/evaluations/taskEval/taskEvalCreation', + createTaskEvalRequestDTO, + { + params: { + year, + half, + employeeId, + }, + } + ); + return response.data; + } catch (error) { + console.error('createTaskEval 에러:', error); + throw error; + } +}; + +// 최종 평가 조회 +export const findFinalGrade = async (empId, year, half) => { + try { + const response = await apiClient.get('/evaluations/evaluation/leader', { + params: { + empId, + year, + half, + }, + }); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findFinalGrade 에러:', error); + throw error; + } +}; + +// 자기 평가 조회 +export const findEvaluationByEmpIdAndYearAndHalf = async ( + year, + half, + empId +) => { + try { + const response = await apiClient.get('/evaluations/evaluation/mine', { + params: { + year: year, + half: half, + empId: empId, + }, + }); + return response.data; + } catch (error) { + console.error('자기 평가 조회 중 에러 발생:', error); + throw error; + } +}; + +// 피드백 생성 +export const createFeedback = async (createFeedbackRequestDTO) => { + try { + const response = await apiClient.post( + '/evaluations/feedback/feedbackCreation', + createFeedbackRequestDTO + ); + return response.data; + } catch (error) { + console.error('피드백 생성 중 에러 발생:', error); + throw error; + } +}; + +// 피드백 조회 +export const findFeedbacks = async (empId, year, half) => { + try { + const response = await apiClient.get('/evaluations/feedback/find', { + params: { + empId, + year, + half, + }, + }); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findFeedbacks 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 피드백 수정 +export const updateFeedback = async (feedbackId, updateFeedbackRequestDTO) => { + try { + const response = await apiClient.patch( + `/evaluations/feedback/${feedbackId}`, + updateFeedbackRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('updateFeedback 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 과제 유형 등록 +export const createTaskType = async (createTaskTypeRequestDTO) => { + try { + const response = await apiClient.post( + `/evaluations/taskType/create`, + createTaskTypeRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('createTaskType 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 모든 과제 유형 조회 +export const findAllTaskTypes = async () => { + try { + const response = await apiClient.get(`/evaluations/taskType/allTaskType`); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findAllTaskTypes 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 년도 및 반기별 평가 등급 리스트 조회 +export const findGradeByYearAndHalf = async (year, half) => { + try { + const response = await apiClient.get(`/evaluations/grade/find`, { + params: { + year, + half, + }, + }); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findGradeByYearAndHalf 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 등급 생성 함수 +export const createGrade = async (createGradeRequestDTO, year, half) => { + try { + const response = await apiClient.post( + `/evaluations/grade/gradeCreation`, + createGradeRequestDTO, + { + params: { + year, + half, + }, + } + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('createGrade 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 등급 수정 함수 +export const updateGrade = async (gradeId, updateGradeRequestDTO) => { + try { + const response = await apiClient.patch( + `/evaluations/grade/${gradeId}`, + updateGradeRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('updateGrade 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가 정책 생성 함수 +export const createEvaluationPolicy = async ( + createEvaluationPolicyRequestDTO +) => { + try { + const response = await apiClient.post( + '/evaluations/evaluationPolicy/policyCreation', + createEvaluationPolicyRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('createEvaluationPolicy 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가 정책 리스트 조회 +export const findEvaluationPolicyByYearAndHalf = async (year, half) => { + try { + const response = await apiClient.get('/evaluations/evaluationPolicy/find', { + params: { + year, + half, + }, + }); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findEvaluationPolicyByYearAndHalf 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가 정책 단건 조회 함수 +export const findEvaluationPolicyById = async (evaluationPolicyId) => { + try { + const response = await apiClient.get( + `/evaluations/evaluationPolicy/${evaluationPolicyId}` + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findEvaluationPolicyById 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가 정책 수정 함수 +export const updateEvaluationPolicy = async ( + evaluationPolicyId, + updateEvaluationPolicyRequestDTO +) => { + try { + const response = await apiClient.patch( + `/evaluations/evaluationPolicy/${evaluationPolicyId}`, + updateEvaluationPolicyRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('updateEvaluationPolicy 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가등급 단건 조회 함수 +export const findGradeByGradeId = async (gradeId) => { + try { + const response = await apiClient.get(`/evaluations/grade/${gradeId}`); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findGradeByGradeId 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; diff --git a/src/api/payroll.js b/src/api/payroll.js new file mode 100644 index 0000000..a82667b --- /dev/null +++ b/src/api/payroll.js @@ -0,0 +1,147 @@ +import apiClient from '@/api/axios'; + +apiClient.defaults.headers.common['Authorization'] = + `Bearer ${localStorage.getItem('accessToken')}`; + +/* 1. 사원별 연월별 급여 명세서 조회 */ +export const getPaymentByEmployeeIdAndYearAndMonth = async ( + eid, + year, + month +) => { + if (!eid || !year || !month) { + throw new Error( + `유효하지 않은 파라미터: eid=${eid}, year=${year}, month=${month}` + ); + } + try { + const response = await apiClient.get(`/payrolls/details/${eid}`, { + params: { year, month }, + }); + return response.data; + } catch (error) { + console.error('getPaymentByEmployeeIdAndYearAndMonth 에러: ', error); + throw error; + } +}; + +export const getPeriodicPayments = async (employeeId, startDate, endDate) => { + if (!employeeId || !startDate || !endDate) { + throw new Error( + `유효하지 않은 파라미터: employeeId=${employeeId}, startMonth=${startDate}, endMonth=${endDate}` + ); + } + try { + const response = await apiClient.get('/payrolls/period', { + params: { employeeId, startDate, endDate }, + }); + return response.data; + } catch (error) { + console.error('getPeriodicPayments 오류: ', error); + throw error; + } +}; + +export const getPaymentsByYear = async (employeeId, year) => { + if (!employeeId || !year) { + throw new Error( + `유효하지 않은 파라미터: employeeId=${employeeId}, year=${year}` + ); + } + try { + const response = await apiClient.get('/payrolls/list', { + params: { employeeId, year }, + }); + return response.data; + } catch (error) { + console.error('getPaymentsByYear 오류: ', error); + throw error; + } +}; + +export const getAllPayments = async (employeeId, page) => { + if (!employeeId || !page) { + throw new Error( + `유효하지 않은 파라미터: employeeId=${employeeId}, page=${page}` + ); + } + try { + const response = await apiClient.get(`/payrolls/all/${employeeId}`, { + params: { page }, + }); + return response.data; + } catch (error) { + console.error('getAllPayments 에러: ', error); + throw error; + } +}; + +export const getEstimateWorkingDays = async (employeeId) => { + if (!employeeId) { + throw new Error(`유효하지 않은 파라미터: employeeId=${employeeId}`); + } + try { + const response = await apiClient.get( + `/severance-pay/estimate/${employeeId}` + ); + return response.data; + } catch (error) { + console.error('getEstimateWorkingDays 에러: ', error); + throw error; + } +}; + +export const calculateSeverancePay = async (employeeId) => { + if (!employeeId) { + throw new Error(`유효하지 않은 파라미터: employeeId=${employeeId}`); + } + try { + const response = await apiClient.get( + `/severance-pay/calculate/${employeeId}` + ); + return response.data; + } catch (error) { + console.error('calculateSeverancePay 에러: ', error); + throw error; + } +}; + +export const createIrregularAllowance = async (formData) => { + try { + const response = await apiClient.post('irregular-allowances', formData); + return response.data; + } catch (error) { + console.error('createIrregularAllowance 오류: ', error); + } +}; + +export const getIrregularAllowance = async (page) => { + try { + const response = await apiClient.get(`/irregular-allowances`, { + params: { page }, + }); + return response.data; + } catch (error) { + console.error('getIrregularAllowance 오류: ', error); + } +}; + +export const getNonTaxablePayrolls = async (page) => { + try { + const response = await apiClient.get('/non-taxable-payrolls', { + params: { page }, + }); + return response.data; + } catch (error) { + console.error('getNonTaxablePayrolls 오류: ', error); + } +}; + +export const createNonTaxable = async (formData) => { + try { + const response = await apiClient.post('/non-taxable-payrolls', formData); + return response.data; + } catch (error) { + console.error('createNonTaxable 오류: ', error); + } +}; diff --git a/src/api/statistics.js b/src/api/statistics.js new file mode 100644 index 0000000..e69de29 diff --git a/src/api/vacation.js b/src/api/vacation.js new file mode 100644 index 0000000..d1bb9f7 --- /dev/null +++ b/src/api/vacation.js @@ -0,0 +1,161 @@ +import apiClient from '@/api/axios'; // Axios 설정이 적용된 apiClient 사용 + +// 1. 휴가 신청 +export const createVacationRequest = async (formData) => { + try { + const response = await apiClient.post(`/vacation-requests`, formData, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + }); + return response.data; + } catch (error) { + console.error('createVacationRequest 에러:', error); + throw error; + } +}; + +// 2. 사원 ID로 휴가 최근 신청 내역 조회 +export const getVacationRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/vacation-requests/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getVacationRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 3. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 휴가 전체 신청 내역 페이지별 조회 +export const getVacationRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/vacation-requests?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getVacationRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 4. 휴가 정책 등록 +export const createVacationPolicy = async (formData) => { + try { + const response = await apiClient.post(`/vacation-policies`, formData); + return response.data; + } catch (error) { + console.error('createVacationPolicy 에러:', error); + throw error; + } +}; + +// 5. 휴가 정책 수정 +export const updateVacationPolicy = async (id, formData) => { + try { + const response = await apiClient.put(`/vacation-policies/${id}`, formData); + return response.data; + } catch (error) { + console.error('updateVacationPolicy 에러:', error); + throw error; + } +}; + +// 6. 연도별 휴가 정책 조회 +export const getVacationPoliciesByYear = async (year) => { + try { + const response = await apiClient.get(`/vacation-policies?year=${year}`); + return response.data; + } catch (error) { + console.error('getVacationPoliciesByYear 에러:', error); + throw error; + } +}; + +// 7. 연도별 비정기 휴가 정책 조회 +export const getIrregularVacationPoliciesByYear = async (year) => { + try { + const response = await apiClient.get( + `/vacation-policies/irregular?year=${year}` + ); + return response.data; + } catch (error) { + console.error('getIrregularVacationPoliciesByYear 에러:', error); + throw error; + } +}; + +// 8. 휴가 종류 조회 +export const getVacationTypes = async () => { + try { + const response = await apiClient.get(`/vacation-types`); + return response.data; + } catch (error) { + console.error('getVacationTypes 에러:', error); + throw error; + } +}; + +// 9. 휴가 지급 +export const createVacation = async (formData) => { + try { + const response = await apiClient.post(`/vacations`, formData); + return response.data; + } catch (error) { + console.error('createVacation 에러:', error); + throw error; + } +}; + +// 10. 사원별 잔여 휴가 조회 +export const getLeftVacationsByEmployeeId = async (eid, page) => { + try { + const response = await apiClient.get( + `/vacations/left?eid=${eid}&page=${page}` + ); + return response.data; + } catch (error) { + console.error('getLeftVacationsByEmployeeId 에러:', error); + throw error; + } +}; + +// 11. 사원별 사용 휴가 조회 +export const getUsedVacationsByEmployeeId = async (eid, page) => { + try { + const response = await apiClient.get( + `/vacations/used?eid=${eid}&page=${page}` + ); + return response.data; + } catch (error) { + console.error('getUsedVacationsByEmployeeId 에러:', error); + throw error; + } +}; + +// 12. 사원별 잔여 휴가 전체 조회 +export const getLeftAllVacationsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get(`/vacations/left-all?eid=${eid}`); + return response.data; + } catch (error) { + console.error('getLeftAllVacationsByEmployeeId 에러:', error); + throw error; + } +}; + +// 13. 휴가 신청 취소 +export const cancelVacationRequest = async (id, formData) => { + try { + const response = await apiClient.patch( + `/vacation-requests/${id}`, + formData + ); + return response.data; + } catch (error) { + console.error('createVacation 에러:', error); + throw error; + } +}; diff --git a/src/assets/Inflow_profile_img.png b/src/assets/Inflow_profile_img.png new file mode 100644 index 0000000000000000000000000000000000000000..f3fbb31f43ad27b4b3676ca612cfcaf8a20b7017 GIT binary patch literal 37363 zcmV)IK)k<+P)8fY)<;(o? z^Tz$l-}@u)Tmg-S1Lqo06aWSOcKF3PM?V0+@OS#J2*;dDpMrlw{7sFoqkiy1P0pul z_$oXn&!S^q&O-t6B>dixd--|XM-lFm-vy+8M;du;nG)LhW-P>^jZ4o{Re!{lot;us}!h{S=Irh`V*Bu~}Rz!d( zim+SEBt?>31RxU#55OisF4x(`b%r#%xQYq*irRa0q7>bD2Zo61B;j%t0*cfM@1Pg? zws(31^hFho25hfGb&vqho9n92iOc3J`1fw^3V^SGZZccjH{_%}QX=oeT6qR1IV8vQ zyO3uGf*>7}Tt;Ykpb0Kvxkyfh4kRE_YzPS(D)~zw1pu$Rq-z1~b4r~#P@c+nZ31t=5yB+bEhsNUkuZ|Hmg`}3P`^TUEm^L{0!i9G({lM+D~DymeZ+n3ER26FK~&mPkrkuYafC^ z4G}ivG+`H=?&0ZJDDUjZj@nen)VkGNhwU`po$9~a)zVAjIyY!NbYz~y5ODx2T+ zMkp>Va2+;MAZ0SMjsEKT==JDc_f&<4>NRrSEBr@jw`sTuVG$M7#RT*1zX!)k>I@@*J z$J?sYm-krTn0M>R0rq&7t|^E#ug}!?w0pS>fEgGdepXXSZtN%ko(tGeU(`y#dW>%? zecd8e z<-&&B3V0N|WKYgXXu?mm_eWMI+Z?XPv&uLJy{_v5A%mH!n=l?{>g=*7MGE3oFq1Py zA$&Shpg?{_r)T)@6y^xkpE2w+L7cRJ~#Z5CslbF?(T<{`#`5G0=9~ zb^x#XO#AL#_l0vMB;ea>gq98HK4(NS*L@!?imT}*A|sIX=>#QA+5G^-d{Nj?G@k?w zP;!=GA^n;Zi1FUSE_~jsS<3};nGXP`SfCLBxrVQ^c*ZERt);tsZ zF4#7IWX@DKUv_P2t}CD_h{?N^8P8bsK-sy%2>Onv*H$Yd)&c`$;kPf+I9$SxWJ*hd zMxbCgni72W6vdWJt6Is04S*`o$1hf-S1f|athU!$VIt%8M9NG8hzv3bDrtdzQQ6}z z@LeiZgQ|6ssrqNib?=wHmWGG%(cI=3&{RKa&4*>cr8;^-k)(j>Y-1uTev zGvNcwE^vv_&yG3mK=+d8$#QissFN0-=^_2=x&f`)g9G!tgz-vqLH#21SQ=mSU9}uA z`&}2VG733byponjjq|>U7AGce&dS+wK#i_jaN~`ygn?!gM#qL>e0&@l4KheIAqTdw1{L7f_t4E& z=$!d&K_1j8v#r3!{CO#xCV41`mcx@>*XUIX(Df9|7#sz}!r`o7;VP1EhUw(Dw?YTF zoXi45z^h8O&Q*ZaKzdaIPUIQ_=`mQ=C#>cwz^A}jbkU@IJj$2odt_tE7WPV-^i9v` zv^SyE+JJQgs$<7qfQKJ^2p)at5mrIWFD}CJ$^rsj2RitBeSICs(WBGZgn@wp7@wGA z?03TrH^D1k`ARr)nZz+_l zsS1A#hdz+pFgCij6jcjArk~3&3}KuyNTa|&pr$l=co8Q$0hPFDRTnf4%pCKkFWRAv zIDrl#_IAD-1j0FedCP${J@9c zt#5rR43CZ?5DtKD`~rGQ6%q4E$Cc@D_GRJ?bhLEow#<=0#}`-&ZDrNzv^3X-535?D z(C1c*L4f<_%{P7tsAAr_d#e~a zJKG2Nh;&}MbOCO^{WkdaH@^;xi}SF$zQ({*6snBXe&l_IhK8W*2+!1P3<%JbP5#?L zez4tcXNyGu=@3z_tSrGpKfWJcdf^3l`l%=3gTM4kaMjgEqUVvpRauL3@638w_TBP% z@dk5VZ?LG)h=9HyJ+B#3(?R0v#7{4Om};+ea5<_LKve;u%KK5HiRZm-uw4=9rjKOK z6(y71q^^nX4;5_dG8l9QU^3|%s-)Gy7KqFAx`W2db_pj>9fObm#h=4{_uLI@%PY`A zVC462$lGS_XZRT&8WzjZKmj8xU<@;W5#Lvq!myJ8pk%(WBUrr{0*AaF0VN%{G=B+h zz4bQ4uus7M@IU@f@Q!!BQ=GvA&z;zj{BQQI&O%>yCU;bD>5PlF`U>qX%r{|WI^lOD z+eU*UsusmA&H|H*dOXE=@}+_mv+vFfv<_Gd{HKeqOWLh}b}Nn5rus92jJv8XO#i$%zRV z7#!d!Az@=?Y8u)IxCDf&E2}*2HUi)3+GP zFCLUUDP!mq6Q^)p#LNvJ_!<1N?3?}!zT;~VZPa`1r(z}Sik@f znOdTXVaz=)k~`?DLdpdW{i=E)FtcPOR)}MY`n@iU>oVX2#pJH2ozT8x+hHT`jqiT< z+wh4`d<>Q^FEFKOHU}B_&}fc8P(pK{3DZ+kOgcT1%OM1`iK!VL?`la=L|*51?ShM!=Hb%CdDQ=n!O-v^V?{bg0A3OwNEp$#;A>z1D*W8L z-wj8Q{{xq3#udI^l#L1qU!1pkf!H!<(ym@aA5jF3-Wvr&(?wtR1aRGpArJ082GEbk ztZfl!^FtN>)e`9L+s&^ifn`@Xs1B|#{&M}#_iCFPEx7BhyAUugVkaH3N;DeGt4)lL zp%N8IE2=`K@H;Eik(WDo-~cO^TL?VENOsSkKgT4vMBpSW*THM(90@9jaHV(I{s95^m zQh^~2*iv#%eFV>yuMcg|Wx4`7wdIvzTf z`_JW@#PXxA#tq2oE~`zwKqLe+UnU#w*zMh0!tvuT!Sl~Qi@?(%Z9NJRLo8r4k$3ZD z3k8W$208*1!g4c{Q;f;(fAGgJw|h6NEH5zz8$@7QT)WKgxY=$o22^T8Qt-gYAOjhZ zuLc5P8-cR)4g82SOn^!=NcZ1;=N<5>TW*05edw2YGn6s`P}g*O^3+w{Pt9@sDU$_^ zAg}>RZDO%rSd7FQMp-7}U{GURV2TV$gY?97B$2-;?Yc;CApus7IrC2%7u_O}X#nPN zVTCL1Q;-15r$N*T7yO@h*~{v{OP3z*olCI{)s1Iv^J0st#Tg|>Yk7G3=_g?R(s>vl zfJ5?0K-Pc&dM2wj>QJNiuqt_lmfE5GH+Ng8fA<{JsXI|$Gl8>_4{Yy`^`J(DD50yF}Kjg58q;l205sZ%Fo#8^G(K^IS` zWVWC3S?62VK^=)}uFN{G3Z(@L91(ERP3n~pwMK!D@<9@DUU@3H&)!=C8bNBp*Fr80Sc3z84lR!Z*J0W&Db~ z*FaN*wbI96rIDc#Aazj(^>~{onUWAOJu}0k^{Rsh5%8v%cRO|Z6x?{j4T$kJP@q^t zYse)S8yCB88|}Xx1Uk|oZf>+0Fv+%yY#wKrAUz@D5-%i?F(8ibp@;8>#~yzW4x!|W zOUzJJ1t>*y)lkpU%uRjk<{=B77gy;&fObTLJ_A5jGJB^1)2a?|kkl_>kuwKT2PqgF zAQvE9*WXMn;v$FzGmoaffMl(R!&8Y%K%lTM?OgV3@-OQpG!#Da%6x5MFnQe_J{zYu z+U+9l^bW56U3Y#TUV7;T#ykXc1b{?#M^S%Ayc|im!^1HNb{rPw=K+R2W5E)oUQ)mKQmi2qDnN@(3)tF3jEF$W z92L$XNyvmLKlACof>+)A8dSX;G4BRx14H^A`E8f{z+D9>V;>b&i|TkAhRsnG4j&1@ zMRoYMnehY83@m(!q!?7%jM}(x@fO(5bQt+RGmxrVy8@N7FK15j^E16@g$(NnGb{_Z z&OWTtWD%@twp(FA-!7ax3t#{0m)Uueg6bfda-ljH3d22C?MW*ceN; zt=2lsFJ6WVmo6fvT!H!dMdTe(Qbys2HV$!rBq^_4UW8Bn)hFN|{iFXK$1+_1!U8v< zsSuQJ-aL_EU9rUL=M18*D_LO7K~X}7?}`igdl{Tbi)n z2J<;&Wl5 z;38T*mJoG^m;;fbaUCd*gfK>fEFuCOaqov$A>_?z#I;CZ_~cV+ceyU4I=MJ$w!7^Ts(8U=#sndTIiOMo=Y!Qt8SX zncLcM;J_ioa(j@c8-q#0kc}ebIiYuNvLHbML%Y>xtjZV^b$N|2mmbfT9S4KO6ilL! zvAJgt9NxE|U9%RJR?xP*2q(^*fsKxbiwjF|83FqnU;7HY@|Cy17-D8H+qMVX$hj&= zlnHJlWeI&a1I#v9T<1&qZ0{o%7_n)y`d}-a+Qm=+QMHIliQWz}-r(a)cy*u-yQWa= z;?hl`N|7g3F(V5%;2@2EIUUSP$@X8x*LS5bjV!B}#3dRUijSeBH9A^_6lOqJQ-E+H<4;+IA@`ufV z;0mP}mgl{R(^UqOCzh^5{o zB-srVOiENvFCck-?BNIDjcZ^*C` zt1jTHYqrmb96@k;Axt3&9!6joVGrbq@ln?Mk?=7z zIE=g@s$-xn4iu1b3dV&82r<(QepcBDd=d#7{K1(lMY`oNX`VZzf5S-XXC?{wcO&V& z4AcchjtwtwFz~(p&2K@VZ^St*l=aBwA_1A5f4h;zd}gLbukuyN*{)le^NB&uD9j@Q zdDUMDD_LUL4F(lDXh!2)zM(9)=6YbDyt%ID=VucFb=g>5*9h&=zL?zy;ADfjERgoS zhQ|HJAA1;Pk%ZlFfnGwj5oxeVZ>@YC(#E0}GIlvL?9R+sFCpp7&uB33)kn@+4fma1QqG z-GjQiL+lns0tBg|2GCYSpCQ6>tZ)t(7sTq~B{e6g=HCZEq%l*HAUWlu%Xt_;nq`WY zKw*P07TI*k8G%S_15w-nei}iFq&^4n{2=l%6JsMN={8UmvkpK0(GL+7w!_*9`F7s* zWd1awu*fcvynCFHpe72*u1RfwvfeO2Zd! zr9Iznv%m-zD3#m;)TW}XYrd=RTw2?> z#=%FQU$E2ATVDRDBFHz>x%6IOO*b2!;?K8qNnN%aDhTcde4| zz>0*l!z!>bYh38N7Hm;r3|IF5+?m)*u z)GjdiiWNi5M7TzIoFZ6lGLxc9f7jMl*iC-->rdyl#Fkak?d2Fn}ZUIc;%6FdWfxwr=S7KzK$HOvoRQoK8u=q3g&&bqqI% zI9j7VadQLCqHk<%@ro} zCA<4AM!pLg+u_ zbIv2vzKJ?GQiY7-!V(|V#szgqIvZYGr)X|E!TW?H(l!ELyCZnD)AoVPdd6&=a@VKW z8RqGN_#i=CO;(o_jREn~X67cDrEN8neXbD$WBw;WV$$Xk!n8>Le)x}*Bfs!w+)3>F2K}id5 z{S-ned_jOd?|bxcO1;q_J1FMNQ9*Zh&6%|FCm$2V81QuuOp75 zf)a_)vV5^gJS5|D`i-{TRv9-u+n0w10&nNx+}X2GrIHp%Xx**;FHy~Ol?x1%==B2N zh104}jml^c&;DArq49J zSS;o;CQ&u(0rRSALlxnmQxirVz9g?R;6;7mxn~f=m7H;4V~wOtG<6|XDa&E*gl4gg zq;C*~08M^G0`2Bz8x-(~6m}TUHo&8)mjwm}G-3W#xDocEp`&KOu57p2X_Wqwm&_WP z)5t4kabc0IA{!eUyfMhfui=vNdIIgllgOhEUA%zO`Z2`5Ef!34j=O;bYW#-HRq7%i z&|7pcbqS#q6_Y1G&bKQtH#1O-5a;6WB!Bb|dJ=L5`O_@8$ElgKJ=(;$#<4*k~eF;n<26Dw0FQS+hv)WwfCw zs*Hf`(&7?axG>M*jV+W&*YG&ma)~7%x2c(3v#@*jZU(;HyZ6Gx%rsgjkhgP)-9l{? z3fSrR7ObzVz!GA(%Q%MlOPAon#fu2oD{%7EDda`ZBR1p#pr6 zEFa@=WdA`pasDX|LLw)Hy4H)@_%3Gzxh@L|f(AgQl#_%+MNc zMU1nud>N)my@H1*-eM4ifL&<%NK4l|h@g*ha9d-m;T z`)&s@;Q8|>5uh$JFp}eGfk3prbQ#I|CdX`$(wH_L0Wj-?E_BsQpN1pKrhUB(`QuF{hAW%F8B^*NFBY<3AU1IFJxv|Q^1Uatmzxry}h2(kw zftS2qmJ!>HqNQbgX^17| zxjzA5mDZ>=rJ2}H3v4-E6P%HP!@G!6btP+2)K<&wdLGL$Z*En#NUs-tR|U&XTgoF- zvhtQag;83he1^@CqD*2F8VrCZo2tq*nid4cn$>-1j^Prs(XCN zdd(qx-pKF(Vn@WNz8Rw4#H(a%d>GcS9|~@QQ1+}cQK|WD%#X`qH0kqv-#+v)P3gp? zYXhpXYC~{E#%R*9V7cW;E}!vjF1xqRq5(aRMjHBI3gA+L;p6%Di@s=1Kt2j>Mb)+Q>INg^g7 zBN93?ff$F>Egiw62M!!WwAz9T2!I4YOsWw8n~crGk8fjr4YAcC10KQ5tKR%-*mvL% zxRysga1mM@At(NR6fL)o*Hdshjg$h(hf&%k>efOaZc=Iw6i{00Ef^RZgueK{*v4k9 z^=wIeyocWU3~J48FN8|P968jDm1TsGG>Y91+BvT2-x!o!*Aa*eZD25cvgfT_9O3DD{O)3hg#$8ffve+h}8@9yeAC zB%RBMb><}zBw{)?ISveRaQQL<+_`h-pjdD$I83ADOA2c0e|hmToIG|Mb&DHt-3>Ru z)Yv$jfBtE>aPAD8xo{CK%%d=Z=Q^CZpaT;qRFJx55wYcg{rg}TS%gI-$?K>Kq}(WO z0|68z-Z9kuz1-_lZCl9-&4{D=To;LLuC@V)I-ew7Zx`fVo)_2WB|!5TQMS*MCu;56 zUZYi9Nn~;j`J;#LxdXngeA(W~3Ako%FYGz67e-N99wg6ZM4f9ZYe;rC@G}B4dv+rxLlw(q z3J_Z1$hfJg2{?QFI6U^~WAK9q9)Jg4K&wlM))Ta99NIUB_bf!;8mGv&~pF+8qjl!K+D+N0KN701^Lo8I`~Npi(U%r`v?Q*(1LUQVHIZysi5X4yOX z^ocX@)HBb)kDh)OX7^nMH{CQ1v#2lJH9Zd39X$*k1olga5l_7I5-Y0r@7)ixbF=(v z7cS0+tPdTOh%Z;-Xn*o1FyVTitZ7@i(FYDme_T;h+?0t8u9ra72YY(xlE5_#k>=9VHqf6%C?D zmPp4@NknjBEUxK;WJ&4T;B+K(CkSszQRX80Y*+Wfu#dSx~iZTmh zW1}4J+s4g7@xKHdgD44e@cB=h=Jsph+0Aa}PNSPqziC5itqpG{(73%TOY^*~@33R9 z!dgU@PGU%$ua|edCBZIXMRIEz93F?OuDOaa+U4anIJ9>UtfD=Y84WMkmll;I)Ikp3 zX~LizgG1xfFn923wz;QwUgO{HOSf4w7WoEEzMA zQkXF500J~crx8OjIXwwuc>Njz^TPZBo60E6l1K=7Sd%$z3dt<-kHj8O3J!91Xh2JV zk6itovPQN z+SQE;>^RJYuC7DM#)PDAXcPe>I7*PRc7(772_2ob@RqdD>}f3V6kIg15Hs4y_%LIm z*}Vth@J%<0U_$1zK>;k^YBRu5rmD@=H33W~7?0yK!uOFu5*9W&TNK5JOwQ~=b<07? z+Y-iAbi_%P_|P`h`9O^8y{O1G*V}A$VRw7SW*9M#xyqct&fB&yXb)sn1AP5J#gJk~ zpS8(TyPpj|o#s6BhzXIPAAJ+m399j~@bzQzQC$=IXp;U8ZKC_eVfy@8n7%ZHSVK}z zuv2Kr07{Mo0}XM#0!~-fVjW-;tsRslp55)+9gfE(g)addId~HGWB@B1*WPG2u}YAW zCiN0SPZ47^@w&~{I%3Zi+!V-Tj*d$~nBei zbTz5bPi=9w(TuGu69+0N*pR4g@?-4Q2=E9mady#; z1Q?Okq!BQwCQ)*la1yZ=kxNd|fdEDskh5lEARO`0vzhgaPSikyM4HJV zp_FvFO?I0Xz#|VCDLY$8&Su7*O-`vnUMr+uB&Sv;x4I@AH{wGk`%?6;bPwLo&n_jP ziE}w~?q}Fm^Oetbn=HTU`)T%kq*@93V7k&7D~zx3TU%oE?z7d5RXs*#_lAstkM-t3 zUEOo^S#>(U&^u-SBroDMv=|X?T7nk#};DT3KCXA!pZ~J*XSpFW9-`gWAfo&9=R{ z&Q=s6?`2uWC^F9RM?g-h95zWJ5Od({7EZf$$6h8qjRC%`SWZ{}Q*R5u696SrUBAt& z%T2hqTN>}*ypUIpl7pQ@&|8HPBtTR^(%%SZLt|sGvc3R&&}wk%>>1XXu`;ytMOG4%g);!!Q@2ui+azB_m76gwl#p?+|XoLre)H$mftx!52A zEV+ZNqa?jX&quY-G-XO%S%vwF7h(3m__ly)=a^1|$ok*6twcc;JW)B8x1A&8D;4tf zc{v#Ej5En^t>*3Xj>v8U7kp5XdZYPEHzau&Z)|RI5f;k9yg~e#gHTCP+@*+rBYv6U zX*&o2D`<^axOf51ojwIi3rjFfB@xK8l02DF{X+cY(xOPhYm0~>ad)q-uCP-8nKLP~ z0Vj|QnGjYkF93Bgik1y3kxEXb4UVdlA~F>B!DSX!miaGXLH2fTNt)iDWZwHsWB98m zNYe$_@6xuHrAoEfu1rEkTqup{Fc{_Kf2Up}3x74KSqHWXJleXiymhK+U_mMg(E^hx zjmRk_{3fE;rU0G}=N5qGpro!~?F$0wDq_9M7th1R3+G{B@iMzb&7u8vap^KN&<4!b z5|n1S`etK|lSC3`U0WvSg!7yb^7NTAjLlY&e9xlggZd}07v}B8OLiL@{5G|I5#wY7V+FG_Uwa~W1*^8u?RW{&FdXqNryu=$*X3W;y)035{9PD*~a&~=GCu(f${OaG@>7=?FKlPuum7Ub=jYE zze_Gv>AYYxr)mPj!8u6oQ{EigY0Df{EB6QXvDb}YB?1r0cYp{FoEb@C4GrPfKAa7<;c~ELwV&)|YP@9W86X~OCI-!8yIxha=!X*TPHK0nn zloodc1(^;4{LJp%FgZI1g9u~`NQ!^_@FVc-voFA&J-ZoEEF!R;L7*edHHIcR;y?H7 zJ%BpD5mtCNnwx0rMP9VC04?mZ!Lh+5V?D|ReR=sZyW{g*;RZVT>RaHz^*7-wRx6hO z1kF|Z=>xcy?7FHif7WM0lakvck-0L!%~nI##ZEOO(=fV#FQl}nn#1zm=wo}^K948l zAbfYw6&&s2iF9CU&t5qD*kf#EAip{iFdD21bd2RX95ncL(;HBfoIS`z9O#-+h zN3Mmvdv_zborFC|u7?m1TV%IIp@^jYMZ|FQx7jBBBJzA2YS3rCfLrL#rg2v>n&WiXO@gJE$pB*!`-PTOF|lsYjiw8MA|7T=?CuxDif0_cVB9+)GyM7Lp&YQA8!YC~-x% z#{TX!Ka{)&$=?MewLYOU=r!=d zbI);%?id2+E(BJVwnv90`@IwHmaG>JmD!V1v#?NJpr~-7<3X@Yd#zKI(tOw!|^6BCamjSk`K1O>4 zRqF`A%fPAuMEUjo8;eASkBrWm+aA6q^001{{&wapdRN#S4!&ahz+U>jU8D zveSZ3xoxu9--=fc)U}$+Z>w01UVS&S4qQTRTGl9G8oh42xMn-oS=C0UAk_C>wfO;T zZxrUv&?�hg!i#YUA3w!Zm2=7@3@dP5euhfXXIeoq=!X)O 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 literal 0 HcmV?d00001 diff --git a/src/assets/admin_default_profile.png b/src/assets/admin_default_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..51f90fc4a4007a452811591c83144e3d4b589c14 GIT binary patch literal 54993 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 HrLq4H1na}4 literal 0 HcmV?d00001 diff --git a/src/assets/company_logo.svg b/src/assets/company_logo.svg new file mode 100644 index 0000000..71d40bd --- /dev/null +++ b/src/assets/company_logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/emp_basic_profile.png b/src/assets/emp_basic_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..876aabfa9fe6d03b9b31b69920beb6c2652b17b8 GIT binary patch literal 2172 zcmdUx`8V5%7QmCS)KXew86`N+8b&*oswxq_w%C^-6Kf-uN-U*F@rb^rPfLv=shRYPy)^4k{7;Qy+LUBh{}y10nva&WQotYQG&-EhGG0_jMTM|&#V z$jZXNlhq)HQPla$o5F+53ePZHlwga?+WD!*!hn%vl%#+w$j#2q#@-S$0eaQ;+E^Wn zmK^g~W37P~E#BHnyI6I=0|BtERVDpbq--^|28BZTE)NS4?Jt-E=qXMbDFLlUwcb2B zx{1FuR6sfWJDL*mFr<_yVy!Q&#K)VHEI1g|&aC?EJQM2C$@ zw;8Jg$Xhynj-J zso0#>94(ps-dupR1L{}i{1w^lLrM^H!*zoOtd(rdHlQxUaz)<1B^%@PoXY9=7{&E{9D#?l*sopw!En%LmOSS&bc%x&iYTR(~ zVzZ^+BlC)I45q zIwf9&n$0~Q4D~ONo=9c`u)O>X(a=nw=BUH8;$^|NoR3Z!a?}`PItknS&zT&5Q%2VJ zEAu!#feeuyS+}+3erz`opt|DFEj@rYS(|RKR$gAN4_}GhKv3Ys3)R~8EgkQ=mRB2x z_L-rHgQOlshxTb&#)JNytGt0AgUOz6dg1^yE&ewBjn%GKn2FB_Mqb8znwwETg|)Un zj2DC||4`T}l^|fex_ijJ_4nT@CEXUTZA;XNL|TjRC5yG+#n?b8<@(Nzjg9T_cz(K$ z0Z_*uM+`WnuU`G1&2l}t_zvzos`F#}8kDf};aKE)$d7}?_{Z}0WJAc!t`qWsFBxWJ zvqS##JOUwwC~}C#hK*sZ9tmyhTJ7dc$O_>~>`w$Dkx0gfnep_PiQaG<_NVu`rC(W) z-4sIgqhYTN-?%skXK2L%vr@{4!k!E_n&3Q+)@~Hbej108Vte#r{5%8qc z`m1)pao|X3RocE5{+uMZ_G=xHjnp41jrgUCMx)i9FpCxrcHO;@s2tmV@hjywJ6$x7 zl$4a3?^aQVu1yrm+dT2{*s2FTH8Ncb*@#o4Pp+-5CJIh$_CnOv)zg&ZcoHWUm#wyp z9uZU$(}XE3EM#f)3ZmO^)h1;K9n>yrFcay}7lP|It6mFmdgyz{uD0ebe>y%mA7`%V zM>MYDKVpo){f03?eR=l;}CU%Je`@{W*6pY zP-ZzN3|uRJwi(hCx^&+XVwZ7=e8mbIx}1CfcgjGssE@MKBl)|88tOD6;Z!jz$|$1Y z^a%HJB1_0f z<+Ra5njFuaqTY{TI9D%tLrqeoi4fk6Yw7Gf`z~+Om8tpPmI9z{u`9;ps&?lXTf@#G zLvO9wmW+wH>SSOKxtv8WM01|jcQS^%p&cIf)XOID3$mQ`um6CkL3w16`nr`pL8}kp z<-NP_gMaK}PkrIO@nSj<89g<9cWS$4+j@W@|M0a zbfkG#>P_;CGIQg*f2t)N{yXrv_;v?n|1W*~j?P4sI7WRUji<_<1(2^-kS7zk`j7tt Df&IE@ literal 0 HcmV?d00001 diff --git a/src/assets/icons/company_icon.png b/src/assets/icons/company_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2b610b662b4943df211f1f907b0966e9b1c53da0 GIT binary patch literal 328 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/fold.png b/src/assets/icons/fold.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5b79beed9f09e6ef5c2e1d37b274e0ced2e117 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!3HD+k8e2&5-9M9EM{Qf76xHPhFNnYfP#$0 zLGDfr>(0r%1aer?9eo`c7&i8E|4C#8^8Gzs978G?r*=E?Iw*Omb70bN zJ8DX`tErl8n#b#noK6w>~E{< cf}Z3{J@VrZn^aX@4m6s<)78&qol`;+0M>9d@Bjb+ literal 0 HcmV?d00001 diff --git a/src/assets/icons/minus_icon.png b/src/assets/icons/minus_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd57918fb7a0e7b8540f5eea85aa89605c0db29 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp@K+MCz1|)ZGH@^v_I14-?iy0WWg+Z8+Vb&Z8pde#$ zkh>GZx^prwfgF}}M_)$E)e-c@N{5hU3jv*C{b0^*9Z8qR(nY-$J35(eR>5?gW z0i~^dK`LSi%r_bYCnPi+U}@(K+~D%V_N9{hH*xpEjwuW_H|)!LBUyj@Di$gwMz2{t z$=OukJ;T1$ZT~FRO)u2dl?|_ZuKMxzGSy!-hnGfriMR^cvc9TaG+n^kp-bK2O6;zC zXC*Ed2FzwvcCe8vlhLlfSlh3$0eK431zU^G{Jm&V(z;XrpXc)I$ztaD0e F0szz#Tj&4) literal 0 HcmV?d00001 diff --git a/src/assets/icons/plus_icon.png b/src/assets/icons/plus_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f4c5f436667a6c8c04f99f5022e697794fbb8f GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<1|;p3UCV(KXMsm#F#`j)FbFd;%$g$s6l5$8 za(7}_cTVOdki(Mh=@nvLV`+2790NyovFV?ER&0AJRQga=fA79;U)Nn{+QPcf zPvGK0MFqbOIYaejP940j)to(aCc3+oSROX7=@F^exWcJFX@46ma+uiXiSh>!itnI?FVdQ&MBb@0G?xjj{pDw literal 0 HcmV?d00001 diff --git a/src/assets/icons/unfold.png b/src/assets/icons/unfold.png new file mode 100644 index 0000000000000000000000000000000000000000..78e14ea348b7b42a0e442594dc29492b2354e67c GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3HF!2OrA@2^4rl7Bet#3xhBt!>l*8o|0J>k`4OHjjv*C{xxJ3O4F&=%vlA9r9AM(hVr6~6 zpsVq)x67+R-G0WThm0>(i)Y`y`^4#oAN%U4xh&Q(S--^H4(H6+yL`Jr_7w9#{VMyT mZC4MoG0&OSrFY>_A#>0vq0R0;DlP%-VDNPHb6Mw<&;$Ti`#fO) literal 0 HcmV?d00001 diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/src/assets/main.css b/src/assets/main.css new file mode 100644 index 0000000..e0b1bc5 --- /dev/null +++ b/src/assets/main.css @@ -0,0 +1,133 @@ +/* Noto Sans KR 글꼴을 import */ +@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); + +:root { + font-size: 10px; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: inherit; +} + +html, +body { + width: 100%; + height: 100%; + font-size: 100%; + font-family: 'Noto Sans KR', sans-serif, 'inter'; +} + +button, +input, +textarea, +select { + font: inherit; /* 폰트 스타일 상속 */ + color: inherit; + background: none; + border: none; + outline: none; + padding: 0; + margin: 0; + appearance: none; /* 브라우저 기본 스타일 제거 */ +} + +ul, +ol { + list-style: none; /* 리스트 스타일 제거 */ +} + +a { + text-decoration: none; /* 링크 밑줄 제거 */ + color: inherit; /* 부모 색상 상속 */ +} + +img, +video { + max-width: 100%; + height: auto; /* 반응형 크기 */ + display: block; +} + +table { + border-collapse: collapse; /* 테이블 경계선 겹치기 제거 */ + border-spacing: 0; +} + +blockquote, +q { + quotes: none; /* 인용 부호 제거 */ +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; +} + +button { + cursor: pointer; /* 버튼 기본 커서 설정 */ + background: transparent; /* 기본 배경 제거 */ +} + +pre[class*='language-'] { + border-radius: 0.6rem; +} + +@media screen and (max-width: 1600px) { + :root { + font-size: 9.5px; + } +} + +@media screen and (max-width: 1400px) { + :root { + font-size: 9px; + } +} + +@media screen and (max-width: 1200px) { + :root { + font-size: 8.5px; + } +} + +@media screen and (max-width: 1000px) { + :root { + font-size: 8px; + } +} + +@media screen and (max-width: 800px) { + :root { + font-size: 7.5px; + } +} + +@media screen and (max-width: 600px) { + :root { + font-size: 7px; + } +} + +@media screen and (max-width: 400px) { + :root { + font-size: 6px; + } +} + +@media screen and (max-width: 350px) { + :root { + font-size: 5.5px; + } +} + +@media screen and (max-width: 300px) { + :root { + font-size: 5px; + } +} diff --git a/src/components/attendance/CancelRequestModal.vue b/src/components/attendance/CancelRequestModal.vue new file mode 100644 index 0000000..7c1cebe --- /dev/null +++ b/src/components/attendance/CancelRequestModal.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/src/components/buttons/ArrowLeftButton.vue b/src/components/buttons/ArrowLeftButton.vue new file mode 100644 index 0000000..fa23094 --- /dev/null +++ b/src/components/buttons/ArrowLeftButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/ArrowUpButton.vue b/src/components/buttons/ArrowUpButton.vue new file mode 100644 index 0000000..eb27333 --- /dev/null +++ b/src/components/buttons/ArrowUpButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/CaretLeftButton.vue b/src/components/buttons/CaretLeftButton.vue new file mode 100644 index 0000000..4ad8566 --- /dev/null +++ b/src/components/buttons/CaretLeftButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/CaretRightButton.vue b/src/components/buttons/CaretRightButton.vue new file mode 100644 index 0000000..9977a18 --- /dev/null +++ b/src/components/buttons/CaretRightButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/CheckButton.vue b/src/components/buttons/CheckButton.vue new file mode 100644 index 0000000..3c09c1c --- /dev/null +++ b/src/components/buttons/CheckButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/ChevronLeftButton.vue b/src/components/buttons/ChevronLeftButton.vue new file mode 100644 index 0000000..174e61a --- /dev/null +++ b/src/components/buttons/ChevronLeftButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/ChevronRightButton.vue b/src/components/buttons/ChevronRightButton.vue new file mode 100644 index 0000000..6b61642 --- /dev/null +++ b/src/components/buttons/ChevronRightButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/CopyButton.vue b/src/components/buttons/CopyButton.vue new file mode 100644 index 0000000..d783065 --- /dev/null +++ b/src/components/buttons/CopyButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/HomeButton.vue b/src/components/buttons/HomeButton.vue new file mode 100644 index 0000000..7118039 --- /dev/null +++ b/src/components/buttons/HomeButton.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/buttons/MoreListButton.vue b/src/components/buttons/MoreListButton.vue new file mode 100644 index 0000000..22e432a --- /dev/null +++ b/src/components/buttons/MoreListButton.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/components/buttons/SearchButton.vue b/src/components/buttons/SearchButton.vue new file mode 100644 index 0000000..1c6242e --- /dev/null +++ b/src/components/buttons/SearchButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/SettingButton.vue b/src/components/buttons/SettingButton.vue new file mode 100644 index 0000000..598fd62 --- /dev/null +++ b/src/components/buttons/SettingButton.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/components/buttons/XmarkButton.vue b/src/components/buttons/XmarkButton.vue new file mode 100644 index 0000000..b8ed605 --- /dev/null +++ b/src/components/buttons/XmarkButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/common/BubbleBackground.vue b/src/components/common/BubbleBackground.vue new file mode 100644 index 0000000..4c5b62f --- /dev/null +++ b/src/components/common/BubbleBackground.vue @@ -0,0 +1,148 @@ + + + diff --git a/src/components/common/ChangeMonthComponent.vue b/src/components/common/ChangeMonthComponent.vue new file mode 100644 index 0000000..b3a0c6c --- /dev/null +++ b/src/components/common/ChangeMonthComponent.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/components/common/ChangeYearComponent.vue b/src/components/common/ChangeYearComponent.vue new file mode 100644 index 0000000..abbc9e8 --- /dev/null +++ b/src/components/common/ChangeYearComponent.vue @@ -0,0 +1,74 @@ + + + + diff --git a/src/components/common/CheckCircle.vue b/src/components/common/CheckCircle.vue new file mode 100644 index 0000000..a80e53f --- /dev/null +++ b/src/components/common/CheckCircle.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/components/common/CommonArticle.vue b/src/components/common/CommonArticle.vue new file mode 100644 index 0000000..c0b2f6a --- /dev/null +++ b/src/components/common/CommonArticle.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/src/components/common/CommonHeader.vue b/src/components/common/CommonHeader.vue new file mode 100644 index 0000000..c8194a3 --- /dev/null +++ b/src/components/common/CommonHeader.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/components/common/CommonMenu.vue b/src/components/common/CommonMenu.vue new file mode 100644 index 0000000..37e65e5 --- /dev/null +++ b/src/components/common/CommonMenu.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/common/CommonNav.vue b/src/components/common/CommonNav.vue new file mode 100644 index 0000000..d4aa3a3 --- /dev/null +++ b/src/components/common/CommonNav.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/components/common/CompanyLogo.vue b/src/components/common/CompanyLogo.vue new file mode 100644 index 0000000..749396d --- /dev/null +++ b/src/components/common/CompanyLogo.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/common/CompanyName.vue b/src/components/common/CompanyName.vue new file mode 100644 index 0000000..115d965 --- /dev/null +++ b/src/components/common/CompanyName.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/components/common/DepartmentMemberInfoComponent.vue b/src/components/common/DepartmentMemberInfoComponent.vue new file mode 100644 index 0000000..a4d1738 --- /dev/null +++ b/src/components/common/DepartmentMemberInfoComponent.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/src/components/common/FileItem.vue b/src/components/common/FileItem.vue new file mode 100644 index 0000000..d638864 --- /dev/null +++ b/src/components/common/FileItem.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/components/common/InfoCircle.vue b/src/components/common/InfoCircle.vue new file mode 100644 index 0000000..832ed2d --- /dev/null +++ b/src/components/common/InfoCircle.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/components/common/LoadingOverlay.vue b/src/components/common/LoadingOverlay.vue new file mode 100644 index 0000000..b3c353a --- /dev/null +++ b/src/components/common/LoadingOverlay.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/components/common/LoginSection.vue b/src/components/common/LoginSection.vue new file mode 100644 index 0000000..a7b3f72 --- /dev/null +++ b/src/components/common/LoginSection.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/src/components/common/MyInfoComponent.vue b/src/components/common/MyInfoComponent.vue new file mode 100644 index 0000000..427d448 --- /dev/null +++ b/src/components/common/MyInfoComponent.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/components/common/PaginationComponent.vue b/src/components/common/PaginationComponent.vue new file mode 100644 index 0000000..ab1e974 --- /dev/null +++ b/src/components/common/PaginationComponent.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/components/common/SearchEmployeeComponent.vue b/src/components/common/SearchEmployeeComponent.vue new file mode 100644 index 0000000..3cfe923 --- /dev/null +++ b/src/components/common/SearchEmployeeComponent.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/common/SelectAppTypeComponent.vue b/src/components/common/SelectAppTypeComponent.vue new file mode 100644 index 0000000..26fcf81 --- /dev/null +++ b/src/components/common/SelectAppTypeComponent.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/src/components/common/SelectPeriodComponent.vue b/src/components/common/SelectPeriodComponent.vue new file mode 100644 index 0000000..37dbd14 --- /dev/null +++ b/src/components/common/SelectPeriodComponent.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/src/components/common/SelectYearMonthComponent.vue b/src/components/common/SelectYearMonthComponent.vue new file mode 100644 index 0000000..5c87cfe --- /dev/null +++ b/src/components/common/SelectYearMonthComponent.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/components/dropdowns/AccountDropdown.vue b/src/components/dropdowns/AccountDropdown.vue new file mode 100644 index 0000000..2d5d0c7 --- /dev/null +++ b/src/components/dropdowns/AccountDropdown.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/components/dropdowns/AppointmentHisDropDown.vue b/src/components/dropdowns/AppointmentHisDropDown.vue new file mode 100644 index 0000000..15db790 --- /dev/null +++ b/src/components/dropdowns/AppointmentHisDropDown.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/components/dropdowns/DateDropDown.vue b/src/components/dropdowns/DateDropDown.vue new file mode 100644 index 0000000..63bdd67 --- /dev/null +++ b/src/components/dropdowns/DateDropDown.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/components/dropdowns/DisciplineRewardTypeDropDown.vue b/src/components/dropdowns/DisciplineRewardTypeDropDown.vue new file mode 100644 index 0000000..fa84eca --- /dev/null +++ b/src/components/dropdowns/DisciplineRewardTypeDropDown.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/components/dropdowns/DropdownItem.vue b/src/components/dropdowns/DropdownItem.vue new file mode 100644 index 0000000..8258410 --- /dev/null +++ b/src/components/dropdowns/DropdownItem.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/components/dropdowns/HalfDropdown.vue b/src/components/dropdowns/HalfDropdown.vue new file mode 100644 index 0000000..bd82bf9 --- /dev/null +++ b/src/components/dropdowns/HalfDropdown.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/dropdowns/PeriodDropDown.vue b/src/components/dropdowns/PeriodDropDown.vue new file mode 100644 index 0000000..cbc74f4 --- /dev/null +++ b/src/components/dropdowns/PeriodDropDown.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/dropdowns/ThirtyMinuteDropDown.vue b/src/components/dropdowns/ThirtyMinuteDropDown.vue new file mode 100644 index 0000000..dfe5e86 --- /dev/null +++ b/src/components/dropdowns/ThirtyMinuteDropDown.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/components/dropdowns/TimeDropDown.vue b/src/components/dropdowns/TimeDropDown.vue new file mode 100644 index 0000000..e5d4e25 --- /dev/null +++ b/src/components/dropdowns/TimeDropDown.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/components/dropdowns/YearDropDown.vue b/src/components/dropdowns/YearDropDown.vue new file mode 100644 index 0000000..17505c7 --- /dev/null +++ b/src/components/dropdowns/YearDropDown.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/src/components/dropdowns/YearMonthDropDown.vue b/src/components/dropdowns/YearMonthDropDown.vue new file mode 100644 index 0000000..a12c5ae --- /dev/null +++ b/src/components/dropdowns/YearMonthDropDown.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/components/employee-search/DepartmentHeirarchy.vue b/src/components/employee-search/DepartmentHeirarchy.vue new file mode 100644 index 0000000..66adb12 --- /dev/null +++ b/src/components/employee-search/DepartmentHeirarchy.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/employee-search/EmployeeDetail.vue b/src/components/employee-search/EmployeeDetail.vue new file mode 100644 index 0000000..5a1e6fe --- /dev/null +++ b/src/components/employee-search/EmployeeDetail.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/src/components/employee-search/EmployeeList.vue b/src/components/employee-search/EmployeeList.vue new file mode 100644 index 0000000..27994c5 --- /dev/null +++ b/src/components/employee-search/EmployeeList.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/src/components/employee-search/SearchBar.vue b/src/components/employee-search/SearchBar.vue new file mode 100644 index 0000000..aebd281 --- /dev/null +++ b/src/components/employee-search/SearchBar.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/components/employee-search/TreeNode.vue b/src/components/employee-search/TreeNode.vue new file mode 100644 index 0000000..c222fdf --- /dev/null +++ b/src/components/employee-search/TreeNode.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/components/icons/AddressBookIcon.vue b/src/components/icons/AddressBookIcon.vue new file mode 100644 index 0000000..ad5cb1d --- /dev/null +++ b/src/components/icons/AddressBookIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ArrowLeftIcon.vue b/src/components/icons/ArrowLeftIcon.vue new file mode 100644 index 0000000..c5ad9fd --- /dev/null +++ b/src/components/icons/ArrowLeftIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ArrowUpIcon.vue b/src/components/icons/ArrowUpIcon.vue new file mode 100644 index 0000000..36cbe50 --- /dev/null +++ b/src/components/icons/ArrowUpIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/BuildingIcon.vue b/src/components/icons/BuildingIcon.vue new file mode 100644 index 0000000..3ab36b2 --- /dev/null +++ b/src/components/icons/BuildingIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CaretDownIcon.vue b/src/components/icons/CaretDownIcon.vue new file mode 100644 index 0000000..9ed8999 --- /dev/null +++ b/src/components/icons/CaretDownIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CaretLeftIcon.vue b/src/components/icons/CaretLeftIcon.vue new file mode 100644 index 0000000..fdf45f6 --- /dev/null +++ b/src/components/icons/CaretLeftIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CaretRightIcon.vue b/src/components/icons/CaretRightIcon.vue new file mode 100644 index 0000000..d42ae24 --- /dev/null +++ b/src/components/icons/CaretRightIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CaretUpIcon.vue b/src/components/icons/CaretUpIcon.vue new file mode 100644 index 0000000..83e5349 --- /dev/null +++ b/src/components/icons/CaretUpIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChartIcon.vue b/src/components/icons/ChartIcon.vue new file mode 100644 index 0000000..b31e930 --- /dev/null +++ b/src/components/icons/ChartIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CheckIcon.vue b/src/components/icons/CheckIcon.vue new file mode 100644 index 0000000..f902b59 --- /dev/null +++ b/src/components/icons/CheckIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChevronDownIcon.vue b/src/components/icons/ChevronDownIcon.vue new file mode 100644 index 0000000..3899799 --- /dev/null +++ b/src/components/icons/ChevronDownIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChevronLeftIcon.vue b/src/components/icons/ChevronLeftIcon.vue new file mode 100644 index 0000000..603348a --- /dev/null +++ b/src/components/icons/ChevronLeftIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChevronRightIcon.vue b/src/components/icons/ChevronRightIcon.vue new file mode 100644 index 0000000..5d365af --- /dev/null +++ b/src/components/icons/ChevronRightIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChevronUpIcon.vue b/src/components/icons/ChevronUpIcon.vue new file mode 100644 index 0000000..25819d0 --- /dev/null +++ b/src/components/icons/ChevronUpIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ClockIcon.vue b/src/components/icons/ClockIcon.vue new file mode 100644 index 0000000..3c5f1af --- /dev/null +++ b/src/components/icons/ClockIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CopyIcon.vue b/src/components/icons/CopyIcon.vue new file mode 100644 index 0000000..574c072 --- /dev/null +++ b/src/components/icons/CopyIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/EvaluationIcon.vue b/src/components/icons/EvaluationIcon.vue new file mode 100644 index 0000000..943e9dc --- /dev/null +++ b/src/components/icons/EvaluationIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ExcelIcon.vue b/src/components/icons/ExcelIcon.vue new file mode 100644 index 0000000..976af3d --- /dev/null +++ b/src/components/icons/ExcelIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/FolderCloseIcon.vue b/src/components/icons/FolderCloseIcon.vue new file mode 100644 index 0000000..2ff6f3d --- /dev/null +++ b/src/components/icons/FolderCloseIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/FolerOpenIcon.vue b/src/components/icons/FolerOpenIcon.vue new file mode 100644 index 0000000..cb4405f --- /dev/null +++ b/src/components/icons/FolerOpenIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/GearIcon.vue b/src/components/icons/GearIcon.vue new file mode 100644 index 0000000..c40fc8e --- /dev/null +++ b/src/components/icons/GearIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/HomeIcon.vue b/src/components/icons/HomeIcon.vue new file mode 100644 index 0000000..e21b6a2 --- /dev/null +++ b/src/components/icons/HomeIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/MenuIcon.vue b/src/components/icons/MenuIcon.vue new file mode 100644 index 0000000..70951de --- /dev/null +++ b/src/components/icons/MenuIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/MinusIcon.vue b/src/components/icons/MinusIcon.vue new file mode 100644 index 0000000..80f5269 --- /dev/null +++ b/src/components/icons/MinusIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/PaperClipIcon.vue b/src/components/icons/PaperClipIcon.vue new file mode 100644 index 0000000..a8a6818 --- /dev/null +++ b/src/components/icons/PaperClipIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/PlusIcon.vue b/src/components/icons/PlusIcon.vue new file mode 100644 index 0000000..37ebc1c --- /dev/null +++ b/src/components/icons/PlusIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/QuestionIcon.vue b/src/components/icons/QuestionIcon.vue new file mode 100644 index 0000000..8dafcb5 --- /dev/null +++ b/src/components/icons/QuestionIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/RobotIcon.vue b/src/components/icons/RobotIcon.vue new file mode 100644 index 0000000..b1619cd --- /dev/null +++ b/src/components/icons/RobotIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/SearchIcon.vue b/src/components/icons/SearchIcon.vue new file mode 100644 index 0000000..0c761a8 --- /dev/null +++ b/src/components/icons/SearchIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/UserIcon.vue b/src/components/icons/UserIcon.vue new file mode 100644 index 0000000..eb0a86a --- /dev/null +++ b/src/components/icons/UserIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/XmarkIcon.vue b/src/components/icons/XmarkIcon.vue new file mode 100644 index 0000000..4c5b424 --- /dev/null +++ b/src/components/icons/XmarkIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/modals/CrudModal.vue b/src/components/modals/CrudModal.vue new file mode 100644 index 0000000..26a2fd4 --- /dev/null +++ b/src/components/modals/CrudModal.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/components/modals/ModalBackground.vue b/src/components/modals/ModalBackground.vue new file mode 100644 index 0000000..5fe20de --- /dev/null +++ b/src/components/modals/ModalBackground.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/src/components/modals/ModalItem.vue b/src/components/modals/ModalItem.vue new file mode 100644 index 0000000..d4752e0 --- /dev/null +++ b/src/components/modals/ModalItem.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/components/modals/NoticeModal.vue b/src/components/modals/NoticeModal.vue new file mode 100644 index 0000000..4b47185 --- /dev/null +++ b/src/components/modals/NoticeModal.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/components/modals/ResetPasswordModal.vue b/src/components/modals/ResetPasswordModal.vue new file mode 100644 index 0000000..e4cfa60 --- /dev/null +++ b/src/components/modals/ResetPasswordModal.vue @@ -0,0 +1,268 @@ + + + + + + diff --git a/src/components/modals/SettingModal.vue b/src/components/modals/SettingModal.vue new file mode 100644 index 0000000..c9e3f0b --- /dev/null +++ b/src/components/modals/SettingModal.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/components/nav/MenuNav.vue b/src/components/nav/MenuNav.vue new file mode 100644 index 0000000..12fb9ae --- /dev/null +++ b/src/components/nav/MenuNav.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/nav/MonthSelectNav.vue b/src/components/nav/MonthSelectNav.vue new file mode 100644 index 0000000..ae4995f --- /dev/null +++ b/src/components/nav/MonthSelectNav.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/src/components/nav/SubMenuNav.vue b/src/components/nav/SubMenuNav.vue new file mode 100644 index 0000000..4a60c60 --- /dev/null +++ b/src/components/nav/SubMenuNav.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/components/salarytable/SalaryTable.vue b/src/components/salarytable/SalaryTable.vue new file mode 100644 index 0000000..83b308e --- /dev/null +++ b/src/components/salarytable/SalaryTable.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/src/components/semantic/ArticleItem.vue b/src/components/semantic/ArticleItem.vue new file mode 100644 index 0000000..2f14d45 --- /dev/null +++ b/src/components/semantic/ArticleItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/ButtonItem.vue b/src/components/semantic/ButtonItem.vue new file mode 100644 index 0000000..2db09a6 --- /dev/null +++ b/src/components/semantic/ButtonItem.vue @@ -0,0 +1,83 @@ + + + diff --git a/src/components/semantic/FigcaptionItem.vue b/src/components/semantic/FigcaptionItem.vue new file mode 100644 index 0000000..78c5d1a --- /dev/null +++ b/src/components/semantic/FigcaptionItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/FigureItem.vue b/src/components/semantic/FigureItem.vue new file mode 100644 index 0000000..ab25b01 --- /dev/null +++ b/src/components/semantic/FigureItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/FlexItem.vue b/src/components/semantic/FlexItem.vue new file mode 100644 index 0000000..b8389f2 --- /dev/null +++ b/src/components/semantic/FlexItem.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/components/semantic/FooterItem.vue b/src/components/semantic/FooterItem.vue new file mode 100644 index 0000000..3de7e4e --- /dev/null +++ b/src/components/semantic/FooterItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/GridItem.vue b/src/components/semantic/GridItem.vue new file mode 100644 index 0000000..176c63b --- /dev/null +++ b/src/components/semantic/GridItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/HeaderItem.vue b/src/components/semantic/HeaderItem.vue new file mode 100644 index 0000000..1e96192 --- /dev/null +++ b/src/components/semantic/HeaderItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/LiItem.vue b/src/components/semantic/LiItem.vue new file mode 100644 index 0000000..4f0abef --- /dev/null +++ b/src/components/semantic/LiItem.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/components/semantic/MainItem.vue b/src/components/semantic/MainItem.vue new file mode 100644 index 0000000..1a8d959 --- /dev/null +++ b/src/components/semantic/MainItem.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/components/semantic/NavItem.vue b/src/components/semantic/NavItem.vue new file mode 100644 index 0000000..fb040f7 --- /dev/null +++ b/src/components/semantic/NavItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/SectionItem.vue b/src/components/semantic/SectionItem.vue new file mode 100644 index 0000000..ae23499 --- /dev/null +++ b/src/components/semantic/SectionItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/TableCell.vue b/src/components/semantic/TableCell.vue new file mode 100644 index 0000000..7b9a5f6 --- /dev/null +++ b/src/components/semantic/TableCell.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/components/semantic/TableItem.vue b/src/components/semantic/TableItem.vue new file mode 100644 index 0000000..4fa6bb3 --- /dev/null +++ b/src/components/semantic/TableItem.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/semantic/TableRow.vue b/src/components/semantic/TableRow.vue new file mode 100644 index 0000000..bee4b64 --- /dev/null +++ b/src/components/semantic/TableRow.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/components/semantic/UlItem.vue b/src/components/semantic/UlItem.vue new file mode 100644 index 0000000..39ccb29 --- /dev/null +++ b/src/components/semantic/UlItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/widgets/MyAttendanceWidget.vue b/src/components/widgets/MyAttendanceWidget.vue new file mode 100644 index 0000000..9d2ac7a --- /dev/null +++ b/src/components/widgets/MyAttendanceWidget.vue @@ -0,0 +1,182 @@ + + + diff --git a/src/components/widgets/MyScheduleWidget.vue b/src/components/widgets/MyScheduleWidget.vue new file mode 100644 index 0000000..26c2f01 --- /dev/null +++ b/src/components/widgets/MyScheduleWidget.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src/components/widgets/MyTeamMemberWidget.vue b/src/components/widgets/MyTeamMemberWidget.vue new file mode 100644 index 0000000..d5b9a75 --- /dev/null +++ b/src/components/widgets/MyTeamMemberWidget.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/components/widgets/ScheduleDdayWidget.vue b/src/components/widgets/ScheduleDdayWidget.vue new file mode 100644 index 0000000..d0b20d1 --- /dev/null +++ b/src/components/widgets/ScheduleDdayWidget.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/components/widgets/WidgetItem.vue b/src/components/widgets/WidgetItem.vue new file mode 100644 index 0000000..9f51517 --- /dev/null +++ b/src/components/widgets/WidgetItem.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/main.js b/src/main.js index 01433bc..a6eb25d 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,17 @@ -import { createApp } from 'vue' -import App from './App.vue' +import './assets/main.css'; -createApp(App).mount('#app') +import { createApp } from 'vue'; +import { createPinia } from 'pinia'; + +import App from './App.vue'; +import router from './router'; + +// import '@fortawesome/fontawesome-free/css/all.css'; +// import '@fortawesome/fontawesome-free/js/all.js'; + +const app = createApp(App); + +app.use(createPinia()); +app.use(router); + +app.mount('#app'); \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..df8e87e --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,661 @@ +import { createRouter, createWebHistory } from 'vue-router'; +import HomeView from '../views/home/HomeView.vue'; +import ChatbotView from '@/views/chatbot/ChatbotView.vue'; +import MyInfoView from '@/views/hr-basic/MyInfoView.vue'; +import AttendanceView from '@/views/hr-basic/AttendanceView.vue'; +import SalaryView from '@/views/hr-basic/SalaryView.vue'; +import ContractView from '@/views/hr-basic/ContractView.vue'; +import PersonalEvalView from '@/views/evaluation/PersonalEvalView.vue'; +import PersonalEvalFindView from '@/views/evaluation/PersonalEvalFindView.vue'; +import PersonalEvalCreateAndFindView from '@/views/evaluation/PersonalEvalCreateAndFindView.vue'; +import FeedbackManageView from '@/views/evaluation/leader/FeedbackManageView.vue'; +import LeaderEvalListView from '@/views/evaluation/leader/LeaderEvalListView.vue'; +import LeaderEvalView from '@/views/evaluation/LeaderEvalView.vue'; +import EvalTaskView from '@/views/evaluation/EvalTaskView.vue'; +import EvalTypeManagementView from '@/views/evaluation/EvalTypeManagementView.vue'; +import EvalPolicyView from '@/views/evaluation/EvalPolicyView.vue'; +import EvalGradeView from '@/views/evaluation/EvalGradeView.vue'; +import EmployeeInfoView from '@/views/hr-management/EmployeeInfoView.vue'; +import EmployeeUploadView from '@/views/hr-management/EmployeeUploadView.vue'; +import DepartmentManagementView from '@/views/hr-management/DepartmentManagementView .vue'; +import AppointmentManagementView from '@/views/hr-management/AppointmentManagementView.vue'; +import VacationManagementView from '@/views/hr-management/VacationManagementView.vue'; +import EmployeeSearchView from '@/views/emp-search/EmployeeSearchView.vue'; +import LoginView from '@/views/login/LoginView.vue'; +import CommuteView from '@/views/hr-basic/attendance/CommuteView.vue'; +import RemoteView from '@/views/hr-basic/attendance/RemoteView.vue'; +import OvertimeView from '@/views/hr-basic/attendance/OvertimeView.vue'; +import LeaveView from '@/views/hr-basic/attendance/LeaveView.vue'; +import ReturnView from '@/views/hr-basic/attendance/ReturnView.vue'; +import BusinessTripView from '@/views/hr-basic/attendance/BusinessTripView.vue'; +import DispatchView from '@/views/hr-basic/attendance/DispatchView.vue'; +import VacationView from '@/views/hr-basic/attendance/VacationView.vue'; +import VacationPaymentView from '@/views/hr-management/vacation/VacationPaymentView.vue'; +import VacationPolicyView from '@/views/hr-management/vacation/VacationPolicyView.vue'; +import CareerInfoUploadView from '@/views/hr-management/employee-upload/CareerInfoUploadView.vue'; +import EducationInfoUploadView from '@/views/hr-management/employee-upload/EducationInfoUploadView.vue'; +import QualificationInfoUploadView from '@/views/hr-management/employee-upload/QualificationInfoUploadView.vue'; +import LanguageTestInfoUploadView from '@/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue'; +import DisciplineRewardInfoUploadView from '@/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue'; +import FamilyMemberInfoUploadView from '@/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue'; +import MyDepartmentView from '@/views/hr-basic/MyDepartmentView.vue'; +import EmployeeInfoUploadView from '@/views/hr-management/employee-upload/EmployeeInfoUploadView.vue'; +import RemoteRequestsView from '@/views/hr-basic/attendance/RemoteRequestsView.vue'; +import OvertimeRequestsView from '@/views/hr-basic/attendance/OvertimeRequestsView.vue'; +import VacationRequestsView from '@/views/hr-basic/attendance/VacationRequestsView.vue'; +import LeaveRequestsView from '@/views/hr-basic/attendance/LeaveRequestsView.vue'; +import ReturnRequestsView from '@/views/hr-basic/attendance/ReturnRequestsView.vue'; +import BusinessTripRequestsView from '@/views/hr-basic/attendance/BusinessTripRequestsView.vue'; +import DispatchRequestsView from '@/views/hr-basic/attendance/DispatchRequestsView.vue'; +import SalaryManagementView from '@/views/hr-management/SalaryManagementView.vue'; +import AppointmentsUploadView from '@/views/hr-management/appointment/AppointmentUploadView.vue'; +import AppointmentsHistoryView from '@/views/hr-management/appointment/AppointmentHistoryView.vue'; +import SalaryDetailView from '@/views/hr-basic/salary/SalaryDetailView.vue'; +import SalaryListView from '@/views/hr-basic/salary/SalaryListView.vue'; +import SeverancePayView from '@/views/hr-basic/salary/SeverancePayView.vue'; + +// 인사기본- 사원 +import ProfileView from '@/views/hr-basic/employee/ProfileView.vue'; +import DisciplineRewardInfoView from '@/views/hr-basic/employee/DisciplineRewardInfoView.vue'; +import EducationInfoView from '@/views/hr-basic/employee/EducationInfoView.vue'; +import FamilyMemberInfoView from '@/views/hr-basic/employee/FamilyMemberInfoView.vue'; +import LanguageTestInfoView from '@/views/hr-basic/employee/LanguageTestInfoView.vue'; +import QualificationInfoView from '@/views/hr-basic/employee/QualificationInfoView.vue'; +import QualificationInfoUpdateView from '@/views/hr-basic/employee/QualificationInfoUpdateView.vue'; +import LanguageTestInfoUpdateView from '@/views/hr-basic/employee/LanguageTestInfoUpdateView.vue'; +import FamilyMemberInfoUpdateView from '@/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue'; +import CareerInfoView from '@/views/hr-basic/employee/CareerInfoVIew.vue'; +import CareerInfoUpdateView from '@/views/hr-basic/employee/CareerInfoUpdateVIew.vue'; +import EducationInfoUpdateView from '@/views/hr-basic/employee/EducationInfoUpdateVIew.vue'; + +// 인사기본- 계약서 +import ContractSignView from '@/views/hr-basic/document/ContractSignView.vue'; +import CertificateView from '@/views/hr-basic/document/CertificateView.vue'; +import EvalPolicyManagementView from '@/views/evaluation/EvalPolicyManagementView.vue'; +import EmployeeSalaryListView from '@/views/hr-management/Salary/EmployeeSalaryListView.vue'; +import IrregularAllowanceView from '@/views/hr-management/Salary/IrregularAllowanceView.vue'; +import DeptTaskUploadView from '@/views/evaluation/leader/DeptTaskUploadView.vue'; +import DeptTaskAssignView from '@/views/evaluation/leader/DeptTaskAssignView.vue'; +import NonTaxableView from '@/views/hr-management/Salary/NonTaxableView.vue'; + +// 인사관리 - 부서 +import DepartmentManagementInformationView from '@/views/hr-management/department/DepartmentManagementInformationView.vue'; +import DepartmentManagementAddView from '@/views/hr-management/department/DepartmentManagementAddView.vue'; +import PeriodicSalaryView from '@/views/hr-basic/salary/PeriodicSalaryView.vue'; + +const routes = [ + { + path: '/', + name: 'home', + component: HomeView, + }, + { + path: '/login', + name: 'login', + component: LoginView, + }, + { + path: '/emp-search', + name: 'emp-search', + component: EmployeeSearchView, + }, + { + path: '/chatbot', + name: 'chatbot', + component: ChatbotView, + }, + { + path: '/hr-basic', + name: 'hr-basic', + redirect: '/hr-basic/my-info/careers', + component: MyInfoView, + }, + // 인사기본- 사원 + { + path: '/hr-basic/my-info', + name: 'hr-basic-my-info', + redirect: '/hr-basic/my-info/careers', + component: MyInfoView, + children: [ + { + path: 'careers', + name: 'hr-basic-career', + component: CareerInfoView, + }, + { + path: 'careers/update', + name: 'hr-basic-career-update', + component: CareerInfoUpdateView, + }, + { + path: 'disciplinerewards', + name: 'hr-basic-discipline-reward', + component: DisciplineRewardInfoView, + }, + { + path: 'educations', + name: 'hr-basic-education', + component: EducationInfoView, + }, + { + path: 'educations/update', + name: 'hr-basic-education-update', + component: EducationInfoUpdateView, + }, + { + path: 'familymembers', + name: 'hr-basic-family-member', + component: FamilyMemberInfoView, + }, + { + path: 'familymembers/update', + name: 'hr-basic-family-member-update', + component: FamilyMemberInfoUpdateView, + }, + { + path: 'languagetests', + name: 'hr-basic-language-test', + component: LanguageTestInfoView, + }, + { + path: 'languagetests/update', + name: 'hr-basic-language-test-update', + component: LanguageTestInfoUpdateView, + }, + { + path: 'qualifications', + name: 'hr-basic-qualification', + component: QualificationInfoView, + }, + { + path: 'qualifications/update', + name: 'hr-basic-qualification-update', + component: QualificationInfoUpdateView, + }, + ], + }, + { + path: '/hr-basic/attendance', + name: 'hr-basic-attendance', + component: AttendanceView, + children: [ + { + path: '', + name: 'hr-basic-attendance-default', + component: CommuteView, + }, + { + path: 'commute', + name: 'hr-basic-attendance-commute', + component: CommuteView, + }, + { + path: 'remote', + name: 'hr-basic-attendance-remote', + component: RemoteView, + }, + { + path: 'remote/requests', + name: 'hr-basic-attendance-remote-requests', + component: RemoteRequestsView, + }, + { + path: 'overtime', + name: 'hr-basic-attendance-overtime', + component: OvertimeView, + }, + { + path: 'overtime/requests', + name: 'hr-basic-attendance-overtime-requests', + component: OvertimeRequestsView, + }, + { + path: 'vacation', + name: 'hr-basic-attendance-vacation', + component: VacationView, + }, + { + path: 'vacation/requests', + name: 'hr-basic-attendance-vacation-requests', + component: VacationRequestsView, + }, + { + path: 'leave', + name: 'hr-basic-attendance-leave', + component: LeaveView, + }, + { + path: 'leave/requests', + name: 'hr-basic-attendance-leave-requests', + component: LeaveRequestsView, + }, + { + path: 'return', + name: 'hr-basic-attendance-return', + component: ReturnView, + }, + { + path: 'return/requests', + name: 'hr-basic-attendance-return-requests', + component: ReturnRequestsView, + }, + { + path: 'business-trip', + name: 'hr-basic-attendance-business-trip', + component: BusinessTripView, + }, + { + path: 'business-trip/requests', + name: 'hr-basic-attendance-business-trip-requests', + component: BusinessTripRequestsView, + }, + { + path: 'dispatch', + name: 'hr-basic-attendance-dispatch', + component: DispatchView, + }, + { + path: 'dispatch/requests', + name: 'hr-basic-attendance-dispatch-requests', + component: DispatchRequestsView, + }, + ], + }, + { + path: '/hr-basic/salary', + name: 'hr-basic-salary', + component: SalaryView, + children: [ + { + path: '', + name: 'hr-basic-salary-default', + component: SalaryListView, + }, + { + path: 'detail/:employeeId', + name: 'hr-basic-salary-detail', + component: SalaryDetailView, + }, + { + path: 'list/:employeeId', + name: 'hr-basic-salary-list', + component: SalaryListView, + }, + { + path: 'severance-pay/:employeeId', + name: 'hr-basic-severance-pay', + component: SeverancePayView, + }, + { + path: 'period', + name: 'hr-basic-salary-period', + component: PeriodicSalaryView, + }, + ], + }, + // 인사기본- 계약서서명 및 재직 증명서 + { + path: '/hr-basic/document', + name: 'hr-basic-document', + component: ContractView, + children: [ + { + path: '', + name: 'hr-basic-document-default', + component: ContractSignView, + }, + { + path: 'contract', + name: 'hr-basic-document-contract', + component: ContractSignView, + }, + { + path: 'certificate', + name: 'hr-basic-document-certificate', + component: CertificateView, + }, + ], + }, + { + path: '/hr-basic/my-department', + name: 'hr-basic-my-department', + props: true, + redirect: '/hr-basic/my-department/info/careers', + component: MyDepartmentView, + children: [ + { + path: 'info/careers', + name: 'dept-mem-career', + props: true, + component: CareerInfoView, + }, + { + path: 'info/disciplinerewards', + name: 'dept-mem-discipline-reward', + props: true, + component: DisciplineRewardInfoView, + }, + { + path: 'info/educations', + name: 'dept-mem-education', + props: true, + component: EducationInfoView, + }, + { + path: 'info/familymembers', + name: 'dept-mem-family-member', + props: true, + component: FamilyMemberInfoView, + }, + { + path: 'info/languagetests', + name: 'dept-mem-language-test', + props: true, + component: LanguageTestInfoView, + }, + { + path: 'info/qualifications', + name: 'dept-mem-qualification', + props: true, + component: QualificationInfoView, + }, + ], + }, + { + path: '/hr-management', + name: 'hr-management', + redirect: '/hr-management/employee/info/careers', + component: EmployeeInfoView, + }, + { + path: '/hr-management/employee/info', + name: 'hr-management-employee-info', + redirect: '/hr-management/employee/info/careers', + component: EmployeeInfoView, + children: [ + { + path: 'careers', + name: 'career', + props: true, + component: CareerInfoView, + }, + { + path: 'disciplinerewards', + name: 'discipline-reward', + props: true, + component: DisciplineRewardInfoView, + }, + { + path: 'educations', + name: 'education', + props: true, + component: EducationInfoView, + }, + { + path: 'familymembers', + name: 'family-member', + props: true, + component: FamilyMemberInfoView, + }, + { + path: 'languagetests', + name: 'language-test', + props: true, + component: LanguageTestInfoView, + }, + { + path: 'qualifications', + name: 'qualification', + props: true, + component: QualificationInfoView, + }, + ], + }, + { + path: '/hr-management/employee/upload', + name: 'hr-management-employee-upload', + redirect: '/hr-management/employee/upload/employees', + component: EmployeeUploadView, + children: [ + { + path: 'employees', + name: 'EmployeeInfo', + component: EmployeeInfoUploadView, + }, + { + path: 'careers', + name: 'CareerInfo', + component: CareerInfoUploadView, + }, + { + path: 'educations', + name: 'EducationInfo', + component: EducationInfoUploadView, + }, + { + path: 'qualifications', + name: 'QualificationInfo', + component: QualificationInfoUploadView, + }, + { + path: 'languagetests', + name: 'LanguageTestInfo', + component: LanguageTestInfoUploadView, + }, + { + path: 'disciplinerewards', + name: 'DisciplineRewardInfo', + component: DisciplineRewardInfoUploadView, + }, + { + path: 'familymembers', + name: 'FamilyMemberInfo', + component: FamilyMemberInfoUploadView, + }, + ], + }, + { + path: '/hr-management/department', + name: 'hr-management-department', + redirect: '/hr-management/department/info', + component: DepartmentManagementView, + children: [ + { + path: '', + name: 'hr-management-department-default', + component: DepartmentManagementInformationView, + redirect: '/hr-management/department/info', + }, + { + path: 'info', + name: 'hr-management-department-info', + component: DepartmentManagementInformationView, + }, + { + path: 'add', + name: 'hr-management-department-add', + component: DepartmentManagementAddView, + }, + ], + }, + { + path: '/hr-management/appointment', + name: 'hr-management-appointment', + redirect: '/hr-management/appointment/upload', + component: AppointmentManagementView, + children: [ + { + path: 'upload', + name: 'upload', + component: AppointmentsUploadView, + }, + { + path: 'history', + name: 'history', + component: AppointmentsHistoryView, + }, + ], + }, + { + path: '/hr-management/vacation', + name: 'hr-management-vacation', + component: VacationManagementView, + children: [ + { + path: '', + name: 'hr-management-vacation-default', + component: VacationPaymentView, + }, + { + path: 'payment', + name: 'hr-management-vacation-payment', + component: VacationPaymentView, + }, + { + path: 'policy', + name: 'hr-management-vacation-policy', + component: VacationPolicyView, + }, + ], + }, + { + path: '/hr-management/salary', + name: 'hr-management-salary', + component: SalaryManagementView, + children: [ + { + path: '', + name: 'hr-management-salary-default', + component: EmployeeSalaryListView, + }, + { + path: 'salary-list', + name: 'hr-management-salary-list', + component: EmployeeSalaryListView, + }, + { + path: 'irregular-allowance', + name: 'hr-management-salary-irregular-allowance', + component: IrregularAllowanceView, + }, + { + path: 'non-taxable-payrolls', + name: 'hr-management-salary-non-taxable-payrolls', + component: NonTaxableView, + }, + ], + }, + { + path: '/evaluation', + name: 'evaluation', + redirect: '/evaluation/personal', + }, + { + path: '/evaluation/personal', + name: 'personal-evaluation', + component: PersonalEvalView, + children: [ + { + path: '', + name: 'evaluation-personal-default', + component: PersonalEvalFindView, + }, + { + path: '1', + name: 'self-evaluation-management', + component: PersonalEvalFindView, + }, + { + path: '2', + name: 'submenu2', + component: PersonalEvalCreateAndFindView, + }, + ], + }, + { + path: '/evaluation/leader', + name: 'leader-evaluation', + component: LeaderEvalView, + children: [ + { + path: '', + name: 'leader-evaluation-default', + component: LeaderEvalListView, + }, + { + path: 'eval-list', + name: 'leader-evaluation-list', + component: LeaderEvalListView, + }, + { + path: 'dept-task/upload', + name: 'dept-task-upload', + component: DeptTaskUploadView, + }, + { + path: 'dept-task/assign', + name: 'dept-task-assign', + component: DeptTaskAssignView, + }, + { + path: 'feedback', + name: 'feedback-management', + component: FeedbackManageView, + }, + ], + }, + { + path: '/evaluation/task', + name: 'evaluation-task', + component: EvalTaskView, + children: [ + { + path: '', + name: 'evaluation-task-default', + component: PersonalEvalCreateAndFindView, + }, + { + path: 'register', + name: 'TaskEvalCreate-view', + component: PersonalEvalCreateAndFindView, + }, + ], + }, + { + path: '/evaluation/policy', + name: 'evaluation-policy', + component: EvalPolicyView, + children: [ + { + path: '', + name: 'eval-policy-default', + component: EvalTypeManagementView, + }, + { + path: 'eval-type', + name: 'eval-type-management', + component: EvalTypeManagementView, + }, + { + path: 'eval-policy', + name: 'eval-policy-management', + component: EvalPolicyManagementView, + }, + { + path: 'eval-grade', + name: 'eval-grade-management', + component: EvalGradeView, + }, + ], + }, +]; + +const router = createRouter({ + history: createWebHistory(), + routes, + scrollBehavior() { + return { top: 0 }; + }, +}); + +export default router; diff --git a/src/stores/counter.js b/src/stores/counter.js new file mode 100644 index 0000000..e884e6d --- /dev/null +++ b/src/stores/counter.js @@ -0,0 +1,12 @@ +import { ref, computed } from 'vue'; +import { defineStore } from 'pinia'; + +export const useCounterStore = defineStore('counter', () => { + const count = ref(0); + const doubleCount = computed(() => count.value * 2); + function increment() { + count.value++; + } + + return { count, doubleCount, increment }; +}); diff --git a/src/views/chatbot/ChatbotView.vue b/src/views/chatbot/ChatbotView.vue new file mode 100644 index 0000000..0ed0db7 --- /dev/null +++ b/src/views/chatbot/ChatbotView.vue @@ -0,0 +1,359 @@ + + + + + diff --git a/src/views/emp-search/EmployeeSearchView.vue b/src/views/emp-search/EmployeeSearchView.vue new file mode 100644 index 0000000..9a7ac38 --- /dev/null +++ b/src/views/emp-search/EmployeeSearchView.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/views/evaluation/EvalGradeUpdateModalView.vue b/src/views/evaluation/EvalGradeUpdateModalView.vue new file mode 100644 index 0000000..641619e --- /dev/null +++ b/src/views/evaluation/EvalGradeUpdateModalView.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/src/views/evaluation/EvalGradeView.vue b/src/views/evaluation/EvalGradeView.vue new file mode 100644 index 0000000..749d5c2 --- /dev/null +++ b/src/views/evaluation/EvalGradeView.vue @@ -0,0 +1,408 @@ + + + + + diff --git a/src/views/evaluation/EvalPolicyManagementView.vue b/src/views/evaluation/EvalPolicyManagementView.vue new file mode 100644 index 0000000..b92aa89 --- /dev/null +++ b/src/views/evaluation/EvalPolicyManagementView.vue @@ -0,0 +1,545 @@ + + + + + + diff --git a/src/views/evaluation/EvalPolicyUpdateAndViewModal.vue b/src/views/evaluation/EvalPolicyUpdateAndViewModal.vue new file mode 100644 index 0000000..8048fb0 --- /dev/null +++ b/src/views/evaluation/EvalPolicyUpdateAndViewModal.vue @@ -0,0 +1,387 @@ + + + + + + diff --git a/src/views/evaluation/EvalPolicyView.vue b/src/views/evaluation/EvalPolicyView.vue new file mode 100644 index 0000000..1b11742 --- /dev/null +++ b/src/views/evaluation/EvalPolicyView.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/evaluation/EvalTaskView.vue b/src/views/evaluation/EvalTaskView.vue new file mode 100644 index 0000000..8e2ae5a --- /dev/null +++ b/src/views/evaluation/EvalTaskView.vue @@ -0,0 +1,118 @@ + + + + + + diff --git a/src/views/evaluation/EvalTypeManagementView.vue b/src/views/evaluation/EvalTypeManagementView.vue new file mode 100644 index 0000000..a332ee0 --- /dev/null +++ b/src/views/evaluation/EvalTypeManagementView.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/src/views/evaluation/LeaderEvalView.vue b/src/views/evaluation/LeaderEvalView.vue new file mode 100644 index 0000000..8a3ee55 --- /dev/null +++ b/src/views/evaluation/LeaderEvalView.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/views/evaluation/PersonalEvalCreateAndFindView.vue b/src/views/evaluation/PersonalEvalCreateAndFindView.vue new file mode 100644 index 0000000..aff04f3 --- /dev/null +++ b/src/views/evaluation/PersonalEvalCreateAndFindView.vue @@ -0,0 +1,366 @@ + + + + + diff --git a/src/views/evaluation/PersonalEvalFindView.vue b/src/views/evaluation/PersonalEvalFindView.vue new file mode 100644 index 0000000..f6ebc25 --- /dev/null +++ b/src/views/evaluation/PersonalEvalFindView.vue @@ -0,0 +1,212 @@ + + + + + diff --git a/src/views/evaluation/PersonalEvalView.vue b/src/views/evaluation/PersonalEvalView.vue new file mode 100644 index 0000000..ecf22a7 --- /dev/null +++ b/src/views/evaluation/PersonalEvalView.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/views/evaluation/TaskEvalModal.vue b/src/views/evaluation/TaskEvalModal.vue new file mode 100644 index 0000000..81d53d3 --- /dev/null +++ b/src/views/evaluation/TaskEvalModal.vue @@ -0,0 +1,255 @@ + + + + + + diff --git a/src/views/evaluation/leader/LeaderEvalListView.vue b/src/views/evaluation/leader/LeaderEvalListView.vue new file mode 100644 index 0000000..33952a3 --- /dev/null +++ b/src/views/evaluation/leader/LeaderEvalListView.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue b/src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue new file mode 100644 index 0000000..77ff313 --- /dev/null +++ b/src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue @@ -0,0 +1,172 @@ + + + + + + diff --git a/src/views/home/HomeView.vue b/src/views/home/HomeView.vue new file mode 100644 index 0000000..33b5662 --- /dev/null +++ b/src/views/home/HomeView.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/src/views/hr-basic/AttendanceView.vue b/src/views/hr-basic/AttendanceView.vue new file mode 100644 index 0000000..a392574 --- /dev/null +++ b/src/views/hr-basic/AttendanceView.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/views/hr-basic/ContractView.vue b/src/views/hr-basic/ContractView.vue new file mode 100644 index 0000000..030ebeb --- /dev/null +++ b/src/views/hr-basic/ContractView.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/hr-basic/MyDepartmentView.vue b/src/views/hr-basic/MyDepartmentView.vue new file mode 100644 index 0000000..ab5753e --- /dev/null +++ b/src/views/hr-basic/MyDepartmentView.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/src/views/hr-basic/MyInfoView.vue b/src/views/hr-basic/MyInfoView.vue new file mode 100644 index 0000000..51e1d44 --- /dev/null +++ b/src/views/hr-basic/MyInfoView.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/views/hr-basic/SalaryView.vue b/src/views/hr-basic/SalaryView.vue new file mode 100644 index 0000000..64bb75f --- /dev/null +++ b/src/views/hr-basic/SalaryView.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/views/hr-basic/attendance/BusinessTripRequestsView.vue b/src/views/hr-basic/attendance/BusinessTripRequestsView.vue new file mode 100644 index 0000000..6675630 --- /dev/null +++ b/src/views/hr-basic/attendance/BusinessTripRequestsView.vue @@ -0,0 +1,274 @@ + + + + + diff --git a/src/views/hr-basic/attendance/BusinessTripView.vue b/src/views/hr-basic/attendance/BusinessTripView.vue new file mode 100644 index 0000000..4586c8a --- /dev/null +++ b/src/views/hr-basic/attendance/BusinessTripView.vue @@ -0,0 +1,349 @@ + + + + + diff --git a/src/views/hr-basic/attendance/CommuteView.vue b/src/views/hr-basic/attendance/CommuteView.vue new file mode 100644 index 0000000..1a2f136 --- /dev/null +++ b/src/views/hr-basic/attendance/CommuteView.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/src/views/hr-basic/attendance/DispatchRequestsView.vue b/src/views/hr-basic/attendance/DispatchRequestsView.vue new file mode 100644 index 0000000..9839c74 --- /dev/null +++ b/src/views/hr-basic/attendance/DispatchRequestsView.vue @@ -0,0 +1,274 @@ + + + + + diff --git a/src/views/hr-basic/attendance/DispatchView.vue b/src/views/hr-basic/attendance/DispatchView.vue new file mode 100644 index 0000000..0b6eafb --- /dev/null +++ b/src/views/hr-basic/attendance/DispatchView.vue @@ -0,0 +1,349 @@ + + + + + diff --git a/src/views/hr-basic/attendance/LeaveRequestsView.vue b/src/views/hr-basic/attendance/LeaveRequestsView.vue new file mode 100644 index 0000000..ba738e8 --- /dev/null +++ b/src/views/hr-basic/attendance/LeaveRequestsView.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/views/hr-basic/attendance/LeaveView.vue b/src/views/hr-basic/attendance/LeaveView.vue new file mode 100644 index 0000000..f5c04d4 --- /dev/null +++ b/src/views/hr-basic/attendance/LeaveView.vue @@ -0,0 +1,413 @@ + + + + + diff --git a/src/views/hr-basic/attendance/OvertimeRequestsView.vue b/src/views/hr-basic/attendance/OvertimeRequestsView.vue new file mode 100644 index 0000000..d29ed45 --- /dev/null +++ b/src/views/hr-basic/attendance/OvertimeRequestsView.vue @@ -0,0 +1,283 @@ + + + + + diff --git a/src/views/hr-basic/attendance/OvertimeView.vue b/src/views/hr-basic/attendance/OvertimeView.vue new file mode 100644 index 0000000..15487d0 --- /dev/null +++ b/src/views/hr-basic/attendance/OvertimeView.vue @@ -0,0 +1,539 @@ + + + + + diff --git a/src/views/hr-basic/attendance/RemoteRequestsView.vue b/src/views/hr-basic/attendance/RemoteRequestsView.vue new file mode 100644 index 0000000..c38a5a7 --- /dev/null +++ b/src/views/hr-basic/attendance/RemoteRequestsView.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/src/views/hr-basic/attendance/RemoteView.vue b/src/views/hr-basic/attendance/RemoteView.vue new file mode 100644 index 0000000..2715654 --- /dev/null +++ b/src/views/hr-basic/attendance/RemoteView.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/src/views/hr-basic/attendance/ReturnRequestsView.vue b/src/views/hr-basic/attendance/ReturnRequestsView.vue new file mode 100644 index 0000000..b2313e8 --- /dev/null +++ b/src/views/hr-basic/attendance/ReturnRequestsView.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/src/views/hr-basic/attendance/ReturnView.vue b/src/views/hr-basic/attendance/ReturnView.vue new file mode 100644 index 0000000..6d36dcb --- /dev/null +++ b/src/views/hr-basic/attendance/ReturnView.vue @@ -0,0 +1,430 @@ + + + + + diff --git a/src/views/hr-basic/attendance/VacationRequestsView.vue b/src/views/hr-basic/attendance/VacationRequestsView.vue new file mode 100644 index 0000000..b7d8859 --- /dev/null +++ b/src/views/hr-basic/attendance/VacationRequestsView.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/views/hr-basic/attendance/VacationView.vue b/src/views/hr-basic/attendance/VacationView.vue new file mode 100644 index 0000000..1dd1798 --- /dev/null +++ b/src/views/hr-basic/attendance/VacationView.vue @@ -0,0 +1,456 @@ + + + + + diff --git a/src/views/hr-basic/document/CertificateModal.vue b/src/views/hr-basic/document/CertificateModal.vue new file mode 100644 index 0000000..16e76fa --- /dev/null +++ b/src/views/hr-basic/document/CertificateModal.vue @@ -0,0 +1,608 @@ + + + + + diff --git a/src/views/hr-basic/document/CertificateView.vue b/src/views/hr-basic/document/CertificateView.vue new file mode 100644 index 0000000..ca2acc0 --- /dev/null +++ b/src/views/hr-basic/document/CertificateView.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/src/views/hr-basic/document/ContractSignView.vue b/src/views/hr-basic/document/ContractSignView.vue new file mode 100644 index 0000000..2ce8d9c --- /dev/null +++ b/src/views/hr-basic/document/ContractSignView.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/src/views/hr-basic/document/EmployeeContractModal.vue b/src/views/hr-basic/document/EmployeeContractModal.vue new file mode 100644 index 0000000..739eb08 --- /dev/null +++ b/src/views/hr-basic/document/EmployeeContractModal.vue @@ -0,0 +1,871 @@ + + + + + diff --git a/src/views/hr-basic/document/SecurityContractModal.vue b/src/views/hr-basic/document/SecurityContractModal.vue new file mode 100644 index 0000000..39c3a2c --- /dev/null +++ b/src/views/hr-basic/document/SecurityContractModal.vue @@ -0,0 +1,724 @@ + + + + + diff --git a/src/views/hr-basic/employee/CareerInfoUpdateVIew.vue b/src/views/hr-basic/employee/CareerInfoUpdateVIew.vue new file mode 100644 index 0000000..4b0edc0 --- /dev/null +++ b/src/views/hr-basic/employee/CareerInfoUpdateVIew.vue @@ -0,0 +1,431 @@ + + + + + diff --git a/src/views/hr-basic/employee/CareerInfoVIew.vue b/src/views/hr-basic/employee/CareerInfoVIew.vue new file mode 100644 index 0000000..6beb3df --- /dev/null +++ b/src/views/hr-basic/employee/CareerInfoVIew.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/src/views/hr-basic/employee/DisciplineRewardInfoView.vue b/src/views/hr-basic/employee/DisciplineRewardInfoView.vue new file mode 100644 index 0000000..6b51361 --- /dev/null +++ b/src/views/hr-basic/employee/DisciplineRewardInfoView.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/views/hr-basic/employee/EducationInfoUpdateVIew.vue b/src/views/hr-basic/employee/EducationInfoUpdateVIew.vue new file mode 100644 index 0000000..d377e4c --- /dev/null +++ b/src/views/hr-basic/employee/EducationInfoUpdateVIew.vue @@ -0,0 +1,436 @@ + + + + + diff --git a/src/views/hr-basic/employee/EducationInfoView.vue b/src/views/hr-basic/employee/EducationInfoView.vue new file mode 100644 index 0000000..11c0320 --- /dev/null +++ b/src/views/hr-basic/employee/EducationInfoView.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue b/src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue new file mode 100644 index 0000000..910dafe --- /dev/null +++ b/src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue @@ -0,0 +1,449 @@ + + + + + diff --git a/src/views/hr-basic/employee/FamilyMemberInfoView.vue b/src/views/hr-basic/employee/FamilyMemberInfoView.vue new file mode 100644 index 0000000..59e7473 --- /dev/null +++ b/src/views/hr-basic/employee/FamilyMemberInfoView.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue b/src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue new file mode 100644 index 0000000..eb8f9c2 --- /dev/null +++ b/src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue @@ -0,0 +1,480 @@ + + + + + diff --git a/src/views/hr-basic/employee/LanguageTestInfoView.vue b/src/views/hr-basic/employee/LanguageTestInfoView.vue new file mode 100644 index 0000000..ba7e218 --- /dev/null +++ b/src/views/hr-basic/employee/LanguageTestInfoView.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/src/views/hr-basic/employee/ProfileView.vue b/src/views/hr-basic/employee/ProfileView.vue new file mode 100644 index 0000000..38da084 --- /dev/null +++ b/src/views/hr-basic/employee/ProfileView.vue @@ -0,0 +1,751 @@ + + + + + diff --git a/src/views/hr-basic/employee/QualificationInfoUpdateView.vue b/src/views/hr-basic/employee/QualificationInfoUpdateView.vue new file mode 100644 index 0000000..2514740 --- /dev/null +++ b/src/views/hr-basic/employee/QualificationInfoUpdateView.vue @@ -0,0 +1,446 @@ + + + + + diff --git a/src/views/hr-basic/employee/QualificationInfoView.vue b/src/views/hr-basic/employee/QualificationInfoView.vue new file mode 100644 index 0000000..ffc03ab --- /dev/null +++ b/src/views/hr-basic/employee/QualificationInfoView.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/views/hr-basic/my-department/MyDepartmentAttendance.vue b/src/views/hr-basic/my-department/MyDepartmentAttendance.vue new file mode 100644 index 0000000..1ff3c9e --- /dev/null +++ b/src/views/hr-basic/my-department/MyDepartmentAttendance.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/views/hr-basic/my-department/SearchDepartmentMember.vue b/src/views/hr-basic/my-department/SearchDepartmentMember.vue new file mode 100644 index 0000000..5d20294 --- /dev/null +++ b/src/views/hr-basic/my-department/SearchDepartmentMember.vue @@ -0,0 +1,294 @@ + + + + diff --git a/src/views/hr-basic/salary/PeriodicSalaryView.vue b/src/views/hr-basic/salary/PeriodicSalaryView.vue new file mode 100644 index 0000000..fb811c8 --- /dev/null +++ b/src/views/hr-basic/salary/PeriodicSalaryView.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/views/hr-basic/salary/SalaryDetailView.vue b/src/views/hr-basic/salary/SalaryDetailView.vue new file mode 100644 index 0000000..477e198 --- /dev/null +++ b/src/views/hr-basic/salary/SalaryDetailView.vue @@ -0,0 +1,444 @@ + + + + + diff --git a/src/views/hr-basic/salary/SalaryListView.vue b/src/views/hr-basic/salary/SalaryListView.vue new file mode 100644 index 0000000..3380c12 --- /dev/null +++ b/src/views/hr-basic/salary/SalaryListView.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/views/hr-basic/salary/SeverancePayView.vue b/src/views/hr-basic/salary/SeverancePayView.vue new file mode 100644 index 0000000..e1a3e3a --- /dev/null +++ b/src/views/hr-basic/salary/SeverancePayView.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/src/views/hr-management/AppointmentManagementView.vue b/src/views/hr-management/AppointmentManagementView.vue new file mode 100644 index 0000000..904c34b --- /dev/null +++ b/src/views/hr-management/AppointmentManagementView.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/src/views/hr-management/ContractManagementView.vue b/src/views/hr-management/ContractManagementView.vue new file mode 100644 index 0000000..670e3cd --- /dev/null +++ b/src/views/hr-management/ContractManagementView.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/src/views/hr-management/DepartmentManagementView .vue b/src/views/hr-management/DepartmentManagementView .vue new file mode 100644 index 0000000..fd97edc --- /dev/null +++ b/src/views/hr-management/DepartmentManagementView .vue @@ -0,0 +1,190 @@ + + + + + diff --git a/src/views/hr-management/EmployeeInfoView.vue b/src/views/hr-management/EmployeeInfoView.vue new file mode 100644 index 0000000..0206f20 --- /dev/null +++ b/src/views/hr-management/EmployeeInfoView.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/views/hr-management/EmployeeUploadView.vue b/src/views/hr-management/EmployeeUploadView.vue new file mode 100644 index 0000000..695464f --- /dev/null +++ b/src/views/hr-management/EmployeeUploadView.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/views/hr-management/Salary/EmployeeSalaryListView.vue b/src/views/hr-management/Salary/EmployeeSalaryListView.vue new file mode 100644 index 0000000..37ba63a --- /dev/null +++ b/src/views/hr-management/Salary/EmployeeSalaryListView.vue @@ -0,0 +1,206 @@ + + + + diff --git a/src/views/hr-management/Salary/IrregularAllowanceView.vue b/src/views/hr-management/Salary/IrregularAllowanceView.vue new file mode 100644 index 0000000..6db3267 --- /dev/null +++ b/src/views/hr-management/Salary/IrregularAllowanceView.vue @@ -0,0 +1,167 @@ + + + + diff --git a/src/views/hr-management/Salary/NonTaxableView.vue b/src/views/hr-management/Salary/NonTaxableView.vue new file mode 100644 index 0000000..c8fc817 --- /dev/null +++ b/src/views/hr-management/Salary/NonTaxableView.vue @@ -0,0 +1,164 @@ + + + + diff --git a/src/views/hr-management/SalaryManagementView.vue b/src/views/hr-management/SalaryManagementView.vue new file mode 100644 index 0000000..f66265b --- /dev/null +++ b/src/views/hr-management/SalaryManagementView.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/views/hr-management/VacationManagementView.vue b/src/views/hr-management/VacationManagementView.vue new file mode 100644 index 0000000..abc9c82 --- /dev/null +++ b/src/views/hr-management/VacationManagementView.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/views/hr-management/appointment/AppointmentHistoryView.vue b/src/views/hr-management/appointment/AppointmentHistoryView.vue new file mode 100644 index 0000000..982f90d --- /dev/null +++ b/src/views/hr-management/appointment/AppointmentHistoryView.vue @@ -0,0 +1,349 @@ + + + + + diff --git a/src/views/hr-management/appointment/AppointmentUploadView.vue b/src/views/hr-management/appointment/AppointmentUploadView.vue new file mode 100644 index 0000000..5958a43 --- /dev/null +++ b/src/views/hr-management/appointment/AppointmentUploadView.vue @@ -0,0 +1,535 @@ + + + + + diff --git a/src/views/hr-management/department/DepartmentManagementAddView.vue b/src/views/hr-management/department/DepartmentManagementAddView.vue new file mode 100644 index 0000000..ce4443a --- /dev/null +++ b/src/views/hr-management/department/DepartmentManagementAddView.vue @@ -0,0 +1,310 @@ + + + + + + diff --git a/src/views/hr-management/department/DepartmentManagementInformationView.vue b/src/views/hr-management/department/DepartmentManagementInformationView.vue new file mode 100644 index 0000000..357e308 --- /dev/null +++ b/src/views/hr-management/department/DepartmentManagementInformationView.vue @@ -0,0 +1,449 @@ + + + + + + + diff --git a/src/views/hr-management/department/DepartmentSearch.vue b/src/views/hr-management/department/DepartmentSearch.vue new file mode 100644 index 0000000..d7d3e6e --- /dev/null +++ b/src/views/hr-management/department/DepartmentSearch.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/CareerInfoUploadView.vue b/src/views/hr-management/employee-upload/CareerInfoUploadView.vue new file mode 100644 index 0000000..e41f884 --- /dev/null +++ b/src/views/hr-management/employee-upload/CareerInfoUploadView.vue @@ -0,0 +1,496 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue b/src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue new file mode 100644 index 0000000..77c7c21 --- /dev/null +++ b/src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue @@ -0,0 +1,495 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/EducationInfoUploadView.vue b/src/views/hr-management/employee-upload/EducationInfoUploadView.vue new file mode 100644 index 0000000..5e9b293 --- /dev/null +++ b/src/views/hr-management/employee-upload/EducationInfoUploadView.vue @@ -0,0 +1,498 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue b/src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue new file mode 100644 index 0000000..ee42969 --- /dev/null +++ b/src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue @@ -0,0 +1,524 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue b/src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue new file mode 100644 index 0000000..11f8e99 --- /dev/null +++ b/src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue @@ -0,0 +1,520 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue b/src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue new file mode 100644 index 0000000..9276d15 --- /dev/null +++ b/src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue @@ -0,0 +1,537 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/QualificationInfoUploadView.vue b/src/views/hr-management/employee-upload/QualificationInfoUploadView.vue new file mode 100644 index 0000000..ebd0d3c --- /dev/null +++ b/src/views/hr-management/employee-upload/QualificationInfoUploadView.vue @@ -0,0 +1,511 @@ + + + + + diff --git a/src/views/hr-management/vacation/VacationPaymentView.vue b/src/views/hr-management/vacation/VacationPaymentView.vue new file mode 100644 index 0000000..bd33d3f --- /dev/null +++ b/src/views/hr-management/vacation/VacationPaymentView.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/src/views/hr-management/vacation/VacationPolicyView.vue b/src/views/hr-management/vacation/VacationPolicyView.vue new file mode 100644 index 0000000..f54192a --- /dev/null +++ b/src/views/hr-management/vacation/VacationPolicyView.vue @@ -0,0 +1,419 @@ + + + + + diff --git a/src/views/login/LoginView.vue b/src/views/login/LoginView.vue new file mode 100644 index 0000000..cf53cdd --- /dev/null +++ b/src/views/login/LoginView.vue @@ -0,0 +1,116 @@ + + + + + From 20a6c83abeae4cfbe9914e73200ffab2228208f1 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 17:40:17 +0900 Subject: [PATCH 17/23] deploy test --- src/main.js | 3 - src/router/index.js | 635 ------------- src/views/chatbot/ChatbotView.vue | 359 -------- src/views/emp-search/EmployeeSearchView.vue | 170 ---- .../evaluation/EvalGradeUpdateModalView.vue | 218 ----- src/views/evaluation/EvalGradeView.vue | 408 -------- .../evaluation/EvalPolicyManagementView.vue | 545 ----------- .../EvalPolicyUpdateAndViewModal.vue | 387 -------- src/views/evaluation/EvalPolicyView.vue | 95 -- src/views/evaluation/EvalTaskView.vue | 118 --- .../evaluation/EvalTypeManagementView.vue | 229 ----- src/views/evaluation/LeaderEvalView.vue | 96 -- .../PersonalEvalCreateAndFindView.vue | 366 -------- src/views/evaluation/PersonalEvalFindView.vue | 212 ----- src/views/evaluation/PersonalEvalView.vue | 103 --- src/views/evaluation/TaskEvalModal.vue | 255 ----- src/views/evaluation/TaskPolicyView.vue | 115 --- .../evaluation/leader/DeptTaskAssignView.vue | 390 -------- .../evaluation/leader/DeptTaskUploadView.vue | 347 ------- .../evaluation/leader/FeedbackManageView.vue | 488 ---------- .../evaluation/leader/LeaderEvalListView.vue | 244 ----- .../leader/TaskEvalCreateAndUpdateModal.vue | 172 ---- src/views/hr-basic/AttendanceView.vue | 103 --- src/views/hr-basic/ContractView.vue | 95 -- src/views/hr-basic/MyDepartmentView.vue | 163 ---- src/views/hr-basic/MyInfoView.vue | 108 --- src/views/hr-basic/SalaryView.vue | 119 --- .../attendance/BusinessTripRequestsView.vue | 274 ------ .../hr-basic/attendance/BusinessTripView.vue | 349 ------- src/views/hr-basic/attendance/CommuteView.vue | 203 ---- .../attendance/DispatchRequestsView.vue | 274 ------ .../hr-basic/attendance/DispatchView.vue | 349 ------- .../hr-basic/attendance/LeaveRequestsView.vue | 272 ------ src/views/hr-basic/attendance/LeaveView.vue | 413 --------- .../attendance/OvertimeRequestsView.vue | 283 ------ .../hr-basic/attendance/OvertimeView.vue | 539 ----------- .../attendance/RemoteRequestsView.vue | 270 ------ src/views/hr-basic/attendance/RemoteView.vue | 295 ------ .../attendance/ReturnRequestsView.vue | 270 ------ src/views/hr-basic/attendance/ReturnView.vue | 430 --------- .../attendance/VacationRequestsView.vue | 272 ------ .../hr-basic/attendance/VacationView.vue | 456 --------- .../hr-basic/document/CertificateModal.vue | 608 ------------ .../hr-basic/document/CertificateView.vue | 150 --- .../hr-basic/document/ContractSignView.vue | 206 ----- .../document/EmployeeContractModal.vue | 871 ------------------ .../document/SecurityContractModal.vue | 724 --------------- .../employee/CareerInfoUpdateVIew.vue | 431 --------- .../hr-basic/employee/CareerInfoVIew.vue | 181 ---- .../employee/DisciplineRewardInfoView.vue | 182 ---- .../employee/EducationInfoUpdateVIew.vue | 436 --------- .../hr-basic/employee/EducationInfoView.vue | 170 ---- .../employee/FamilyMemberInfoUpdateView.vue | 449 --------- .../employee/FamilyMemberInfoView.vue | 164 ---- .../employee/LanguageTestInfoUpdateView.vue | 480 ---------- .../employee/LanguageTestInfoView.vue | 177 ---- src/views/hr-basic/employee/ProfileView.vue | 751 --------------- .../employee/QualificationInfoUpdateView.vue | 446 --------- .../employee/QualificationInfoView.vue | 171 ---- .../my-department/MyDepartmentAttendance.vue | 44 - .../my-department/SearchDepartmentMember.vue | 294 ------ .../hr-basic/salary/PeriodicSalaryView.vue | 152 --- .../hr-basic/salary/SalaryDetailView.vue | 444 --------- src/views/hr-basic/salary/SalaryListView.vue | 146 --- .../hr-basic/salary/SeverancePayView.vue | 282 ------ .../AppointmentManagementView.vue | 109 --- .../hr-management/ContractManagementView.vue | 38 - .../DepartmentManagementView .vue | 190 ---- src/views/hr-management/EmployeeInfoView.vue | 126 --- .../hr-management/EmployeeUploadView.vue | 115 --- .../Salary/EmployeeSalaryListView.vue | 206 ----- .../Salary/IrregularAllowanceView.vue | 167 ---- .../hr-management/Salary/NonTaxableView.vue | 164 ---- .../hr-management/SalaryManagementView.vue | 103 --- .../hr-management/VacationManagementView.vue | 96 -- .../appointment/AppointmentHistoryView.vue | 349 ------- .../appointment/AppointmentUploadView.vue | 535 ----------- .../DepartmentManagementAddView.vue | 310 ------- .../DepartmentManagementInformationView.vue | 449 --------- .../department/DepartmentSearch.vue | 187 ---- .../employee-upload/CareerInfoUploadView.vue | 496 ---------- .../DisciplineRewardInfoUploadView.vue | 495 ---------- .../EducationInfoUploadView.vue | 498 ---------- .../EmployeeInfoUploadView.vue | 524 ----------- .../FamilyMemberInfoUploadView.vue | 520 ----------- .../LanguageTestInfoUploadView.vue | 537 ----------- .../QualificationInfoUploadView.vue | 511 ---------- .../vacation/VacationPaymentView.vue | 252 ----- .../vacation/VacationPolicyView.vue | 419 --------- 89 files changed, 26847 deletions(-) delete mode 100644 src/views/chatbot/ChatbotView.vue delete mode 100644 src/views/emp-search/EmployeeSearchView.vue delete mode 100644 src/views/evaluation/EvalGradeUpdateModalView.vue delete mode 100644 src/views/evaluation/EvalGradeView.vue delete mode 100644 src/views/evaluation/EvalPolicyManagementView.vue delete mode 100644 src/views/evaluation/EvalPolicyUpdateAndViewModal.vue delete mode 100644 src/views/evaluation/EvalPolicyView.vue delete mode 100644 src/views/evaluation/EvalTaskView.vue delete mode 100644 src/views/evaluation/EvalTypeManagementView.vue delete mode 100644 src/views/evaluation/LeaderEvalView.vue delete mode 100644 src/views/evaluation/PersonalEvalCreateAndFindView.vue delete mode 100644 src/views/evaluation/PersonalEvalFindView.vue delete mode 100644 src/views/evaluation/PersonalEvalView.vue delete mode 100644 src/views/evaluation/TaskEvalModal.vue delete mode 100644 src/views/evaluation/TaskPolicyView.vue delete mode 100644 src/views/evaluation/leader/DeptTaskAssignView.vue delete mode 100644 src/views/evaluation/leader/DeptTaskUploadView.vue delete mode 100644 src/views/evaluation/leader/FeedbackManageView.vue delete mode 100644 src/views/evaluation/leader/LeaderEvalListView.vue delete mode 100644 src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue delete mode 100644 src/views/hr-basic/AttendanceView.vue delete mode 100644 src/views/hr-basic/ContractView.vue delete mode 100644 src/views/hr-basic/MyDepartmentView.vue delete mode 100644 src/views/hr-basic/MyInfoView.vue delete mode 100644 src/views/hr-basic/SalaryView.vue delete mode 100644 src/views/hr-basic/attendance/BusinessTripRequestsView.vue delete mode 100644 src/views/hr-basic/attendance/BusinessTripView.vue delete mode 100644 src/views/hr-basic/attendance/CommuteView.vue delete mode 100644 src/views/hr-basic/attendance/DispatchRequestsView.vue delete mode 100644 src/views/hr-basic/attendance/DispatchView.vue delete mode 100644 src/views/hr-basic/attendance/LeaveRequestsView.vue delete mode 100644 src/views/hr-basic/attendance/LeaveView.vue delete mode 100644 src/views/hr-basic/attendance/OvertimeRequestsView.vue delete mode 100644 src/views/hr-basic/attendance/OvertimeView.vue delete mode 100644 src/views/hr-basic/attendance/RemoteRequestsView.vue delete mode 100644 src/views/hr-basic/attendance/RemoteView.vue delete mode 100644 src/views/hr-basic/attendance/ReturnRequestsView.vue delete mode 100644 src/views/hr-basic/attendance/ReturnView.vue delete mode 100644 src/views/hr-basic/attendance/VacationRequestsView.vue delete mode 100644 src/views/hr-basic/attendance/VacationView.vue delete mode 100644 src/views/hr-basic/document/CertificateModal.vue delete mode 100644 src/views/hr-basic/document/CertificateView.vue delete mode 100644 src/views/hr-basic/document/ContractSignView.vue delete mode 100644 src/views/hr-basic/document/EmployeeContractModal.vue delete mode 100644 src/views/hr-basic/document/SecurityContractModal.vue delete mode 100644 src/views/hr-basic/employee/CareerInfoUpdateVIew.vue delete mode 100644 src/views/hr-basic/employee/CareerInfoVIew.vue delete mode 100644 src/views/hr-basic/employee/DisciplineRewardInfoView.vue delete mode 100644 src/views/hr-basic/employee/EducationInfoUpdateVIew.vue delete mode 100644 src/views/hr-basic/employee/EducationInfoView.vue delete mode 100644 src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue delete mode 100644 src/views/hr-basic/employee/FamilyMemberInfoView.vue delete mode 100644 src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue delete mode 100644 src/views/hr-basic/employee/LanguageTestInfoView.vue delete mode 100644 src/views/hr-basic/employee/ProfileView.vue delete mode 100644 src/views/hr-basic/employee/QualificationInfoUpdateView.vue delete mode 100644 src/views/hr-basic/employee/QualificationInfoView.vue delete mode 100644 src/views/hr-basic/my-department/MyDepartmentAttendance.vue delete mode 100644 src/views/hr-basic/my-department/SearchDepartmentMember.vue delete mode 100644 src/views/hr-basic/salary/PeriodicSalaryView.vue delete mode 100644 src/views/hr-basic/salary/SalaryDetailView.vue delete mode 100644 src/views/hr-basic/salary/SalaryListView.vue delete mode 100644 src/views/hr-basic/salary/SeverancePayView.vue delete mode 100644 src/views/hr-management/AppointmentManagementView.vue delete mode 100644 src/views/hr-management/ContractManagementView.vue delete mode 100644 src/views/hr-management/DepartmentManagementView .vue delete mode 100644 src/views/hr-management/EmployeeInfoView.vue delete mode 100644 src/views/hr-management/EmployeeUploadView.vue delete mode 100644 src/views/hr-management/Salary/EmployeeSalaryListView.vue delete mode 100644 src/views/hr-management/Salary/IrregularAllowanceView.vue delete mode 100644 src/views/hr-management/Salary/NonTaxableView.vue delete mode 100644 src/views/hr-management/SalaryManagementView.vue delete mode 100644 src/views/hr-management/VacationManagementView.vue delete mode 100644 src/views/hr-management/appointment/AppointmentHistoryView.vue delete mode 100644 src/views/hr-management/appointment/AppointmentUploadView.vue delete mode 100644 src/views/hr-management/department/DepartmentManagementAddView.vue delete mode 100644 src/views/hr-management/department/DepartmentManagementInformationView.vue delete mode 100644 src/views/hr-management/department/DepartmentSearch.vue delete mode 100644 src/views/hr-management/employee-upload/CareerInfoUploadView.vue delete mode 100644 src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue delete mode 100644 src/views/hr-management/employee-upload/EducationInfoUploadView.vue delete mode 100644 src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue delete mode 100644 src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue delete mode 100644 src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue delete mode 100644 src/views/hr-management/employee-upload/QualificationInfoUploadView.vue delete mode 100644 src/views/hr-management/vacation/VacationPaymentView.vue delete mode 100644 src/views/hr-management/vacation/VacationPolicyView.vue diff --git a/src/main.js b/src/main.js index a6eb25d..329680f 100644 --- a/src/main.js +++ b/src/main.js @@ -6,9 +6,6 @@ import { createPinia } from 'pinia'; import App from './App.vue'; import router from './router'; -// import '@fortawesome/fontawesome-free/css/all.css'; -// import '@fortawesome/fontawesome-free/js/all.js'; - const app = createApp(App); app.use(createPinia()); diff --git a/src/router/index.js b/src/router/index.js index df8e87e..d7b112e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,87 +1,6 @@ import { createRouter, createWebHistory } from 'vue-router'; import HomeView from '../views/home/HomeView.vue'; -import ChatbotView from '@/views/chatbot/ChatbotView.vue'; -import MyInfoView from '@/views/hr-basic/MyInfoView.vue'; -import AttendanceView from '@/views/hr-basic/AttendanceView.vue'; -import SalaryView from '@/views/hr-basic/SalaryView.vue'; -import ContractView from '@/views/hr-basic/ContractView.vue'; -import PersonalEvalView from '@/views/evaluation/PersonalEvalView.vue'; -import PersonalEvalFindView from '@/views/evaluation/PersonalEvalFindView.vue'; -import PersonalEvalCreateAndFindView from '@/views/evaluation/PersonalEvalCreateAndFindView.vue'; -import FeedbackManageView from '@/views/evaluation/leader/FeedbackManageView.vue'; -import LeaderEvalListView from '@/views/evaluation/leader/LeaderEvalListView.vue'; -import LeaderEvalView from '@/views/evaluation/LeaderEvalView.vue'; -import EvalTaskView from '@/views/evaluation/EvalTaskView.vue'; -import EvalTypeManagementView from '@/views/evaluation/EvalTypeManagementView.vue'; -import EvalPolicyView from '@/views/evaluation/EvalPolicyView.vue'; -import EvalGradeView from '@/views/evaluation/EvalGradeView.vue'; -import EmployeeInfoView from '@/views/hr-management/EmployeeInfoView.vue'; -import EmployeeUploadView from '@/views/hr-management/EmployeeUploadView.vue'; -import DepartmentManagementView from '@/views/hr-management/DepartmentManagementView .vue'; -import AppointmentManagementView from '@/views/hr-management/AppointmentManagementView.vue'; -import VacationManagementView from '@/views/hr-management/VacationManagementView.vue'; -import EmployeeSearchView from '@/views/emp-search/EmployeeSearchView.vue'; import LoginView from '@/views/login/LoginView.vue'; -import CommuteView from '@/views/hr-basic/attendance/CommuteView.vue'; -import RemoteView from '@/views/hr-basic/attendance/RemoteView.vue'; -import OvertimeView from '@/views/hr-basic/attendance/OvertimeView.vue'; -import LeaveView from '@/views/hr-basic/attendance/LeaveView.vue'; -import ReturnView from '@/views/hr-basic/attendance/ReturnView.vue'; -import BusinessTripView from '@/views/hr-basic/attendance/BusinessTripView.vue'; -import DispatchView from '@/views/hr-basic/attendance/DispatchView.vue'; -import VacationView from '@/views/hr-basic/attendance/VacationView.vue'; -import VacationPaymentView from '@/views/hr-management/vacation/VacationPaymentView.vue'; -import VacationPolicyView from '@/views/hr-management/vacation/VacationPolicyView.vue'; -import CareerInfoUploadView from '@/views/hr-management/employee-upload/CareerInfoUploadView.vue'; -import EducationInfoUploadView from '@/views/hr-management/employee-upload/EducationInfoUploadView.vue'; -import QualificationInfoUploadView from '@/views/hr-management/employee-upload/QualificationInfoUploadView.vue'; -import LanguageTestInfoUploadView from '@/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue'; -import DisciplineRewardInfoUploadView from '@/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue'; -import FamilyMemberInfoUploadView from '@/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue'; -import MyDepartmentView from '@/views/hr-basic/MyDepartmentView.vue'; -import EmployeeInfoUploadView from '@/views/hr-management/employee-upload/EmployeeInfoUploadView.vue'; -import RemoteRequestsView from '@/views/hr-basic/attendance/RemoteRequestsView.vue'; -import OvertimeRequestsView from '@/views/hr-basic/attendance/OvertimeRequestsView.vue'; -import VacationRequestsView from '@/views/hr-basic/attendance/VacationRequestsView.vue'; -import LeaveRequestsView from '@/views/hr-basic/attendance/LeaveRequestsView.vue'; -import ReturnRequestsView from '@/views/hr-basic/attendance/ReturnRequestsView.vue'; -import BusinessTripRequestsView from '@/views/hr-basic/attendance/BusinessTripRequestsView.vue'; -import DispatchRequestsView from '@/views/hr-basic/attendance/DispatchRequestsView.vue'; -import SalaryManagementView from '@/views/hr-management/SalaryManagementView.vue'; -import AppointmentsUploadView from '@/views/hr-management/appointment/AppointmentUploadView.vue'; -import AppointmentsHistoryView from '@/views/hr-management/appointment/AppointmentHistoryView.vue'; -import SalaryDetailView from '@/views/hr-basic/salary/SalaryDetailView.vue'; -import SalaryListView from '@/views/hr-basic/salary/SalaryListView.vue'; -import SeverancePayView from '@/views/hr-basic/salary/SeverancePayView.vue'; - -// 인사기본- 사원 -import ProfileView from '@/views/hr-basic/employee/ProfileView.vue'; -import DisciplineRewardInfoView from '@/views/hr-basic/employee/DisciplineRewardInfoView.vue'; -import EducationInfoView from '@/views/hr-basic/employee/EducationInfoView.vue'; -import FamilyMemberInfoView from '@/views/hr-basic/employee/FamilyMemberInfoView.vue'; -import LanguageTestInfoView from '@/views/hr-basic/employee/LanguageTestInfoView.vue'; -import QualificationInfoView from '@/views/hr-basic/employee/QualificationInfoView.vue'; -import QualificationInfoUpdateView from '@/views/hr-basic/employee/QualificationInfoUpdateView.vue'; -import LanguageTestInfoUpdateView from '@/views/hr-basic/employee/LanguageTestInfoUpdateView.vue'; -import FamilyMemberInfoUpdateView from '@/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue'; -import CareerInfoView from '@/views/hr-basic/employee/CareerInfoVIew.vue'; -import CareerInfoUpdateView from '@/views/hr-basic/employee/CareerInfoUpdateVIew.vue'; -import EducationInfoUpdateView from '@/views/hr-basic/employee/EducationInfoUpdateVIew.vue'; - -// 인사기본- 계약서 -import ContractSignView from '@/views/hr-basic/document/ContractSignView.vue'; -import CertificateView from '@/views/hr-basic/document/CertificateView.vue'; -import EvalPolicyManagementView from '@/views/evaluation/EvalPolicyManagementView.vue'; -import EmployeeSalaryListView from '@/views/hr-management/Salary/EmployeeSalaryListView.vue'; -import IrregularAllowanceView from '@/views/hr-management/Salary/IrregularAllowanceView.vue'; -import DeptTaskUploadView from '@/views/evaluation/leader/DeptTaskUploadView.vue'; -import DeptTaskAssignView from '@/views/evaluation/leader/DeptTaskAssignView.vue'; -import NonTaxableView from '@/views/hr-management/Salary/NonTaxableView.vue'; - -// 인사관리 - 부서 -import DepartmentManagementInformationView from '@/views/hr-management/department/DepartmentManagementInformationView.vue'; -import DepartmentManagementAddView from '@/views/hr-management/department/DepartmentManagementAddView.vue'; -import PeriodicSalaryView from '@/views/hr-basic/salary/PeriodicSalaryView.vue'; const routes = [ { @@ -94,560 +13,6 @@ const routes = [ name: 'login', component: LoginView, }, - { - path: '/emp-search', - name: 'emp-search', - component: EmployeeSearchView, - }, - { - path: '/chatbot', - name: 'chatbot', - component: ChatbotView, - }, - { - path: '/hr-basic', - name: 'hr-basic', - redirect: '/hr-basic/my-info/careers', - component: MyInfoView, - }, - // 인사기본- 사원 - { - path: '/hr-basic/my-info', - name: 'hr-basic-my-info', - redirect: '/hr-basic/my-info/careers', - component: MyInfoView, - children: [ - { - path: 'careers', - name: 'hr-basic-career', - component: CareerInfoView, - }, - { - path: 'careers/update', - name: 'hr-basic-career-update', - component: CareerInfoUpdateView, - }, - { - path: 'disciplinerewards', - name: 'hr-basic-discipline-reward', - component: DisciplineRewardInfoView, - }, - { - path: 'educations', - name: 'hr-basic-education', - component: EducationInfoView, - }, - { - path: 'educations/update', - name: 'hr-basic-education-update', - component: EducationInfoUpdateView, - }, - { - path: 'familymembers', - name: 'hr-basic-family-member', - component: FamilyMemberInfoView, - }, - { - path: 'familymembers/update', - name: 'hr-basic-family-member-update', - component: FamilyMemberInfoUpdateView, - }, - { - path: 'languagetests', - name: 'hr-basic-language-test', - component: LanguageTestInfoView, - }, - { - path: 'languagetests/update', - name: 'hr-basic-language-test-update', - component: LanguageTestInfoUpdateView, - }, - { - path: 'qualifications', - name: 'hr-basic-qualification', - component: QualificationInfoView, - }, - { - path: 'qualifications/update', - name: 'hr-basic-qualification-update', - component: QualificationInfoUpdateView, - }, - ], - }, - { - path: '/hr-basic/attendance', - name: 'hr-basic-attendance', - component: AttendanceView, - children: [ - { - path: '', - name: 'hr-basic-attendance-default', - component: CommuteView, - }, - { - path: 'commute', - name: 'hr-basic-attendance-commute', - component: CommuteView, - }, - { - path: 'remote', - name: 'hr-basic-attendance-remote', - component: RemoteView, - }, - { - path: 'remote/requests', - name: 'hr-basic-attendance-remote-requests', - component: RemoteRequestsView, - }, - { - path: 'overtime', - name: 'hr-basic-attendance-overtime', - component: OvertimeView, - }, - { - path: 'overtime/requests', - name: 'hr-basic-attendance-overtime-requests', - component: OvertimeRequestsView, - }, - { - path: 'vacation', - name: 'hr-basic-attendance-vacation', - component: VacationView, - }, - { - path: 'vacation/requests', - name: 'hr-basic-attendance-vacation-requests', - component: VacationRequestsView, - }, - { - path: 'leave', - name: 'hr-basic-attendance-leave', - component: LeaveView, - }, - { - path: 'leave/requests', - name: 'hr-basic-attendance-leave-requests', - component: LeaveRequestsView, - }, - { - path: 'return', - name: 'hr-basic-attendance-return', - component: ReturnView, - }, - { - path: 'return/requests', - name: 'hr-basic-attendance-return-requests', - component: ReturnRequestsView, - }, - { - path: 'business-trip', - name: 'hr-basic-attendance-business-trip', - component: BusinessTripView, - }, - { - path: 'business-trip/requests', - name: 'hr-basic-attendance-business-trip-requests', - component: BusinessTripRequestsView, - }, - { - path: 'dispatch', - name: 'hr-basic-attendance-dispatch', - component: DispatchView, - }, - { - path: 'dispatch/requests', - name: 'hr-basic-attendance-dispatch-requests', - component: DispatchRequestsView, - }, - ], - }, - { - path: '/hr-basic/salary', - name: 'hr-basic-salary', - component: SalaryView, - children: [ - { - path: '', - name: 'hr-basic-salary-default', - component: SalaryListView, - }, - { - path: 'detail/:employeeId', - name: 'hr-basic-salary-detail', - component: SalaryDetailView, - }, - { - path: 'list/:employeeId', - name: 'hr-basic-salary-list', - component: SalaryListView, - }, - { - path: 'severance-pay/:employeeId', - name: 'hr-basic-severance-pay', - component: SeverancePayView, - }, - { - path: 'period', - name: 'hr-basic-salary-period', - component: PeriodicSalaryView, - }, - ], - }, - // 인사기본- 계약서서명 및 재직 증명서 - { - path: '/hr-basic/document', - name: 'hr-basic-document', - component: ContractView, - children: [ - { - path: '', - name: 'hr-basic-document-default', - component: ContractSignView, - }, - { - path: 'contract', - name: 'hr-basic-document-contract', - component: ContractSignView, - }, - { - path: 'certificate', - name: 'hr-basic-document-certificate', - component: CertificateView, - }, - ], - }, - { - path: '/hr-basic/my-department', - name: 'hr-basic-my-department', - props: true, - redirect: '/hr-basic/my-department/info/careers', - component: MyDepartmentView, - children: [ - { - path: 'info/careers', - name: 'dept-mem-career', - props: true, - component: CareerInfoView, - }, - { - path: 'info/disciplinerewards', - name: 'dept-mem-discipline-reward', - props: true, - component: DisciplineRewardInfoView, - }, - { - path: 'info/educations', - name: 'dept-mem-education', - props: true, - component: EducationInfoView, - }, - { - path: 'info/familymembers', - name: 'dept-mem-family-member', - props: true, - component: FamilyMemberInfoView, - }, - { - path: 'info/languagetests', - name: 'dept-mem-language-test', - props: true, - component: LanguageTestInfoView, - }, - { - path: 'info/qualifications', - name: 'dept-mem-qualification', - props: true, - component: QualificationInfoView, - }, - ], - }, - { - path: '/hr-management', - name: 'hr-management', - redirect: '/hr-management/employee/info/careers', - component: EmployeeInfoView, - }, - { - path: '/hr-management/employee/info', - name: 'hr-management-employee-info', - redirect: '/hr-management/employee/info/careers', - component: EmployeeInfoView, - children: [ - { - path: 'careers', - name: 'career', - props: true, - component: CareerInfoView, - }, - { - path: 'disciplinerewards', - name: 'discipline-reward', - props: true, - component: DisciplineRewardInfoView, - }, - { - path: 'educations', - name: 'education', - props: true, - component: EducationInfoView, - }, - { - path: 'familymembers', - name: 'family-member', - props: true, - component: FamilyMemberInfoView, - }, - { - path: 'languagetests', - name: 'language-test', - props: true, - component: LanguageTestInfoView, - }, - { - path: 'qualifications', - name: 'qualification', - props: true, - component: QualificationInfoView, - }, - ], - }, - { - path: '/hr-management/employee/upload', - name: 'hr-management-employee-upload', - redirect: '/hr-management/employee/upload/employees', - component: EmployeeUploadView, - children: [ - { - path: 'employees', - name: 'EmployeeInfo', - component: EmployeeInfoUploadView, - }, - { - path: 'careers', - name: 'CareerInfo', - component: CareerInfoUploadView, - }, - { - path: 'educations', - name: 'EducationInfo', - component: EducationInfoUploadView, - }, - { - path: 'qualifications', - name: 'QualificationInfo', - component: QualificationInfoUploadView, - }, - { - path: 'languagetests', - name: 'LanguageTestInfo', - component: LanguageTestInfoUploadView, - }, - { - path: 'disciplinerewards', - name: 'DisciplineRewardInfo', - component: DisciplineRewardInfoUploadView, - }, - { - path: 'familymembers', - name: 'FamilyMemberInfo', - component: FamilyMemberInfoUploadView, - }, - ], - }, - { - path: '/hr-management/department', - name: 'hr-management-department', - redirect: '/hr-management/department/info', - component: DepartmentManagementView, - children: [ - { - path: '', - name: 'hr-management-department-default', - component: DepartmentManagementInformationView, - redirect: '/hr-management/department/info', - }, - { - path: 'info', - name: 'hr-management-department-info', - component: DepartmentManagementInformationView, - }, - { - path: 'add', - name: 'hr-management-department-add', - component: DepartmentManagementAddView, - }, - ], - }, - { - path: '/hr-management/appointment', - name: 'hr-management-appointment', - redirect: '/hr-management/appointment/upload', - component: AppointmentManagementView, - children: [ - { - path: 'upload', - name: 'upload', - component: AppointmentsUploadView, - }, - { - path: 'history', - name: 'history', - component: AppointmentsHistoryView, - }, - ], - }, - { - path: '/hr-management/vacation', - name: 'hr-management-vacation', - component: VacationManagementView, - children: [ - { - path: '', - name: 'hr-management-vacation-default', - component: VacationPaymentView, - }, - { - path: 'payment', - name: 'hr-management-vacation-payment', - component: VacationPaymentView, - }, - { - path: 'policy', - name: 'hr-management-vacation-policy', - component: VacationPolicyView, - }, - ], - }, - { - path: '/hr-management/salary', - name: 'hr-management-salary', - component: SalaryManagementView, - children: [ - { - path: '', - name: 'hr-management-salary-default', - component: EmployeeSalaryListView, - }, - { - path: 'salary-list', - name: 'hr-management-salary-list', - component: EmployeeSalaryListView, - }, - { - path: 'irregular-allowance', - name: 'hr-management-salary-irregular-allowance', - component: IrregularAllowanceView, - }, - { - path: 'non-taxable-payrolls', - name: 'hr-management-salary-non-taxable-payrolls', - component: NonTaxableView, - }, - ], - }, - { - path: '/evaluation', - name: 'evaluation', - redirect: '/evaluation/personal', - }, - { - path: '/evaluation/personal', - name: 'personal-evaluation', - component: PersonalEvalView, - children: [ - { - path: '', - name: 'evaluation-personal-default', - component: PersonalEvalFindView, - }, - { - path: '1', - name: 'self-evaluation-management', - component: PersonalEvalFindView, - }, - { - path: '2', - name: 'submenu2', - component: PersonalEvalCreateAndFindView, - }, - ], - }, - { - path: '/evaluation/leader', - name: 'leader-evaluation', - component: LeaderEvalView, - children: [ - { - path: '', - name: 'leader-evaluation-default', - component: LeaderEvalListView, - }, - { - path: 'eval-list', - name: 'leader-evaluation-list', - component: LeaderEvalListView, - }, - { - path: 'dept-task/upload', - name: 'dept-task-upload', - component: DeptTaskUploadView, - }, - { - path: 'dept-task/assign', - name: 'dept-task-assign', - component: DeptTaskAssignView, - }, - { - path: 'feedback', - name: 'feedback-management', - component: FeedbackManageView, - }, - ], - }, - { - path: '/evaluation/task', - name: 'evaluation-task', - component: EvalTaskView, - children: [ - { - path: '', - name: 'evaluation-task-default', - component: PersonalEvalCreateAndFindView, - }, - { - path: 'register', - name: 'TaskEvalCreate-view', - component: PersonalEvalCreateAndFindView, - }, - ], - }, - { - path: '/evaluation/policy', - name: 'evaluation-policy', - component: EvalPolicyView, - children: [ - { - path: '', - name: 'eval-policy-default', - component: EvalTypeManagementView, - }, - { - path: 'eval-type', - name: 'eval-type-management', - component: EvalTypeManagementView, - }, - { - path: 'eval-policy', - name: 'eval-policy-management', - component: EvalPolicyManagementView, - }, - { - path: 'eval-grade', - name: 'eval-grade-management', - component: EvalGradeView, - }, - ], - }, ]; const router = createRouter({ diff --git a/src/views/chatbot/ChatbotView.vue b/src/views/chatbot/ChatbotView.vue deleted file mode 100644 index 0ed0db7..0000000 --- a/src/views/chatbot/ChatbotView.vue +++ /dev/null @@ -1,359 +0,0 @@ - - - - - diff --git a/src/views/emp-search/EmployeeSearchView.vue b/src/views/emp-search/EmployeeSearchView.vue deleted file mode 100644 index 9a7ac38..0000000 --- a/src/views/emp-search/EmployeeSearchView.vue +++ /dev/null @@ -1,170 +0,0 @@ - - - - - diff --git a/src/views/evaluation/EvalGradeUpdateModalView.vue b/src/views/evaluation/EvalGradeUpdateModalView.vue deleted file mode 100644 index 641619e..0000000 --- a/src/views/evaluation/EvalGradeUpdateModalView.vue +++ /dev/null @@ -1,218 +0,0 @@ - - - - - diff --git a/src/views/evaluation/EvalGradeView.vue b/src/views/evaluation/EvalGradeView.vue deleted file mode 100644 index 749d5c2..0000000 --- a/src/views/evaluation/EvalGradeView.vue +++ /dev/null @@ -1,408 +0,0 @@ - - - - - diff --git a/src/views/evaluation/EvalPolicyManagementView.vue b/src/views/evaluation/EvalPolicyManagementView.vue deleted file mode 100644 index b92aa89..0000000 --- a/src/views/evaluation/EvalPolicyManagementView.vue +++ /dev/null @@ -1,545 +0,0 @@ - - - - - - diff --git a/src/views/evaluation/EvalPolicyUpdateAndViewModal.vue b/src/views/evaluation/EvalPolicyUpdateAndViewModal.vue deleted file mode 100644 index 8048fb0..0000000 --- a/src/views/evaluation/EvalPolicyUpdateAndViewModal.vue +++ /dev/null @@ -1,387 +0,0 @@ - - - - - - diff --git a/src/views/evaluation/EvalPolicyView.vue b/src/views/evaluation/EvalPolicyView.vue deleted file mode 100644 index 1b11742..0000000 --- a/src/views/evaluation/EvalPolicyView.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - - diff --git a/src/views/evaluation/EvalTaskView.vue b/src/views/evaluation/EvalTaskView.vue deleted file mode 100644 index 8e2ae5a..0000000 --- a/src/views/evaluation/EvalTaskView.vue +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - diff --git a/src/views/evaluation/EvalTypeManagementView.vue b/src/views/evaluation/EvalTypeManagementView.vue deleted file mode 100644 index a332ee0..0000000 --- a/src/views/evaluation/EvalTypeManagementView.vue +++ /dev/null @@ -1,229 +0,0 @@ - - - - - diff --git a/src/views/evaluation/LeaderEvalView.vue b/src/views/evaluation/LeaderEvalView.vue deleted file mode 100644 index 8a3ee55..0000000 --- a/src/views/evaluation/LeaderEvalView.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - - diff --git a/src/views/evaluation/PersonalEvalCreateAndFindView.vue b/src/views/evaluation/PersonalEvalCreateAndFindView.vue deleted file mode 100644 index aff04f3..0000000 --- a/src/views/evaluation/PersonalEvalCreateAndFindView.vue +++ /dev/null @@ -1,366 +0,0 @@ - - - - - diff --git a/src/views/evaluation/PersonalEvalFindView.vue b/src/views/evaluation/PersonalEvalFindView.vue deleted file mode 100644 index f6ebc25..0000000 --- a/src/views/evaluation/PersonalEvalFindView.vue +++ /dev/null @@ -1,212 +0,0 @@ - - - - - diff --git a/src/views/evaluation/PersonalEvalView.vue b/src/views/evaluation/PersonalEvalView.vue deleted file mode 100644 index ecf22a7..0000000 --- a/src/views/evaluation/PersonalEvalView.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - - - diff --git a/src/views/evaluation/TaskEvalModal.vue b/src/views/evaluation/TaskEvalModal.vue deleted file mode 100644 index 81d53d3..0000000 --- a/src/views/evaluation/TaskEvalModal.vue +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - diff --git a/src/views/evaluation/leader/LeaderEvalListView.vue b/src/views/evaluation/leader/LeaderEvalListView.vue deleted file mode 100644 index 33952a3..0000000 --- a/src/views/evaluation/leader/LeaderEvalListView.vue +++ /dev/null @@ -1,244 +0,0 @@ - - - - - diff --git a/src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue b/src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue deleted file mode 100644 index 77ff313..0000000 --- a/src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - diff --git a/src/views/hr-basic/AttendanceView.vue b/src/views/hr-basic/AttendanceView.vue deleted file mode 100644 index a392574..0000000 --- a/src/views/hr-basic/AttendanceView.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/ContractView.vue b/src/views/hr-basic/ContractView.vue deleted file mode 100644 index 030ebeb..0000000 --- a/src/views/hr-basic/ContractView.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/MyDepartmentView.vue b/src/views/hr-basic/MyDepartmentView.vue deleted file mode 100644 index ab5753e..0000000 --- a/src/views/hr-basic/MyDepartmentView.vue +++ /dev/null @@ -1,163 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/MyInfoView.vue b/src/views/hr-basic/MyInfoView.vue deleted file mode 100644 index 51e1d44..0000000 --- a/src/views/hr-basic/MyInfoView.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/SalaryView.vue b/src/views/hr-basic/SalaryView.vue deleted file mode 100644 index 64bb75f..0000000 --- a/src/views/hr-basic/SalaryView.vue +++ /dev/null @@ -1,119 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/BusinessTripRequestsView.vue b/src/views/hr-basic/attendance/BusinessTripRequestsView.vue deleted file mode 100644 index 6675630..0000000 --- a/src/views/hr-basic/attendance/BusinessTripRequestsView.vue +++ /dev/null @@ -1,274 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/BusinessTripView.vue b/src/views/hr-basic/attendance/BusinessTripView.vue deleted file mode 100644 index 4586c8a..0000000 --- a/src/views/hr-basic/attendance/BusinessTripView.vue +++ /dev/null @@ -1,349 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/CommuteView.vue b/src/views/hr-basic/attendance/CommuteView.vue deleted file mode 100644 index 1a2f136..0000000 --- a/src/views/hr-basic/attendance/CommuteView.vue +++ /dev/null @@ -1,203 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/DispatchRequestsView.vue b/src/views/hr-basic/attendance/DispatchRequestsView.vue deleted file mode 100644 index 9839c74..0000000 --- a/src/views/hr-basic/attendance/DispatchRequestsView.vue +++ /dev/null @@ -1,274 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/DispatchView.vue b/src/views/hr-basic/attendance/DispatchView.vue deleted file mode 100644 index 0b6eafb..0000000 --- a/src/views/hr-basic/attendance/DispatchView.vue +++ /dev/null @@ -1,349 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/LeaveRequestsView.vue b/src/views/hr-basic/attendance/LeaveRequestsView.vue deleted file mode 100644 index ba738e8..0000000 --- a/src/views/hr-basic/attendance/LeaveRequestsView.vue +++ /dev/null @@ -1,272 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/LeaveView.vue b/src/views/hr-basic/attendance/LeaveView.vue deleted file mode 100644 index f5c04d4..0000000 --- a/src/views/hr-basic/attendance/LeaveView.vue +++ /dev/null @@ -1,413 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/OvertimeRequestsView.vue b/src/views/hr-basic/attendance/OvertimeRequestsView.vue deleted file mode 100644 index d29ed45..0000000 --- a/src/views/hr-basic/attendance/OvertimeRequestsView.vue +++ /dev/null @@ -1,283 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/OvertimeView.vue b/src/views/hr-basic/attendance/OvertimeView.vue deleted file mode 100644 index 15487d0..0000000 --- a/src/views/hr-basic/attendance/OvertimeView.vue +++ /dev/null @@ -1,539 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/RemoteRequestsView.vue b/src/views/hr-basic/attendance/RemoteRequestsView.vue deleted file mode 100644 index c38a5a7..0000000 --- a/src/views/hr-basic/attendance/RemoteRequestsView.vue +++ /dev/null @@ -1,270 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/RemoteView.vue b/src/views/hr-basic/attendance/RemoteView.vue deleted file mode 100644 index 2715654..0000000 --- a/src/views/hr-basic/attendance/RemoteView.vue +++ /dev/null @@ -1,295 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/ReturnRequestsView.vue b/src/views/hr-basic/attendance/ReturnRequestsView.vue deleted file mode 100644 index b2313e8..0000000 --- a/src/views/hr-basic/attendance/ReturnRequestsView.vue +++ /dev/null @@ -1,270 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/ReturnView.vue b/src/views/hr-basic/attendance/ReturnView.vue deleted file mode 100644 index 6d36dcb..0000000 --- a/src/views/hr-basic/attendance/ReturnView.vue +++ /dev/null @@ -1,430 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/VacationRequestsView.vue b/src/views/hr-basic/attendance/VacationRequestsView.vue deleted file mode 100644 index b7d8859..0000000 --- a/src/views/hr-basic/attendance/VacationRequestsView.vue +++ /dev/null @@ -1,272 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/attendance/VacationView.vue b/src/views/hr-basic/attendance/VacationView.vue deleted file mode 100644 index 1dd1798..0000000 --- a/src/views/hr-basic/attendance/VacationView.vue +++ /dev/null @@ -1,456 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/document/CertificateModal.vue b/src/views/hr-basic/document/CertificateModal.vue deleted file mode 100644 index 16e76fa..0000000 --- a/src/views/hr-basic/document/CertificateModal.vue +++ /dev/null @@ -1,608 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/document/CertificateView.vue b/src/views/hr-basic/document/CertificateView.vue deleted file mode 100644 index ca2acc0..0000000 --- a/src/views/hr-basic/document/CertificateView.vue +++ /dev/null @@ -1,150 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/document/ContractSignView.vue b/src/views/hr-basic/document/ContractSignView.vue deleted file mode 100644 index 2ce8d9c..0000000 --- a/src/views/hr-basic/document/ContractSignView.vue +++ /dev/null @@ -1,206 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/document/EmployeeContractModal.vue b/src/views/hr-basic/document/EmployeeContractModal.vue deleted file mode 100644 index 739eb08..0000000 --- a/src/views/hr-basic/document/EmployeeContractModal.vue +++ /dev/null @@ -1,871 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/document/SecurityContractModal.vue b/src/views/hr-basic/document/SecurityContractModal.vue deleted file mode 100644 index 39c3a2c..0000000 --- a/src/views/hr-basic/document/SecurityContractModal.vue +++ /dev/null @@ -1,724 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/CareerInfoUpdateVIew.vue b/src/views/hr-basic/employee/CareerInfoUpdateVIew.vue deleted file mode 100644 index 4b0edc0..0000000 --- a/src/views/hr-basic/employee/CareerInfoUpdateVIew.vue +++ /dev/null @@ -1,431 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/CareerInfoVIew.vue b/src/views/hr-basic/employee/CareerInfoVIew.vue deleted file mode 100644 index 6beb3df..0000000 --- a/src/views/hr-basic/employee/CareerInfoVIew.vue +++ /dev/null @@ -1,181 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/DisciplineRewardInfoView.vue b/src/views/hr-basic/employee/DisciplineRewardInfoView.vue deleted file mode 100644 index 6b51361..0000000 --- a/src/views/hr-basic/employee/DisciplineRewardInfoView.vue +++ /dev/null @@ -1,182 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/EducationInfoUpdateVIew.vue b/src/views/hr-basic/employee/EducationInfoUpdateVIew.vue deleted file mode 100644 index d377e4c..0000000 --- a/src/views/hr-basic/employee/EducationInfoUpdateVIew.vue +++ /dev/null @@ -1,436 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/EducationInfoView.vue b/src/views/hr-basic/employee/EducationInfoView.vue deleted file mode 100644 index 11c0320..0000000 --- a/src/views/hr-basic/employee/EducationInfoView.vue +++ /dev/null @@ -1,170 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue b/src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue deleted file mode 100644 index 910dafe..0000000 --- a/src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue +++ /dev/null @@ -1,449 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/FamilyMemberInfoView.vue b/src/views/hr-basic/employee/FamilyMemberInfoView.vue deleted file mode 100644 index 59e7473..0000000 --- a/src/views/hr-basic/employee/FamilyMemberInfoView.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue b/src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue deleted file mode 100644 index eb8f9c2..0000000 --- a/src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue +++ /dev/null @@ -1,480 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/LanguageTestInfoView.vue b/src/views/hr-basic/employee/LanguageTestInfoView.vue deleted file mode 100644 index ba7e218..0000000 --- a/src/views/hr-basic/employee/LanguageTestInfoView.vue +++ /dev/null @@ -1,177 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/ProfileView.vue b/src/views/hr-basic/employee/ProfileView.vue deleted file mode 100644 index 38da084..0000000 --- a/src/views/hr-basic/employee/ProfileView.vue +++ /dev/null @@ -1,751 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/QualificationInfoUpdateView.vue b/src/views/hr-basic/employee/QualificationInfoUpdateView.vue deleted file mode 100644 index 2514740..0000000 --- a/src/views/hr-basic/employee/QualificationInfoUpdateView.vue +++ /dev/null @@ -1,446 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/employee/QualificationInfoView.vue b/src/views/hr-basic/employee/QualificationInfoView.vue deleted file mode 100644 index ffc03ab..0000000 --- a/src/views/hr-basic/employee/QualificationInfoView.vue +++ /dev/null @@ -1,171 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/my-department/MyDepartmentAttendance.vue b/src/views/hr-basic/my-department/MyDepartmentAttendance.vue deleted file mode 100644 index 1ff3c9e..0000000 --- a/src/views/hr-basic/my-department/MyDepartmentAttendance.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/my-department/SearchDepartmentMember.vue b/src/views/hr-basic/my-department/SearchDepartmentMember.vue deleted file mode 100644 index 5d20294..0000000 --- a/src/views/hr-basic/my-department/SearchDepartmentMember.vue +++ /dev/null @@ -1,294 +0,0 @@ - - - - diff --git a/src/views/hr-basic/salary/PeriodicSalaryView.vue b/src/views/hr-basic/salary/PeriodicSalaryView.vue deleted file mode 100644 index fb811c8..0000000 --- a/src/views/hr-basic/salary/PeriodicSalaryView.vue +++ /dev/null @@ -1,152 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/salary/SalaryDetailView.vue b/src/views/hr-basic/salary/SalaryDetailView.vue deleted file mode 100644 index 477e198..0000000 --- a/src/views/hr-basic/salary/SalaryDetailView.vue +++ /dev/null @@ -1,444 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/salary/SalaryListView.vue b/src/views/hr-basic/salary/SalaryListView.vue deleted file mode 100644 index 3380c12..0000000 --- a/src/views/hr-basic/salary/SalaryListView.vue +++ /dev/null @@ -1,146 +0,0 @@ - - - - - diff --git a/src/views/hr-basic/salary/SeverancePayView.vue b/src/views/hr-basic/salary/SeverancePayView.vue deleted file mode 100644 index e1a3e3a..0000000 --- a/src/views/hr-basic/salary/SeverancePayView.vue +++ /dev/null @@ -1,282 +0,0 @@ - - - - - diff --git a/src/views/hr-management/AppointmentManagementView.vue b/src/views/hr-management/AppointmentManagementView.vue deleted file mode 100644 index 904c34b..0000000 --- a/src/views/hr-management/AppointmentManagementView.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - - - diff --git a/src/views/hr-management/ContractManagementView.vue b/src/views/hr-management/ContractManagementView.vue deleted file mode 100644 index 670e3cd..0000000 --- a/src/views/hr-management/ContractManagementView.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - - diff --git a/src/views/hr-management/DepartmentManagementView .vue b/src/views/hr-management/DepartmentManagementView .vue deleted file mode 100644 index fd97edc..0000000 --- a/src/views/hr-management/DepartmentManagementView .vue +++ /dev/null @@ -1,190 +0,0 @@ - - - - - diff --git a/src/views/hr-management/EmployeeInfoView.vue b/src/views/hr-management/EmployeeInfoView.vue deleted file mode 100644 index 0206f20..0000000 --- a/src/views/hr-management/EmployeeInfoView.vue +++ /dev/null @@ -1,126 +0,0 @@ - - - - - diff --git a/src/views/hr-management/EmployeeUploadView.vue b/src/views/hr-management/EmployeeUploadView.vue deleted file mode 100644 index 695464f..0000000 --- a/src/views/hr-management/EmployeeUploadView.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - - - diff --git a/src/views/hr-management/Salary/EmployeeSalaryListView.vue b/src/views/hr-management/Salary/EmployeeSalaryListView.vue deleted file mode 100644 index 37ba63a..0000000 --- a/src/views/hr-management/Salary/EmployeeSalaryListView.vue +++ /dev/null @@ -1,206 +0,0 @@ - - - - diff --git a/src/views/hr-management/Salary/IrregularAllowanceView.vue b/src/views/hr-management/Salary/IrregularAllowanceView.vue deleted file mode 100644 index 6db3267..0000000 --- a/src/views/hr-management/Salary/IrregularAllowanceView.vue +++ /dev/null @@ -1,167 +0,0 @@ - - - - diff --git a/src/views/hr-management/Salary/NonTaxableView.vue b/src/views/hr-management/Salary/NonTaxableView.vue deleted file mode 100644 index c8fc817..0000000 --- a/src/views/hr-management/Salary/NonTaxableView.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - - diff --git a/src/views/hr-management/SalaryManagementView.vue b/src/views/hr-management/SalaryManagementView.vue deleted file mode 100644 index f66265b..0000000 --- a/src/views/hr-management/SalaryManagementView.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - - - diff --git a/src/views/hr-management/VacationManagementView.vue b/src/views/hr-management/VacationManagementView.vue deleted file mode 100644 index abc9c82..0000000 --- a/src/views/hr-management/VacationManagementView.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - - diff --git a/src/views/hr-management/appointment/AppointmentHistoryView.vue b/src/views/hr-management/appointment/AppointmentHistoryView.vue deleted file mode 100644 index 982f90d..0000000 --- a/src/views/hr-management/appointment/AppointmentHistoryView.vue +++ /dev/null @@ -1,349 +0,0 @@ - - - - - diff --git a/src/views/hr-management/appointment/AppointmentUploadView.vue b/src/views/hr-management/appointment/AppointmentUploadView.vue deleted file mode 100644 index 5958a43..0000000 --- a/src/views/hr-management/appointment/AppointmentUploadView.vue +++ /dev/null @@ -1,535 +0,0 @@ - - - - - diff --git a/src/views/hr-management/department/DepartmentManagementAddView.vue b/src/views/hr-management/department/DepartmentManagementAddView.vue deleted file mode 100644 index ce4443a..0000000 --- a/src/views/hr-management/department/DepartmentManagementAddView.vue +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - diff --git a/src/views/hr-management/department/DepartmentManagementInformationView.vue b/src/views/hr-management/department/DepartmentManagementInformationView.vue deleted file mode 100644 index 357e308..0000000 --- a/src/views/hr-management/department/DepartmentManagementInformationView.vue +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - - diff --git a/src/views/hr-management/department/DepartmentSearch.vue b/src/views/hr-management/department/DepartmentSearch.vue deleted file mode 100644 index d7d3e6e..0000000 --- a/src/views/hr-management/department/DepartmentSearch.vue +++ /dev/null @@ -1,187 +0,0 @@ - - - - - diff --git a/src/views/hr-management/employee-upload/CareerInfoUploadView.vue b/src/views/hr-management/employee-upload/CareerInfoUploadView.vue deleted file mode 100644 index e41f884..0000000 --- a/src/views/hr-management/employee-upload/CareerInfoUploadView.vue +++ /dev/null @@ -1,496 +0,0 @@ - - - - - diff --git a/src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue b/src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue deleted file mode 100644 index 77c7c21..0000000 --- a/src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue +++ /dev/null @@ -1,495 +0,0 @@ - - - - - diff --git a/src/views/hr-management/employee-upload/EducationInfoUploadView.vue b/src/views/hr-management/employee-upload/EducationInfoUploadView.vue deleted file mode 100644 index 5e9b293..0000000 --- a/src/views/hr-management/employee-upload/EducationInfoUploadView.vue +++ /dev/null @@ -1,498 +0,0 @@ - - - - - diff --git a/src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue b/src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue deleted file mode 100644 index ee42969..0000000 --- a/src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue +++ /dev/null @@ -1,524 +0,0 @@ - - - - - diff --git a/src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue b/src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue deleted file mode 100644 index 11f8e99..0000000 --- a/src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue +++ /dev/null @@ -1,520 +0,0 @@ - - - - - diff --git a/src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue b/src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue deleted file mode 100644 index 9276d15..0000000 --- a/src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue +++ /dev/null @@ -1,537 +0,0 @@ - - - - - diff --git a/src/views/hr-management/employee-upload/QualificationInfoUploadView.vue b/src/views/hr-management/employee-upload/QualificationInfoUploadView.vue deleted file mode 100644 index ebd0d3c..0000000 --- a/src/views/hr-management/employee-upload/QualificationInfoUploadView.vue +++ /dev/null @@ -1,511 +0,0 @@ - - - - - diff --git a/src/views/hr-management/vacation/VacationPaymentView.vue b/src/views/hr-management/vacation/VacationPaymentView.vue deleted file mode 100644 index bd33d3f..0000000 --- a/src/views/hr-management/vacation/VacationPaymentView.vue +++ /dev/null @@ -1,252 +0,0 @@ - - - - - diff --git a/src/views/hr-management/vacation/VacationPolicyView.vue b/src/views/hr-management/vacation/VacationPolicyView.vue deleted file mode 100644 index f54192a..0000000 --- a/src/views/hr-management/vacation/VacationPolicyView.vue +++ /dev/null @@ -1,419 +0,0 @@ - - - - - From 151c17e483ba7f76c3eddf557aa5e4345e4a2397 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 17:50:46 +0900 Subject: [PATCH 18/23] deploy test --- src/App.vue | 21 +- src/api/attendance.js | 327 ------------- src/api/axios.js | 80 ---- src/api/chatbot.js | 12 - src/api/department.js | 53 --- src/api/emp_attach.js | 261 ----------- src/api/emp_info.js | 251 ---------- src/api/evaluation.js | 434 ------------------ src/api/payroll.js | 147 ------ src/api/statistics.js | 0 src/api/vacation.js | 161 ------- src/assets/Inflow_profile_img.png | Bin 37363 -> 0 bytes src/assets/admin_default_profile.png | Bin 54993 -> 0 bytes src/assets/company_logo.svg | 17 - src/assets/emp_basic_profile.png | Bin 2172 -> 0 bytes src/assets/icons/company_icon.png | Bin 328 -> 0 bytes src/assets/icons/excel_icon.png | Bin 537 -> 0 bytes src/assets/icons/eye_closed.png | Bin 1333 -> 0 bytes src/assets/icons/eye_open.png | Bin 1243 -> 0 bytes src/assets/icons/file_close.png | Bin 270 -> 0 bytes src/assets/icons/file_open.png | Bin 451 -> 0 bytes src/assets/icons/fold.png | Bin 186 -> 0 bytes src/assets/icons/minus_icon.png | Bin 263 -> 0 bytes src/assets/icons/plus_icon.png | Bin 321 -> 0 bytes src/assets/icons/unfold.png | Bin 195 -> 0 bytes src/assets/logo.svg | 1 - src/assets/main.css | 133 ------ .../attendance/CancelRequestModal.vue | 169 ------- src/components/buttons/ArrowLeftButton.vue | 27 -- src/components/buttons/ArrowUpButton.vue | 27 -- src/components/buttons/CaretLeftButton.vue | 27 -- src/components/buttons/CaretRightButton.vue | 27 -- src/components/buttons/CheckButton.vue | 27 -- src/components/buttons/ChevronLeftButton.vue | 27 -- src/components/buttons/ChevronRightButton.vue | 27 -- src/components/buttons/CopyButton.vue | 27 -- src/components/buttons/HomeButton.vue | 35 -- src/components/buttons/MoreListButton.vue | 27 -- src/components/buttons/SearchButton.vue | 27 -- src/components/buttons/SettingButton.vue | 33 -- src/components/buttons/XmarkButton.vue | 27 -- src/components/common/BubbleBackground.vue | 148 ------ .../common/ChangeMonthComponent.vue | 100 ---- src/components/common/ChangeYearComponent.vue | 74 --- src/components/common/CheckCircle.vue | 33 -- src/components/common/CommonArticle.vue | 72 --- src/components/common/CommonHeader.vue | 200 -------- src/components/common/CommonMenu.vue | 43 -- src/components/common/CommonNav.vue | 91 ---- src/components/common/CompanyLogo.vue | 21 - src/components/common/CompanyName.vue | 34 -- .../common/DepartmentMemberInfoComponent.vue | 104 ----- src/components/common/FileItem.vue | 56 --- src/components/common/InfoCircle.vue | 92 ---- src/components/common/LoadingOverlay.vue | 62 --- src/components/common/LoginSection.vue | 201 -------- src/components/common/MyInfoComponent.vue | 82 ---- src/components/common/PaginationComponent.vue | 86 ---- .../common/SearchEmployeeComponent.vue | 168 ------- .../common/SelectAppTypeComponent.vue | 52 --- .../common/SelectPeriodComponent.vue | 114 ----- .../common/SelectYearMonthComponent.vue | 39 -- src/components/dropdowns/AccountDropdown.vue | 123 ----- .../dropdowns/AppointmentHisDropDown.vue | 130 ------ src/components/dropdowns/DateDropDown.vue | 107 ----- .../DisciplineRewardTypeDropDown.vue | 54 --- src/components/dropdowns/DropdownItem.vue | 121 ----- src/components/dropdowns/HalfDropdown.vue | 29 -- src/components/dropdowns/PeriodDropDown.vue | 84 ---- .../dropdowns/ThirtyMinuteDropDown.vue | 82 ---- src/components/dropdowns/TimeDropDown.vue | 76 --- src/components/dropdowns/YearDropDown.vue | 71 --- .../dropdowns/YearMonthDropDown.vue | 95 ---- .../employee-search/DepartmentHeirarchy.vue | 60 --- .../employee-search/EmployeeDetail.vue | 143 ------ .../employee-search/EmployeeList.vue | 125 ----- src/components/employee-search/SearchBar.vue | 54 --- src/components/employee-search/TreeNode.vue | 127 ----- src/components/icons/AddressBookIcon.vue | 3 - src/components/icons/ArrowLeftIcon.vue | 3 - src/components/icons/ArrowUpIcon.vue | 3 - src/components/icons/BuildingIcon.vue | 3 - src/components/icons/CaretDownIcon.vue | 3 - src/components/icons/CaretLeftIcon.vue | 3 - src/components/icons/CaretRightIcon.vue | 3 - src/components/icons/CaretUpIcon.vue | 3 - src/components/icons/ChartIcon.vue | 3 - src/components/icons/CheckIcon.vue | 3 - src/components/icons/ChevronDownIcon.vue | 3 - src/components/icons/ChevronLeftIcon.vue | 3 - src/components/icons/ChevronRightIcon.vue | 3 - src/components/icons/ChevronUpIcon.vue | 3 - src/components/icons/ClockIcon.vue | 3 - src/components/icons/CopyIcon.vue | 3 - src/components/icons/EvaluationIcon.vue | 3 - src/components/icons/ExcelIcon.vue | 3 - src/components/icons/FolderCloseIcon.vue | 3 - src/components/icons/FolerOpenIcon.vue | 3 - src/components/icons/GearIcon.vue | 3 - src/components/icons/HomeIcon.vue | 3 - src/components/icons/MenuIcon.vue | 3 - src/components/icons/MinusIcon.vue | 3 - src/components/icons/PaperClipIcon.vue | 3 - src/components/icons/PlusIcon.vue | 3 - src/components/icons/QuestionIcon.vue | 3 - src/components/icons/RobotIcon.vue | 3 - src/components/icons/SearchIcon.vue | 3 - src/components/icons/UserIcon.vue | 3 - src/components/icons/XmarkIcon.vue | 3 - src/components/modals/CrudModal.vue | 108 ----- src/components/modals/ModalBackground.vue | 21 - src/components/modals/ModalItem.vue | 40 -- src/components/modals/NoticeModal.vue | 37 -- src/components/modals/ResetPasswordModal.vue | 268 ----------- src/components/modals/SettingModal.vue | 59 --- src/components/nav/MenuNav.vue | 60 --- src/components/nav/MonthSelectNav.vue | 101 ---- src/components/nav/SubMenuNav.vue | 88 ---- src/components/salarytable/SalaryTable.vue | 260 ----------- src/components/semantic/ArticleItem.vue | 81 ---- src/components/semantic/ButtonItem.vue | 83 ---- src/components/semantic/FigcaptionItem.vue | 81 ---- src/components/semantic/FigureItem.vue | 81 ---- src/components/semantic/FlexItem.vue | 86 ---- src/components/semantic/FooterItem.vue | 81 ---- src/components/semantic/GridItem.vue | 81 ---- src/components/semantic/HeaderItem.vue | 81 ---- src/components/semantic/LiItem.vue | 69 --- src/components/semantic/MainItem.vue | 92 ---- src/components/semantic/NavItem.vue | 81 ---- src/components/semantic/SectionItem.vue | 81 ---- src/components/semantic/TableCell.vue | 97 ---- src/components/semantic/TableItem.vue | 44 -- src/components/semantic/TableRow.vue | 11 - src/components/semantic/UlItem.vue | 81 ---- src/components/widgets/MyAttendanceWidget.vue | 182 -------- src/components/widgets/MyScheduleWidget.vue | 183 -------- src/components/widgets/MyTeamMemberWidget.vue | 132 ------ src/components/widgets/ScheduleDdayWidget.vue | 87 ---- src/components/widgets/WidgetItem.vue | 55 --- src/main.js | 16 +- src/router/index.js | 26 -- src/stores/counter.js | 12 - src/views/home/HomeView.vue | 110 ----- src/views/login/LoginView.vue | 116 ----- 145 files changed, 22 insertions(+), 9028 deletions(-) delete mode 100644 src/api/attendance.js delete mode 100644 src/api/axios.js delete mode 100644 src/api/chatbot.js delete mode 100644 src/api/department.js delete mode 100644 src/api/emp_attach.js delete mode 100644 src/api/emp_info.js delete mode 100644 src/api/evaluation.js delete mode 100644 src/api/payroll.js delete mode 100644 src/api/statistics.js delete mode 100644 src/api/vacation.js delete mode 100644 src/assets/Inflow_profile_img.png delete mode 100644 src/assets/admin_default_profile.png delete mode 100644 src/assets/company_logo.svg delete mode 100644 src/assets/emp_basic_profile.png delete mode 100644 src/assets/icons/company_icon.png delete mode 100644 src/assets/icons/excel_icon.png delete mode 100644 src/assets/icons/eye_closed.png delete mode 100644 src/assets/icons/eye_open.png delete mode 100644 src/assets/icons/file_close.png delete mode 100644 src/assets/icons/file_open.png delete mode 100644 src/assets/icons/fold.png delete mode 100644 src/assets/icons/minus_icon.png delete mode 100644 src/assets/icons/plus_icon.png delete mode 100644 src/assets/icons/unfold.png delete mode 100644 src/assets/logo.svg delete mode 100644 src/assets/main.css delete mode 100644 src/components/attendance/CancelRequestModal.vue delete mode 100644 src/components/buttons/ArrowLeftButton.vue delete mode 100644 src/components/buttons/ArrowUpButton.vue delete mode 100644 src/components/buttons/CaretLeftButton.vue delete mode 100644 src/components/buttons/CaretRightButton.vue delete mode 100644 src/components/buttons/CheckButton.vue delete mode 100644 src/components/buttons/ChevronLeftButton.vue delete mode 100644 src/components/buttons/ChevronRightButton.vue delete mode 100644 src/components/buttons/CopyButton.vue delete mode 100644 src/components/buttons/HomeButton.vue delete mode 100644 src/components/buttons/MoreListButton.vue delete mode 100644 src/components/buttons/SearchButton.vue delete mode 100644 src/components/buttons/SettingButton.vue delete mode 100644 src/components/buttons/XmarkButton.vue delete mode 100644 src/components/common/BubbleBackground.vue delete mode 100644 src/components/common/ChangeMonthComponent.vue delete mode 100644 src/components/common/ChangeYearComponent.vue delete mode 100644 src/components/common/CheckCircle.vue delete mode 100644 src/components/common/CommonArticle.vue delete mode 100644 src/components/common/CommonHeader.vue delete mode 100644 src/components/common/CommonMenu.vue delete mode 100644 src/components/common/CommonNav.vue delete mode 100644 src/components/common/CompanyLogo.vue delete mode 100644 src/components/common/CompanyName.vue delete mode 100644 src/components/common/DepartmentMemberInfoComponent.vue delete mode 100644 src/components/common/FileItem.vue delete mode 100644 src/components/common/InfoCircle.vue delete mode 100644 src/components/common/LoadingOverlay.vue delete mode 100644 src/components/common/LoginSection.vue delete mode 100644 src/components/common/MyInfoComponent.vue delete mode 100644 src/components/common/PaginationComponent.vue delete mode 100644 src/components/common/SearchEmployeeComponent.vue delete mode 100644 src/components/common/SelectAppTypeComponent.vue delete mode 100644 src/components/common/SelectPeriodComponent.vue delete mode 100644 src/components/common/SelectYearMonthComponent.vue delete mode 100644 src/components/dropdowns/AccountDropdown.vue delete mode 100644 src/components/dropdowns/AppointmentHisDropDown.vue delete mode 100644 src/components/dropdowns/DateDropDown.vue delete mode 100644 src/components/dropdowns/DisciplineRewardTypeDropDown.vue delete mode 100644 src/components/dropdowns/DropdownItem.vue delete mode 100644 src/components/dropdowns/HalfDropdown.vue delete mode 100644 src/components/dropdowns/PeriodDropDown.vue delete mode 100644 src/components/dropdowns/ThirtyMinuteDropDown.vue delete mode 100644 src/components/dropdowns/TimeDropDown.vue delete mode 100644 src/components/dropdowns/YearDropDown.vue delete mode 100644 src/components/dropdowns/YearMonthDropDown.vue delete mode 100644 src/components/employee-search/DepartmentHeirarchy.vue delete mode 100644 src/components/employee-search/EmployeeDetail.vue delete mode 100644 src/components/employee-search/EmployeeList.vue delete mode 100644 src/components/employee-search/SearchBar.vue delete mode 100644 src/components/employee-search/TreeNode.vue delete mode 100644 src/components/icons/AddressBookIcon.vue delete mode 100644 src/components/icons/ArrowLeftIcon.vue delete mode 100644 src/components/icons/ArrowUpIcon.vue delete mode 100644 src/components/icons/BuildingIcon.vue delete mode 100644 src/components/icons/CaretDownIcon.vue delete mode 100644 src/components/icons/CaretLeftIcon.vue delete mode 100644 src/components/icons/CaretRightIcon.vue delete mode 100644 src/components/icons/CaretUpIcon.vue delete mode 100644 src/components/icons/ChartIcon.vue delete mode 100644 src/components/icons/CheckIcon.vue delete mode 100644 src/components/icons/ChevronDownIcon.vue delete mode 100644 src/components/icons/ChevronLeftIcon.vue delete mode 100644 src/components/icons/ChevronRightIcon.vue delete mode 100644 src/components/icons/ChevronUpIcon.vue delete mode 100644 src/components/icons/ClockIcon.vue delete mode 100644 src/components/icons/CopyIcon.vue delete mode 100644 src/components/icons/EvaluationIcon.vue delete mode 100644 src/components/icons/ExcelIcon.vue delete mode 100644 src/components/icons/FolderCloseIcon.vue delete mode 100644 src/components/icons/FolerOpenIcon.vue delete mode 100644 src/components/icons/GearIcon.vue delete mode 100644 src/components/icons/HomeIcon.vue delete mode 100644 src/components/icons/MenuIcon.vue delete mode 100644 src/components/icons/MinusIcon.vue delete mode 100644 src/components/icons/PaperClipIcon.vue delete mode 100644 src/components/icons/PlusIcon.vue delete mode 100644 src/components/icons/QuestionIcon.vue delete mode 100644 src/components/icons/RobotIcon.vue delete mode 100644 src/components/icons/SearchIcon.vue delete mode 100644 src/components/icons/UserIcon.vue delete mode 100644 src/components/icons/XmarkIcon.vue delete mode 100644 src/components/modals/CrudModal.vue delete mode 100644 src/components/modals/ModalBackground.vue delete mode 100644 src/components/modals/ModalItem.vue delete mode 100644 src/components/modals/NoticeModal.vue delete mode 100644 src/components/modals/ResetPasswordModal.vue delete mode 100644 src/components/modals/SettingModal.vue delete mode 100644 src/components/nav/MenuNav.vue delete mode 100644 src/components/nav/MonthSelectNav.vue delete mode 100644 src/components/nav/SubMenuNav.vue delete mode 100644 src/components/salarytable/SalaryTable.vue delete mode 100644 src/components/semantic/ArticleItem.vue delete mode 100644 src/components/semantic/ButtonItem.vue delete mode 100644 src/components/semantic/FigcaptionItem.vue delete mode 100644 src/components/semantic/FigureItem.vue delete mode 100644 src/components/semantic/FlexItem.vue delete mode 100644 src/components/semantic/FooterItem.vue delete mode 100644 src/components/semantic/GridItem.vue delete mode 100644 src/components/semantic/HeaderItem.vue delete mode 100644 src/components/semantic/LiItem.vue delete mode 100644 src/components/semantic/MainItem.vue delete mode 100644 src/components/semantic/NavItem.vue delete mode 100644 src/components/semantic/SectionItem.vue delete mode 100644 src/components/semantic/TableCell.vue delete mode 100644 src/components/semantic/TableItem.vue delete mode 100644 src/components/semantic/TableRow.vue delete mode 100644 src/components/semantic/UlItem.vue delete mode 100644 src/components/widgets/MyAttendanceWidget.vue delete mode 100644 src/components/widgets/MyScheduleWidget.vue delete mode 100644 src/components/widgets/MyTeamMemberWidget.vue delete mode 100644 src/components/widgets/ScheduleDdayWidget.vue delete mode 100644 src/components/widgets/WidgetItem.vue delete mode 100644 src/router/index.js delete mode 100644 src/stores/counter.js delete mode 100644 src/views/home/HomeView.vue delete mode 100644 src/views/login/LoginView.vue diff --git a/src/App.vue b/src/App.vue index ba32c22..c941233 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,3 +1,20 @@ \ No newline at end of file +
+ + +
+ + + + + \ No newline at end of file diff --git a/src/api/attendance.js b/src/api/attendance.js deleted file mode 100644 index a1727d4..0000000 --- a/src/api/attendance.js +++ /dev/null @@ -1,327 +0,0 @@ -import apiClient from '@/api/axios'; // Axios 설정이 적용된 apiClient 사용 - -// 1. 사원 ID와 날짜(yyyy-MM)로 월별 출퇴근 내역 조회 -export const getCommutesByEmployeeId = async (eid, date) => { - try { - const response = await apiClient.get(`/commutes?eid=${eid}&date=${date}`); - return response.data; - } catch (error) { - console.error('getCommutesByEmployeeId 에러:', error); - throw error; - } -}; - -// 2. 재택근무 신청 -export const createRemoteRequest = async (formData) => { - try { - const response = await apiClient.post( - `/attendance-requests/commute/remote`, - formData - ); - return response.data; - } catch (error) { - console.error('createRemoteRequest 에러:', error); - throw error; - } -}; - -// 3. 사원 ID로 재택근무 최근 신청 내역 조회 -export const getRemoteRequestPreviewsByEmployeeId = async (eid) => { - try { - const response = await apiClient.get( - `/attendance-requests/commute/remote/preview?eid=${eid}` - ); - return response.data; - } catch (error) { - console.error('getRemoteRequestPreviewsByEmployeeId 에러:', error); - throw error; - } -}; - -// 4. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 재택근무 전체 신청 내역 페이지별 조회 -export const getRemoteRequestsByEmployeeId = async (eid, page, date) => { - try { - const response = await apiClient.get( - `/attendance-requests/commute/remote?eid=${eid}&page=${page}&date=${date}` - ); - return response.data; - } catch (error) { - console.error('getRemoteRequestsByEmployeeId 에러:', error); - throw error; - } -}; - -// 5. 초과근무 신청 -export const createOvertimeRequest = async (formData) => { - try { - const response = await apiClient.post( - `/attendance-requests/commute/overtime`, - formData - ); - return response.data; - } catch (error) { - console.error('createOvertimeRequest 에러:', error); - throw error; - } -}; - -// 6. 사원 ID로 초과근무 최근 신청 내역 조회 -export const getOvertimeRequestPreviewsByEmployeeId = async (eid) => { - try { - const response = await apiClient.get( - `/attendance-requests/commute/overtime/preview?eid=${eid}` - ); - return response.data; - } catch (error) { - console.error('getOvertimeRequestPreviewsByEmployeeId 에러:', error); - throw error; - } -}; - -// 7. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 초과근무 전체 신청 내역 페이지별 조회 -export const getOvertimeRequestsByEmployeeId = async (eid, page, date) => { - try { - const response = await apiClient.get( - `/attendance-requests/commute/overtime?eid=${eid}&page=${page}&date=${date}` - ); - return response.data; - } catch (error) { - console.error('getOvertimeRequestsByEmployeeId 에러:', error); - throw error; - } -}; - -// 8. 출장 신청 -export const createBusinessTripRequest = async (formData) => { - try { - const response = await apiClient.post( - `/attendance-requests/business-trip`, - formData - ); - return response.data; - } catch (error) { - console.error('createBusinessTripRequest 에러:', error); - throw error; - } -}; - -// 9. 사원 ID로 출장 최근 신청 내역 조회 -export const getBusinessTripRequestPreviewsByEmployeeId = async (eid) => { - try { - const response = await apiClient.get( - `/attendance-requests/business-trip/preview?eid=${eid}` - ); - return response.data; - } catch (error) { - console.error('getBusinessTripRequestPreviewsByEmployeeId 에러:', error); - throw error; - } -}; - -// 10. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 출장 전체 신청 내역 페이지별 조회 -export const getBusinessTripRequestsByEmployeeId = async (eid, page, date) => { - try { - const response = await apiClient.get( - `/attendance-requests/business-trip?eid=${eid}&page=${page}&date=${date}` - ); - return response.data; - } catch (error) { - console.error('getBusinessTripRequestsByEmployeeId 에러:', error); - throw error; - } -}; - -// 11. 파견 신청 -export const createDispatchRequest = async (formData) => { - try { - const response = await apiClient.post( - `/attendance-requests/dispatch`, - formData - ); - return response.data; - } catch (error) { - console.error('createDispatchRequest 에러:', error); - throw error; - } -}; - -// 12. 사원 ID로 파견 최근 신청 내역 조회 -export const getDispatchRequestPreviewsByEmployeeId = async (eid) => { - try { - const response = await apiClient.get( - `/attendance-requests/dispatch/preview?eid=${eid}` - ); - return response.data; - } catch (error) { - console.error('getDispatchRequestPreviewsByEmployeeId 에러:', error); - throw error; - } -}; - -// 13. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 파견 전체 신청 내역 페이지별 조회 -export const getDispatchRequestsByEmployeeId = async (eid, page, date) => { - try { - const response = await apiClient.get( - `/attendance-requests/dispatch?eid=${eid}&page=${page}&date=${date}` - ); - return response.data; - } catch (error) { - console.error('getDispatchRequestsByEmployeeId 에러:', error); - throw error; - } -}; - -// 14. 휴직 신청 -export const createLeaveRequest = async (formData) => { - try { - const response = await apiClient.post( - `/attendance-requests/leave`, - formData, - { - headers: { - 'Content-Type': 'multipart/form-data', - }, - } - ); - return response.data; - } catch (error) { - console.error('createLeaveRequest 에러:', error); - throw error; - } -}; - -// 15. 사원 ID로 휴직 최근 신청 내역 조회 -export const getLeaveRequestPreviewsByEmployeeId = async (eid) => { - try { - const response = await apiClient.get( - `/attendance-requests/leave/preview?eid=${eid}` - ); - return response.data; - } catch (error) { - console.error('getLeaveRequestPreviewsByEmployeeId 에러:', error); - throw error; - } -}; - -// 16. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 휴직 전체 신청 내역 페이지별 조회 -export const getLeaveRequestsByEmployeeId = async (eid, page, date) => { - try { - const response = await apiClient.get( - `/attendance-requests/leave?eid=${eid}&page=${page}&date=${date}` - ); - return response.data; - } catch (error) { - console.error('getLeaveRequestsByEmployeeId 에러:', error); - throw error; - } -}; - -// 17. 복직 신청 -export const createReturnRequest = async (formData) => { - try { - const response = await apiClient.post( - `/attendance-requests/return`, - formData, - { - headers: { - 'Content-Type': 'multipart/form-data', - }, - } - ); - return response.data; - } catch (error) { - console.error('createReturnRequest 에러:', error); - throw error; - } -}; - -// 18. 사원 ID로 복직 최근 신청 내역 조회 -export const getReturnRequestPreviewsByEmployeeId = async (eid) => { - try { - const response = await apiClient.get( - `/attendance-requests/return/preview?eid=${eid}` - ); - return response.data; - } catch (error) { - console.error('getReturnRequestPreviewsByEmployeeId 에러:', error); - throw error; - } -}; - -// 19. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 복직 전체 신청 내역 페이지별 조회 -export const getReturnRequestsByEmployeeId = async (eid, page, date) => { - try { - const response = await apiClient.get( - `/attendance-requests/return?eid=${eid}&page=${page}&date=${date}` - ); - return response.data; - } catch (error) { - console.error('getReturnRequestsByEmployeeId 에러:', error); - throw error; - } -}; - -// 20. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 휴복직 전체 내역 페이지별 조회 -export const getLeaveReturnsByEmployeeId = async (eid, page) => { - try { - const response = await apiClient.get( - `/leave-returns?eid=${eid}&page=${page}` - ); - return response.data; - } catch (error) { - console.error('getLeaveReturnsByEmployeeId 에러:', error); - throw error; - } -}; - -// 21. 근태 취소 신청 -export const cancelAttendanceRequest = async (id, formData) => { - try { - const response = await apiClient.patch( - `/attendance-requests/${id}`, - formData - ); - return response.data; - } catch (error) { - console.error('cancelAttendanceRequest 에러:', error); - throw error; - } -}; - -// 22. 초과근무 연장 신청 -export const extendOvertime = async (id, formData) => { - try { - const response = await apiClient.patch( - `/attendance-requests/commute/overtime/${id}`, - formData - ); - return response.data; - } catch (error) { - console.error('extendOvertime 에러:', error); - throw error; - } -}; - -// 23. 사원 ID와 날짜(yyyy-MM)로 월별 초과근무 내역 조회 -export const getOvertimesByEmployeeId = async (eid, date) => { - try { - const response = await apiClient.get( - `/commutes/overtime?eid=${eid}&date=${date}` - ); - return response.data; - } catch (error) { - console.error('getOvertimesByEmployeeId 에러:', error); - throw error; - } -}; - -// 24. 출근 -export const checkAndUpdateCommute = async (eid) => { - try { - const response = await apiClient.post(`/commutes?eid=${eid}`); - return response.data; - } catch (error) { - console.error('checkAndUpdateCommute 에러:', error); - throw error; - } -}; diff --git a/src/api/axios.js b/src/api/axios.js deleted file mode 100644 index 11acf96..0000000 --- a/src/api/axios.js +++ /dev/null @@ -1,80 +0,0 @@ -import axios from 'axios'; - -// Axios 인스턴스 생성 -const apiClient = axios.create({ - baseURL: 'http://localhost:5000/api', // API 기본 경로 -}); - -// 요청 인터셉터: 모든 요청에 Authorization 헤더 추가 -apiClient.interceptors.request.use( - (config) => { - const token = localStorage.getItem('accessToken'); - console.log('인터셉터에서 읽어온 토큰:', token); - - // 액세스 토큰이 있는 경우 Authorization 헤더에 추가 - if (token) { - config.headers.Authorization = `Bearer ${token}`; - } - return config; - }, - (error) => Promise.reject(error) -); - -// 응답 인터셉터: 401 오류 시 리프레시 토큰으로 재발급 처리 -apiClient.interceptors.response.use( - (response) => response, // 응답이 성공적인 경우 그대로 반환 - async (error) => { - const originalRequest = error.config; - - // 401 Unauthorized 에러 처리 - if ( - error.response && - error.response.status === 401 && - !originalRequest._retry - ) { - originalRequest._retry = true; // 무한 루프 방지 - - try { - const refreshToken = localStorage.getItem('refreshToken'); - - if (!refreshToken) { - console.error('리프레시 토큰이 없습니다.'); - return Promise.reject(error); - } - - // 리프레시 토큰으로 새로운 액세스 토큰 요청 - const { data } = await axios.post( - 'http://localhost:5000/api/auth/refresh-token', - { refresh_token: refreshToken }, // JSON 형식으로 데이터 전달 - { - headers: { - 'Content-Type': 'application/json', - }, - } - ); - - const { access_token: newAccessToken, refresh_token: newRefreshToken } = - data.content; - - // 새로운 토큰 저장 - if (newAccessToken) { - localStorage.setItem('accessToken', newAccessToken); - } - if (newRefreshToken) { - localStorage.setItem('refreshToken', newRefreshToken); - } - - // 원래 요청을 새로운 액세스 토큰으로 재시도 - originalRequest.headers.Authorization = `Bearer ${newAccessToken}`; - return apiClient(originalRequest); // 재요청 - } catch (refreshError) { - console.error('리프레시 토큰 요청 실패:', refreshError); - return Promise.reject(refreshError); - } - } - - return Promise.reject(error); // 다른 오류는 그대로 반환 - } -); - -export default apiClient; diff --git a/src/api/chatbot.js b/src/api/chatbot.js deleted file mode 100644 index ceb77b7..0000000 --- a/src/api/chatbot.js +++ /dev/null @@ -1,12 +0,0 @@ -import apiClient from '@/api/axios'; - -// 챗봇 질문 -export const chatbotQuery = async (formData) => { - try { - const response = await apiClient.post(`/chatbot/query`, formData); - return response.data; - } catch (error) { - console.error('chatbotQuery 에러:', error); - throw error; - } -}; diff --git a/src/api/department.js b/src/api/department.js deleted file mode 100644 index 7f96076..0000000 --- a/src/api/department.js +++ /dev/null @@ -1,53 +0,0 @@ -import apiClient from '@/api/axios'; - -// 1. 사원 전체 조회(검색) -export const getAllDepartmentMembers = async () => { - try { - const response = await apiClient.get(`/departments/search/all-members`); - return response.data; - } catch (error) { - console.error('getAllDepartmentMembers 에러:', error); - throw error; - } -}; - -// 2. 키워드로 사원 검색 -export const getEmployeesByKeywordOrDepartmentCode = async (keyword) => { - try { - const response = await apiClient.get( - `/departments/search/members?keyword=${keyword}` - ); - return response.data; - } catch (error) { - console.error('getEmployeesByKeywordOrDepartmentCode 에러:', error); - throw error; - } -}; - -// 3. 부서 구성원 조회(일반) -export const getEmployeesByDepartmentCode = async (dcode) => { - try { - const response = await apiClient.get( - `/departments/search/members?departmentCode=${dcode}` - ); - return response.data; - } catch (error) { - console.error('getEmployeesByDepartmentCode 에러:', error); - throw error; - } -}; - -// 4. 부서 구성원 조회(팀장) -export const getMyDepartmentMemberListByDepartmentCode = async ( - departmentCode -) => { - try { - const response = await apiClient.get( - `/departments/my-department/${departmentCode}/members` - ); - return response.data; - } catch (error) { - console.error('getMyDepartmentMemberListByDepartmentCode 에러:', error); - throw error; - } -}; diff --git a/src/api/emp_attach.js b/src/api/emp_attach.js deleted file mode 100644 index bc82566..0000000 --- a/src/api/emp_attach.js +++ /dev/null @@ -1,261 +0,0 @@ -import apiClient from '@/api/axios'; - -export const getDoc = async (fileType) => { - try { - const response = await apiClient.get( - `/forms/download?file_type=${fileType}` - ); - return response.data; - } catch (error) { - console.error('양식 다운로드 에러:', error.response?.data || error.message); - throw error; - } -}; - -export const saveData = async (data, name) => { - try { - let response; - if (name !== null) { - if (name === 'appointments') - response = await apiClient.post(`/appointments`, data); - else response = await apiClient.post(`/employees/${name}`, data); - } else { - response = await apiClient.post(`/employees`, data); - } - return response.data.content; - } catch (error) { - console.error( - '사원 정보 등록 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const updateData = async (list, data, name) => { - try { - let response; - await apiClient.delete(`/employees/${name}`, { - data: list, - }); - response = await apiClient.post(`/employees/${name}`, data); - return response.data.content; - } catch (error) { - console.error('수정 요청 에러:', error.response?.data || error.message); - throw error; - } -}; - -export const getValidData = async () => { - try { - const response = await apiClient.get(`/validations/`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getAllEmpId = async () => { - try { - const response = await apiClient.get(`/employees/`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getEmpByNum = async (empNum) => { - try { - const response = await apiClient.get(`/employees/number/${empNum}`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getEmpId = async (empCodes) => { - try { - const response = await apiClient.post(`/employees/numbers`, empCodes); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getEducationsById = async (empId) => { - try { - const response = await apiClient.get(`/employees/educations/${empId}`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getQualifications = async () => { - try { - const response = await apiClient.get(`/employees/qualifications`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getQualificationsById = async (empId) => { - try { - const response = await apiClient.get(`/employees/qualifications/${empId}`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getLanguageTests = async () => { - try { - const response = await apiClient.get(`/employees/language-tests`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getLanguageTestsById = async (empId) => { - try { - const response = await apiClient.get(`/employees/language-tests/${empId}`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getLangCode = async () => { - try { - const response = await apiClient.get(`/employees/language-tests/languages`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getRelationships = async () => { - try { - const response = await apiClient.get( - `/employees/family-members/relationships` - ); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getFamilyById = async (empId) => { - try { - const response = await apiClient.get(`/employees/family-members/${empId}`); - return response.data; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getAppHistoryByMonth = async (year, month) => { - try { - const response = await apiClient.get( - `/appointments/history?year=${year}&month=${month}&appointment_item_code=all` - ); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getAppHistoryByPeriod = async (year, month, type) => { - try { - const response = await apiClient.get( - `/appointments/history?year=${year}&month=${month}&appointment_item_code=${type}` - ); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getCareersById = async (empId) => { - try { - const response = await apiClient.get(`/employees/careers/${empId}`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; - -export const getDisciplineReward = async (empId) => { - try { - const response = await apiClient.get(`/employees/attached/${empId}`); - return response.data.content; - } catch (error) { - console.error( - '유효성 검사 데이터 조회 에러:', - error.response?.data || error.message - ); - throw error; - } -}; diff --git a/src/api/emp_info.js b/src/api/emp_info.js deleted file mode 100644 index 7d141a4..0000000 --- a/src/api/emp_info.js +++ /dev/null @@ -1,251 +0,0 @@ -// 사원 기본 관련 api 모음 - -import apiClient from '@/api/axios'; // Axios 설정이 적용된 apiClient 사용 -import router from '@/router'; - -// 설명. 홈 화면 일정 조회 -export const getHomeInfo = async (employeeId, month) => { - try { - const response = await apiClient.get( - `/home?employeeId=${employeeId}&month=${month}` - ); - return response.data; - } catch (error) { - console.error('getHomeInfo 에러:', error); - throw error; // 에러를 호출한 쪽으로 전달 - } -}; - -// 설명. 1. 사원 ID로 사원 정보 조회하기 -export const getEmployeeById = async (employeeId, token) => { - try { - console.log('사원 ID로 조회 시작, 전달된 토큰:', token); - const response = await apiClient.get(`/employees/id/${employeeId}`, { - headers: { - Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 - }, - }); - console.log('사원 조회 응답 데이터:', response.data); - return response.data.content; // 사원 정보를 반환 - } catch (error) { - console.error('getEmployeeById 에러:', error.response?.data || error); - router.push("/login"); - throw error; // 에러를 호출한 쪽으로 전달 - } -}; - -// 설명. 1.1. 사원 ID로 사원 정보 조인해서 상세 조회하기 -export const getEmployeeDetailById = async (employeeId, token) => { - try { - const response = await apiClient.get(`/employees/detail/${employeeId}`, { - headers: { - Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 - }, - }); - return response.data.content; // 상세 사원 정보 반환 - } catch (error) { - console.error('getEmployeeDetailById 에러:', error); - throw error; // 에러를 호출한 쪽으로 전달 - } -}; - -// 설명. 2. 비밀번호 재설정하기 -export const resetEmployeePassword = async (employeeId, newPassword, token) => { - try { - const response = await apiClient.patch( - '/employees/re-password', - { - employee_id: employeeId, // 사원 ID - new_password: newPassword, // 새 비밀번호 - }, - { - headers: { - Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 - }, - } - ); - - return response.data; // API 응답 데이터를 반환 - } catch (error) { - console.error('resetEmployeePassword 에러:', error.response || error); - throw error; // 에러를 호출한 쪽으로 전달 - } -}; - -// 설명. 3. 사원 리스트 전체 조회하기 -export const getAllEmployees = async (token) => { - try { - const response = await apiClient.get('/employees/', { - headers: { - Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 - }, - }); - return response.data.content; // 사원 리스트 반환 - } catch (error) { - console.error('getAllEmployees 에러:', error); - throw error; - } -}; - -// 설명. 4. 이름으로 사원 리스트 조회하기 -export const getEmployeesByName = async (name, token) => { - try { - const response = await apiClient.get(`/employees/name`, { - params: { name }, // 이름을 파라미터로 추가 - headers: { - Authorization: `Bearer ${token}`, - }, - }); - return response.data.content; // 사원 리스트 반환 - } catch (error) { - console.error('getEmployeesByName 에러:', error); - throw error; - } -}; - -// 설명. 5. 사번으로 사원 정보 조회하기 -export const getEmployeeByNumber = async (employeeNumber, token) => { - try { - const response = await apiClient.get( - `/employees/number/${employeeNumber}`, - { - headers: { - Authorization: `Bearer ${token}`, - }, - } - ); - return response.data.content; // 사원 정보 반환 - } catch (error) { - console.error('getEmployeeByNumber 에러:', error); - throw error; - } -}; - -// 설명. 6. 재직증명서 정보 조회하기 -export const getEmploymentCertificate = async (employeeId, purpose, token) => { - try { - const response = await apiClient.post( - '/employees/employment-certificate', - { - employee_id: employeeId, // 사원 id - purpose: purpose, // 증명서 용도 - }, - { - headers: { - Authorization: `Bearer ${token}`, - }, - } - ); - return response.data.content; // 재직증명서 정보 반환 - } catch (error) { - console.error('getEmploymentCertificate 에러:', error); - throw error; - } -}; - -// 설명. 7. 근로 계약서 정보 조회하기 -export const getEmploymentContract = async (employeeId, token) => { - try { - const response = await apiClient.get( - `/employees/${employeeId}/employment-contract`, - { - headers: { - Authorization: `Bearer ${token}`, - }, - } - ); - return response.data.content; // 근로 계약서 정보 반환 - } catch (error) { - console.error('getEmploymentContract 에러:', error); - throw error; - } -}; - -// 설명. 8. 비밀 유지 서약서 정보 조회하기 -export const getSecurityAgreement = async (employeeId, token) => { - try { - const response = await apiClient.get( - `/employees/${employeeId}/security-agreement`, - { - headers: { - Authorization: `Bearer ${token}`, - }, - } - ); - return response.data.content; // 비밀 유지 서약서 정보 반환 - } catch (error) { - console.error('getSecurityAgreement 에러:', error); - throw error; - } -}; - -// 설명. 9. 서명된 계약서 리스트 조회하기 -export const getContractList = async (employeeId, token) => { - try { - const response = await apiClient.get(`/employees/${employeeId}/contracts`, { - headers: { - Authorization: `Bearer ${token}`, - }, - }); - return response.data.content; // 계약서 리스트 반환 - } catch (error) { - console.error('getContractList 에러:', error); - throw error; - } -}; - -// 설명. 10. 특정 계약서 정보 조회하기 -export const getContract = async (contractId, token) => { - try { - const response = await apiClient.get(`/employees/contracts/${contractId}`, { - headers: { - Authorization: `Bearer ${token}`, - }, - }); - return response.data.content; // 계약서 정보 반환 - } catch (error) { - console.error('getContract 에러:', error); - throw error; - } -}; - -// 설명. 11. 사원 정보 수정하기 -export const updateEmployeeInfo = async (employeeId, formData, token) => { - try { - const response = await apiClient.patch( - `/employees/employee-id/${employeeId}`, - formData, - { - headers: { - Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 - 'Content-Type': 'multipart/form-data', // form-data 처리 - }, - } - ); - return response.data.content; // 수정된 사원 정보 반환 - } catch (error) { - console.error('updateEmployeeInfo 에러:', error.response || error); - throw error; // 에러를 호출한 쪽으로 전달 - } -}; - -// 설명. 12. 사원별 계약서 등록 -export const registerEmployeeContract = async (contractId, file, token) => { - try { - const formData = new FormData(); - formData.append('contract_id', contractId); // 계약서 ID - formData.append('contract_file', file); // 파일 - - const response = await apiClient.post('/employees/contracts', formData, { - headers: { - Authorization: `Bearer ${token}`, - 'Content-Type': 'multipart/form-data', // form-data 처리 - }, - }); - - return response.data; // 성공 메시지 반환 - } catch (error) { - console.error('registerEmployeeContract 에러:', error.response || error); - throw error; // 에러 전달 - } -}; diff --git a/src/api/evaluation.js b/src/api/evaluation.js deleted file mode 100644 index 2ebe8b8..0000000 --- a/src/api/evaluation.js +++ /dev/null @@ -1,434 +0,0 @@ -// evaluation.js -import apiClient from '@/api/axios'; - -// 과제별 평가 조회 - ( 자기평가&리더평가에 해당하는 과제별 평가 리스트 모두 조회 ) -export const getTaskEvaluation = async (empId, year, half) => { - try { - const response = await apiClient.get(`/evaluations/taskEval/find`, { - params: { - empId, - year, - half, - }, - }); - return response.data; - } catch (error) { - console.error('getTaskEvaluation 에러:', error); - throw error; - } -}; - -// 평가ID로 과제별 평가 List 조회 ( 개인평가 조회에 사용 ) -export const findIndividualTaskListByEvaluationId = async ( - empId, - year, - half -) => { - try { - const response = await apiClient.get( - '/evaluations/taskEval/individualTaskList', - { - params: { - year: year, - half: half, - empId: empId, - }, - } - ); - return response.data; - } catch (error) { - console.error('자기평가 과제 리스트 조회 중 에러 발생:', error); - throw error; - } -}; - -// 평가ID로 과제별 평가 List 조회 ( 리더평가 조회에 사용 ) -export const findTaskEvalByEvaluationId = async (evaluationId) => { - try { - const response = await apiClient.get( - `/evaluations/taskEval/byEvaluationId/${evaluationId}` - ); - return response.data; - } catch (error) { - console.error('평가ID로 과제별 평가 리스트 조회 중 에러 발생:', error); - throw error; - } -}; - -// 과제별 평가 수정 -export const updateTaskEval = async (taskEvalId, updateTaskEvalRequestDTO) => { - try { - const response = await apiClient.patch( - `/evaluations/taskEval/${taskEvalId}`, - updateTaskEvalRequestDTO - ); - return response.data; - } catch (error) { - console.error('과제별 평가 수정 중 에러 발생:', error); - throw error; - } -}; - -// 모든 과제 유형 조회 -export const getAllTaskTypes = async () => { - try { - const response = await apiClient.get(`/evaluations/taskType/allTaskType`); - return response.data; - } catch (error) { - console.error('getAllTaskTypes 에러:', error); - throw error; - } -}; - -// 과제 유형 삭제 함수 -export const deleteTaskTypeById = async (taskTypeId) => { - try { - const response = await apiClient.delete( - `/evaluations/taskType/${taskTypeId}` - ); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('deleteTaskTypeById 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 개인 과제 항목 리스트 조회 -export const getIndividualTaskItems = async (empId, year, half) => { - try { - const response = await apiClient.get( - `/evaluations/taskItem/individualTasks`, - { - params: { - empId, - year, - half, - }, - } - ); - return response.data; - } catch (error) { - console.error('getIndividualTaskItems 에러:', error); - throw error; - } -}; - -// 부서 과제 항목 리스트 조회 -export const findDepartmentTaskItems = async (year, half, empId) => { - try { - const response = await apiClient.get( - '/evaluations/taskItem/departmentTasks', - { - params: { - year, - half, - empId, - }, - } - ); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('findDepartmentTaskItems 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 과제 생성 -export const createTaskItem = async ( - year, - half, - taskTypeId, - createTaskItemRequestDTO -) => { - try { - const response = await apiClient.post( - `/evaluations/taskItem/taskItemCreation`, - createTaskItemRequestDTO, - { - params: { - year, - half, - taskTypeId, - }, - } - ); - return response.data; - } catch (error) { - console.error('createTaskItem 에러:', error); - throw error; - } -}; - -// 모든 과제 유형에 대한 과제 리스트 조회 -export const findAllTaskItemsByEmpId = async (empId, year, half) => { - try { - const response = await apiClient.get(`/evaluations/taskItem/AllTaskItems`, { - params: { - empId, - year, - half, - }, - }); - return response.data; - } catch (error) { - console.error('findAllTaskItemsByEmpId 에러:', error); - throw error; - } -}; - -// 과제 항목별 평가 생성 -export const createTaskEval = async ( - createTaskEvalRequestDTO, - year, - half, - employeeId -) => { - try { - const response = await apiClient.post( - '/evaluations/taskEval/taskEvalCreation', - createTaskEvalRequestDTO, - { - params: { - year, - half, - employeeId, - }, - } - ); - return response.data; - } catch (error) { - console.error('createTaskEval 에러:', error); - throw error; - } -}; - -// 최종 평가 조회 -export const findFinalGrade = async (empId, year, half) => { - try { - const response = await apiClient.get('/evaluations/evaluation/leader', { - params: { - empId, - year, - half, - }, - }); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('findFinalGrade 에러:', error); - throw error; - } -}; - -// 자기 평가 조회 -export const findEvaluationByEmpIdAndYearAndHalf = async ( - year, - half, - empId -) => { - try { - const response = await apiClient.get('/evaluations/evaluation/mine', { - params: { - year: year, - half: half, - empId: empId, - }, - }); - return response.data; - } catch (error) { - console.error('자기 평가 조회 중 에러 발생:', error); - throw error; - } -}; - -// 피드백 생성 -export const createFeedback = async (createFeedbackRequestDTO) => { - try { - const response = await apiClient.post( - '/evaluations/feedback/feedbackCreation', - createFeedbackRequestDTO - ); - return response.data; - } catch (error) { - console.error('피드백 생성 중 에러 발생:', error); - throw error; - } -}; - -// 피드백 조회 -export const findFeedbacks = async (empId, year, half) => { - try { - const response = await apiClient.get('/evaluations/feedback/find', { - params: { - empId, - year, - half, - }, - }); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('findFeedbacks 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 피드백 수정 -export const updateFeedback = async (feedbackId, updateFeedbackRequestDTO) => { - try { - const response = await apiClient.patch( - `/evaluations/feedback/${feedbackId}`, - updateFeedbackRequestDTO - ); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('updateFeedback 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 과제 유형 등록 -export const createTaskType = async (createTaskTypeRequestDTO) => { - try { - const response = await apiClient.post( - `/evaluations/taskType/create`, - createTaskTypeRequestDTO - ); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('createTaskType 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 모든 과제 유형 조회 -export const findAllTaskTypes = async () => { - try { - const response = await apiClient.get(`/evaluations/taskType/allTaskType`); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('findAllTaskTypes 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 년도 및 반기별 평가 등급 리스트 조회 -export const findGradeByYearAndHalf = async (year, half) => { - try { - const response = await apiClient.get(`/evaluations/grade/find`, { - params: { - year, - half, - }, - }); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('findGradeByYearAndHalf 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 등급 생성 함수 -export const createGrade = async (createGradeRequestDTO, year, half) => { - try { - const response = await apiClient.post( - `/evaluations/grade/gradeCreation`, - createGradeRequestDTO, - { - params: { - year, - half, - }, - } - ); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('createGrade 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 등급 수정 함수 -export const updateGrade = async (gradeId, updateGradeRequestDTO) => { - try { - const response = await apiClient.patch( - `/evaluations/grade/${gradeId}`, - updateGradeRequestDTO - ); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('updateGrade 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 평가 정책 생성 함수 -export const createEvaluationPolicy = async ( - createEvaluationPolicyRequestDTO -) => { - try { - const response = await apiClient.post( - '/evaluations/evaluationPolicy/policyCreation', - createEvaluationPolicyRequestDTO - ); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('createEvaluationPolicy 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 평가 정책 리스트 조회 -export const findEvaluationPolicyByYearAndHalf = async (year, half) => { - try { - const response = await apiClient.get('/evaluations/evaluationPolicy/find', { - params: { - year, - half, - }, - }); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('findEvaluationPolicyByYearAndHalf 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 평가 정책 단건 조회 함수 -export const findEvaluationPolicyById = async (evaluationPolicyId) => { - try { - const response = await apiClient.get( - `/evaluations/evaluationPolicy/${evaluationPolicyId}` - ); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('findEvaluationPolicyById 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 평가 정책 수정 함수 -export const updateEvaluationPolicy = async ( - evaluationPolicyId, - updateEvaluationPolicyRequestDTO -) => { - try { - const response = await apiClient.patch( - `/evaluations/evaluationPolicy/${evaluationPolicyId}`, - updateEvaluationPolicyRequestDTO - ); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('updateEvaluationPolicy 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; - -// 평가등급 단건 조회 함수 -export const findGradeByGradeId = async (gradeId) => { - try { - const response = await apiClient.get(`/evaluations/grade/${gradeId}`); - return response.data; // API 응답 데이터 반환 - } catch (error) { - console.error('findGradeByGradeId 에러:', error); - throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 - } -}; diff --git a/src/api/payroll.js b/src/api/payroll.js deleted file mode 100644 index a82667b..0000000 --- a/src/api/payroll.js +++ /dev/null @@ -1,147 +0,0 @@ -import apiClient from '@/api/axios'; - -apiClient.defaults.headers.common['Authorization'] = - `Bearer ${localStorage.getItem('accessToken')}`; - -/* 1. 사원별 연월별 급여 명세서 조회 */ -export const getPaymentByEmployeeIdAndYearAndMonth = async ( - eid, - year, - month -) => { - if (!eid || !year || !month) { - throw new Error( - `유효하지 않은 파라미터: eid=${eid}, year=${year}, month=${month}` - ); - } - try { - const response = await apiClient.get(`/payrolls/details/${eid}`, { - params: { year, month }, - }); - return response.data; - } catch (error) { - console.error('getPaymentByEmployeeIdAndYearAndMonth 에러: ', error); - throw error; - } -}; - -export const getPeriodicPayments = async (employeeId, startDate, endDate) => { - if (!employeeId || !startDate || !endDate) { - throw new Error( - `유효하지 않은 파라미터: employeeId=${employeeId}, startMonth=${startDate}, endMonth=${endDate}` - ); - } - try { - const response = await apiClient.get('/payrolls/period', { - params: { employeeId, startDate, endDate }, - }); - return response.data; - } catch (error) { - console.error('getPeriodicPayments 오류: ', error); - throw error; - } -}; - -export const getPaymentsByYear = async (employeeId, year) => { - if (!employeeId || !year) { - throw new Error( - `유효하지 않은 파라미터: employeeId=${employeeId}, year=${year}` - ); - } - try { - const response = await apiClient.get('/payrolls/list', { - params: { employeeId, year }, - }); - return response.data; - } catch (error) { - console.error('getPaymentsByYear 오류: ', error); - throw error; - } -}; - -export const getAllPayments = async (employeeId, page) => { - if (!employeeId || !page) { - throw new Error( - `유효하지 않은 파라미터: employeeId=${employeeId}, page=${page}` - ); - } - try { - const response = await apiClient.get(`/payrolls/all/${employeeId}`, { - params: { page }, - }); - return response.data; - } catch (error) { - console.error('getAllPayments 에러: ', error); - throw error; - } -}; - -export const getEstimateWorkingDays = async (employeeId) => { - if (!employeeId) { - throw new Error(`유효하지 않은 파라미터: employeeId=${employeeId}`); - } - try { - const response = await apiClient.get( - `/severance-pay/estimate/${employeeId}` - ); - return response.data; - } catch (error) { - console.error('getEstimateWorkingDays 에러: ', error); - throw error; - } -}; - -export const calculateSeverancePay = async (employeeId) => { - if (!employeeId) { - throw new Error(`유효하지 않은 파라미터: employeeId=${employeeId}`); - } - try { - const response = await apiClient.get( - `/severance-pay/calculate/${employeeId}` - ); - return response.data; - } catch (error) { - console.error('calculateSeverancePay 에러: ', error); - throw error; - } -}; - -export const createIrregularAllowance = async (formData) => { - try { - const response = await apiClient.post('irregular-allowances', formData); - return response.data; - } catch (error) { - console.error('createIrregularAllowance 오류: ', error); - } -}; - -export const getIrregularAllowance = async (page) => { - try { - const response = await apiClient.get(`/irregular-allowances`, { - params: { page }, - }); - return response.data; - } catch (error) { - console.error('getIrregularAllowance 오류: ', error); - } -}; - -export const getNonTaxablePayrolls = async (page) => { - try { - const response = await apiClient.get('/non-taxable-payrolls', { - params: { page }, - }); - return response.data; - } catch (error) { - console.error('getNonTaxablePayrolls 오류: ', error); - } -}; - -export const createNonTaxable = async (formData) => { - try { - const response = await apiClient.post('/non-taxable-payrolls', formData); - return response.data; - } catch (error) { - console.error('createNonTaxable 오류: ', error); - } -}; diff --git a/src/api/statistics.js b/src/api/statistics.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/api/vacation.js b/src/api/vacation.js deleted file mode 100644 index d1bb9f7..0000000 --- a/src/api/vacation.js +++ /dev/null @@ -1,161 +0,0 @@ -import apiClient from '@/api/axios'; // Axios 설정이 적용된 apiClient 사용 - -// 1. 휴가 신청 -export const createVacationRequest = async (formData) => { - try { - const response = await apiClient.post(`/vacation-requests`, formData, { - headers: { - 'Content-Type': 'multipart/form-data', - }, - }); - return response.data; - } catch (error) { - console.error('createVacationRequest 에러:', error); - throw error; - } -}; - -// 2. 사원 ID로 휴가 최근 신청 내역 조회 -export const getVacationRequestPreviewsByEmployeeId = async (eid) => { - try { - const response = await apiClient.get( - `/vacation-requests/preview?eid=${eid}` - ); - return response.data; - } catch (error) { - console.error('getVacationRequestPreviewsByEmployeeId 에러:', error); - throw error; - } -}; - -// 3. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 휴가 전체 신청 내역 페이지별 조회 -export const getVacationRequestsByEmployeeId = async (eid, page, date) => { - try { - const response = await apiClient.get( - `/vacation-requests?eid=${eid}&page=${page}&date=${date}` - ); - return response.data; - } catch (error) { - console.error('getVacationRequestsByEmployeeId 에러:', error); - throw error; - } -}; - -// 4. 휴가 정책 등록 -export const createVacationPolicy = async (formData) => { - try { - const response = await apiClient.post(`/vacation-policies`, formData); - return response.data; - } catch (error) { - console.error('createVacationPolicy 에러:', error); - throw error; - } -}; - -// 5. 휴가 정책 수정 -export const updateVacationPolicy = async (id, formData) => { - try { - const response = await apiClient.put(`/vacation-policies/${id}`, formData); - return response.data; - } catch (error) { - console.error('updateVacationPolicy 에러:', error); - throw error; - } -}; - -// 6. 연도별 휴가 정책 조회 -export const getVacationPoliciesByYear = async (year) => { - try { - const response = await apiClient.get(`/vacation-policies?year=${year}`); - return response.data; - } catch (error) { - console.error('getVacationPoliciesByYear 에러:', error); - throw error; - } -}; - -// 7. 연도별 비정기 휴가 정책 조회 -export const getIrregularVacationPoliciesByYear = async (year) => { - try { - const response = await apiClient.get( - `/vacation-policies/irregular?year=${year}` - ); - return response.data; - } catch (error) { - console.error('getIrregularVacationPoliciesByYear 에러:', error); - throw error; - } -}; - -// 8. 휴가 종류 조회 -export const getVacationTypes = async () => { - try { - const response = await apiClient.get(`/vacation-types`); - return response.data; - } catch (error) { - console.error('getVacationTypes 에러:', error); - throw error; - } -}; - -// 9. 휴가 지급 -export const createVacation = async (formData) => { - try { - const response = await apiClient.post(`/vacations`, formData); - return response.data; - } catch (error) { - console.error('createVacation 에러:', error); - throw error; - } -}; - -// 10. 사원별 잔여 휴가 조회 -export const getLeftVacationsByEmployeeId = async (eid, page) => { - try { - const response = await apiClient.get( - `/vacations/left?eid=${eid}&page=${page}` - ); - return response.data; - } catch (error) { - console.error('getLeftVacationsByEmployeeId 에러:', error); - throw error; - } -}; - -// 11. 사원별 사용 휴가 조회 -export const getUsedVacationsByEmployeeId = async (eid, page) => { - try { - const response = await apiClient.get( - `/vacations/used?eid=${eid}&page=${page}` - ); - return response.data; - } catch (error) { - console.error('getUsedVacationsByEmployeeId 에러:', error); - throw error; - } -}; - -// 12. 사원별 잔여 휴가 전체 조회 -export const getLeftAllVacationsByEmployeeId = async (eid) => { - try { - const response = await apiClient.get(`/vacations/left-all?eid=${eid}`); - return response.data; - } catch (error) { - console.error('getLeftAllVacationsByEmployeeId 에러:', error); - throw error; - } -}; - -// 13. 휴가 신청 취소 -export const cancelVacationRequest = async (id, formData) => { - try { - const response = await apiClient.patch( - `/vacation-requests/${id}`, - formData - ); - return response.data; - } catch (error) { - console.error('createVacation 에러:', error); - throw error; - } -}; diff --git a/src/assets/Inflow_profile_img.png b/src/assets/Inflow_profile_img.png deleted file mode 100644 index f3fbb31f43ad27b4b3676ca612cfcaf8a20b7017..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37363 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�hg!i#YUA3w!Zm2=7@3@dP5euhfXXIeoq=!X)O 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 diff --git a/src/assets/admin_default_profile.png b/src/assets/admin_default_profile.png deleted file mode 100644 index 51f90fc4a4007a452811591c83144e3d4b589c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54993 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 HrLq4H1na}4 diff --git a/src/assets/company_logo.svg b/src/assets/company_logo.svg deleted file mode 100644 index 71d40bd..0000000 --- a/src/assets/company_logo.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/assets/emp_basic_profile.png b/src/assets/emp_basic_profile.png deleted file mode 100644 index 876aabfa9fe6d03b9b31b69920beb6c2652b17b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2172 zcmdUx`8V5%7QmCS)KXew86`N+8b&*oswxq_w%C^-6Kf-uN-U*F@rb^rPfLv=shRYPy)^4k{7;Qy+LUBh{}y10nva&WQotYQG&-EhGG0_jMTM|&#V z$jZXNlhq)HQPla$o5F+53ePZHlwga?+WD!*!hn%vl%#+w$j#2q#@-S$0eaQ;+E^Wn zmK^g~W37P~E#BHnyI6I=0|BtERVDpbq--^|28BZTE)NS4?Jt-E=qXMbDFLlUwcb2B zx{1FuR6sfWJDL*mFr<_yVy!Q&#K)VHEI1g|&aC?EJQM2C$@ zw;8Jg$Xhynj-J zso0#>94(ps-dupR1L{}i{1w^lLrM^H!*zoOtd(rdHlQxUaz)<1B^%@PoXY9=7{&E{9D#?l*sopw!En%LmOSS&bc%x&iYTR(~ zVzZ^+BlC)I45q zIwf9&n$0~Q4D~ONo=9c`u)O>X(a=nw=BUH8;$^|NoR3Z!a?}`PItknS&zT&5Q%2VJ zEAu!#feeuyS+}+3erz`opt|DFEj@rYS(|RKR$gAN4_}GhKv3Ys3)R~8EgkQ=mRB2x z_L-rHgQOlshxTb&#)JNytGt0AgUOz6dg1^yE&ewBjn%GKn2FB_Mqb8znwwETg|)Un zj2DC||4`T}l^|fex_ijJ_4nT@CEXUTZA;XNL|TjRC5yG+#n?b8<@(Nzjg9T_cz(K$ z0Z_*uM+`WnuU`G1&2l}t_zvzos`F#}8kDf};aKE)$d7}?_{Z}0WJAc!t`qWsFBxWJ zvqS##JOUwwC~}C#hK*sZ9tmyhTJ7dc$O_>~>`w$Dkx0gfnep_PiQaG<_NVu`rC(W) z-4sIgqhYTN-?%skXK2L%vr@{4!k!E_n&3Q+)@~Hbej108Vte#r{5%8qc z`m1)pao|X3RocE5{+uMZ_G=xHjnp41jrgUCMx)i9FpCxrcHO;@s2tmV@hjywJ6$x7 zl$4a3?^aQVu1yrm+dT2{*s2FTH8Ncb*@#o4Pp+-5CJIh$_CnOv)zg&ZcoHWUm#wyp z9uZU$(}XE3EM#f)3ZmO^)h1;K9n>yrFcay}7lP|It6mFmdgyz{uD0ebe>y%mA7`%V zM>MYDKVpo){f03?eR=l;}CU%Je`@{W*6pY zP-ZzN3|uRJwi(hCx^&+XVwZ7=e8mbIx}1CfcgjGssE@MKBl)|88tOD6;Z!jz$|$1Y z^a%HJB1_0f z<+Ra5njFuaqTY{TI9D%tLrqeoi4fk6Yw7Gf`z~+Om8tpPmI9z{u`9;ps&?lXTf@#G zLvO9wmW+wH>SSOKxtv8WM01|jcQS^%p&cIf)XOID3$mQ`um6CkL3w16`nr`pL8}kp z<-NP_gMaK}PkrIO@nSj<89g<9cWS$4+j@W@|M0a zbfkG#>P_;CGIQg*f2t)N{yXrv_;v?n|1W*~j?P4sI7WRUji<_<1(2^-kS7zk`j7tt Df&IE@ diff --git a/src/assets/icons/company_icon.png b/src/assets/icons/company_icon.png deleted file mode 100644 index 2b610b662b4943df211f1f907b0966e9b1c53da0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 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 diff --git a/src/assets/icons/fold.png b/src/assets/icons/fold.png deleted file mode 100644 index 2a5b79beed9f09e6ef5c2e1d37b274e0ced2e117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!3HD+k8e2&5-9M9EM{Qf76xHPhFNnYfP#$0 zLGDfr>(0r%1aer?9eo`c7&i8E|4C#8^8Gzs978G?r*=E?Iw*Omb70bN zJ8DX`tErl8n#b#noK6w>~E{< cf}Z3{J@VrZn^aX@4m6s<)78&qol`;+0M>9d@Bjb+ diff --git a/src/assets/icons/minus_icon.png b/src/assets/icons/minus_icon.png deleted file mode 100644 index 8dd57918fb7a0e7b8540f5eea85aa89605c0db29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp@K+MCz1|)ZGH@^v_I14-?iy0WWg+Z8+Vb&Z8pde#$ zkh>GZx^prwfgF}}M_)$E)e-c@N{5hU3jv*C{b0^*9Z8qR(nY-$J35(eR>5?gW z0i~^dK`LSi%r_bYCnPi+U}@(K+~D%V_N9{hH*xpEjwuW_H|)!LBUyj@Di$gwMz2{t z$=OukJ;T1$ZT~FRO)u2dl?|_ZuKMxzGSy!-hnGfriMR^cvc9TaG+n^kp-bK2O6;zC zXC*Ed2FzwvcCe8vlhLlfSlh3$0eK431zU^G{Jm&V(z;XrpXc)I$ztaD0e F0szz#Tj&4) diff --git a/src/assets/icons/plus_icon.png b/src/assets/icons/plus_icon.png deleted file mode 100644 index b3f4c5f436667a6c8c04f99f5022e697794fbb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<1|;p3UCV(KXMsm#F#`j)FbFd;%$g$s6l5$8 za(7}_cTVOdki(Mh=@nvLV`+2790NyovFV?ER&0AJRQga=fA79;U)Nn{+QPcf zPvGK0MFqbOIYaejP940j)to(aCc3+oSROX7=@F^exWcJFX@46ma+uiXiSh>!itnI?FVdQ&MBb@0G?xjj{pDw diff --git a/src/assets/icons/unfold.png b/src/assets/icons/unfold.png deleted file mode 100644 index 78e14ea348b7b42a0e442594dc29492b2354e67c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3HF!2OrA@2^4rl7Bet#3xhBt!>l*8o|0J>k`4OHjjv*C{xxJ3O4F&=%vlA9r9AM(hVr6~6 zpsVq)x67+R-G0WThm0>(i)Y`y`^4#oAN%U4xh&Q(S--^H4(H6+yL`Jr_7w9#{VMyT mZC4MoG0&OSrFY>_A#>0vq0R0;DlP%-VDNPHb6Mw<&;$Ti`#fO) diff --git a/src/assets/logo.svg b/src/assets/logo.svg deleted file mode 100644 index 7565660..0000000 --- a/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/assets/main.css b/src/assets/main.css deleted file mode 100644 index e0b1bc5..0000000 --- a/src/assets/main.css +++ /dev/null @@ -1,133 +0,0 @@ -/* Noto Sans KR 글꼴을 import */ -@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); - -:root { - font-size: 10px; -} - -* { - margin: 0; - padding: 0; - box-sizing: border-box; - font-family: inherit; -} - -html, -body { - width: 100%; - height: 100%; - font-size: 100%; - font-family: 'Noto Sans KR', sans-serif, 'inter'; -} - -button, -input, -textarea, -select { - font: inherit; /* 폰트 스타일 상속 */ - color: inherit; - background: none; - border: none; - outline: none; - padding: 0; - margin: 0; - appearance: none; /* 브라우저 기본 스타일 제거 */ -} - -ul, -ol { - list-style: none; /* 리스트 스타일 제거 */ -} - -a { - text-decoration: none; /* 링크 밑줄 제거 */ - color: inherit; /* 부모 색상 상속 */ -} - -img, -video { - max-width: 100%; - height: auto; /* 반응형 크기 */ - display: block; -} - -table { - border-collapse: collapse; /* 테이블 경계선 겹치기 제거 */ - border-spacing: 0; -} - -blockquote, -q { - quotes: none; /* 인용 부호 제거 */ -} - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ''; -} - -button { - cursor: pointer; /* 버튼 기본 커서 설정 */ - background: transparent; /* 기본 배경 제거 */ -} - -pre[class*='language-'] { - border-radius: 0.6rem; -} - -@media screen and (max-width: 1600px) { - :root { - font-size: 9.5px; - } -} - -@media screen and (max-width: 1400px) { - :root { - font-size: 9px; - } -} - -@media screen and (max-width: 1200px) { - :root { - font-size: 8.5px; - } -} - -@media screen and (max-width: 1000px) { - :root { - font-size: 8px; - } -} - -@media screen and (max-width: 800px) { - :root { - font-size: 7.5px; - } -} - -@media screen and (max-width: 600px) { - :root { - font-size: 7px; - } -} - -@media screen and (max-width: 400px) { - :root { - font-size: 6px; - } -} - -@media screen and (max-width: 350px) { - :root { - font-size: 5.5px; - } -} - -@media screen and (max-width: 300px) { - :root { - font-size: 5px; - } -} diff --git a/src/components/attendance/CancelRequestModal.vue b/src/components/attendance/CancelRequestModal.vue deleted file mode 100644 index 7c1cebe..0000000 --- a/src/components/attendance/CancelRequestModal.vue +++ /dev/null @@ -1,169 +0,0 @@ - - - - - diff --git a/src/components/buttons/ArrowLeftButton.vue b/src/components/buttons/ArrowLeftButton.vue deleted file mode 100644 index fa23094..0000000 --- a/src/components/buttons/ArrowLeftButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/buttons/ArrowUpButton.vue b/src/components/buttons/ArrowUpButton.vue deleted file mode 100644 index eb27333..0000000 --- a/src/components/buttons/ArrowUpButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/buttons/CaretLeftButton.vue b/src/components/buttons/CaretLeftButton.vue deleted file mode 100644 index 4ad8566..0000000 --- a/src/components/buttons/CaretLeftButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/buttons/CaretRightButton.vue b/src/components/buttons/CaretRightButton.vue deleted file mode 100644 index 9977a18..0000000 --- a/src/components/buttons/CaretRightButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/buttons/CheckButton.vue b/src/components/buttons/CheckButton.vue deleted file mode 100644 index 3c09c1c..0000000 --- a/src/components/buttons/CheckButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/buttons/ChevronLeftButton.vue b/src/components/buttons/ChevronLeftButton.vue deleted file mode 100644 index 174e61a..0000000 --- a/src/components/buttons/ChevronLeftButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/buttons/ChevronRightButton.vue b/src/components/buttons/ChevronRightButton.vue deleted file mode 100644 index 6b61642..0000000 --- a/src/components/buttons/ChevronRightButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/buttons/CopyButton.vue b/src/components/buttons/CopyButton.vue deleted file mode 100644 index d783065..0000000 --- a/src/components/buttons/CopyButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/buttons/HomeButton.vue b/src/components/buttons/HomeButton.vue deleted file mode 100644 index 7118039..0000000 --- a/src/components/buttons/HomeButton.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/src/components/buttons/MoreListButton.vue b/src/components/buttons/MoreListButton.vue deleted file mode 100644 index 22e432a..0000000 --- a/src/components/buttons/MoreListButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/src/components/buttons/SearchButton.vue b/src/components/buttons/SearchButton.vue deleted file mode 100644 index 1c6242e..0000000 --- a/src/components/buttons/SearchButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/buttons/SettingButton.vue b/src/components/buttons/SettingButton.vue deleted file mode 100644 index 598fd62..0000000 --- a/src/components/buttons/SettingButton.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/src/components/buttons/XmarkButton.vue b/src/components/buttons/XmarkButton.vue deleted file mode 100644 index b8ed605..0000000 --- a/src/components/buttons/XmarkButton.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/components/common/BubbleBackground.vue b/src/components/common/BubbleBackground.vue deleted file mode 100644 index 4c5b62f..0000000 --- a/src/components/common/BubbleBackground.vue +++ /dev/null @@ -1,148 +0,0 @@ - - - diff --git a/src/components/common/ChangeMonthComponent.vue b/src/components/common/ChangeMonthComponent.vue deleted file mode 100644 index b3a0c6c..0000000 --- a/src/components/common/ChangeMonthComponent.vue +++ /dev/null @@ -1,100 +0,0 @@ - - - - - diff --git a/src/components/common/ChangeYearComponent.vue b/src/components/common/ChangeYearComponent.vue deleted file mode 100644 index abbc9e8..0000000 --- a/src/components/common/ChangeYearComponent.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - - diff --git a/src/components/common/CheckCircle.vue b/src/components/common/CheckCircle.vue deleted file mode 100644 index a80e53f..0000000 --- a/src/components/common/CheckCircle.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/src/components/common/CommonArticle.vue b/src/components/common/CommonArticle.vue deleted file mode 100644 index c0b2f6a..0000000 --- a/src/components/common/CommonArticle.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - - - diff --git a/src/components/common/CommonHeader.vue b/src/components/common/CommonHeader.vue deleted file mode 100644 index c8194a3..0000000 --- a/src/components/common/CommonHeader.vue +++ /dev/null @@ -1,200 +0,0 @@ - - - - - diff --git a/src/components/common/CommonMenu.vue b/src/components/common/CommonMenu.vue deleted file mode 100644 index 37e65e5..0000000 --- a/src/components/common/CommonMenu.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - - - diff --git a/src/components/common/CommonNav.vue b/src/components/common/CommonNav.vue deleted file mode 100644 index d4aa3a3..0000000 --- a/src/components/common/CommonNav.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - - - diff --git a/src/components/common/CompanyLogo.vue b/src/components/common/CompanyLogo.vue deleted file mode 100644 index 749396d..0000000 --- a/src/components/common/CompanyLogo.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/src/components/common/CompanyName.vue b/src/components/common/CompanyName.vue deleted file mode 100644 index 115d965..0000000 --- a/src/components/common/CompanyName.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - - diff --git a/src/components/common/DepartmentMemberInfoComponent.vue b/src/components/common/DepartmentMemberInfoComponent.vue deleted file mode 100644 index a4d1738..0000000 --- a/src/components/common/DepartmentMemberInfoComponent.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - - - diff --git a/src/components/common/FileItem.vue b/src/components/common/FileItem.vue deleted file mode 100644 index d638864..0000000 --- a/src/components/common/FileItem.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - - - diff --git a/src/components/common/InfoCircle.vue b/src/components/common/InfoCircle.vue deleted file mode 100644 index 832ed2d..0000000 --- a/src/components/common/InfoCircle.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - - - diff --git a/src/components/common/LoadingOverlay.vue b/src/components/common/LoadingOverlay.vue deleted file mode 100644 index b3c353a..0000000 --- a/src/components/common/LoadingOverlay.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - - - diff --git a/src/components/common/LoginSection.vue b/src/components/common/LoginSection.vue deleted file mode 100644 index a7b3f72..0000000 --- a/src/components/common/LoginSection.vue +++ /dev/null @@ -1,201 +0,0 @@ - - - - - diff --git a/src/components/common/MyInfoComponent.vue b/src/components/common/MyInfoComponent.vue deleted file mode 100644 index 427d448..0000000 --- a/src/components/common/MyInfoComponent.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - - diff --git a/src/components/common/PaginationComponent.vue b/src/components/common/PaginationComponent.vue deleted file mode 100644 index ab1e974..0000000 --- a/src/components/common/PaginationComponent.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - - - diff --git a/src/components/common/SearchEmployeeComponent.vue b/src/components/common/SearchEmployeeComponent.vue deleted file mode 100644 index 3cfe923..0000000 --- a/src/components/common/SearchEmployeeComponent.vue +++ /dev/null @@ -1,168 +0,0 @@ - - - - - diff --git a/src/components/common/SelectAppTypeComponent.vue b/src/components/common/SelectAppTypeComponent.vue deleted file mode 100644 index 26fcf81..0000000 --- a/src/components/common/SelectAppTypeComponent.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - - diff --git a/src/components/common/SelectPeriodComponent.vue b/src/components/common/SelectPeriodComponent.vue deleted file mode 100644 index 37dbd14..0000000 --- a/src/components/common/SelectPeriodComponent.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - - - diff --git a/src/components/common/SelectYearMonthComponent.vue b/src/components/common/SelectYearMonthComponent.vue deleted file mode 100644 index 5c87cfe..0000000 --- a/src/components/common/SelectYearMonthComponent.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/AccountDropdown.vue b/src/components/dropdowns/AccountDropdown.vue deleted file mode 100644 index 2d5d0c7..0000000 --- a/src/components/dropdowns/AccountDropdown.vue +++ /dev/null @@ -1,123 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/AppointmentHisDropDown.vue b/src/components/dropdowns/AppointmentHisDropDown.vue deleted file mode 100644 index 15db790..0000000 --- a/src/components/dropdowns/AppointmentHisDropDown.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/DateDropDown.vue b/src/components/dropdowns/DateDropDown.vue deleted file mode 100644 index 63bdd67..0000000 --- a/src/components/dropdowns/DateDropDown.vue +++ /dev/null @@ -1,107 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/DisciplineRewardTypeDropDown.vue b/src/components/dropdowns/DisciplineRewardTypeDropDown.vue deleted file mode 100644 index fa84eca..0000000 --- a/src/components/dropdowns/DisciplineRewardTypeDropDown.vue +++ /dev/null @@ -1,54 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/DropdownItem.vue b/src/components/dropdowns/DropdownItem.vue deleted file mode 100644 index 8258410..0000000 --- a/src/components/dropdowns/DropdownItem.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/HalfDropdown.vue b/src/components/dropdowns/HalfDropdown.vue deleted file mode 100644 index bd82bf9..0000000 --- a/src/components/dropdowns/HalfDropdown.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/src/components/dropdowns/PeriodDropDown.vue b/src/components/dropdowns/PeriodDropDown.vue deleted file mode 100644 index cbc74f4..0000000 --- a/src/components/dropdowns/PeriodDropDown.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/ThirtyMinuteDropDown.vue b/src/components/dropdowns/ThirtyMinuteDropDown.vue deleted file mode 100644 index dfe5e86..0000000 --- a/src/components/dropdowns/ThirtyMinuteDropDown.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/TimeDropDown.vue b/src/components/dropdowns/TimeDropDown.vue deleted file mode 100644 index e5d4e25..0000000 --- a/src/components/dropdowns/TimeDropDown.vue +++ /dev/null @@ -1,76 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/YearDropDown.vue b/src/components/dropdowns/YearDropDown.vue deleted file mode 100644 index 17505c7..0000000 --- a/src/components/dropdowns/YearDropDown.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - - - diff --git a/src/components/dropdowns/YearMonthDropDown.vue b/src/components/dropdowns/YearMonthDropDown.vue deleted file mode 100644 index a12c5ae..0000000 --- a/src/components/dropdowns/YearMonthDropDown.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - - diff --git a/src/components/employee-search/DepartmentHeirarchy.vue b/src/components/employee-search/DepartmentHeirarchy.vue deleted file mode 100644 index 66adb12..0000000 --- a/src/components/employee-search/DepartmentHeirarchy.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - - - diff --git a/src/components/employee-search/EmployeeDetail.vue b/src/components/employee-search/EmployeeDetail.vue deleted file mode 100644 index 5a1e6fe..0000000 --- a/src/components/employee-search/EmployeeDetail.vue +++ /dev/null @@ -1,143 +0,0 @@ - - - - - diff --git a/src/components/employee-search/EmployeeList.vue b/src/components/employee-search/EmployeeList.vue deleted file mode 100644 index 27994c5..0000000 --- a/src/components/employee-search/EmployeeList.vue +++ /dev/null @@ -1,125 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/employee-search/SearchBar.vue b/src/components/employee-search/SearchBar.vue deleted file mode 100644 index aebd281..0000000 --- a/src/components/employee-search/SearchBar.vue +++ /dev/null @@ -1,54 +0,0 @@ - - - - - diff --git a/src/components/employee-search/TreeNode.vue b/src/components/employee-search/TreeNode.vue deleted file mode 100644 index c222fdf..0000000 --- a/src/components/employee-search/TreeNode.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - - - diff --git a/src/components/icons/AddressBookIcon.vue b/src/components/icons/AddressBookIcon.vue deleted file mode 100644 index ad5cb1d..0000000 --- a/src/components/icons/AddressBookIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/ArrowLeftIcon.vue b/src/components/icons/ArrowLeftIcon.vue deleted file mode 100644 index c5ad9fd..0000000 --- a/src/components/icons/ArrowLeftIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/ArrowUpIcon.vue b/src/components/icons/ArrowUpIcon.vue deleted file mode 100644 index 36cbe50..0000000 --- a/src/components/icons/ArrowUpIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/BuildingIcon.vue b/src/components/icons/BuildingIcon.vue deleted file mode 100644 index 3ab36b2..0000000 --- a/src/components/icons/BuildingIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/CaretDownIcon.vue b/src/components/icons/CaretDownIcon.vue deleted file mode 100644 index 9ed8999..0000000 --- a/src/components/icons/CaretDownIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/CaretLeftIcon.vue b/src/components/icons/CaretLeftIcon.vue deleted file mode 100644 index fdf45f6..0000000 --- a/src/components/icons/CaretLeftIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/CaretRightIcon.vue b/src/components/icons/CaretRightIcon.vue deleted file mode 100644 index d42ae24..0000000 --- a/src/components/icons/CaretRightIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/CaretUpIcon.vue b/src/components/icons/CaretUpIcon.vue deleted file mode 100644 index 83e5349..0000000 --- a/src/components/icons/CaretUpIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/ChartIcon.vue b/src/components/icons/ChartIcon.vue deleted file mode 100644 index b31e930..0000000 --- a/src/components/icons/ChartIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/CheckIcon.vue b/src/components/icons/CheckIcon.vue deleted file mode 100644 index f902b59..0000000 --- a/src/components/icons/CheckIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/ChevronDownIcon.vue b/src/components/icons/ChevronDownIcon.vue deleted file mode 100644 index 3899799..0000000 --- a/src/components/icons/ChevronDownIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/ChevronLeftIcon.vue b/src/components/icons/ChevronLeftIcon.vue deleted file mode 100644 index 603348a..0000000 --- a/src/components/icons/ChevronLeftIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/ChevronRightIcon.vue b/src/components/icons/ChevronRightIcon.vue deleted file mode 100644 index 5d365af..0000000 --- a/src/components/icons/ChevronRightIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/ChevronUpIcon.vue b/src/components/icons/ChevronUpIcon.vue deleted file mode 100644 index 25819d0..0000000 --- a/src/components/icons/ChevronUpIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/ClockIcon.vue b/src/components/icons/ClockIcon.vue deleted file mode 100644 index 3c5f1af..0000000 --- a/src/components/icons/ClockIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/CopyIcon.vue b/src/components/icons/CopyIcon.vue deleted file mode 100644 index 574c072..0000000 --- a/src/components/icons/CopyIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/EvaluationIcon.vue b/src/components/icons/EvaluationIcon.vue deleted file mode 100644 index 943e9dc..0000000 --- a/src/components/icons/EvaluationIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/ExcelIcon.vue b/src/components/icons/ExcelIcon.vue deleted file mode 100644 index 976af3d..0000000 --- a/src/components/icons/ExcelIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/FolderCloseIcon.vue b/src/components/icons/FolderCloseIcon.vue deleted file mode 100644 index 2ff6f3d..0000000 --- a/src/components/icons/FolderCloseIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/FolerOpenIcon.vue b/src/components/icons/FolerOpenIcon.vue deleted file mode 100644 index cb4405f..0000000 --- a/src/components/icons/FolerOpenIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/GearIcon.vue b/src/components/icons/GearIcon.vue deleted file mode 100644 index c40fc8e..0000000 --- a/src/components/icons/GearIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/HomeIcon.vue b/src/components/icons/HomeIcon.vue deleted file mode 100644 index e21b6a2..0000000 --- a/src/components/icons/HomeIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/MenuIcon.vue b/src/components/icons/MenuIcon.vue deleted file mode 100644 index 70951de..0000000 --- a/src/components/icons/MenuIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/MinusIcon.vue b/src/components/icons/MinusIcon.vue deleted file mode 100644 index 80f5269..0000000 --- a/src/components/icons/MinusIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/PaperClipIcon.vue b/src/components/icons/PaperClipIcon.vue deleted file mode 100644 index a8a6818..0000000 --- a/src/components/icons/PaperClipIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/PlusIcon.vue b/src/components/icons/PlusIcon.vue deleted file mode 100644 index 37ebc1c..0000000 --- a/src/components/icons/PlusIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/QuestionIcon.vue b/src/components/icons/QuestionIcon.vue deleted file mode 100644 index 8dafcb5..0000000 --- a/src/components/icons/QuestionIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/RobotIcon.vue b/src/components/icons/RobotIcon.vue deleted file mode 100644 index b1619cd..0000000 --- a/src/components/icons/RobotIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/SearchIcon.vue b/src/components/icons/SearchIcon.vue deleted file mode 100644 index 0c761a8..0000000 --- a/src/components/icons/SearchIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/UserIcon.vue b/src/components/icons/UserIcon.vue deleted file mode 100644 index eb0a86a..0000000 --- a/src/components/icons/UserIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/icons/XmarkIcon.vue b/src/components/icons/XmarkIcon.vue deleted file mode 100644 index 4c5b424..0000000 --- a/src/components/icons/XmarkIcon.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/modals/CrudModal.vue b/src/components/modals/CrudModal.vue deleted file mode 100644 index 26a2fd4..0000000 --- a/src/components/modals/CrudModal.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - - diff --git a/src/components/modals/ModalBackground.vue b/src/components/modals/ModalBackground.vue deleted file mode 100644 index 5fe20de..0000000 --- a/src/components/modals/ModalBackground.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/src/components/modals/ModalItem.vue b/src/components/modals/ModalItem.vue deleted file mode 100644 index d4752e0..0000000 --- a/src/components/modals/ModalItem.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/src/components/modals/NoticeModal.vue b/src/components/modals/NoticeModal.vue deleted file mode 100644 index 4b47185..0000000 --- a/src/components/modals/NoticeModal.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - - - diff --git a/src/components/modals/ResetPasswordModal.vue b/src/components/modals/ResetPasswordModal.vue deleted file mode 100644 index e4cfa60..0000000 --- a/src/components/modals/ResetPasswordModal.vue +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - diff --git a/src/components/modals/SettingModal.vue b/src/components/modals/SettingModal.vue deleted file mode 100644 index c9e3f0b..0000000 --- a/src/components/modals/SettingModal.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - - - diff --git a/src/components/nav/MenuNav.vue b/src/components/nav/MenuNav.vue deleted file mode 100644 index 12fb9ae..0000000 --- a/src/components/nav/MenuNav.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - - - diff --git a/src/components/nav/MonthSelectNav.vue b/src/components/nav/MonthSelectNav.vue deleted file mode 100644 index ae4995f..0000000 --- a/src/components/nav/MonthSelectNav.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - - - diff --git a/src/components/nav/SubMenuNav.vue b/src/components/nav/SubMenuNav.vue deleted file mode 100644 index 4a60c60..0000000 --- a/src/components/nav/SubMenuNav.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - diff --git a/src/components/salarytable/SalaryTable.vue b/src/components/salarytable/SalaryTable.vue deleted file mode 100644 index 83b308e..0000000 --- a/src/components/salarytable/SalaryTable.vue +++ /dev/null @@ -1,260 +0,0 @@ - - - - - diff --git a/src/components/semantic/ArticleItem.vue b/src/components/semantic/ArticleItem.vue deleted file mode 100644 index 2f14d45..0000000 --- a/src/components/semantic/ArticleItem.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/src/components/semantic/ButtonItem.vue b/src/components/semantic/ButtonItem.vue deleted file mode 100644 index 2db09a6..0000000 --- a/src/components/semantic/ButtonItem.vue +++ /dev/null @@ -1,83 +0,0 @@ - - - diff --git a/src/components/semantic/FigcaptionItem.vue b/src/components/semantic/FigcaptionItem.vue deleted file mode 100644 index 78c5d1a..0000000 --- a/src/components/semantic/FigcaptionItem.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/src/components/semantic/FigureItem.vue b/src/components/semantic/FigureItem.vue deleted file mode 100644 index ab25b01..0000000 --- a/src/components/semantic/FigureItem.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/src/components/semantic/FlexItem.vue b/src/components/semantic/FlexItem.vue deleted file mode 100644 index b8389f2..0000000 --- a/src/components/semantic/FlexItem.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - diff --git a/src/components/semantic/FooterItem.vue b/src/components/semantic/FooterItem.vue deleted file mode 100644 index 3de7e4e..0000000 --- a/src/components/semantic/FooterItem.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/src/components/semantic/GridItem.vue b/src/components/semantic/GridItem.vue deleted file mode 100644 index 176c63b..0000000 --- a/src/components/semantic/GridItem.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/src/components/semantic/HeaderItem.vue b/src/components/semantic/HeaderItem.vue deleted file mode 100644 index 1e96192..0000000 --- a/src/components/semantic/HeaderItem.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/src/components/semantic/LiItem.vue b/src/components/semantic/LiItem.vue deleted file mode 100644 index 4f0abef..0000000 --- a/src/components/semantic/LiItem.vue +++ /dev/null @@ -1,69 +0,0 @@ - - - diff --git a/src/components/semantic/MainItem.vue b/src/components/semantic/MainItem.vue deleted file mode 100644 index 1a8d959..0000000 --- a/src/components/semantic/MainItem.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - - - diff --git a/src/components/semantic/NavItem.vue b/src/components/semantic/NavItem.vue deleted file mode 100644 index fb040f7..0000000 --- a/src/components/semantic/NavItem.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/src/components/semantic/SectionItem.vue b/src/components/semantic/SectionItem.vue deleted file mode 100644 index ae23499..0000000 --- a/src/components/semantic/SectionItem.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/src/components/semantic/TableCell.vue b/src/components/semantic/TableCell.vue deleted file mode 100644 index 7b9a5f6..0000000 --- a/src/components/semantic/TableCell.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - - - diff --git a/src/components/semantic/TableItem.vue b/src/components/semantic/TableItem.vue deleted file mode 100644 index 4fa6bb3..0000000 --- a/src/components/semantic/TableItem.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - - diff --git a/src/components/semantic/TableRow.vue b/src/components/semantic/TableRow.vue deleted file mode 100644 index bee4b64..0000000 --- a/src/components/semantic/TableRow.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/src/components/semantic/UlItem.vue b/src/components/semantic/UlItem.vue deleted file mode 100644 index 39ccb29..0000000 --- a/src/components/semantic/UlItem.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/src/components/widgets/MyAttendanceWidget.vue b/src/components/widgets/MyAttendanceWidget.vue deleted file mode 100644 index 9d2ac7a..0000000 --- a/src/components/widgets/MyAttendanceWidget.vue +++ /dev/null @@ -1,182 +0,0 @@ - - - diff --git a/src/components/widgets/MyScheduleWidget.vue b/src/components/widgets/MyScheduleWidget.vue deleted file mode 100644 index 26c2f01..0000000 --- a/src/components/widgets/MyScheduleWidget.vue +++ /dev/null @@ -1,183 +0,0 @@ - - - - - diff --git a/src/components/widgets/MyTeamMemberWidget.vue b/src/components/widgets/MyTeamMemberWidget.vue deleted file mode 100644 index d5b9a75..0000000 --- a/src/components/widgets/MyTeamMemberWidget.vue +++ /dev/null @@ -1,132 +0,0 @@ - - - - - diff --git a/src/components/widgets/ScheduleDdayWidget.vue b/src/components/widgets/ScheduleDdayWidget.vue deleted file mode 100644 index d0b20d1..0000000 --- a/src/components/widgets/ScheduleDdayWidget.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - - - diff --git a/src/components/widgets/WidgetItem.vue b/src/components/widgets/WidgetItem.vue deleted file mode 100644 index 9f51517..0000000 --- a/src/components/widgets/WidgetItem.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - - - diff --git a/src/main.js b/src/main.js index 329680f..01433bc 100644 --- a/src/main.js +++ b/src/main.js @@ -1,14 +1,4 @@ -import './assets/main.css'; +import { createApp } from 'vue' +import App from './App.vue' -import { createApp } from 'vue'; -import { createPinia } from 'pinia'; - -import App from './App.vue'; -import router from './router'; - -const app = createApp(App); - -app.use(createPinia()); -app.use(router); - -app.mount('#app'); \ No newline at end of file +createApp(App).mount('#app') diff --git a/src/router/index.js b/src/router/index.js deleted file mode 100644 index d7b112e..0000000 --- a/src/router/index.js +++ /dev/null @@ -1,26 +0,0 @@ -import { createRouter, createWebHistory } from 'vue-router'; -import HomeView from '../views/home/HomeView.vue'; -import LoginView from '@/views/login/LoginView.vue'; - -const routes = [ - { - path: '/', - name: 'home', - component: HomeView, - }, - { - path: '/login', - name: 'login', - component: LoginView, - }, -]; - -const router = createRouter({ - history: createWebHistory(), - routes, - scrollBehavior() { - return { top: 0 }; - }, -}); - -export default router; diff --git a/src/stores/counter.js b/src/stores/counter.js deleted file mode 100644 index e884e6d..0000000 --- a/src/stores/counter.js +++ /dev/null @@ -1,12 +0,0 @@ -import { ref, computed } from 'vue'; -import { defineStore } from 'pinia'; - -export const useCounterStore = defineStore('counter', () => { - const count = ref(0); - const doubleCount = computed(() => count.value * 2); - function increment() { - count.value++; - } - - return { count, doubleCount, increment }; -}); diff --git a/src/views/home/HomeView.vue b/src/views/home/HomeView.vue deleted file mode 100644 index 33b5662..0000000 --- a/src/views/home/HomeView.vue +++ /dev/null @@ -1,110 +0,0 @@ - - - - - diff --git a/src/views/login/LoginView.vue b/src/views/login/LoginView.vue deleted file mode 100644 index cf53cdd..0000000 --- a/src/views/login/LoginView.vue +++ /dev/null @@ -1,116 +0,0 @@ - - - - - From 9b679a9b4be4b7722148c12c4c019548ec5c7b82 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 18:09:49 +0900 Subject: [PATCH 19/23] deploy test --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index edb90f3..4abd5d8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -57,8 +57,8 @@ jobs: with: aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - application_name: inflow-v5 - environment_name: Inflow-v5-env + application_name: inflow-v6 + environment_name: Inflow-v6-env version_label: github-action-${{ github.sha }} region: ap-northeast-2 deployment_package: deploy/deploy.zip From bf1f9c13afefa613fc1f3434602a3d4014fd32b5 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 18:17:20 +0900 Subject: [PATCH 20/23] deploy test --- src/App.vue | 19 +- src/api/attendance.js | 327 +++++++++++++ src/api/axios.js | 80 ++++ src/api/chatbot.js | 12 + src/api/department.js | 53 +++ src/api/emp_attach.js | 261 +++++++++++ src/api/emp_info.js | 251 ++++++++++ src/api/evaluation.js | 434 ++++++++++++++++++ src/api/payroll.js | 147 ++++++ src/api/statistics.js | 0 src/api/vacation.js | 161 +++++++ src/assets/Inflow_profile_img.png | Bin 0 -> 37363 bytes src/assets/admin_default_profile.png | Bin 0 -> 54993 bytes src/assets/company_logo.svg | 17 + src/assets/emp_basic_profile.png | Bin 0 -> 2172 bytes src/assets/icons/company_icon.png | Bin 0 -> 328 bytes src/assets/icons/excel_icon.png | Bin 0 -> 537 bytes src/assets/icons/eye_closed.png | Bin 0 -> 1333 bytes src/assets/icons/eye_open.png | Bin 0 -> 1243 bytes src/assets/icons/file_close.png | Bin 0 -> 270 bytes src/assets/icons/file_open.png | Bin 0 -> 451 bytes src/assets/icons/fold.png | Bin 0 -> 186 bytes src/assets/icons/minus_icon.png | Bin 0 -> 263 bytes src/assets/icons/plus_icon.png | Bin 0 -> 321 bytes src/assets/icons/unfold.png | Bin 0 -> 195 bytes src/assets/logo.svg | 1 + src/assets/main.css | 133 ++++++ .../attendance/CancelRequestModal.vue | 169 +++++++ src/components/buttons/ArrowLeftButton.vue | 27 ++ src/components/buttons/ArrowUpButton.vue | 27 ++ src/components/buttons/CaretLeftButton.vue | 27 ++ src/components/buttons/CaretRightButton.vue | 27 ++ src/components/buttons/CheckButton.vue | 27 ++ src/components/buttons/ChevronLeftButton.vue | 27 ++ src/components/buttons/ChevronRightButton.vue | 27 ++ src/components/buttons/CopyButton.vue | 27 ++ src/components/buttons/HomeButton.vue | 35 ++ src/components/buttons/MoreListButton.vue | 27 ++ src/components/buttons/SearchButton.vue | 27 ++ src/components/buttons/SettingButton.vue | 33 ++ src/components/buttons/XmarkButton.vue | 27 ++ src/components/common/BubbleBackground.vue | 148 ++++++ .../common/ChangeMonthComponent.vue | 100 ++++ src/components/common/ChangeYearComponent.vue | 74 +++ src/components/common/CheckCircle.vue | 33 ++ src/components/common/CommonArticle.vue | 72 +++ src/components/common/CommonHeader.vue | 200 ++++++++ src/components/common/CommonMenu.vue | 43 ++ src/components/common/CommonNav.vue | 91 ++++ src/components/common/CompanyLogo.vue | 21 + src/components/common/CompanyName.vue | 34 ++ .../common/DepartmentMemberInfoComponent.vue | 104 +++++ src/components/common/FileItem.vue | 56 +++ src/components/common/InfoCircle.vue | 92 ++++ src/components/common/LoadingOverlay.vue | 62 +++ src/components/common/LoginSection.vue | 201 ++++++++ src/components/common/MyInfoComponent.vue | 82 ++++ src/components/common/PaginationComponent.vue | 86 ++++ .../common/SearchEmployeeComponent.vue | 168 +++++++ .../common/SelectAppTypeComponent.vue | 52 +++ .../common/SelectPeriodComponent.vue | 114 +++++ .../common/SelectYearMonthComponent.vue | 39 ++ src/components/dropdowns/AccountDropdown.vue | 123 +++++ .../dropdowns/AppointmentHisDropDown.vue | 130 ++++++ src/components/dropdowns/DateDropDown.vue | 107 +++++ .../DisciplineRewardTypeDropDown.vue | 54 +++ src/components/dropdowns/DropdownItem.vue | 121 +++++ src/components/dropdowns/HalfDropdown.vue | 29 ++ src/components/dropdowns/PeriodDropDown.vue | 84 ++++ .../dropdowns/ThirtyMinuteDropDown.vue | 82 ++++ src/components/dropdowns/TimeDropDown.vue | 76 +++ src/components/dropdowns/YearDropDown.vue | 71 +++ .../dropdowns/YearMonthDropDown.vue | 95 ++++ .../employee-search/DepartmentHeirarchy.vue | 60 +++ .../employee-search/EmployeeDetail.vue | 143 ++++++ .../employee-search/EmployeeList.vue | 125 +++++ src/components/employee-search/SearchBar.vue | 54 +++ src/components/employee-search/TreeNode.vue | 127 +++++ src/components/icons/AddressBookIcon.vue | 3 + src/components/icons/ArrowLeftIcon.vue | 3 + src/components/icons/ArrowUpIcon.vue | 3 + src/components/icons/BuildingIcon.vue | 3 + src/components/icons/CaretDownIcon.vue | 3 + src/components/icons/CaretLeftIcon.vue | 3 + src/components/icons/CaretRightIcon.vue | 3 + src/components/icons/CaretUpIcon.vue | 3 + src/components/icons/ChartIcon.vue | 3 + src/components/icons/CheckIcon.vue | 3 + src/components/icons/ChevronDownIcon.vue | 3 + src/components/icons/ChevronLeftIcon.vue | 3 + src/components/icons/ChevronRightIcon.vue | 3 + src/components/icons/ChevronUpIcon.vue | 3 + src/components/icons/ClockIcon.vue | 3 + src/components/icons/CopyIcon.vue | 3 + src/components/icons/EvaluationIcon.vue | 3 + src/components/icons/ExcelIcon.vue | 3 + src/components/icons/FolderCloseIcon.vue | 3 + src/components/icons/FolerOpenIcon.vue | 3 + src/components/icons/GearIcon.vue | 3 + src/components/icons/HomeIcon.vue | 3 + src/components/icons/MenuIcon.vue | 3 + src/components/icons/MinusIcon.vue | 3 + src/components/icons/PaperClipIcon.vue | 3 + src/components/icons/PlusIcon.vue | 3 + src/components/icons/QuestionIcon.vue | 3 + src/components/icons/RobotIcon.vue | 3 + src/components/icons/SearchIcon.vue | 3 + src/components/icons/UserIcon.vue | 3 + src/components/icons/XmarkIcon.vue | 3 + src/components/modals/CrudModal.vue | 108 +++++ src/components/modals/ModalBackground.vue | 21 + src/components/modals/ModalItem.vue | 40 ++ src/components/modals/NoticeModal.vue | 37 ++ src/components/modals/ResetPasswordModal.vue | 268 +++++++++++ src/components/modals/SettingModal.vue | 59 +++ src/components/nav/MenuNav.vue | 60 +++ src/components/nav/MonthSelectNav.vue | 101 ++++ src/components/nav/SubMenuNav.vue | 88 ++++ src/components/salarytable/SalaryTable.vue | 260 +++++++++++ src/components/semantic/ArticleItem.vue | 81 ++++ src/components/semantic/ButtonItem.vue | 83 ++++ src/components/semantic/FigcaptionItem.vue | 81 ++++ src/components/semantic/FigureItem.vue | 81 ++++ src/components/semantic/FlexItem.vue | 86 ++++ src/components/semantic/FooterItem.vue | 81 ++++ src/components/semantic/GridItem.vue | 81 ++++ src/components/semantic/HeaderItem.vue | 81 ++++ src/components/semantic/LiItem.vue | 69 +++ src/components/semantic/MainItem.vue | 92 ++++ src/components/semantic/NavItem.vue | 81 ++++ src/components/semantic/SectionItem.vue | 81 ++++ src/components/semantic/TableCell.vue | 97 ++++ src/components/semantic/TableItem.vue | 44 ++ src/components/semantic/TableRow.vue | 11 + src/components/semantic/UlItem.vue | 81 ++++ src/components/widgets/MyAttendanceWidget.vue | 182 ++++++++ src/components/widgets/MyScheduleWidget.vue | 183 ++++++++ src/components/widgets/MyTeamMemberWidget.vue | 132 ++++++ src/components/widgets/ScheduleDdayWidget.vue | 87 ++++ src/components/widgets/WidgetItem.vue | 55 +++ src/main.js | 19 +- src/router/index.js | 26 ++ src/views/home/HomeView.vue | 110 +++++ src/views/login/LoginView.vue | 116 +++++ 144 files changed, 9018 insertions(+), 21 deletions(-) create mode 100644 src/api/attendance.js create mode 100644 src/api/axios.js create mode 100644 src/api/chatbot.js create mode 100644 src/api/department.js create mode 100644 src/api/emp_attach.js create mode 100644 src/api/emp_info.js create mode 100644 src/api/evaluation.js create mode 100644 src/api/payroll.js create mode 100644 src/api/statistics.js create mode 100644 src/api/vacation.js create mode 100644 src/assets/Inflow_profile_img.png create mode 100644 src/assets/admin_default_profile.png create mode 100644 src/assets/company_logo.svg create mode 100644 src/assets/emp_basic_profile.png create mode 100644 src/assets/icons/company_icon.png create mode 100644 src/assets/icons/excel_icon.png create mode 100644 src/assets/icons/eye_closed.png create mode 100644 src/assets/icons/eye_open.png create mode 100644 src/assets/icons/file_close.png create mode 100644 src/assets/icons/file_open.png create mode 100644 src/assets/icons/fold.png create mode 100644 src/assets/icons/minus_icon.png create mode 100644 src/assets/icons/plus_icon.png create mode 100644 src/assets/icons/unfold.png create mode 100644 src/assets/logo.svg create mode 100644 src/assets/main.css create mode 100644 src/components/attendance/CancelRequestModal.vue create mode 100644 src/components/buttons/ArrowLeftButton.vue create mode 100644 src/components/buttons/ArrowUpButton.vue create mode 100644 src/components/buttons/CaretLeftButton.vue create mode 100644 src/components/buttons/CaretRightButton.vue create mode 100644 src/components/buttons/CheckButton.vue create mode 100644 src/components/buttons/ChevronLeftButton.vue create mode 100644 src/components/buttons/ChevronRightButton.vue create mode 100644 src/components/buttons/CopyButton.vue create mode 100644 src/components/buttons/HomeButton.vue create mode 100644 src/components/buttons/MoreListButton.vue create mode 100644 src/components/buttons/SearchButton.vue create mode 100644 src/components/buttons/SettingButton.vue create mode 100644 src/components/buttons/XmarkButton.vue create mode 100644 src/components/common/BubbleBackground.vue create mode 100644 src/components/common/ChangeMonthComponent.vue create mode 100644 src/components/common/ChangeYearComponent.vue create mode 100644 src/components/common/CheckCircle.vue create mode 100644 src/components/common/CommonArticle.vue create mode 100644 src/components/common/CommonHeader.vue create mode 100644 src/components/common/CommonMenu.vue create mode 100644 src/components/common/CommonNav.vue create mode 100644 src/components/common/CompanyLogo.vue create mode 100644 src/components/common/CompanyName.vue create mode 100644 src/components/common/DepartmentMemberInfoComponent.vue create mode 100644 src/components/common/FileItem.vue create mode 100644 src/components/common/InfoCircle.vue create mode 100644 src/components/common/LoadingOverlay.vue create mode 100644 src/components/common/LoginSection.vue create mode 100644 src/components/common/MyInfoComponent.vue create mode 100644 src/components/common/PaginationComponent.vue create mode 100644 src/components/common/SearchEmployeeComponent.vue create mode 100644 src/components/common/SelectAppTypeComponent.vue create mode 100644 src/components/common/SelectPeriodComponent.vue create mode 100644 src/components/common/SelectYearMonthComponent.vue create mode 100644 src/components/dropdowns/AccountDropdown.vue create mode 100644 src/components/dropdowns/AppointmentHisDropDown.vue create mode 100644 src/components/dropdowns/DateDropDown.vue create mode 100644 src/components/dropdowns/DisciplineRewardTypeDropDown.vue create mode 100644 src/components/dropdowns/DropdownItem.vue create mode 100644 src/components/dropdowns/HalfDropdown.vue create mode 100644 src/components/dropdowns/PeriodDropDown.vue create mode 100644 src/components/dropdowns/ThirtyMinuteDropDown.vue create mode 100644 src/components/dropdowns/TimeDropDown.vue create mode 100644 src/components/dropdowns/YearDropDown.vue create mode 100644 src/components/dropdowns/YearMonthDropDown.vue create mode 100644 src/components/employee-search/DepartmentHeirarchy.vue create mode 100644 src/components/employee-search/EmployeeDetail.vue create mode 100644 src/components/employee-search/EmployeeList.vue create mode 100644 src/components/employee-search/SearchBar.vue create mode 100644 src/components/employee-search/TreeNode.vue create mode 100644 src/components/icons/AddressBookIcon.vue create mode 100644 src/components/icons/ArrowLeftIcon.vue create mode 100644 src/components/icons/ArrowUpIcon.vue create mode 100644 src/components/icons/BuildingIcon.vue create mode 100644 src/components/icons/CaretDownIcon.vue create mode 100644 src/components/icons/CaretLeftIcon.vue create mode 100644 src/components/icons/CaretRightIcon.vue create mode 100644 src/components/icons/CaretUpIcon.vue create mode 100644 src/components/icons/ChartIcon.vue create mode 100644 src/components/icons/CheckIcon.vue create mode 100644 src/components/icons/ChevronDownIcon.vue create mode 100644 src/components/icons/ChevronLeftIcon.vue create mode 100644 src/components/icons/ChevronRightIcon.vue create mode 100644 src/components/icons/ChevronUpIcon.vue create mode 100644 src/components/icons/ClockIcon.vue create mode 100644 src/components/icons/CopyIcon.vue create mode 100644 src/components/icons/EvaluationIcon.vue create mode 100644 src/components/icons/ExcelIcon.vue create mode 100644 src/components/icons/FolderCloseIcon.vue create mode 100644 src/components/icons/FolerOpenIcon.vue create mode 100644 src/components/icons/GearIcon.vue create mode 100644 src/components/icons/HomeIcon.vue create mode 100644 src/components/icons/MenuIcon.vue create mode 100644 src/components/icons/MinusIcon.vue create mode 100644 src/components/icons/PaperClipIcon.vue create mode 100644 src/components/icons/PlusIcon.vue create mode 100644 src/components/icons/QuestionIcon.vue create mode 100644 src/components/icons/RobotIcon.vue create mode 100644 src/components/icons/SearchIcon.vue create mode 100644 src/components/icons/UserIcon.vue create mode 100644 src/components/icons/XmarkIcon.vue create mode 100644 src/components/modals/CrudModal.vue create mode 100644 src/components/modals/ModalBackground.vue create mode 100644 src/components/modals/ModalItem.vue create mode 100644 src/components/modals/NoticeModal.vue create mode 100644 src/components/modals/ResetPasswordModal.vue create mode 100644 src/components/modals/SettingModal.vue create mode 100644 src/components/nav/MenuNav.vue create mode 100644 src/components/nav/MonthSelectNav.vue create mode 100644 src/components/nav/SubMenuNav.vue create mode 100644 src/components/salarytable/SalaryTable.vue create mode 100644 src/components/semantic/ArticleItem.vue create mode 100644 src/components/semantic/ButtonItem.vue create mode 100644 src/components/semantic/FigcaptionItem.vue create mode 100644 src/components/semantic/FigureItem.vue create mode 100644 src/components/semantic/FlexItem.vue create mode 100644 src/components/semantic/FooterItem.vue create mode 100644 src/components/semantic/GridItem.vue create mode 100644 src/components/semantic/HeaderItem.vue create mode 100644 src/components/semantic/LiItem.vue create mode 100644 src/components/semantic/MainItem.vue create mode 100644 src/components/semantic/NavItem.vue create mode 100644 src/components/semantic/SectionItem.vue create mode 100644 src/components/semantic/TableCell.vue create mode 100644 src/components/semantic/TableItem.vue create mode 100644 src/components/semantic/TableRow.vue create mode 100644 src/components/semantic/UlItem.vue create mode 100644 src/components/widgets/MyAttendanceWidget.vue create mode 100644 src/components/widgets/MyScheduleWidget.vue create mode 100644 src/components/widgets/MyTeamMemberWidget.vue create mode 100644 src/components/widgets/ScheduleDdayWidget.vue create mode 100644 src/components/widgets/WidgetItem.vue create mode 100644 src/router/index.js create mode 100644 src/views/home/HomeView.vue create mode 100644 src/views/login/LoginView.vue diff --git a/src/App.vue b/src/App.vue index c941233..a44ab87 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,20 +1,3 @@ - - - - \ No newline at end of file diff --git a/src/api/attendance.js b/src/api/attendance.js new file mode 100644 index 0000000..a1727d4 --- /dev/null +++ b/src/api/attendance.js @@ -0,0 +1,327 @@ +import apiClient from '@/api/axios'; // Axios 설정이 적용된 apiClient 사용 + +// 1. 사원 ID와 날짜(yyyy-MM)로 월별 출퇴근 내역 조회 +export const getCommutesByEmployeeId = async (eid, date) => { + try { + const response = await apiClient.get(`/commutes?eid=${eid}&date=${date}`); + return response.data; + } catch (error) { + console.error('getCommutesByEmployeeId 에러:', error); + throw error; + } +}; + +// 2. 재택근무 신청 +export const createRemoteRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/commute/remote`, + formData + ); + return response.data; + } catch (error) { + console.error('createRemoteRequest 에러:', error); + throw error; + } +}; + +// 3. 사원 ID로 재택근무 최근 신청 내역 조회 +export const getRemoteRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/commute/remote/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getRemoteRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 4. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 재택근무 전체 신청 내역 페이지별 조회 +export const getRemoteRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/commute/remote?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getRemoteRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 5. 초과근무 신청 +export const createOvertimeRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/commute/overtime`, + formData + ); + return response.data; + } catch (error) { + console.error('createOvertimeRequest 에러:', error); + throw error; + } +}; + +// 6. 사원 ID로 초과근무 최근 신청 내역 조회 +export const getOvertimeRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/commute/overtime/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getOvertimeRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 7. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 초과근무 전체 신청 내역 페이지별 조회 +export const getOvertimeRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/commute/overtime?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getOvertimeRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 8. 출장 신청 +export const createBusinessTripRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/business-trip`, + formData + ); + return response.data; + } catch (error) { + console.error('createBusinessTripRequest 에러:', error); + throw error; + } +}; + +// 9. 사원 ID로 출장 최근 신청 내역 조회 +export const getBusinessTripRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/business-trip/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getBusinessTripRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 10. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 출장 전체 신청 내역 페이지별 조회 +export const getBusinessTripRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/business-trip?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getBusinessTripRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 11. 파견 신청 +export const createDispatchRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/dispatch`, + formData + ); + return response.data; + } catch (error) { + console.error('createDispatchRequest 에러:', error); + throw error; + } +}; + +// 12. 사원 ID로 파견 최근 신청 내역 조회 +export const getDispatchRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/dispatch/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getDispatchRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 13. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 파견 전체 신청 내역 페이지별 조회 +export const getDispatchRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/dispatch?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getDispatchRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 14. 휴직 신청 +export const createLeaveRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/leave`, + formData, + { + headers: { + 'Content-Type': 'multipart/form-data', + }, + } + ); + return response.data; + } catch (error) { + console.error('createLeaveRequest 에러:', error); + throw error; + } +}; + +// 15. 사원 ID로 휴직 최근 신청 내역 조회 +export const getLeaveRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/leave/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getLeaveRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 16. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 휴직 전체 신청 내역 페이지별 조회 +export const getLeaveRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/leave?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getLeaveRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 17. 복직 신청 +export const createReturnRequest = async (formData) => { + try { + const response = await apiClient.post( + `/attendance-requests/return`, + formData, + { + headers: { + 'Content-Type': 'multipart/form-data', + }, + } + ); + return response.data; + } catch (error) { + console.error('createReturnRequest 에러:', error); + throw error; + } +}; + +// 18. 사원 ID로 복직 최근 신청 내역 조회 +export const getReturnRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/attendance-requests/return/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getReturnRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 19. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 복직 전체 신청 내역 페이지별 조회 +export const getReturnRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/attendance-requests/return?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getReturnRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 20. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 휴복직 전체 내역 페이지별 조회 +export const getLeaveReturnsByEmployeeId = async (eid, page) => { + try { + const response = await apiClient.get( + `/leave-returns?eid=${eid}&page=${page}` + ); + return response.data; + } catch (error) { + console.error('getLeaveReturnsByEmployeeId 에러:', error); + throw error; + } +}; + +// 21. 근태 취소 신청 +export const cancelAttendanceRequest = async (id, formData) => { + try { + const response = await apiClient.patch( + `/attendance-requests/${id}`, + formData + ); + return response.data; + } catch (error) { + console.error('cancelAttendanceRequest 에러:', error); + throw error; + } +}; + +// 22. 초과근무 연장 신청 +export const extendOvertime = async (id, formData) => { + try { + const response = await apiClient.patch( + `/attendance-requests/commute/overtime/${id}`, + formData + ); + return response.data; + } catch (error) { + console.error('extendOvertime 에러:', error); + throw error; + } +}; + +// 23. 사원 ID와 날짜(yyyy-MM)로 월별 초과근무 내역 조회 +export const getOvertimesByEmployeeId = async (eid, date) => { + try { + const response = await apiClient.get( + `/commutes/overtime?eid=${eid}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getOvertimesByEmployeeId 에러:', error); + throw error; + } +}; + +// 24. 출근 +export const checkAndUpdateCommute = async (eid) => { + try { + const response = await apiClient.post(`/commutes?eid=${eid}`); + return response.data; + } catch (error) { + console.error('checkAndUpdateCommute 에러:', error); + throw error; + } +}; diff --git a/src/api/axios.js b/src/api/axios.js new file mode 100644 index 0000000..11acf96 --- /dev/null +++ b/src/api/axios.js @@ -0,0 +1,80 @@ +import axios from 'axios'; + +// Axios 인스턴스 생성 +const apiClient = axios.create({ + baseURL: 'http://localhost:5000/api', // API 기본 경로 +}); + +// 요청 인터셉터: 모든 요청에 Authorization 헤더 추가 +apiClient.interceptors.request.use( + (config) => { + const token = localStorage.getItem('accessToken'); + console.log('인터셉터에서 읽어온 토큰:', token); + + // 액세스 토큰이 있는 경우 Authorization 헤더에 추가 + if (token) { + config.headers.Authorization = `Bearer ${token}`; + } + return config; + }, + (error) => Promise.reject(error) +); + +// 응답 인터셉터: 401 오류 시 리프레시 토큰으로 재발급 처리 +apiClient.interceptors.response.use( + (response) => response, // 응답이 성공적인 경우 그대로 반환 + async (error) => { + const originalRequest = error.config; + + // 401 Unauthorized 에러 처리 + if ( + error.response && + error.response.status === 401 && + !originalRequest._retry + ) { + originalRequest._retry = true; // 무한 루프 방지 + + try { + const refreshToken = localStorage.getItem('refreshToken'); + + if (!refreshToken) { + console.error('리프레시 토큰이 없습니다.'); + return Promise.reject(error); + } + + // 리프레시 토큰으로 새로운 액세스 토큰 요청 + const { data } = await axios.post( + 'http://localhost:5000/api/auth/refresh-token', + { refresh_token: refreshToken }, // JSON 형식으로 데이터 전달 + { + headers: { + 'Content-Type': 'application/json', + }, + } + ); + + const { access_token: newAccessToken, refresh_token: newRefreshToken } = + data.content; + + // 새로운 토큰 저장 + if (newAccessToken) { + localStorage.setItem('accessToken', newAccessToken); + } + if (newRefreshToken) { + localStorage.setItem('refreshToken', newRefreshToken); + } + + // 원래 요청을 새로운 액세스 토큰으로 재시도 + originalRequest.headers.Authorization = `Bearer ${newAccessToken}`; + return apiClient(originalRequest); // 재요청 + } catch (refreshError) { + console.error('리프레시 토큰 요청 실패:', refreshError); + return Promise.reject(refreshError); + } + } + + return Promise.reject(error); // 다른 오류는 그대로 반환 + } +); + +export default apiClient; diff --git a/src/api/chatbot.js b/src/api/chatbot.js new file mode 100644 index 0000000..ceb77b7 --- /dev/null +++ b/src/api/chatbot.js @@ -0,0 +1,12 @@ +import apiClient from '@/api/axios'; + +// 챗봇 질문 +export const chatbotQuery = async (formData) => { + try { + const response = await apiClient.post(`/chatbot/query`, formData); + return response.data; + } catch (error) { + console.error('chatbotQuery 에러:', error); + throw error; + } +}; diff --git a/src/api/department.js b/src/api/department.js new file mode 100644 index 0000000..7f96076 --- /dev/null +++ b/src/api/department.js @@ -0,0 +1,53 @@ +import apiClient from '@/api/axios'; + +// 1. 사원 전체 조회(검색) +export const getAllDepartmentMembers = async () => { + try { + const response = await apiClient.get(`/departments/search/all-members`); + return response.data; + } catch (error) { + console.error('getAllDepartmentMembers 에러:', error); + throw error; + } +}; + +// 2. 키워드로 사원 검색 +export const getEmployeesByKeywordOrDepartmentCode = async (keyword) => { + try { + const response = await apiClient.get( + `/departments/search/members?keyword=${keyword}` + ); + return response.data; + } catch (error) { + console.error('getEmployeesByKeywordOrDepartmentCode 에러:', error); + throw error; + } +}; + +// 3. 부서 구성원 조회(일반) +export const getEmployeesByDepartmentCode = async (dcode) => { + try { + const response = await apiClient.get( + `/departments/search/members?departmentCode=${dcode}` + ); + return response.data; + } catch (error) { + console.error('getEmployeesByDepartmentCode 에러:', error); + throw error; + } +}; + +// 4. 부서 구성원 조회(팀장) +export const getMyDepartmentMemberListByDepartmentCode = async ( + departmentCode +) => { + try { + const response = await apiClient.get( + `/departments/my-department/${departmentCode}/members` + ); + return response.data; + } catch (error) { + console.error('getMyDepartmentMemberListByDepartmentCode 에러:', error); + throw error; + } +}; diff --git a/src/api/emp_attach.js b/src/api/emp_attach.js new file mode 100644 index 0000000..bc82566 --- /dev/null +++ b/src/api/emp_attach.js @@ -0,0 +1,261 @@ +import apiClient from '@/api/axios'; + +export const getDoc = async (fileType) => { + try { + const response = await apiClient.get( + `/forms/download?file_type=${fileType}` + ); + return response.data; + } catch (error) { + console.error('양식 다운로드 에러:', error.response?.data || error.message); + throw error; + } +}; + +export const saveData = async (data, name) => { + try { + let response; + if (name !== null) { + if (name === 'appointments') + response = await apiClient.post(`/appointments`, data); + else response = await apiClient.post(`/employees/${name}`, data); + } else { + response = await apiClient.post(`/employees`, data); + } + return response.data.content; + } catch (error) { + console.error( + '사원 정보 등록 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const updateData = async (list, data, name) => { + try { + let response; + await apiClient.delete(`/employees/${name}`, { + data: list, + }); + response = await apiClient.post(`/employees/${name}`, data); + return response.data.content; + } catch (error) { + console.error('수정 요청 에러:', error.response?.data || error.message); + throw error; + } +}; + +export const getValidData = async () => { + try { + const response = await apiClient.get(`/validations/`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getAllEmpId = async () => { + try { + const response = await apiClient.get(`/employees/`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getEmpByNum = async (empNum) => { + try { + const response = await apiClient.get(`/employees/number/${empNum}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getEmpId = async (empCodes) => { + try { + const response = await apiClient.post(`/employees/numbers`, empCodes); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getEducationsById = async (empId) => { + try { + const response = await apiClient.get(`/employees/educations/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getQualifications = async () => { + try { + const response = await apiClient.get(`/employees/qualifications`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getQualificationsById = async (empId) => { + try { + const response = await apiClient.get(`/employees/qualifications/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getLanguageTests = async () => { + try { + const response = await apiClient.get(`/employees/language-tests`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getLanguageTestsById = async (empId) => { + try { + const response = await apiClient.get(`/employees/language-tests/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getLangCode = async () => { + try { + const response = await apiClient.get(`/employees/language-tests/languages`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getRelationships = async () => { + try { + const response = await apiClient.get( + `/employees/family-members/relationships` + ); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getFamilyById = async (empId) => { + try { + const response = await apiClient.get(`/employees/family-members/${empId}`); + return response.data; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getAppHistoryByMonth = async (year, month) => { + try { + const response = await apiClient.get( + `/appointments/history?year=${year}&month=${month}&appointment_item_code=all` + ); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getAppHistoryByPeriod = async (year, month, type) => { + try { + const response = await apiClient.get( + `/appointments/history?year=${year}&month=${month}&appointment_item_code=${type}` + ); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getCareersById = async (empId) => { + try { + const response = await apiClient.get(`/employees/careers/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; + +export const getDisciplineReward = async (empId) => { + try { + const response = await apiClient.get(`/employees/attached/${empId}`); + return response.data.content; + } catch (error) { + console.error( + '유효성 검사 데이터 조회 에러:', + error.response?.data || error.message + ); + throw error; + } +}; diff --git a/src/api/emp_info.js b/src/api/emp_info.js new file mode 100644 index 0000000..7d141a4 --- /dev/null +++ b/src/api/emp_info.js @@ -0,0 +1,251 @@ +// 사원 기본 관련 api 모음 + +import apiClient from '@/api/axios'; // Axios 설정이 적용된 apiClient 사용 +import router from '@/router'; + +// 설명. 홈 화면 일정 조회 +export const getHomeInfo = async (employeeId, month) => { + try { + const response = await apiClient.get( + `/home?employeeId=${employeeId}&month=${month}` + ); + return response.data; + } catch (error) { + console.error('getHomeInfo 에러:', error); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 1. 사원 ID로 사원 정보 조회하기 +export const getEmployeeById = async (employeeId, token) => { + try { + console.log('사원 ID로 조회 시작, 전달된 토큰:', token); + const response = await apiClient.get(`/employees/id/${employeeId}`, { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + }, + }); + console.log('사원 조회 응답 데이터:', response.data); + return response.data.content; // 사원 정보를 반환 + } catch (error) { + console.error('getEmployeeById 에러:', error.response?.data || error); + router.push("/login"); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 1.1. 사원 ID로 사원 정보 조인해서 상세 조회하기 +export const getEmployeeDetailById = async (employeeId, token) => { + try { + const response = await apiClient.get(`/employees/detail/${employeeId}`, { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + }, + }); + return response.data.content; // 상세 사원 정보 반환 + } catch (error) { + console.error('getEmployeeDetailById 에러:', error); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 2. 비밀번호 재설정하기 +export const resetEmployeePassword = async (employeeId, newPassword, token) => { + try { + const response = await apiClient.patch( + '/employees/re-password', + { + employee_id: employeeId, // 사원 ID + new_password: newPassword, // 새 비밀번호 + }, + { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + }, + } + ); + + return response.data; // API 응답 데이터를 반환 + } catch (error) { + console.error('resetEmployeePassword 에러:', error.response || error); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 3. 사원 리스트 전체 조회하기 +export const getAllEmployees = async (token) => { + try { + const response = await apiClient.get('/employees/', { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + }, + }); + return response.data.content; // 사원 리스트 반환 + } catch (error) { + console.error('getAllEmployees 에러:', error); + throw error; + } +}; + +// 설명. 4. 이름으로 사원 리스트 조회하기 +export const getEmployeesByName = async (name, token) => { + try { + const response = await apiClient.get(`/employees/name`, { + params: { name }, // 이름을 파라미터로 추가 + headers: { + Authorization: `Bearer ${token}`, + }, + }); + return response.data.content; // 사원 리스트 반환 + } catch (error) { + console.error('getEmployeesByName 에러:', error); + throw error; + } +}; + +// 설명. 5. 사번으로 사원 정보 조회하기 +export const getEmployeeByNumber = async (employeeNumber, token) => { + try { + const response = await apiClient.get( + `/employees/number/${employeeNumber}`, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.content; // 사원 정보 반환 + } catch (error) { + console.error('getEmployeeByNumber 에러:', error); + throw error; + } +}; + +// 설명. 6. 재직증명서 정보 조회하기 +export const getEmploymentCertificate = async (employeeId, purpose, token) => { + try { + const response = await apiClient.post( + '/employees/employment-certificate', + { + employee_id: employeeId, // 사원 id + purpose: purpose, // 증명서 용도 + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.content; // 재직증명서 정보 반환 + } catch (error) { + console.error('getEmploymentCertificate 에러:', error); + throw error; + } +}; + +// 설명. 7. 근로 계약서 정보 조회하기 +export const getEmploymentContract = async (employeeId, token) => { + try { + const response = await apiClient.get( + `/employees/${employeeId}/employment-contract`, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.content; // 근로 계약서 정보 반환 + } catch (error) { + console.error('getEmploymentContract 에러:', error); + throw error; + } +}; + +// 설명. 8. 비밀 유지 서약서 정보 조회하기 +export const getSecurityAgreement = async (employeeId, token) => { + try { + const response = await apiClient.get( + `/employees/${employeeId}/security-agreement`, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.content; // 비밀 유지 서약서 정보 반환 + } catch (error) { + console.error('getSecurityAgreement 에러:', error); + throw error; + } +}; + +// 설명. 9. 서명된 계약서 리스트 조회하기 +export const getContractList = async (employeeId, token) => { + try { + const response = await apiClient.get(`/employees/${employeeId}/contracts`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + return response.data.content; // 계약서 리스트 반환 + } catch (error) { + console.error('getContractList 에러:', error); + throw error; + } +}; + +// 설명. 10. 특정 계약서 정보 조회하기 +export const getContract = async (contractId, token) => { + try { + const response = await apiClient.get(`/employees/contracts/${contractId}`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + return response.data.content; // 계약서 정보 반환 + } catch (error) { + console.error('getContract 에러:', error); + throw error; + } +}; + +// 설명. 11. 사원 정보 수정하기 +export const updateEmployeeInfo = async (employeeId, formData, token) => { + try { + const response = await apiClient.patch( + `/employees/employee-id/${employeeId}`, + formData, + { + headers: { + Authorization: `Bearer ${token}`, // Bearer 토큰 헤더 추가 + 'Content-Type': 'multipart/form-data', // form-data 처리 + }, + } + ); + return response.data.content; // 수정된 사원 정보 반환 + } catch (error) { + console.error('updateEmployeeInfo 에러:', error.response || error); + throw error; // 에러를 호출한 쪽으로 전달 + } +}; + +// 설명. 12. 사원별 계약서 등록 +export const registerEmployeeContract = async (contractId, file, token) => { + try { + const formData = new FormData(); + formData.append('contract_id', contractId); // 계약서 ID + formData.append('contract_file', file); // 파일 + + const response = await apiClient.post('/employees/contracts', formData, { + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'multipart/form-data', // form-data 처리 + }, + }); + + return response.data; // 성공 메시지 반환 + } catch (error) { + console.error('registerEmployeeContract 에러:', error.response || error); + throw error; // 에러 전달 + } +}; diff --git a/src/api/evaluation.js b/src/api/evaluation.js new file mode 100644 index 0000000..2ebe8b8 --- /dev/null +++ b/src/api/evaluation.js @@ -0,0 +1,434 @@ +// evaluation.js +import apiClient from '@/api/axios'; + +// 과제별 평가 조회 - ( 자기평가&리더평가에 해당하는 과제별 평가 리스트 모두 조회 ) +export const getTaskEvaluation = async (empId, year, half) => { + try { + const response = await apiClient.get(`/evaluations/taskEval/find`, { + params: { + empId, + year, + half, + }, + }); + return response.data; + } catch (error) { + console.error('getTaskEvaluation 에러:', error); + throw error; + } +}; + +// 평가ID로 과제별 평가 List 조회 ( 개인평가 조회에 사용 ) +export const findIndividualTaskListByEvaluationId = async ( + empId, + year, + half +) => { + try { + const response = await apiClient.get( + '/evaluations/taskEval/individualTaskList', + { + params: { + year: year, + half: half, + empId: empId, + }, + } + ); + return response.data; + } catch (error) { + console.error('자기평가 과제 리스트 조회 중 에러 발생:', error); + throw error; + } +}; + +// 평가ID로 과제별 평가 List 조회 ( 리더평가 조회에 사용 ) +export const findTaskEvalByEvaluationId = async (evaluationId) => { + try { + const response = await apiClient.get( + `/evaluations/taskEval/byEvaluationId/${evaluationId}` + ); + return response.data; + } catch (error) { + console.error('평가ID로 과제별 평가 리스트 조회 중 에러 발생:', error); + throw error; + } +}; + +// 과제별 평가 수정 +export const updateTaskEval = async (taskEvalId, updateTaskEvalRequestDTO) => { + try { + const response = await apiClient.patch( + `/evaluations/taskEval/${taskEvalId}`, + updateTaskEvalRequestDTO + ); + return response.data; + } catch (error) { + console.error('과제별 평가 수정 중 에러 발생:', error); + throw error; + } +}; + +// 모든 과제 유형 조회 +export const getAllTaskTypes = async () => { + try { + const response = await apiClient.get(`/evaluations/taskType/allTaskType`); + return response.data; + } catch (error) { + console.error('getAllTaskTypes 에러:', error); + throw error; + } +}; + +// 과제 유형 삭제 함수 +export const deleteTaskTypeById = async (taskTypeId) => { + try { + const response = await apiClient.delete( + `/evaluations/taskType/${taskTypeId}` + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('deleteTaskTypeById 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 개인 과제 항목 리스트 조회 +export const getIndividualTaskItems = async (empId, year, half) => { + try { + const response = await apiClient.get( + `/evaluations/taskItem/individualTasks`, + { + params: { + empId, + year, + half, + }, + } + ); + return response.data; + } catch (error) { + console.error('getIndividualTaskItems 에러:', error); + throw error; + } +}; + +// 부서 과제 항목 리스트 조회 +export const findDepartmentTaskItems = async (year, half, empId) => { + try { + const response = await apiClient.get( + '/evaluations/taskItem/departmentTasks', + { + params: { + year, + half, + empId, + }, + } + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findDepartmentTaskItems 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 과제 생성 +export const createTaskItem = async ( + year, + half, + taskTypeId, + createTaskItemRequestDTO +) => { + try { + const response = await apiClient.post( + `/evaluations/taskItem/taskItemCreation`, + createTaskItemRequestDTO, + { + params: { + year, + half, + taskTypeId, + }, + } + ); + return response.data; + } catch (error) { + console.error('createTaskItem 에러:', error); + throw error; + } +}; + +// 모든 과제 유형에 대한 과제 리스트 조회 +export const findAllTaskItemsByEmpId = async (empId, year, half) => { + try { + const response = await apiClient.get(`/evaluations/taskItem/AllTaskItems`, { + params: { + empId, + year, + half, + }, + }); + return response.data; + } catch (error) { + console.error('findAllTaskItemsByEmpId 에러:', error); + throw error; + } +}; + +// 과제 항목별 평가 생성 +export const createTaskEval = async ( + createTaskEvalRequestDTO, + year, + half, + employeeId +) => { + try { + const response = await apiClient.post( + '/evaluations/taskEval/taskEvalCreation', + createTaskEvalRequestDTO, + { + params: { + year, + half, + employeeId, + }, + } + ); + return response.data; + } catch (error) { + console.error('createTaskEval 에러:', error); + throw error; + } +}; + +// 최종 평가 조회 +export const findFinalGrade = async (empId, year, half) => { + try { + const response = await apiClient.get('/evaluations/evaluation/leader', { + params: { + empId, + year, + half, + }, + }); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findFinalGrade 에러:', error); + throw error; + } +}; + +// 자기 평가 조회 +export const findEvaluationByEmpIdAndYearAndHalf = async ( + year, + half, + empId +) => { + try { + const response = await apiClient.get('/evaluations/evaluation/mine', { + params: { + year: year, + half: half, + empId: empId, + }, + }); + return response.data; + } catch (error) { + console.error('자기 평가 조회 중 에러 발생:', error); + throw error; + } +}; + +// 피드백 생성 +export const createFeedback = async (createFeedbackRequestDTO) => { + try { + const response = await apiClient.post( + '/evaluations/feedback/feedbackCreation', + createFeedbackRequestDTO + ); + return response.data; + } catch (error) { + console.error('피드백 생성 중 에러 발생:', error); + throw error; + } +}; + +// 피드백 조회 +export const findFeedbacks = async (empId, year, half) => { + try { + const response = await apiClient.get('/evaluations/feedback/find', { + params: { + empId, + year, + half, + }, + }); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findFeedbacks 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 피드백 수정 +export const updateFeedback = async (feedbackId, updateFeedbackRequestDTO) => { + try { + const response = await apiClient.patch( + `/evaluations/feedback/${feedbackId}`, + updateFeedbackRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('updateFeedback 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 과제 유형 등록 +export const createTaskType = async (createTaskTypeRequestDTO) => { + try { + const response = await apiClient.post( + `/evaluations/taskType/create`, + createTaskTypeRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('createTaskType 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 모든 과제 유형 조회 +export const findAllTaskTypes = async () => { + try { + const response = await apiClient.get(`/evaluations/taskType/allTaskType`); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findAllTaskTypes 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 년도 및 반기별 평가 등급 리스트 조회 +export const findGradeByYearAndHalf = async (year, half) => { + try { + const response = await apiClient.get(`/evaluations/grade/find`, { + params: { + year, + half, + }, + }); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findGradeByYearAndHalf 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 등급 생성 함수 +export const createGrade = async (createGradeRequestDTO, year, half) => { + try { + const response = await apiClient.post( + `/evaluations/grade/gradeCreation`, + createGradeRequestDTO, + { + params: { + year, + half, + }, + } + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('createGrade 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 등급 수정 함수 +export const updateGrade = async (gradeId, updateGradeRequestDTO) => { + try { + const response = await apiClient.patch( + `/evaluations/grade/${gradeId}`, + updateGradeRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('updateGrade 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가 정책 생성 함수 +export const createEvaluationPolicy = async ( + createEvaluationPolicyRequestDTO +) => { + try { + const response = await apiClient.post( + '/evaluations/evaluationPolicy/policyCreation', + createEvaluationPolicyRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('createEvaluationPolicy 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가 정책 리스트 조회 +export const findEvaluationPolicyByYearAndHalf = async (year, half) => { + try { + const response = await apiClient.get('/evaluations/evaluationPolicy/find', { + params: { + year, + half, + }, + }); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findEvaluationPolicyByYearAndHalf 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가 정책 단건 조회 함수 +export const findEvaluationPolicyById = async (evaluationPolicyId) => { + try { + const response = await apiClient.get( + `/evaluations/evaluationPolicy/${evaluationPolicyId}` + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findEvaluationPolicyById 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가 정책 수정 함수 +export const updateEvaluationPolicy = async ( + evaluationPolicyId, + updateEvaluationPolicyRequestDTO +) => { + try { + const response = await apiClient.patch( + `/evaluations/evaluationPolicy/${evaluationPolicyId}`, + updateEvaluationPolicyRequestDTO + ); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('updateEvaluationPolicy 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; + +// 평가등급 단건 조회 함수 +export const findGradeByGradeId = async (gradeId) => { + try { + const response = await apiClient.get(`/evaluations/grade/${gradeId}`); + return response.data; // API 응답 데이터 반환 + } catch (error) { + console.error('findGradeByGradeId 에러:', error); + throw error; // 에러를 다시 throw해서 호출한 쪽에서 처리할 수 있도록 함 + } +}; diff --git a/src/api/payroll.js b/src/api/payroll.js new file mode 100644 index 0000000..a82667b --- /dev/null +++ b/src/api/payroll.js @@ -0,0 +1,147 @@ +import apiClient from '@/api/axios'; + +apiClient.defaults.headers.common['Authorization'] = + `Bearer ${localStorage.getItem('accessToken')}`; + +/* 1. 사원별 연월별 급여 명세서 조회 */ +export const getPaymentByEmployeeIdAndYearAndMonth = async ( + eid, + year, + month +) => { + if (!eid || !year || !month) { + throw new Error( + `유효하지 않은 파라미터: eid=${eid}, year=${year}, month=${month}` + ); + } + try { + const response = await apiClient.get(`/payrolls/details/${eid}`, { + params: { year, month }, + }); + return response.data; + } catch (error) { + console.error('getPaymentByEmployeeIdAndYearAndMonth 에러: ', error); + throw error; + } +}; + +export const getPeriodicPayments = async (employeeId, startDate, endDate) => { + if (!employeeId || !startDate || !endDate) { + throw new Error( + `유효하지 않은 파라미터: employeeId=${employeeId}, startMonth=${startDate}, endMonth=${endDate}` + ); + } + try { + const response = await apiClient.get('/payrolls/period', { + params: { employeeId, startDate, endDate }, + }); + return response.data; + } catch (error) { + console.error('getPeriodicPayments 오류: ', error); + throw error; + } +}; + +export const getPaymentsByYear = async (employeeId, year) => { + if (!employeeId || !year) { + throw new Error( + `유효하지 않은 파라미터: employeeId=${employeeId}, year=${year}` + ); + } + try { + const response = await apiClient.get('/payrolls/list', { + params: { employeeId, year }, + }); + return response.data; + } catch (error) { + console.error('getPaymentsByYear 오류: ', error); + throw error; + } +}; + +export const getAllPayments = async (employeeId, page) => { + if (!employeeId || !page) { + throw new Error( + `유효하지 않은 파라미터: employeeId=${employeeId}, page=${page}` + ); + } + try { + const response = await apiClient.get(`/payrolls/all/${employeeId}`, { + params: { page }, + }); + return response.data; + } catch (error) { + console.error('getAllPayments 에러: ', error); + throw error; + } +}; + +export const getEstimateWorkingDays = async (employeeId) => { + if (!employeeId) { + throw new Error(`유효하지 않은 파라미터: employeeId=${employeeId}`); + } + try { + const response = await apiClient.get( + `/severance-pay/estimate/${employeeId}` + ); + return response.data; + } catch (error) { + console.error('getEstimateWorkingDays 에러: ', error); + throw error; + } +}; + +export const calculateSeverancePay = async (employeeId) => { + if (!employeeId) { + throw new Error(`유효하지 않은 파라미터: employeeId=${employeeId}`); + } + try { + const response = await apiClient.get( + `/severance-pay/calculate/${employeeId}` + ); + return response.data; + } catch (error) { + console.error('calculateSeverancePay 에러: ', error); + throw error; + } +}; + +export const createIrregularAllowance = async (formData) => { + try { + const response = await apiClient.post('irregular-allowances', formData); + return response.data; + } catch (error) { + console.error('createIrregularAllowance 오류: ', error); + } +}; + +export const getIrregularAllowance = async (page) => { + try { + const response = await apiClient.get(`/irregular-allowances`, { + params: { page }, + }); + return response.data; + } catch (error) { + console.error('getIrregularAllowance 오류: ', error); + } +}; + +export const getNonTaxablePayrolls = async (page) => { + try { + const response = await apiClient.get('/non-taxable-payrolls', { + params: { page }, + }); + return response.data; + } catch (error) { + console.error('getNonTaxablePayrolls 오류: ', error); + } +}; + +export const createNonTaxable = async (formData) => { + try { + const response = await apiClient.post('/non-taxable-payrolls', formData); + return response.data; + } catch (error) { + console.error('createNonTaxable 오류: ', error); + } +}; diff --git a/src/api/statistics.js b/src/api/statistics.js new file mode 100644 index 0000000..e69de29 diff --git a/src/api/vacation.js b/src/api/vacation.js new file mode 100644 index 0000000..d1bb9f7 --- /dev/null +++ b/src/api/vacation.js @@ -0,0 +1,161 @@ +import apiClient from '@/api/axios'; // Axios 설정이 적용된 apiClient 사용 + +// 1. 휴가 신청 +export const createVacationRequest = async (formData) => { + try { + const response = await apiClient.post(`/vacation-requests`, formData, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + }); + return response.data; + } catch (error) { + console.error('createVacationRequest 에러:', error); + throw error; + } +}; + +// 2. 사원 ID로 휴가 최근 신청 내역 조회 +export const getVacationRequestPreviewsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get( + `/vacation-requests/preview?eid=${eid}` + ); + return response.data; + } catch (error) { + console.error('getVacationRequestPreviewsByEmployeeId 에러:', error); + throw error; + } +}; + +// 3. 사원 ID, 페이지번호, 날짜(yyyy-MM)로 휴가 전체 신청 내역 페이지별 조회 +export const getVacationRequestsByEmployeeId = async (eid, page, date) => { + try { + const response = await apiClient.get( + `/vacation-requests?eid=${eid}&page=${page}&date=${date}` + ); + return response.data; + } catch (error) { + console.error('getVacationRequestsByEmployeeId 에러:', error); + throw error; + } +}; + +// 4. 휴가 정책 등록 +export const createVacationPolicy = async (formData) => { + try { + const response = await apiClient.post(`/vacation-policies`, formData); + return response.data; + } catch (error) { + console.error('createVacationPolicy 에러:', error); + throw error; + } +}; + +// 5. 휴가 정책 수정 +export const updateVacationPolicy = async (id, formData) => { + try { + const response = await apiClient.put(`/vacation-policies/${id}`, formData); + return response.data; + } catch (error) { + console.error('updateVacationPolicy 에러:', error); + throw error; + } +}; + +// 6. 연도별 휴가 정책 조회 +export const getVacationPoliciesByYear = async (year) => { + try { + const response = await apiClient.get(`/vacation-policies?year=${year}`); + return response.data; + } catch (error) { + console.error('getVacationPoliciesByYear 에러:', error); + throw error; + } +}; + +// 7. 연도별 비정기 휴가 정책 조회 +export const getIrregularVacationPoliciesByYear = async (year) => { + try { + const response = await apiClient.get( + `/vacation-policies/irregular?year=${year}` + ); + return response.data; + } catch (error) { + console.error('getIrregularVacationPoliciesByYear 에러:', error); + throw error; + } +}; + +// 8. 휴가 종류 조회 +export const getVacationTypes = async () => { + try { + const response = await apiClient.get(`/vacation-types`); + return response.data; + } catch (error) { + console.error('getVacationTypes 에러:', error); + throw error; + } +}; + +// 9. 휴가 지급 +export const createVacation = async (formData) => { + try { + const response = await apiClient.post(`/vacations`, formData); + return response.data; + } catch (error) { + console.error('createVacation 에러:', error); + throw error; + } +}; + +// 10. 사원별 잔여 휴가 조회 +export const getLeftVacationsByEmployeeId = async (eid, page) => { + try { + const response = await apiClient.get( + `/vacations/left?eid=${eid}&page=${page}` + ); + return response.data; + } catch (error) { + console.error('getLeftVacationsByEmployeeId 에러:', error); + throw error; + } +}; + +// 11. 사원별 사용 휴가 조회 +export const getUsedVacationsByEmployeeId = async (eid, page) => { + try { + const response = await apiClient.get( + `/vacations/used?eid=${eid}&page=${page}` + ); + return response.data; + } catch (error) { + console.error('getUsedVacationsByEmployeeId 에러:', error); + throw error; + } +}; + +// 12. 사원별 잔여 휴가 전체 조회 +export const getLeftAllVacationsByEmployeeId = async (eid) => { + try { + const response = await apiClient.get(`/vacations/left-all?eid=${eid}`); + return response.data; + } catch (error) { + console.error('getLeftAllVacationsByEmployeeId 에러:', error); + throw error; + } +}; + +// 13. 휴가 신청 취소 +export const cancelVacationRequest = async (id, formData) => { + try { + const response = await apiClient.patch( + `/vacation-requests/${id}`, + formData + ); + return response.data; + } catch (error) { + console.error('createVacation 에러:', error); + throw error; + } +}; diff --git a/src/assets/Inflow_profile_img.png b/src/assets/Inflow_profile_img.png new file mode 100644 index 0000000000000000000000000000000000000000..f3fbb31f43ad27b4b3676ca612cfcaf8a20b7017 GIT binary patch literal 37363 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�hg!i#YUA3w!Zm2=7@3@dP5euhfXXIeoq=!X)O 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 literal 0 HcmV?d00001 diff --git a/src/assets/admin_default_profile.png b/src/assets/admin_default_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..51f90fc4a4007a452811591c83144e3d4b589c14 GIT binary patch literal 54993 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 HrLq4H1na}4 literal 0 HcmV?d00001 diff --git a/src/assets/company_logo.svg b/src/assets/company_logo.svg new file mode 100644 index 0000000..71d40bd --- /dev/null +++ b/src/assets/company_logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/emp_basic_profile.png b/src/assets/emp_basic_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..876aabfa9fe6d03b9b31b69920beb6c2652b17b8 GIT binary patch literal 2172 zcmdUx`8V5%7QmCS)KXew86`N+8b&*oswxq_w%C^-6Kf-uN-U*F@rb^rPfLv=shRYPy)^4k{7;Qy+LUBh{}y10nva&WQotYQG&-EhGG0_jMTM|&#V z$jZXNlhq)HQPla$o5F+53ePZHlwga?+WD!*!hn%vl%#+w$j#2q#@-S$0eaQ;+E^Wn zmK^g~W37P~E#BHnyI6I=0|BtERVDpbq--^|28BZTE)NS4?Jt-E=qXMbDFLlUwcb2B zx{1FuR6sfWJDL*mFr<_yVy!Q&#K)VHEI1g|&aC?EJQM2C$@ zw;8Jg$Xhynj-J zso0#>94(ps-dupR1L{}i{1w^lLrM^H!*zoOtd(rdHlQxUaz)<1B^%@PoXY9=7{&E{9D#?l*sopw!En%LmOSS&bc%x&iYTR(~ zVzZ^+BlC)I45q zIwf9&n$0~Q4D~ONo=9c`u)O>X(a=nw=BUH8;$^|NoR3Z!a?}`PItknS&zT&5Q%2VJ zEAu!#feeuyS+}+3erz`opt|DFEj@rYS(|RKR$gAN4_}GhKv3Ys3)R~8EgkQ=mRB2x z_L-rHgQOlshxTb&#)JNytGt0AgUOz6dg1^yE&ewBjn%GKn2FB_Mqb8znwwETg|)Un zj2DC||4`T}l^|fex_ijJ_4nT@CEXUTZA;XNL|TjRC5yG+#n?b8<@(Nzjg9T_cz(K$ z0Z_*uM+`WnuU`G1&2l}t_zvzos`F#}8kDf};aKE)$d7}?_{Z}0WJAc!t`qWsFBxWJ zvqS##JOUwwC~}C#hK*sZ9tmyhTJ7dc$O_>~>`w$Dkx0gfnep_PiQaG<_NVu`rC(W) z-4sIgqhYTN-?%skXK2L%vr@{4!k!E_n&3Q+)@~Hbej108Vte#r{5%8qc z`m1)pao|X3RocE5{+uMZ_G=xHjnp41jrgUCMx)i9FpCxrcHO;@s2tmV@hjywJ6$x7 zl$4a3?^aQVu1yrm+dT2{*s2FTH8Ncb*@#o4Pp+-5CJIh$_CnOv)zg&ZcoHWUm#wyp z9uZU$(}XE3EM#f)3ZmO^)h1;K9n>yrFcay}7lP|It6mFmdgyz{uD0ebe>y%mA7`%V zM>MYDKVpo){f03?eR=l;}CU%Je`@{W*6pY zP-ZzN3|uRJwi(hCx^&+XVwZ7=e8mbIx}1CfcgjGssE@MKBl)|88tOD6;Z!jz$|$1Y z^a%HJB1_0f z<+Ra5njFuaqTY{TI9D%tLrqeoi4fk6Yw7Gf`z~+Om8tpPmI9z{u`9;ps&?lXTf@#G zLvO9wmW+wH>SSOKxtv8WM01|jcQS^%p&cIf)XOID3$mQ`um6CkL3w16`nr`pL8}kp z<-NP_gMaK}PkrIO@nSj<89g<9cWS$4+j@W@|M0a zbfkG#>P_;CGIQg*f2t)N{yXrv_;v?n|1W*~j?P4sI7WRUji<_<1(2^-kS7zk`j7tt Df&IE@ literal 0 HcmV?d00001 diff --git a/src/assets/icons/company_icon.png b/src/assets/icons/company_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2b610b662b4943df211f1f907b0966e9b1c53da0 GIT binary patch literal 328 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/fold.png b/src/assets/icons/fold.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5b79beed9f09e6ef5c2e1d37b274e0ced2e117 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!3HD+k8e2&5-9M9EM{Qf76xHPhFNnYfP#$0 zLGDfr>(0r%1aer?9eo`c7&i8E|4C#8^8Gzs978G?r*=E?Iw*Omb70bN zJ8DX`tErl8n#b#noK6w>~E{< cf}Z3{J@VrZn^aX@4m6s<)78&qol`;+0M>9d@Bjb+ literal 0 HcmV?d00001 diff --git a/src/assets/icons/minus_icon.png b/src/assets/icons/minus_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd57918fb7a0e7b8540f5eea85aa89605c0db29 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp@K+MCz1|)ZGH@^v_I14-?iy0WWg+Z8+Vb&Z8pde#$ zkh>GZx^prwfgF}}M_)$E)e-c@N{5hU3jv*C{b0^*9Z8qR(nY-$J35(eR>5?gW z0i~^dK`LSi%r_bYCnPi+U}@(K+~D%V_N9{hH*xpEjwuW_H|)!LBUyj@Di$gwMz2{t z$=OukJ;T1$ZT~FRO)u2dl?|_ZuKMxzGSy!-hnGfriMR^cvc9TaG+n^kp-bK2O6;zC zXC*Ed2FzwvcCe8vlhLlfSlh3$0eK431zU^G{Jm&V(z;XrpXc)I$ztaD0e F0szz#Tj&4) literal 0 HcmV?d00001 diff --git a/src/assets/icons/plus_icon.png b/src/assets/icons/plus_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f4c5f436667a6c8c04f99f5022e697794fbb8f GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<1|;p3UCV(KXMsm#F#`j)FbFd;%$g$s6l5$8 za(7}_cTVOdki(Mh=@nvLV`+2790NyovFV?ER&0AJRQga=fA79;U)Nn{+QPcf zPvGK0MFqbOIYaejP940j)to(aCc3+oSROX7=@F^exWcJFX@46ma+uiXiSh>!itnI?FVdQ&MBb@0G?xjj{pDw literal 0 HcmV?d00001 diff --git a/src/assets/icons/unfold.png b/src/assets/icons/unfold.png new file mode 100644 index 0000000000000000000000000000000000000000..78e14ea348b7b42a0e442594dc29492b2354e67c GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3HF!2OrA@2^4rl7Bet#3xhBt!>l*8o|0J>k`4OHjjv*C{xxJ3O4F&=%vlA9r9AM(hVr6~6 zpsVq)x67+R-G0WThm0>(i)Y`y`^4#oAN%U4xh&Q(S--^H4(H6+yL`Jr_7w9#{VMyT mZC4MoG0&OSrFY>_A#>0vq0R0;DlP%-VDNPHb6Mw<&;$Ti`#fO) literal 0 HcmV?d00001 diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/src/assets/main.css b/src/assets/main.css new file mode 100644 index 0000000..e0b1bc5 --- /dev/null +++ b/src/assets/main.css @@ -0,0 +1,133 @@ +/* Noto Sans KR 글꼴을 import */ +@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); + +:root { + font-size: 10px; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: inherit; +} + +html, +body { + width: 100%; + height: 100%; + font-size: 100%; + font-family: 'Noto Sans KR', sans-serif, 'inter'; +} + +button, +input, +textarea, +select { + font: inherit; /* 폰트 스타일 상속 */ + color: inherit; + background: none; + border: none; + outline: none; + padding: 0; + margin: 0; + appearance: none; /* 브라우저 기본 스타일 제거 */ +} + +ul, +ol { + list-style: none; /* 리스트 스타일 제거 */ +} + +a { + text-decoration: none; /* 링크 밑줄 제거 */ + color: inherit; /* 부모 색상 상속 */ +} + +img, +video { + max-width: 100%; + height: auto; /* 반응형 크기 */ + display: block; +} + +table { + border-collapse: collapse; /* 테이블 경계선 겹치기 제거 */ + border-spacing: 0; +} + +blockquote, +q { + quotes: none; /* 인용 부호 제거 */ +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; +} + +button { + cursor: pointer; /* 버튼 기본 커서 설정 */ + background: transparent; /* 기본 배경 제거 */ +} + +pre[class*='language-'] { + border-radius: 0.6rem; +} + +@media screen and (max-width: 1600px) { + :root { + font-size: 9.5px; + } +} + +@media screen and (max-width: 1400px) { + :root { + font-size: 9px; + } +} + +@media screen and (max-width: 1200px) { + :root { + font-size: 8.5px; + } +} + +@media screen and (max-width: 1000px) { + :root { + font-size: 8px; + } +} + +@media screen and (max-width: 800px) { + :root { + font-size: 7.5px; + } +} + +@media screen and (max-width: 600px) { + :root { + font-size: 7px; + } +} + +@media screen and (max-width: 400px) { + :root { + font-size: 6px; + } +} + +@media screen and (max-width: 350px) { + :root { + font-size: 5.5px; + } +} + +@media screen and (max-width: 300px) { + :root { + font-size: 5px; + } +} diff --git a/src/components/attendance/CancelRequestModal.vue b/src/components/attendance/CancelRequestModal.vue new file mode 100644 index 0000000..7c1cebe --- /dev/null +++ b/src/components/attendance/CancelRequestModal.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/src/components/buttons/ArrowLeftButton.vue b/src/components/buttons/ArrowLeftButton.vue new file mode 100644 index 0000000..fa23094 --- /dev/null +++ b/src/components/buttons/ArrowLeftButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/ArrowUpButton.vue b/src/components/buttons/ArrowUpButton.vue new file mode 100644 index 0000000..eb27333 --- /dev/null +++ b/src/components/buttons/ArrowUpButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/CaretLeftButton.vue b/src/components/buttons/CaretLeftButton.vue new file mode 100644 index 0000000..4ad8566 --- /dev/null +++ b/src/components/buttons/CaretLeftButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/CaretRightButton.vue b/src/components/buttons/CaretRightButton.vue new file mode 100644 index 0000000..9977a18 --- /dev/null +++ b/src/components/buttons/CaretRightButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/CheckButton.vue b/src/components/buttons/CheckButton.vue new file mode 100644 index 0000000..3c09c1c --- /dev/null +++ b/src/components/buttons/CheckButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/ChevronLeftButton.vue b/src/components/buttons/ChevronLeftButton.vue new file mode 100644 index 0000000..174e61a --- /dev/null +++ b/src/components/buttons/ChevronLeftButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/ChevronRightButton.vue b/src/components/buttons/ChevronRightButton.vue new file mode 100644 index 0000000..6b61642 --- /dev/null +++ b/src/components/buttons/ChevronRightButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/CopyButton.vue b/src/components/buttons/CopyButton.vue new file mode 100644 index 0000000..d783065 --- /dev/null +++ b/src/components/buttons/CopyButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/HomeButton.vue b/src/components/buttons/HomeButton.vue new file mode 100644 index 0000000..7118039 --- /dev/null +++ b/src/components/buttons/HomeButton.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/buttons/MoreListButton.vue b/src/components/buttons/MoreListButton.vue new file mode 100644 index 0000000..22e432a --- /dev/null +++ b/src/components/buttons/MoreListButton.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/components/buttons/SearchButton.vue b/src/components/buttons/SearchButton.vue new file mode 100644 index 0000000..1c6242e --- /dev/null +++ b/src/components/buttons/SearchButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/buttons/SettingButton.vue b/src/components/buttons/SettingButton.vue new file mode 100644 index 0000000..598fd62 --- /dev/null +++ b/src/components/buttons/SettingButton.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/components/buttons/XmarkButton.vue b/src/components/buttons/XmarkButton.vue new file mode 100644 index 0000000..b8ed605 --- /dev/null +++ b/src/components/buttons/XmarkButton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/common/BubbleBackground.vue b/src/components/common/BubbleBackground.vue new file mode 100644 index 0000000..4c5b62f --- /dev/null +++ b/src/components/common/BubbleBackground.vue @@ -0,0 +1,148 @@ + + + diff --git a/src/components/common/ChangeMonthComponent.vue b/src/components/common/ChangeMonthComponent.vue new file mode 100644 index 0000000..b3a0c6c --- /dev/null +++ b/src/components/common/ChangeMonthComponent.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/components/common/ChangeYearComponent.vue b/src/components/common/ChangeYearComponent.vue new file mode 100644 index 0000000..abbc9e8 --- /dev/null +++ b/src/components/common/ChangeYearComponent.vue @@ -0,0 +1,74 @@ + + + + diff --git a/src/components/common/CheckCircle.vue b/src/components/common/CheckCircle.vue new file mode 100644 index 0000000..a80e53f --- /dev/null +++ b/src/components/common/CheckCircle.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/components/common/CommonArticle.vue b/src/components/common/CommonArticle.vue new file mode 100644 index 0000000..c0b2f6a --- /dev/null +++ b/src/components/common/CommonArticle.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/src/components/common/CommonHeader.vue b/src/components/common/CommonHeader.vue new file mode 100644 index 0000000..c8194a3 --- /dev/null +++ b/src/components/common/CommonHeader.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/components/common/CommonMenu.vue b/src/components/common/CommonMenu.vue new file mode 100644 index 0000000..37e65e5 --- /dev/null +++ b/src/components/common/CommonMenu.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/common/CommonNav.vue b/src/components/common/CommonNav.vue new file mode 100644 index 0000000..d4aa3a3 --- /dev/null +++ b/src/components/common/CommonNav.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/components/common/CompanyLogo.vue b/src/components/common/CompanyLogo.vue new file mode 100644 index 0000000..749396d --- /dev/null +++ b/src/components/common/CompanyLogo.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/common/CompanyName.vue b/src/components/common/CompanyName.vue new file mode 100644 index 0000000..115d965 --- /dev/null +++ b/src/components/common/CompanyName.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/components/common/DepartmentMemberInfoComponent.vue b/src/components/common/DepartmentMemberInfoComponent.vue new file mode 100644 index 0000000..a4d1738 --- /dev/null +++ b/src/components/common/DepartmentMemberInfoComponent.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/src/components/common/FileItem.vue b/src/components/common/FileItem.vue new file mode 100644 index 0000000..d638864 --- /dev/null +++ b/src/components/common/FileItem.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/components/common/InfoCircle.vue b/src/components/common/InfoCircle.vue new file mode 100644 index 0000000..832ed2d --- /dev/null +++ b/src/components/common/InfoCircle.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/components/common/LoadingOverlay.vue b/src/components/common/LoadingOverlay.vue new file mode 100644 index 0000000..b3c353a --- /dev/null +++ b/src/components/common/LoadingOverlay.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/components/common/LoginSection.vue b/src/components/common/LoginSection.vue new file mode 100644 index 0000000..a7b3f72 --- /dev/null +++ b/src/components/common/LoginSection.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/src/components/common/MyInfoComponent.vue b/src/components/common/MyInfoComponent.vue new file mode 100644 index 0000000..427d448 --- /dev/null +++ b/src/components/common/MyInfoComponent.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/components/common/PaginationComponent.vue b/src/components/common/PaginationComponent.vue new file mode 100644 index 0000000..ab1e974 --- /dev/null +++ b/src/components/common/PaginationComponent.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/components/common/SearchEmployeeComponent.vue b/src/components/common/SearchEmployeeComponent.vue new file mode 100644 index 0000000..3cfe923 --- /dev/null +++ b/src/components/common/SearchEmployeeComponent.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/common/SelectAppTypeComponent.vue b/src/components/common/SelectAppTypeComponent.vue new file mode 100644 index 0000000..26fcf81 --- /dev/null +++ b/src/components/common/SelectAppTypeComponent.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/src/components/common/SelectPeriodComponent.vue b/src/components/common/SelectPeriodComponent.vue new file mode 100644 index 0000000..37dbd14 --- /dev/null +++ b/src/components/common/SelectPeriodComponent.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/src/components/common/SelectYearMonthComponent.vue b/src/components/common/SelectYearMonthComponent.vue new file mode 100644 index 0000000..5c87cfe --- /dev/null +++ b/src/components/common/SelectYearMonthComponent.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/components/dropdowns/AccountDropdown.vue b/src/components/dropdowns/AccountDropdown.vue new file mode 100644 index 0000000..2d5d0c7 --- /dev/null +++ b/src/components/dropdowns/AccountDropdown.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/components/dropdowns/AppointmentHisDropDown.vue b/src/components/dropdowns/AppointmentHisDropDown.vue new file mode 100644 index 0000000..15db790 --- /dev/null +++ b/src/components/dropdowns/AppointmentHisDropDown.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/components/dropdowns/DateDropDown.vue b/src/components/dropdowns/DateDropDown.vue new file mode 100644 index 0000000..63bdd67 --- /dev/null +++ b/src/components/dropdowns/DateDropDown.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/components/dropdowns/DisciplineRewardTypeDropDown.vue b/src/components/dropdowns/DisciplineRewardTypeDropDown.vue new file mode 100644 index 0000000..fa84eca --- /dev/null +++ b/src/components/dropdowns/DisciplineRewardTypeDropDown.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/components/dropdowns/DropdownItem.vue b/src/components/dropdowns/DropdownItem.vue new file mode 100644 index 0000000..8258410 --- /dev/null +++ b/src/components/dropdowns/DropdownItem.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/components/dropdowns/HalfDropdown.vue b/src/components/dropdowns/HalfDropdown.vue new file mode 100644 index 0000000..bd82bf9 --- /dev/null +++ b/src/components/dropdowns/HalfDropdown.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/dropdowns/PeriodDropDown.vue b/src/components/dropdowns/PeriodDropDown.vue new file mode 100644 index 0000000..cbc74f4 --- /dev/null +++ b/src/components/dropdowns/PeriodDropDown.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/dropdowns/ThirtyMinuteDropDown.vue b/src/components/dropdowns/ThirtyMinuteDropDown.vue new file mode 100644 index 0000000..dfe5e86 --- /dev/null +++ b/src/components/dropdowns/ThirtyMinuteDropDown.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/components/dropdowns/TimeDropDown.vue b/src/components/dropdowns/TimeDropDown.vue new file mode 100644 index 0000000..e5d4e25 --- /dev/null +++ b/src/components/dropdowns/TimeDropDown.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/components/dropdowns/YearDropDown.vue b/src/components/dropdowns/YearDropDown.vue new file mode 100644 index 0000000..17505c7 --- /dev/null +++ b/src/components/dropdowns/YearDropDown.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/src/components/dropdowns/YearMonthDropDown.vue b/src/components/dropdowns/YearMonthDropDown.vue new file mode 100644 index 0000000..a12c5ae --- /dev/null +++ b/src/components/dropdowns/YearMonthDropDown.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/components/employee-search/DepartmentHeirarchy.vue b/src/components/employee-search/DepartmentHeirarchy.vue new file mode 100644 index 0000000..66adb12 --- /dev/null +++ b/src/components/employee-search/DepartmentHeirarchy.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/employee-search/EmployeeDetail.vue b/src/components/employee-search/EmployeeDetail.vue new file mode 100644 index 0000000..5a1e6fe --- /dev/null +++ b/src/components/employee-search/EmployeeDetail.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/src/components/employee-search/EmployeeList.vue b/src/components/employee-search/EmployeeList.vue new file mode 100644 index 0000000..27994c5 --- /dev/null +++ b/src/components/employee-search/EmployeeList.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/src/components/employee-search/SearchBar.vue b/src/components/employee-search/SearchBar.vue new file mode 100644 index 0000000..aebd281 --- /dev/null +++ b/src/components/employee-search/SearchBar.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/components/employee-search/TreeNode.vue b/src/components/employee-search/TreeNode.vue new file mode 100644 index 0000000..c222fdf --- /dev/null +++ b/src/components/employee-search/TreeNode.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/components/icons/AddressBookIcon.vue b/src/components/icons/AddressBookIcon.vue new file mode 100644 index 0000000..ad5cb1d --- /dev/null +++ b/src/components/icons/AddressBookIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ArrowLeftIcon.vue b/src/components/icons/ArrowLeftIcon.vue new file mode 100644 index 0000000..c5ad9fd --- /dev/null +++ b/src/components/icons/ArrowLeftIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ArrowUpIcon.vue b/src/components/icons/ArrowUpIcon.vue new file mode 100644 index 0000000..36cbe50 --- /dev/null +++ b/src/components/icons/ArrowUpIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/BuildingIcon.vue b/src/components/icons/BuildingIcon.vue new file mode 100644 index 0000000..3ab36b2 --- /dev/null +++ b/src/components/icons/BuildingIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CaretDownIcon.vue b/src/components/icons/CaretDownIcon.vue new file mode 100644 index 0000000..9ed8999 --- /dev/null +++ b/src/components/icons/CaretDownIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CaretLeftIcon.vue b/src/components/icons/CaretLeftIcon.vue new file mode 100644 index 0000000..fdf45f6 --- /dev/null +++ b/src/components/icons/CaretLeftIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CaretRightIcon.vue b/src/components/icons/CaretRightIcon.vue new file mode 100644 index 0000000..d42ae24 --- /dev/null +++ b/src/components/icons/CaretRightIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CaretUpIcon.vue b/src/components/icons/CaretUpIcon.vue new file mode 100644 index 0000000..83e5349 --- /dev/null +++ b/src/components/icons/CaretUpIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChartIcon.vue b/src/components/icons/ChartIcon.vue new file mode 100644 index 0000000..b31e930 --- /dev/null +++ b/src/components/icons/ChartIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CheckIcon.vue b/src/components/icons/CheckIcon.vue new file mode 100644 index 0000000..f902b59 --- /dev/null +++ b/src/components/icons/CheckIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChevronDownIcon.vue b/src/components/icons/ChevronDownIcon.vue new file mode 100644 index 0000000..3899799 --- /dev/null +++ b/src/components/icons/ChevronDownIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChevronLeftIcon.vue b/src/components/icons/ChevronLeftIcon.vue new file mode 100644 index 0000000..603348a --- /dev/null +++ b/src/components/icons/ChevronLeftIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChevronRightIcon.vue b/src/components/icons/ChevronRightIcon.vue new file mode 100644 index 0000000..5d365af --- /dev/null +++ b/src/components/icons/ChevronRightIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ChevronUpIcon.vue b/src/components/icons/ChevronUpIcon.vue new file mode 100644 index 0000000..25819d0 --- /dev/null +++ b/src/components/icons/ChevronUpIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ClockIcon.vue b/src/components/icons/ClockIcon.vue new file mode 100644 index 0000000..3c5f1af --- /dev/null +++ b/src/components/icons/ClockIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/CopyIcon.vue b/src/components/icons/CopyIcon.vue new file mode 100644 index 0000000..574c072 --- /dev/null +++ b/src/components/icons/CopyIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/EvaluationIcon.vue b/src/components/icons/EvaluationIcon.vue new file mode 100644 index 0000000..943e9dc --- /dev/null +++ b/src/components/icons/EvaluationIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/ExcelIcon.vue b/src/components/icons/ExcelIcon.vue new file mode 100644 index 0000000..976af3d --- /dev/null +++ b/src/components/icons/ExcelIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/FolderCloseIcon.vue b/src/components/icons/FolderCloseIcon.vue new file mode 100644 index 0000000..2ff6f3d --- /dev/null +++ b/src/components/icons/FolderCloseIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/FolerOpenIcon.vue b/src/components/icons/FolerOpenIcon.vue new file mode 100644 index 0000000..cb4405f --- /dev/null +++ b/src/components/icons/FolerOpenIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/GearIcon.vue b/src/components/icons/GearIcon.vue new file mode 100644 index 0000000..c40fc8e --- /dev/null +++ b/src/components/icons/GearIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/HomeIcon.vue b/src/components/icons/HomeIcon.vue new file mode 100644 index 0000000..e21b6a2 --- /dev/null +++ b/src/components/icons/HomeIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/MenuIcon.vue b/src/components/icons/MenuIcon.vue new file mode 100644 index 0000000..70951de --- /dev/null +++ b/src/components/icons/MenuIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/MinusIcon.vue b/src/components/icons/MinusIcon.vue new file mode 100644 index 0000000..80f5269 --- /dev/null +++ b/src/components/icons/MinusIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/PaperClipIcon.vue b/src/components/icons/PaperClipIcon.vue new file mode 100644 index 0000000..a8a6818 --- /dev/null +++ b/src/components/icons/PaperClipIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/PlusIcon.vue b/src/components/icons/PlusIcon.vue new file mode 100644 index 0000000..37ebc1c --- /dev/null +++ b/src/components/icons/PlusIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/QuestionIcon.vue b/src/components/icons/QuestionIcon.vue new file mode 100644 index 0000000..8dafcb5 --- /dev/null +++ b/src/components/icons/QuestionIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/RobotIcon.vue b/src/components/icons/RobotIcon.vue new file mode 100644 index 0000000..b1619cd --- /dev/null +++ b/src/components/icons/RobotIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/SearchIcon.vue b/src/components/icons/SearchIcon.vue new file mode 100644 index 0000000..0c761a8 --- /dev/null +++ b/src/components/icons/SearchIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/UserIcon.vue b/src/components/icons/UserIcon.vue new file mode 100644 index 0000000..eb0a86a --- /dev/null +++ b/src/components/icons/UserIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/icons/XmarkIcon.vue b/src/components/icons/XmarkIcon.vue new file mode 100644 index 0000000..4c5b424 --- /dev/null +++ b/src/components/icons/XmarkIcon.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/modals/CrudModal.vue b/src/components/modals/CrudModal.vue new file mode 100644 index 0000000..26a2fd4 --- /dev/null +++ b/src/components/modals/CrudModal.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/components/modals/ModalBackground.vue b/src/components/modals/ModalBackground.vue new file mode 100644 index 0000000..5fe20de --- /dev/null +++ b/src/components/modals/ModalBackground.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/src/components/modals/ModalItem.vue b/src/components/modals/ModalItem.vue new file mode 100644 index 0000000..d4752e0 --- /dev/null +++ b/src/components/modals/ModalItem.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/components/modals/NoticeModal.vue b/src/components/modals/NoticeModal.vue new file mode 100644 index 0000000..4b47185 --- /dev/null +++ b/src/components/modals/NoticeModal.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/components/modals/ResetPasswordModal.vue b/src/components/modals/ResetPasswordModal.vue new file mode 100644 index 0000000..e4cfa60 --- /dev/null +++ b/src/components/modals/ResetPasswordModal.vue @@ -0,0 +1,268 @@ + + + + + + diff --git a/src/components/modals/SettingModal.vue b/src/components/modals/SettingModal.vue new file mode 100644 index 0000000..c9e3f0b --- /dev/null +++ b/src/components/modals/SettingModal.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/components/nav/MenuNav.vue b/src/components/nav/MenuNav.vue new file mode 100644 index 0000000..12fb9ae --- /dev/null +++ b/src/components/nav/MenuNav.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/nav/MonthSelectNav.vue b/src/components/nav/MonthSelectNav.vue new file mode 100644 index 0000000..ae4995f --- /dev/null +++ b/src/components/nav/MonthSelectNav.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/src/components/nav/SubMenuNav.vue b/src/components/nav/SubMenuNav.vue new file mode 100644 index 0000000..4a60c60 --- /dev/null +++ b/src/components/nav/SubMenuNav.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/components/salarytable/SalaryTable.vue b/src/components/salarytable/SalaryTable.vue new file mode 100644 index 0000000..83b308e --- /dev/null +++ b/src/components/salarytable/SalaryTable.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/src/components/semantic/ArticleItem.vue b/src/components/semantic/ArticleItem.vue new file mode 100644 index 0000000..2f14d45 --- /dev/null +++ b/src/components/semantic/ArticleItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/ButtonItem.vue b/src/components/semantic/ButtonItem.vue new file mode 100644 index 0000000..2db09a6 --- /dev/null +++ b/src/components/semantic/ButtonItem.vue @@ -0,0 +1,83 @@ + + + diff --git a/src/components/semantic/FigcaptionItem.vue b/src/components/semantic/FigcaptionItem.vue new file mode 100644 index 0000000..78c5d1a --- /dev/null +++ b/src/components/semantic/FigcaptionItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/FigureItem.vue b/src/components/semantic/FigureItem.vue new file mode 100644 index 0000000..ab25b01 --- /dev/null +++ b/src/components/semantic/FigureItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/FlexItem.vue b/src/components/semantic/FlexItem.vue new file mode 100644 index 0000000..b8389f2 --- /dev/null +++ b/src/components/semantic/FlexItem.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/components/semantic/FooterItem.vue b/src/components/semantic/FooterItem.vue new file mode 100644 index 0000000..3de7e4e --- /dev/null +++ b/src/components/semantic/FooterItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/GridItem.vue b/src/components/semantic/GridItem.vue new file mode 100644 index 0000000..176c63b --- /dev/null +++ b/src/components/semantic/GridItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/HeaderItem.vue b/src/components/semantic/HeaderItem.vue new file mode 100644 index 0000000..1e96192 --- /dev/null +++ b/src/components/semantic/HeaderItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/LiItem.vue b/src/components/semantic/LiItem.vue new file mode 100644 index 0000000..4f0abef --- /dev/null +++ b/src/components/semantic/LiItem.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/components/semantic/MainItem.vue b/src/components/semantic/MainItem.vue new file mode 100644 index 0000000..1a8d959 --- /dev/null +++ b/src/components/semantic/MainItem.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/components/semantic/NavItem.vue b/src/components/semantic/NavItem.vue new file mode 100644 index 0000000..fb040f7 --- /dev/null +++ b/src/components/semantic/NavItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/SectionItem.vue b/src/components/semantic/SectionItem.vue new file mode 100644 index 0000000..ae23499 --- /dev/null +++ b/src/components/semantic/SectionItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/semantic/TableCell.vue b/src/components/semantic/TableCell.vue new file mode 100644 index 0000000..7b9a5f6 --- /dev/null +++ b/src/components/semantic/TableCell.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/components/semantic/TableItem.vue b/src/components/semantic/TableItem.vue new file mode 100644 index 0000000..4fa6bb3 --- /dev/null +++ b/src/components/semantic/TableItem.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/semantic/TableRow.vue b/src/components/semantic/TableRow.vue new file mode 100644 index 0000000..bee4b64 --- /dev/null +++ b/src/components/semantic/TableRow.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/components/semantic/UlItem.vue b/src/components/semantic/UlItem.vue new file mode 100644 index 0000000..39ccb29 --- /dev/null +++ b/src/components/semantic/UlItem.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/widgets/MyAttendanceWidget.vue b/src/components/widgets/MyAttendanceWidget.vue new file mode 100644 index 0000000..9d2ac7a --- /dev/null +++ b/src/components/widgets/MyAttendanceWidget.vue @@ -0,0 +1,182 @@ + + + diff --git a/src/components/widgets/MyScheduleWidget.vue b/src/components/widgets/MyScheduleWidget.vue new file mode 100644 index 0000000..26c2f01 --- /dev/null +++ b/src/components/widgets/MyScheduleWidget.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src/components/widgets/MyTeamMemberWidget.vue b/src/components/widgets/MyTeamMemberWidget.vue new file mode 100644 index 0000000..d5b9a75 --- /dev/null +++ b/src/components/widgets/MyTeamMemberWidget.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/components/widgets/ScheduleDdayWidget.vue b/src/components/widgets/ScheduleDdayWidget.vue new file mode 100644 index 0000000..d0b20d1 --- /dev/null +++ b/src/components/widgets/ScheduleDdayWidget.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/components/widgets/WidgetItem.vue b/src/components/widgets/WidgetItem.vue new file mode 100644 index 0000000..9f51517 --- /dev/null +++ b/src/components/widgets/WidgetItem.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/main.js b/src/main.js index 01433bc..6bbd655 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,17 @@ -import { createApp } from 'vue' -import App from './App.vue' +import './assets/main.css'; -createApp(App).mount('#app') +import { createApp } from 'vue'; +import { createPinia } from 'pinia'; + +import App from './App.vue'; +import router from './router'; + +// import '@fortawesome/fontawesome-free/css/all.css'; +// import '@fortawesome/fontawesome-free/js/all.js'; + +const app = createApp(App); + +app.use(createPinia()); +app.use(router); + +app.mount('#app'); diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..d7b112e --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,26 @@ +import { createRouter, createWebHistory } from 'vue-router'; +import HomeView from '../views/home/HomeView.vue'; +import LoginView from '@/views/login/LoginView.vue'; + +const routes = [ + { + path: '/', + name: 'home', + component: HomeView, + }, + { + path: '/login', + name: 'login', + component: LoginView, + }, +]; + +const router = createRouter({ + history: createWebHistory(), + routes, + scrollBehavior() { + return { top: 0 }; + }, +}); + +export default router; diff --git a/src/views/home/HomeView.vue b/src/views/home/HomeView.vue new file mode 100644 index 0000000..33b5662 --- /dev/null +++ b/src/views/home/HomeView.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/src/views/login/LoginView.vue b/src/views/login/LoginView.vue new file mode 100644 index 0000000..cf53cdd --- /dev/null +++ b/src/views/login/LoginView.vue @@ -0,0 +1,116 @@ + + + + + From 10a6faef9b0132cd67703b65388a4750f0d86139 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 18:21:21 +0900 Subject: [PATCH 21/23] deploy test --- src/router/index.js | 635 +++++++++++++ src/views/chatbot/ChatbotView.vue | 359 ++++++++ src/views/emp-search/EmployeeSearchView.vue | 170 ++++ .../evaluation/EvalGradeUpdateModalView.vue | 218 +++++ src/views/evaluation/EvalGradeView.vue | 408 ++++++++ .../evaluation/EvalPolicyManagementView.vue | 545 +++++++++++ .../EvalPolicyUpdateAndViewModal.vue | 387 ++++++++ src/views/evaluation/EvalPolicyView.vue | 95 ++ src/views/evaluation/EvalTaskView.vue | 118 +++ .../evaluation/EvalTypeManagementView.vue | 229 +++++ src/views/evaluation/LeaderEvalView.vue | 96 ++ .../PersonalEvalCreateAndFindView.vue | 366 ++++++++ src/views/evaluation/PersonalEvalFindView.vue | 212 +++++ src/views/evaluation/PersonalEvalView.vue | 103 +++ src/views/evaluation/TaskEvalModal.vue | 255 +++++ src/views/evaluation/TaskPolicyView.vue | 115 +++ .../evaluation/leader/DeptTaskAssignView.vue | 390 ++++++++ .../evaluation/leader/DeptTaskUploadView.vue | 347 +++++++ .../evaluation/leader/FeedbackManageView.vue | 488 ++++++++++ .../evaluation/leader/LeaderEvalListView.vue | 244 +++++ .../leader/TaskEvalCreateAndUpdateModal.vue | 172 ++++ src/views/hr-basic/AttendanceView.vue | 103 +++ src/views/hr-basic/ContractView.vue | 95 ++ src/views/hr-basic/MyDepartmentView.vue | 163 ++++ src/views/hr-basic/MyInfoView.vue | 108 +++ src/views/hr-basic/SalaryView.vue | 119 +++ .../attendance/BusinessTripRequestsView.vue | 274 ++++++ .../hr-basic/attendance/BusinessTripView.vue | 349 +++++++ src/views/hr-basic/attendance/CommuteView.vue | 203 ++++ .../attendance/DispatchRequestsView.vue | 274 ++++++ .../hr-basic/attendance/DispatchView.vue | 349 +++++++ .../hr-basic/attendance/LeaveRequestsView.vue | 272 ++++++ src/views/hr-basic/attendance/LeaveView.vue | 413 +++++++++ .../attendance/OvertimeRequestsView.vue | 283 ++++++ .../hr-basic/attendance/OvertimeView.vue | 539 +++++++++++ .../attendance/RemoteRequestsView.vue | 270 ++++++ src/views/hr-basic/attendance/RemoteView.vue | 295 ++++++ .../attendance/ReturnRequestsView.vue | 270 ++++++ src/views/hr-basic/attendance/ReturnView.vue | 430 +++++++++ .../attendance/VacationRequestsView.vue | 272 ++++++ .../hr-basic/attendance/VacationView.vue | 456 +++++++++ .../hr-basic/document/CertificateModal.vue | 608 ++++++++++++ .../hr-basic/document/CertificateView.vue | 150 +++ .../hr-basic/document/ContractSignView.vue | 206 +++++ .../document/EmployeeContractModal.vue | 871 ++++++++++++++++++ .../document/SecurityContractModal.vue | 724 +++++++++++++++ .../employee/CareerInfoUpdateVIew.vue | 431 +++++++++ .../hr-basic/employee/CareerInfoVIew.vue | 181 ++++ .../employee/DisciplineRewardInfoView.vue | 182 ++++ .../employee/EducationInfoUpdateVIew.vue | 436 +++++++++ .../hr-basic/employee/EducationInfoView.vue | 170 ++++ .../employee/FamilyMemberInfoUpdateView.vue | 449 +++++++++ .../employee/FamilyMemberInfoView.vue | 164 ++++ .../employee/LanguageTestInfoUpdateView.vue | 480 ++++++++++ .../employee/LanguageTestInfoView.vue | 177 ++++ src/views/hr-basic/employee/ProfileView.vue | 751 +++++++++++++++ .../employee/QualificationInfoUpdateView.vue | 446 +++++++++ .../employee/QualificationInfoView.vue | 171 ++++ .../my-department/MyDepartmentAttendance.vue | 44 + .../my-department/SearchDepartmentMember.vue | 294 ++++++ .../hr-basic/salary/PeriodicSalaryView.vue | 152 +++ .../hr-basic/salary/SalaryDetailView.vue | 444 +++++++++ src/views/hr-basic/salary/SalaryListView.vue | 146 +++ .../hr-basic/salary/SeverancePayView.vue | 282 ++++++ .../AppointmentManagementView.vue | 109 +++ .../hr-management/ContractManagementView.vue | 38 + .../DepartmentManagementView .vue | 190 ++++ src/views/hr-management/EmployeeInfoView.vue | 126 +++ .../hr-management/EmployeeUploadView.vue | 115 +++ .../Salary/EmployeeSalaryListView.vue | 206 +++++ .../Salary/IrregularAllowanceView.vue | 167 ++++ .../hr-management/Salary/NonTaxableView.vue | 164 ++++ .../hr-management/SalaryManagementView.vue | 103 +++ .../hr-management/VacationManagementView.vue | 96 ++ .../appointment/AppointmentHistoryView.vue | 349 +++++++ .../appointment/AppointmentUploadView.vue | 535 +++++++++++ .../DepartmentManagementAddView.vue | 310 +++++++ .../DepartmentManagementInformationView.vue | 449 +++++++++ .../department/DepartmentSearch.vue | 187 ++++ .../employee-upload/CareerInfoUploadView.vue | 496 ++++++++++ .../DisciplineRewardInfoUploadView.vue | 495 ++++++++++ .../EducationInfoUploadView.vue | 498 ++++++++++ .../EmployeeInfoUploadView.vue | 524 +++++++++++ .../FamilyMemberInfoUploadView.vue | 520 +++++++++++ .../LanguageTestInfoUploadView.vue | 537 +++++++++++ .../QualificationInfoUploadView.vue | 511 ++++++++++ .../vacation/VacationPaymentView.vue | 252 +++++ .../vacation/VacationPolicyView.vue | 419 +++++++++ 88 files changed, 26844 insertions(+) create mode 100644 src/views/chatbot/ChatbotView.vue create mode 100644 src/views/emp-search/EmployeeSearchView.vue create mode 100644 src/views/evaluation/EvalGradeUpdateModalView.vue create mode 100644 src/views/evaluation/EvalGradeView.vue create mode 100644 src/views/evaluation/EvalPolicyManagementView.vue create mode 100644 src/views/evaluation/EvalPolicyUpdateAndViewModal.vue create mode 100644 src/views/evaluation/EvalPolicyView.vue create mode 100644 src/views/evaluation/EvalTaskView.vue create mode 100644 src/views/evaluation/EvalTypeManagementView.vue create mode 100644 src/views/evaluation/LeaderEvalView.vue create mode 100644 src/views/evaluation/PersonalEvalCreateAndFindView.vue create mode 100644 src/views/evaluation/PersonalEvalFindView.vue create mode 100644 src/views/evaluation/PersonalEvalView.vue create mode 100644 src/views/evaluation/TaskEvalModal.vue create mode 100644 src/views/evaluation/TaskPolicyView.vue create mode 100644 src/views/evaluation/leader/DeptTaskAssignView.vue create mode 100644 src/views/evaluation/leader/DeptTaskUploadView.vue create mode 100644 src/views/evaluation/leader/FeedbackManageView.vue create mode 100644 src/views/evaluation/leader/LeaderEvalListView.vue create mode 100644 src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue create mode 100644 src/views/hr-basic/AttendanceView.vue create mode 100644 src/views/hr-basic/ContractView.vue create mode 100644 src/views/hr-basic/MyDepartmentView.vue create mode 100644 src/views/hr-basic/MyInfoView.vue create mode 100644 src/views/hr-basic/SalaryView.vue create mode 100644 src/views/hr-basic/attendance/BusinessTripRequestsView.vue create mode 100644 src/views/hr-basic/attendance/BusinessTripView.vue create mode 100644 src/views/hr-basic/attendance/CommuteView.vue create mode 100644 src/views/hr-basic/attendance/DispatchRequestsView.vue create mode 100644 src/views/hr-basic/attendance/DispatchView.vue create mode 100644 src/views/hr-basic/attendance/LeaveRequestsView.vue create mode 100644 src/views/hr-basic/attendance/LeaveView.vue create mode 100644 src/views/hr-basic/attendance/OvertimeRequestsView.vue create mode 100644 src/views/hr-basic/attendance/OvertimeView.vue create mode 100644 src/views/hr-basic/attendance/RemoteRequestsView.vue create mode 100644 src/views/hr-basic/attendance/RemoteView.vue create mode 100644 src/views/hr-basic/attendance/ReturnRequestsView.vue create mode 100644 src/views/hr-basic/attendance/ReturnView.vue create mode 100644 src/views/hr-basic/attendance/VacationRequestsView.vue create mode 100644 src/views/hr-basic/attendance/VacationView.vue create mode 100644 src/views/hr-basic/document/CertificateModal.vue create mode 100644 src/views/hr-basic/document/CertificateView.vue create mode 100644 src/views/hr-basic/document/ContractSignView.vue create mode 100644 src/views/hr-basic/document/EmployeeContractModal.vue create mode 100644 src/views/hr-basic/document/SecurityContractModal.vue create mode 100644 src/views/hr-basic/employee/CareerInfoUpdateVIew.vue create mode 100644 src/views/hr-basic/employee/CareerInfoVIew.vue create mode 100644 src/views/hr-basic/employee/DisciplineRewardInfoView.vue create mode 100644 src/views/hr-basic/employee/EducationInfoUpdateVIew.vue create mode 100644 src/views/hr-basic/employee/EducationInfoView.vue create mode 100644 src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue create mode 100644 src/views/hr-basic/employee/FamilyMemberInfoView.vue create mode 100644 src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue create mode 100644 src/views/hr-basic/employee/LanguageTestInfoView.vue create mode 100644 src/views/hr-basic/employee/ProfileView.vue create mode 100644 src/views/hr-basic/employee/QualificationInfoUpdateView.vue create mode 100644 src/views/hr-basic/employee/QualificationInfoView.vue create mode 100644 src/views/hr-basic/my-department/MyDepartmentAttendance.vue create mode 100644 src/views/hr-basic/my-department/SearchDepartmentMember.vue create mode 100644 src/views/hr-basic/salary/PeriodicSalaryView.vue create mode 100644 src/views/hr-basic/salary/SalaryDetailView.vue create mode 100644 src/views/hr-basic/salary/SalaryListView.vue create mode 100644 src/views/hr-basic/salary/SeverancePayView.vue create mode 100644 src/views/hr-management/AppointmentManagementView.vue create mode 100644 src/views/hr-management/ContractManagementView.vue create mode 100644 src/views/hr-management/DepartmentManagementView .vue create mode 100644 src/views/hr-management/EmployeeInfoView.vue create mode 100644 src/views/hr-management/EmployeeUploadView.vue create mode 100644 src/views/hr-management/Salary/EmployeeSalaryListView.vue create mode 100644 src/views/hr-management/Salary/IrregularAllowanceView.vue create mode 100644 src/views/hr-management/Salary/NonTaxableView.vue create mode 100644 src/views/hr-management/SalaryManagementView.vue create mode 100644 src/views/hr-management/VacationManagementView.vue create mode 100644 src/views/hr-management/appointment/AppointmentHistoryView.vue create mode 100644 src/views/hr-management/appointment/AppointmentUploadView.vue create mode 100644 src/views/hr-management/department/DepartmentManagementAddView.vue create mode 100644 src/views/hr-management/department/DepartmentManagementInformationView.vue create mode 100644 src/views/hr-management/department/DepartmentSearch.vue create mode 100644 src/views/hr-management/employee-upload/CareerInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/EducationInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue create mode 100644 src/views/hr-management/employee-upload/QualificationInfoUploadView.vue create mode 100644 src/views/hr-management/vacation/VacationPaymentView.vue create mode 100644 src/views/hr-management/vacation/VacationPolicyView.vue diff --git a/src/router/index.js b/src/router/index.js index d7b112e..df8e87e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,6 +1,87 @@ import { createRouter, createWebHistory } from 'vue-router'; import HomeView from '../views/home/HomeView.vue'; +import ChatbotView from '@/views/chatbot/ChatbotView.vue'; +import MyInfoView from '@/views/hr-basic/MyInfoView.vue'; +import AttendanceView from '@/views/hr-basic/AttendanceView.vue'; +import SalaryView from '@/views/hr-basic/SalaryView.vue'; +import ContractView from '@/views/hr-basic/ContractView.vue'; +import PersonalEvalView from '@/views/evaluation/PersonalEvalView.vue'; +import PersonalEvalFindView from '@/views/evaluation/PersonalEvalFindView.vue'; +import PersonalEvalCreateAndFindView from '@/views/evaluation/PersonalEvalCreateAndFindView.vue'; +import FeedbackManageView from '@/views/evaluation/leader/FeedbackManageView.vue'; +import LeaderEvalListView from '@/views/evaluation/leader/LeaderEvalListView.vue'; +import LeaderEvalView from '@/views/evaluation/LeaderEvalView.vue'; +import EvalTaskView from '@/views/evaluation/EvalTaskView.vue'; +import EvalTypeManagementView from '@/views/evaluation/EvalTypeManagementView.vue'; +import EvalPolicyView from '@/views/evaluation/EvalPolicyView.vue'; +import EvalGradeView from '@/views/evaluation/EvalGradeView.vue'; +import EmployeeInfoView from '@/views/hr-management/EmployeeInfoView.vue'; +import EmployeeUploadView from '@/views/hr-management/EmployeeUploadView.vue'; +import DepartmentManagementView from '@/views/hr-management/DepartmentManagementView .vue'; +import AppointmentManagementView from '@/views/hr-management/AppointmentManagementView.vue'; +import VacationManagementView from '@/views/hr-management/VacationManagementView.vue'; +import EmployeeSearchView from '@/views/emp-search/EmployeeSearchView.vue'; import LoginView from '@/views/login/LoginView.vue'; +import CommuteView from '@/views/hr-basic/attendance/CommuteView.vue'; +import RemoteView from '@/views/hr-basic/attendance/RemoteView.vue'; +import OvertimeView from '@/views/hr-basic/attendance/OvertimeView.vue'; +import LeaveView from '@/views/hr-basic/attendance/LeaveView.vue'; +import ReturnView from '@/views/hr-basic/attendance/ReturnView.vue'; +import BusinessTripView from '@/views/hr-basic/attendance/BusinessTripView.vue'; +import DispatchView from '@/views/hr-basic/attendance/DispatchView.vue'; +import VacationView from '@/views/hr-basic/attendance/VacationView.vue'; +import VacationPaymentView from '@/views/hr-management/vacation/VacationPaymentView.vue'; +import VacationPolicyView from '@/views/hr-management/vacation/VacationPolicyView.vue'; +import CareerInfoUploadView from '@/views/hr-management/employee-upload/CareerInfoUploadView.vue'; +import EducationInfoUploadView from '@/views/hr-management/employee-upload/EducationInfoUploadView.vue'; +import QualificationInfoUploadView from '@/views/hr-management/employee-upload/QualificationInfoUploadView.vue'; +import LanguageTestInfoUploadView from '@/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue'; +import DisciplineRewardInfoUploadView from '@/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue'; +import FamilyMemberInfoUploadView from '@/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue'; +import MyDepartmentView from '@/views/hr-basic/MyDepartmentView.vue'; +import EmployeeInfoUploadView from '@/views/hr-management/employee-upload/EmployeeInfoUploadView.vue'; +import RemoteRequestsView from '@/views/hr-basic/attendance/RemoteRequestsView.vue'; +import OvertimeRequestsView from '@/views/hr-basic/attendance/OvertimeRequestsView.vue'; +import VacationRequestsView from '@/views/hr-basic/attendance/VacationRequestsView.vue'; +import LeaveRequestsView from '@/views/hr-basic/attendance/LeaveRequestsView.vue'; +import ReturnRequestsView from '@/views/hr-basic/attendance/ReturnRequestsView.vue'; +import BusinessTripRequestsView from '@/views/hr-basic/attendance/BusinessTripRequestsView.vue'; +import DispatchRequestsView from '@/views/hr-basic/attendance/DispatchRequestsView.vue'; +import SalaryManagementView from '@/views/hr-management/SalaryManagementView.vue'; +import AppointmentsUploadView from '@/views/hr-management/appointment/AppointmentUploadView.vue'; +import AppointmentsHistoryView from '@/views/hr-management/appointment/AppointmentHistoryView.vue'; +import SalaryDetailView from '@/views/hr-basic/salary/SalaryDetailView.vue'; +import SalaryListView from '@/views/hr-basic/salary/SalaryListView.vue'; +import SeverancePayView from '@/views/hr-basic/salary/SeverancePayView.vue'; + +// 인사기본- 사원 +import ProfileView from '@/views/hr-basic/employee/ProfileView.vue'; +import DisciplineRewardInfoView from '@/views/hr-basic/employee/DisciplineRewardInfoView.vue'; +import EducationInfoView from '@/views/hr-basic/employee/EducationInfoView.vue'; +import FamilyMemberInfoView from '@/views/hr-basic/employee/FamilyMemberInfoView.vue'; +import LanguageTestInfoView from '@/views/hr-basic/employee/LanguageTestInfoView.vue'; +import QualificationInfoView from '@/views/hr-basic/employee/QualificationInfoView.vue'; +import QualificationInfoUpdateView from '@/views/hr-basic/employee/QualificationInfoUpdateView.vue'; +import LanguageTestInfoUpdateView from '@/views/hr-basic/employee/LanguageTestInfoUpdateView.vue'; +import FamilyMemberInfoUpdateView from '@/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue'; +import CareerInfoView from '@/views/hr-basic/employee/CareerInfoVIew.vue'; +import CareerInfoUpdateView from '@/views/hr-basic/employee/CareerInfoUpdateVIew.vue'; +import EducationInfoUpdateView from '@/views/hr-basic/employee/EducationInfoUpdateVIew.vue'; + +// 인사기본- 계약서 +import ContractSignView from '@/views/hr-basic/document/ContractSignView.vue'; +import CertificateView from '@/views/hr-basic/document/CertificateView.vue'; +import EvalPolicyManagementView from '@/views/evaluation/EvalPolicyManagementView.vue'; +import EmployeeSalaryListView from '@/views/hr-management/Salary/EmployeeSalaryListView.vue'; +import IrregularAllowanceView from '@/views/hr-management/Salary/IrregularAllowanceView.vue'; +import DeptTaskUploadView from '@/views/evaluation/leader/DeptTaskUploadView.vue'; +import DeptTaskAssignView from '@/views/evaluation/leader/DeptTaskAssignView.vue'; +import NonTaxableView from '@/views/hr-management/Salary/NonTaxableView.vue'; + +// 인사관리 - 부서 +import DepartmentManagementInformationView from '@/views/hr-management/department/DepartmentManagementInformationView.vue'; +import DepartmentManagementAddView from '@/views/hr-management/department/DepartmentManagementAddView.vue'; +import PeriodicSalaryView from '@/views/hr-basic/salary/PeriodicSalaryView.vue'; const routes = [ { @@ -13,6 +94,560 @@ const routes = [ name: 'login', component: LoginView, }, + { + path: '/emp-search', + name: 'emp-search', + component: EmployeeSearchView, + }, + { + path: '/chatbot', + name: 'chatbot', + component: ChatbotView, + }, + { + path: '/hr-basic', + name: 'hr-basic', + redirect: '/hr-basic/my-info/careers', + component: MyInfoView, + }, + // 인사기본- 사원 + { + path: '/hr-basic/my-info', + name: 'hr-basic-my-info', + redirect: '/hr-basic/my-info/careers', + component: MyInfoView, + children: [ + { + path: 'careers', + name: 'hr-basic-career', + component: CareerInfoView, + }, + { + path: 'careers/update', + name: 'hr-basic-career-update', + component: CareerInfoUpdateView, + }, + { + path: 'disciplinerewards', + name: 'hr-basic-discipline-reward', + component: DisciplineRewardInfoView, + }, + { + path: 'educations', + name: 'hr-basic-education', + component: EducationInfoView, + }, + { + path: 'educations/update', + name: 'hr-basic-education-update', + component: EducationInfoUpdateView, + }, + { + path: 'familymembers', + name: 'hr-basic-family-member', + component: FamilyMemberInfoView, + }, + { + path: 'familymembers/update', + name: 'hr-basic-family-member-update', + component: FamilyMemberInfoUpdateView, + }, + { + path: 'languagetests', + name: 'hr-basic-language-test', + component: LanguageTestInfoView, + }, + { + path: 'languagetests/update', + name: 'hr-basic-language-test-update', + component: LanguageTestInfoUpdateView, + }, + { + path: 'qualifications', + name: 'hr-basic-qualification', + component: QualificationInfoView, + }, + { + path: 'qualifications/update', + name: 'hr-basic-qualification-update', + component: QualificationInfoUpdateView, + }, + ], + }, + { + path: '/hr-basic/attendance', + name: 'hr-basic-attendance', + component: AttendanceView, + children: [ + { + path: '', + name: 'hr-basic-attendance-default', + component: CommuteView, + }, + { + path: 'commute', + name: 'hr-basic-attendance-commute', + component: CommuteView, + }, + { + path: 'remote', + name: 'hr-basic-attendance-remote', + component: RemoteView, + }, + { + path: 'remote/requests', + name: 'hr-basic-attendance-remote-requests', + component: RemoteRequestsView, + }, + { + path: 'overtime', + name: 'hr-basic-attendance-overtime', + component: OvertimeView, + }, + { + path: 'overtime/requests', + name: 'hr-basic-attendance-overtime-requests', + component: OvertimeRequestsView, + }, + { + path: 'vacation', + name: 'hr-basic-attendance-vacation', + component: VacationView, + }, + { + path: 'vacation/requests', + name: 'hr-basic-attendance-vacation-requests', + component: VacationRequestsView, + }, + { + path: 'leave', + name: 'hr-basic-attendance-leave', + component: LeaveView, + }, + { + path: 'leave/requests', + name: 'hr-basic-attendance-leave-requests', + component: LeaveRequestsView, + }, + { + path: 'return', + name: 'hr-basic-attendance-return', + component: ReturnView, + }, + { + path: 'return/requests', + name: 'hr-basic-attendance-return-requests', + component: ReturnRequestsView, + }, + { + path: 'business-trip', + name: 'hr-basic-attendance-business-trip', + component: BusinessTripView, + }, + { + path: 'business-trip/requests', + name: 'hr-basic-attendance-business-trip-requests', + component: BusinessTripRequestsView, + }, + { + path: 'dispatch', + name: 'hr-basic-attendance-dispatch', + component: DispatchView, + }, + { + path: 'dispatch/requests', + name: 'hr-basic-attendance-dispatch-requests', + component: DispatchRequestsView, + }, + ], + }, + { + path: '/hr-basic/salary', + name: 'hr-basic-salary', + component: SalaryView, + children: [ + { + path: '', + name: 'hr-basic-salary-default', + component: SalaryListView, + }, + { + path: 'detail/:employeeId', + name: 'hr-basic-salary-detail', + component: SalaryDetailView, + }, + { + path: 'list/:employeeId', + name: 'hr-basic-salary-list', + component: SalaryListView, + }, + { + path: 'severance-pay/:employeeId', + name: 'hr-basic-severance-pay', + component: SeverancePayView, + }, + { + path: 'period', + name: 'hr-basic-salary-period', + component: PeriodicSalaryView, + }, + ], + }, + // 인사기본- 계약서서명 및 재직 증명서 + { + path: '/hr-basic/document', + name: 'hr-basic-document', + component: ContractView, + children: [ + { + path: '', + name: 'hr-basic-document-default', + component: ContractSignView, + }, + { + path: 'contract', + name: 'hr-basic-document-contract', + component: ContractSignView, + }, + { + path: 'certificate', + name: 'hr-basic-document-certificate', + component: CertificateView, + }, + ], + }, + { + path: '/hr-basic/my-department', + name: 'hr-basic-my-department', + props: true, + redirect: '/hr-basic/my-department/info/careers', + component: MyDepartmentView, + children: [ + { + path: 'info/careers', + name: 'dept-mem-career', + props: true, + component: CareerInfoView, + }, + { + path: 'info/disciplinerewards', + name: 'dept-mem-discipline-reward', + props: true, + component: DisciplineRewardInfoView, + }, + { + path: 'info/educations', + name: 'dept-mem-education', + props: true, + component: EducationInfoView, + }, + { + path: 'info/familymembers', + name: 'dept-mem-family-member', + props: true, + component: FamilyMemberInfoView, + }, + { + path: 'info/languagetests', + name: 'dept-mem-language-test', + props: true, + component: LanguageTestInfoView, + }, + { + path: 'info/qualifications', + name: 'dept-mem-qualification', + props: true, + component: QualificationInfoView, + }, + ], + }, + { + path: '/hr-management', + name: 'hr-management', + redirect: '/hr-management/employee/info/careers', + component: EmployeeInfoView, + }, + { + path: '/hr-management/employee/info', + name: 'hr-management-employee-info', + redirect: '/hr-management/employee/info/careers', + component: EmployeeInfoView, + children: [ + { + path: 'careers', + name: 'career', + props: true, + component: CareerInfoView, + }, + { + path: 'disciplinerewards', + name: 'discipline-reward', + props: true, + component: DisciplineRewardInfoView, + }, + { + path: 'educations', + name: 'education', + props: true, + component: EducationInfoView, + }, + { + path: 'familymembers', + name: 'family-member', + props: true, + component: FamilyMemberInfoView, + }, + { + path: 'languagetests', + name: 'language-test', + props: true, + component: LanguageTestInfoView, + }, + { + path: 'qualifications', + name: 'qualification', + props: true, + component: QualificationInfoView, + }, + ], + }, + { + path: '/hr-management/employee/upload', + name: 'hr-management-employee-upload', + redirect: '/hr-management/employee/upload/employees', + component: EmployeeUploadView, + children: [ + { + path: 'employees', + name: 'EmployeeInfo', + component: EmployeeInfoUploadView, + }, + { + path: 'careers', + name: 'CareerInfo', + component: CareerInfoUploadView, + }, + { + path: 'educations', + name: 'EducationInfo', + component: EducationInfoUploadView, + }, + { + path: 'qualifications', + name: 'QualificationInfo', + component: QualificationInfoUploadView, + }, + { + path: 'languagetests', + name: 'LanguageTestInfo', + component: LanguageTestInfoUploadView, + }, + { + path: 'disciplinerewards', + name: 'DisciplineRewardInfo', + component: DisciplineRewardInfoUploadView, + }, + { + path: 'familymembers', + name: 'FamilyMemberInfo', + component: FamilyMemberInfoUploadView, + }, + ], + }, + { + path: '/hr-management/department', + name: 'hr-management-department', + redirect: '/hr-management/department/info', + component: DepartmentManagementView, + children: [ + { + path: '', + name: 'hr-management-department-default', + component: DepartmentManagementInformationView, + redirect: '/hr-management/department/info', + }, + { + path: 'info', + name: 'hr-management-department-info', + component: DepartmentManagementInformationView, + }, + { + path: 'add', + name: 'hr-management-department-add', + component: DepartmentManagementAddView, + }, + ], + }, + { + path: '/hr-management/appointment', + name: 'hr-management-appointment', + redirect: '/hr-management/appointment/upload', + component: AppointmentManagementView, + children: [ + { + path: 'upload', + name: 'upload', + component: AppointmentsUploadView, + }, + { + path: 'history', + name: 'history', + component: AppointmentsHistoryView, + }, + ], + }, + { + path: '/hr-management/vacation', + name: 'hr-management-vacation', + component: VacationManagementView, + children: [ + { + path: '', + name: 'hr-management-vacation-default', + component: VacationPaymentView, + }, + { + path: 'payment', + name: 'hr-management-vacation-payment', + component: VacationPaymentView, + }, + { + path: 'policy', + name: 'hr-management-vacation-policy', + component: VacationPolicyView, + }, + ], + }, + { + path: '/hr-management/salary', + name: 'hr-management-salary', + component: SalaryManagementView, + children: [ + { + path: '', + name: 'hr-management-salary-default', + component: EmployeeSalaryListView, + }, + { + path: 'salary-list', + name: 'hr-management-salary-list', + component: EmployeeSalaryListView, + }, + { + path: 'irregular-allowance', + name: 'hr-management-salary-irregular-allowance', + component: IrregularAllowanceView, + }, + { + path: 'non-taxable-payrolls', + name: 'hr-management-salary-non-taxable-payrolls', + component: NonTaxableView, + }, + ], + }, + { + path: '/evaluation', + name: 'evaluation', + redirect: '/evaluation/personal', + }, + { + path: '/evaluation/personal', + name: 'personal-evaluation', + component: PersonalEvalView, + children: [ + { + path: '', + name: 'evaluation-personal-default', + component: PersonalEvalFindView, + }, + { + path: '1', + name: 'self-evaluation-management', + component: PersonalEvalFindView, + }, + { + path: '2', + name: 'submenu2', + component: PersonalEvalCreateAndFindView, + }, + ], + }, + { + path: '/evaluation/leader', + name: 'leader-evaluation', + component: LeaderEvalView, + children: [ + { + path: '', + name: 'leader-evaluation-default', + component: LeaderEvalListView, + }, + { + path: 'eval-list', + name: 'leader-evaluation-list', + component: LeaderEvalListView, + }, + { + path: 'dept-task/upload', + name: 'dept-task-upload', + component: DeptTaskUploadView, + }, + { + path: 'dept-task/assign', + name: 'dept-task-assign', + component: DeptTaskAssignView, + }, + { + path: 'feedback', + name: 'feedback-management', + component: FeedbackManageView, + }, + ], + }, + { + path: '/evaluation/task', + name: 'evaluation-task', + component: EvalTaskView, + children: [ + { + path: '', + name: 'evaluation-task-default', + component: PersonalEvalCreateAndFindView, + }, + { + path: 'register', + name: 'TaskEvalCreate-view', + component: PersonalEvalCreateAndFindView, + }, + ], + }, + { + path: '/evaluation/policy', + name: 'evaluation-policy', + component: EvalPolicyView, + children: [ + { + path: '', + name: 'eval-policy-default', + component: EvalTypeManagementView, + }, + { + path: 'eval-type', + name: 'eval-type-management', + component: EvalTypeManagementView, + }, + { + path: 'eval-policy', + name: 'eval-policy-management', + component: EvalPolicyManagementView, + }, + { + path: 'eval-grade', + name: 'eval-grade-management', + component: EvalGradeView, + }, + ], + }, ]; const router = createRouter({ diff --git a/src/views/chatbot/ChatbotView.vue b/src/views/chatbot/ChatbotView.vue new file mode 100644 index 0000000..0ed0db7 --- /dev/null +++ b/src/views/chatbot/ChatbotView.vue @@ -0,0 +1,359 @@ + + + + + diff --git a/src/views/emp-search/EmployeeSearchView.vue b/src/views/emp-search/EmployeeSearchView.vue new file mode 100644 index 0000000..9a7ac38 --- /dev/null +++ b/src/views/emp-search/EmployeeSearchView.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/views/evaluation/EvalGradeUpdateModalView.vue b/src/views/evaluation/EvalGradeUpdateModalView.vue new file mode 100644 index 0000000..641619e --- /dev/null +++ b/src/views/evaluation/EvalGradeUpdateModalView.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/src/views/evaluation/EvalGradeView.vue b/src/views/evaluation/EvalGradeView.vue new file mode 100644 index 0000000..749d5c2 --- /dev/null +++ b/src/views/evaluation/EvalGradeView.vue @@ -0,0 +1,408 @@ + + + + + diff --git a/src/views/evaluation/EvalPolicyManagementView.vue b/src/views/evaluation/EvalPolicyManagementView.vue new file mode 100644 index 0000000..b92aa89 --- /dev/null +++ b/src/views/evaluation/EvalPolicyManagementView.vue @@ -0,0 +1,545 @@ + + + + + + diff --git a/src/views/evaluation/EvalPolicyUpdateAndViewModal.vue b/src/views/evaluation/EvalPolicyUpdateAndViewModal.vue new file mode 100644 index 0000000..8048fb0 --- /dev/null +++ b/src/views/evaluation/EvalPolicyUpdateAndViewModal.vue @@ -0,0 +1,387 @@ + + + + + + diff --git a/src/views/evaluation/EvalPolicyView.vue b/src/views/evaluation/EvalPolicyView.vue new file mode 100644 index 0000000..1b11742 --- /dev/null +++ b/src/views/evaluation/EvalPolicyView.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/evaluation/EvalTaskView.vue b/src/views/evaluation/EvalTaskView.vue new file mode 100644 index 0000000..8e2ae5a --- /dev/null +++ b/src/views/evaluation/EvalTaskView.vue @@ -0,0 +1,118 @@ + + + + + + diff --git a/src/views/evaluation/EvalTypeManagementView.vue b/src/views/evaluation/EvalTypeManagementView.vue new file mode 100644 index 0000000..a332ee0 --- /dev/null +++ b/src/views/evaluation/EvalTypeManagementView.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/src/views/evaluation/LeaderEvalView.vue b/src/views/evaluation/LeaderEvalView.vue new file mode 100644 index 0000000..8a3ee55 --- /dev/null +++ b/src/views/evaluation/LeaderEvalView.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/views/evaluation/PersonalEvalCreateAndFindView.vue b/src/views/evaluation/PersonalEvalCreateAndFindView.vue new file mode 100644 index 0000000..aff04f3 --- /dev/null +++ b/src/views/evaluation/PersonalEvalCreateAndFindView.vue @@ -0,0 +1,366 @@ + + + + + diff --git a/src/views/evaluation/PersonalEvalFindView.vue b/src/views/evaluation/PersonalEvalFindView.vue new file mode 100644 index 0000000..f6ebc25 --- /dev/null +++ b/src/views/evaluation/PersonalEvalFindView.vue @@ -0,0 +1,212 @@ + + + + + diff --git a/src/views/evaluation/PersonalEvalView.vue b/src/views/evaluation/PersonalEvalView.vue new file mode 100644 index 0000000..ecf22a7 --- /dev/null +++ b/src/views/evaluation/PersonalEvalView.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/views/evaluation/TaskEvalModal.vue b/src/views/evaluation/TaskEvalModal.vue new file mode 100644 index 0000000..81d53d3 --- /dev/null +++ b/src/views/evaluation/TaskEvalModal.vue @@ -0,0 +1,255 @@ + + + + + + diff --git a/src/views/evaluation/leader/LeaderEvalListView.vue b/src/views/evaluation/leader/LeaderEvalListView.vue new file mode 100644 index 0000000..33952a3 --- /dev/null +++ b/src/views/evaluation/leader/LeaderEvalListView.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue b/src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue new file mode 100644 index 0000000..77ff313 --- /dev/null +++ b/src/views/evaluation/leader/TaskEvalCreateAndUpdateModal.vue @@ -0,0 +1,172 @@ + + + + + + diff --git a/src/views/hr-basic/AttendanceView.vue b/src/views/hr-basic/AttendanceView.vue new file mode 100644 index 0000000..a392574 --- /dev/null +++ b/src/views/hr-basic/AttendanceView.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/views/hr-basic/ContractView.vue b/src/views/hr-basic/ContractView.vue new file mode 100644 index 0000000..030ebeb --- /dev/null +++ b/src/views/hr-basic/ContractView.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/hr-basic/MyDepartmentView.vue b/src/views/hr-basic/MyDepartmentView.vue new file mode 100644 index 0000000..ab5753e --- /dev/null +++ b/src/views/hr-basic/MyDepartmentView.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/src/views/hr-basic/MyInfoView.vue b/src/views/hr-basic/MyInfoView.vue new file mode 100644 index 0000000..51e1d44 --- /dev/null +++ b/src/views/hr-basic/MyInfoView.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/views/hr-basic/SalaryView.vue b/src/views/hr-basic/SalaryView.vue new file mode 100644 index 0000000..64bb75f --- /dev/null +++ b/src/views/hr-basic/SalaryView.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/views/hr-basic/attendance/BusinessTripRequestsView.vue b/src/views/hr-basic/attendance/BusinessTripRequestsView.vue new file mode 100644 index 0000000..6675630 --- /dev/null +++ b/src/views/hr-basic/attendance/BusinessTripRequestsView.vue @@ -0,0 +1,274 @@ + + + + + diff --git a/src/views/hr-basic/attendance/BusinessTripView.vue b/src/views/hr-basic/attendance/BusinessTripView.vue new file mode 100644 index 0000000..4586c8a --- /dev/null +++ b/src/views/hr-basic/attendance/BusinessTripView.vue @@ -0,0 +1,349 @@ + + + + + diff --git a/src/views/hr-basic/attendance/CommuteView.vue b/src/views/hr-basic/attendance/CommuteView.vue new file mode 100644 index 0000000..1a2f136 --- /dev/null +++ b/src/views/hr-basic/attendance/CommuteView.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/src/views/hr-basic/attendance/DispatchRequestsView.vue b/src/views/hr-basic/attendance/DispatchRequestsView.vue new file mode 100644 index 0000000..9839c74 --- /dev/null +++ b/src/views/hr-basic/attendance/DispatchRequestsView.vue @@ -0,0 +1,274 @@ + + + + + diff --git a/src/views/hr-basic/attendance/DispatchView.vue b/src/views/hr-basic/attendance/DispatchView.vue new file mode 100644 index 0000000..0b6eafb --- /dev/null +++ b/src/views/hr-basic/attendance/DispatchView.vue @@ -0,0 +1,349 @@ + + + + + diff --git a/src/views/hr-basic/attendance/LeaveRequestsView.vue b/src/views/hr-basic/attendance/LeaveRequestsView.vue new file mode 100644 index 0000000..ba738e8 --- /dev/null +++ b/src/views/hr-basic/attendance/LeaveRequestsView.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/views/hr-basic/attendance/LeaveView.vue b/src/views/hr-basic/attendance/LeaveView.vue new file mode 100644 index 0000000..f5c04d4 --- /dev/null +++ b/src/views/hr-basic/attendance/LeaveView.vue @@ -0,0 +1,413 @@ + + + + + diff --git a/src/views/hr-basic/attendance/OvertimeRequestsView.vue b/src/views/hr-basic/attendance/OvertimeRequestsView.vue new file mode 100644 index 0000000..d29ed45 --- /dev/null +++ b/src/views/hr-basic/attendance/OvertimeRequestsView.vue @@ -0,0 +1,283 @@ + + + + + diff --git a/src/views/hr-basic/attendance/OvertimeView.vue b/src/views/hr-basic/attendance/OvertimeView.vue new file mode 100644 index 0000000..15487d0 --- /dev/null +++ b/src/views/hr-basic/attendance/OvertimeView.vue @@ -0,0 +1,539 @@ + + + + + diff --git a/src/views/hr-basic/attendance/RemoteRequestsView.vue b/src/views/hr-basic/attendance/RemoteRequestsView.vue new file mode 100644 index 0000000..c38a5a7 --- /dev/null +++ b/src/views/hr-basic/attendance/RemoteRequestsView.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/src/views/hr-basic/attendance/RemoteView.vue b/src/views/hr-basic/attendance/RemoteView.vue new file mode 100644 index 0000000..2715654 --- /dev/null +++ b/src/views/hr-basic/attendance/RemoteView.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/src/views/hr-basic/attendance/ReturnRequestsView.vue b/src/views/hr-basic/attendance/ReturnRequestsView.vue new file mode 100644 index 0000000..b2313e8 --- /dev/null +++ b/src/views/hr-basic/attendance/ReturnRequestsView.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/src/views/hr-basic/attendance/ReturnView.vue b/src/views/hr-basic/attendance/ReturnView.vue new file mode 100644 index 0000000..6d36dcb --- /dev/null +++ b/src/views/hr-basic/attendance/ReturnView.vue @@ -0,0 +1,430 @@ + + + + + diff --git a/src/views/hr-basic/attendance/VacationRequestsView.vue b/src/views/hr-basic/attendance/VacationRequestsView.vue new file mode 100644 index 0000000..b7d8859 --- /dev/null +++ b/src/views/hr-basic/attendance/VacationRequestsView.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/views/hr-basic/attendance/VacationView.vue b/src/views/hr-basic/attendance/VacationView.vue new file mode 100644 index 0000000..1dd1798 --- /dev/null +++ b/src/views/hr-basic/attendance/VacationView.vue @@ -0,0 +1,456 @@ + + + + + diff --git a/src/views/hr-basic/document/CertificateModal.vue b/src/views/hr-basic/document/CertificateModal.vue new file mode 100644 index 0000000..16e76fa --- /dev/null +++ b/src/views/hr-basic/document/CertificateModal.vue @@ -0,0 +1,608 @@ + + + + + diff --git a/src/views/hr-basic/document/CertificateView.vue b/src/views/hr-basic/document/CertificateView.vue new file mode 100644 index 0000000..ca2acc0 --- /dev/null +++ b/src/views/hr-basic/document/CertificateView.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/src/views/hr-basic/document/ContractSignView.vue b/src/views/hr-basic/document/ContractSignView.vue new file mode 100644 index 0000000..2ce8d9c --- /dev/null +++ b/src/views/hr-basic/document/ContractSignView.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/src/views/hr-basic/document/EmployeeContractModal.vue b/src/views/hr-basic/document/EmployeeContractModal.vue new file mode 100644 index 0000000..739eb08 --- /dev/null +++ b/src/views/hr-basic/document/EmployeeContractModal.vue @@ -0,0 +1,871 @@ + + + + + diff --git a/src/views/hr-basic/document/SecurityContractModal.vue b/src/views/hr-basic/document/SecurityContractModal.vue new file mode 100644 index 0000000..39c3a2c --- /dev/null +++ b/src/views/hr-basic/document/SecurityContractModal.vue @@ -0,0 +1,724 @@ + + + + + diff --git a/src/views/hr-basic/employee/CareerInfoUpdateVIew.vue b/src/views/hr-basic/employee/CareerInfoUpdateVIew.vue new file mode 100644 index 0000000..4b0edc0 --- /dev/null +++ b/src/views/hr-basic/employee/CareerInfoUpdateVIew.vue @@ -0,0 +1,431 @@ + + + + + diff --git a/src/views/hr-basic/employee/CareerInfoVIew.vue b/src/views/hr-basic/employee/CareerInfoVIew.vue new file mode 100644 index 0000000..6beb3df --- /dev/null +++ b/src/views/hr-basic/employee/CareerInfoVIew.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/src/views/hr-basic/employee/DisciplineRewardInfoView.vue b/src/views/hr-basic/employee/DisciplineRewardInfoView.vue new file mode 100644 index 0000000..6b51361 --- /dev/null +++ b/src/views/hr-basic/employee/DisciplineRewardInfoView.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/views/hr-basic/employee/EducationInfoUpdateVIew.vue b/src/views/hr-basic/employee/EducationInfoUpdateVIew.vue new file mode 100644 index 0000000..d377e4c --- /dev/null +++ b/src/views/hr-basic/employee/EducationInfoUpdateVIew.vue @@ -0,0 +1,436 @@ + + + + + diff --git a/src/views/hr-basic/employee/EducationInfoView.vue b/src/views/hr-basic/employee/EducationInfoView.vue new file mode 100644 index 0000000..11c0320 --- /dev/null +++ b/src/views/hr-basic/employee/EducationInfoView.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue b/src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue new file mode 100644 index 0000000..910dafe --- /dev/null +++ b/src/views/hr-basic/employee/FamilyMemberInfoUpdateView.vue @@ -0,0 +1,449 @@ + + + + + diff --git a/src/views/hr-basic/employee/FamilyMemberInfoView.vue b/src/views/hr-basic/employee/FamilyMemberInfoView.vue new file mode 100644 index 0000000..59e7473 --- /dev/null +++ b/src/views/hr-basic/employee/FamilyMemberInfoView.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue b/src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue new file mode 100644 index 0000000..eb8f9c2 --- /dev/null +++ b/src/views/hr-basic/employee/LanguageTestInfoUpdateView.vue @@ -0,0 +1,480 @@ + + + + + diff --git a/src/views/hr-basic/employee/LanguageTestInfoView.vue b/src/views/hr-basic/employee/LanguageTestInfoView.vue new file mode 100644 index 0000000..ba7e218 --- /dev/null +++ b/src/views/hr-basic/employee/LanguageTestInfoView.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/src/views/hr-basic/employee/ProfileView.vue b/src/views/hr-basic/employee/ProfileView.vue new file mode 100644 index 0000000..38da084 --- /dev/null +++ b/src/views/hr-basic/employee/ProfileView.vue @@ -0,0 +1,751 @@ + + + + + diff --git a/src/views/hr-basic/employee/QualificationInfoUpdateView.vue b/src/views/hr-basic/employee/QualificationInfoUpdateView.vue new file mode 100644 index 0000000..2514740 --- /dev/null +++ b/src/views/hr-basic/employee/QualificationInfoUpdateView.vue @@ -0,0 +1,446 @@ + + + + + diff --git a/src/views/hr-basic/employee/QualificationInfoView.vue b/src/views/hr-basic/employee/QualificationInfoView.vue new file mode 100644 index 0000000..ffc03ab --- /dev/null +++ b/src/views/hr-basic/employee/QualificationInfoView.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/views/hr-basic/my-department/MyDepartmentAttendance.vue b/src/views/hr-basic/my-department/MyDepartmentAttendance.vue new file mode 100644 index 0000000..1ff3c9e --- /dev/null +++ b/src/views/hr-basic/my-department/MyDepartmentAttendance.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/views/hr-basic/my-department/SearchDepartmentMember.vue b/src/views/hr-basic/my-department/SearchDepartmentMember.vue new file mode 100644 index 0000000..5d20294 --- /dev/null +++ b/src/views/hr-basic/my-department/SearchDepartmentMember.vue @@ -0,0 +1,294 @@ + + + + diff --git a/src/views/hr-basic/salary/PeriodicSalaryView.vue b/src/views/hr-basic/salary/PeriodicSalaryView.vue new file mode 100644 index 0000000..fb811c8 --- /dev/null +++ b/src/views/hr-basic/salary/PeriodicSalaryView.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/views/hr-basic/salary/SalaryDetailView.vue b/src/views/hr-basic/salary/SalaryDetailView.vue new file mode 100644 index 0000000..477e198 --- /dev/null +++ b/src/views/hr-basic/salary/SalaryDetailView.vue @@ -0,0 +1,444 @@ + + + + + diff --git a/src/views/hr-basic/salary/SalaryListView.vue b/src/views/hr-basic/salary/SalaryListView.vue new file mode 100644 index 0000000..3380c12 --- /dev/null +++ b/src/views/hr-basic/salary/SalaryListView.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/views/hr-basic/salary/SeverancePayView.vue b/src/views/hr-basic/salary/SeverancePayView.vue new file mode 100644 index 0000000..e1a3e3a --- /dev/null +++ b/src/views/hr-basic/salary/SeverancePayView.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/src/views/hr-management/AppointmentManagementView.vue b/src/views/hr-management/AppointmentManagementView.vue new file mode 100644 index 0000000..904c34b --- /dev/null +++ b/src/views/hr-management/AppointmentManagementView.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/src/views/hr-management/ContractManagementView.vue b/src/views/hr-management/ContractManagementView.vue new file mode 100644 index 0000000..670e3cd --- /dev/null +++ b/src/views/hr-management/ContractManagementView.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/src/views/hr-management/DepartmentManagementView .vue b/src/views/hr-management/DepartmentManagementView .vue new file mode 100644 index 0000000..fd97edc --- /dev/null +++ b/src/views/hr-management/DepartmentManagementView .vue @@ -0,0 +1,190 @@ + + + + + diff --git a/src/views/hr-management/EmployeeInfoView.vue b/src/views/hr-management/EmployeeInfoView.vue new file mode 100644 index 0000000..0206f20 --- /dev/null +++ b/src/views/hr-management/EmployeeInfoView.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/views/hr-management/EmployeeUploadView.vue b/src/views/hr-management/EmployeeUploadView.vue new file mode 100644 index 0000000..695464f --- /dev/null +++ b/src/views/hr-management/EmployeeUploadView.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/views/hr-management/Salary/EmployeeSalaryListView.vue b/src/views/hr-management/Salary/EmployeeSalaryListView.vue new file mode 100644 index 0000000..37ba63a --- /dev/null +++ b/src/views/hr-management/Salary/EmployeeSalaryListView.vue @@ -0,0 +1,206 @@ + + + + diff --git a/src/views/hr-management/Salary/IrregularAllowanceView.vue b/src/views/hr-management/Salary/IrregularAllowanceView.vue new file mode 100644 index 0000000..6db3267 --- /dev/null +++ b/src/views/hr-management/Salary/IrregularAllowanceView.vue @@ -0,0 +1,167 @@ + + + + diff --git a/src/views/hr-management/Salary/NonTaxableView.vue b/src/views/hr-management/Salary/NonTaxableView.vue new file mode 100644 index 0000000..c8fc817 --- /dev/null +++ b/src/views/hr-management/Salary/NonTaxableView.vue @@ -0,0 +1,164 @@ + + + + diff --git a/src/views/hr-management/SalaryManagementView.vue b/src/views/hr-management/SalaryManagementView.vue new file mode 100644 index 0000000..f66265b --- /dev/null +++ b/src/views/hr-management/SalaryManagementView.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/views/hr-management/VacationManagementView.vue b/src/views/hr-management/VacationManagementView.vue new file mode 100644 index 0000000..abc9c82 --- /dev/null +++ b/src/views/hr-management/VacationManagementView.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/views/hr-management/appointment/AppointmentHistoryView.vue b/src/views/hr-management/appointment/AppointmentHistoryView.vue new file mode 100644 index 0000000..982f90d --- /dev/null +++ b/src/views/hr-management/appointment/AppointmentHistoryView.vue @@ -0,0 +1,349 @@ + + + + + diff --git a/src/views/hr-management/appointment/AppointmentUploadView.vue b/src/views/hr-management/appointment/AppointmentUploadView.vue new file mode 100644 index 0000000..5958a43 --- /dev/null +++ b/src/views/hr-management/appointment/AppointmentUploadView.vue @@ -0,0 +1,535 @@ + + + + + diff --git a/src/views/hr-management/department/DepartmentManagementAddView.vue b/src/views/hr-management/department/DepartmentManagementAddView.vue new file mode 100644 index 0000000..ce4443a --- /dev/null +++ b/src/views/hr-management/department/DepartmentManagementAddView.vue @@ -0,0 +1,310 @@ + + + + + + diff --git a/src/views/hr-management/department/DepartmentManagementInformationView.vue b/src/views/hr-management/department/DepartmentManagementInformationView.vue new file mode 100644 index 0000000..357e308 --- /dev/null +++ b/src/views/hr-management/department/DepartmentManagementInformationView.vue @@ -0,0 +1,449 @@ + + + + + + + diff --git a/src/views/hr-management/department/DepartmentSearch.vue b/src/views/hr-management/department/DepartmentSearch.vue new file mode 100644 index 0000000..d7d3e6e --- /dev/null +++ b/src/views/hr-management/department/DepartmentSearch.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/CareerInfoUploadView.vue b/src/views/hr-management/employee-upload/CareerInfoUploadView.vue new file mode 100644 index 0000000..e41f884 --- /dev/null +++ b/src/views/hr-management/employee-upload/CareerInfoUploadView.vue @@ -0,0 +1,496 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue b/src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue new file mode 100644 index 0000000..77c7c21 --- /dev/null +++ b/src/views/hr-management/employee-upload/DisciplineRewardInfoUploadView.vue @@ -0,0 +1,495 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/EducationInfoUploadView.vue b/src/views/hr-management/employee-upload/EducationInfoUploadView.vue new file mode 100644 index 0000000..5e9b293 --- /dev/null +++ b/src/views/hr-management/employee-upload/EducationInfoUploadView.vue @@ -0,0 +1,498 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue b/src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue new file mode 100644 index 0000000..ee42969 --- /dev/null +++ b/src/views/hr-management/employee-upload/EmployeeInfoUploadView.vue @@ -0,0 +1,524 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue b/src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue new file mode 100644 index 0000000..11f8e99 --- /dev/null +++ b/src/views/hr-management/employee-upload/FamilyMemberInfoUploadView.vue @@ -0,0 +1,520 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue b/src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue new file mode 100644 index 0000000..9276d15 --- /dev/null +++ b/src/views/hr-management/employee-upload/LanguageTestInfoUploadView.vue @@ -0,0 +1,537 @@ + + + + + diff --git a/src/views/hr-management/employee-upload/QualificationInfoUploadView.vue b/src/views/hr-management/employee-upload/QualificationInfoUploadView.vue new file mode 100644 index 0000000..ebd0d3c --- /dev/null +++ b/src/views/hr-management/employee-upload/QualificationInfoUploadView.vue @@ -0,0 +1,511 @@ + + + + + diff --git a/src/views/hr-management/vacation/VacationPaymentView.vue b/src/views/hr-management/vacation/VacationPaymentView.vue new file mode 100644 index 0000000..bd33d3f --- /dev/null +++ b/src/views/hr-management/vacation/VacationPaymentView.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/src/views/hr-management/vacation/VacationPolicyView.vue b/src/views/hr-management/vacation/VacationPolicyView.vue new file mode 100644 index 0000000..f54192a --- /dev/null +++ b/src/views/hr-management/vacation/VacationPolicyView.vue @@ -0,0 +1,419 @@ + + + + + From 45c6aa287b85ac37d933858a9c3758111fef79a3 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 18:25:41 +0900 Subject: [PATCH 22/23] deploy test --- package-lock.json | 2531 +++++++++++++++++++++++++++-------------- package.json | 10 +- src/stores/counter.js | 12 + 3 files changed, 1697 insertions(+), 856 deletions(-) create mode 100644 src/stores/counter.js diff --git a/package-lock.json b/package-lock.json index 130b379..9e3c702 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "veb_proj", + "name": "inflow", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "veb_proj", + "name": "inflow", "version": "0.0.0", "dependencies": { "axios": "^1.7.7", @@ -24,9 +24,15 @@ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz" }, "devDependencies": { + "@eslint/js": "^9.14.0", "@types/pdfmake": "^0.2.9", "@types/prismjs": "^1.26.5", "@vitejs/plugin-vue": "^5.1.4", + "@vue/eslint-config-prettier": "^10.1.0", + "eslint": "^9.14.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-vue": "^9.30.0", + "prettier": "^3.3.3", "vite": "^5.4.10" } }, @@ -88,299 +94,10 @@ "node": ">=6.9.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { + "node_modules/@esbuild/win32-x64": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -388,390 +105,273 @@ "license": "MIT", "optional": true, "os": [ - "netbsd" + "win32" ], "engines": { "node": ">=12" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=12" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@foliojs-fork/fontkit": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.2.tgz", - "integrity": "sha512-IfB5EiIb+GZk+77TRB86AHroVaqfq8JRFlUbz0WEwsInyCG0epX2tCPOy+UfaWPju30DeVoUAXfzWXmhn753KA==", - "license": "MIT", - "dependencies": { - "@foliojs-fork/restructure": "^2.0.2", - "brotli": "^1.2.0", - "clone": "^1.0.4", - "deep-equal": "^1.0.0", - "dfa": "^1.2.0", - "tiny-inflate": "^1.0.2", - "unicode-properties": "^1.2.2", - "unicode-trie": "^2.0.0" - } - }, - "node_modules/@foliojs-fork/linebreak": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.2.tgz", - "integrity": "sha512-ZPohpxxbuKNE0l/5iBJnOAfUaMACwvUIKCvqtWGKIMv1lPYoNjYXRfhi9FeeV9McBkBLxsMFWTVVhHJA8cyzvg==", - "license": "MIT", - "dependencies": { - "base64-js": "1.3.1", - "unicode-trie": "^2.0.0" - } - }, - "node_modules/@foliojs-fork/pdfkit": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.15.1.tgz", - "integrity": "sha512-4Cq2onHZAhThIfzv3/AFTPALqHzbmV8uNvgRELULWNbsZATgVeqEL4zHOzCyblLfX6tMXVO2BVaPcXboIxGjiw==", - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@foliojs-fork/fontkit": "^1.9.2", - "@foliojs-fork/linebreak": "^1.1.1", - "crypto-js": "^4.2.0", - "jpeg-exif": "^1.1.4", - "png-js": "^1.0.0" + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@foliojs-fork/restructure": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz", - "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==", - "license": "MIT" - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz", - "integrity": "sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz", - "integrity": "sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz", - "integrity": "sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz", - "integrity": "sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz", - "integrity": "sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz", - "integrity": "sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz", - "integrity": "sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==", - "cpu": [ - "arm" - ], + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz", - "integrity": "sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==", - "cpu": [ - "arm" - ], + "node_modules/@eslint/js": { + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz", - "integrity": "sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz", - "integrity": "sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/plugin-kit": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@foliojs-fork/fontkit": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.2.tgz", + "integrity": "sha512-IfB5EiIb+GZk+77TRB86AHroVaqfq8JRFlUbz0WEwsInyCG0epX2tCPOy+UfaWPju30DeVoUAXfzWXmhn753KA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@foliojs-fork/restructure": "^2.0.2", + "brotli": "^1.2.0", + "clone": "^1.0.4", + "deep-equal": "^1.0.0", + "dfa": "^1.2.0", + "tiny-inflate": "^1.0.2", + "unicode-properties": "^1.2.2", + "unicode-trie": "^2.0.0" + } }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz", - "integrity": "sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==", - "cpu": [ - "ppc64" - ], - "dev": true, + "node_modules/@foliojs-fork/linebreak": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.2.tgz", + "integrity": "sha512-ZPohpxxbuKNE0l/5iBJnOAfUaMACwvUIKCvqtWGKIMv1lPYoNjYXRfhi9FeeV9McBkBLxsMFWTVVhHJA8cyzvg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "base64-js": "1.3.1", + "unicode-trie": "^2.0.0" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz", - "integrity": "sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==", - "cpu": [ - "riscv64" - ], - "dev": true, + "node_modules/@foliojs-fork/pdfkit": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.15.1.tgz", + "integrity": "sha512-4Cq2onHZAhThIfzv3/AFTPALqHzbmV8uNvgRELULWNbsZATgVeqEL4zHOzCyblLfX6tMXVO2BVaPcXboIxGjiw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@foliojs-fork/fontkit": "^1.9.2", + "@foliojs-fork/linebreak": "^1.1.1", + "crypto-js": "^4.2.0", + "jpeg-exif": "^1.1.4", + "png-js": "^1.0.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz", - "integrity": "sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==", - "cpu": [ - "s390x" - ], + "node_modules/@foliojs-fork/restructure": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz", + "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==", + "license": "MIT" + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz", - "integrity": "sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==", - "cpu": [ - "x64" - ], + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz", - "integrity": "sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==", - "cpu": [ - "x64" - ], + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz", - "integrity": "sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==", - "cpu": [ - "arm64" - ], + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz", - "integrity": "sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==", - "cpu": [ - "ia32" - ], + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz", - "integrity": "sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.0.tgz", + "integrity": "sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==", "cpu": [ "x64" ], @@ -789,6 +389,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "22.10.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", @@ -800,9 +407,9 @@ } }, "node_modules/@types/pdfkit": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.13.7.tgz", - "integrity": "sha512-qIV2V2cnunHEVa51ISkoXlTsAnuQpTXhE7is3CWvV5lKSItRDLL7VLg/j0AkvAr3lG5ZBK2IWIl5iTfqf+obuA==", + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.13.6.tgz", + "integrity": "sha512-nfyKCvZ+eDsgSNkt6MwTWia1GZ+MWfnrtZoZ3HSP5aIaD7zxDIRFDafwEWbksi0NO8X+4Psqao00EDjHkfIXNg==", "dev": true, "license": "MIT", "dependencies": { @@ -810,9 +417,9 @@ } }, "node_modules/@types/pdfmake": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@types/pdfmake/-/pdfmake-0.2.10.tgz", - "integrity": "sha512-6EV2+hiYqXO4/INnGObeXgTvzh2DuwiPkfjqYppHmKSgyVcXFvraLLNKFdvJEbrCoe0HqsKFDHc0I7M50hn4/g==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@types/pdfmake/-/pdfmake-0.2.9.tgz", + "integrity": "sha512-uLDKEH3A1fnCd/qXYJB2OnKkkjfdC1oc6HYVYBKxsyN1UsJL/8Lt67T6WFo3umkL+5Zd74M2IYcOf5kwwd9x9w==", "dev": true, "license": "MIT", "dependencies": { @@ -835,67 +442,67 @@ "optional": true }, "node_modules/@vitejs/plugin-vue": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz", - "integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", + "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", "dev": true, "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "vite": "^5.0.0", + "vite": "^5.0.0 || ^6.0.0", "vue": "^3.2.25" } }, "node_modules/@vue/compiler-core": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz", - "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.12", + "@vue/shared": "3.5.13", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", - "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.12", - "@vue/shared": "3.5.12" + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", - "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.12", - "@vue/compiler-dom": "3.5.12", - "@vue/compiler-ssr": "3.5.12", - "@vue/shared": "3.5.12", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", "estree-walker": "^2.0.2", "magic-string": "^0.30.11", - "postcss": "^8.4.47", + "postcss": "^8.4.48", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", - "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.12", - "@vue/shared": "3.5.12" + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/devtools-api": { @@ -904,54 +511,69 @@ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", "license": "MIT" }, + "node_modules/@vue/eslint-config-prettier": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-10.1.0.tgz", + "integrity": "sha512-J6wV91y2pXc0Phha01k0WOHBTPsoSTf4xlmMjoKaeSxBpAdsgTppGF5RZRdOHM7OA74zAXD+VLANrtYXpiPKkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1" + }, + "peerDependencies": { + "eslint": ">= 8.21.0", + "prettier": ">= 3.0.0" + } + }, "node_modules/@vue/reactivity": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz", - "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.12" + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz", - "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.12", - "@vue/shared": "3.5.12" + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz", - "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.12", - "@vue/runtime-core": "3.5.12", - "@vue/shared": "3.5.12", + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz", - "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.12", - "@vue/shared": "3.5.12" + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" }, "peerDependencies": { - "vue": "3.5.12" + "vue": "3.5.13" } }, "node_modules/@vue/shared": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz", - "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", "license": "MIT" }, "node_modules/accepts": { @@ -967,6 +589,69 @@ "node": ">= 0.6" } }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -992,9 +677,9 @@ } }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", + "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -1002,6 +687,13 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/base64-arraybuffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", @@ -1065,6 +757,51 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/brotli": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", @@ -1096,15 +833,16 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -1113,17 +851,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=6" } }, "node_modules/canvg": { @@ -1153,6 +888,23 @@ "license": "MIT", "optional": true }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -1162,6 +914,26 @@ "node": ">=0.8" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1180,6 +952,13 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1228,6 +1007,21 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/crypto-js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", @@ -1243,6 +1037,19 @@ "utrie": "^1.0.2" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -1250,12 +1057,21 @@ "license": "MIT" }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/deep-equal": { @@ -1278,6 +1094,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -1353,20 +1176,6 @@ "license": "(MPL-2.0 OR Apache-2.0)", "optional": true }, - "node_modules/dunder-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", - "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -1395,10 +1204,13 @@ } }, "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, "engines": { "node": ">= 0.4" } @@ -1463,12 +1275,262 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", + "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.16.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.5", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz", + "integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "license": "MIT" }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1524,6 +1586,49 @@ "url": "https://opencollective.com/express" } }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, "node_modules/fastapi": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/fastapi/-/fastapi-0.0.8.tgz", @@ -1547,24 +1652,90 @@ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", "license": "MIT" }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">= 0.8" + "node": ">=16" } }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -1617,21 +1788,6 @@ "node": ">= 0.6" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -1651,19 +1807,16 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", - "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "dunder-proto": "^1.0.0", - "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -1672,11 +1825,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.1.0.tgz", + "integrity": "sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==", "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, "engines": { "node": ">= 0.4" }, @@ -1684,6 +1866,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -1696,10 +1888,25 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { + "node_modules/has-proto": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz", + "integrity": "sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -1776,17 +1983,54 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -1833,6 +2077,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-regex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz", @@ -1851,12 +2118,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, "node_modules/jpeg-exif": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/jpeg-exif/-/jpeg-exif-1.1.4.tgz", "integrity": "sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ==", "license": "MIT" }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/jspdf": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.2.tgz", @@ -1875,16 +2183,63 @@ "html2canvas": "^1.0.0-rc.5" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "version": "0.30.14", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", + "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -1962,6 +2317,19 @@ "node": ">= 0.6" } }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/morgan": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", @@ -1978,6 +2346,21 @@ "node": ">= 0.8.0" } }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/morgan/node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -1991,15 +2374,15 @@ } }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", @@ -2014,6 +2397,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -2023,6 +2413,19 @@ "node": ">= 0.6" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/object-inspect": { "version": "1.13.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", @@ -2081,12 +2484,75 @@ "node": ">= 0.8" } }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", "license": "MIT" }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2096,6 +2562,26 @@ "node": ">= 0.8" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", @@ -2104,29 +2590,17 @@ }, "node_modules/pdfmake": { "version": "0.2.15", - "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.15.tgz", - "integrity": "sha512-Ryef9mjxo6q8dthhbssAK0zwCsPZ6Pl7kCHnIEXOvQdd79LUGZD6SHGi21YryFXczPjvw6V009uxQwp5iritcA==", - "license": "MIT", - "dependencies": { - "@foliojs-fork/linebreak": "^1.1.2", - "@foliojs-fork/pdfkit": "^0.15.1", - "iconv-lite": "^0.6.3", - "xmldoc": "^1.3.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/pdfmake/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.15.tgz", + "integrity": "sha512-Ryef9mjxo6q8dthhbssAK0zwCsPZ6Pl7kCHnIEXOvQdd79LUGZD6SHGi21YryFXczPjvw6V009uxQwp5iritcA==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@foliojs-fork/linebreak": "^1.1.2", + "@foliojs-fork/pdfkit": "^0.15.1", + "iconv-lite": "^0.6.3", + "xmldoc": "^1.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, "node_modules/performance-now": { @@ -2143,9 +2617,9 @@ "license": "ISC" }, "node_modules/pinia": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.0.tgz", - "integrity": "sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==", + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.8.tgz", + "integrity": "sha512-NRTYy2g+kju5tBRe0oNlriZIbMNvma8ZJrpHsp3qudyiMEA8jMmPPKQ2QMHg0Oc4BkUyQYWagACabrwriCK9HQ==", "license": "MIT", "dependencies": { "@vue/devtools-api": "^6.6.3", @@ -2155,24 +2629,54 @@ "url": "https://github.com/sponsors/posva" }, "peerDependencies": { + "@vue/composition-api": "^1.4.0", "typescript": ">=4.4.4", - "vue": "^2.7.0 || ^3.5.11" + "vue": "^2.6.14 || ^3.5.11" }, "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, "typescript": { "optional": true } } }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/png-js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", @@ -2190,13 +2694,66 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", @@ -2225,6 +2782,16 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", @@ -2274,6 +2841,18 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", @@ -2298,6 +2877,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/rgbcolor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", @@ -2309,9 +2898,9 @@ } }, "node_modules/rollup": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz", - "integrity": "sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.0.tgz", + "integrity": "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2325,24 +2914,24 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.4", - "@rollup/rollup-android-arm64": "4.24.4", - "@rollup/rollup-darwin-arm64": "4.24.4", - "@rollup/rollup-darwin-x64": "4.24.4", - "@rollup/rollup-freebsd-arm64": "4.24.4", - "@rollup/rollup-freebsd-x64": "4.24.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.4", - "@rollup/rollup-linux-arm-musleabihf": "4.24.4", - "@rollup/rollup-linux-arm64-gnu": "4.24.4", - "@rollup/rollup-linux-arm64-musl": "4.24.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.4", - "@rollup/rollup-linux-riscv64-gnu": "4.24.4", - "@rollup/rollup-linux-s390x-gnu": "4.24.4", - "@rollup/rollup-linux-x64-gnu": "4.24.4", - "@rollup/rollup-linux-x64-musl": "4.24.4", - "@rollup/rollup-win32-arm64-msvc": "4.24.4", - "@rollup/rollup-win32-ia32-msvc": "4.24.4", - "@rollup/rollup-win32-x64-msvc": "4.24.4", + "@rollup/rollup-android-arm-eabi": "4.28.0", + "@rollup/rollup-android-arm64": "4.28.0", + "@rollup/rollup-darwin-arm64": "4.28.0", + "@rollup/rollup-darwin-x64": "4.28.0", + "@rollup/rollup-freebsd-arm64": "4.28.0", + "@rollup/rollup-freebsd-x64": "4.28.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.0", + "@rollup/rollup-linux-arm-musleabihf": "4.28.0", + "@rollup/rollup-linux-arm64-gnu": "4.28.0", + "@rollup/rollup-linux-arm64-musl": "4.28.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0", + "@rollup/rollup-linux-riscv64-gnu": "4.28.0", + "@rollup/rollup-linux-s390x-gnu": "4.28.0", + "@rollup/rollup-linux-x64-gnu": "4.28.0", + "@rollup/rollup-linux-x64-musl": "4.28.0", + "@rollup/rollup-win32-arm64-msvc": "4.28.0", + "@rollup/rollup-win32-ia32-msvc": "4.28.0", + "@rollup/rollup-win32-x64-msvc": "4.28.0", "fsevents": "~2.3.2" } }, @@ -2378,6 +2967,19 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "license": "ISC" }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -2402,6 +3004,21 @@ "node": ">= 0.8.0" } }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/send/node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -2411,12 +3028,6 @@ "node": ">= 0.8" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, "node_modules/serve-static": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", @@ -2470,6 +3081,29 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", @@ -2516,6 +3150,32 @@ "node": ">= 0.8" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/svg-pathdata": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", @@ -2526,6 +3186,23 @@ "node": ">=12.0.0" } }, + "node_modules/synckit": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/text-segmentation": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", @@ -2550,6 +3227,39 @@ "node": ">=0.6" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -2599,6 +3309,23 @@ "node": ">= 0.8" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -2627,9 +3354,9 @@ } }, "node_modules/vite": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2687,16 +3414,16 @@ } }, "node_modules/vue": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", - "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.12", - "@vue/compiler-sfc": "3.5.12", - "@vue/runtime-dom": "3.5.12", - "@vue/server-renderer": "3.5.12", - "@vue/shared": "3.5.12" + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" }, "peerDependencies": { "typescript": "*" @@ -2707,30 +3434,77 @@ } } }, - "node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" }, "engines": { - "node": ">=12" + "node": "^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://github.com/sponsors/mysticatea" }, "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/vue-password-toggle": { @@ -2757,6 +3531,32 @@ "vue": "^3.2.0" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/xlsx": { "version": "0.20.3", "resolved": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz", @@ -2769,6 +3569,16 @@ "node": ">=0.8" } }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, "node_modules/xmldoc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.3.0.tgz", @@ -2777,6 +3587,19 @@ "dependencies": { "sax": "^1.2.4" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index dc5628a..e2561c3 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "veb_proj", + "name": "inflow", "version": "0.0.0", "private": true, "type": "module", @@ -9,7 +9,7 @@ "start": "node server.js", "preview": "vite preview", "lint": "eslint . --fix", - "format": "prettier --write src/" + "format": "prettier --write src/" }, "dependencies": { "axios": "^1.7.7", @@ -28,9 +28,15 @@ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz" }, "devDependencies": { + "@eslint/js": "^9.14.0", "@types/pdfmake": "^0.2.9", "@types/prismjs": "^1.26.5", "@vitejs/plugin-vue": "^5.1.4", + "@vue/eslint-config-prettier": "^10.1.0", + "eslint": "^9.14.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-vue": "^9.30.0", + "prettier": "^3.3.3", "vite": "^5.4.10" } } diff --git a/src/stores/counter.js b/src/stores/counter.js new file mode 100644 index 0000000..e884e6d --- /dev/null +++ b/src/stores/counter.js @@ -0,0 +1,12 @@ +import { ref, computed } from 'vue'; +import { defineStore } from 'pinia'; + +export const useCounterStore = defineStore('counter', () => { + const count = ref(0); + const doubleCount = computed(() => count.value * 2); + function increment() { + count.value++; + } + + return { count, doubleCount, increment }; +}); From 542944f3a2c17daffff181d30b3bf01fc4128cb5 Mon Sep 17 00:00:00 2001 From: woodart8 Date: Mon, 9 Dec 2024 18:29:59 +0900 Subject: [PATCH 23/23] deploy test --- package-lock.json | 2529 +++++++++++++++------------------------------ package.json | 8 +- 2 files changed, 854 insertions(+), 1683 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9e3c702..130b379 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "inflow", + "name": "veb_proj", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "inflow", + "name": "veb_proj", "version": "0.0.0", "dependencies": { "axios": "^1.7.7", @@ -24,15 +24,9 @@ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz" }, "devDependencies": { - "@eslint/js": "^9.14.0", "@types/pdfmake": "^0.2.9", "@types/prismjs": "^1.26.5", "@vitejs/plugin-vue": "^5.1.4", - "@vue/eslint-config-prettier": "^10.1.0", - "eslint": "^9.14.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-vue": "^9.30.0", - "prettier": "^3.3.3", "vite": "^5.4.10" } }, @@ -94,10 +88,61 @@ "node": ">=6.9.0" } }, - "node_modules/@esbuild/win32-x64": { + "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -105,273 +150,628 @@ "license": "MIT", "optional": true, "os": [ - "win32" + "android" ], "engines": { "node": ">=12" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=12" } }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@eslint/config-array": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", - "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.5", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" } }, - "node_modules/@eslint/core": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", - "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@eslint/js": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", - "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@foliojs-fork/fontkit": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.2.tgz", + "integrity": "sha512-IfB5EiIb+GZk+77TRB86AHroVaqfq8JRFlUbz0WEwsInyCG0epX2tCPOy+UfaWPju30DeVoUAXfzWXmhn753KA==", + "license": "MIT", + "dependencies": { + "@foliojs-fork/restructure": "^2.0.2", + "brotli": "^1.2.0", + "clone": "^1.0.4", + "deep-equal": "^1.0.0", + "dfa": "^1.2.0", + "tiny-inflate": "^1.0.2", + "unicode-properties": "^1.2.2", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/@foliojs-fork/linebreak": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.2.tgz", + "integrity": "sha512-ZPohpxxbuKNE0l/5iBJnOAfUaMACwvUIKCvqtWGKIMv1lPYoNjYXRfhi9FeeV9McBkBLxsMFWTVVhHJA8cyzvg==", + "license": "MIT", + "dependencies": { + "base64-js": "1.3.1", + "unicode-trie": "^2.0.0" } }, - "node_modules/@eslint/object-schema": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", - "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "node_modules/@foliojs-fork/pdfkit": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.15.1.tgz", + "integrity": "sha512-4Cq2onHZAhThIfzv3/AFTPALqHzbmV8uNvgRELULWNbsZATgVeqEL4zHOzCyblLfX6tMXVO2BVaPcXboIxGjiw==", + "license": "MIT", + "dependencies": { + "@foliojs-fork/fontkit": "^1.9.2", + "@foliojs-fork/linebreak": "^1.1.1", + "crypto-js": "^4.2.0", + "jpeg-exif": "^1.1.4", + "png-js": "^1.0.0" + } + }, + "node_modules/@foliojs-fork/restructure": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz", + "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==", + "license": "MIT" + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz", + "integrity": "sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz", + "integrity": "sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz", + "integrity": "sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz", + "integrity": "sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz", + "integrity": "sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz", + "integrity": "sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz", + "integrity": "sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz", + "integrity": "sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", - "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz", + "integrity": "sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@foliojs-fork/fontkit": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.2.tgz", - "integrity": "sha512-IfB5EiIb+GZk+77TRB86AHroVaqfq8JRFlUbz0WEwsInyCG0epX2tCPOy+UfaWPju30DeVoUAXfzWXmhn753KA==", "license": "MIT", - "dependencies": { - "@foliojs-fork/restructure": "^2.0.2", - "brotli": "^1.2.0", - "clone": "^1.0.4", - "deep-equal": "^1.0.0", - "dfa": "^1.2.0", - "tiny-inflate": "^1.0.2", - "unicode-properties": "^1.2.2", - "unicode-trie": "^2.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@foliojs-fork/linebreak": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.2.tgz", - "integrity": "sha512-ZPohpxxbuKNE0l/5iBJnOAfUaMACwvUIKCvqtWGKIMv1lPYoNjYXRfhi9FeeV9McBkBLxsMFWTVVhHJA8cyzvg==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz", + "integrity": "sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "base64-js": "1.3.1", - "unicode-trie": "^2.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@foliojs-fork/pdfkit": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.15.1.tgz", - "integrity": "sha512-4Cq2onHZAhThIfzv3/AFTPALqHzbmV8uNvgRELULWNbsZATgVeqEL4zHOzCyblLfX6tMXVO2BVaPcXboIxGjiw==", + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz", + "integrity": "sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@foliojs-fork/fontkit": "^1.9.2", - "@foliojs-fork/linebreak": "^1.1.1", - "crypto-js": "^4.2.0", - "jpeg-exif": "^1.1.4", - "png-js": "^1.0.0" - } - }, - "node_modules/@foliojs-fork/restructure": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz", - "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==", - "license": "MIT" + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz", + "integrity": "sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz", + "integrity": "sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz", + "integrity": "sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz", + "integrity": "sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz", + "integrity": "sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz", + "integrity": "sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.0.tgz", - "integrity": "sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz", + "integrity": "sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==", "cpu": [ "x64" ], @@ -389,13 +789,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { "version": "22.10.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", @@ -407,9 +800,9 @@ } }, "node_modules/@types/pdfkit": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.13.6.tgz", - "integrity": "sha512-nfyKCvZ+eDsgSNkt6MwTWia1GZ+MWfnrtZoZ3HSP5aIaD7zxDIRFDafwEWbksi0NO8X+4Psqao00EDjHkfIXNg==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.13.7.tgz", + "integrity": "sha512-qIV2V2cnunHEVa51ISkoXlTsAnuQpTXhE7is3CWvV5lKSItRDLL7VLg/j0AkvAr3lG5ZBK2IWIl5iTfqf+obuA==", "dev": true, "license": "MIT", "dependencies": { @@ -417,9 +810,9 @@ } }, "node_modules/@types/pdfmake": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@types/pdfmake/-/pdfmake-0.2.9.tgz", - "integrity": "sha512-uLDKEH3A1fnCd/qXYJB2OnKkkjfdC1oc6HYVYBKxsyN1UsJL/8Lt67T6WFo3umkL+5Zd74M2IYcOf5kwwd9x9w==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@types/pdfmake/-/pdfmake-0.2.10.tgz", + "integrity": "sha512-6EV2+hiYqXO4/INnGObeXgTvzh2DuwiPkfjqYppHmKSgyVcXFvraLLNKFdvJEbrCoe0HqsKFDHc0I7M50hn4/g==", "dev": true, "license": "MIT", "dependencies": { @@ -442,67 +835,67 @@ "optional": true }, "node_modules/@vitejs/plugin-vue": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", - "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz", + "integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==", "dev": true, "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0", + "vite": "^5.0.0", "vue": "^3.2.25" } }, "node_modules/@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz", + "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", + "@vue/shared": "3.5.12", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", + "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", + "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.13", - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13", + "@vue/compiler-core": "3.5.12", + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12", "estree-walker": "^2.0.2", "magic-string": "^0.30.11", - "postcss": "^8.4.48", + "postcss": "^8.4.47", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", + "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/devtools-api": { @@ -511,69 +904,54 @@ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", "license": "MIT" }, - "node_modules/@vue/eslint-config-prettier": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-10.1.0.tgz", - "integrity": "sha512-J6wV91y2pXc0Phha01k0WOHBTPsoSTf4xlmMjoKaeSxBpAdsgTppGF5RZRdOHM7OA74zAXD+VLANrtYXpiPKkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.2.1" - }, - "peerDependencies": { - "eslint": ">= 8.21.0", - "prettier": ">= 3.0.0" - } - }, "node_modules/@vue/reactivity": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz", + "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.13" + "@vue/shared": "3.5.12" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz", + "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/reactivity": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz", + "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", + "@vue/reactivity": "3.5.12", + "@vue/runtime-core": "3.5.12", + "@vue/shared": "3.5.12", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz", + "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12" }, "peerDependencies": { - "vue": "3.5.13" + "vue": "3.5.12" } }, "node_modules/@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz", + "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==", "license": "MIT" }, "node_modules/accepts": { @@ -589,69 +967,6 @@ "node": ">= 0.6" } }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -677,9 +992,9 @@ } }, "node_modules/axios": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", - "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -687,13 +1002,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, "node_modules/base64-arraybuffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", @@ -757,51 +1065,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/brotli": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", @@ -833,16 +1096,15 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -851,14 +1113,17 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, "node_modules/canvg": { @@ -888,52 +1153,15 @@ "license": "MIT", "optional": true }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/clone": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=0.8" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -952,13 +1180,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1007,21 +1228,6 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/crypto-js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", @@ -1037,19 +1243,6 @@ "utrie": "^1.0.2" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -1057,21 +1250,12 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "ms": "2.0.0" } }, "node_modules/deep-equal": { @@ -1094,13 +1278,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -1176,6 +1353,20 @@ "license": "(MPL-2.0 OR Apache-2.0)", "optional": true }, + "node_modules/dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -1204,13 +1395,10 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -1275,262 +1463,12 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", - "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.16.0", - "@eslint/plugin-kit": "^0.2.3", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-vue": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz", - "integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "globals": "^13.24.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.3", - "vue-eslint-parser": "^9.4.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-vue/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "license": "MIT" }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1586,49 +1524,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, "node_modules/fastapi": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/fastapi/-/fastapi-0.0.8.tgz", @@ -1647,95 +1542,29 @@ } }, "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", - "license": "MIT" - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=16" + "node": ">= 0.8" } }, - "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true, - "license": "ISC" - }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -1788,6 +1617,21 @@ "node": ">= 0.6" } }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -1807,16 +1651,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", + "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==", "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -1825,40 +1672,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.1.0.tgz", - "integrity": "sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" }, @@ -1866,16 +1684,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -1888,25 +1696,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz", - "integrity": "sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -1983,54 +1776,17 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -2077,29 +1833,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-regex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz", @@ -2118,53 +1851,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, "node_modules/jpeg-exif": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/jpeg-exif/-/jpeg-exif-1.1.4.tgz", "integrity": "sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ==", "license": "MIT" }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, "node_modules/jspdf": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.2.tgz", @@ -2183,63 +1875,16 @@ "html2canvas": "^1.0.0-rc.5" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, "node_modules/magic-string": { - "version": "0.30.14", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", - "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -2317,19 +1962,6 @@ "node": ">= 0.6" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/morgan": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", @@ -2346,21 +1978,6 @@ "node": ">= 0.8.0" } }, - "node_modules/morgan/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/morgan/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/morgan/node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -2374,15 +1991,15 @@ } }, "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -2397,13 +2014,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -2413,19 +2023,6 @@ "node": ">= 0.6" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, "node_modules/object-inspect": { "version": "1.13.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", @@ -2484,75 +2081,12 @@ "node": ">= 0.8" } }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", "license": "MIT" }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2562,26 +2096,6 @@ "node": ">= 0.8" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", @@ -2594,13 +2108,25 @@ "integrity": "sha512-Ryef9mjxo6q8dthhbssAK0zwCsPZ6Pl7kCHnIEXOvQdd79LUGZD6SHGi21YryFXczPjvw6V009uxQwp5iritcA==", "license": "MIT", "dependencies": { - "@foliojs-fork/linebreak": "^1.1.2", - "@foliojs-fork/pdfkit": "^0.15.1", - "iconv-lite": "^0.6.3", - "xmldoc": "^1.3.0" + "@foliojs-fork/linebreak": "^1.1.2", + "@foliojs-fork/pdfkit": "^0.15.1", + "iconv-lite": "^0.6.3", + "xmldoc": "^1.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/pdfmake/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, "node_modules/performance-now": { @@ -2617,9 +2143,9 @@ "license": "ISC" }, "node_modules/pinia": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.8.tgz", - "integrity": "sha512-NRTYy2g+kju5tBRe0oNlriZIbMNvma8ZJrpHsp3qudyiMEA8jMmPPKQ2QMHg0Oc4BkUyQYWagACabrwriCK9HQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.0.tgz", + "integrity": "sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==", "license": "MIT", "dependencies": { "@vue/devtools-api": "^6.6.3", @@ -2629,54 +2155,24 @@ "url": "https://github.com/sponsors/posva" }, "peerDependencies": { - "@vue/composition-api": "^1.4.0", "typescript": ">=4.4.4", - "vue": "^2.6.14 || ^3.5.11" + "vue": "^2.7.0 || ^3.5.11" }, "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - }, "typescript": { "optional": true } } }, - "node_modules/pinia/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, "node_modules/png-js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -2694,66 +2190,13 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.1", + "picocolors": "^1.1.0", "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", @@ -2782,16 +2225,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/qs": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", @@ -2841,18 +2274,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", @@ -2877,16 +2298,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/rgbcolor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", @@ -2898,9 +2309,9 @@ } }, "node_modules/rollup": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.0.tgz", - "integrity": "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz", + "integrity": "sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==", "dev": true, "license": "MIT", "dependencies": { @@ -2914,24 +2325,24 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.28.0", - "@rollup/rollup-android-arm64": "4.28.0", - "@rollup/rollup-darwin-arm64": "4.28.0", - "@rollup/rollup-darwin-x64": "4.28.0", - "@rollup/rollup-freebsd-arm64": "4.28.0", - "@rollup/rollup-freebsd-x64": "4.28.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.28.0", - "@rollup/rollup-linux-arm-musleabihf": "4.28.0", - "@rollup/rollup-linux-arm64-gnu": "4.28.0", - "@rollup/rollup-linux-arm64-musl": "4.28.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0", - "@rollup/rollup-linux-riscv64-gnu": "4.28.0", - "@rollup/rollup-linux-s390x-gnu": "4.28.0", - "@rollup/rollup-linux-x64-gnu": "4.28.0", - "@rollup/rollup-linux-x64-musl": "4.28.0", - "@rollup/rollup-win32-arm64-msvc": "4.28.0", - "@rollup/rollup-win32-ia32-msvc": "4.28.0", - "@rollup/rollup-win32-x64-msvc": "4.28.0", + "@rollup/rollup-android-arm-eabi": "4.24.4", + "@rollup/rollup-android-arm64": "4.24.4", + "@rollup/rollup-darwin-arm64": "4.24.4", + "@rollup/rollup-darwin-x64": "4.24.4", + "@rollup/rollup-freebsd-arm64": "4.24.4", + "@rollup/rollup-freebsd-x64": "4.24.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.4", + "@rollup/rollup-linux-arm-musleabihf": "4.24.4", + "@rollup/rollup-linux-arm64-gnu": "4.24.4", + "@rollup/rollup-linux-arm64-musl": "4.24.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.4", + "@rollup/rollup-linux-riscv64-gnu": "4.24.4", + "@rollup/rollup-linux-s390x-gnu": "4.24.4", + "@rollup/rollup-linux-x64-gnu": "4.24.4", + "@rollup/rollup-linux-x64-musl": "4.24.4", + "@rollup/rollup-win32-arm64-msvc": "4.24.4", + "@rollup/rollup-win32-ia32-msvc": "4.24.4", + "@rollup/rollup-win32-x64-msvc": "4.24.4", "fsevents": "~2.3.2" } }, @@ -2967,19 +2378,6 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "license": "ISC" }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -3004,21 +2402,6 @@ "node": ">= 0.8.0" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/send/node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -3028,6 +2411,12 @@ "node": ">= 0.8" } }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/serve-static": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", @@ -3081,29 +2470,6 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", @@ -3150,32 +2516,6 @@ "node": ">= 0.8" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/svg-pathdata": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", @@ -3186,23 +2526,6 @@ "node": ">=12.0.0" } }, - "node_modules/synckit": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", - "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, "node_modules/text-segmentation": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", @@ -3227,39 +2550,6 @@ "node": ">=0.6" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -3309,23 +2599,6 @@ "node": ">= 0.8" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -3354,9 +2627,9 @@ } }, "node_modules/vite": { - "version": "5.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", - "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3414,16 +2687,16 @@ } }, "node_modules/vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", + "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-sfc": "3.5.13", - "@vue/runtime-dom": "3.5.13", - "@vue/server-renderer": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-sfc": "3.5.12", + "@vue/runtime-dom": "3.5.12", + "@vue/server-renderer": "3.5.12", + "@vue/shared": "3.5.12" }, "peerDependencies": { "typescript": "*" @@ -3434,77 +2707,30 @@ } } }, - "node_modules/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", - "dev": true, + "node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" }, "engines": { - "node": "^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, "node_modules/vue-password-toggle": { @@ -3531,32 +2757,6 @@ "vue": "^3.2.0" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/xlsx": { "version": "0.20.3", "resolved": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz", @@ -3569,16 +2769,6 @@ "node": ">=0.8" } }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, "node_modules/xmldoc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.3.0.tgz", @@ -3587,19 +2777,6 @@ "dependencies": { "sax": "^1.2.4" } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/package.json b/package.json index e2561c3..799e1d6 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "start": "node server.js", "preview": "vite preview", "lint": "eslint . --fix", - "format": "prettier --write src/" + "format": "prettier --write src/" }, "dependencies": { "axios": "^1.7.7", @@ -28,15 +28,9 @@ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz" }, "devDependencies": { - "@eslint/js": "^9.14.0", "@types/pdfmake": "^0.2.9", "@types/prismjs": "^1.26.5", "@vitejs/plugin-vue": "^5.1.4", - "@vue/eslint-config-prettier": "^10.1.0", - "eslint": "^9.14.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-vue": "^9.30.0", - "prettier": "^3.3.3", "vite": "^5.4.10" } }